From c5aca289a5dc480a32af93fef6fb0ff8c8759b89 Mon Sep 17 00:00:00 2001 From: edmand46 Date: Thu, 19 Mar 2026 14:52:12 +0300 Subject: [PATCH] initial --- .gitignore | 15 ++ .golangci.yml | 23 ++ README.md | 146 ++++++++++ cmd/arpack/main.go | 81 ++++++ e2e/e2e_test.go | 521 ++++++++++++++++++++++++++++++++++++ generator/csharp.go | 478 +++++++++++++++++++++++++++++++++ generator/generator_test.go | 382 ++++++++++++++++++++++++++ generator/go.go | 398 +++++++++++++++++++++++++++ generator/segment.go | 58 ++++ go.mod | 1 + images/logo.png | Bin 0 -> 349148 bytes parser/parser.go | 414 ++++++++++++++++++++++++++++ parser/parser_test.go | 268 +++++++++++++++++++ parser/types.go | 288 ++++++++++++++++++++ testdata/sample.go | 43 +++ 15 files changed, 3116 insertions(+) create mode 100644 .gitignore create mode 100644 .golangci.yml create mode 100644 README.md create mode 100644 cmd/arpack/main.go create mode 100644 e2e/e2e_test.go create mode 100644 generator/csharp.go create mode 100644 generator/generator_test.go create mode 100644 generator/go.go create mode 100644 generator/segment.go create mode 100644 go.mod create mode 100644 images/logo.png create mode 100644 parser/parser.go create mode 100644 parser/parser_test.go create mode 100644 parser/types.go create mode 100644 testdata/sample.go diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..ced27ed --- /dev/null +++ b/.gitignore @@ -0,0 +1,15 @@ +.cache +.claude +.codex +.DS_Store + +.idea +bin +obj + +Library +Logs +Temp +UserSettings + +ragon diff --git a/.golangci.yml b/.golangci.yml new file mode 100644 index 0000000..f7394a1 --- /dev/null +++ b/.golangci.yml @@ -0,0 +1,23 @@ +version: "2" + +linters: + default: none + enable: + - errcheck + - govet + - staticcheck + - unused + - gocritic + - misspell + - prealloc + - unconvert + - unparam + +formatters: + enable: + - goimports + +linters-settings: + goimports: + local-prefixes: + - gorena/server \ No newline at end of file diff --git a/README.md b/README.md new file mode 100644 index 0000000..6bc8a06 --- /dev/null +++ b/README.md @@ -0,0 +1,146 @@ +

+ arpack logo +

+ +# ArPack + +Binary serialization code generator for Go and C#. Define messages once as Go structs — get zero-allocation `Marshal`/`Unmarshal` for Go and `unsafe` pointer-based `Serialize`/`Deserialize` for C#. + +Built for game networking where every byte and allocation matters. + +## Features + +- **Single source of truth** — define messages in Go, generate both Go and C# code +- **Float quantization** — compress `float32`/`float64` to 8 or 16 bits with a `pack` struct tag +- **Boolean packing** — consecutive `bool` fields are packed into single bytes (up to 8 per byte) +- **Enums** — `type Opcode uint16` + `const` block becomes a C# `enum` +- **Nested types, fixed arrays, slices** — full support for complex message structures +- **Cross-language binary compatibility** — Go and C# produce identical wire formats + +## Installation + +```bash +go install edmand46/apack@latest +``` + +## Usage + +```bash +arpack -in messages.go -out-go ./gen -out-cs ../Unity/Assets/Scripts +``` + +| Flag | Description | +|---|---| +| `-in` | Input Go file with struct definitions (required) | +| `-out-go` | Output directory for generated Go code | +| `-out-cs` | Output directory for generated C# code | +| `-cs-namespace` | C# namespace (default: `Arpack.Messages`) | + +At least one of `-out-go` or `-out-cs` is required. + +**Output files:** +- Go: `{name}_gen.go` +- C#: `{Name}.gen.cs` + +## Schema Definition + +Messages are defined as Go structs in a single `.go` file: + +```go +package messages + +// Quantized 3D vector — 6 bytes instead of 12 +type Vector3 struct { + X float32 `pack:"min=-500,max=500,bits=16"` + Y float32 `pack:"min=-500,max=500,bits=16"` + Z float32 `pack:"min=-500,max=500,bits=16"` +} + +// Enum +type Opcode uint16 + +const ( + OpcodeUnknown Opcode = iota + OpcodeAuthorize + OpcodeJoinRoom +) + +type MoveMessage struct { + Position Vector3 // nested type + Velocity [3]float32 // fixed-length array + Waypoints []Vector3 // variable-length slice + PlayerID uint32 + Active bool // 3 consecutive bools → + Visible bool // packed into 1 byte + Ghost bool + Name string +} +``` + +### Supported Types + +| Type | Wire Size | +|---|---| +| `bool` (packed) | 1 bit (up to 8 per byte) | +| `int8`, `uint8` | 1 byte | +| `int16`, `uint16` | 2 bytes | +| `int32`, `uint32`, `float32` | 4 bytes | +| `int64`, `uint64`, `float64` | 8 bytes | +| `string` | 2-byte length prefix + UTF-8 | +| `[N]T` | N × sizeof(T) | +| `[]T` | 2-byte length prefix + N × sizeof(T) | + +### Float Quantization + +Use the `pack` struct tag to compress floats: + +```go +X float32 `pack:"min=-500,max=500,bits=16"` // 2 bytes instead of 4 +Y float32 `pack:"min=0,max=1,bits=8"` // 1 byte instead of 4 +``` + +| Parameter | Description | +|---|---| +| `min` | Minimum expected value | +| `max` | Maximum expected value | +| `bits` | Target size: `8` (uint8) or `16` (uint16) | + +Values are linearly mapped: `encoded = (value - min) / (max - min) * maxUint`. + +## Generated Code + +### Go + +```go +func (m *MoveMessage) Marshal(buf []byte) []byte +func (m *MoveMessage) Unmarshal(data []byte) (int, error) +``` + +`Marshal` appends to the buffer and returns it. `Unmarshal` reads from the buffer and returns bytes consumed. + +### C# + +```csharp +public unsafe int Serialize(byte* buffer) +public static unsafe int Deserialize(byte* buffer, out MoveMessage msg) +``` + +Uses unsafe pointers for zero-copy serialization. Returns bytes written/consumed. + +## Wire Format + +- Little-endian byte order +- No message framing — fields are written in declaration order +- Variable-length fields (`string`, `[]T`) prefixed with `uint16` length +- Booleans packed as bitfields (LSB first, up to 8 per byte) +- Quantized floats stored as `uint8` or `uint16` + +## Running Tests + +```bash +# Unit tests (parser + generator) +go test ./tools/arpack/... + +# End-to-end cross-language tests (requires dotnet SDK) +go test ./tools/arpack/e2e/... +``` diff --git a/cmd/arpack/main.go b/cmd/arpack/main.go new file mode 100644 index 0000000..1ddf833 --- /dev/null +++ b/cmd/arpack/main.go @@ -0,0 +1,81 @@ +package main + +import ( + "edmand46/arpack/generator" + "edmand46/arpack/parser" + "flag" + "fmt" + "log" + "os" + "path/filepath" + "strings" +) + +func main() { + in := flag.String("in", "", "input Go file with struct definitions") + outGo := flag.String("out-go", "", "output directory for generated Go code") + outCS := flag.String("out-cs", "", "output directory for generated C# code") + namespace := flag.String("cs-namespace", "Arpack.Messages", "C# namespace") + flag.Parse() + + if *in == "" { + log.Fatal("arpack: -in is required") + } + if *outGo == "" && *outCS == "" { + log.Fatal("arpack: at least one of -out-go or -out-cs is required") + } + + schema, err := parser.ParseSchemaFile(*in) + if err != nil { + log.Fatalf("arpack: parse error: %v", err) + } + msgs := schema.Messages + if len(msgs) == 0 { + log.Fatalf("arpack: no structs found in %s", *in) + } + + baseName := strings.TrimSuffix(filepath.Base(*in), ".go") + + if *outGo != "" { + pkgName := filepath.Base(*outGo) + if pkgName == "." || pkgName == "" { + pkgName = msgs[0].PackageName + } + + src, err := generator.GenerateGoSchema(schema, pkgName) + if err != nil { + log.Fatalf("arpack: Go generation error: %v", err) + } + + outPath := filepath.Join(*outGo, baseName+"_gen.go") + if err := os.MkdirAll(*outGo, 0755); err != nil { + log.Fatalf("arpack: mkdir %s: %v", *outGo, err) + } + if err := os.WriteFile(outPath, src, 0644); err != nil { + log.Fatalf("arpack: write %s: %v", outPath, err) + } + + fmt.Printf("arpack: wrote %s\n", outPath) + } + + if *outCS != "" { + src, err := generator.GenerateCSharpSchema(schema, *namespace) + if err != nil { + log.Fatalf("arpack: C# generation error: %v", err) + } + + outPath := filepath.Join(*outCS, toTitle(baseName)+".gen.cs") + if err := os.MkdirAll(*outCS, 0755); err != nil { + log.Fatalf("arpack: mkdir %s: %v", *outCS, err) + } + if err := os.WriteFile(outPath, src, 0644); err != nil { + log.Fatalf("arpack: write %s: %v", outPath, err) + } + + fmt.Printf("arpack: wrote %s\n", outPath) + } +} + +func toTitle(s string) string { + return strings.ToUpper(s[:1]) + strings.ToLower(s[1:]) +} diff --git a/e2e/e2e_test.go b/e2e/e2e_test.go new file mode 100644 index 0000000..f1e7187 --- /dev/null +++ b/e2e/e2e_test.go @@ -0,0 +1,521 @@ +package e2e + +import ( + "bytes" + "edmand46/arpack/generator" + "edmand46/arpack/parser" + "fmt" + "math" + "os" + "os/exec" + "path/filepath" + "strconv" + "strings" + "testing" +) + +const samplePath = "../testdata/sample.go" + +// TestE2E_CrossLanguage гоняет сериализацию в обе стороны: Go → C# и C# → Go. +func TestE2E_CrossLanguage(t *testing.T) { + if _, err := exec.LookPath("dotnet"); err != nil { + t.Skip("dotnet not found, skipping cross-language e2e test") + } + + schema, err := parser.ParseSchemaFile(samplePath) + if err != nil { + t.Fatalf("parse: %v", err) + } + + goSrc, err := generator.GenerateGoSchema(schema, "main") + if err != nil { + t.Fatalf("GenerateGoSchema: %v", err) + } + + csSrc, err := generator.GenerateCSharpSchema(schema, "Ragono.Messages") + if err != nil { + t.Fatalf("GenerateCSharpSchema: %v", err) + } + + goDir := buildGoHarness(t, goSrc) + csDir := buildCSHarness(t, csSrc) + + cases := []struct { + name string + typ string + epsilon float64 + }{ + {"Vector3", "Vector3", 0.02}, // quantized float32 → допустимая погрешность + {"SpawnMessage", "SpawnMessage", 0.02}, // mix: int, nested, []string, []byte + {"MoveMessage", "MoveMessage", 0.02}, // bool bit packing: Active, Visible, Ghost + {"EnvelopeMessage", "EnvelopeMessage", 0}, + } + + for _, tc := range cases { + t.Run("Go_to_CS/"+tc.name, func(t *testing.T) { + hex := runHarness(t, goDir, "go", "ser", tc.typ, "") + out := runHarness(t, csDir, "cs", "deser", tc.typ, hex) + checkOutput(t, tc.typ, out, tc.epsilon) + }) + t.Run("CS_to_Go/"+tc.name, func(t *testing.T) { + hex := runHarness(t, csDir, "cs", "ser", tc.typ, "") + out := runHarness(t, goDir, "go", "deser", tc.typ, hex) + checkOutput(t, tc.typ, out, tc.epsilon) + }) + } +} + +// --- Build helpers --- + +func buildGoHarness(t *testing.T, generatedSrc []byte) string { + t.Helper() + dir := t.TempDir() + + // Читаем sample.go и меняем package на main + sampleSrc, err := os.ReadFile(samplePath) + if err != nil { + t.Fatalf("read sample: %v", err) + } + sampleSrc = bytes.Replace(sampleSrc, []byte("package messages"), []byte("package main"), 1) + + // Generated код уже имеет package main (мы передали "main" в GenerateGo) + write(t, filepath.Join(dir, "messages.go"), sampleSrc) + write(t, filepath.Join(dir, "messages_arpack.go"), generatedSrc) + write(t, filepath.Join(dir, "main.go"), []byte(goHarnessSource)) + write(t, filepath.Join(dir, "go.mod"), []byte("module arpack_e2e\n\ngo 1.21\n")) + + mustRun(t, dir, "go", "build", "-o", "harness", ".") + return dir +} + +func buildCSHarness(t *testing.T, generatedSrc []byte) string { + t.Helper() + dir := t.TempDir() + + write(t, filepath.Join(dir, "Messages.cs"), generatedSrc) + write(t, filepath.Join(dir, "Program.cs"), []byte(csHarnessSource)) + write(t, filepath.Join(dir, "E2EHarness.csproj"), []byte(csProjSource)) + + mustRun(t, dir, "dotnet", "build", "-c", "Release", "-o", "out") + return dir +} + +// --- Harness runners --- + +func runHarness(t *testing.T, dir, lang, op, typ, hexInput string) string { + t.Helper() + var cmd *exec.Cmd + if lang == "go" { + args := []string{op, typ} + if hexInput != "" { + args = append(args, hexInput) + } + cmd = exec.Command(filepath.Join(dir, "harness"), args...) + } else { + args := []string{op, typ} + if hexInput != "" { + args = append(args, hexInput) + } + cmd = exec.Command("dotnet", append([]string{filepath.Join(dir, "out", "E2EHarness.dll")}, args...)...) + } + cmd.Dir = dir + out, err := cmd.CombinedOutput() + if err != nil { + t.Fatalf("%s harness %s %s failed: %v\n%s", lang, op, typ, err, out) + } + return strings.TrimSpace(string(out)) +} + +// --- Output verification --- + +// checkOutput парсит key=value вывод и сравнивает с ожидаемыми значениями. +func checkOutput(t *testing.T, typ, output string, epsilon float64) { + t.Helper() + t.Logf("output for %s:\n%s", typ, output) + + kv := parseKV(output) + + switch typ { + case "Vector3": + assertFloat(t, kv, "X", 123.45, epsilon) + assertFloat(t, kv, "Y", -200.0, epsilon) + assertFloat(t, kv, "Z", 0.0, epsilon) + + case "SpawnMessage": + assertInt(t, kv, "EntityID", 42) + assertFloat(t, kv, "Position.X", 10.0, epsilon) + assertFloat(t, kv, "Position.Y", 20.0, epsilon) + assertFloat(t, kv, "Position.Z", 30.0, epsilon) + assertInt(t, kv, "Health", -100) + assertStr(t, kv, "Tags[0]", "hero") + assertStr(t, kv, "Tags[1]", "player") + assertInt(t, kv, "Data[0]", 1) + assertInt(t, kv, "Data[1]", 2) + assertInt(t, kv, "Data[2]", 3) + + case "MoveMessage": + assertInt(t, kv, "PlayerID", 777) + assertStr(t, kv, "Active", "true") + assertStr(t, kv, "Visible", "false") + assertStr(t, kv, "Ghost", "true") + assertStr(t, kv, "Name", "TestPlayer") + case "EnvelopeMessage": + assertInt(t, kv, "Code", 2) + assertInt(t, kv, "Counter", 7) + } +} + +func parseKV(s string) map[string]string { + m := map[string]string{} + for _, line := range strings.Split(s, "\n") { + line = strings.TrimSpace(line) + if idx := strings.IndexByte(line, '='); idx >= 0 { + m[line[:idx]] = line[idx+1:] + } + } + return m +} + +func assertFloat(t *testing.T, kv map[string]string, key string, want, eps float64) { + t.Helper() + s, ok := kv[key] + if !ok { + t.Errorf("missing key %q in output", key) + return + } + got, err := strconv.ParseFloat(s, 64) + if err != nil { + t.Errorf("%s: cannot parse %q as float: %v", key, s, err) + return + } + if math.Abs(got-want) > eps { + t.Errorf("%s: got %v, want %v (±%v)", key, got, want, eps) + } +} + +func assertInt(t *testing.T, kv map[string]string, key string, want int64) { + t.Helper() + s, ok := kv[key] + if !ok { + t.Errorf("missing key %q in output", key) + return + } + got, err := strconv.ParseInt(s, 10, 64) + if err != nil { + t.Errorf("%s: cannot parse %q as int: %v", key, s, err) + return + } + if got != want { + t.Errorf("%s: got %d, want %d", key, got, want) + } +} + +func assertStr(t *testing.T, kv map[string]string, key, want string) { + t.Helper() + got, ok := kv[key] + if !ok { + t.Errorf("missing key %q in output", key) + return + } + if got != want { + t.Errorf("%s: got %q, want %q", key, got, want) + } +} + +// --- Utilities --- + +func write(t *testing.T, path string, data []byte) { + t.Helper() + if err := os.WriteFile(path, data, 0644); err != nil { + t.Fatalf("write %s: %v", path, err) + } +} + +func mustRun(t *testing.T, dir string, name string, args ...string) { + t.Helper() + cmd := exec.Command(name, args...) + cmd.Dir = dir + if out, err := cmd.CombinedOutput(); err != nil { + t.Fatalf("%s %v failed: %v\n%s", name, args, err, out) + } +} + +// --- Go harness source --- + +const goHarnessSource = `package main + +import ( + "encoding/hex" + "fmt" + "os" + "strings" +) + +func main() { + op := os.Args[1] // ser | deser + typ := os.Args[2] // Vector3 | SpawnMessage | ... + + switch op + ":" + typ { + + case "ser:Vector3": + v := Vector3{X: 123.45, Y: -200, Z: 0} + fmt.Println(hex.EncodeToString(v.Marshal(nil))) + + case "deser:Vector3": + data, _ := hex.DecodeString(strings.TrimSpace(os.Args[3])) + var v Vector3 + v.Unmarshal(data) + fmt.Printf("X=%v\nY=%v\nZ=%v\n", v.X, v.Y, v.Z) + + case "ser:SpawnMessage": + msg := SpawnMessage{ + EntityID: 42, + Position: Vector3{X: 10, Y: 20, Z: 30}, + Health: -100, + Tags: []string{"hero", "player"}, + Data: []uint8{1, 2, 3}, + } + fmt.Println(hex.EncodeToString(msg.Marshal(nil))) + + case "deser:SpawnMessage": + data, _ := hex.DecodeString(strings.TrimSpace(os.Args[3])) + var msg SpawnMessage + msg.Unmarshal(data) + fmt.Printf("EntityID=%d\n", msg.EntityID) + fmt.Printf("Position.X=%v\n", msg.Position.X) + fmt.Printf("Position.Y=%v\n", msg.Position.Y) + fmt.Printf("Position.Z=%v\n", msg.Position.Z) + fmt.Printf("Health=%d\n", msg.Health) + for i, tag := range msg.Tags { + fmt.Printf("Tags[%d]=%s\n", i, tag) + } + for i, b := range msg.Data { + fmt.Printf("Data[%d]=%d\n", i, b) + } + + case "ser:MoveMessage": + msg := MoveMessage{ + Position: Vector3{X: 50, Y: -100, Z: 0}, + Velocity: [3]float32{1.5, -2.5, 0}, + Waypoints: []Vector3{{X: 10, Y: 20, Z: 0}}, + PlayerID: 777, + Active: true, + Visible: false, + Ghost: true, + Name: "TestPlayer", + } + fmt.Println(hex.EncodeToString(msg.Marshal(nil))) + + case "deser:MoveMessage": + data, _ := hex.DecodeString(strings.TrimSpace(os.Args[3])) + var msg MoveMessage + msg.Unmarshal(data) + fmt.Printf("PlayerID=%d\n", msg.PlayerID) + fmt.Printf("Active=%v\n", msg.Active) + fmt.Printf("Visible=%v\n", msg.Visible) + fmt.Printf("Ghost=%v\n", msg.Ghost) + fmt.Printf("Name=%s\n", msg.Name) + + case "ser:EnvelopeMessage": + msg := EnvelopeMessage{ + Code: OpcodeJoinRoom, + Counter: 7, + } + fmt.Println(hex.EncodeToString(msg.Marshal(nil))) + + case "deser:EnvelopeMessage": + data, _ := hex.DecodeString(strings.TrimSpace(os.Args[3])) + var msg EnvelopeMessage + msg.Unmarshal(data) + fmt.Printf("Code=%d\n", msg.Code) + fmt.Printf("Counter=%d\n", msg.Counter) + + default: + fmt.Fprintf(os.Stderr, "unknown op:type %s:%s\n", op, typ) + os.Exit(1) + } +} +` + +// --- C# harness source --- + +const csHarnessSource = `using System; +using System.Globalization; +using System.Text; +using Ragono.Messages; + +unsafe class Program +{ + static void Main(string[] args) + { + CultureInfo.DefaultThreadCurrentCulture = CultureInfo.InvariantCulture; + string op = args[0]; // ser | deser + string typ = args[1]; // Vector3 | SpawnMessage | ... + + switch (op + ":" + typ) + { + case "ser:Vector3": + SerVector3(); + break; + case "deser:Vector3": + DeserVector3(args[2]); + break; + case "ser:SpawnMessage": + SerSpawnMessage(); + break; + case "deser:SpawnMessage": + DeserSpawnMessage(args[2]); + break; + case "ser:MoveMessage": + SerMoveMessage(); + break; + case "deser:MoveMessage": + DeserMoveMessage(args[2]); + break; + case "ser:EnvelopeMessage": + SerEnvelopeMessage(); + break; + case "deser:EnvelopeMessage": + DeserEnvelopeMessage(args[2]); + break; + default: + Console.Error.WriteLine($"unknown op:type {op}:{typ}"); + Environment.Exit(1); + break; + } + } + + static unsafe void SerVector3() + { + var msg = new Vector3 { X = 123.45f, Y = -200.0f, Z = 0.0f }; + byte[] buf = new byte[64]; + fixed (byte* ptr = buf) + { + int n = msg.Serialize(ptr); + Console.WriteLine(Convert.ToHexString(buf, 0, n).ToLower()); + } + } + + static unsafe void DeserVector3(string hexStr) + { + byte[] data = Convert.FromHexString(hexStr); + fixed (byte* ptr = data) + { + Vector3.Deserialize(ptr, out Vector3 msg); + Console.WriteLine($"X={msg.X:G9}"); + Console.WriteLine($"Y={msg.Y:G9}"); + Console.WriteLine($"Z={msg.Z:G9}"); + } + } + + static unsafe void SerSpawnMessage() + { + var msg = new SpawnMessage + { + EntityID = 42, + Position = new Vector3 { X = 10.0f, Y = 20.0f, Z = 30.0f }, + Health = -100, + Tags = new string[] { "hero", "player" }, + Data = new byte[] { 1, 2, 3 }, + }; + byte[] buf = new byte[512]; + fixed (byte* ptr = buf) + { + int n = msg.Serialize(ptr); + Console.WriteLine(Convert.ToHexString(buf, 0, n).ToLower()); + } + } + + static unsafe void DeserSpawnMessage(string hexStr) + { + byte[] data = Convert.FromHexString(hexStr); + fixed (byte* ptr = data) + { + SpawnMessage.Deserialize(ptr, out SpawnMessage msg); + Console.WriteLine($"EntityID={msg.EntityID}"); + Console.WriteLine($"Position.X={msg.Position.X:G9}"); + Console.WriteLine($"Position.Y={msg.Position.Y:G9}"); + Console.WriteLine($"Position.Z={msg.Position.Z:G9}"); + Console.WriteLine($"Health={msg.Health}"); + if (msg.Tags != null) + for (int i = 0; i < msg.Tags.Length; i++) + Console.WriteLine($"Tags[{i}]={msg.Tags[i]}"); + if (msg.Data != null) + for (int i = 0; i < msg.Data.Length; i++) + Console.WriteLine($"Data[{i}]={msg.Data[i]}"); + } + } + + static unsafe void SerMoveMessage() + { + var msg = new MoveMessage + { + Position = new Vector3 { X = 50.0f, Y = -100.0f, Z = 0.0f }, + Velocity = new float[] { 1.5f, -2.5f, 0.0f }, + Waypoints = new Vector3[] { new Vector3 { X = 10.0f, Y = 20.0f, Z = 0.0f } }, + PlayerID = 777, + Active = true, + Visible = false, + Ghost = true, + Name = "TestPlayer", + }; + byte[] buf = new byte[512]; + fixed (byte* ptr = buf) + { + int n = msg.Serialize(ptr); + Console.WriteLine(Convert.ToHexString(buf, 0, n).ToLower()); + } + } + + static unsafe void DeserMoveMessage(string hexStr) + { + byte[] data = Convert.FromHexString(hexStr); + fixed (byte* ptr = data) + { + MoveMessage.Deserialize(ptr, out MoveMessage msg); + Console.WriteLine($"PlayerID={msg.PlayerID}"); + Console.WriteLine($"Active={msg.Active.ToString().ToLower()}"); + Console.WriteLine($"Visible={msg.Visible.ToString().ToLower()}"); + Console.WriteLine($"Ghost={msg.Ghost.ToString().ToLower()}"); + Console.WriteLine($"Name={msg.Name}"); + } + } + + static unsafe void SerEnvelopeMessage() + { + var msg = new EnvelopeMessage + { + Code = Opcode.JoinRoom, + Counter = 7, + }; + byte[] buf = new byte[64]; + fixed (byte* ptr = buf) + { + int n = msg.Serialize(ptr); + Console.WriteLine(Convert.ToHexString(buf, 0, n).ToLower()); + } + } + + static unsafe void DeserEnvelopeMessage(string hexStr) + { + byte[] data = Convert.FromHexString(hexStr); + fixed (byte* ptr = data) + { + EnvelopeMessage.Deserialize(ptr, out EnvelopeMessage msg); + Console.WriteLine($"Code={(ushort)msg.Code}"); + Console.WriteLine($"Counter={msg.Counter}"); + } + } +} +` + +var csProjSource = fmt.Sprintf(` + + Exe + net9.0 + true + enable + disable + + +`) diff --git a/generator/csharp.go b/generator/csharp.go new file mode 100644 index 0000000..398e16d --- /dev/null +++ b/generator/csharp.go @@ -0,0 +1,478 @@ +package generator + +import ( + "edmand46/arpack/parser" + "fmt" + "strings" +) + +// GenerateCSharp генерирует C# unsafe код для списка сообщений. +// namespace — пространство имён (например, "Ragono.Messages"). +func GenerateCSharp(messages []parser.Message, namespace string) ([]byte, error) { + return GenerateCSharpSchema(parser.Schema{Messages: messages}, namespace) +} + +// GenerateCSharpSchema генерирует C# код для полной схемы, включая enum-ы. +func GenerateCSharpSchema(schema parser.Schema, namespace string) ([]byte, error) { + messages := schema.Messages + var b strings.Builder + + b.WriteString("// arpack \n") + b.WriteString("// Code generated by arpack. DO NOT EDIT.\n") + b.WriteString("#pragma warning disable CS8500\n\n") + + b.WriteString("using System;\n") + if needsTextEncoding(messages) { + b.WriteString("using System.Text;\n") + } + b.WriteString("\n") + + fmt.Fprintf(&b, "namespace %s\n{\n", namespace) + + enumNames := make(map[string]struct{}, len(schema.Enums)) + for _, enum := range schema.Enums { + enumNames[enum.Name] = struct{}{} + } + + wroteSection := false + for _, enum := range schema.Enums { + writeCSharpEnum(&b, enum) + b.WriteString("\n") + wroteSection = true + } + + for i, msg := range messages { + if err := writeCSharpMessage(&b, msg, enumNames); err != nil { + return nil, fmt.Errorf("message %s: %w", msg.Name, err) + } + if i < len(messages)-1 { + b.WriteString("\n") + } else if wroteSection { + // leave a single blank line between the last enum and the first struct only + } + } + + b.WriteString("}\n") + return []byte(b.String()), nil +} + +func writeCSharpEnum(b *strings.Builder, enum parser.Enum) { + fmt.Fprintf(b, " public enum %s : %s\n {\n", enum.Name, csharpEnumBaseType(enum)) + for i, value := range enum.Values { + fmt.Fprintf(b, " %s = %s", csharpEnumValueName(enum.Name, value.Name), value.Value) + if i < len(enum.Values)-1 { + b.WriteString(",") + } + b.WriteString("\n") + } + b.WriteString(" }\n") +} + +func writeCSharpMessage(b *strings.Builder, msg parser.Message, enumNames map[string]struct{}) error { + segs := segmentFields(msg.Fields) + + b.WriteString(" public unsafe struct ") + b.WriteString(msg.Name) + b.WriteString("\n {\n") + + // Поля + for _, f := range msg.Fields { + fmt.Fprintf(b, " public %s %s;\n", csharpTypeName(f, enumNames), f.Name) + } + b.WriteString("\n") + + // Serialize + b.WriteString(" public int Serialize(byte* buffer)\n") + b.WriteString(" {\n") + b.WriteString(" byte* ptr = buffer;\n") + for i, seg := range segs { + if seg.single != nil { + if err := writeCSharpSerializeField(b, *seg.single, " ", enumNames); err != nil { + return err + } + } else { + writeCSharpBoolGroupSerialize(b, seg.bools, i, " ") + } + } + b.WriteString(" return (int)(ptr - buffer);\n") + b.WriteString(" }\n\n") + + // Deserialize + fmt.Fprintf(b, " public static int Deserialize(byte* buffer, out %s msg)\n", msg.Name) + b.WriteString(" {\n") + b.WriteString(" byte* ptr = buffer;\n") + b.WriteString(" msg = default;\n") + for i, seg := range segs { + if seg.single != nil { + if err := writeCSharpDeserializeField(b, "msg", *seg.single, " ", enumNames); err != nil { + return err + } + } else { + writeCSharpBoolGroupDeserialize(b, "msg", seg.bools, i, " ") + } + } + b.WriteString(" return (int)(ptr - buffer);\n") + b.WriteString(" }\n") + + b.WriteString(" }\n") + return nil +} + +func writeCSharpBoolGroupSerialize(b *strings.Builder, bools []parser.Field, groupIdx int, indent string) { + varName := fmt.Sprintf("_boolByte%d", groupIdx) + fmt.Fprintf(b, "%sbyte %s = 0;\n", indent, varName) + for bit, f := range bools { + fmt.Fprintf(b, "%sif (%s) %s |= (byte)(1 << %d);\n", indent, f.Name, varName, bit) + } + fmt.Fprintf(b, "%s*ptr = %s; ptr++;\n", indent, varName) +} + +func writeCSharpBoolGroupDeserialize(b *strings.Builder, recv string, bools []parser.Field, groupIdx int, indent string) { + varName := fmt.Sprintf("_boolByte%d", groupIdx) + fmt.Fprintf(b, "%sbyte %s = *ptr; ptr++;\n", indent, varName) + for bit, f := range bools { + fmt.Fprintf(b, "%s%s.%s = (%s & (1 << %d)) != 0;\n", indent, recv, f.Name, varName, bit) + } +} + +// --- Serialize --- + +func writeCSharpSerializeField(b *strings.Builder, f parser.Field, indent string, enumNames map[string]struct{}) error { + switch f.Kind { + case parser.KindPrimitive: + return writeCSharpSerializePrimitive(b, f.Name, f, indent, enumNames) + case parser.KindNested: + fmt.Fprintf(b, "%sptr += %s.Serialize(ptr);\n", indent, f.Name) + case parser.KindFixedArray: + iVar := "_i" + f.Name + fmt.Fprintf(b, "%sfor (int %s = 0; %s < %d; %s++)\n%s{\n", + indent, iVar, iVar, f.FixedLen, iVar, indent) + elemField := parser.Field{ + Name: f.Name + "[" + iVar + "]", + Kind: f.Elem.Kind, + Primitive: f.Elem.Primitive, + NamedType: f.Elem.NamedType, + Quant: f.Elem.Quant, + TypeName: f.Elem.TypeName, + Elem: f.Elem.Elem, + FixedLen: f.Elem.FixedLen, + } + if err := writeCSharpSerializeField(b, elemField, indent+" ", enumNames); err != nil { + return err + } + fmt.Fprintf(b, "%s}\n", indent) + case parser.KindSlice: + fmt.Fprintf(b, "%s*(ushort*)ptr = (ushort)(%s?.Length ?? 0); ptr += 2;\n", indent, f.Name) + fmt.Fprintf(b, "%sif (%s != null)\n%s{\n", indent, f.Name, indent) + iVar := "_i" + f.Name + fmt.Fprintf(b, "%s for (int %s = 0; %s < %s.Length; %s++)\n%s {\n", + indent, iVar, iVar, f.Name, iVar, indent) + elemField := parser.Field{ + Name: f.Name + "[" + iVar + "]", + Kind: f.Elem.Kind, + Primitive: f.Elem.Primitive, + NamedType: f.Elem.NamedType, + Quant: f.Elem.Quant, + TypeName: f.Elem.TypeName, + Elem: f.Elem.Elem, + FixedLen: f.Elem.FixedLen, + } + if err := writeCSharpSerializeField(b, elemField, indent+" ", enumNames); err != nil { + return err + } + fmt.Fprintf(b, "%s }\n%s}\n", indent, indent) + } + return nil +} + +func writeCSharpSerializePrimitive( + b *strings.Builder, + access string, + f parser.Field, + indent string, + enumNames map[string]struct{}, +) error { + if f.Quant != nil { + return writeCSharpSerializeQuant(b, access, f, indent) + } + valueExpr := csharpSerializeValueExpr(access, f, enumNames) + switch f.Primitive { + case parser.KindFloat32: + fmt.Fprintf(b, "%s*(float*)ptr = %s; ptr += 4;\n", indent, valueExpr) + case parser.KindFloat64: + fmt.Fprintf(b, "%s*(double*)ptr = %s; ptr += 8;\n", indent, valueExpr) + case parser.KindInt8: + fmt.Fprintf(b, "%s*(sbyte*)ptr = %s; ptr += 1;\n", indent, valueExpr) + case parser.KindUint8: + fmt.Fprintf(b, "%s*ptr = %s; ptr += 1;\n", indent, valueExpr) + case parser.KindBool: + fmt.Fprintf(b, "%s*ptr = (byte)(%s ? 1 : 0); ptr += 1;\n", indent, valueExpr) + case parser.KindInt16: + fmt.Fprintf(b, "%s*(short*)ptr = %s; ptr += 2;\n", indent, valueExpr) + case parser.KindUint16: + fmt.Fprintf(b, "%s*(ushort*)ptr = %s; ptr += 2;\n", indent, valueExpr) + case parser.KindInt32: + fmt.Fprintf(b, "%s*(int*)ptr = %s; ptr += 4;\n", indent, valueExpr) + case parser.KindUint32: + fmt.Fprintf(b, "%s*(uint*)ptr = %s; ptr += 4;\n", indent, valueExpr) + case parser.KindInt64: + fmt.Fprintf(b, "%s*(long*)ptr = %s; ptr += 8;\n", indent, valueExpr) + case parser.KindUint64: + fmt.Fprintf(b, "%s*(ulong*)ptr = %s; ptr += 8;\n", indent, valueExpr) + case parser.KindString: + // UTF-8: uint16 byteCount + bytes + lenVar := "_slen" + sanitizeVarName(access) + fmt.Fprintf(b, "%sint %s = %s != null ? Encoding.UTF8.GetByteCount(%s) : 0;\n", + indent, lenVar, valueExpr, valueExpr) + fmt.Fprintf(b, "%s*(ushort*)ptr = (ushort)%s; ptr += 2;\n", indent, lenVar) + fmt.Fprintf(b, "%sif (%s != null && %s > 0)\n%s{\n", indent, valueExpr, lenVar, indent) + fmt.Fprintf(b, "%s fixed (char* _chars%s = %s)\n%s {\n", + indent, sanitizeVarName(access), valueExpr, indent) + fmt.Fprintf(b, "%s Encoding.UTF8.GetBytes(_chars%s, %s.Length, ptr, %s);\n", + indent, sanitizeVarName(access), valueExpr, lenVar) + fmt.Fprintf(b, "%s }\n", indent) + fmt.Fprintf(b, "%s}\n", indent) + fmt.Fprintf(b, "%sptr += %s;\n", indent, lenVar) + } + return nil +} + +func writeCSharpSerializeQuant(b *strings.Builder, access string, f parser.Field, indent string) error { + q := f.Quant + maxUint := q.MaxUint() + if q.Bits == 8 { + fmt.Fprintf(b, "%s*ptr = (byte)((%s - (%gf)) / (%gf - (%gf)) * %gf); ptr += 1;\n", + indent, access, q.Min, q.Max, q.Min, maxUint) + } else { + fmt.Fprintf(b, "%s*(ushort*)ptr = (ushort)((%s - (%gf)) / (%gf - (%gf)) * %gf); ptr += 2;\n", + indent, access, q.Min, q.Max, q.Min, maxUint) + } + return nil +} + +// --- Deserialize --- + +func writeCSharpDeserializeField( + b *strings.Builder, + recv string, + f parser.Field, + indent string, + enumNames map[string]struct{}, +) error { + access := recv + "." + f.Name + switch f.Kind { + case parser.KindPrimitive: + return writeCSharpDeserializePrimitive(b, access, f, indent, enumNames) + case parser.KindNested: + fmt.Fprintf(b, "%sptr += %s.Deserialize(ptr, out %s);\n", indent, f.TypeName, access) + case parser.KindFixedArray: + iVar := "_i" + f.Name + fmt.Fprintf(b, "%s%s = new %s[%d];\n", indent, access, csharpTypeName(*f.Elem, enumNames), f.FixedLen) + fmt.Fprintf(b, "%sfor (int %s = 0; %s < %d; %s++)\n%s{\n", + indent, iVar, iVar, f.FixedLen, iVar, indent) + elemField := parser.Field{ + Name: f.Name + "[" + iVar + "]", + Kind: f.Elem.Kind, + Primitive: f.Elem.Primitive, + NamedType: f.Elem.NamedType, + Quant: f.Elem.Quant, + TypeName: f.Elem.TypeName, + Elem: f.Elem.Elem, + FixedLen: f.Elem.FixedLen, + } + if err := writeCSharpDeserializeField(b, recv, elemField, indent+" ", enumNames); err != nil { + return err + } + fmt.Fprintf(b, "%s}\n", indent) + case parser.KindSlice: + lenVar := "_len" + sanitizeVarName(f.Name) + fmt.Fprintf(b, "%sint %s = *(ushort*)ptr; ptr += 2;\n", indent, lenVar) + fmt.Fprintf(b, "%s%s = new %s[%s];\n", indent, access, csharpTypeName(*f.Elem, enumNames), lenVar) + iVar := "_i" + sanitizeVarName(f.Name) + fmt.Fprintf(b, "%sfor (int %s = 0; %s < %s; %s++)\n%s{\n", + indent, iVar, iVar, lenVar, iVar, indent) + elemField := parser.Field{ + Name: f.Name + "[" + iVar + "]", + Kind: f.Elem.Kind, + Primitive: f.Elem.Primitive, + NamedType: f.Elem.NamedType, + Quant: f.Elem.Quant, + TypeName: f.Elem.TypeName, + Elem: f.Elem.Elem, + FixedLen: f.Elem.FixedLen, + } + if err := writeCSharpDeserializeField(b, recv, elemField, indent+" ", enumNames); err != nil { + return err + } + fmt.Fprintf(b, "%s}\n", indent) + } + return nil +} + +func writeCSharpDeserializePrimitive( + b *strings.Builder, + access string, + f parser.Field, + indent string, + enumNames map[string]struct{}, +) error { + if f.Quant != nil { + return writeCSharpDeserializeQuant(b, access, f, indent) + } + switch f.Primitive { + case parser.KindFloat32: + fmt.Fprintf(b, "%s%s = %s; ptr += 4;\n", indent, access, + csharpDeserializeValueExpr("*(float*)ptr", f, enumNames)) + case parser.KindFloat64: + fmt.Fprintf(b, "%s%s = %s; ptr += 8;\n", indent, access, + csharpDeserializeValueExpr("*(double*)ptr", f, enumNames)) + case parser.KindInt8: + fmt.Fprintf(b, "%s%s = %s; ptr += 1;\n", indent, access, + csharpDeserializeValueExpr("*(sbyte*)ptr", f, enumNames)) + case parser.KindUint8: + fmt.Fprintf(b, "%s%s = %s; ptr += 1;\n", indent, access, + csharpDeserializeValueExpr("*ptr", f, enumNames)) + case parser.KindBool: + fmt.Fprintf(b, "%s%s = %s; ptr += 1;\n", indent, access, + csharpDeserializeValueExpr("*ptr != 0", f, enumNames)) + case parser.KindInt16: + fmt.Fprintf(b, "%s%s = %s; ptr += 2;\n", indent, access, + csharpDeserializeValueExpr("*(short*)ptr", f, enumNames)) + case parser.KindUint16: + fmt.Fprintf(b, "%s%s = %s; ptr += 2;\n", indent, access, + csharpDeserializeValueExpr("*(ushort*)ptr", f, enumNames)) + case parser.KindInt32: + fmt.Fprintf(b, "%s%s = %s; ptr += 4;\n", indent, access, + csharpDeserializeValueExpr("*(int*)ptr", f, enumNames)) + case parser.KindUint32: + fmt.Fprintf(b, "%s%s = %s; ptr += 4;\n", indent, access, + csharpDeserializeValueExpr("*(uint*)ptr", f, enumNames)) + case parser.KindInt64: + fmt.Fprintf(b, "%s%s = %s; ptr += 8;\n", indent, access, + csharpDeserializeValueExpr("*(long*)ptr", f, enumNames)) + case parser.KindUint64: + fmt.Fprintf(b, "%s%s = %s; ptr += 8;\n", indent, access, + csharpDeserializeValueExpr("*(ulong*)ptr", f, enumNames)) + case parser.KindString: + lenVar := "_slen" + sanitizeVarName(access) + fmt.Fprintf(b, "%sint %s = *(ushort*)ptr; ptr += 2;\n", indent, lenVar) + expr := fmt.Sprintf("%s > 0 ? Encoding.UTF8.GetString(ptr, %s) : string.Empty", lenVar, lenVar) + fmt.Fprintf(b, "%s%s = %s;\n", indent, access, csharpDeserializeValueExpr(expr, f, enumNames)) + fmt.Fprintf(b, "%sptr += %s;\n", indent, lenVar) + } + return nil +} + +func writeCSharpDeserializeQuant(b *strings.Builder, access string, f parser.Field, indent string) error { + q := f.Quant + maxUint := q.MaxUint() + if q.Bits == 8 { + if f.Primitive == parser.KindFloat32 { + fmt.Fprintf(b, "%s%s = (float)(*ptr) / %gf * (%gf - (%gf)) + (%gf); ptr += 1;\n", + indent, access, maxUint, q.Max, q.Min, q.Min) + } else { + fmt.Fprintf(b, "%s%s = (double)(*ptr) / %g * (%g - (%g)) + (%g); ptr += 1;\n", + indent, access, maxUint, q.Max, q.Min, q.Min) + } + } else { + if f.Primitive == parser.KindFloat32 { + fmt.Fprintf(b, "%s%s = (float)(*(ushort*)ptr) / %gf * (%gf - (%gf)) + (%gf); ptr += 2;\n", + indent, access, maxUint, q.Max, q.Min, q.Min) + } else { + fmt.Fprintf(b, "%s%s = (double)(*(ushort*)ptr) / %g * (%g - (%g)) + (%g); ptr += 2;\n", + indent, access, maxUint, q.Max, q.Min, q.Min) + } + } + return nil +} + +func needsTextEncoding(messages []parser.Message) bool { + for _, msg := range messages { + for _, f := range msg.Fields { + if fieldNeedsEncoding(f) { + return true + } + } + } + return false +} + +func fieldNeedsEncoding(f parser.Field) bool { + switch f.Kind { + case parser.KindPrimitive: + return f.Primitive == parser.KindString + case parser.KindFixedArray, parser.KindSlice: + if f.Elem != nil { + return fieldNeedsEncoding(*f.Elem) + } + } + return false +} + +func csharpTypeName(f parser.Field, enumNames map[string]struct{}) string { + switch f.Kind { + case parser.KindPrimitive: + if csharpIsEnumType(f, enumNames) { + return f.NamedType + } + return f.CSharpPrimitiveTypeName() + case parser.KindNested: + return f.TypeName + case parser.KindFixedArray: + return csharpTypeName(*f.Elem, enumNames) + "[]" + case parser.KindSlice: + return csharpTypeName(*f.Elem, enumNames) + "[]" + } + return "unknown" +} + +func csharpSerializeValueExpr(access string, f parser.Field, enumNames map[string]struct{}) string { + if !csharpIsEnumType(f, enumNames) { + return access + } + return "(" + f.CSharpPrimitiveTypeName() + ")" + access +} + +func csharpDeserializeValueExpr(expr string, f parser.Field, enumNames map[string]struct{}) string { + if !csharpIsEnumType(f, enumNames) { + return expr + } + return "(" + f.NamedType + ")(" + expr + ")" +} + +func csharpIsEnumType(f parser.Field, enumNames map[string]struct{}) bool { + if f.NamedType == "" { + return false + } + _, ok := enumNames[f.NamedType] + return ok +} + +func csharpEnumBaseType(enum parser.Enum) string { + field := parser.Field{Primitive: enum.Primitive} + return field.CSharpPrimitiveTypeName() +} + +func csharpEnumValueName(enumName, valueName string) string { + if !strings.HasPrefix(valueName, enumName) || len(valueName) == len(enumName) { + return valueName + } + + suffix := valueName[len(enumName):] + if suffix == "" { + return valueName + } + if suffix[0] == '_' { + suffix = suffix[1:] + } + if suffix == "" { + return valueName + } + + first := suffix[0] + if !((first >= 'A' && first <= 'Z') || (first >= '0' && first <= '9') || first == '_') { + return valueName + } + + return suffix +} diff --git a/generator/generator_test.go b/generator/generator_test.go new file mode 100644 index 0000000..ec38f16 --- /dev/null +++ b/generator/generator_test.go @@ -0,0 +1,382 @@ +package generator + +import ( + "edmand46/arpack/parser" + "os" + "os/exec" + "path/filepath" + "strings" + "testing" +) + +const samplePath = "../testdata/sample.go" + +func TestGenerateGo_Compiles(t *testing.T) { + msgs, err := parser.ParseFile(samplePath) + if err != nil { + t.Fatalf("ParseFile: %v", err) + } + + src, err := GenerateGo(msgs, "messages") + if err != nil { + t.Fatalf("GenerateGo: %v", err) + } + + if len(src) == 0 { + t.Fatal("GenerateGo returned empty output") + } + + // Проверяем что содержит нужные функции + code := string(src) + for _, name := range []string{"Vector3", "MoveMessage", "SpawnMessage", "EnvelopeMessage"} { + if !strings.Contains(code, "func (m *"+name+") Marshal") { + t.Errorf("missing Marshal for %s", name) + } + if !strings.Contains(code, "func (m *"+name+") Unmarshal") { + t.Errorf("missing Unmarshal for %s", name) + } + } + + t.Logf("Generated Go (%d bytes):\n%s", len(src), code) +} + +func TestGenerateGo_RoundTrip(t *testing.T) { + msgs, err := parser.ParseFile(samplePath) + if err != nil { + t.Fatalf("ParseFile: %v", err) + } + + src, err := GenerateGo(msgs, "messages") + if err != nil { + t.Fatalf("GenerateGo: %v", err) + } + + // Записываем в temp dir вместе с оригинальными структурами и тестом round-trip + dir := t.TempDir() + + // Копируем testdata/sample.go (определения структур) + sampleSrc, err := os.ReadFile(samplePath) + if err != nil { + t.Fatalf("ReadFile sample: %v", err) + } + if err := os.WriteFile(filepath.Join(dir, "messages.go"), sampleSrc, 0644); err != nil { + t.Fatal(err) + } + + // Сохраняем сгенерированный код + if err := os.WriteFile(filepath.Join(dir, "messages_arpack.go"), src, 0644); err != nil { + t.Fatal(err) + } + + // Пишем round-trip тест + roundTrip := `package messages + +import ( + "math" + "testing" +) + +func TestRoundTrip_Vector3(t *testing.T) { + orig := Vector3{X: 123.45, Y: -200.0, Z: 0.0} + buf := orig.Marshal(nil) + var got Vector3 + n, err := got.Unmarshal(buf) + if err != nil { + t.Fatalf("Unmarshal: %v", err) + } + if n != len(buf) { + t.Errorf("consumed %d bytes, want %d", n, len(buf)) + } + // Квантизация 16-бит даёт точность ≈ 1000/65535 ≈ 0.015 + const eps = float32(0.02) + if math.Abs(float64(got.X-orig.X)) > float64(eps) { + t.Errorf("X: got %v, want %v", got.X, orig.X) + } + if math.Abs(float64(got.Y-orig.Y)) > float64(eps) { + t.Errorf("Y: got %v, want %v", got.Y, orig.Y) + } +} + +func TestRoundTrip_SpawnMessage(t *testing.T) { + orig := SpawnMessage{ + EntityID: 42, + Position: Vector3{X: 10, Y: 20, Z: 30}, + Health: -100, + Tags: []string{"hero", "player"}, + Data: []uint8{1, 2, 3}, + } + buf := orig.Marshal(nil) + var got SpawnMessage + _, err := got.Unmarshal(buf) + if err != nil { + t.Fatalf("Unmarshal: %v", err) + } + if got.EntityID != orig.EntityID { + t.Errorf("EntityID: got %d, want %d", got.EntityID, orig.EntityID) + } + if got.Health != orig.Health { + t.Errorf("Health: got %d, want %d", got.Health, orig.Health) + } + if len(got.Tags) != len(orig.Tags) { + t.Fatalf("Tags len: got %d, want %d", len(got.Tags), len(orig.Tags)) + } + for i, tag := range orig.Tags { + if got.Tags[i] != tag { + t.Errorf("Tags[%d]: got %q, want %q", i, got.Tags[i], tag) + } + } + if len(got.Data) != len(orig.Data) { + t.Fatalf("Data len: got %d, want %d", len(got.Data), len(orig.Data)) + } +} + +func TestRoundTrip_MoveMessage(t *testing.T) { + orig := MoveMessage{ + Position: Vector3{X: 100, Y: -50, Z: 0}, + Velocity: [3]float32{1.5, -2.5, 0}, + Waypoints: []Vector3{{X: 10, Y: 20, Z: 0}, {X: -10, Y: 0, Z: 100}}, + PlayerID: 999, + Active: true, + Visible: false, + Ghost: true, + Name: "Alice", + } + buf := orig.Marshal(nil) + var got MoveMessage + _, err := got.Unmarshal(buf) + if err != nil { + t.Fatalf("Unmarshal: %v", err) + } + if got.PlayerID != orig.PlayerID { + t.Errorf("PlayerID: got %d, want %d", got.PlayerID, orig.PlayerID) + } + if got.Name != orig.Name { + t.Errorf("Name: got %q, want %q", got.Name, orig.Name) + } + if got.Active != orig.Active { + t.Errorf("Active: got %v, want %v", got.Active, orig.Active) + } + if got.Visible != orig.Visible { + t.Errorf("Visible: got %v, want %v", got.Visible, orig.Visible) + } + if got.Ghost != orig.Ghost { + t.Errorf("Ghost: got %v, want %v", got.Ghost, orig.Ghost) + } + if len(got.Waypoints) != len(orig.Waypoints) { + t.Fatalf("Waypoints len: got %d, want %d", len(got.Waypoints), len(orig.Waypoints)) + } +} + +func TestRoundTrip_EnvelopeMessage(t *testing.T) { + orig := EnvelopeMessage{ + Code: OpcodeJoinRoom, + Counter: 7, + } + buf := orig.Marshal(nil) + var got EnvelopeMessage + _, err := got.Unmarshal(buf) + if err != nil { + t.Fatalf("Unmarshal: %v", err) + } + if got.Code != orig.Code { + t.Errorf("Code: got %v, want %v", got.Code, orig.Code) + } + if got.Counter != orig.Counter { + t.Errorf("Counter: got %d, want %d", got.Counter, orig.Counter) + } +} +` + if err := os.WriteFile(filepath.Join(dir, "roundtrip_test.go"), []byte(roundTrip), 0644); err != nil { + t.Fatal(err) + } + + // go.mod для temp пакета + goMod := "module messages\n\ngo 1.21\n" + if err := os.WriteFile(filepath.Join(dir, "go.mod"), []byte(goMod), 0644); err != nil { + t.Fatal(err) + } + + // Запускаем go test + cmd := exec.Command("go", "test", "./...") + cmd.Dir = dir + out, err := cmd.CombinedOutput() + if err != nil { + t.Fatalf("go test failed:\n%s", out) + } + t.Logf("go test output:\n%s", out) +} + +func TestGenerateCSharp_Output(t *testing.T) { + schema, err := parser.ParseSchemaFile(samplePath) + if err != nil { + t.Fatalf("ParseSchemaFile: %v", err) + } + + src, err := GenerateCSharpSchema(schema, "Ragono.Messages") + if err != nil { + t.Fatalf("GenerateCSharpSchema: %v", err) + } + + code := string(src) + + // Проверяем структуру выходного кода + for _, name := range []string{"Vector3", "MoveMessage", "SpawnMessage", "EnvelopeMessage"} { + if !strings.Contains(code, "public unsafe struct "+name) { + t.Errorf("missing struct %s", name) + } + if !strings.Contains(code, "public int Serialize") { + t.Errorf("missing Serialize in %s", name) + } + if !strings.Contains(code, "public static int Deserialize") { + t.Errorf("missing Deserialize in %s", name) + } + } + + // Unsafe паттерны + if !strings.Contains(code, "*(ushort*)ptr") { + t.Error("missing unsafe ushort pointer cast") + } + if !strings.Contains(code, "byte* ptr = buffer") { + t.Error("missing byte* ptr pattern") + } + + // Нет BinaryWriter + if strings.Contains(code, "BinaryWriter") || strings.Contains(code, "BinaryReader") { + t.Error("should not contain BinaryWriter/BinaryReader") + } + if !strings.Contains(code, "public enum Opcode : ushort") { + t.Error("missing Opcode enum") + } + if !strings.Contains(code, "Authorize = 1") || !strings.Contains(code, "JoinRoom = 2") { + t.Error("missing enum values for Opcode") + } + if !strings.Contains(code, "public Opcode Code;") { + t.Error("EnvelopeMessage.Code should use generated enum type") + } + + t.Logf("Generated C# (%d bytes):\n%s", len(src), code) +} + +func TestBoolPacking_GoCode(t *testing.T) { + msgs, err := parser.ParseFile(samplePath) + if err != nil { + t.Fatalf("ParseFile: %v", err) + } + + src, err := GenerateGo(msgs, "messages") + if err != nil { + t.Fatalf("GenerateGo: %v", err) + } + code := string(src) + + // Должны быть битовые операции + if !strings.Contains(code, "_boolByte") { + t.Error("missing bool bit-packing variable (_boolByte)") + } + if !strings.Contains(code, "|= 1 <<") { + t.Error("missing bit OR operation for bool packing") + } + if !strings.Contains(code, "&(1<<") { + t.Error("missing bit AND operation for bool unpacking") + } + + // НЕ должно быть per-byte записи для bool-полей из MoveMessage + // (Active, Visible, Ghost упакованы в 1 байт) + if strings.Contains(code, "append(buf, 1)") { + t.Error("should not emit per-byte bool encoding for packed bools") + } +} + +func TestBoolPacking_WireSize(t *testing.T) { + src := `package p +type Flags struct { + A bool + B bool + C bool + D bool + E bool + F bool + G bool + H bool + I bool +} +` + msgs, err := parser.ParseSource(src) + if err != nil { + t.Fatalf("ParseSource: %v", err) + } + // 9 bool: первые 8 → 1 байт, последний → 1 байт = 2 байта + got := packedMinWireSize(msgs[0].Fields) + if got != 2 { + t.Errorf("packedMinWireSize(9 consecutive bools): got %d, want 2", got) + } + + src3 := `package p +type Flags3 struct { + A bool + B bool + C bool +} +` + msgs3, err := parser.ParseSource(src3) + if err != nil { + t.Fatalf("ParseSource: %v", err) + } + // 3 bool → 1 байт + got3 := packedMinWireSize(msgs3[0].Fields) + if got3 != 1 { + t.Errorf("packedMinWireSize(3 consecutive bools): got %d, want 1", got3) + } +} + +func TestBoolPacking_SegmentFields(t *testing.T) { + src := `package p +type Msg struct { + A bool + B bool + ID uint32 + C bool +} +` + msgs, err := parser.ParseSource(src) + if err != nil { + t.Fatalf("ParseSource: %v", err) + } + segs := segmentFields(msgs[0].Fields) + // Ожидаем: [bool-group(A,B)] [single(ID)] [bool-group(C)] + if len(segs) != 3 { + t.Fatalf("expected 3 segments, got %d", len(segs)) + } + if len(segs[0].bools) != 2 { + t.Errorf("seg[0]: expected 2 bools, got %d", len(segs[0].bools)) + } + if segs[1].single == nil || segs[1].single.Name != "ID" { + t.Errorf("seg[1]: expected single field ID") + } + if len(segs[2].bools) != 1 { + t.Errorf("seg[2]: expected 1 bool, got %d", len(segs[2].bools)) + } +} + +func TestBoolPacking_CSharpCode(t *testing.T) { + schema, err := parser.ParseSchemaFile(samplePath) + if err != nil { + t.Fatalf("ParseSchemaFile: %v", err) + } + + src, err := GenerateCSharpSchema(schema, "Ragono.Messages") + if err != nil { + t.Fatalf("GenerateCSharpSchema: %v", err) + } + code := string(src) + + if !strings.Contains(code, "_boolByte") { + t.Error("C#: missing bool bit-packing variable") + } + if !strings.Contains(code, "|= (byte)(1 <<") { + t.Error("C#: missing bit OR for bool packing") + } + if !strings.Contains(code, "& (1 <<") { + t.Error("C#: missing bit AND for bool unpacking") + } +} diff --git a/generator/go.go b/generator/go.go new file mode 100644 index 0000000..cf595fc --- /dev/null +++ b/generator/go.go @@ -0,0 +1,398 @@ +package generator + +import ( + "edmand46/arpack/parser" + "fmt" + "go/format" + "strings" +) + +// GenerateGo генерирует Go-код сериализации для списка сообщений. +// pkgName — имя пакета в котором будет сгенерированный файл. +func GenerateGo(messages []parser.Message, pkgName string) ([]byte, error) { + return GenerateGoSchema(parser.Schema{Messages: messages}, pkgName) +} + +// GenerateGoSchema генерирует Go-код сериализации для полной схемы. +func GenerateGoSchema(schema parser.Schema, pkgName string) ([]byte, error) { + messages := schema.Messages + var b strings.Builder + + b.WriteString("// Code generated by arpack. DO NOT EDIT.\n\n") + fmt.Fprintf(&b, "package %s\n\n", pkgName) + + b.WriteString("import (\n") + b.WriteString("\t\"encoding/binary\"\n") + b.WriteString("\t\"errors\"\n") + if needsMathImport(messages) { + b.WriteString("\t\"math\"\n") + } + b.WriteString(")\n\n") + + for _, msg := range messages { + if err := writeGoMessage(&b, msg); err != nil { + return nil, fmt.Errorf("message %s: %w", msg.Name, err) + } + } + + src := b.String() + formatted, err := format.Source([]byte(src)) + if err != nil { + return []byte(src), fmt.Errorf("go/format: %w\n\nSource:\n%s", err, src) + } + return formatted, nil +} + +func writeGoMessage(b *strings.Builder, msg parser.Message) error { + segs := segmentFields(msg.Fields) + + // Marshal + fmt.Fprintf(b, "func (m *%s) Marshal(buf []byte) []byte {\n", msg.Name) + for i, seg := range segs { + if seg.single != nil { + if err := writeGoMarshalField(b, "m", *seg.single, "\t"); err != nil { + return err + } + } else { + writeGoBoolGroupMarshal(b, "m", seg.bools, i, "\t") + } + } + b.WriteString("\treturn buf\n}\n\n") + + // Unmarshal — возвращает кол-во потреблённых байт + fmt.Fprintf(b, "func (m *%s) Unmarshal(data []byte) (int, error) {\n", msg.Name) + minSize := packedMinWireSize(msg.Fields) + fmt.Fprintf(b, "\tif len(data) < %d {\n", minSize) + fmt.Fprintf(b, "\t\treturn 0, errors.New(\"arpack: buffer too short for %s\")\n", msg.Name) + b.WriteString("\t}\n") + b.WriteString("\toffset := 0\n") + for i, seg := range segs { + if seg.single != nil { + if err := writeGoUnmarshalField(b, "m", *seg.single, "\t"); err != nil { + return err + } + } else { + writeGoBoolGroupUnmarshal(b, "m", seg.bools, i, "\t") + } + } + b.WriteString("\treturn offset, nil\n}\n\n") + + return nil +} + +func writeGoBoolGroupMarshal(b *strings.Builder, recv string, bools []parser.Field, groupIdx int, indent string) { + varName := fmt.Sprintf("_boolByte%d", groupIdx) + fmt.Fprintf(b, "%svar %s uint8\n", indent, varName) + for bit, f := range bools { + fmt.Fprintf(b, "%sif %s.%s { %s |= 1 << %d }\n", indent, recv, f.Name, varName, bit) + } + fmt.Fprintf(b, "%sbuf = append(buf, %s)\n", indent, varName) +} + +func writeGoBoolGroupUnmarshal(b *strings.Builder, recv string, bools []parser.Field, groupIdx int, indent string) { + varName := fmt.Sprintf("_boolByte%d", groupIdx) + fmt.Fprintf(b, "%sif len(data) < offset+1 { return 0, errors.New(\"arpack: buffer too short\") }\n", indent) + fmt.Fprintf(b, "%s%s := data[offset]; offset++\n", indent, varName) + for bit, f := range bools { + expr := fmt.Sprintf("%s&(1<<%d) != 0", varName, bit) + fmt.Fprintf(b, "%s%s.%s = %s\n", indent, recv, f.Name, goUnmarshalValueExpr(expr, f)) + } +} + +// --- Marshal --- + +func writeGoMarshalField(b *strings.Builder, recv string, f parser.Field, indent string) error { + access := recv + "." + f.Name + switch f.Kind { + case parser.KindPrimitive: + return writeGoMarshalPrimitive(b, access, f, indent) + case parser.KindNested: + fmt.Fprintf(b, "%sbuf = %s.Marshal(buf)\n", indent, access) + case parser.KindFixedArray: + fmt.Fprintf(b, "%sfor _i%s := 0; _i%s < %d; _i%s++ {\n", + indent, f.Name, f.Name, f.FixedLen, f.Name) + elemField := parser.Field{ + Name: f.Name + "[_i" + f.Name + "]", + Kind: f.Elem.Kind, + Primitive: f.Elem.Primitive, + NamedType: f.Elem.NamedType, + Quant: f.Elem.Quant, + TypeName: f.Elem.TypeName, + Elem: f.Elem.Elem, + FixedLen: f.Elem.FixedLen, + } + if err := writeGoMarshalField(b, recv, elemField, indent+"\t"); err != nil { + return err + } + fmt.Fprintf(b, "%s}\n", indent) + case parser.KindSlice: + fmt.Fprintf(b, "%sbuf = binary.LittleEndian.AppendUint16(buf, uint16(len(%s)))\n", indent, access) + fmt.Fprintf(b, "%sfor _i%s := range %s {\n", indent, f.Name, access) + elemField := parser.Field{ + Name: f.Name + "[_i" + f.Name + "]", + Kind: f.Elem.Kind, + Primitive: f.Elem.Primitive, + NamedType: f.Elem.NamedType, + Quant: f.Elem.Quant, + TypeName: f.Elem.TypeName, + Elem: f.Elem.Elem, + FixedLen: f.Elem.FixedLen, + } + if err := writeGoMarshalField(b, recv, elemField, indent+"\t"); err != nil { + return err + } + fmt.Fprintf(b, "%s}\n", indent) + } + return nil +} + +func writeGoMarshalPrimitive(b *strings.Builder, access string, f parser.Field, indent string) error { + if f.Quant != nil { + return writeGoMarshalQuant(b, access, f, indent) + } + valueExpr := goMarshalValueExpr(access, f) + switch f.Primitive { + case parser.KindFloat32: + fmt.Fprintf(b, "%sbuf = binary.LittleEndian.AppendUint32(buf, math.Float32bits(%s))\n", indent, valueExpr) + case parser.KindFloat64: + fmt.Fprintf(b, "%sbuf = binary.LittleEndian.AppendUint64(buf, math.Float64bits(%s))\n", indent, valueExpr) + case parser.KindInt8: + fmt.Fprintf(b, "%sbuf = append(buf, uint8(%s))\n", indent, valueExpr) + case parser.KindUint8: + fmt.Fprintf(b, "%sbuf = append(buf, %s)\n", indent, valueExpr) + case parser.KindBool: + fmt.Fprintf(b, "%sif %s { buf = append(buf, 1) } else { buf = append(buf, 0) }\n", indent, valueExpr) + case parser.KindInt16: + fmt.Fprintf(b, "%sbuf = binary.LittleEndian.AppendUint16(buf, uint16(%s))\n", indent, valueExpr) + case parser.KindUint16: + fmt.Fprintf(b, "%sbuf = binary.LittleEndian.AppendUint16(buf, %s)\n", indent, valueExpr) + case parser.KindInt32: + fmt.Fprintf(b, "%sbuf = binary.LittleEndian.AppendUint32(buf, uint32(%s))\n", indent, valueExpr) + case parser.KindUint32: + fmt.Fprintf(b, "%sbuf = binary.LittleEndian.AppendUint32(buf, %s)\n", indent, valueExpr) + case parser.KindInt64: + fmt.Fprintf(b, "%sbuf = binary.LittleEndian.AppendUint64(buf, uint64(%s))\n", indent, valueExpr) + case parser.KindUint64: + fmt.Fprintf(b, "%sbuf = binary.LittleEndian.AppendUint64(buf, %s)\n", indent, valueExpr) + case parser.KindString: + fmt.Fprintf(b, "%sbuf = binary.LittleEndian.AppendUint16(buf, uint16(len(%s)))\n", indent, valueExpr) + fmt.Fprintf(b, "%sbuf = append(buf, %s...)\n", indent, valueExpr) + } + return nil +} + +func writeGoMarshalQuant(b *strings.Builder, access string, f parser.Field, indent string) error { + q := f.Quant + varName := "_q" + sanitizeVarName(access) + valueExpr := goMarshalValueExpr(access, f) + if q.Bits == 8 { + fmt.Fprintf(b, "%s%s := uint8((%s - (%g)) / (%g - (%g)) * %g)\n", + indent, varName, valueExpr, q.Min, q.Max, q.Min, q.MaxUint()) + fmt.Fprintf(b, "%sbuf = append(buf, %s)\n", indent, varName) + } else { + fmt.Fprintf(b, "%s%s := uint16((%s - (%g)) / (%g - (%g)) * %g)\n", + indent, varName, valueExpr, q.Min, q.Max, q.Min, q.MaxUint()) + fmt.Fprintf(b, "%sbuf = binary.LittleEndian.AppendUint16(buf, %s)\n", indent, varName) + } + return nil +} + +// --- Unmarshal --- + +func writeGoUnmarshalField(b *strings.Builder, recv string, f parser.Field, indent string) error { + access := recv + "." + f.Name + switch f.Kind { + case parser.KindPrimitive: + return writeGoUnmarshalPrimitive(b, access, f, indent) + + case parser.KindNested: + nVar := "_n" + sanitizeVarName(f.Name) + fmt.Fprintf(b, "%s%s, _err := %s.Unmarshal(data[offset:])\n", indent, nVar, access) + fmt.Fprintf(b, "%sif _err != nil { return 0, _err }\n", indent) + fmt.Fprintf(b, "%soffset += %s\n", indent, nVar) + + case parser.KindFixedArray: + iVar := "_i" + f.Name + fmt.Fprintf(b, "%sfor %s := 0; %s < %d; %s++ {\n", indent, iVar, iVar, f.FixedLen, iVar) + elemField := parser.Field{ + Name: f.Name + "[" + iVar + "]", + Kind: f.Elem.Kind, + Primitive: f.Elem.Primitive, + NamedType: f.Elem.NamedType, + Quant: f.Elem.Quant, + TypeName: f.Elem.TypeName, + Elem: f.Elem.Elem, + FixedLen: f.Elem.FixedLen, + } + if err := writeGoUnmarshalField(b, recv, elemField, indent+"\t"); err != nil { + return err + } + fmt.Fprintf(b, "%s}\n", indent) + + case parser.KindSlice: + lenVar := "_len" + sanitizeVarName(f.Name) + fmt.Fprintf(b, "%sif len(data) < offset+2 { return 0, errors.New(\"arpack: buffer too short\") }\n", indent) + fmt.Fprintf(b, "%s%s := int(binary.LittleEndian.Uint16(data[offset:]))\n", indent, lenVar) + fmt.Fprintf(b, "%soffset += 2\n", indent) + fmt.Fprintf(b, "%s%s = make(%s, %s)\n", indent, access, f.GoTypeName(), lenVar) + iVar := "_i" + sanitizeVarName(f.Name) + fmt.Fprintf(b, "%sfor %s := 0; %s < %s; %s++ {\n", indent, iVar, iVar, lenVar, iVar) + elemField := parser.Field{ + Name: f.Name + "[" + iVar + "]", + Kind: f.Elem.Kind, + Primitive: f.Elem.Primitive, + NamedType: f.Elem.NamedType, + Quant: f.Elem.Quant, + TypeName: f.Elem.TypeName, + Elem: f.Elem.Elem, + FixedLen: f.Elem.FixedLen, + } + if err := writeGoUnmarshalField(b, recv, elemField, indent+"\t"); err != nil { + return err + } + fmt.Fprintf(b, "%s}\n", indent) + } + return nil +} + +func writeGoUnmarshalPrimitive(b *strings.Builder, access string, f parser.Field, indent string) error { + if f.Quant != nil { + return writeGoUnmarshalQuant(b, access, f, indent) + } + switch f.Primitive { + case parser.KindFloat32: + fmt.Fprintf(b, "%sif len(data) < offset+4 { return 0, errors.New(\"arpack: buffer too short\") }\n", indent) + fmt.Fprintf(b, "%s%s = %s\n", indent, access, goUnmarshalValueExpr("math.Float32frombits(binary.LittleEndian.Uint32(data[offset:]))", f)) + fmt.Fprintf(b, "%soffset += 4\n", indent) + case parser.KindFloat64: + fmt.Fprintf(b, "%sif len(data) < offset+8 { return 0, errors.New(\"arpack: buffer too short\") }\n", indent) + fmt.Fprintf(b, "%s%s = %s\n", indent, access, goUnmarshalValueExpr("math.Float64frombits(binary.LittleEndian.Uint64(data[offset:]))", f)) + fmt.Fprintf(b, "%soffset += 8\n", indent) + case parser.KindInt8: + fmt.Fprintf(b, "%sif len(data) < offset+1 { return 0, errors.New(\"arpack: buffer too short\") }\n", indent) + fmt.Fprintf(b, "%s%s = %s\n", indent, access, goUnmarshalValueExpr("int8(data[offset])", f)) + fmt.Fprintf(b, "%soffset += 1\n", indent) + case parser.KindUint8: + fmt.Fprintf(b, "%sif len(data) < offset+1 { return 0, errors.New(\"arpack: buffer too short\") }\n", indent) + fmt.Fprintf(b, "%s%s = %s\n", indent, access, goUnmarshalValueExpr("data[offset]", f)) + fmt.Fprintf(b, "%soffset += 1\n", indent) + case parser.KindBool: + fmt.Fprintf(b, "%sif len(data) < offset+1 { return 0, errors.New(\"arpack: buffer too short\") }\n", indent) + fmt.Fprintf(b, "%s%s = %s\n", indent, access, goUnmarshalValueExpr("data[offset] != 0", f)) + fmt.Fprintf(b, "%soffset += 1\n", indent) + case parser.KindInt16: + fmt.Fprintf(b, "%sif len(data) < offset+2 { return 0, errors.New(\"arpack: buffer too short\") }\n", indent) + fmt.Fprintf(b, "%s%s = %s\n", indent, access, goUnmarshalValueExpr("int16(binary.LittleEndian.Uint16(data[offset:]))", f)) + fmt.Fprintf(b, "%soffset += 2\n", indent) + case parser.KindUint16: + fmt.Fprintf(b, "%sif len(data) < offset+2 { return 0, errors.New(\"arpack: buffer too short\") }\n", indent) + fmt.Fprintf(b, "%s%s = %s\n", indent, access, goUnmarshalValueExpr("binary.LittleEndian.Uint16(data[offset:])", f)) + fmt.Fprintf(b, "%soffset += 2\n", indent) + case parser.KindInt32: + fmt.Fprintf(b, "%sif len(data) < offset+4 { return 0, errors.New(\"arpack: buffer too short\") }\n", indent) + fmt.Fprintf(b, "%s%s = %s\n", indent, access, goUnmarshalValueExpr("int32(binary.LittleEndian.Uint32(data[offset:]))", f)) + fmt.Fprintf(b, "%soffset += 4\n", indent) + case parser.KindUint32: + fmt.Fprintf(b, "%sif len(data) < offset+4 { return 0, errors.New(\"arpack: buffer too short\") }\n", indent) + fmt.Fprintf(b, "%s%s = %s\n", indent, access, goUnmarshalValueExpr("binary.LittleEndian.Uint32(data[offset:])", f)) + fmt.Fprintf(b, "%soffset += 4\n", indent) + case parser.KindInt64: + fmt.Fprintf(b, "%sif len(data) < offset+8 { return 0, errors.New(\"arpack: buffer too short\") }\n", indent) + fmt.Fprintf(b, "%s%s = %s\n", indent, access, goUnmarshalValueExpr("int64(binary.LittleEndian.Uint64(data[offset:]))", f)) + fmt.Fprintf(b, "%soffset += 8\n", indent) + case parser.KindUint64: + fmt.Fprintf(b, "%sif len(data) < offset+8 { return 0, errors.New(\"arpack: buffer too short\") }\n", indent) + fmt.Fprintf(b, "%s%s = %s\n", indent, access, goUnmarshalValueExpr("binary.LittleEndian.Uint64(data[offset:])", f)) + fmt.Fprintf(b, "%soffset += 8\n", indent) + case parser.KindString: + lenVar := "_slen" + sanitizeVarName(access) + fmt.Fprintf(b, "%sif len(data) < offset+2 { return 0, errors.New(\"arpack: buffer too short\") }\n", indent) + fmt.Fprintf(b, "%s%s := int(binary.LittleEndian.Uint16(data[offset:]))\n", indent, lenVar) + fmt.Fprintf(b, "%soffset += 2\n", indent) + fmt.Fprintf(b, "%sif len(data) < offset+%s { return 0, errors.New(\"arpack: buffer too short\") }\n", indent, lenVar) + fmt.Fprintf(b, "%s%s = %s\n", indent, access, goUnmarshalValueExpr("string(data[offset : offset+"+lenVar+"])", + f)) + fmt.Fprintf(b, "%soffset += %s\n", indent, lenVar) + } + return nil +} + +func writeGoUnmarshalQuant(b *strings.Builder, access string, f parser.Field, indent string) error { + q := f.Quant + varName := "_q" + sanitizeVarName(access) + maxUint := q.MaxUint() + if q.Bits == 8 { + fmt.Fprintf(b, "%sif len(data) < offset+1 { return 0, errors.New(\"arpack: buffer too short\") }\n", indent) + fmt.Fprintf(b, "%s%s := data[offset]\n", indent, varName) + fmt.Fprintf(b, "%soffset += 1\n", indent) + if f.Primitive == parser.KindFloat32 { + expr := fmt.Sprintf("float32(%s) / %g * (%g - (%g)) + (%g)", varName, maxUint, q.Max, q.Min, q.Min) + fmt.Fprintf(b, "%s%s = %s\n", indent, access, goUnmarshalValueExpr(expr, f)) + } else { + expr := fmt.Sprintf("float64(%s) / %g * (%g - (%g)) + (%g)", varName, maxUint, q.Max, q.Min, q.Min) + fmt.Fprintf(b, "%s%s = %s\n", indent, access, goUnmarshalValueExpr(expr, f)) + } + } else { + fmt.Fprintf(b, "%sif len(data) < offset+2 { return 0, errors.New(\"arpack: buffer too short\") }\n", indent) + fmt.Fprintf(b, "%s%s := binary.LittleEndian.Uint16(data[offset:])\n", indent, varName) + fmt.Fprintf(b, "%soffset += 2\n", indent) + if f.Primitive == parser.KindFloat32 { + expr := fmt.Sprintf("float32(%s) / %g * (%g - (%g)) + (%g)", varName, maxUint, q.Max, q.Min, q.Min) + fmt.Fprintf(b, "%s%s = %s\n", indent, access, goUnmarshalValueExpr(expr, f)) + } else { + expr := fmt.Sprintf("float64(%s) / %g * (%g - (%g)) + (%g)", varName, maxUint, q.Max, q.Min, q.Min) + fmt.Fprintf(b, "%s%s = %s\n", indent, access, goUnmarshalValueExpr(expr, f)) + } + } + return nil +} + +func goMarshalValueExpr(access string, f parser.Field) string { + if f.NamedType == "" { + return access + } + return f.GoPrimitiveTypeName() + "(" + access + ")" +} + +func goUnmarshalValueExpr(expr string, f parser.Field) string { + if f.NamedType == "" { + return expr + } + return f.NamedType + "(" + expr + ")" +} + +// sanitizeVarName превращает "m.Pos[_i]" в "_mPos_i". +func sanitizeVarName(s string) string { + var b strings.Builder + for _, c := range s { + if (c >= 'a' && c <= 'z') || (c >= 'A' && c <= 'Z') || (c >= '0' && c <= '9') { + b.WriteRune(c) + } else { + b.WriteRune('_') + } + } + return b.String() +} + +func needsMathImport(messages []parser.Message) bool { + for _, msg := range messages { + for _, f := range msg.Fields { + if needsMathField(f) { + return true + } + } + } + return false +} + +func needsMathField(f parser.Field) bool { + switch f.Kind { + case parser.KindPrimitive: + return f.Quant == nil && (f.Primitive == parser.KindFloat32 || f.Primitive == parser.KindFloat64) + case parser.KindFixedArray, parser.KindSlice: + if f.Elem != nil { + return needsMathField(*f.Elem) + } + } + return false +} diff --git a/generator/segment.go b/generator/segment.go new file mode 100644 index 0000000..0095e6d --- /dev/null +++ b/generator/segment.go @@ -0,0 +1,58 @@ +package generator + +import "edmand46/arpack/parser" + +// segment — либо группа bool (1–8 полей → 1 байт), либо одиночное поле. +type segment struct { + bools []parser.Field // non-empty: bool-группа + single *parser.Field // non-nil: любое не-bool поле +} + +// isBoolField возвращает true если поле — нативный bool (не массив, не слайс). +func isBoolField(f parser.Field) bool { + return f.Kind == parser.KindPrimitive && f.Primitive == parser.KindBool +} + +// segmentFields разбивает поля структуры на сегменты. +// Последовательные bool-поля группируются по 8 в один сегмент. +func segmentFields(fields []parser.Field) []segment { + var segs []segment + i := 0 + for i < len(fields) { + if !isBoolField(fields[i]) { + f := fields[i] + segs = append(segs, segment{single: &f}) + i++ + continue + } + // Собираем последовательные bool-поля группами по 8 + for i < len(fields) && isBoolField(fields[i]) { + var group []parser.Field + for i < len(fields) && isBoolField(fields[i]) && len(group) < 8 { + group = append(group, fields[i]) + i++ + } + segs = append(segs, segment{bools: group}) + } + } + return segs +} + +// packedMinWireSize вычисляет минимальный размер буфера с учётом упаковки bool. +func packedMinWireSize(fields []parser.Field) int { + total := 0 + for _, seg := range segmentFields(fields) { + if seg.single != nil { + s := seg.single.WireSize() + if s == -1 { + total += 2 + } else { + total += s + } + } else { + // Группа bool → 1 байт + total += 1 + } + } + return total +} diff --git a/go.mod b/go.mod new file mode 100644 index 0000000..6b25261 --- /dev/null +++ b/go.mod @@ -0,0 +1 @@ +module edmand46/arpack diff --git a/images/logo.png b/images/logo.png new file mode 100644 index 0000000000000000000000000000000000000000..0b5ee47aac5ca9392b84d2f6b057cebd95182ec7 GIT binary patch literal 349148 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 yO*VN*s@ZBi#rZLqd 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
wT-Q4l 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

VNz=LI=jL`Z6LP#Nq>g#irz}SSO$R<*)TY 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%0DP%p>kcDL5YSSChNRVZ{ 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

Ay5iYIT*C@W*Ur$pthrgVTca653R}ymCZhytg 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 literal 0 HcmV?d00001 diff --git a/parser/parser.go b/parser/parser.go new file mode 100644 index 0000000..ee258fd --- /dev/null +++ b/parser/parser.go @@ -0,0 +1,414 @@ +package parser + +import ( + "fmt" + "go/ast" + "go/importer" + goparser "go/parser" + "go/token" + "go/types" + "reflect" + "strconv" + "strings" +) + +// ParseFile парсит Go-файл и возвращает список сообщений. +func ParseFile(path string) ([]Message, error) { + schema, err := ParseSchemaFile(path) + if err != nil { + return nil, err + } + return schema.Messages, nil +} + +// ParseSource парсит исходный код из строки (удобно для тестов). +func ParseSource(src string) ([]Message, error) { + schema, err := ParseSchemaSource(src) + if err != nil { + return nil, err + } + return schema.Messages, nil +} + +// ParseSchemaFile парсит файл и возвращает полную схему: сообщения и enum-ы. +func ParseSchemaFile(path string) (Schema, error) { + fset := token.NewFileSet() + + f, err := goparser.ParseFile(fset, path, nil, 0) + if err != nil { + return Schema{}, fmt.Errorf("parse %s: %w", path, err) + } + + return parseASTFile(fset, f) +} + +// ParseSchemaSource парсит исходник и возвращает полную схему. +func ParseSchemaSource(src string) (Schema, error) { + fset := token.NewFileSet() + + f, err := goparser.ParseFile(fset, "source.go", src, 0) + if err != nil { + return Schema{}, fmt.Errorf("parse source: %w", err) + } + + return parseASTFile(fset, f) +} + +func parseASTFile(fset *token.FileSet, f *ast.File) (Schema, error) { + pkgName := f.Name.Name + + knownStructs := map[string]bool{} + namedPrimitives := map[string]PrimitiveKind{} + var enumOrder []string + + for _, decl := range f.Decls { + genDecl, ok := decl.(*ast.GenDecl) + if !ok || genDecl.Tok != token.TYPE { + continue + } + + for _, spec := range genDecl.Specs { + typeSpec, ok := spec.(*ast.TypeSpec) + if !ok { + continue + } + + switch t := typeSpec.Type.(type) { + case *ast.StructType: + knownStructs[typeSpec.Name.Name] = true + case *ast.Ident: + primKind, isPrimitive := goPrimitiveKind(t.Name) + if !isPrimitive { + continue + } + namedPrimitives[typeSpec.Name.Name] = primKind + if IsIntegralPrimitive(primKind) { + enumOrder = append(enumOrder, typeSpec.Name.Name) + } + } + } + } + + info, err := typeCheckFile(fset, f) + if err != nil { + return Schema{}, err + } + + schema := Schema{PackageName: pkgName} + enumIndex := make(map[string]int, len(enumOrder)) + for _, name := range enumOrder { + enumIndex[name] = len(schema.Enums) + schema.Enums = append(schema.Enums, Enum{ + Name: name, + Primitive: namedPrimitives[name], + }) + } + + for _, decl := range f.Decls { + genDecl, ok := decl.(*ast.GenDecl) + if !ok { + continue + } + + switch genDecl.Tok { + case token.TYPE: + for _, spec := range genDecl.Specs { + typeSpec, ok := spec.(*ast.TypeSpec) + if !ok { + continue + } + + structType, ok := typeSpec.Type.(*ast.StructType) + if !ok { + continue + } + + msg, err := parseStruct(pkgName, typeSpec.Name.Name, structType, knownStructs, namedPrimitives) + if err != nil { + return Schema{}, fmt.Errorf("struct %s: %w", typeSpec.Name.Name, err) + } + + schema.Messages = append(schema.Messages, msg) + } + case token.CONST: + if err := parseConstDecls(genDecl, info, enumIndex, &schema); err != nil { + return Schema{}, err + } + } + } + + return schema, nil +} + +func typeCheckFile(fset *token.FileSet, f *ast.File) (*types.Info, error) { + info := &types.Info{ + Defs: make(map[*ast.Ident]types.Object), + } + + cfg := &types.Config{ + Importer: importer.Default(), + } + + if _, err := cfg.Check(f.Name.Name, fset, []*ast.File{f}, info); err != nil { + return nil, fmt.Errorf("typecheck %s: %w", f.Name.Name, err) + } + + return info, nil +} + +func parseConstDecls(genDecl *ast.GenDecl, info *types.Info, enumIndex map[string]int, schema *Schema) error { + for _, spec := range genDecl.Specs { + valueSpec, ok := spec.(*ast.ValueSpec) + if !ok { + continue + } + + for _, name := range valueSpec.Names { + obj, ok := info.Defs[name].(*types.Const) + if !ok { + continue + } + + named, ok := obj.Type().(*types.Named) + if !ok { + continue + } + + idx, ok := enumIndex[named.Obj().Name()] + if !ok { + continue + } + + schema.Enums[idx].Values = append(schema.Enums[idx].Values, EnumValue{ + Name: name.Name, + Value: obj.Val().String(), + }) + } + } + + return nil +} + +func parseStruct( + pkg string, + name string, + st *ast.StructType, + knownStructs map[string]bool, + namedPrimitives map[string]PrimitiveKind, +) (Message, error) { + msg := Message{PackageName: pkg, Name: name} + + for _, astField := range st.Fields.List { + if len(astField.Names) == 0 { + continue // embedded field, пропускаем + } + + var rawTag string + if astField.Tag != nil { + tag := reflect.StructTag(strings.Trim(astField.Tag.Value, "`")) + rawTag = tag.Get("pack") + } + + for _, fieldName := range astField.Names { + field, err := parseFieldType(fieldName.Name, astField.Type, rawTag, knownStructs, namedPrimitives) + if err != nil { + return Message{}, fmt.Errorf("field %s: %w", fieldName.Name, err) + } + + msg.Fields = append(msg.Fields, field) + } + } + return msg, nil +} + +func parseFieldType( + name string, + expr ast.Expr, + rawTag string, + knownStructs map[string]bool, + namedPrimitives map[string]PrimitiveKind, +) (Field, error) { + switch t := expr.(type) { + case *ast.Ident: + return parsePrimitiveOrNested(name, t.Name, rawTag, knownStructs, namedPrimitives) + + case *ast.ArrayType: + if t.Len == nil { + elem, err := parseFieldType("", t.Elt, rawTag, knownStructs, namedPrimitives) + if err != nil { + return Field{}, fmt.Errorf("slice element: %w", err) + } + + return Field{ + Name: name, + Kind: KindSlice, + Elem: &elem, + }, nil + } + + n, err := parseArrayLen(t.Len) + if err != nil { + return Field{}, fmt.Errorf("array length: %w", err) + } + + elem, err := parseFieldType("", t.Elt, rawTag, knownStructs, namedPrimitives) + if err != nil { + return Field{}, fmt.Errorf("array element: %w", err) + } + + return Field{ + Name: name, + Kind: KindFixedArray, + Elem: &elem, + FixedLen: n, + }, nil + + case *ast.StarExpr: + return Field{}, fmt.Errorf("pointer types not supported") + + case *ast.SelectorExpr: + return Field{}, fmt.Errorf("external package types not supported (use only types from the same file)") + } + + return Field{}, fmt.Errorf("unsupported type expression %T", expr) +} + +func parsePrimitiveOrNested( + name string, + typeName string, + rawTag string, + knownStructs map[string]bool, + namedPrimitives map[string]PrimitiveKind, +) (Field, error) { + primKind, isPrimitive := goPrimitiveKind(typeName) + if !isPrimitive { + if namedPrimitive, ok := namedPrimitives[typeName]; ok { + return buildPrimitiveField(name, typeName, namedPrimitive, rawTag) + } + + if !knownStructs[typeName] { + return Field{}, fmt.Errorf("unknown type %q (not a primitive and not defined in the same file)", typeName) + } + return Field{ + Name: name, + Kind: KindNested, + TypeName: typeName, + }, nil + } + + return buildPrimitiveField(name, "", primKind, rawTag) +} + +func buildPrimitiveField(name, namedType string, primKind PrimitiveKind, rawTag string) (Field, error) { + field := Field{ + Name: name, + Kind: KindPrimitive, + Primitive: primKind, + NamedType: namedType, + } + + if rawTag != "" { + if primKind != KindFloat32 && primKind != KindFloat64 { + typeLabel := field.GoTypeName() + return Field{}, fmt.Errorf("arpack tag can only be applied to float32/float64, got %s", typeLabel) + } + quant, err := parseQuantTag(rawTag) + if err != nil { + return Field{}, fmt.Errorf("arpack tag: %w", err) + } + field.Quant = quant + } + + return field, nil +} + +func parseQuantTag(tag string) (*QuantInfo, error) { + info := &QuantInfo{Bits: 16} + parts := strings.Split(tag, ",") + for _, p := range parts { + p = strings.TrimSpace(p) + kv := strings.SplitN(p, "=", 2) + if len(kv) != 2 { + return nil, fmt.Errorf("invalid tag part %q (expected key=value)", p) + } + + key := strings.TrimSpace(kv[0]) + val := strings.TrimSpace(kv[1]) + + switch key { + case "min": + v, err := strconv.ParseFloat(val, 64) + if err != nil { + return nil, fmt.Errorf("min: %w", err) + } + + info.Min = v + case "max": + v, err := strconv.ParseFloat(val, 64) + if err != nil { + return nil, fmt.Errorf("max: %w", err) + } + + info.Max = v + case "bits": + v, err := strconv.Atoi(val) + if err != nil || (v != 8 && v != 16) { + return nil, fmt.Errorf("bits must be 8 or 16, got %q", val) + } + + info.Bits = v + default: + return nil, fmt.Errorf("unknown tag key %q", key) + } + } + + if info.Max <= info.Min { + return nil, fmt.Errorf("max (%.6g) must be greater than min (%.6g)", info.Max, info.Min) + } + + return info, nil +} + +func parseArrayLen(expr ast.Expr) (int, error) { + lit, ok := expr.(*ast.BasicLit) + if !ok { + return 0, fmt.Errorf("array length must be a literal integer constant") + } + + n, err := strconv.Atoi(lit.Value) + if err != nil || n <= 0 { + return 0, fmt.Errorf("array length must be a positive integer, got %q", lit.Value) + } + + return n, nil +} + +func goPrimitiveKind(name string) (PrimitiveKind, bool) { + switch name { + case "float32": + return KindFloat32, true + case "float64": + return KindFloat64, true + case "int8": + return KindInt8, true + case "int16": + return KindInt16, true + case "int32", "int": + return KindInt32, true + case "int64": + return KindInt64, true + case "uint8", "byte": + return KindUint8, true + case "uint16": + return KindUint16, true + case "uint32", "uint": + return KindUint32, true + case "uint64": + return KindUint64, true + case "bool": + return KindBool, true + case "string": + return KindString, true + } + return 0, false +} diff --git a/parser/parser_test.go b/parser/parser_test.go new file mode 100644 index 0000000..4e46e45 --- /dev/null +++ b/parser/parser_test.go @@ -0,0 +1,268 @@ +package parser + +import ( + "testing" +) + +const sampleSource = `package messages + +type Vector3 struct { + X float32 ` + "`" + `pack:"min=-500,max=500,bits=16"` + "`" + ` + Y float32 ` + "`" + `pack:"min=-500,max=500,bits=16"` + "`" + ` + Z float32 ` + "`" + `pack:"min=-500,max=500,bits=16"` + "`" + ` +} + +type MoveMessage struct { + Position Vector3 + Velocity [3]float32 + Waypoints []Vector3 + PlayerID uint32 + Name string + Active bool +} + +type SpawnMessage struct { + ID uint64 + Position Vector3 + Tags [4]string + Data []uint8 +} +` + +const enumSource = `package messages + +type Opcode uint16 + +const ( + OpcodeUnknown Opcode = iota + OpcodeAuthorize + OpcodeJoinRoom +) + +type EnvelopeMessage struct { + Code Opcode + Counter uint8 +} +` + +func TestParseSource_Primitives(t *testing.T) { + msgs, err := ParseSource(sampleSource) + if err != nil { + t.Fatalf("ParseSource: %v", err) + } + if len(msgs) != 3 { + t.Fatalf("expected 3 messages, got %d", len(msgs)) + } +} + +func TestParseSource_Vector3(t *testing.T) { + msgs, err := ParseSource(sampleSource) + if err != nil { + t.Fatalf("ParseSource: %v", err) + } + + v3 := msgs[0] + if v3.Name != "Vector3" { + t.Fatalf("expected Vector3, got %s", v3.Name) + } + if len(v3.Fields) != 3 { + t.Fatalf("expected 3 fields, got %d", len(v3.Fields)) + } + + for _, f := range v3.Fields { + if f.Kind != KindPrimitive { + t.Errorf("field %s: expected KindPrimitive, got %d", f.Name, f.Kind) + } + if f.Primitive != KindFloat32 { + t.Errorf("field %s: expected KindFloat32, got %d", f.Name, f.Primitive) + } + if f.Quant == nil { + t.Errorf("field %s: expected quant info, got nil", f.Name) + continue + } + if f.Quant.Min != -500 || f.Quant.Max != 500 || f.Quant.Bits != 16 { + t.Errorf("field %s: wrong quant info %+v", f.Name, f.Quant) + } + } +} + +func TestParseSource_MoveMessage(t *testing.T) { + msgs, err := ParseSource(sampleSource) + if err != nil { + t.Fatalf("ParseSource: %v", err) + } + + msg := msgs[1] + if msg.Name != "MoveMessage" { + t.Fatalf("expected MoveMessage, got %s", msg.Name) + } + + tests := []struct { + name string + kind FieldKind + typeName string + fixedLen int + elemKind FieldKind + }{ + {"Position", KindNested, "Vector3", 0, 0}, + {"Velocity", KindFixedArray, "", 3, KindPrimitive}, + {"Waypoints", KindSlice, "", 0, KindNested}, + {"PlayerID", KindPrimitive, "", 0, 0}, + {"Name", KindPrimitive, "", 0, 0}, + {"Active", KindPrimitive, "", 0, 0}, + } + + if len(msg.Fields) != len(tests) { + t.Fatalf("expected %d fields, got %d", len(tests), len(msg.Fields)) + } + + for i, tc := range tests { + f := msg.Fields[i] + if f.Name != tc.name { + t.Errorf("[%d] expected field %s, got %s", i, tc.name, f.Name) + } + if f.Kind != tc.kind { + t.Errorf("field %s: expected kind %d, got %d", tc.name, tc.kind, f.Kind) + } + if tc.typeName != "" && f.TypeName != tc.typeName { + t.Errorf("field %s: expected TypeName %s, got %s", tc.name, tc.typeName, f.TypeName) + } + if tc.fixedLen > 0 { + if f.FixedLen != tc.fixedLen { + t.Errorf("field %s: expected FixedLen %d, got %d", tc.name, tc.fixedLen, f.FixedLen) + } + if f.Elem == nil { + t.Errorf("field %s: Elem is nil", tc.name) + } else if f.Elem.Kind != tc.elemKind { + t.Errorf("field %s: Elem.Kind expected %d, got %d", tc.name, tc.elemKind, f.Elem.Kind) + } + } + if tc.kind == KindSlice { + if f.Elem == nil { + t.Errorf("field %s: Elem is nil for slice", tc.name) + } else if f.Elem.Kind != tc.elemKind { + t.Errorf("field %s: Elem.Kind expected %d, got %d", tc.name, tc.elemKind, f.Elem.Kind) + } + } + } +} + +func TestParseSource_SpawnMessage(t *testing.T) { + msgs, err := ParseSource(sampleSource) + if err != nil { + t.Fatalf("ParseSource: %v", err) + } + + msg := msgs[2] + if msg.Name != "SpawnMessage" { + t.Fatalf("expected SpawnMessage, got %s", msg.Name) + } + + // Tags: [4]string + tags := msg.Fields[2] + if tags.Kind != KindFixedArray || tags.FixedLen != 4 { + t.Errorf("Tags: expected KindFixedArray[4], got kind=%d fixedLen=%d", tags.Kind, tags.FixedLen) + } + if tags.Elem == nil || tags.Elem.Primitive != KindString { + t.Errorf("Tags: expected string element") + } + + // Data: []uint8 + data := msg.Fields[3] + if data.Kind != KindSlice { + t.Errorf("Data: expected KindSlice, got %d", data.Kind) + } + if data.Elem == nil || data.Elem.Primitive != KindUint8 { + t.Errorf("Data: expected uint8 element") + } +} + +func TestParseSchemaSource_Enums(t *testing.T) { + schema, err := ParseSchemaSource(enumSource) + if err != nil { + t.Fatalf("ParseSchemaSource: %v", err) + } + + if len(schema.Messages) != 1 { + t.Fatalf("expected 1 message, got %d", len(schema.Messages)) + } + if len(schema.Enums) != 1 { + t.Fatalf("expected 1 enum, got %d", len(schema.Enums)) + } + + enum := schema.Enums[0] + if enum.Name != "Opcode" { + t.Fatalf("expected enum Opcode, got %s", enum.Name) + } + if enum.Primitive != KindUint16 { + t.Fatalf("expected Opcode base kind uint16, got %d", enum.Primitive) + } + if len(enum.Values) != 3 { + t.Fatalf("expected 3 enum values, got %d", len(enum.Values)) + } + if enum.Values[1].Name != "OpcodeAuthorize" || enum.Values[1].Value != "1" { + t.Fatalf("unexpected enum value %#v", enum.Values[1]) + } + + field := schema.Messages[0].Fields[0] + if field.Kind != KindPrimitive { + t.Fatalf("expected EnvelopeMessage.Code to be primitive, got %d", field.Kind) + } + if field.NamedType != "Opcode" { + t.Fatalf("expected named type Opcode, got %q", field.NamedType) + } + if field.Primitive != KindUint16 { + t.Fatalf("expected underlying uint16, got %d", field.Primitive) + } +} + +func TestQuantTag_Errors(t *testing.T) { + cases := []struct { + src string + wantErr bool + }{ + {`package p; type T struct { X float32 ` + "`" + `pack:"min=0,max=100"` + "`" + ` }`, false}, + {`package p; type T struct { X float32 ` + "`" + `pack:"min=100,max=0"` + "`" + ` }`, true}, // max < min + {`package p; type T struct { X float32 ` + "`" + `pack:"min=0,max=100,bits=32"` + "`" + ` }`, true}, // bad bits + {`package p; type T struct { X int32 ` + "`" + `pack:"min=0,max=100"` + "`" + ` }`, true}, // quant на int + {`package p; type T struct { X float32 ` + "`" + `pack:"foo=1"` + "`" + ` }`, true}, // unknown key + } + + for i, tc := range cases { + _, err := ParseSource(tc.src) + if tc.wantErr && err == nil { + t.Errorf("[%d] expected error, got nil", i) + } + if !tc.wantErr && err != nil { + t.Errorf("[%d] unexpected error: %v", i, err) + } + } +} + +func TestWireSize(t *testing.T) { + msgs, err := ParseSource(sampleSource) + if err != nil { + t.Fatalf("ParseSource: %v", err) + } + + v3 := msgs[0] + // Vector3: 3 × uint16 (квантизованные float32) = 6 байт + if v3.MinWireSize() != 6 { + t.Errorf("Vector3.MinWireSize: expected 6, got %d", v3.MinWireSize()) + } + if v3.HasVariableFields() { + t.Errorf("Vector3 should not have variable fields") + } +} + +func TestNestedUnknownType(t *testing.T) { + src := `package p +type Msg struct { + Pos UnknownType +} +` + _, err := ParseSource(src) + if err == nil { + t.Fatal("expected error for unknown nested type, got nil") + } +} diff --git a/parser/types.go b/parser/types.go new file mode 100644 index 0000000..d3b7e35 --- /dev/null +++ b/parser/types.go @@ -0,0 +1,288 @@ +package parser + +// PrimitiveKind — конкретный примитивный тип. +type PrimitiveKind int + +const ( + KindFloat32 PrimitiveKind = iota + KindFloat64 + KindInt8 + KindInt16 + KindInt32 + KindInt64 + KindUint8 + KindUint16 + KindUint32 + KindUint64 + KindBool + KindString +) + +// FieldKind — категория поля. +type FieldKind int + +const ( + KindPrimitive FieldKind = iota // float, int, uint, bool, string + KindNested // ссылка на другой Message + KindFixedArray // [N]T + KindSlice // []T +) + +// QuantInfo описывает квантизацию float → uint8/uint16. +type QuantInfo struct { + Min float64 + Max float64 + Bits int // 8 или 16, default 16 +} + +// MaxUint — максимальное целое значение для данного числа бит. +func (q *QuantInfo) MaxUint() float64 { + if q.Bits == 8 { + return 255 + } + return 65535 +} + +// WireBytes — размер на проводе в байтах. +func (q *QuantInfo) WireBytes() int { + return q.Bits / 8 +} + +// Field — одно поле структуры-сообщения. +type Field struct { + Name string + Kind FieldKind + + // KindPrimitive + Primitive PrimitiveKind + NamedType string + Quant *QuantInfo // nil если нет квантизации + + // KindNested + TypeName string + + // KindFixedArray / KindSlice + Elem *Field + FixedLen int // >0 только для KindFixedArray +} + +// WireSize — размер в байтах на проводе. +// Возвращает -1 для полей переменного размера. +func (f *Field) WireSize() int { + switch f.Kind { + case KindPrimitive: + if f.Quant != nil { + return f.Quant.WireBytes() + } + return primitiveWireSize(f.Primitive) + case KindNested: + return -1 // зависит от конкретного типа, узнаём через Message.MinWireSize + case KindFixedArray: + elemSize := f.Elem.WireSize() + if elemSize == -1 { + return -1 + } + return f.FixedLen * elemSize + case KindSlice: + return -1 // uint16 len + переменная часть + } + return 0 +} + +func primitiveWireSize(k PrimitiveKind) int { + switch k { + case KindFloat32, KindInt32, KindUint32: + return 4 + case KindFloat64, KindInt64, KindUint64: + return 8 + case KindInt16, KindUint16: + return 2 + case KindInt8, KindUint8, KindBool: + return 1 + case KindString: + return -1 + } + return 0 +} + +// IsIntegralPrimitive — подходит ли тип как базовый для enum. +func IsIntegralPrimitive(k PrimitiveKind) bool { + switch k { + case KindInt8, KindInt16, KindInt32, KindInt64, KindUint8, KindUint16, KindUint32, KindUint64: + return true + } + return false +} + +// GoTypeName — имя типа в Go. +func (f *Field) GoTypeName() string { + switch f.Kind { + case KindPrimitive: + if f.NamedType != "" { + return f.NamedType + } + return primitiveGoName(f.Primitive) + case KindNested: + return f.TypeName + case KindFixedArray: + return "[" + itoa(f.FixedLen) + "]" + f.Elem.GoTypeName() + case KindSlice: + return "[]" + f.Elem.GoTypeName() + } + return "unknown" +} + +// CSharpTypeName — имя типа в C#. +func (f *Field) CSharpTypeName() string { + switch f.Kind { + case KindPrimitive: + if f.NamedType != "" { + return f.NamedType + } + return primitiveCSharpName(f.Primitive) + case KindNested: + return f.TypeName + case KindFixedArray: + return f.Elem.CSharpTypeName() + "[]" + case KindSlice: + return f.Elem.CSharpTypeName() + "[]" + } + return "unknown" +} + +func primitiveGoName(k PrimitiveKind) string { + switch k { + case KindFloat32: + return "float32" + case KindFloat64: + return "float64" + case KindInt8: + return "int8" + case KindInt16: + return "int16" + case KindInt32: + return "int32" + case KindInt64: + return "int64" + case KindUint8: + return "uint8" + case KindUint16: + return "uint16" + case KindUint32: + return "uint32" + case KindUint64: + return "uint64" + case KindBool: + return "bool" + case KindString: + return "string" + } + return "unknown" +} + +// GoPrimitiveTypeName — базовый примитивный тип поля в Go. +func (f *Field) GoPrimitiveTypeName() string { + return primitiveGoName(f.Primitive) +} + +func primitiveCSharpName(k PrimitiveKind) string { + switch k { + case KindFloat32: + return "float" + case KindFloat64: + return "double" + case KindInt8: + return "sbyte" + case KindInt16: + return "short" + case KindInt32: + return "int" + case KindInt64: + return "long" + case KindUint8: + return "byte" + case KindUint16: + return "ushort" + case KindUint32: + return "uint" + case KindUint64: + return "ulong" + case KindBool: + return "bool" + case KindString: + return "string" + } + return "unknown" +} + +// CSharpPrimitiveTypeName — базовый примитивный тип поля в C#. +func (f *Field) CSharpPrimitiveTypeName() string { + return primitiveCSharpName(f.Primitive) +} + +func itoa(n int) string { + if n == 0 { + return "0" + } + buf := [20]byte{} + pos := len(buf) + for n > 0 { + pos-- + buf[pos] = byte('0' + n%10) + n /= 10 + } + return string(buf[pos:]) +} + +// Message — описание одной структуры-сообщения. +type Message struct { + PackageName string + Name string + Fields []Field +} + +// EnumValue — одно именованное значение enum. +type EnumValue struct { + Name string + Value string +} + +// Enum — enum-подобный тип на основе именованного примитива. +type Enum struct { + Name string + Primitive PrimitiveKind + Values []EnumValue +} + +// Schema — полная модель входного файла. +type Schema struct { + PackageName string + Messages []Message + Enums []Enum +} + +// MinWireSize — минимальный гарантированный размер в байтах. +// Для вложенных типов считается только если размер известен заранее. +// Строки и слайсы считаются как 2 байта (length prefix). +func (m *Message) MinWireSize() int { + total := 0 + for _, f := range m.Fields { + s := f.WireSize() + if s == -1 { + total += 2 // минимум: length prefix + } else { + total += s + } + } + return total +} + +// HasVariableFields — есть ли поля переменного размера. +func (m *Message) HasVariableFields() bool { + for _, f := range m.Fields { + if f.WireSize() == -1 { + return true + } + } + return false +} diff --git a/testdata/sample.go b/testdata/sample.go new file mode 100644 index 0000000..19ad0fc --- /dev/null +++ b/testdata/sample.go @@ -0,0 +1,43 @@ +package messages + +// Vector3 — трёхмерный вектор с квантизацией. +type Vector3 struct { + X float32 `pack:"min=-500,max=500,bits=16"` + Y float32 `pack:"min=-500,max=500,bits=16"` + Z float32 `pack:"min=-500,max=500,bits=16"` +} + +type Opcode uint16 + +const ( + OpcodeUnknown Opcode = iota + OpcodeAuthorize + OpcodeJoinRoom +) + +// MoveMessage содержит всё многообразие поддерживаемых типов. +type MoveMessage struct { + Position Vector3 // вложенный тип + Velocity [3]float32 // фиксированный массив без квантизации + Waypoints []Vector3 // слайс вложенных типов + PlayerID uint32 + // 3 подряд bool → упаковываются в 1 байт + Active bool + Visible bool + Ghost bool + Name string +} + +// SpawnMessage — пример с целочисленными полями и массивами примитивов. +type SpawnMessage struct { + EntityID uint64 + Position Vector3 + Health int16 + Tags []string + Data []uint8 +} + +type EnvelopeMessage struct { + Code Opcode + Counter uint8 +}

xt8alpgTP?V`FnHbJnoD~iVxw_MT&*+b5)f90&p+T3*L(_2a?ii z-MUZL9f?Zo1&1Bv6ylpMkrzLF$Hy#73Mkf>O72&@*QJ~PQ@G_1HQpov-ReN!VsFg)!weValR?&<2`+tp7M^0Xul){Y0ke-64y3K&(s_^hn(VFRKn=zq$L5qI z{;6RDVFx?x5og~7Ys>fPc9V{HiHE0q1=|j<@=lJO{}0b>3@F}bNSSH`=+XTYao$|b z;YL43tMKLDb_0|YdC0pzn*tiRaT@v9m-|U zNUNU5a&;LV$I7GWwZ7Gt{7*I&iOw3p2+rLfTRht!o)^CeTcivz8cVo&bx#Go@{ls* z>1ktBDm4@IMvHO!^&hHjzV~P8CBqQIMz&0RoI_uxBCJ<=dKkrDPRQt-yIlOJTTo-U z@tOAEtHD7Qj<@D{uG+El^@mJLqE&Co=Z_~yd-XM+>qbPNB~;sTD1+YelnUS!h@%rr zEP63KwS72>@KRoIs0q!AVkK|z7nPur;N;2)!YklWCl|=mv@&uIp_T~N9y((VBCMOPn zzr|=-r7LIi)6@O*Y9cwTVe;XtLX|YkC?cKZe@dcmaLqN*(nA;h8L%tyUazzShSCl! z8vz2G<^YNJPNky{B6BaHGq-Vf27~c6Nm$8_i9rUxfTt(R?^nl=4VMPEtG4yM;n7EJ z&tM9kI(u8OPFZVSjiIm6W3jJkl3hJSIQI2h4<*mhmhu!F_sCkD093WuZp`b@q_Zy# z2Bt*YTt&R&jpe=iIk7ebP!fC2JfU;p&g1I(#!GNsH;|M1DLX7p^PuiGmgq3c{EYTA z>Tq5y3;@#c`==zT-aSy8Lz?*qA;n>cbM9OHF=rk9U@E{T7s!S$o`%MYtu{|8_fm9R z?8|-cLism(obP19Wo$sd^v1(|A$thzx0gvu<29v;dcwS$ky{XVNX-@5QeuDC za1R~_F|x5gyRW{CLoW#I`0FBRGp(B{kD#{g7W4+4o*{dh-Ec5m8oQh&EG^}8}Epy$&AQ7BnhB8$1aZLbM?G7@M-Fxo$P@Szr=GW zV_a(h(4HUIWrFCO4Ww#_K2Vm8JC|0{fDIN^Djce>{J@VlphxEnd6SEHUCaLhiY;qMxv@m3+>$Sm*sK_HckqG(sa z5(FntSqer*U$JksudngB=XVPr)5S$lUTiQd__mSg$AhT$m-knm3RCXr$e;JV`O%MU zJW!meEY>Y%kag5OZp=>%?MvrgPtAZPFX@2-lt6=jlk)7q4LX$Apf9yX=17ZG@0NN% zeAo?2EASmjFjmP}1kC?~G7ddK2_Vl-d$(nEqs28Jr?u$-PAU3Dt>JpPHYw;N$x8;> zUUd54o@&|N^6nZ$qiAxx;{2Vj1nW44XPXd9-xv_%=_4AgBr*O`^9;M_VYsF=LsbNB zy6DSp1f}Q^%Tw{EiPoW?Rr4O}92~!*X69R-!7AY!1BE+hDAcPQ3oXFs9_2_Xo6+N4 zmDF)1zI{FiTbvbu_Og_5CihB8TWk2A8XLpk(g8XK5)J0atH(sMfRs|z-h1Z3 zyu1dk?`8$7bY$Uhe@=N6J5TbzK?~EyHiV%HL)%VETjdo&z3|MzUjkCGu>Hf}k5VQV zd+I!99U?@OO`uVF=Z9=|C=Hqn#Y8Mn3WOq7H3z1;n7eTvXUoK=O|d<0dzl{%a;q)f z>cm|34(v8>uwvd{0962dS79V^o;6dr} z$KQ8jZ$6VT@~at-At7!;U8+|ob-}?X_>+MGK3Q! z`IgHEGErdNQV=o%M|*MuN8}mSL|}J&tI3wrA0}_CbC$Qw2ald*M5B6R#~nFYDE`{a zHyMW9NyY%&Du^Hc^okoT1JlkkpNG3cC;-&rfLG+&V3|979T0L0L?_A4A`AnB%X1ZX z)`)Q!J1gCzzE}0~rD)`5_t@}_e5bZV2uoBO@AE^`8v7~WK($|Z$01!2q|80k*uoLE z^S7_p%hhJns13hPi0S{UwYmFmN%Q9kGH@|>a)vq5d4^?rgaFU^N16~5TtAQQ?FysG&^bLob-5b6k2+YTkY%1{@pROWtAn>~ zn?t%{?}eMJ6ge8=nkGjuVmbdmbWG8ks5v#^&@KHJryA?^p45@Rh6~;>D-thrwo|ly zh}>MircWtgDZhf(>!JrkDo6XzH-~vaCT)=<1-Lpoh&*Z47GbK&wl4_Pew%U@gC!?5 zs~Q8FC(&>Xd~{q)wH)3@E~a*IkC7llmJ7#kUh3JIYqQb~7acbczrWr-&N;u&`#gmC zf{p*TavY|<$j;uH^j!AI^UHWSiva0jM5c2##oYoM%YDQ`s%ZI2cr z(2TB@JHfO$jLLl{PI18p0izxVXjBQkv;O9Xzczd87bZM~|I>wq9Apl{ zlEjpJK`>pTTcK&zuD(MSKt#*ENh16tP0(d!*(*CajEt(_sT2H)? zL##jOO8<4$j1j9otcE0tE%n;sCF6Wt*tc8?Xf_SN2|d|LIxtp;*IB-y59-}&2@MYN zXP5^W@SlL5zOJ^>i{#x8o4dUI_gxLc(B`tA12u>BDd#xAL-WtI%G(C^ykB;%gKFRW zUd`8nfk23-am|P1s-%xTtgVQ48^i;>w(UHcEShULC#x7VpL4y=buFm` zmr_$yJI>wW2b-{IHwyy)s=G(X7uaeOljgf&m$>~M!fzB6lRDFws3Fov! z`pq#HWlc9#MFq<2JViZ4c6ho#ikF?UNT@dlzx;*AjCbz1_ovS*jJ!EbRONNr_aC7j zGe-DmB4H>VFA3h>%W+pw)ImHXYd4=c58vY2iQ8k2^$uswXUY${#ursJ2)P6C!aEG- zRCdWD$lLAmv0?NTG+^L}^}UL)T}uD4{vL&+LYz$?3B~%qJWcRuuU=AhYgND=Orp0W zEtmRqy0yvSPZGCkCVZT-u$@fEH zTD{;9iB5;fr<%r(jp1T~01Ip5P!7g1j(*rX&2p`{aOoOjELU?g!`u}7!a6L>)a`U< zp{J8$BC%{5c zJP2m{8dOuR3ry${b_c@iQ}d&Ob4-PYKcKaoz+0O`o3Hf}s8|8-7=VK;`%VvCJ+9oj zI?$PYv*GNAtYN;X-^Cnh%J1UtzpvwqH4e1xr$uZ5xs^k+8QoG0!2@t$nUdIRukbS$x%AJ=y(~Xl!%5WMj&MS}x?7G50VP>i zI}@VXyvug9xHq5=M0>l#ShaOwe56$C8t3W*q0CybutL&WjYffWLzUyuJH8ZzPSx6=d54wEhLd<(`YN4lg0J zyHxhMM9D3xJWJGx8vh3}+;A$uk}iqQ@LE|)Y(0|gxhsVheRkF==-^PmYL$%Cu@+I3 z_ZpA_Q!KJAUtBoi`*RlS2&!_q;+0?FXbNEHPx{%~=eBcKq7oYdodsu8?&zs)=5%bH zv|c`k6vtHmn1>#{+FXlC_D4g|ZLQYNzUY!$3lwizsI*-w6>)ZSwkpX`5CT4c1AUk0 z@vD2m)LPXWuHSD@y7u6i6A~VzoecCHwXB}D0Ig~-m)pG-vgo>EpjDR*pKXIZ>GcAR ze%=tj{*4JO{n}nsl~u7d$QW*}FDE$)uG0Eez{X|?olzaVIymRQ{_bru128aAkNN@A z)3arTNyu$*n{qSf#{z(tE4y>&we6)RbTF15tULz=n+t#@pgnzIe0RmYeg8+Nu{V}J zi?Gst&X+e~$;`XM(UoYw3|F~gubpbNe+^~v*&#$sH&g^f8#?^Bxm*=a;WDb7EvB?? z)4I;Tw{mE!a{t5%#XmV)CnxZGuYObpKN$b&)7)?G=ccJ*2!+VT++`hd@~wdofb+(K z(5`BEmTS*gBV_5RqQ9rEaX00>5700+`ILOssz0x4t`S}p{NQJ9li0W+&B^_!ArIzv zS>lF?-DW}|;<{CQ>W}V4++JU~tALV6{gL17B76ygeR#H=f61w#MvGIkFd+(-$ofb^ zJERp)d+@WC&WS!0au}D=$|G{xvBaI-)yPh;-TM;f&IpgzU?KtM@fv1|BqLe1;7`z0 zWC;N&xMOCo;0=B!4`X^=MDch|;BWe>*+UyMXiGFaNIc=}Eo7CDm@xmu9Ws+tiA88)(tuUUz#_8P;HGAg$yp zRW%(PTso2F%S0>%>-zn^6iK^6Rtohvy~ zsEnH~srzZP`1s9rw?Xc|AQwj!-p|M!nnu?>^Yn zpnS>~bg6AumLh;^2Dr<>BToNx##};u=D45BLmXNb1o+9pMgjFvs%Fv7H3OQW7)+t` z?+Q}d3PVp(+{7CU$0xfyhp!HHSd@S zwBlltPt^Xxq#u3+aN|S>X5g^#Zi>v0xr`K~YkI^74@WZl$B9+r{tTB>ceA`K z(P6~P=n?z``7S9UVm~h6$sDh72pS)M)FrtQsC!{rS2XwCKnOQzJdodJFIsWln=ml! z6PA57Oew%}i1k52_7jmn=9OX@)Ok4*cmo76tiXLd(beD*7RR}{D2 zIeI2OQ*TdHBgMtuSt|`HtT;DOD@>&LYnKoByvDEYG7@x`(@O@Aml%@Y`E#?DzxSfU z!1&=%S7uSRbt=1@hE{@vmQr%|y8I3C8nH+pT`p}O*H#xsd(rvdQn;U6CYu`T3Q4t@ zsECecF7eg8cPAxv0FF@0}p^tP%_Iz0W}pypyo?w+C}3C17^1Oyko_gBpX%7ki; zJ!-}p-&DQ)o4IePdsV3Pt=HjDmfgd{xbS~QyB|ZFY$W5N&_D`lqoust-;Syk9kn}a zaAh_}sw1E>+(Owp>L8ZQF*yIjF0wwGFX1B1)K}Ro-Y2iYvr2Sa-_Y(=n^H!<$}vjV z%uCS2xAaqzs!++&4fV?!8B*Q8mu+-uE&L)$i|fN6LaF+P?!^Go-$)YQE#9d2Eylh# zuW@ent~j2Vw%GWb>gw;>A`B_YQb!+r@AdqmZzqh;OnT{}t2f~4`omIbASj{p&$?5F z@FTGZ$oB)M<@C{L--PSUIqW;Qr2Q^|F^Sb{c8On?1OEPvWYzVyajxH6<(v#?yMYM3xc=X2y&(fj<{GuwTxR}f^t67_P}{}8rd<`sAWtL zzW}0^f9r>jWwO-Spx^!Am1t_+S(k$^gCdJ+0{%xI9)Kx5ZE+Bk<)1+|whL7>;2826 zt4E0)|CtD5FwoG&6j_sE%2XejpaaGCk@f0kCzrULLZ&eiRop^9uD7BZoPzbRH!(%8 z7hMszL9dqHYY4r|2r4YfIadjA-bhWB*^^scJGyT<9Q*;>Nnhn##&af|fhr<K-)DCW8DdPsET7y>^U;^~ zr|xUk!i9I}6EBZ^5+BN_%w^DGhkLe~-?6-77lW`{iyMl0Zv#G)?Ciq8Jo_#L>eTP1 z3!Q`(cAj?bJ^0M+AFVFtW8dfb7vm8Iu(BYJprc{=AfM-tMft}biN5hxnvTAufz12c zxT>EQn8zY0&DKjzYWaII5dLD#M)Gu^-gGWIWp$7hd}K5H;ey~k8)qjC*=~Qqh*=8n zj&8@+ThKAD(uN4EGp~w(yK#Pl%V6Dsf%Z_mt?29baS=^C^?1F8pH7Iw3U)!6qylN7 z?joM6>Y58$V(;wsg|bAPj*+B~B2HIPVy8iO35lmEJ(>&e@%rk>h4-JDO>Z~%ZVS0~ zF2Bd$Im?s~`jS(HH|_S5(VvlKQ$2b=sy{HmiZjZke{V#HT8iFVHdP8yzSEr98zM7E z@gn&L!?c8HibS1ouup-Yliu0xg|8i9KkOXhT*?W`z=>U{@;4ZGlO85PscV{Thf z7o!aUmoMX+NKsets&Drq{oTC=9`l{z(bE@7nY*{w3TEkokNV3pj}fB2N2<_XI z{!r1olkuKi-*(}ns-NcUkx=20S28lOfi<|Ezu6N38Q~}04nklEhD*FcJA6w@tEQT> z(K1H`XY5OA3rb?l2X}H&(!EEol;8pD68w1KpQkTn{Ecnz{%Mzeb*rU$d^uh{w)Zs3 zPMV53QOZ~U&WZPz+9r*4JbcstZuSRauY!bcJh7)yduqp!nK1C)A2V_ZVfa0Tbe!S9 zh?3anT|cdBik{$hm_-OcGfvfybHx8$iRdp<(F}P!d>}g^SwnU~iNRsKYuo7~hXcw0 z);TLd_+lglX)T=w^P{Rtcl8du6SZ`idMM#H?|A-&3G!E5*9(m^jqI3MN*R)H_~x(D zTafRI$mP8*0cBl2U_u29^Tkb9-Cjp0L*<&`%(2tf7i-V) z!!FD7@t$kf41-^}c6_le)z3~@uE%^$a&Zg%-g{wPS`?rjs2}UcB%*O4QM)=I^FajP zl%;&Yxu>7qwEODo>VWmNfae$TzkN2dmbx=c$E`76x9SgiCz%y+26t`0T&pGj;Kreh zGY=-@6hENoy_oW%Np0_Eb**#P6_4XvF;yZ6(qZEl$692Tvb2XXax;s3>ukEWL3YB+ z8=c?J13KKsXYV!#9GKteEIohLQU1+yobPnMWYo=E2(#%q&eJG8UVw^ybb2FpGUrk7 zx5J5Qg=J#W{lOT_dv$;7NkVU;s)Uo?i2|-z&HK!EeNf?<;WW~(qnz7QB+d>c;%l?b zdwPGs9Ay$n+Q<+S)6PD5(C;>m%kn0fjV_{+78TwfsrZU~moH5d`F`H8;=+I7E46XB zaeC4D&Rm0p+cdH}ojSb6?^zsFiecz?@%%lORi|$3LpUrI#L>R6`L2Q7%52J?PZN1= zlibp9)u|<1zM!dg=^~?YDQ(ix9Az75N<3PUI$?X>t>Cq&u%_RHPg5J8{i^o%Iw89t z_}Zu7I=etpVWPMGM)2aj^@yDDti+?U$!b40yQEhY9ty}uBEgm-!K&KCE4~{8Q~pKA zV>?^Fc`)br4f0djoOB#X5h?IowmI5(fbcU%neA;9VZH=!{X&@w;GI_7a?Y=wY>1fN zB-9@cyc?e=#rK?kIFdMvZs2buI&bZ6Vm=4nBghZlee}t*v^Vg0X)AqPJ;`%tk`kfe z+0%%0>-d(_q_+6msGuc>6tq$vCq3wYkU!2HXV*Njvk{Tv(sDSQl-4=>;fS~{C=B?i=Zn8t z;W2`rjKs9J0|a1aDcPJYjgnVPuj(w{quvvalSxu&M&+NHq@(DP@LNZ@Tl*pz%p%Xv za^!0*E&0x~eh)i5=UI0%w86+P z?q}^?GsJbA(C6)$KQp53S3LN$oL2PQj!}JK^+wS)N!52@EaPsT_S+8%xX<%GwbHaP zm`sYSt@=G>*LSLB(LRIK;{^k`D(0_|q^8>&?^zoD(%kbkv^@(CT=-=-#)CP0GqfwQ zEq5}L(m3;Sh4_CCbi%f@NtY|j{u#&OI-npSB+hq^-%Q@XoP)eOiX1t2jDo_L5{qbm znl#*jmcW?gx|D`?n^^MXq-1hrgWJ+<l=Dg=CvH(%Ei}tS(Af| zp)_R4GsSmC1+Dls+t;|13-jD>7aypqDhUn$`OEEoV4n#5=q(I;CQDB@qrbF3MS$%)cG%lJ@w1kaS|#TCmv$w zi$_u0(Rj-3X!2KViCL@XOMXsANerq-Nk?Z(`uxe$DH@{fcIQKWc0m}Pi*CH?stEqH zJg13Yk27y?0pdVvX9znsn%xs3-)b?^9lR=np=Fk7W^d3)SiE(2Z^RS4+J2;cRB)vB zB?sR`GMPJ{Vrcs*@xD`npWG+i$2L*bmW1`OMdIQFa4CJe1l{ca$JJY~wbgZ7!@+|F zE$&dHxDoAR*|-bDwkG=f1x619I)Xv(}tr zj5*evmw#uapxY-Odo$ElE55Y;@0WUvTa@rV>-_q7Rd5_l?4POF@$i&=J523EE2_eB z@%@~R(^rphwUA9T`0PpBGeTD!BP-W$n=v%p(F8t0kkg-ZWW1RI3jW>s$gI!?<<507 zxohRR*y<#B+NKtT{plp8LVXzU_IqIRryklEb{O|P5Cc7^Jy-}C;~Vc-K;QK2wSmOt zZpqJ;JKyw~_*5~A#-Gcc5%0ubo_!tbgok&*C%pqN9sG{|?07uL`%?=`z{9~qm|4`y z`rB~mec=5xXvmq+{Q0K0_P#C-qb$d^IkiJ=Ugsw8pBMZiM!R_5oF<$L(%N$|9yJ|P z#!*8ZbZM^MU6x6w7(*$;3Cc$Lm>#w#LUIKq@EF2g z@Az{#j&I!+rilu4^9{P72o3uer#Vy7i;7H5NT4m7wB6wOr6M2Wsbuu#4ey-ZpgXvKPZLpxqLwPj)HIO0yy&O>SVRc`5aP;uc_I8)~r~PxpUa@?XAQLK2N9L}^+-2!rAuofd zU@OwYNk3Zuw%@C9NKK%VNrV=yIP-IOE!EfsZSz_#cD%f3Hr{3m`&J7tjb-yIa+2$n zz%S`N?N2omlq1Poj|Gy5^V9U2#kkO?Xta+U7O1DDzZk}ceaoc1WS|K7-F8YB?7ui#qvt)lp$;9GLAP% zbR!~!xBbdv6HUM)IvLPVL$}igUSDV~38vvWZci?dbA#K+i!TDRDuH6aYcP;|!@4i% z_k^CJXC@8AzAcMnB*HQFVTS~9oSRBey2pRO*V1z&3KX!0Ctf7+MidJNF2=l5A{$TK z!LZ6Cs^wKt@my5dgM{v&{dKDuK?py15t)3#@X6Qs@wb&^WTIe}eY-pq(JeLYH6!`T;Jl3oneD0zoLzBcT z1MH8-M+hU)6t}&U&1gIFr#T@*?F?0MTcq18zrV0WgLb4EO@PkA@U;3mV9pqb? zKCN3Pr+xn;p=_*J2|?d!&!ag1_*j6_xaVH;#@EHog8DyPSWj=6An`?w!6(Mp(e|py zqCmwPLSdn`r%8YLaM&6cv|UL+j0=^orrChWf{AQQ3T9+f=X_j4qO0q3N6_ztzb>>9 zDpiPWx$zGK(n8ykMN$~nVFx+HQWN2rIS*lTVxNo{j1YH}#1)&aHsUSwDNG^Og*vhU ztZ03{mV(3#_aWz>RKjPL7liA zpW;ui*Lh2U>r=Ag@>C1}e}sXn=g2O|IT=B|H^=bRuCOP4dmOYH z8P6DL0P_I^Nv0q~ph~4#CnaI+BHo~a(-#JQ3~&por90}~0(=EB6MjT8FVY*&)|6lS ziT38ctLHy!GbjG|`TM@{K<{V;)&|*c`H0+y-M_rJ?06k7r#Xz`H>QkDG@@u_aA_GT z#i=7*JZR%Xfgnkkl<7!#aVCe0oN`W=F9m~p6NnSgbRq5iQs}*5bZDAoG5ZAfQGFhE zpxxA)4|i@*MOvg$#TH9Obo^0pBj$L|YXNh{oyl%_8Xo#(@V|f8v(;&*U(?~SCkZtP z=iHS=i2Ovu!#26hK;NBz(_yQPXqP4c15S7z;}o0|!pGHxp@xFM2J0cPIPkT?BHi{* zRPa#6#<^0_-pGDHPXX$4VAF`6`v<_pb^_N~(CLAm1#EEU9jB&cfD+=GSVHq?oHlq3MUEe8pz3>xP zd@fuKT$ZNtjfo;8n~XgdMNxm8koZbFhMp@5)72072D_klBIr5z@}2;&1^`i6pvh(C zD|u)yGT#Ah>TC4^obMGODYjR|5kg{!S6*$L2JW0*PZcjH@#nvCakKAyZp`(&+lxR$ z+LRpqd$qtd?$sE={fo?(E6E4}Y5@TtHR*=UX?&3QXMiyh?(sorsSo!K-yDo_P1O5uaP{d83w^VT$H6R%!vV zbHET1e)G0#qrdTR&#XzPugwT{zRpj9XC~TX^B9WZKfZ?3wHYr}CqpLr?*q?lnAZZf zhbn%0-_*qfKSUcrd&0B?{IvdcP<}q@!v3hmh0H#h1E0wI@O(g`p&N`=icFyV=Oowp z`CB=ySH9=W>-u@``Diy{OoM{|DMzgwW zOPp_MOK(q(6X7>u-m9#??#0*%u@+p^Y>a@wvC{s)X4Ux?$=?hB1XMFrNxrXPe8Go# zV^SpiYN%-2i72#ry#$PVJ}h5EA){V^|2Z5!Xp^fRC*X$>OS9uI#S}->f9$2XR7=lA z(=WC7aJsbc5JFk%r>~7;K%1dv`skMaG8Ci z-ziVZ4If6e7d2i)`=5vp3z6acb%!)Lcst=G?Sg|qjttbd!p%y?XU;{&(05wh6BZ;` zNi_!0*dWlqjBXc4Tq`XB7#`*!s9^_kC6cgqQ;vO%GoJnZM)Ix9JTnH(l~z7ikx>78 z!EYvnk{)_MdQog`#lUrcn(_hi5Z%KRPC;TNzupX6hxfl${s~?^n@{q#XEBenB@!U> z_JSOGL>C)VJ{25#E3VL^F3PZO$)6XB7&BZ-0sRP|B!sx`l{l+~03s?W(IEUxi@5dR zE{{@YKu~MT6)(63%G+loAuW!AN^ngvz~aEmN5)Xl^fE*~V|^6-NJkavvye{4wQm8Y z$4W+A-X$3dYZBF3$-OAwK;UvUxBYLd1M=kwM-y#{yX`ckUKT>}>z6Q~!F{%3nMQ zUNS-7jH#JlJ?rFM(h-ivyj*=JSEece|NO52Hu~QV=M-DwEAZ(L5=A~(kSOM2JZ!9U z9)`1g3`C4muD9_fgPsXazl%14hC&Cn5^?|wC(LD)j}-)l&!m=-4+*Gh#Ty~5DC&z{ z7U?Z@fFSJ8!A6?=m4j9bDjZ$-^2)L)6_)!~RdoS5_;ATpQ z%jRPE^U=^m9uepJyFZA@By3B`-Hgb=1O$=FJ0G_)e)#MBD}0Q$&wEHB;2sg@x_nGpk(+6FkDokGD&iP#92i*Jqem+;=wduTg8)8X! zi{EhjgQm*oWiSO6Zh8^eA)10qeIheK4rfl?3OF|2-_TnZf~#F$?06fTc2)>fs2f-n1%xQ!^! zQQaa?Ly4<&>{EC9J|u?eCtAS&upAFOcHem%K}#Ov3W2TW_5!N8lU^3JyI`8 zh;MH9Qy9%Txtjb2`v9zqNW$(Gvv7VdL~X-ah83e)mM0CgKlM9ePhC9BIB`9A05icq zf1>KSyC9$wV_?m3cpD2&NyZn}bdQ%N@r^x6n$4(-R8-Y)s8lsB^+&8P9*3x<`TvA1 zpLaCCyv(s4{@7LoE+941oT;7I%Bh(K%vysfkU|%6@Y)6VH{1?j7BgNJmc4Ysl}?S$ zPyxkq=1rHb?!bkmFqf~}w_&BLxnl3E#WX3?VZsEMvFYe4mGQtT1@xo97KSO;Mf2?y zwjjVO^E5Gsn*-a=f*PNPj%7Yb^-{s4`CZJ2@Dv9nOg%G$Ss|eY9}hg zQujl>HYe3aUKjA-0#Fn7`+fm^~$MKni9R7|sR&V5LR(}Kv( zRsMtqFIPWZ`}*+%{z%UY=>9+A-92dsC?oYKEkf-MYA_0QYj}|Vjdkk!fdg&b4dcGA zAtnc@4;!cQ*%2;}Y{ZHQp6M$|#gid(_egIA-m+BK6?jwTVuqw2-nE#;q${IzB|`&b z3>!|^)^Kfg4C6~hfO*pMLb!90KAW|~d|7RGa{mg6t~bVOI&NFJ(f?f8(e zHnGJU2d>LHZXpo# z2FeHGh2+GyPynoP0rBvjJ2i1RbNqNqTFwF=91m))hgj}k%o4p#FIaa@LjUWv4;2Sl zM_o}Z=zn7~`q%;Ii;jTIw?N|;Xp6Y4PK%4a5?$;tciW2@AfprNAbqP~RTDav#&)IG z2(o*N;=ao1@{STpn~#F`{v$@9N#u7{`X)x&F@+znywN>|`gKIVSq6|QD7Q`6snk!H9QEo9@qyyuI zHH+73jmzlN7r6i0aV>eG3L%=5WP&#=ymgphdO21vmmd|_aHqzrUw9x3=ok#2mEa#C zL85IZyKj!tjMtP!5ak}N4a7>-599dt%xj$7*UMdcI-L5$OB|H8Nb-NYb!-vO$RTws znYPWGQX(QoZdL%{HqZC98K0EIDYqOTcroOVOrWnzNQsc;{D+7{@H01OZXgnNpbTl- zD?DY?#mKqIvSQK56IA|UKnkb=6j_6>R&fz7A5>PyAz}LDcxm2V=tls7Ij@h4!w2F2 zrWGQW2dCw$Ur3bWl9&06ZU>pTz}%ruP@ZT`8Tue@@zMl(@|p9BqnmC6hG|lJ7L_OD zo|X@LYR1Tca8%OC+?<$YJHSOu^q(Afuzda=f+x)&W~%>ALb6&|-Jm6%r9yD%g=+L{B% ztjZK4#w=!`4iU`!>(*Ytfx7BtOxj*DpO!I6u)sKo26r4e;%6M+Oq;wh^6mHuP-i2+ zi>4A>=m@5vq@d}O(=bIu_}1WII4^Mequ5XkAAh;Wv9^m5P$FK_`mYdhlaxK%u16oY zAmL#In{~m%K-eKp?8T~;-&poUoKQ!A`Bk1Ut(hhxaH-3j!nY+oacoqU>34fw`Sd&$ zkDZZo(0sl^c@R>C%fkc6bWI%txzzlI*^*{Nlb-`KCFY*wS7Q?-!<!cu zw)~S~L@p_d?5RBt|6~A~OmVlGJ$)h6=KQXoIRK?~zQ5wZ`^VXM!@Qty$ z2ef4c<$vkDNJQ*3^;y*^B`nKzj$pM%E0D4+3}ZIB6oiob{*i+IIw_nauZX%8P|B2l zA*CH0j`tMaU#-J~g&{`^Ff$^;AnOOV;fONDI7)o_e#dJJuD_b}e1r4JEz?3Y>Tbdt zFwc7x?dnMFlpcM-h!Kw^jnPJJexTBPc$@8bv9pxP`u}u>^&B$UE((c+u_>FX-*5KJ zAIU3@XTo?rvFAsftO1dW)h*-Q?dBphc>zD;*$8@2NVf-mz{7ef%Jn+wpHo zc_NleQ7SC*N(x+TLH)v$;b9)!K`kO9MzKv5-18h)AwqF{`vr7n4@2wGegM82m4vQPU@ zaTY0hs{_xATyweXx|H{9hRz%BJ^qUcv!+c#aDw;I@yLgeC%(F1lLwy#PDpC8&)>03 zOhd;P0CL{;si*;h8VGqXvvysC+}~_pJ(b`6vgy{6wwWx+%+X+_LF5?XfvhhARsm#- zxjmh!c-CV((d^IrO7bY+IbM5r&%Uh&7x>2q=fx@s-;EF#9fFIB-DFg!WV%eO|B4jP}90?~a263<^Bxy)o?;uQy( zI@+{%*z_tIV&@k?X`K^zkzEwhh}KDg_u3c%0X;2Me|_53ezxo1(|d@@O#bO;JA6X> z=~ao_dW_=YB@Su-mp=Jd)wiB$Re-GTu74<&gEWM@Temw~4#^84-cpDd{W;o$F9tSY z%Lk^Zb`tL0K^Q?21vXO8oy3&v*oHtxwbF1%jyg5)RZbYXEH}90CmFvkczy6!ThT(o z#D4A3PLiii5>P^KPT_em?a>p80 z*_6Py{F^pAXx&9H1fye{WUy@;q9PIqKs%sK=a`1bj2>2pz`w6Y#l>eFYjV@mr31~*3s6vQTq=Zi{&dWN(GgeMM|N}0=c?L=u)rPKV`E^^%N zx?FF}B_a8PkMtXF9UqCn^+VcwXJSU9MDP=EC`6LvI|(jS;A&>a24>rTknX0EQ6mBv3ZO}5>R*-tTYvy&WIK}ISo-G_ zh*+AWG&|K;_=-dizOz2Tx6Uh+X$X##5>Sdn%Q7GrBynOl{gt)0Q=Uvt;4|1$@w{e? zlf19UkH5D$$a@kqQ`O(A?EmeMXGYxjM;9k~C)?qzyi%!i`xk1<4H9h1?S<&g13Jv zSOkK`7#@5_kFoQkY6D{A8qd}&#Z*VasnT<_PzomX%s#`s4ObyghdyqJ8JO=XnUwkuwoW!AU`p~DYO7MMt zns}55@jtzSadw>EuiW&MY40>RVAzRKpTuTUVw?M#Q?c*VfBVrO5oi&3#X%u0^9-{gd=Ik9q>p z0Lb<&Y46aN7(O$E*?cI`F>aiBxzNOKxP?kfh37U}_ehgUQ%aENw@lBi+#40}*KsyB zsi~~Ngb4VdX^sW2i0)%cEyD9bs=!W93G9mOh(G;WOI<<67-gnKnl#|ro8bWk_Chp# ze{chm@v?Y3@1LDET^`Ckhd;3iRjFt156zBz5HjZV{^MEe2ba+tD+@~@82q5DT=pSK zd9Vc~RAws?-D7vNO~ge~T%)yVeMDbhVP*`L-NGRuUhpI9iy?RF7rnO`r6%8$M~uaD zvf6!kgls=>bK7ckml>&lEb!*KG({73*23M2^a|_b8$P8@zKUea_sRI!Z)$kX;#76(iYr<%&szqQw9SsCiPlWmKQ_&U-p*7M{hL-AeS?`^|218M>2L!6%0WJpzJ2<&MWSs!D8H4O_9YkB#-uA#rN?k;U;m=k+HlVD<;hb{hx>%NCVOLXSZh}gIl7a@_<#jC2{1PvCmvj z?TDIY&UV}tHfH<6OMf-BRFn7?y5~f#)`hg@0p$@XKg_m}Xzvm;$e^8GSaT`!)7*jXjtPxg^pcgH)jC1yI@Lf$Devb$-0I~E={_!&&8 zds;kujGqgRcOV(T+ZjYfGsi_dOq?tXLY(X=7abMx@%NfJ^^lBukehxqM1OTsYNP?u zR&dyY;^(vbKx4eLqci{g`4zEKr`K-K#|qWEGJER`UqgXT!<56TPfr}eJZk;6!~+y@ zzc^B!Oz0qNsiNG^oGgr=Ic^GL7}4CM431ufCyJN$JXD_P90puPO~_lwcY-+In)|VE zT&Hy;I1?*Az8Z!&32~g2>Yx58^s`_2?!+R&S#L8{X7I@>s6EY?9lx@=$uM zVM-nAyfA{(yh6#x^;5N8pa+kX*G`n4ninY;A>gi%*Ua$n)!BIR21516|DV=H#jgxV zj%e;B1IO8JuVeHd^|524MHbgQfyiL|xbjW6pzh5|DnzpSajU-x)X?1g%M@IQZaPf1AwGx5Oo=)rSzlH9Nf%As1@4sB@A5f6lr3 zzfq$p1x^iVU%a}a1S(mDT&S3bH=3a)V}2^gv$t79iMt3UIL$YCoRARvB#O)P`;A&& z-5dwK6Oou751w1nIa$&rPN5WU9`$;MoWI;)G4>lP|ed!~ZKe*9SepqxQ3lHBKlfG6L$k1JW9jhkvK9oXjN`i-a@PTH>6vuX= z?UVQ{{0I6a>n=OwmlNYI`=CFBMEbrc?nlun`jwN|9Yl7~T94y0IJ!aZ##`t;=Oevc z^z86L(%au;R6yB0oR8OUhNg;Z>vJzHDf+)0a2|-DU51Y|%wE4~JM;oV6a98ICEh9{ z-`(xd5)xkA{ZV-1TUQ_bly;?wM*57MZc=2I-dTh_TbDL`|AFIKH+kpLR26fbE z4@Zb4*|IN}pDN-=05*hNJp%2(!8cr~cqs_dpPOkbV_X0)-|V8K0#R&Bh<%i`%-;N~Y}vuhIpU zopt{`f^a2D1DqWZDhb2Wzg~iC%{r&U*KmVeb`LSX>gx4K%cx7I$BSMRh`r|2w#YUq z+~joGi-FTEsa_uAvQa|!Fj1I&!JV&D{cyVB#H!48=@O2jCT^0&>6X*^818%q?|EQ~ z+b$ZL3ZrKf+H3tKVX~j-u4v4dJl(LP?$nXY=*H}3C+oel$P`N`vLi8+>P5UO;iNYt zOm{67bPr*v<1&d2Rinz*tA1>b3|)#NEW{}aUCJHj^uoVR;Q2Lt>6~g=w7j_ijEgJ-0QjdynrBi!;vW+~pgl?WwQXjlbgn-!bJTS^5bsGQvmwHHVU(ji79Q z=dT$~mC18u{_b5mCo^qUM zQA;o2Dd{Oe+K)O#n3}~^{JQsJYw{Y0h3i1w$x>|cMNZN4j;HEsWLBe+5LA4EW19t* zF0kr${~q3XJ@BcY07^xjcBZ&m2kjXM48y8V&bNKwINNY^$X@8pX!wv_CXRxb zpWug-L$}fmAtMDLZcXK9!rpT(xhB zHWpUNjur)_Ox|<&<3C0e3Xh{^{^gLcXYru?O{zq6x(1#%LXKuZ6>s@V^v%{~wa+xv z|4kp~F4ne_UfM%=u$eLU}tzC z6+WE=uM2<>nl~x$S&saHQXK8N*^80IxMV2jTyph0i_bPM$lnWFR3_gHc*l!c9D67} zWnngA_(BX%9kvVuEVq3J#a;^AmCN0(JaOjYo)jk%bSHqH;Fp?(=i4~jDUJ+*3Dta% zRIqTPSd@_5>KR^{z$rBY<(6oikou}}NqwW%e(;Qo=I-l}=Pk<2xY!{Ik-xR>Fd4eV zM3YO2PA!RRZ2w>@iKmUgLtc}R*##UyY@~n}NxOtJ+(29m!PHlN-4tVk@b`7V>?+Ay zL{C|{97MfV&Ib*3Bw0YHe^x>`E0QLcW;{r99Kn-8?jd1uj6@C#D$z1Z^ARgLoL_GX z)Ej#7xo|#^#UxF={77Qu`63I|5NGp0GVg-rM(u`(!GC35ToL~79QFs%xPr7kgtZ5! zpXU~(_e;XTU8Vt!W(DgwXMh5+{%-<|v4;0@-8msD^EW@p$$?~%*)}th={nP6fFM2F z67TiHM}^ydVbPYMvOdH41=#~sTrE@4!o2Y|-WFnq!cQb!-zR?pPJO(%ZA)yv$rx~tu`o~kV#{W>AN zew`KthHKTGGjr_{@khqqFoXw?fxz*#K?^Kx&u(FF+@P~cw930`zRi#GDV+Vt9nEF_ zRj%CbaGmFpJd{MP?Ez!Pni2kdXr;|V!Vh#fi3I>h9V z19Fn$erA4$V=XT)Fto-Qbm&**Hr<`)yY-~m|GBvX4*r0g4E77B`<=>IRXd{yT|R5D z6Yp{#Ahl+!5=(TKIAnKAt(_1blpmYwc$D;p8FxxUt(IH|&Xyy5itICSyiOAR_g=G@ zO#O0L)wMrKh0TsWIITIX&|S-us(4o~vq6;oli{M%)bV$xDG#s$&aWpGx!at+OOdcQ z79L9Xf9DGPce3q7ao>8JvAccw8wb;nSrK`=xpK_jI7oX&bymAvtGfC#3$D6jW!%UV z?{RYJ>#$&8V>Ax?`h;V!^EfP$0PAdJ*g>{Cx=G#fg`apnlf%9r<6@MR&wSTBO5HOq ze~4v&x~(}0CC(}r0udg*66G*QKXY%KZ?V^H#x_^n4Nq+lX`gF=QdTTc{`$GX0`nNs zTRLg1S|j>ZwZynKqzdnI#j!T-{K00uvzT3!dfh6mcqCA@qLI`1nW?|gN5a?uW=|@w zIo2m;hUQn*?-S&pF_c)tu%);gx{}5D=@jThZEZo-RR>);+e%M5n>ma3DI6>P@vz3e z_U5qh&6gwy#@^huh{f0<<8=ym^qEI*4*uU+)=QN)9V>3mCWoABjU#rxn_?Sgo zqxo2OR;ZB7E)S_Z5A}cx4+l5wdu3MDTeGo*hxxh}>-Y+f-%Z}>RH_jL@9kQfdm583 z?stySzi%^wxt|r`ZDF-9mwM$%<0|I=u27V)XRY1PI7AQQ!W%q>Kiq+LKW+!MopXGm zIFs{NerjcS6ZHkq-0G*+`h==a9#YiuJP8MLze(dKd>G3XH2 zW^(X@zxCW0=|EzJ<+n&qIP51RB;EY{3-1Bi62W?FdjCDz10>4??2nWDt;j!9sRM@xz~GSHblFmAxfrVLnCOilCDe0~?QX2If>zFaiffXI{bzMR(>i2| zwDa)x#BuT5?SD(>w_c9p(RYsTl)3Y;Bh1He8EB<^C#==!@Bn}SfTE0~_P1aFDe;$^pv`C* zB>aXV5Uqg?6-S#`REJFFxjFmAydmy1h)EXbd-Y=I>a?C=_l7!b)}=}bvImjcz6$$c z`$&a%dlQnq(kgRKxT`}ltC}T%!8>}?+RKp@dO_4jGSa{`(F$odN^ej#JML0%^az$* zWk1+~c|lZj`dui=&mUBqU&Dc0%&;JL@kWs@-{fvfX5caYXOFZsmT0Sf;q6Y5cxT_4 zIEcbZy4>`gCRI+_!$9((+dE=+41(1#SN+exKFVk}G?HaETpsmZ4(rSr6uUJB>+>wG zLcxOUMB|VkU(K^pG3c@vMe8DUsmRc8e?{T}UWB_mg2y_9p6F%i41IwEwZSCVP3^cW zmnn79##+FWq|r?+^`z=tXQpo#53L|q)itjBHu%|ICT9w^@82BfF&X$I-CFolA^fJs ze*q-o^loT{<)G;2B=6CL`=z~J>h4mcUxKA@k%_wh0TNL9Z;7Vv@{!bYO`DMqr)Tc5 z@|?-3{F-v(O$r7nvn6o|`>*V^WDJ2opseIxssk2o{3OI?t_OX5y%O7kq1aRx-?o^tn81U(V>IyUtnibH$t7e#88&wGmA9fpj>)ob9Z*xtpwdm606UqAt|yH|bvQd@3zc&q=e;_%XK6;VNSU#i%qbdHNU5*~Ccy zK;~uDuk17AYe^9yUAf1y%gi~V`GPf-;HRCe^7;WEV&*sqRH#$>ZfGQ=gXoP4_vx=&TjP88AYJ#IyM4zB0rK~t=(Oy7bi5oFz00$b>K}NXL}YC1 zv=J7u3&wFiLEIe74$_!np%7y&W${#Yo=1{KVpSa4i5dWFM~R{#v}EcT ztb*kVFZp6T`ADi1brMf3Xt-&BU|0fL5Q>c-mZxZi9HA%eM4iS^bWxqL+qgoL)&3mp zzd&U@i}Yf~tIA-8rWBiR77N-Be8BCfTbKidOrmvf-g#r}kXh#*-Jq3X&tKosM9<{( zUSt1Ojx-OdgcxdeSs>6j;zZC7QBoD81!6qOZD9wMXt*92hcmZSV2TptMG7b(;?L!C zs|}}mBb9cd&MIQXd7lz-ei6LrZma_6UHx9`vt&pAD{%6r9_WI6^eV&~Xht`HMwuBR z*`M)p!`_%lYmpt1G=pauDXD>Yq@2gvi*g(#o7^L~EX)z8Ohszg8&4MKL`>ogEF5Yg zFUE@gNKUfVKv>-kmWsdWjtEvH4qFUPiM7y-r;)})2psXa*XK&VRohL#vU|g>MA(Ex z|3%7l&Z|QH@m)K%OQd%;?ym$?v~-ghBCKkze4_z_42U>AmUEX+F|s*V@05f#n7J2S zE?0%+Ok=^UBO%}?qA)Tl&!y%VhaO005CM}p#Cf+JO^QF=_evxMRbwq-vN#AaoTopm zxg-eSt7?Xf1{JWpQbU{a2uAPs-bRo_MhpdQp!rJeWMYCJ$a-@YI20IR zyzwON<)M&aQ6^vJHd^U3lCkG&Ao9Kb+UJVR9idbXE1(-4<6;sYa7~4L1~!)5Lc-p* znw>8Sub-2L#hCT7dCQ2Ot5eLG_UhRv3_qOLTSQ^)hFc)Dm;-`tUaTEhECZmgKxD$- z?!&my>4+qmRrwbmFD#A`L7lG@EueVExo@Cul31K28fK~VA1gO;R_7zrf9t{u*`(Kr z!N70f><=_emQ7SKl3!43KYXhk+e%b0dy5i{-Q3mR z+7kw1&wXM>Tz`+bK^;wiEDyA3ivcNi^16AGEqK4aWvU%7LKuH8g1PkBvOrW{>hKNI~`sircFr0 zsn|#yU8D%=!=1AlO-ps;DIQYU%ouB^KMyXu8srLI{3J4%PA-=k-GITRULKDZo(IOv z#Mn@$s8-W%N>^h~62UgF%SH`l;KiYEEKsxc5FJNSf5Lp)k;T?yY)Y!C9c4_8$}?XoSTOQFNr62s6o$z+Nv( zXEyv~f)UAvR^XK{#+KPpn5AGPcbd8+_z%S%5#FZ9`F&9+wK=xS$ln2INAM-+aG~SX zoO!Huwg5Bu$3(@N1YxO22B_0AmW9J|LWos!&YIj!^dL)WBgbteKy-qWB8_lHMwCES>K%CV1NnSz?W<~yRMjq7Oq_G~_R@$=m`-ybd*L%Yk$ zYH@DW>vcKI;U`Rsxh5Eq9WMo}6XI%?L2@;bO`$bpJkjBjUzgbB zF_6jFL)JFl2WyK?Yz4Gw#txybTr(5%pn}KuHt_!sBDZwC4Oo7w#(tJFZ0A^t60VN@ zrfqTheZ#UkZfS#w2TmSpri_x&(K?-c901>Vwj=Z8t|>Kl7%2>VI|Bv1X~);I>2{+w z_QH>6wr#EeArgKZ2LEQBC_-SVXyjD_#++tKo>N&(AhAgVEEz(VKe0Fs!uGCwZs$|% zo{KdaUGLX^AL)YkU&?9O>?p281Es)#A|N7-QLCBIUvp8!knX<MO!qf(ls1wPi_KC~5<;gWGZcA#e)^vAo(OnY8OfV2*n}ysa$i}E8BI5=i<*o@ zM}{2ghE!U4_UTm$p3x6PA*1&!oN^10z7$~anbyBs zadfqpdGrXFe2an7u*ow0E??ntv3f}>>a|~;AqL^YxZmF`*~gL~)O6S0CWi$)cS#|H z;#Fp%+hu)=9J8X6PhMP0SH-5yeU}06<$O(UaZ0iB)C0W^@BwpbMul*D6|svoV2EC9 z&|O|99u}@LVE1{w^NE_Z(>zMT&yo6O@rU!+a`*#^!43J&YGp0PO*PjKVm0DWUOlq{ zhnW$^htCJuAK7NI1cFrcMx3x;`Rbht;cy8Y=P3*Kxe>SPYL_~M+Di0Mjkj8L&p!*x zMQZ{Mf@2%fbGgLb)i+RW`9m$D2~sVSEnbFB8!d#DsKQNO^cPRbYwCEl<%G6HmPe^wNkW_LLe%$K)MpNwP1DJ&inMDt=FOU3hedsv zJ~pl$aa&x4G!keyRsBRd7I$pY#&pF*6hVg8vpxK4-_UB;&eIhfX^QN(+E402WR0H8 z+3NPxbZGOwGgf50>LIn0#Wm~B)1-pfII_8x zjJBy>{pamr&zZ<0AM zM8&R?{UB<{<9Uzv-@N%B>#gP+aW17sK1OhP=;w(nT3Q=vny(X|lm&$ekvSY^h;|4dG4)5EA%(Tx-s_A2{mrBqC}QIHik&#uJ61f4k;Baur@ zOG$x}qK`E1dmsh?SMeu-J9qj3Q|0Yymew;$DuB%o>W~kxT59WLj!s^qQ!$;F1E$_&a8a=RbcEe>OU*!p)5B$n|>y-s&(sJQrmF?UP()2)cnHv0lhBi$B$ zdhltzTR|$~bsbQWLQ_}1{1|FV8~0Z_j2}NN9!H6!OahtwMq+G$7oTsxIq%4jpMBh>S%#+D zo@-8>uGD}t-QEr@XOW!d6mX9dEx?u##u8WYaN_B|vhS^PrOuVNDLXw0Rmew`3dNu% z{K5>Vj`K+xg1tyF5-I6OsJWFI?NYhP3a+?658T}g2yN#2q@BM7Jp97r1$L3NZgc(BmV}R>5VzK@=i{eHn-GL;cuI(pqUJU~U}vOz3GwD!ZSMmPM)8++<0@NBFj>%o>7 zmuE-;k&H~0tQ-qqSAt~`>&?I(hL~EeDsLPaCNeK4g}yZLyy!qm?BUD+e>C**=iYZ8 z6|ydd0@RY-;at`MsLNQY(IszaTr&Atm4G185d4s^2fK{NL-9EerV6l263&5#@0?)5 zs?k4|VZgHWC67a1k;S7pQ7jnX%ut*ywSf-h<{P=9XIcVb2oe;aqy_W5UR!8}!c;zO zDCn}aJtCm+jW{#vzj?*Q(0+YEV8d0g9Q!wX7NWqm_UiY4(!MJ*nVevwdVfvodvq$@ zJiUHt8=>Y}HPA@#sq5^Ivi;rCH>D}!7jzQ?mIvDVSPVnkc9@-@*7y@R!VL!kkWkY} zo8vR7ZpC4!!kds`7s-YdP4@e;P z?rrPMP@qVTA#=92;pLz(RxRR0ph{E#?=>OpikyTh;A+{Tai^zG)=asH9iQiAU*?5k zz2T`60$LGf#@%jNbQ_p&Y-LvK#sPMTdzgd<6F62F>-mIp<26*W z0;~*2@Kk0y?g<~e*}Y%fmaYsKLrm@UnwMvGcy+03ps=Uc7z;~vyDKeUvmD^pb3XMx zkoFSA>yk81Nn~g;@m1YGrs1 zi9Z2-A}9pUW@0*kLgr+W18nEhl&>5e<4;Cko|rNONK`Te0aSkP?X( z>2FmSgNOvqN}Zal9PpJ~f&$U>{I$M1R&VkRth8!`uA(05g0a4 zY8P+PB_^7W&e1JPUcF}z2BuIAMb%ubf5JWf%nRY~^-vBZb7^Iy&MyZl^?uvo1YpAi zuEVFc9g}l)Pk)9*GN6}BkWS?;7Jg@5bxQgMbZ`eScH*Ctb!ulGEw$a@>x_*p6-yQ2CzprNHD$Wvx5(csrB%qOr3&W-u^=AIYFiF7ZlJLsG33?$! z4`3)D@k%V)be1q^5JlMmfJlhrWsxpvTQ+K0l|u6KfM@n`g0b8pZYa^jU%AfRx_IIv4^xhC!T+5irahCii1 zp$?+BM+0pTqzg8k$ER0N(g6qGV!Ux2(*cqP{|G?uM4G7659>Ap7rk%Vi|=-S(^d1! z@IvJm@U2eIM=chc9&l8CmlJta0}5;e&rf3Of|7vJ3qY+90FPY@!_{`>i0~-;)34ZJ zz{>7JUK$%`Aeet!aghNsf1j?R;FKz!lj$bUdJkG{H-_{x z0mcBudrJmiRR3zTA2~{u28f|YhJHqWROo)wZ_$tYq9T{m_2yG+^`uturdDyZiE%UJ zHJUsLUw)Q!BJ(n6wR{`AxkYzw6lZ7khDml=*$r!#YKiY_^ceIKc%5{o;p}%9(S1Ei z-K)O+Hv8AHAf+i`l05NMAnLOJi|D<}!SB7Dr2@yl*a-a-f4(vJG>Wx?qKSUtQA2H4 zuKsBRa}X}b5a$n2Tveg8swJsr%+o`0WHryr6dd$I(O56?gF^8%Du0(iBnGjn;&W8l zh5hn1acxld-bRgHkN#u2`$2R`e;Q?aWRYL&iFTnf}wB}hYVf@RI_{wmRe>vB0$FRk4TA`XJ$-OiTcp=89AcP3uI_DZ-n5b_iC+P)XQ+_#ATB)6It8mjNkv_ z*0R4kmh&CaPxw*vwsF2~*Ls{`x|9^?t`hi<;)a;h-`}ITu83d!SVPSy^YFr$xIohcwkG#I1XUrJ`)!dhxt#oUe8mnA z{$ks3-G3{wSx?7-PTF^7y!kQHzjJ5L?YZE);H=0vdB0sC{^?iYHZ(8u?vy!UN zh(2fsuvX?xozF`4DBfA6Sz9&_utEYMsweh7z>rxBcm(_7VBW0N0jcP@Ugmg?YloT<(nM*vt?#^|ZeMMu}Xp#X1W3>)|LV{8=dMDxcF!8Mik z6ZC$F!|1S~kBCQLfXZ0~0Uq_+RdNwJWYd=6-mw>6IN=p}Q(@l0c<=#mCdYzph&aY11&`@zLi9=>fok4yXy(x;wRgh$zXOxl z7Y%ve9Q*g$xGI&RnNQ!n1E4`mYzVl~=3^kT@gZEAq0vQURm|*! zcTz3Wc={-}9cMR_jpw=)tu2rB5EvBYvpGaJd40q)i#$KR#NP%DbTkbI?LA9!IDI(Z z?YRAGr1P$HNv{Uky-{j+j}Nl~FzP>VMzyNJ`NRJV+QH2QG^Xs|2IzLL&Q&3S=#gD{ z0d0QjQ!{Rx3&_NnPrU&Wh!9G`w4cTzne4j7v+{!!n$qW|x_2>16OM#?OX|7~J=v!? zLyks#Mg+r)3eBNf7hYmoT6VfxJPH$B62cZ)Z>T0(H~Rd%zgrn9qej(u*ead3Bbqk| z`M0~k$y!|LPfGF60VmYdvGv^A0Oq7dk?AIF7O8UT`BAFsz_#Zf-`Fcxj2YXxGt!+H zq&ib02fY_VKi`H^nZy3cx(#zP$O`_^_C>whqWi~>wb=?hH}v8OXZt?AYMv3_?7c!I z%A=TH8y+Nf{bv@P@gFz6Z?Y2(ytv_)*igMG&JN*MlHX#TH}taKac10qcXa+SqiB$R z?(?$Ay~VQ?#9+n_^9`KMTtjwU)b163LPFuIas)?3bmdFoi3?@e_%OwU*gvM>>9TJu z;0E=Pz@$`cgg4>aQK$e@I^{J zp!!4%p+kTBt*{C~Qdg9Sb-|n6O84QV_J_MyJ`@h>kXB}f0foDgNsj5{pBX~hjiDv| zrsXm&9HSCLTAXP&bVhO&6VpWSp1Fw;&NH+9y23%aTLak(5MUubFf$0`dMe1@NhIBj zB7gR35f3>IjW;`zWR$WxutWikvmDL3fT0cl-baYae_l@0tL~?o3zZjggw|PsNPq0j zq<})5l&Ru@rF)ljui<4$U5Fyv>bpP|yD2_7qq@ZzlW4H|5~@ zYmLj7)vg+uKV3(`XpY%r9FMs!s2)aMcY^o)x-ZaOBA-{G(bZl}h22NNqnUQwCq{s{ zqnF~fj)f&u4ps z-J!}i4$bS8?mfQjpR~8g#J_g6X5&z`NxXLUQhq%%Qg4=Z+(e0l#!Rz^_Y{rt=GrVKA^>r?a>ary|x6 zJcCQ@ew0fKx>}reE+Hiqh09}yyzp~0EHELZnC1h6oYzIk7WO1=h^z{ZlX42Dm>eTS z(YR6EOx!uaU-Y5%r7wcX(O0EfBh=L=DO`tEu07Aoqqq1sBI*=BBEK<`IL3wJB{YOS z%|Ur22vjcg`)LX(7pC%Emf74Y%nf4(RI_5CQD8Gp{K+QD8S#Zb;L)*;mXp5_>oI2$ITkWFyVVv3yU<{#a9@brH0%{lzw?K;j(#PWg_^z z$!}oyYwZ^P>ig51lf~Bf+&tKbP^>xQ?5b$9vy1 z-r+OfZV}hBZ-4AOx`$CZH}7tyg#B$Fjo$39hD7gM_^*f7|Mgyb&$L`<=M$i0TyI9= zlz>3j0J*vm%pQSgx-2Vr?}A4!GN|H%Fa_i^2p`ehj7ZW{>D>9GWmO+FvRxlcx3iczx%}usHxf0xHcv)Bbq_lU5uRI3W+& z@+FK_NwdW^b7+~N+L#pw#$iDjso5ZY%HQ{7=SWB#gt)#w3T0Li7!%iieb{19a16|Z zr({HZzFY(=B?4#(fge<>@~=iTKX?p&rv4<=Uv(`m`Er_#2KYYDR9R@zWc_Q5+GL5F z%GuU<4owV(ZwF^gcp31^z|S*|OZ8c@z{Aj=07@bbS$JKfod+q$pQj6#x-HvTj8;Rv zyQ(ER6cajWe^eTnX`hP3bs7I!f5n^m_2y5Kj+sUr8_Tfzl}@ZR`6!U{xY%?@Qz>f*(U3}81eOPIQf}{-o1DW zZC>zuru`P*oS_tcY9hMgeQmhxu%3Uc?jUeYd+pn~*+Z;3AISSXu6O=>wS-63(JwNd z#l>hPMwccz1ic(2MlHu1^`}#WV?NLDiiQ^$sOcXfla+As=nENH#X59o%2Po+)hq&h zq8kl=sw#+RCA%=z4;)J9o8_yH0_2gjy8iyP-7xkW^m7e)quC;d%gLAs_O@|Hc|Fv! z;b6rhe(@>l=}+A^(fqjeE5obLcm7i=Zg1~1MSgoK*Q5?l0V0nR=-&lTp8{H;q~z?~ zFV*q;yl;OccAL&#%f0%~d?mYIg8eZ&q0}meWg>5P-hbzc1bk088?0ukrbQxfE?p85 zQl@2PgE@~BW?|9@M9;~TNG#dOde7^0cn1q;*-f2~#XOU;y3OOZUP$HaSnfefCp9h( z1@>-dl8nMe{hnHDxok2OURyE}72PdXK{IA1gXiVaA1R7aO0&08UKxk}B7apA$KEs! zumxHMj|do2hEt1SgyUPGlx|?93n*M`h2h1X>dP(Q96v$~ko@S` zwZ*2zefIavzw~*P%_GxmHSI06>uX~55!v_3x*!!)AqWJ}^RyJ1Vt0Nn!G|@-Li^%E zwj?bsn^`PDLBV>QmK_sLC~ewBLDm3JS+M(ScVhgdCM?05-w=Hb86 z)^8E!-%(lvO%gGV$(%(Uvmu^p?J>eM!?5xZhSmrESgbv@R8rJ9OZc}{U*fz5wvO7G zgn!i8sIs;1)aG`YhF_`cWbCXW+#F24d0;c(F2!vMq6iip5p=EJ8`OVJuTiSfR{XNGZ8g59bIjQ_8(mpzEj zEB`~lMBSKQ8RX@|X%0P;B}VNFuG6Db5i&|G=dE+h@Ex2SBPW2JG%rXj|5ud}C5`RH zoPP(ncV7FNcO`i%(^N0K{P$huhDbYG0ndVGPBB-;O`m7>q25l)ahrLUo zahr?v^qOAdp+x|hWKwVZ=X(~UShV7ux#D-O_|R^2%IR`3_eQE{WJNT0h8&uY$o?V* zR*FLME8_xS{6MAksSGA@>_N)>=7uc`qLdZbtU$cDz}iC}%(Q)omEA!Y#86dc(iJn7 z`O1LFNlFDMR;4igx~>54IM6*`dB{`ogO+~(@4qVI@wdm__?Vy(upEDsVtEzVVV-hC zMmrAWBrVEw*0=&Gahjg*595lw6m7i%Q|)2oMMvDRmeKv#8zidC@$c<2p@U&G1}st^ zge&0<5_pYvw!sG+$e^@FKWM6^KI15YCMUQs zz(=?Ic5DB-KBPS}XB28Of^R-(*L1@1Y@;&3w9&c!wWCFtw2;ev86TQC=7%@7==lN` zjParRjM60r%mYoXfoMZWxN*?sN7$ou5|%;M@kr#@4! zhk-rrp}a35H;Ms0ixI{tA5DsLM8uHo>qmA4#K=8YgYGPdfr;k6;S$;R8druMOa&BI$yG%_}_T zqCxbbmg}-Y3L%m#3*K4wt9~QJHrhv; z2~B28%vWnNxwonP5t0%}?|f{sF1LvIaPKRa4K8PW?IY`h=QDOOa~_2Y+Zu{+y*<;PW;Mq zgK)Igg-Oe&Gp5}cf0n=l#Mqhmex5W>$oV!X3pf(FfWFRR<16iMTWPu}n`3w{Z*BxA zzHf(D3nlM|X9$k)5qk(_0PYA39B6dqUn)OH@x^(HiZNhW%Z8FwBzleW%Wm}26+*;5 znnsBwR?)u=On%@^@@Ub0K#0R!%kz;)4Py+xXGl2Y% z2G2(@FkZ<*1h;}8-Qa;cK!EnrPSo*Rj430AT)|f#er20FwcpWJLT`Ky-{!y zVrtPWh%kx^k?Q_^0ct@3-1F3&#P2Vb1j%>`Uky?FcS5|Ls42YU-N7w(=e zD_ZP2GwoX_x=$dz>@QAAOcf8yN;;|KGf1YF|8(W~D@0K?gSBC94KBAARUyb5`TU2U z^S$inH5p|;Q{K6Iha`ZI4vs>A#Akiy@E7Xpb*T%cfh}gE4t;!@ep%JP)s6%0rgr4SytyZ7^{`;uQ;WxLPVUBE58CbOGF&MU7DWV1SXYOJp76IB>^#d3=eBxnmIZcmqV_wkBT&R>zEDCo@(`vc z9%hkJ3k&W?@eab^Wd?d6y~iJ%Hp-3YzR6!S@G$2p?`#X_>agmU(ynj*IGVFR(oQ`7 zbDo<}#(3{eUsP(*Wbqz{%aHq9Dut$2Fb#4klvK`yFIkZw zDsV>ya)R&uf0x2o%w1M-cPahUE6OF#Nq7zRgZUs_zr>JYe~KZ68^(Ry*H-@X*r6-> zT*fSmsmsHJaMR}?>*C@*aQbZ_G775dqj5OI&RUBu0FFNz(RdxU|EAb^q9S6VesDlr z{@vmG9C}g%oSu*|eE|^Ltm;IEwUdq$Y`juZhyp{(uf#XkdNqYFXUMn*gwryc$G2T{ zsBV8qm}qj(M8SD8_P%~Z5UsqDWV`rctQazi>yG-J4aGLTgpI(TmY1v@ohkjd;B+lw zdlXCT5rSqywRW`oO7-D9MWsZ>Lm&-y2xtgjgTfH#WD5u!QGg`kCriBj|UdF2`%am;7>#&2E4)z==76d9(9Y++OjzsF-h8WgC|cJ<>-5 z5lhs981OY93{XgRQm0BntZc~d+cgkDafzY^m*Nl*RGb`gsWw*z`87F~-I1Uo{LD1t zeJI+T>L2`Hq2av+H&h)Jdi^PFhZGmK}npOpJ_>AtZc zy7L`yBGgbI!Nv_oW`ltts4(^AQW%0tgt;u+G-NSu=0T^@<@z(JJ@Un`>;xb+^X7u z&mAz8^Uax2i@a9!uLtA*cG1ZNY$$Bhy-VjmVdj!WGAp&J3kDMRl?d{ri5f)WegRLu zhD7>|z)bpFbpO;$;56O{hkz$lf-RpBTxStSA>31DL!Rb-$evl*8}vgM#ke+WJ|p_= z&iDmGETrN4xx)&Q+RUu<-Vah3?r=4`N0EQ(@q2!xr!yF|ldkNb4amzgSS;d3{3}@x zCyEheU9Qg?Ljb}%+jt;pZ|rkZ0&&j`zFw`|w@he`bBi4^qNYel?B#25_Nb!q)z>!k z!^lwPP~wbl8{<9zceYw~_BxZc6ZYe4Eg$smKyR5K>Q-yS%pA=^0+WNDJIq|G@+rcirog>u@vB&TqJ=Z z#Z8N8M>SdUV8ImHm3O3rsn zCbAq@IY@yG!hxLTJEL0$CzA#c#7JNo=TtrzX@~ll;jdI(7*@$Pl1lT zm8oCcyO^X6c(Jl7mZ}ig@;^kTuW{`=_u&))=(Or=%}lqq!6l@4o{FF1^3nI4 zsoO5kn8d~GYTqLY%&6H4mSmauZ*2>$`E{TU3*7G*J)V0quu1Xr)HqlyoU6B zrb?ZEb>*dNScyzkEg~MIfe%42;9YZm zHWZ-~|059|ItUYelfpy#ZG0bb+xaUdaEaW5D8hqF;6qSU@Y6-hHx)I-bKBPVd-Ux_3{65Z5jE}Yr@wE!YG5UM>10GsF1IUb4EM;r1TuclEedmN%D|}z5%W|> zuc2OGPXdzKaf`|lk(oE4I|l@A>f6Qkz47c6e+Ig9><{as3sFXgVL2~;oaI4FR^mVZ z){4Kk-6CgoI@+q5{FEq1=$FjjP^-W{-`3Mlfzg*gijSgqsu>;_E>k?Kf0rqfBHE-U%eQ7 zkqZ7m;Y^fxno#-R8?;iW2I(ReUV|V&fYMe{^CAtNdzc|?2l>v`a?7H+N8f?IPMiZS zfv{UwP!p8(>U;45OemZ!PWA0`x|m+e+S@(ny|owyz})<8xFznofoSnlwHX)^PXKE| z55mg#b)eZ4V}%WXw~qT4G)6@}VA%JZ=?jY_f&!Pz6_5#HKOM=2ZA_#qE9u3Omj71s zy{VHD(R%qCt&PsvMA=LOZmf<@{_N`@I>NMy{?vhnnaNJ(Uv>|7#S~l0b!>GrCK&)K z1gm?YA>PgV!V4`S;ksvrV=IST^EOi|e+wm>41Z({s7o#L&lSbmglF{FS`BKxUfy3=GQO4Vjo5vtTab66LrM8lccSp=4*Bg5iIaEPPGp zcv1W>VKUT$by9kstE;fEeIklqlWOqrtm!W^Vx+A}669t-_ghz_jmC4hx(Au>189Yn z?P(T9lZXK!L14@c5krI&APOL3zg}b~j*E5*Iw_}z<5Rliq$-GU%C}E40n@?u>$snh z?e|}wL;d1iq01MxwC<-JRxUi-M{h^BpA`n(Y(_I(GCIwatn)|;IcT}daDgNV_Lx0c zkfBDrS`F{Cd=zBYEY&xWf8*EoeSIimDD#LHpB=1HMd8pjls?DXAFes1oru`~(6Qwe zBdTbw{>y78_=D~;nM$>f33kT_R*DT%0;d#ZLPI{pi+>~!pPNA`9qCwK+_;JAWwpelg zt<-{Jj%@J=n1U2Z_QI(Q@j-tK^Ar@~-mcwKpuv1oH-`D4+f|xiGBbd!rjO)Mv#{Dg zB<-hOmF-*nq1ZItK88fl#}JTg2F4OnXJf<_zC#rO{QgZ-6dA>)rhX2U)v|6#ZSn5u z%YLxMy1|)o5xftaB1KHC43{={%P0Yi@TcBrgJW_6E`9P1FTZC;X&_mDORybhjAM>( z{QGBL*G=n(b_Q+qTl zKqeiQiwZiXJ;iC_=!f@{C3#ImHM~w^59e>_Lr#rR92UK^Kv;AmbA%LhjJt*oT`zf) zmz{wveczmEqI-&|Bw}=lS9=0OnW6L7Z!Iv5xcAK-!=5xq62m&C$38PZgT{p#td>vO zCc2RSQd~Bp739xYiS?uN$&`0si)n{1_!g2I$4D)kWcBd%b1Y9NfrY6>0jLxcBhhEQ z*G;4?%>+`%BmfZP9H2P6+Sm@jf)LeIL#*$k$9abkV;~PqM8WD-uWyNdrv89l0z3vK69>K?q;mMOF~N9kR$}mYiAE zZ#B`s{wDrk$*QRJ$tWl@+SPad)ko>GgC-PKyl~YJ$@{}T3r6a#lCdX zoLx=yi+dj~WmZh9`FBxILyW!ESsr6NTYmH1X7mhA`#8B0&aaDe!MlrB_>!F5j*rn1 z2l|$U2~oNS<|g)|ulJ029@#c29IIVhCg5UsyT*jQ$bO^ydSwK{nYNP%aF`vpErkNG zQzfZASDtyj3Q;nY=6lc-m=c?8yc0(^Sg~qClV?9tj_;A;SwkYC)8~{l3Qf8~?||tX zg^{uQ;wy6po5M!;@7XKUqM&(NPkr~tE1}tivwU{8vZ1@Hav0kIG+{WsRYOEq_(8As zGlcGE+>JU5=^5{t`U7nZ-x=1K7DJ(y*c^&!tO$)H=fLi2OlqYQty)2a1BDo%gBh70P;J1Wr-y(RKp6tZK>tjWPwiFgS(2)*M7D>7`Nf=4v^$bw3Y%u9_`aIzEOc8hn4|KO4NPvm6bl)>?Xre# zhx}qxBh!aJY*oO|G$}Scm0zvj1pL+Fo|w+>JCpn9%K;B@N^^*Lx%F8#3Rh%@8GmKS z`SWkT>|Hb_#27h4cb)>-oG{|_)2~d%;;8c;JLBFOb+%AiKE`joF@I0P_xcMiKoMg{ z1_KPbEt;*jRw%8QIdEE4IXQYv$7$D5_)xM7AUNL!UOh%U|2P7yMG4G8YE#4Hf3a;6 z^j^48Buf&_8=g;>KgQ*beot*ygtZO<=o7*~pk|^AS>Bh0$~h#+y{IXIf~6Q-Dqel8 zp%P$c)afg^mI6Nfgs=?fQ1=yyppfe!z!-f(Via2VLVLVR4rXrwLUtMXC1yXlToTGQ zfP?~Umo2>rCoeita>=$Gcq#+!t+?`p-=P-J-X{T)_k73^b`paD)}D|1+cW&%rjPo? zLd_*^t!o~M6Adr5W*0wY;KJE;xuS9Ql(}heC~>krE(-j@Ss%#iMOuJVxs>y-DHco- zYd^BkK$ZD2<8>bsM4e=k7r?~N3{6iU8eR>Dhcibq&dzN(9!{pCTj!ERj(Ev9E~&<~ zq@!heRj=@hf7x*OugQIYnq!1+!OVHHih#s(w2_1FfSLcMxl4!!F$08NJ~qL$B{E!Q zPj|bk#!;^lHy>0KO+_v!BAuNlcmPZVtZ;YwX_IsQ+^-C2wf~9F6C_t?eNIFd#3Ox) z!YBHoR^P1oxJ`!11SM|i)NtSU9@(LVS*iN;(EUclhj86@G7Pw|WVIVrLJvk5ImovK zlZ#WYtG&;srSO~xml9dQ{~RB;S}F{>=Dzwv{?;egRkt?&74JwyiZ#vGV(gpH*+sp2 zSB-1?eaL;m+u4p+E-72xmcMR`ixi?UUlRwp;1ho;nnlJCDuSEcogd|K(iFPP)E77# zKN)X_gH5`XJV%Foi7AnR4OkdJ3(dd+EYKei)NOxA!s(VHp_Wkf5&73zq9dRK1sMZy zV3WS>;^Ht3PB(!^jAO!LrK+`48zOj$b&4=Ul3mPj$C1zeQ6fHXcDVGdvVOVftM-{1 z@<&qDdDg{1X58KMJ(-f$FtJ=eV5s|hwb-Xz_rVjiA8&5m(zn>n#u;)=PL8S7#m5d-o< z*o#pQ3&a%bxCzoUAKA7}potFb2`BLMqhh=wBZQQ!8HPIou`tD7i3+e`RsA<{AT0nC z_(2=hyX#S8#+Us`rK^Ly6UP6$!jgQC(@h5DbbrW@Jc(x9e<|FWW;lsRhN-NMD)upd z4%f-UrlNclpwew{rm&UI;6pYc2R(sQMAcCqrDYRC{zP%Hx>o z=%#(RTM%B#D9j!Mwxft{>UiLxhr7_Y@23j>_?P{eoio4I-&#sXufiFvy7M0BN^`E) zHs(NMB%%7c;7vckwx6!f?VkFoR}nyXQ}sTC7t+BT;3lyURe6rb-_l`!NXG5<(_Ihv z@+l{CuCV*2!ARVhnIP{)et+*=r6NF|Rk1!|gP5rrhdtAqaV;+N<$fJ&G-d4Qo<<);OVnh(er){t)0iEt!}63eSVaGIy`f(LronL$PAoy2nbdfA4A>2f%jHU2YDLKk12K{ za0Y^8G@g>LV!U|QAS>x@tzBl=c=^;%U?PMnrcUr>*CklA?fB&@_y7W(Y98~*XNA%>~5rsqdw{$qH*i&@;TA9EP{w1S0h?uBB-yCt5SCL@C4q+A{rEt`qLJVA| zpA2RmIJ##>)C;kNfh|c+?-(x}aD+eueh5%XgF=WjlN8T8DkMoaQ22!l)w-jS_mp-k zqSX%n8f6@Xy}777@XG#AoPlNsE_H0!4>zfToWnv97%>`^OhhNoc&u5^HtOUMi3b}% zzn3j3wjUljeF7bjqY^6xhj5;DzA47Spm%Yxj<{sItq$Ko$uc?+lVPX=)7(y`Po{$6 zBej`t%LOsP_FJ)4SEXM)vA_XVYi6R)=KrJAXza}g|HR7*LzQ^=?uLPq<2Zn0t9lPC z!8s!yIV0-bR*pyRXxT;#=z(+h*iNw!`jG!UNj;LIUG1GC_o>Be1h(~4gXg?Sy_Cd4 zG)?eF*lkd;INiFpUbEy#4CaXw1Am+uN9Ec{OpT-XeM%516dMk{!T*)%%?dZ1;#13w z`_M?x=zIGs#>rRSeMbiT6h*F)a??v(@|l->s-e1D53U!*#mN+F4&?%=E!}Cbro|E3 za^8p~C-{mYBu&ZBTC#VasvaEVquCsa{BRY%ZTKpf=7(JoB=iGkP5+Zx?pb_fxji=( zkVaSHr^?&S`ghj^9@JHdHm?_vFlBDnPlHAy%eD614(LMdi6I$1Q+<_y5ZCr8Or{nt z9-7c+_(owl>WZwkD&w_Qm1%&z0w2II4h|eJ+oUk$!t>Mh_YjO~y}5p%6DF9_+x$rj zdkGm6(0Q$?KukpkKml&A_5dO-cWAHfb!n*NQuF$^ zH5fmPKgs?TS;9lVJwDaweMwFZ8k29oaQ!xBb=EnNzkm11S>P7t&8eDGqF@^1vW9;L zg1;IN6MdIh^ieMbjd7MFWYZNjNiv?{9AgG8{+Ct?2P?1JO_si0dv22_*Qo>ySzjs+ zp8|Paktq^~s{dwN>PVfr#LHyn-*v z=W;dX=YD=&b`Sl>yUIyuz8l&LgI@f5`D%xrCEl-_?PkC$nT!lI5+X#sFExhl3IUs9 zA_;v#8`#Rjis&2>(wt*RW|zbq0)$~lVT+GEQe=Ux$vdybGh%EsaS5J!*&u|G^|96B z@Bk_X6QTSo$(B@IHaeR`ok(ZAZFUW*Y9J9p1_&c8gqbhn*nMtHY%v+XZzC};OKQ(= z>GLbH} z<)`nBsQ{?)bmW2`@v2#W^1!B|Cs)YcJr&E39GrXNd=q&!& zB+TRQB_jkR+hB&W3#pYqH^#lbfq@x+7anfLwW8h3?gBB+-yUR(n%n^#OXt_oI>o>-hRbHlov?!+L1={7xJC2ys{s#*2A%WSc_*5llhs4T0!^EvVT z;l2-3YF^#pj^x*LdxH>jHpleSZ@F9UQ3hLV|K1mgx+p{z7tt-*l6)vc4}15Nu}z50U)(`;tG`sm4MT{vyJYMF!S z(H;%Mpr3rI^|9pZH(o|*AMm=ox}Mly1>T~&b$#**ho?p79nSSmpPrOt_~^^dcVIm+ z@e0LL9IrCdtf|`hw z>l&X&CmIiYPeuNzH3IF|dE|`!6 z%A|)CicoHtTVaX=ZhJ<`KQ*sf1Vy!aKm4hgt2;7!1Uz;VY;Re7ZX=3Ebdq6Uusv(D zZSHP%4QrX)@IO1aySw|%V5a%-GCm6}af2#3iRA6XEAfD9jb_@0X%M6>_bTZra{b>Y z6iR=+hf*Dm;If3F+a|IV4Q6wFb_hxqyQUhxP*wx>hzkUwC~rR7#0$V~Zg1WBOmY2^E2g_ld)E_@d}BkJt*S*@xPXNtNL#?PrLh+_`s%` zOKJ6qj)G)Drt;~N=QX7{X3`%F0K!8V23#O%?I^AH7w|v#y_S}-j|uc*0cU|&RX?gI zy!%fDsUWWNXe&~^=&gB@Ajv>>+0nGVy7YujfF2|JqlB_2Ge661i_^JI|8eMyy&wmv*x&Izvwb-1lV(*Z}N~g4%+Y9^^d?To@#f zu!LNOGM2d!=;6a}-nkQ=KSy^`Zb!E;Kw~_6{#*)xVVG1s006B0#DW1E;CW|aESZ53 zBTD1AtPsx=15{nw8u)Ry4H>NZlOJ|6$N@8ao$Sp zvBN~aK8`g&9wKAEkhXdX$M4h9EoPk)$h~3mrUbQ%6^)S;;I2NC0SDNxx<~k%#Sz+% z-)vGqzH_+JNJmYvzk34aXp|}IhQW$F5InDUSrOL>6&02Y6Cy#av0P0YfQclXR6a4G z_g+}IKXlfF62}5y&&N`B!@GH9VS6erKq(i;=L9%@j5o$JWtXShu;-wNvb9i=ToH7* zya<5zJD;u~n^JNxiFQitPU_WBULX>FM}Th66Q_tz#`Tm2$9K=1AF&9~N4DCK0VfxO z;ur=-?q}nxpzYw8oD@wL1hAU^JZymL=G$T_1GK?qi3VJdf*pK!Kce31Stw{9V z=RbX-`r^t()yAPzo5{?pxSfoVCiQ@R7(8IR{Ve6)wucrIjpBD_)OJ9?Yd`d?(}NvW z7g&kL(T*`^Fz)f^J6VIzJV)%c{?FTf1xrm`@O!JENx>kYj&?0xl+OI`YOwsb{Bf)M z@AY%@ZSco^(qfh=RxE zz`WW%)qagHL_~VB`#JV$(@V+%OfDd~Lv9x_Mv})7^s zQ-b*Gq8{&9XJ9bKC^8iJguwbV#x+>otO$pG@B*IKmyY3J>9k|(3sxT6a-DSSAP!T| z@$D^=fA<2$Ub8~nFuIFW__(u`A|*|9?(4MZOM{lSi~9gi7%4Fe)U=jCnMDVMb;sK7Snm$62UBhpbjRuO1 z??Z0vaR~?jmlV^_{XUjwM$2pXKpwRQZxz4SA30tGfNC5B$V~tGVxIS92bywh_+oN; zA4$hEiqf?*A|DHVx2grb1qdKuEJ;0B%SS>m!&U&2#OVu;R|HB*atZ;$fR0p%0+19B zL%J|H0*n!}0Sw?8F=w3qkvWY>x{vf0tP^Z#iogDC0CHTVDvtjp@`AUyvVICiK*O7x z%l~s$9n<+~jfk5JqbCzqO)Qjt`2V8NAdR>!uDo%j8|ef|62Cv{jSYpwY_bIdXBnYr#>bh5MCJA6)FwGe^GL&M)nG*IL^ ztU0rl?1t-@jxVGGWedn*4hbsw-8DD@@u{0qCOs+Poy2+>3b%t#0WASvy+Qj>btGhS z@lwt~4>chEI5zZ$gqMo7df-cJj>&`DaPT96gEZ;P(VJwvWM$ z>zsy-iz9ybRH6;~S^{OlU?vz|ObMH)_!Iu@8$2loo{^K#H4MZkqO#f3Ij;&`*^G6F zFJXY*w{Z6#j8~;}M$$i-fdwq@3*kjSVz~TgLXStj6pJ+)ZMBJJ+#Ou|vH%R8Hs0mY z0W5$yo=Nf_lhZHod-|LCisD!Nv~fMW|4?bq46`%c3d_?xvNKf3Ha}LDIkrQEFlen{ z;p-U}dKXpkg1sN)-xD+%332=1^YqDu5wj}%{x?02|qhUc4{1jy%FvW z3H^9`JAp3fZ_&WF)M4nq7UvmyvnHKnWNje%OG0JRMHiNmJUQ+FCaF7WbX{LN_!nIZ z31I=L04{tZ9=L*xnr?4JrPBX=UAl&d4f*+Sj@=wGG>$HnDmNkd=srWeZ(AP8tesf{%Xczea>+ ze&L*J-F5#QQt9{yH}EQ39*I7xj3k%{nBJb=(VJw>f3y`f|Csp7J)GQZ*U~X)Zd|O0 zPVgp!CxOFOHP&f~_ot={(8U0Fv~AR1Xu3Cm&UHZA$tvGq0CTaDg=9vd42&*94}MQ9=ldsvufndGrfDQ>>n+ZVG5P z7~?A+L_@zA+Pz)e0EVli*bldB_$Wvn8q67P8u2t#775L;0VoIGEXSgOX1yezg-CcA zE)7a#&@NDiLOfDqAG4^tEQmXYKxw&@DWp91LzbE7eVFn8H|2ii8_NnR&7Jxd+{`Ue zb-=J}ln%=WobuFakh+Cy?)m?PU|tK9#lyCQH(a{!i2DY%TB zVYcTIn3Nk!>k6KO6a1?u3`N8V5rrZU)g`xp(~A{6rk`Pd{&{MxUb}U!71tS_`9Uu- zzuNY(noYSIVdHYe->cHz)dr|9&+^*%O4bJ;m=u;LGL&6KPNRru7--#>5( zFfaN{BoXe?nctzV^)rLDW0kq8u!L#ps-yTDAWd~M-Ak`*#}$=%;fC;j*&MJE?;gwT zWcXtB;Dk2APNwTC8>??P8ZLK=Gw`+El-lgHe6=%l58&&18)mpnRSoI!dIh{{JNmCqO1!wBAUYJz4IMVi!?2H6?eWT4KM24;$~r}Kvl>t%E3m_@93P*2FNgUTNKk%jWf(>Q`56PxZg5^y5`pTf z({1Zi&bx_18VpVFd@`}hq3v?geE1S8>Z0!sxTjs%_*KqZJzuk z0zV%n8U|a07sulZFilK&00)6Jpbm`$5VL61s}5h%q$Qj7rBJ8iq1>qkN!BJJenm(MH7byT9Id{mm{ zH#V*kzaZfp(FH2{&ZQPP;{gaV%Dz8!ai(B#0C!%s#Qm-Zj`wNj?aUv+&!YW*ZiEV1 zxuQD!={MzLty1IizG1)d>Ii6;)zX0^P_u$K?p-Ipd_8=LVjDvkA>vWL0l?hrI}f+Du|d9rr-BPD8ren=AQ+VGv5>ZZVN^ zL{lysNiz|R7+0s@p!yUFxPNi$?%hRa{4Y)?B*zCla3&>1F3^=Pr!vJx&?b%_7Sc{9Frz%NS2mfL9!FbjeWy9h|4 z_L9o^cE8eYg#)+fKunzuI`64)qmBJ-7sdo4ZA?>>%F8ng6@~US*<9kt5-wtj3|lP4 zpAT|xeH5s2*?+>k6-*T-Zid$Nq~W%hb^Xg%k0L)bK%i*afIt}MXc+JBa4}yA1ZbB+ zh(uAm;FNqBo(S@X0%3=w0EKy4oGd^gJC+UYV@AhqzjSr9Q|Ny(OjKW)%S?bDE+#a; z;nhq@0g`!cn5@=?vKurJd{RGyWF_*fF4yS$hWsC6i~N_|V0Ssvn(f;`Z{=}LGs(A{ znB=61r3ct~pZN*+ZUlQo79Rh(VPE;60NKmmZ_Q{iXcRvu#Nzgcd<>@X(tvdkQ(Q_8 zuH^bxmd0j+um2|hYucJU;qAa0(;}Gv$;HCmiNbxJtqgl1Y2IliKEewxxdta>RU5ZG zT}X~77<_l{>)t;+r6Z%jWXw(hYO7qlrKNYSAa$w!Yj~lX^afaDM2sYFGeUB7Vjzy# z{mN5`MU)*liB#PARUUV-zfaK-HFhh+m77OE%J6fl_AJ4|_j$5iOf{T&tNUkRx<)h` z;|q6z&J2dmUR0ueN;B?B8g}=42ReS#UrqU7XWZl;tR|Wd+{K;M(ZZeglLY9?peYqJ z5eVq7b%?EABZXz565#uPpZCSB86;Fgv#<%hPZ`PW?)k zNgC&qcbP*pe+ikz%ixnV4=U_CRoQa;k@e3I6DHY1{hu_0Gf>=pFVRnZ^^@1i4WuXw8-Pf*J zNvXbH2na?@4rQ2i>*#b5njA-`OWA>{Et)XUP=)6my*nPBxhqz1}VbOpQFcf1n76(X^V+i zShtM|EAQqnsl%%R9O3W5Q&4?umaEJ^fhaePvD=)QitwBx3j5LR;yY;$X5SvNjEE!p zfjt4eB05h-;TyxM83%c|LRK}y6LyP?nfE6xjr?lq|3oN|q_EDKbX#uhu|Fe>)~Po0 zEbGgjgZKb9g^rePH|$_w11$%#I}~8TfB`2~N=#+|={%ydp|i;kyaoyZF3JC{wKVSZ zhcNg}tbMY|avp&Z2AlgGKlS&&UWZ`H2JnkWdMSiMS8?<%5$rC;uxPkep%L?dI4fI~uLCG$ z694VJDU8rBqwoY3;kz3SAj|VEsIRWi(a>X%Vvr{RreiL)$w3{(w6!2aBj1tubJU=$(ywuD6Bu)C#zP0F}x(c_!w=&p=ycpX` zb^k+3rs^rykB)r_K*0xW)_%OEzLQDA2-VxK8p3-Q)C*68PCW;~wtB6c0dOm!VsV6B zhzSj6k`V5#h-~chjl3H|Ppt+VF7Q2*H{S7nVystGH8mxmagkRzVDGzRWItc{5R)Va z;nnz@3gAVR1)WP2tc;%b)$!)78Fg4s$6L+kYl3@VSQiBp6>2ej8JZLAL?HFUbIn;#m>3jDfZVH1R>&eusASEVlj1s2wOG37-&A$5u7alUw2!cNx}B`C4$wQ2Ir zwQC-TMmmHV_*(xdU1pOZQ<$~HwO=Q81nXH63UHF6pz-j~#dA6OG4LsdqB;JHnhfjm zjewJmj!@(N`fkYAV4~e}H0RVjE)+07L!FpoOt)Xdio{7gB?&e33&8{$WU-)yFBg+R zx|nCK-5)H!FKC;|3U{E62!1+4(ap% zhMmVKbT!B!TFQC@KPAQ@4N2AYE%6P53xMxCH66(S*b!pkG=hz!S0s3UB@7Lqnan&b zpZ4zOrhO#GYIgREv&OE&pYDxe5Q0arzm6m&&aPvYhs8(BD)1YYEyP5; z!Hl_!Lx5$^tcR2XD2I}S4JWYIj4BaQFf2ivFa z0}2CFCpb*HNv+hXaISD6D1xFgzdSs=_W42HOf_{Xzn`bJj+JRYoEcDa0q*fCs^fG; z6f$4)re3(tmSz>~5XsW9XNcLr9;+wl0-L^~h*f7|S+y0~^VXkLzDl_~eSe_cO$lGc zzDfzU#Nf+l)Q|5Gt)eY=`{44y5x>tRWK=V}@A+|_4&(}pv!8KU!5$U#GBHW0rD;1W z{@1h%!(>0YUo0VEG>CeVM3uh-?h1%m0Aq^0dROwt$B7;-zenf~o7#ny^<+x1`v4G- z$GyV-R)Z#FDt-?8iN}|A8+NY1)<6*dTt+Zmp^KKHsAIeI&Xw- zp5X*c&V4r(<|{Ye2ltch-YDL*?fhyz?p8OTX0-ZEYUE!LmcL+2HIS;?hiys<}4 zCZ53+DGO202=}eolMg?i0v!R%K)(XgA+cF)&aM~uNrFdg;j5LqO0D{@O1Cb?G^9-y zKO}G9cBFx`bamtYZAf1s!aMK{Jed<9U4igIkj?g^S8l0IJ4J1`NXURAP5J@){SADM zpDV!cT2z(4{|FX99z;j6z-my9f9_4+DuqCxw6~yO8R1}S*RCzM-hi_EK7iwM+wt&6 zE~INofpKQt2X1G2TTuSD*sAG^dI7qV1VoKrs}n=k9MI#mO2GHRYpl{H*K_>sVzJh1 z)$7iB<4N!4dE*Uq8v?gcs&D?XdE)!3O&2KV)2yR*|i0JP=S z7bhBX8cn$>3q+@2VOh~fTg4nm6aUPnw!xeOh_IXyFrdHLVwo1j9l`D-m@prOAM@M; zU=-8bc481n=>p(LBvYFXMwK!Ip2wlSx(_MnW>gg@3sMh>aIuGwsYeCi0US{mzPf=r zt_)*IQG>4a_cq^p#GqkF$YSHXwr{<+DKVDCY6Qi0Kz%F{2TP>p7{bUyyOTHML+m)E zlSl~wc&G#hioS%H82B=%EozVt)1f6YJvcG&8gCfUiDp8gJk-xJCHr+c=GyLmVMS6S zNOa3IzMs5$OWOC0s>U=6z!423n9@%T?zz5?SB5*uofJDL-%W*mJ{KRuh$}}nj|mwt>2LameeN}F zGAS>=`z~F{jplRmKTgj7Xs*dEuD{E*JDJgNUo&C^X2BV z!zOJ2B{g!2fbE|U40sOLl1F>^H-;)2e+G5XOu1d6JMur~6MEPGj&5&53u)qPVaULt zN};eikzr%c4gzrf30$tkV8ME>S|HF(j|__{uw-D zX74Rho;|%&y-#iE%<|Z$|M(H)O-&Wo37HdC3)2BX^D2Y$uc8v@cb+B~oxqo3PeD$+ z8kJ%@UuQTpS97K+7j;vj9`pC_m0WiZia+5p0CZ0MB1L+%n(%pu%iCg%VDLXaOF8?ILN(sf40SN@Q@hnC{sg=6 zb+=Sd{b1ntTHm9A`tld=f0jNX!1|A(62_?`P0phfIT1y( zGp-Ie5?dk2rHwjWiJyWM(@yHAxW((~YX3?Tw$fiTcU!0Rx+P8&#isk9t0|a{0%i|A z(mrlx9$`#!KPKwQ>*ClFnn@u|w^PZp8*0&8Hw> zB&Hkp^mi~Y?y0mw1E(un5la6#iUfd+IFuDcR1CI_J<_H?CA1t;?Fv`IbNfRZ0f zQbQ0l=8h1}FR@0~`=VdJ0JxUDrR8Y{o}r?@LAj<@}0xCBt|ap8?QBy~z&cRg5r z!tZ-&k#P6N>sK$`jeFgRaZ-i0??{b6gbe-Xx$2|VJt-<<%Wai%!DEwh!B?Ta=8e4! zcX|=_*Y^OUVeGuq_rbyI^q1c68++$=emwMzJx(C!r;bLjY(0kP<$W|k;rUdvV|IQ` z%p(csNvVISC-~9+)>I^XalDUul~-H$0RQY%#&3X?x{Ql6uF)*iWP{Hl3kAQmim-q_ zak79)+sJ&?<`D>vgJio6`u#6rfSME#CMqP^1-3dCh=YRzjiwa-zq~IN02rEu_oKw3 zy97#!@n)7{4c5=e{qdpVnaSNcKHQ|%3YP*f+u%{l$hV9v28meykM2(^TBYnUfzxBo zLr;8k8Xjvs4sYs(-xzBT?5S_Zc#9KEjopi3nL#GDDHo@4qrCbA`{={cyXz?N@$)~o z<2`=2W1QC5^3S=-9m>6%&t&#t;4}(v?8=VBT?K#b9Q})4zWRNK@J922ys4krUd_(5 zqt_dv*V`vcw>lw{_2cGbBSA4&(kKsF3hROSNM+*Y+;@%nVlxyk6?6V+VOn8!Hbbtz zZGLwPL;#{~ksOWSa*MJawc{=c9O2=`T|0HL7eu{TI468Ezvgx|R{?bhc$2eiUzU=3P z(kIl%wdxqZsJPZI{GpJ)~jUS>@?8pxj zIl`j^7=CcU3Y++Eh_KSw0AIq9yY4{3(qkP+enG7MMg1)idcGu_YZ7ymd&vb3{wAY% zNqLB1bgq82lv`!S>x5W{^+N zW$SQU2vklj^t%EQ4+^}dY#4YMLl=+$;w(q>h$Tf25xR%k^HX8x6QVZA!@Ok5umpUJ zlxd>*yo~#BcE3Hw>9$N;)*IWE>R`p#bw!aRF?FSCufquILIDRnS64FWWUDS#GHAzQbEgXT%Cu;&NASJfD;lOG--*TQkOv($onW?Y&mI%< z@|y1JYaj!lJbjd=Zobm_W*{G4I#vDfIQRx))dCBXT39s9-M&3EMVuleg0xpMR?A@& zBU^s_Tj=?_$Z;ZB{c!nsl1TW4eNDDZB3?Aks)M%p*D!tEkHuQ%GH3KdvDMGa`SHqp zt6VfOMP>^ng`^Hm{c?@({8Yb#FsEC1&x+&)JHq~{LuJ*9z)G8;;zsic4t3(haqGt; zmUqo;-jlbwLe-#gP?U$m-J<~21sSYT8wxqzDIlrb=3Dwxw*QIk&KK zW&KoROpyQ0$#!jLP<)A$(tG#|xy&(?*hcd=AJ}wxTc5j&3d`hK#7O}!{{fv;aerXP zF7IH7wp*ur)Q)e?IDZygJ<^oL`c!RzL5*hJP8l&h7yx!$kG;njc30azf(sQjudN5> zNi5v4jlthwcmBnXv#{9}sHZ7_frbDXiQ*@*tj~4@-Nf}Ya#mQMAe``cUfHg9mx{|h&-Di+6Bb0w8pk`SbuAn0At10~pOZO=H_!QrGJ5U+ zhJ(YUp)(Xs2n{b%cXR@N0JdOCgA<3ophACTk*%SiTK9_gX%mjU38J@z_Lfn6(4j37xJUYPI~MDf^8W>Vlt1=OB3a-BiEwX7M%0^=)be-mR8D9s?$nO!xdHG)%_Y}BfvAVQ{$i97pWzlB}cNz+zKfpXk zDmu%b%KBIs!7%W<<>jYnqMB9Kcq!Lzq`yga_RluToD`c8f1OPcft9uW7Z}=~!roF;_iLIu zV*`9U&{Gi4su0nzPjs&>-^gl`sv`FRcok>aR-eR7y=Dja5yGJJrO^TBh}RGnWJwDc zK6k#*fg*ey00nl;A7bUSP$jFkZkD0B3K;EkcXbb5`4O2;8-aI_DvOh5et}uB<+8gr zG&9o=+n%nWPS#|0{LnJVS(!-eA`8M>=tO#9$<58ZhL@Voy)a^+*>RxVqsaFG_%`nu z78vmz?HXrB+-XkJu}ydK7h_Tx0cQX6jhCy*&GJ~S?;Ex+Sm<(IX^u4>y#nodPMwy= z1oaW^_)rGeWfzo&*_NlU@yB2*9YF(JXB6#;0RCH9VqlT`kzt)Mt3?kNVb){(PV`@}+h`GVYw+?iFSD8(EkrJKQ|-Nn3&tw2qn zPIgYGBTY@<`Pt^%Z>4UOL8{3n`qG3=~L~{%*fHZ7vi4?Kb5)79c+JIbrc#tWRl(JCCGrLw}HGBr{c63H?Rc^m-NWzkPA?t{? zeHt$43BQgI$k*g!K@EuyM?t5D#Gn>2QU`3#d0a8c}Hx!*Zd2jNS$gQ>gT;t{}G zN%9MIqgV%pBUpGU=Y7GS1kK6uI(9+n836VF9^E?W4%@FLdw*HwgJwe{aKfEV>y9m3 zy**_Ouj^J_G5@R{h`XGhrj>J9(|q%i>;LP}DuCO)oy}_;5*V2AYuh z+^}|-Kbk6Lbz}B34<>cKh+~dX8T+EIeDB$6`*8JM*fO(TJM*vg`pBVb)%x^05$pcl z{k_>JJ7n z%I$#gkYf%*Tpg=;=8FL`DP5ijGT=5Rjy?~K#F^|cKwW%WUiI#n#N{ogkPb(u+HUPl zS~?|eraOIdZ8`5;+(3{4aNikTW^ms2!B3stJ^+1m{#etc!0rvKBRtq+k7ifmTR>3m)-Ej=7aED&F<`lqj1sJG&SnZ-cYVk5v5Ja zj&cG8pD$nlt4kTzOmJ<8$WJxeUT;UPLholq`%gfwV!Rd?TY(u?Ekdo#W!+x87VofHhkhXo(ao)n-5r_%JO!+zLn@iFcUH44PvDy08)dGH z*q^!N+qm5Z(^VlH6Z4~z#`X#@Hdx67lyivxzIh#s4QqxMe`mMx9G=eYmwbsg*0!$a zw^UPlcZeS+EeTTIrAd3XEY6FeI-&jD4=S8+MWUct$ZYj2Buy($J>{|)Tq2=8SGf%) zop~SUHI2$6-(cbc-2KdoG|1}4$HRi&9%M~0MvQ7sOEn=3YOt`w^xcJ*N;ksXk<(Y1 z4VepX5B|$}HUih(b|_5-&;mZiiu_eL@;)DP?>IgZCVMMa)YKF+?>03t4L_YN#Mp(W zw=T;{MkA$QA-X!H8u}K;>YSXcTNh_J5u@$VJMy(xO-WEN|JdCv?YRO4L^MV(UI85+8f73UBcGR)f2LFv z{x@7vcKImqE=z`)X{lK5^M~9Jr1(+MWfkEdMm6QP66&MDFsbDu@k_l5Trb9i9opyoiFoe`R2}vkeGR zf*55u59X1~%E=fQ#v6d@Tj37gc-O$=%Y6VYA|r6Y6+%)!Bm8jiBp>k|NUH=s4GSjy zmrX*z`_7RzT|v^*-9`VhWr@3Big<`_F-$4vUscmCXmm{J{(_;7kdM5M z*LSJ4Rp%>L3u%-mJ_FDa@(DS{e`Or;d4eRLN-vS8SXWyrO7gu3&1DmECBc?bU0y5B zXad5Ta0KC%JeLR{#Up*fU*xPJew2P%$obAg3+(3bB*XyR3;i;A48@kIQfw`*Ev(F6 z`esD7v4B{|6=PnxGMsK_N4+2~hbH*Bjm_&eC zEzWe9%s5!|9#pS?L=fsUg$s17}7Bp#v=g6x7nnx-I4 zDuT4A)ps3bU4^SvYp;Fs`7U!y^xdp^fS5NJSEJRg?Noa$DXZWY_ekR(RM`-i##g(K zOPUci?FQTS>>x))No#bi9b~LSH$`E?ED`NuHYqCL0B3=^1=#qMC#H~j>BR2%gORw% z(d?1~t**{vI8|?#D$v=B)vgk01hCN z?@n1B{YeKud7Q=TBP<2=J36!v#=B6z>Y{=eAQ1ph+x2hDcNOgRX)MrS(f&`Q=vnFu zln_E6APOoOB)sj-rF8mMIWfc1^%B_xTuwAl`Smh^`E%GFIs`wf889h$!b%)A^chX< zAD;eoeWcWWm~UtEe`UfQ=MyPB+^6Z$Io+O>N!C9QcT~bXeJd3&JWZb-l8@p7BDOT1 zkZr%QyF%7Kh(!qT4azUL5|=@eVzM~oHZJCnAf0hw#KT9;iez8DI>+Wx!R#WTrxiXdP*>xl%pRIPZ{G&r z&RWyMLcn+FUT$uA(;vD9XDe$*2r({*ZQ>EL{f*f2SDeuNyHE$kSwz4Po zXH+ij_qLW6t#b<&ZQgTYw?4l>dg;O&r{4p|FUQbGTk&;Ey8B&jgD|MJnM-?RUe2%9)a$zK4t*T~z&iJ=%oSB&hDuz8@@MJjdXa6h^BB&0Ps1QvBj+IR5m!uPFg~G@(QS}{y8!rKzu@c%^=eLn(*;{d|oCX z$jB+*uy)Yf4kT9>3}4oHKzq|Q#hn~2X|{Cs-^j^uNLRdLwOVe<#Jxz|`H=y0-#+zdW95`qgyq}8A81c6itcBO1US`8BIS6*1>h#3Wu5DD4p z6Sz+RbH1{^kTka`uCZjT*76How%p!W$D)8Fl&F9s#Qi6^>Ovc{*kFxo%a7_G%Xz1} zg9emxy4DX?^J2~Br#zaEKxOMVlF1l~>4dXTIYlLFoWnOBWQ=bZ6_ASXHH5L^Fb%Go z9JkkS%bFE6PMv>k2MsG9(UzVJ6gl0{j%DL!CUr9maB!+&sl*1l9(OVluKw-bK8j`soLYo1}ta0rY*p|U!zW&HYsbAs+t85_Ui~3SuHGTSE*R}H@n(YUJPTXs~eiKLB{c_6-f7?rb*i^*{31ZJwDHv*q&W`h|7kR z?yEjWPCHLy%U8npYZm$2MEB95TseVk0(>R22Lp)de~cB+&m3rdW)h)d` z+DQ&@s|xgg4R-Bn4^ghsQ%zqQTkU@jc6(H0+>i4j3~syd4)z?SFOrTwQZZE zl;(sP8|Ux2|CyH*J3MGGHVs;>vNsMa2*)Q-$)pULPt-TW0V>!iwm+U8I)F;y3HwAO zXv@?ueNY8P<6*#fLEny-b)O5W843YDYL%H_UnvE5VK#=y2h_Zzb!`G9zJHQ-PUoS*$~O(JHUYq#9IQ(=j~b8;NqJ<)0Ye--9144Wfj*lTEZ1oAOmKnEuJ`>91;- z{#->g*XSx^Zq1kHPX5_))#VUkMhT72KC$FU29b8^W|nM{9yAh3u@xP)+$(jnWyf)C*Qc6Tg}0D<0%4n}KpKNQTn zsRQnzul~fgr<5q17M8J;3h-TnN^%%DbksIenZJu_ov5H|f9iVe)L4$C@HiNqzByRr z;y+;0HP2A?J3J39%E4f=b<>)@sw^~l~!1|ilyKQ5bl2wjHQh++4!Xv7;* zT4eof`lhn)ZwM}e1H!Lhl8zX0RJ2v}x6xo3pbS5PQXpv>UX}tJ7pR;Ie4zJLRQS70 zajeq#UL!jVa}Icj*^OP=STJ8TEzaO z2tG??%r|6R0>c{P?7$}U7$ib$3_;|5K2|F209YY{0Qg(h{VmNp*~(p;_=LE}Y=4Z9 zPQhkT7rlkH;hWbkThT(ltkji9$Ri6<7CH>N;fJCz_Jmd<1tm!?c9cg}w`C z@6%1Wk3HM)@?qLPAzr93M`ob;x=Wn4D_Pz$8 zCa~ed_`Vz~KOOiUr}*sOS>xpTiTw1sB5bG66{3t6#gw9qZ~GeV^L$5j;D$8vbVgru zvrND8bgH`XblOmmo_UmU@j9Wp__U^aQ)tyVs^jqGW~1FIrgNJ+*SFXE9%aL0SvHqr zRWQ)0Eq|=e)%V3^^6B(spHJ{EK5y_TihF<7Y@^iAD#foNTS1@oWS=PaZ$XxVZg-2T z-uG1j(~{KjYdd|RRlWl^d!pLXac+|sV}~<^bXT9}(wrLvr)-7vqs09T=FG|T$-(z_ z2xa}5mTh*w55L;BhbArCii>y8CpkH~cw+5}BlI|0%_a!%t)HJ>UD?7S3r>(FIm#ln zJ=BspW-(|OCaiF9xb|$!qks$TFk50@r}Wf}a&x7-U(b z!w!@%4CD)<-%&=ri)4BJ$4U6ql(;xM`ukSxBb1C-R? zZ!!6?svxJ9I0=IQqSs8A0cDx4I@L={+tglz?OGiNCTI?0LZ}$`R}*dK>7qKEK7A<9 zO%TqKMT1;+QD{AYX4UAN7b<6kn{!h0b~Rk$!p@Mlm8QIOP-{JwNWfL^t0n`seVpgs zi{KP1`*+H5E|@^dp1>|62pO_zeqjYxAxb(eN&LWDHx-#~UWr=AU%Gtb&66oxFRE2l z!m-(YF{weU*g5u=Y54RuKT=kyV39NMxKpEz&f?x~-;E_0)OKnstmdO%Vhc;!-N(L^ zaEPKk#}wY=7!Ra`bYQh?;>>e2l>y(AH2<+@OXR^dIrG>|>$z+c8Ckm7y;b`)Q#|;8dw!nGQsFgPor3-x( zAjmJa*@z3p_f`8`Jp1F6KJWb#kbD6Ri}WMymnl0=Q8WD^T2 zPDs4)?m2xa;y(W&IIt!=r5{BSIO#`_`%w;LPrND5HPRduc%t~Tk#(}S7&&1+_O6g& ztiSK^SHA?9x#MTz40L*r{V3!v)qL-ZZDzc8xOtj0~Wa7$w`E5BH+pt_}oXhee z@IaCMIHb>1<&FJ6B}VkRr06`jR#5Hbx7};yqg}ga&HYoY?zfW%>fDc&r{|65XOZE9 zkLT&<1APy!r)fLgDzA4triJ#$mEcFDTHP}ClW;seAKLeTr!kogZrz)3yWDD@qt;Su z!K;5S6?)I-!e@h>UUu6%eoiI(I~%;JAJgiS3+(}6YEA2+H(|}HGtSsO)9=1id-=+`VUWtpCN8wSMFX4Qcg&OA4!&mR4rz4R7ltF6% z{1=H-ypr@Ng9)TrI|x1LRexG(oUwtw?pG=48mGGJF4DuI!1G0HAwo~CPB31>|D^AJ z2Lq4~Az{Itjh3Ad2s;ACP7trl--p*@-VIkIYin#$*&>US-OyU^|01nIlNfp`j33k$ z>iM`Dg{uNQ%>{qe0VS>{Qb$vnQ@NXLJGGSlopRpFc}8uC0}VWss7-DNTQogqMU1{f zeg{v+V6bSw7ZI|cno3x}gGgesp>A6EToZG+CMm%qcZLf{yoW9qhQq74j_-1%D0-al z{mqUjS>7nHU1%62MJHaR8jiodb4aG3v-Q)k&D0{CQ?2W_O#ssN-;nXS^A~vlCHu|$ zTeB5aHVq`aH<8|cvYD(b;K#tx6}1rmn^ES~I_QTXxA?LZTXt;~2DNH6^+t9yIE&i^ zE|meeD7aNrx$=1qM%c~C|-g*`Hqt^3`__weyGw} z9uvC|Y?t55Fk!RN^xYC{5bIRf@R!fb^YzVMdw90Uc|Z{iQII2~8PZ5FdHB`>1$$Wc zV$?$@2B=5KAT2l^y_4}#w*VvK$-HIU4o^h%8X0J)f#4_=X0E?*)y}dT_E*wmES@d# zH1yEV>FL!?ezEhinq8_;{~LaGzCX_}{ey_0rF-`wc3M=2(nC+>!-C+) zN_pQ+ZO;Df%may}_jUsuWH$BHj9XOB)tT2x^f~6oqjhP5I8DHNy!#bz!D`!Wwbyr_ z+lEA`!de^8tA-z$V-CZgagjLhBVHsFpx@p4u1qb{H{a9M8x-Kn{XZ0DAFsxBq8|_2 zP3PTwSHIO24061;=CN#6BWq>tJ~;KWm#$y+_ZnaKKYs*1@CvnkPbO)a-UmJe7EGKo z{sG@de*T|pl<4(_=EA&-52LG7qWoVOFZSJ$6?-PAX z6f77Mmi_Km;vU5a>ccb$#{{q>`ez^+&~>tD(OS0ea{wbL)-sv+qwF>tj)*#(=+=45E$$uX;bwpBv zO)K*4U@zhVAo4=qG&K|!Xsx0(jUJOsJr3{-u&CQ8MIyM>v?MNmutGK8puLl?s^3Ns znEgLgy=7Pw@%J}8%hD{}4bmYUA`MD+BO%=(-LNz$-AJP}N`rKlG)Tu1QqtYRRJmx=#Dum$Xn8F}ys?_&3unCSw#=V=5B54`6N=9ep zp(>c@29S1^^6dv!q_i(2x>;JstkFiAq)iAyp}08gvi}(u{xdVYD4DVNzGU;9-8E%+ z-nv;B1>DTXXdKU54t(KfVFcB4SIkw+a`(K`y`-5UPuFd*bs+vGAt6m1kFnXRZ%^v3 z+k|zNYFpsJgiDqXV*Q?AQ(0yM@mJM8$*H|2m~|}{(JQKz;(L$6XDc#I6=zYdq8#!A zcaH;-dRfj<5DnS32hiZ&u0@Wi%V(r*XInGmz0CQzTQxZn$qE#zNx7gzAs?8A$zyFq zr&!aj*>VAPGt$r3biBw)@TR+%dSmztl02IeXRrP~4>_^Z{aqK?jSf3EkfPmKF%~eW zkAO3Q#SRoq&7ew{L$-|Ng=8{9ikg$cga4Z2AwW-l643&s1M8KunOpIv=kLF@o0~4; z(2g@8HcarQJN4;Jl2->;;?mgiPi?JZZOry$6Fgh`P>4wNbV>Ky zq!nz;1(kJnK#ld&&_gEQ77E17F9WK3`{tvBc<_0CJ5%2eE0~AllbvG?vW3piKP3y5r6R^A^oOW8)Mr>rUky zopn%fIwz5O5+4P5RP179l9h%y3(Z~>7{>Z=1=QwLp>Rs*&rFn{oESG?BB zGAK~7e~;Wi>^!{bgzN+eU`&#G6-^Jn_(Tq2dQg7!a$2-XDXT$fgC!lUvDTbs%N6?! zn_)`GI7eTx&Mfz{U#JbCrbsWbHHNztR9^6&nj{MW+f@2x7l@y=)X<*4TTr^9KtXEB zWL)e1GD3tdop!JUOd2{;q=k7E{$-C&mqBKIE<c8Ws?TTXb>VU zjp{0z;a5Fm->F|63oeTO8>|}?EooC=_(l&sQP|J*-W&LgxlBAFc&r}Vj*m)Lh@!Lh zWJ(?V)OT9v&}a6H3h%N69b~nmX{q^~q1{Ka2{W5kqBm>UxX-`INytiWsaQ5GmZj4( zuL{;fi_SRb=`%~7=e#T5^*-FC_PEuBXHWi=)Nq||~Hy3<@K<|fswZ7ev za$Y_ujBj#~Lhm)Im}s8ozqWk|fnnxj*1TqaP%|7LinX2As6q<)|GxM*je;iqbwS9f z;}_}9`ipsV|8+3`b6HER{n>E=w>43|O(bQTgYGD7lT%r-aLb}I6MkZJHotq#Yz|z? z_w5vl37Z)T_iIYGcr8u;nPKitp*zY#XJV=SZi{fst3&zc3egRl=I&!IpXc1{z};I{ zRLs*x>P(#>(5HvB0txFdBKdG?^dg(9KX=moyzkcM+45Epx1X0Zg1fG;J07i#Gu5q{ zsG75WGqg+cso|U^Q++kLV-_P0vHiw&az46=?N!&3)VVy={U`lTFGahQMOl zLPUh4(HeM6Z@+ML5589IbL@|n{Vw{go3b!zG@^Kxf4aOE9ws)p@%N~%yn3qiv0O^t z;kB0eTqmTz$dQ3rZlA>LEe5Uiq)2)an`Uj$c=eBF6>n8f+96o~vK0GS%a8V!f^=kn z`yRRzFHo|eV$fnA6=$3yWXde^A!n}4;vsJhd_Cx~E^ z9KowKYy~EQAn)5imqgLb)fp!}D(b^>bYm?g-O))X_oguHDR_Tk+jyp1f4Cy}rb^U$ zO|s42gobMu?SUr)y#b=0P$NB{OvXkpPXi%BEccmB3j(Oz`Q2aKln!@WIFesbFl%E! zIC1S~VdJz0y`I{{MFl ziEV7##TN5|*;m3IuN1-1zAYX);r0!=uYZ%56eileH_0S0!fWZz3S>yhi)7_fhD8qA zl7F)C`7)cT2_(`%KkFqJbz-e~AV`g){q&(^_FXq!g(s#oko(FHFODJ68qB0y1?DR?5m}Rrd<{r7 z0z+am8kRD-<&{8cu5Xw!>#wXEgHmpWx*@eJ2{o8 zw|`CKC3>KA1$c%B#Zx2u+?RZr-833++}34xtFlOfqxg5)hGmAB<)z$?qA@#{GJD z3QZG{3lQ6y_IfwBi<;VT|JYMKGSc018YK6W6V38BKNc%n?#BzMtpn4Maw^l zzjo8#8K0gT8?o*cB7@gaVrF40g0>ZzBwX2K^(WL1%;gTyDMT z)x6Ad*Q8Bxd!o$Mx`9mW0mFgr3-IVLLbLGM>tOeI8*_y6l!G9~#i|_wftKscE{LOj zf)pdMwj}&hF{i-GF%top2i&Zwa3fehjdOE3y0xzhhtR6v3EVSxM`=KZK&SV!Y!2z< zcqD<11#?{Fkj0U|NW$yuRHHHz$x4N+i^)yM054SuiU)WAsTSYDu-DB>4proqy&ZKc zf+Q{TDsL+W>7LIahFJ$lfH5_z9-C7qPb`$PbUWiLYRbLKqB^y|S%oJgw3t7K9_U=} z{!e27ufJYJD_ZkU9@bABM(L!SaAhl-@oR5mv};V%2s|V;_O%}>eK4shGD%N==4Ql0 z%p?eg{7NZA@fD*wPg(X<1--Ecvx8dk#=defpk%q|>llVUYN1k!nxMIit!!`Yk+U|L zHov)zH%t7IPHE0y+UAK*V3ujL>$2IyPk(=&@*E%ZXq{j8&rxP0%xf5`)7fDj11vGd zpUWj4rA(XK2#d}mE+j{;#RvhRrZt+qRQK{j@pxS!D63 zvK(IOO$dCV6$v9kL{tluXV#@?l#8Y0veGN}hsI2JjkkPWffhK>K$H8ALdM_p>KB{* zxpl&RG#%{-v|@cSO$VDkIHCg5#1z)4UYeSDYk$NU35@GC37i@gmpIl$Y>Dr|ZB9wF ztJma{Nk`mCbTpZiR|mdKUsT=~E!77d>*`!@$*tYFUOwLOkN*%(o6{1gh{%;^{PV6* z=pq*%%Dre9+2_^k$3ftDaooL5k~Yg5Ku4GNr3t${$Lm!||Crq~t|{azZ5fdz_;ca?X2X>Qr#jg(K*T`JC081yiOcz47jFBTUPXAmce|WdMIyu zRiLBGpXIXk#_Z|Im%f9JT(<2ct)PE0+c#zFdjaNzu|##)$G>Q8xKi}o=l;Z)zo;~a zJ8b{nt5tn8c;!ON3^ptJYxQ?=$!Fmh?+df6;^SGL(^eLYV1lJW$KWI*vU^(f)w>uO z3^G=m6r4uX0V%PMF>Dlceax{IiF3D^R+Zu>Y^2W}U8SJ3XiC^H0#0!#B@^xkAT;`8 zme`IqKdff&4Y`K}5cQu{_CFoNb7W#e^tf}H^MY+k?i7QXp1K$o!!rrSZw&{8NBNls z<3Q%x?+?=YA+kT+-u)Z5m`tf68 z#!qSJjy=iCfy#2tgPU#uaBQlVOVdtKC!e%SHLNouwDe0rC784iXCQ$qOgbJ*Ms3=! zh7j--WlZeQPD|T|kWI^VV7Vu|2?{CgKpgl}sftxm)4tXB@Z=%NXnUupMAtC)SQ{PeuD z=HhlF38tdATK4bcNOg!{ltYtdjD447%A6m9g~I@AC*j}YFPh5l@T(`8pyGUM$?vQA z;_zQx13rGbt}wjPR+idb3tTDPva4G6z8iW5-CFbrkWvGW3L-B`c=B&W*HqmMWA}N5 zkH40HOs?ChEo86hgLkf?>Mf`)cMr~^6kf3Au4el~PQE_DEKntsoR71tT${bq=|N#k zD`cgJ?|P*%q3HS19n0KO*l%OW&Y#cpxITX}Twc)ErZNB{1LW%ObTk@bz8v{COLn(V zs?=M)UEFy8yHL)9U}@8g5UsQAcMLg7T-Nog6od(%$umQ}z z1t#1O^8x&jKr+M(dTevr-`_)gOxMK!0w$=y0EX77w422qs!Ub&)CL)qP@eBTNiY67 zUB`EX(viRZ7jbpy00~uEk7^^TzRH{&yO4!RSC=zt?h{UVy&g2)dJM+)(~aWfx8Hfd z&`lqVDJEVZUP8@ODvs0)R;i5rEA`=+{q6XX^G8DH|0%aGYp&*nTeG#8t?nYiI;Ha1 zK0_c0bjv1nGD#R?S9+3xn*YX=zyTG3B|t4^39#Vetsq=+(2n`qhc#hniqa;Nl|8v1^UuK#S5gOj zr?OQ@EU8#ezx_|->!+Ud&O+80p4O|$5Q8i#D~N3p!}oPuo|}x#CuyNDvlu^Z4USK8 z&Zc->S1soMOtY8R2r^+`l|zlcT%Ufeg|i3suM6CG=ff+e&3pyLk0FuK$L} z_HKV--QOBfv^q$&XCB!-(5-|&mo>V(JAK53z1&^oZV-WaCMmXBKOoO4G_dgmj!Mh$ z^DU${Fpb{8p zAJHM^+rIqj5k}QXGt6@wTo`f5Ji?6mv=d<~zE|nT4lTOx`!doAq(Pz&?6Is=fp=IfxN(fghxEs|qxdVl$(_@uqb{s# z-0M2W?IRv$O%=zHV*XpdpDF$aCQE#G{xiknY+To@>1gik&<0d=WQX>Op@OIVc~z?H zU0VgS)@6uvVn_kh7+;;}$2`$zLf#3@#jAww%->vk2(~GXQY-9j7QI{o33!S~4Q`X+ zUJ(4U!Gl7#{#mi4O@|K6#2iL%79ZffZzEUGlCz!% zRUjb;h0pT>G9WG?%L8}6XGz29y<;WAA>`=Rk7V7AND|WSaNFh+CA=w;1xeZy3yGFSsq@1RmGowFo!@QdJC6+_i%kDn1Qx zy@!AT!tF6$8Vwkn@9-4IR#E=7J)*;f_-bz0F0s#@?|wlHd%M=$n-F4-1~Hl4;G{{@S*p>;~FJY~=>-Gr?#(>IDU9HBWryu8_JTs}MED zZA55Ug}3c*7Obu*N8SQ2+)Yv>u{ zEppc$>*rbI=$Dkb^66zyo4FWjn^qEDWnmF5wXR=`O5Bg*T>f&jEcszP5T7J^H3+Em zU(Z=l7BXXef#Z;()HnW4;b*Hw7-xzH{c@~~PDDPWW%l);;b1fb_#e_1Z}>%`_GjY- z;clZ*Ifw9vN^T$#8Ssw9>_x^?>YoDSqDO9#z1gej8k5xzT>Y3?y`%_Sk5b$m;wL|_; zGy7K2B=DEDewrYQ_YG0H;WYH6H~l#b8R{sj@>v6|Xm#hU38}=HNRl0TuS}bHUlsqv z_m%)X$M)X(k!Ec#CGkQRmn=lC)AcV&BSj{XbBA`rfgq{{K+tz8f*XE#9n8P1wFNC1 zlA{6Pc1rOrmUhtRiEI7%^lI?0(YNzSqDIGTxxe>Uy>d-fFaI#R0ec}$7Fi})wz~yM zR2hhY*Uk%%KpPEl##TzJp!5Db@;Yf3H$aD%XP}RsSwbTx*^?J(#v|%s|fz;Gj|1tP68HT6>j}X_Wp<6)hcN;EWBj~&Q zOA$8*>ieFIMA9quMt4{Z(oCN7bRG5+&qKa}mLwiP&d`@@7hHQ(TuX8dGwH^n{uf)J z=#SlbB?#kvYVL9Vmp7F^we{5PH*pguQ{L9|OC}U(nle`*!e=EuZKwZ15rJun4n#G@ z7@rBuzlz90 z4R&xrLxUInzeZfh%#rcno^~Ff%dFbGjsyqEeQS*z`xS~rc!%c^nSn_KbiwKegaJL| zb$7fH#?tz*)2FE?_hs0II! zo9siVi&_j%Pah3N2y7&ZBwf#ri-PISa5D!iR{o=JrrFG6q$UKv)kqfkfBT0!Ya%sy z&W|02jjp5@*E5`zJ&jN4;x4_mtuc-nj2uCM{5x;3M)2|TIMdB7(XY4Mnyo+TeeuZN z{hrAfg8)Bc6G0Z3jO^w;ftBXt6B%2lKK=r~0;?(fiAKCc&d=XckUR9cR>xgaKBp2p ztp;5SI=4KJ!+e`-e!}07xubFpUUjIK;y>|SZEym7>>Kj=UoFJ38f(W$*%UV|Su{WIF{?7tuyApMO#Yf)5hr3&UgrL5IHCal_T zvPprbUS^6jy+q<0yZ-vC*%^r-EG!NJbi|)82YHXwGQ(b@{3?<@f9a7i)jbn!^Zw|P z$*_wy`n{X~Y7UpW&8Zyf%nCnI36$=&L{VaKMmk=*da5t=BDLa0tq!Tu6%(~)pU1X1 znAbVIePe0w`OT0}vFPkB7BCq_pvuqY ze0w$2qXKuTz1kDjfKRwH7KAmBbt5K`!De}7u}8MOKxDb|RhFYFG4Pn9bweFI8D$yg z$?S%OS_ps+e|%Vj6+-guM7U7W5V~vsG9Sd6U^kPHEdp|TQGW}+9hX6x(-px4zapjOYoys{Z+jdS>^)DEW{ne= zPH?zK8#uxu`-s2@3{sP$_fr5|tm}q*1|$=U>6KH$!!U8O_oIBJn@5A6$(Q2@DXiPq zg09b(uMI>lJJOvZo<9wud^8q39m!h-R%wFvb>~$LpU1L}z5j+5l>)*ZjE!~Q zO1^Ya431|B!PmGvA>5BgiceguzcF;%wq~MAdJ-Ajj$a8e|CF=d*3IwYbl590X;AIF zIYsQ$PjQdwLG$gSWO^``MWC5EUHr?zvhJGS|B4K4y=Y=1UKE4U_dIACz0*x=av`tHtvm$%i$76&Q*H}Jh0(Dg$3tyUc zF&bFDIn-m{MQe4~{0y~kN%f0w)_y=ky6aFm&{ zq4u<2j?`8*P|5QA_qCB0maRM66xSS`X4+o%(&yz?l4sO<{tQ!SE}+r|Jomgk+tiZr zz))s|sCdL}O{g%Tbf4lh4NZz8y-J}M8kGSLQXdARag|7&s=-N}cZjK0^=}4VzLH3} z{qNR#1l$PPR$GGTMvm6wk$AtJhAL0A`euK$B1<<+muII1knLs8+fEiT_wwu168bV} zja4YVw;H|g6@SJM-+5ytxk=VaLLgoZ)VY5ONdoSl z+)MzQ&b<#Gy@x;Aeq@mIf@muXuIld%~QgEs= ztSxq;5sEdKPi@&Z)9Po^eYxAk-ztVE2#^%gW8O?6oau@(;OmFsdG0?kC?KwXUt*=xHwA~cpomgQFB z>h14}f7*+G{Y(mhFP3$@nz=u$mYI9{;iY8$Xu^TS2w(U@z^!q5Gw6Gp$om}}ATxk% znpx1!CG*7;+Dy-dyphWt$CF9l(VHFC!2J>&hPf{Mxda&}Fn{yMPE+UA-m)FA_x5V# z?Dz4Oc-gqpb5qOleo*C6_VXFz1tot5Y{|k`X|_b>(Hs5AYNbjsmJq*8{#!}L+4LUe z)jsY#yI(YcYkADq<|(743nwG8BGbXqlambc6Oz|o1FV*RS-TgRy%JTo*`v_SYKf~* zUez>~-uVTabWHQJdK@@(aM8RmbkUp-gJoo1X4TGw7w7I5jfu|mzYgI2V&H34$5lcHUjJHhYhH=iq0Oa~Fe%RSs*t1KN2yvi`4N21FVcMV zlMtOGeItN2<69)Lf(U^Zb28#YuT#iXI<5j&%(RMDhB{;18qcK0jFyxs)MW9k?cJcw0*Yi%tmYY4^ zvf~v86i6l-LtI$q*v!*un`57GPC0n=zmpi`rx={jwU+`uCLg_vPvF_M@1|I)bcRPQ zw2)7Yn9bk-k%#uIan50mR@4ZiaF}rbyksp*eIo~KI=;ve4SV6z(u?G-9nv=J?#Yt? zZNrh`U0C~f>-BOc4LQ8tgES0@FP@yNp*-hJBJa1V5lQztk-t~&iXG3E>9w~R`X#o){djHyDE+|pA zLI$&Mth-%}`LAO`NeiktUKgN=9TGExSYtUT?N~f*Boxz^$1;1o2R*2V$z9m4GHKn8 z721y`ArL}73PrgDk&pG9!`3mdwCr>!2zp0%YtUoOu|?B6Zvoj5;6g_JAxXpKP_4Ru zPr%B6x`h~RGxlryRgk<0zn*t1CeVH(BB-_~P$oc1X+A&15ae|n(zLrL6f|Gs<~!e| z-*7-ujKY1_I<}(p+_8ex?NySIo$L7gILC=p4hn;p4i!5F3OeWOZMY4BIloKEH6!)JPs4hE*9vF2md^*%uPiS zk>BL$co{x6jHgb}{12YKmO@|W)}Q0Gc2qRL`Kzn|qrdSHsVU%6s=)D5s>b85KR3VY zuyU-i`|==%nXwIZ^InlGrwn--cL2_WBI!fyODt{<$edCvrwN z!{s5LCjOvdd(vi`Mz_x8w+>?VX=8U^c6^O1GBxOkKbJj*o3%DuJq#f=IUbtTtk$FC z4RY^%wOT#oo!{j%8|MzOU%&V@UL;j<*DbJnGrHo)zq{;l*mHo1qS~xYsR={zaN2(A zOm&s6eW)6lJDI*(tT9t2qdKKs?b7g8LxA@mfN(AA%tgEhJN|7i2BUo8x?@Bnvn{kl zy|6Te+nzV23Tp==pICu_)1rCFBVJjv78Bt=RX z^5a9)<1`Xo!a&L-u!Ay`rN)w2&`&D9av{t8q5o4JlNBy?a?)6g#%POZCQJEb46{29 zMu`9OS4X_0lFvcn7pxFJ3;_yS|KWIeMt<`Ry^E&9;O=-BS#lZDCA;J0%|JT%CBq;L z%0){`;GTI(sRzdEAg0GuvKaiL;*(l_BJ^DK-&EFg;Qb}5b?>n~A^DBZaEJVRF2^;O z;mZl`zQ7a23O>ZyZ(*f?eaI0Fov2ij(u+nbipnb#=-WURJ^)eX*Y-2J`8!+hk>4JR z7V}m4Qc;;f4=Cc7=HslZlftp1r@`t8Pb4OK_a#WzJf3%`Q>H8uaUXd&Tx06YnbyMR zrXD;p>twL=(r^HaF5T+)%zA7+H`Kg}SV_BMp&Qm0= z$^zbHaUDHVcYQn_6cs}v>o(?0sTEP=;@Ku;!`saK?94ds-)ofOZj(t}B4ShfGb0!_ zdtQc-^? z35eNff}u2RiLKu;9ni{tt4$%OXXguK5@5$P7yZp(Hp(}_n9DO*g7W13AW>6(w2-v5 zQY;z!aWM~uKAe3UE}SHKb6ZwclD0&|(MowSLB!*x>bH1T@;KTv6X>~NJ3p#D(Zg$e z-N$P@(KBN_@i-GW@u+D$u`&~Q(zYo667$99q=&bE4PTYmkBDPSuXDH0vTC=FH~cVq z#PFCuPcYe@vC|8*oO|{_l>7SYMCQ?s91%ac9!EB_ATk$)JJ8MG;h5j?%kNa|IXW3_;_( z%WY|oK5j9f?YoQLmG*Vm2jzszk(}!!otW!XyW|4PZo66|r$UZmB_Bq8mPTDG7M*t9 zG&v1tx?!2aLdA-AOdGqMQ=6SgTWo#?b!R`c2?_50ii^L_yx4D~Wp|@I>VuaM;_6Y) zlQE;){WR$tjyWrwhd`v(CH~$M-Yra}E z)7SiDD%U#*;g)GUx~RFFd}vV!@=0=b)@S(lO445S;_D@synhLF`2%w$GdPMBsQC9t zgO+d8uEi*A;!HRW{ijHnyj)7+W`2v3^^=3J)F<$)^HF!we|An9Lx}@vJ1HL@oxaVV z&mpQQY61b>Qc(1ue1C{f3efU>d_~|DG>r5qVMLC%M*v`r{M^oZCY1)o;lU@tW<#%4 z|69=oOlCdAYuYlrsfD5KHyhz;s%}$GB+3wIc9v#-o4{&+o=za$TQ-0 zXvg4BG1K-|{=tJHuaQCWc+6WUHWTs&%JgXW@Z~`XFtc5nqz`MAOw>|Xz)bwASw=EK zz_h2?Xip8zyKgNPK+SS+ewDEYu6#b+go&*`Yo-Z5uy%tGMLXB0`|aq z1u2_q>G^MghD>c>owS7Z{d~a+<1vUPeJixOy-(r|qME}+JtW!%I*LIGKF}1Z!eUS# zyQwRCc~b$jxp?5}hJyg&U9MAJ0*pA4?vQ#R66-_aS1yK0@{_8byQAKQMR2KEFiLKK z^Z+;4XqOn>!cB%IBC;BNETJbsIZ3qxO)tU_D;dEzycnhbWDiV;qfX(>C6c@!QrbKr zkOoAwXrh{^UpqO7eLw^Q&B1VuMw3*Fsu7jLUMtK#*Sj!7pi4~jrSe~{uc3#sc){Be z>X}td)q5je)qkUxTY*+PXsMY2O4cQLTB}w;H=|otzSAeUff`;DVn^22dDEGsDm!m@ z$1=A@uSXAOKF?$?S~I$}!9*YE#VST?3qc=dAO(zH{w* z?B4n`Eoam5_FiNOWHgS8ZCMiMo{hGoXZqGoih3<7tBSS!x;h1i3v)c)=lt9UJ#`0jSJtvA&M)9o)tK0# zQ`~lkDfrToGy)iN+Xd}#{%$al%je!eh(!P%9euz%7b1d~XpX(a9^`Qo=F~f$d4}o9 z`U4H29>=icpuOMlH=c8#wd6$sZ?7$&mT~Ru2b^rx4w$ehU=)RtO(DEWv_Q)Z3Q_P5 zUJn?ii(3v&>ieZor)0-S$Q#0s;LkYzZO~AHMbd_;^wLZVI+(s@KP;gP1{lxoF=xzU z!!+T0_`aHZ(JZc&e+YP3%YKuE6s+;%675HUO2nF-6LzYa+1x>xQ%OHV!Cl~4d`IC( zPR3f`CoGq1*B3;3h&_%~$O?9?Ssfoy3|J1m@#-|j^Y`3=%31M4f8l{&0cMXeM42Eq z{oV;$@%psOaLMt??68T-L&ImJV#asodFy*G!s%p|O3})|D~!_ONL9QzQ*l?O1#5-v zjGDUg#@D+?lx@q*a8D!BF|8f!XSm|Ct5Oj2wdn^t&Seq@?7XtO1bXgt$DI}X6^|@m zIeeAx1<;w^AwwiUedkU?9UB7HksQ209(uL?CjTXQb`sNa^-?%2&tfn=yO!1M=WtN_ ze|e9HNqEi4uiK2(n^pNQm2g%ra;y&nh$QdPO~_B^Tw}XPbnNd1 zT!EDSx&7hDAX1VAul9q5$D*g^%l^Kk{sO+C8dY=hh%fWRUl6y0E}nv*APK>1g~@uQY_ld$DbBf+bdL9YZ--dr2iap@#|}xD2h0ueN&t=KeO3Ns zdRq|42@AR9l&~-4sWJ?HR}UX;1?RO15eo15zFQN?+8A1%K%7Un>@M%Pci}54oW5^7 z-5%>?;*{24Z9y`$e4D>#LjqnL@lB9Y8^fjFf0E|0P^?o#vGdO*09e5JNvok^wa3oF zA{D09@8mRV70n*c*tzGB@~PaQL1YG#p5ABuBx7eX8J6b(-1`pJaSkBvl}WYVeuQ(l zn8l-uYFT6{2^D{8%(M@T-lzDk2A!W{{+GQv^C8fs@~jJNd~r6I{+1}$;Gdy)C+J8O z_)boPosTV{Jo)+nIp5kk7stG76n_bD!<@`P%Fhe<&2T!%U8f3++Uo}?T#bqq)w%KE zt-nz+gJk%90JoX@5#{CeKBDmkNm=efPV;u|fWxQJm1K?yM`)lG)iPu~vKy3_)9b>8 zAQJ0#Z&b%cBC_u}F0$qETBPoez+Fer4j8*M3iRKf`eAYX^48*&Blu`9EW>$!wE14p z3xqsfa3Lbf07{7GuYq+Fq%MQJ&LOub^^K54CZLl6 zySN+4P_tpTdi3J_ts~zXXd*y|009-h-n<)hxoxvvdWQ@^(5A8MqpFXR-EuCjW5mt} zcEC5UwY^k>z?ts4YcB>Y_M4QjxF4`0d@kU7gqHFWvwY6CIdV?!pNNl@otW4dHour{ z8Q@;wg6~o?r^ALIIrJz?#SO+)yv)+~i-G_rQW2zPZBAN7A}UOYZjKyMg(Y!~lk9XP z(cG@hzZMaYgs2wHGkUAu8oaioQtU8YI1xjYG7%W$8In^_#^`MLkxMJQ2UlH>mEM6YJ%h z82wYZJ1Q@nWf*X*i`sc<&C_9$e^8{Be=He$J2B zU*BPh;!`b(KR(;KgHM^<%OTIt1Fz0QZJydsUMS0sV*_|eFh(B)yKq?A9*EvyNTW8Z z0kt4TeWCtqbKc@a(Xcb@)OR+_L;G`y5AdPs!>WfkCNNrvjW5Av#!Olma#ne19OBW@ zYS?{-F32KmIOAGU`5|@I{Z<);Q2|l`w3uwH=OEI_K>&+I_ipAd)=sgcry*{KL}0Vq zr-g^*KjQt>W%gf?8ZnTx9eJg|*764Zg|r3=$MPGRk60$P8%GOL$0p9+nZjt1@@XBniKza^V-4szBzy2Ep$lOzUCPE{cJ$5(Nm71pplSEoKgG zJn8ClVcNt%r-Bawdv<6rbc73H!+YcVw+>w3cB1llO^d2)~|$2fkHkyC7?<1_HO!^*0TP9+9l0$X$JnDtj`tEB_-R zIT=*4Fh!KlHI7IO4$n?oT$M7WwzNe#0N_DMI>4+B>f)OCqAjy%!5K>;sBh(ac=cDm>>ocAw0 zxb4*cZ%SbV_z8QGdB07?4RGnAGXD!sjNJk!Rig#uYD?X6*m-|C;8t;0$6uN`C?Ip>Ecn{%`xIK*EbL0g~GTD%xGRI;SD>}yOUg7{SJf3?3;;&Gt9Bv__4-%wWK`mc>DRB4GZx~lX~ ztZKzmfg&pNm>4=PlWGJ6eCn?g0vQh#6DnVKH40$AJY$u+y+2G#5khSAOoaRCdkqpF zHWj>sZhJ>DWj zl!sm56f`Qih;sE}E2Ojc0-W7aNP}9eb6;(XV{C!D#1@ceObELG)3{7pIvNN$a60%l zt#vo=y2UE*jORkNwfIN>VGnQM{VjgKa)8%CuwrM6+cxk2YGVZ%Qje0?=0Z!{TS3pS zo9hA%jwNT)gbx~aClF$Iv8bVK9($6Rt{HhCsII_AXyg%IRgg~8Utqk(>3Vk@FQ#eT z`!CRC?fNTjF;8$gV!T|(4N|<5txxs#+Xv(^?ojJdq47N{w_MNW2q#jJFCri-r{WdT zShtME+aJwtJ9XIW7i5mkqNnITr@v;n59hI|NmAMDfrA|+V%B~BmE!~ehsXrry7sVQYqY~?w- z3k;|fB11`tC0(b^g_U0>tOZ)=2v^w8Mi|NR6RK3$e$dyU@6~7S_AND$CJdK7{ZNxH zY4oz0{=!BA*d1&jv7WhP`B0?j_jM;BEJyblZ!Ur<1=jdCb+fMdDWy=mkaI|bqL?^e z5jQe73Fvniy7?sHX(aXzycW!(SS!4Wq1`Zg@1fwh6#sR9zQ@0305`vpCSYx$H%hR}`ZoPzy+SjjipmOtT{UiPJ%A-`KVZ z1h^tD9la4O&C0sJDt_8Z(k5RMx3Em899dv&s zyd$*j(IW60bow*J2(HvkU+u83G21e3FY`j!Lb0Dtejf&TLB&Q`H6URFR@3AW!Swgs z@mnO|UJwLH_#~Ux^_qB5S`>S7)pN0WE3L!MG)%eLbWyE~SgoudVHzG_y-J;r zE)kwLs+4)-^lr8uo9hrtsJ8Bt=AxGIMyWWGJ4A?mJ)AK)D%a-kI!zWsBp2~&S`f4V z30#u9!EfZIOh1`2Z%_JYKFi5Xg1j6eel5e0Z2U`qzgF9$rI4{GOE0>YOlwi5K6-*^ zz`&_wYK{yn6FUhHHUquexl=h17B~G zp>`YFJYm$1aWNSx#?)B&ZgE8D<&=dUjp+2!U}UOtNTuea>+;Mq=; zyi7XYV7FTE&XkPd7E4YJ3hz3a4b<0ST#5fc!>T;vNWaWR@fxIjb8|0)|Wd(Sy!4Mj!bd0ytb({9bP#D{n+_5r;2s43GLyx+ZRAu9E zPlY6Q5d+_=TO;nq+}}J96u55vQ-4tWut2bsCV(g=Gyc8(`fS5{ zlCpZ@{+MqjSa=-sc_~6{bwN-P{F(U#A#jojc(s><{|(xX5`yphFRWY%KstT*4LL@V zOQzoxVE&TzK>c$1->Co&gitfMlnHJ>j(+Ead^zGxV~$w5w%2q>2Ly0=cK@;*r1C8W z?RXoC@Rxd0JBIO%RTln|Ayi^LWi=|*}}QDg&FC+Oo0)G;BUIBFHUnRk1L~+CB=BelJ%bds>!c*2+9UsK&&`Mf?Dh5F zm&f|SD*1!^4%3SOCjv0kXRWkULi*JpMs+@ySZEQArFp*`EiF1Iqe)&hGfEvIWAYXF zyCv3F-CYZ9d!Z#M?DLi|ryH1%1V1ODx=j99^DBWHXa8N#O#C$ZFGQYQL{t~%CnXr) zXQ!K&2`b4i9kdJ*0&BmYw z^NG*|b+Nl*pZc@%-<4+V2^F2RoEH2)7@AfCwO7-1-sLi`y>pj4`Ts}NSGYwLcYoet z={_kdl^?P66d^MSC(Kk6 zJD)%m2jT`MfZRE0u1a9_gRk>07xC`L_JYFRhFxBfOumwXz=Z)j5D}Oq3N3KJY?`*=UT>y40|^EWkk%c`gb<%g%aB9o`J(l2Nvv`$_SMue!Q=yTWef#Z!Z6yl z=6|M15_^haWPk#YV&UiECG+f=!YPI&#mW-@_#R$%L4Nd4LP6EU5n;1oGXXj3K0^KS zFk2oYz#+xJs+1iE5U~s&j=+Bt-GzL%h(R{UD+AWa3SBZGP{k;F@Y`H$pE&qysZj5% zz3d0UI4RIRn+4b4#6n^T={Eq+=@A(i+Y>uO=WFtckVmwCl|>Wn+pT69D$kY=keU{c zmS}3Z_aJV{T5=l^SU_c)a;i~@&s3-yXUWggA1w4BD=Bt|@KY>CDK%{_sz=VIaslJ( zyLuQd_A@Jz?g@IeZV$zj8qTU9*TDJ57!ZMxusYVaP$?6TivBa$O7Sq|g0pYH5YTA<&8MYR!?j{T5W7w9;jba|gu7h#9Dg5~$t zce!O%vd+96`FDHXl%U_~wPZEb`^c%+d5uHf*^9oZ$2CuC@;c1CpEpavZ(7k`{4hKUez5OL zrz<3hxSM{WI;uVVH9}-H=sxkCj8Y}wPepNc**hbxJH2;FEY$ymR9bPfN9L8)p(UN* zoiC-*sqmsq>0W@m1D6P=i0A_FKVd2IHyVV)gE@zGQ|2gTh~fAgD8n% zKPv+@!=sjoq}lLO?)W0NlMvzl_Sac*)SrN0Dfq2OFAk@LeLPwD2OGqClOmy#es!92 z#Ot4bdtm*?${hlK_}uCaSLzn?eh}irPhsCJnc#uw>eZQ28YT#1p3we?Ao&L4 zMb>M-{?7f7QJh2Tha20%mXy@pt?8LF;G#f3G22=1x(K|&m<1rBv0Z?>j{Hkt#j2&e zV4uEj5%Ea(LHMpku&PXS!>;}lWJBKbML4y%2_A6SLX>i^*W-9cG`pyum!ueK_*>OP zMN=&0dB6wI^-ejq0fYt6Tw%9*0*c@r>d7#lcEBe3cvnETSy^q;bQB5#GK-AFz%JzK z7e1LD&6st$&ufekiPfcd3U+WoJJvCChE2iw8m({Er{`l}F5 zy`J-*%+ZzjJZ+d98DRDauv5xMu2aqMKaM}%E#S=L+WEdu(Hhd08r~16=CkP6FkfYI zmV5t3i}7JM-MTKV<=08owCXcmUv7SYwXbwozfl9&6)%{-iiJuGqZIIJj(dW}^D(b5 zq}vFI>KJ8cU-;=Pi#p6*)ccJol4&OTIUw2oi=h>OR?{A9yh*KkXK>7({0_ri_~y~d z^MPlq5zK~RHddsD@P|w}hebtWn{!t45JnB ztynA#1AR~|{Yih*md<`gy*f!w$FRno1M^u_^v$h?#s;=vsxbJIXym>i|37i_+r<4h z??v}x291~fZ1m??%AdlYL>D;z)rx!Pb-!zq@hTi77C+M49 zCNbNAZEA;E;$Xp_eE0HLrp|i8-i1UK`vkl`8(v%7H9|isz%2)( zUoDt$2fHNC1D)Uz2zyAA1VdJH7y|(BfDN@7nn77QOyF|%6=bZ|nGrw zhH1kE1KhD)#;d^2VYEEGE9c5=bbuQaWaDBvH#g|ESoFSC1wYy_o>}~%V8o8SAaOfR z_)oKQLaqk}ij4Ce+qh2HV>vAKvfnwXiYkNL(y!G5kOgm}OYyAsu-Wk_E6TM-MeKip zHafv0{qKYc+l~ znLA;QE)_sUCuqX6NJhUjF~qPOCs79S(bXTKd}2>pAXI=-{q9LaOe(y3s))vaHJs}n_~}IXKjyh^1e_uE zg-c& z!4kjvzCZZd5u1qCc3}4th*{FUV{CEeitT}H41%mXSC#C4b?V)Ie;(mYtojOqAz4`z^Ph=f8Ap`_SNk&6}7P%y6f6dYtQ@lK(gt z&C3I*MnUYao~(+&K4wmTOn8lPB_%?B(uU+!Abu-YO9(u|dn+P$6_S0fHbcKblMzJ8 zf?0gK{!Cs~UTp`0b21jK8D82xeSL@T^Y`n6s_K8zf)&qn(lURoA8mo37)mBzn7T>+ zyXRoZFFB@YSnLTL#)E|is={z!0%{2C2dIY;$Wg`wBO}K?{i}fy*G7PH6AXhnFN-FC z0URe_wJ}3um4V_Gk1e$BUiB!_0*r~`>%O?YTZ$ittl{{a!{{DjU9FggF@&f$m^voi zSG`&ON+XP>N3HzPZY4{v<}TF_u9ou~1!f8_$jVbL=IP(OHB2#Mw^3MBb5G$HhKu4>uR*xd2LD9W(A0aCe;wlRPihI4jpaN08c-)G@l{SI zv&Zz;5-%Kff|Ch94oNC1{-q2uAh_;3{UQj^{yB%E*O>M_`zEqThJ{BN=h&X-48D-I zy@(xX$2BjY9%vX2a*>cK%8pT=kq8ErUQvJ1uxEu`k%n)agB8ONz^r7F|GUPGyK^#b-VYGf4z`+p^7+%T`vN;$qpxz65JJ3TgRO~{$n z{!0{$zEEgWCp%JUAPB)Qs}8a;#=J0Zm(It`ulr!;aL$tgvRH@D&;R&!p|dKP#vV-g z`1Oa70!4)hP6AA947F=V?m_bI_qicK)IpyJL63xE$&cq8{$s6Nx=5ISTl^O&@BKMn zB}rrVpll-wqF~&eUruh*>XP!br}wacG^GWZ-QvKW#3j;Z!C;|HG8cXY>LUYc6j@EbXZox8ZKF5-pj=8Jt~FA2FSIHH6sPD znDUWAshuJZ_wRqSnCoMTAs8DRubI99+*51F~R|63rI9JxEp4`BYnDJYk5`7*ha|#iv6FI zh>bk1=Z6$4TlW;f0oQHsm=ww7I1vy1kpZV_Q>BQGI6{CHkMSaDBG1MuUco}>BwxCckAr!N6grGDrZDMB`Y2-{YKHUO9_0zq6h z>XO0v{yV{y-DS+mkh;hk&bwpFim_4jUdVzw)Tq0wK%71zc?SF zP6g0{V!Lt%>E5_2OTOQ`yluAyNFDVcU(=;+uOHIi@C#KD-kwv~0A zk|xD+lC(4*|2iN;hqtrHfjZ}>ddN&~iYrEj_V!1$2&DwO)xYVOmV&t66Zbw_i*h$@yiG(m(rhI+LsbEDHO}=F&YCr+U7XZ3nIU zukIv3Z|?ZFnbphz8(#h!KQ7u&xWb^Ww|kTtP11$+_SPlAx-z+4@)(a z_e1??PH5ew|{UQ_BGtr&i6;p7q*M;hw zun87i0)(_>*tmwh3h78_rqL#3vSoOY0D>`2x)dRt{Kj#PL*i@NzK{ddo%KSK)wMU- z_SU;XYftyqsn}yhZI%woUwt+FQ8D$7fEK`3WMd*&5nwlNti+-fKKZEkJ#}%9ECvJ? zpr9I@$FUi%`v%3adEJi^z0%G?v@KbCV=bsHlX@Rw3q_H6%2=O8wtq>$cPKeMd z5T1yxPq_r#tx24>;pkZ^&*ASND4hIr-!c&iIZFncV<^kzt`QQF0bZepsrTS@P)MJj z><7(o5A#@h5q!vQ1gdd2J6*MN_3L?s*%6QUo0-hDr*2`iwQag{t@&AfOs0xbAvkT@ zFV7Kygk>}V&~M)v!&o3zz9}dIsheec0@97UdAMDCQJow)Ru}!4ol7j#kYu&T9RtpJ z0e&y{5S3);$6$&y{dbIhb377u@VokaWpNo$b;pb<-|i($1b&C+j&~pSYGO$Hf~Cc< z2dP2i#rA6KAdLK7d4mnV7`~_4?EwN~b?Z{-Q~mfzDf6W4dA*c*y<9%iU#Wg&o~FTc z*#XfU7|V!Uud79<+o9L7l4MOx38|6&%-@Ya?TFaB?7*v|%c{#Nw@c89LUA5Bq?b_c zl`agfh~Cg#rERinz~iFJNMmA`mScsauf$3^x;<>w+gA6Q=)J(i#>zK*?@fmmB;PGA z2vGVyZY6KhX(Mkcx{_7jl~zK5{wAFrt3*$NkD|xFJZ8>!g_sX%m0RcEm%zw%8>~vO z{`T=;XFS+sYgOArZ)aJ4)l-K4Vu|P^Hz?#>>E1fKP&KHTV+015RL} zQOK`xm9)p1xBbg$og}FW7!^6;pL}(zI0QgK zp9}=a@)N%{RSQE%p0{X4jt-{uKpL2HP5U}w7B182gkzJ?tM6R!K~MRCE9k`yJUIz^ z$Nr{tT&{KyhnoADN)!((X_fJ`8%C!hYnm&<30{+_H84TIWL$&KiIMT?ZW@yQhH*65 zI(_OA(SEm5g{iGDv+%;CvE|uce`jO$d5o)0Ig^dSd71#z;+#Nny6{WQe9cV!+bSgL zfcC>AP!=q_o7G4OX)cQ@H{JRjbH-QM=0qiCy!iL3*GpAET%DDKkWqcM>7wOvpF>-x z%)2)$zhiIRdaufMP`03AVn9L^L$U|V4O2I$k+8y44nVyK8KXa=DYP)E!ile^1Fr_n ze;+7XX@=_7H}d_J@ng}CyCS9A_Se1X%M}U-VeMd!r?hJAibCUf+y!yyGO924NfI%1 z+dJc|??BRF_@$-mnqhTk6MVA6R3w3a%o?v(JoVz+WKrkPldPcdsw^jH;z0DA?-$v=|413e27s*y=b-#eaMJUYuc0OHJ?0Iv;vU>I`!-_79d9PF7{kb&DGsVN9U9Eh2Zy%XiWz`2%bq zraXpRE@h|>40%3AEzey`^8bCVC02jz)!V~!IpbQlOIe%_`;ylys#Z>Wo7Qj}Vu`Ua)i zRD$9h!1JfAVs)+IZD%MdpW`g(VSwTtl*|x8RpLv2^c5^8XKe!?#3kR{MsfDV6zn0$ zCh|hqc9Wik`h;?mo}r0W;f9#jdLKiMKt^Qw0>%!y+7TRf;Id3e&a2G|jCf<-qde=KHWh;Fs>x|a1yoo@V2kTsa=5*ps0hqF6pOF>JRa-ZZKh)1H1 z6!=Ke_pfb|g7gHz3`d-1dV{Wq>lRe0n6X~dMuvsNWw@^vOpw4`BtEpvCtBZz;V4OK zE_M?wTMxO+AIEi{W9>YcsyH#`?fn2=XW$mRO`IIX0}&|6r-8+F^qE%+Cbqb{tc_0qFn5MUD=57vFm4&*OmW z?M2eFf!$BumOy!7_IE-c0~2~>j-I8zY4JnvZhu|i{}S;W(->pI2VC~G!_D(!|HHBH zcMk;1ojT_?xh&q#y@>)Y)X6ZQqb_gis=S1~pK5LxS!)bUBYW{;=6TDkOr8=!mY-}V zyI876>MG_0s>OVk(6Oi0_!0^SM|@(y0=*h)=@PZ1P;==klk~gtce9aA(#3*2#KJM7 zw7jUvmy7g6x*}%~_0u8z6SxHLlJtRJh}Os8V!rU7mH>08KbW4Skif^x(5g*!?8sZQdJe@~*W8GslxT45vvw0_c}lo_$FHO~Yw#7pK4N zkze2Ia=#pls3Xt67ZZHqnX{lgrrCTYBw^>Ct)3#Jh;*^ysf+6|p2}vco2;X~k`J2G z_1IslA8OgtIt}v#vYXFl4Tpr>hO$F08TBq0S#Qt9{@t5yUV|5g8bajS)UQCbjhf6W zTu5UffJf#A88d6X0Utz0#|V%?Gs-@0dNN>#r661TeT|5tjARm3(Mo!^D2Zcn3cR*M z=+}72Bvc4H|N09H?1q$JLrNTX!_e>9s6abilMb}wCu$yNX*XRaClxeoHv2QJu`#Ct3Ev|XdT5cw~(h+ zpAbyv9jviAC`!ias{^c{j)YH)#EM@8VTJ6r;3~MxUnq)OwjOiw%hWf)g2}>KTXbN< z&kfkVsRM;e4>9AO+)v03>s6B`8d6)|dk=9#EFLN0`>cdvH11@^tR%i9Wxc1()(!Mo zqJ1r|0jmAD_q76 zzasHu1%=TpH3ndyv!3Y$SUYWYyzS2B;AT(zNPnyQmnNv@I$QKE_XVK^-fIsjx3(G` zMpu10xokNey{K{OG2BY>ls`iMP{*#YusfbDj0vS|z#&_#!aF~gdr(PPE670267DV3 z^x^&FyzIHckG%ED_R%QpYm|sj;@|41^2VVu>jz`$Uew!*SH}P4~ z^V)8G#U>t8Nsc4u!WvO^ap5HnXr!y*<4CRMlN(1^EUa8kc@7TWq&&L z?9_L^zYw@*BZR!YTg52!Pm6hp59!Su3F3>1&9WO}udX`d|_Ssi345WBL&a- zg=W?qc{|cU*#piJ+za8-jAv}^)C~E-VP=_iF$D)9i+#tm^Nx361hQ{%%+N3bt6kb75yI5+qmKm(o-7N27BPyjhpqdWCtA!sX^HD;0h>@&+-Y{`~BL4eXfJ*|6;QC)tX7N@ z>kiJA8FX)&#uvh9jwq(<KTZU$!s81ev%B;2K z#Duc>S^Z8+7(Jomgj^L<)E2nx`0QXey465={{HTybC&)N8~Pb0YWFk1CC9wA@!4M= zPi;heLw<6uhS}`%;k6N-ZuNJcQg@3FoM;2n7J$31u~Y1ZzN(EMd1D^H5})Fdv%R7c zySkfqbA+H+@t320*`S%FDyt`kY%^ozZpVK>wOBZiyr&y-Y5buKPnRi@Fww&xOh1~P z$VP}U1eGJ?SU3_A;IM%VKO-?$cY1p(Su7C&)nPD+eV$X4E)q6TTpbji^3bgKv?a63 zqmMuqB_{%43qU2NJ|6hf0z*8dP43U=PV%8*RDeYf9RwT5x4yYLU1ePW)G2@^dMxWa zj$xYe@H`0e@U5ITD$5op+$6bl8csd~j-`?_%%cpI@<#%Jg{brK`(t)6cdZx;EFa5# z5fOcOtjLH|@sCD*W6qZi4p+^O#z=nY-bZBd@!4KRaMk#~8n5dTo$OaZB>x%U|GBCI zRa~al2>!G`5#V^dKDSQXa}LaMKm=BqSPxC2D~4DS^)Eqt7?)dIf&j6Gjp{{UIT}1) zaPwm$FZvR6Pw@&!+jnyUoNLbYd&e-5HjF3B0?=NMN=@c%rWWe270i}E4#G^8>ZEVI zH3NL`1RJ*eJ#^^L_m!KPs*Wq)I&O7@>iR^D$-@>de}99KpT#BKl8SL&3s5?BzU{is zRnI@HuQW9R2@=PV$+1U!g9v$2aVT?q@ufkbQ`Ce=t7jd<@;2U9p~k5}-DO|P43=0^ z-Cze?wvd6ThdC+&i2jQEc1T+}Xrnm@i>0D%9cxaXF|8|Cnzyb0e$0Zgb9iKZS5?z9 z(^6rNDCdZT&571g+dB{Tmu?i$0)sh!UNNW$gl4X~BFg`=o3yjYyg-rpgsRe#@qKGp zLtcH?PRXX&6-F5x)vp9SVS@pDP1Q2hD<69fWrWgKvq6Th?q#7w2#wzMi9oD;tg=nq zRmqnzOFBxw+SV)+MWGXwTsDzbzTQ{0v z!w9Z)b0+EO>8t~(51sTg-AnacK;SDtk(O;)MH(lHZtsyFr#o%!D(vCjNy9S+F>#KEoU$mWQJ=+hs2+*HLftj#r&{Tx{!8sHWX+qRbx)amJ>&kfsLV zG?|CO^@^U?yg=f|1(MP_qdk)sq8c>h*oA!Ek)$$)Ga~H!doPwoDW(k3szvZjdQHD1 zZ!8J!sDP~6+!4gu@BFFsUu2RR#B{-5R-%hJLaY{Whsttq4XD}W%7RmP>cXkBYecf9 zlLs&Th%e3c+U1uMejyT6Qb0>y4xR8RGP}gxCZ^M%R0HGl+QPfx8FCsU9*7X%b=Dv0 zZL{Jj8*Q4AXF;|O{dhKGq>Bk^uk^jh=T^S(ca_0|!{3Sg8HpUL)WtrLj|Os^{T$!j z)eTjjBj10%|0C&fycE|Qa^wShMhv8`KAk}Q!NeT}s-U~r)Naac>!i9ou*o=kW?dv` zBMRJwnV1i6V*sB5`)M{bxD6_m6fkQ!6rAa6a)?GT>nb74pP5C@>cI$h62dm9aGXw? zkAp0JT$cC3ahw@u%Hr@z7Jg{EeKTkBizJxY4zT|ZN@h0OasF%b#LxqNs-f2>UV>2E z_I1(U51H^$RUKmhRf&URJxOSrL_#Ni1T#(Cu@xQ-Zi*QN8*Hn{%EcfNdY962O_RYq zr={MIAA|dDpNSw{vJl2nh(2z0pG)@CJkC}WEGd6I>71mMS)4$8?!;&p$R`^=8k>4? zKiFiBT~jG?$^Y@qWg~Pkjt4NJ&-*ZPbN+N3UQSQ64E-kMS7aZ^wsgiGeU=5{&;mgI zUWA(Z9RgVWknQP2O~8Mo(552RDhd~@&WF$2De&z3NI%ZoNZ~*ptR15Hpp6CDX-YRK zacARAl-%>6^g6nZ(i%#b?fXZ&)4UTKhk;n8bI_|2_!Ut2;%|_r+QppN=KjBVW))G| z8`^%JkSK$0Pn8yv*0JG0ySwP(yDr2I;nUBoPc+8fm-2;-pB1-_8e{WF?;kw9gdGIB z9{wtJ7$R%h?x}o#P#l{Z%Jjuki~Um9o=Td?zg5_l@3zdPr*O62>FKmD;S(I?Vi4(N z9=eu+RSA>oAlLA_dU1L0MT~Ednh)iqOP8z@M(t4uKcXzKxK4J(DV2b->X~EsvI-xgGj)1l_eZ-;Dqh6|vsxKUzh6UQ$<|WKN?5zZlY0PKue&jRe^@h1Zomx=rZN~T zH`XBi{gHkE$$9rX6$@J5-Ep6dU+2^z>tkr)>e0=AX`vFi1FFQ_BVJNt7-?x?)s72t z4O?Q+D(+n{=iv*H(w*~gwB$+X!=F&b^!KU43m+DKP9-9VOLMPR3pX)iXN2ySYYRJW zyD#D}Y>2~`GJpHISo;24@2PCC02=q$@?~Nb=&iBKZZzSQkHQMKl4#8`$2L=pD044x zB>c|5CK-WhU-If>)V5SjKi=O9DwBOf{TF|~t(pccZ{I@ip%J_^#*$UoKF0t11-c1W zuzH%b@bUtl{Vir`&NpGFUXNk%5@OwD&UTXDoWTN5ljh4V*clQ( zj6|i+`o^;pS+bozG!CVE8D;(3-QC4u?F~duj{MyMF#t?YFDz5AKpen@4i22SNncUrM)QXVZLASw2j*+{SWSn_ew}jLKW89`1d*YYcu1Di zZ5|{gE?L4TrV3~onhU8RE5{2s&VXOWz{ukxB+0n(+dXX(G2A7OGW=aiB)tC5k;$} zp;G-muU57M1Ugqz$4U+(jTHD9C$ws?5;U{Gr$)pI>D#gldcuJp$4$oiK~37* zUgVML9H}HwQBxRDt$kb$lHxuD1_4HfV3~5WbHC&!N`TevL-4s|ap^28&CxghUIr>N zCfB#GDsMO2C{S!z%)!m&vMVxv@;(cEZu7x9hP`TF-3_L38b}IPzwOuS{q+EVoh6e7 z2F=!tyZO7hl)2Dc;C9t#EZg^=sVrxBX@Jww=(@;){y289s< zBm=(50K&Ae(h%H8|Hy0sF};>-Wxls#W4j?nwl-khwv}LsdO!{|ucQMfW_-huLHfMT z#NS_H5)%w9rYpqC5IX^Hm|J}Rq zv=_g3(-cbg2~bILO^Io5Fg*rHHpo^KUXdiqC?4HE$Gl;sSU6v066%mUb!%)3#=B}9 zR0HOr)vE1s9T}iG)==Laq$09PF<(-OIMuqZt^rhm|5j22PzB{LG40|UDEyT-xFwN5 zpRTcFgFRnyxv2Ee{-=IoG!0h!CF$8B!1sz0@k0<)4MT%_=nh2_?KGH(FLK(G2}f zPMFEUxvu?5X9d@Q(jQ$f4m>J~t6~%8eIt@~;)u1t4>nd>7-8Ud;rdlmIoYERygJ>t zzMa#41L*Mnc3Bzk0p*tkaJfYNYi3n%*G(P4#m2lo{I~45W%Q}Cn*mU(Bh_YJ7j0Y{ zQVzVXezW^~yf5bYD2qk>i0}BB)KTLWb=BKN7;c!2>i=K_N5<_aX*i_=LLd@AE)Xu-BtxMs`YBT zrzqjM%Aa6a!Bvc#BV?o2WHLqxMY zA;d*3=)NnVCOE$SYQ;?)sK|YBQPpTp3TlH?E1CWLi3y7ZvBoq>)MM^#s1{>pZ{hVi zdcngNw>p>a>oq)#TopX;7akPAzgPiVaPioanu|cc&n*Q9kb12{mf%3sO{wL)APO?r zBlN*2K9{QtQ*^5F6!-V9(oo2o5l0@9{%3AMJ$euJl8ws1d^6yqFyb)qDtXALO5?lC z72PEkpmo_5Q|E9V=F|2Q9#Ay)Yfv6bJ1#jGpwHP+VnzB-QB&udj{k=+GdXzUy-zifc|5>rEP=JeN|ybSq@ z4-&_Zm1b6l&em(g6&m1WNE*1HhYUmp77W^w`__?%xbq)pB8mdJo5w;PeiRchB|EYU zzLlhUP+h0UbKpuI-F1k|7s^;i%=J9V3wY9f*z9$5nc9ndBj$N%&}Z`haa`WlFCRFr z&Eg;=73)!aoB!s40lDr(0Lf$|#~=>uYV`#W2wV%=SP_FlKSEtFHS(q7X0u|T-dLD} zkl6h{?bOjuuwOj8eRWYA-4D!DDs4)4XH7!Fb?~@=5IHYLXz&CL1s((E=hX@Z z{9=HCuAQ2R7B#;79l4qMy`u#_ib8X}gPI?{t^lMOt&M;^NtN3vIP{z%vQ^C>u@I(*u}?VXQceia>IVp5w0m-@|-3Hnbu z)#l>mL9*CEpJ4&eooivDkHMa=0{7v=;2sdI0K8*c+8wE-?4pI98#p-x@(0e8))pZmuKPsk)$ZG<5d4Fr|EHan6wgY-YY zH;=jXKk!3=0q)n}6mxpr^$hO zAmL;LNoSZ|K)A|C3s`RaTjy$+7CdrnXUG)iwQ(%}6kFFn?f468JZtJDOs1InRLT_J zT$NjRJ3^x5&m&b+6$-Uwy)8oq47NX2Dx*mlC(ISV&hc&C7qQYT?CNGV113}Xh8o9v zhb2iJD`*conXv*WV}vgjL`B(~hTL_JZ zbDQ4VL2J)$fuP@RmvR07WxC!RK5iU|>@8X@&GpTpnB&Nd%xBUIR=ng*)|r0X80>k8 zHCnP7V!y$YzaoN>zxI@sWJlBiMwWt%)U3)2TBvNW9tY`GL$4%W&Oj391Wsii6PTgD zR8wI?CJDV6hESzE^5Qg^AkUYHh#D6gifcO}y~nF&llaeUkP5!O4CrcGg=6F#qv6qO zekxGq@pZtAL8OJjeHXsOapTGk8#+%lp(j~4<|rph6`U9#d=bn8_9Lwn0dXx(N6fZH zkAp6%J~C>9xGpfR--2ipBL?XRKZZ(A=Y$D4OvuIVk-6z6h^tc^1-f!qKj_UxWxTYn z_&u&{065z1+TLOwf4|u_=pAI`LC7xm?|xSn?Rns)@bmaD3A+WfaLl2fem*TU)%y<2eXd6yfsawr}6w~@hG^FywcXR9`U%W`R2a=Rn{?`22+R_RiK-_rNz+R%^N z(O6aRz<1m$L7qZ?ef}jc=H~hA`{rHcJ6IySWzYSWnbZ@h-oQ$EHnvJtTkYI7WpE7O zR#&F61hYx^t9fPriuh1!Lv;k&6DmqHeYT$dMlUBaIA~8gor;mJASsH_sd|p_gd~3D zZoS-r^5V|0UW-dnG;#!)V>ISDyMhyEw)b2|I;bYV>qm&pRuAx2nXAEZS`pZ^&n8V2 z-Oj3uM0)9p1mOx{R5CcwBwgz@p-l$?ndISiWf^HYU{JNr@wrsrE{60YWgVX|vO|jYYjfPy@QBq}gSsb-6Q|B*3Pf^jJpd_`}Wnc`r|v75}aT30Y#4_*BNC zzcc6G=gm7;jOOlv+I)(w+QS^di}u^6{&SOJo3k?d0<#n8AqWyWZ=t0SRgtbq?C`1J zovK3k-qWP3Nepu%^{KTghaB1a@7<#eKpNUL{&@(zjDdA4@s+$NHea6=!sPdpVgKO} z$a{&s$v1}hCw87T)I@-y3w{DVD^Gj-+WQ0oDv@!3@?ax~v9odg^#8oyJ zn5j4fXKXZLdn+QQB+Qlq?8`EKEc{cpzV3LyFUO9R>6^XZJGJ8Uz6De*ty|C#&!Q{v zg;KprOI~&e>n#frL{)k<5XJ*aQAeHH|{1KpG&E^30; zhCGb;X^s)Anb`sApcuw?NouzQhbCQi`d3F=FOWfd3~^UER#6odV!eI*U$mK)zbHPA z@7@)MQVv{lNc%7RAw7Dg(LCJ{Uu^c_OANmmT2Vm}?b-6q3gSDF?9~#Pzs8A6yMTDk z<<-j5ZgPjLHH9H z)k{D0mNg3T_V6}NNjCSNg;C>=aS#>fBkMlKFgb22RSNH2=KoD1rE?Pi&*`u)wEhhL8LN5Q_nh zBh^L!09i(v1M{m_vQ4Xb;J4Rb$+zo8u)S!zm<<{jSK&qPZDo?& zi{(Pb73&VeisZPJDC&%wli19NKlfT0`PAM-r4Z>)vPVcBpsVAkn;0Za`i)#ZsL;Rz zZ2yPwM*b1wF9eNytQi@BcJ%yZLtP8cgf2qx5Ll@}<;Uqe$PEM>a(@hZk%wLX zp}dPeGOvIz;BqcG`Xj;TinoXLuvP}5Hgi1L%TVEPb#U#Nx{yuYpDgvq{Q~)5h*xJe zSX|KNY5%v*U=3fcr?ft6zys%b>$wH|?};81`4F2L?T7e}b|pOJoT&e4p=;9Bl@P`0 z*LUdonO73mPHzAq3}7)d;&_f?6KDQMAxzN!dW%x`f{7Z?#(c{1_GMTnXj}&KkM(Gz zsx!zNOWCSc9i)6ZcO{M;&rFUxWOHpcxfUv826Cy4Y!M8v@4RLE03w9grGJT&K8L0U z!nhya^J5gMg6LtEqYXiFR&cEz>xq!Jb1?^EzB-(Iy0uuN{Zr3zrX)w=3Ihhh3BG)3y^FhI4 z5E&sz7dCD+u&_}joRDser%yFZkk<&h+FL{zGjQKQZ|T)RTt|{Y-@L;x-$CipZ8lk?_ z{<0EA8XkM}%0qRz{3jD^)Rh_P9WrIvCHqV2N>+8k)tlU4<)AK2W=>c2J zTIlt9SuS^4(tBQfS5j63`}l2$a3bxFu@)=K<9s@n!TWEiOPPEgULg;Qy{srLFq4(r zVp6}ExVYBoWY@%m4&uyEDIpEscQA?)9CtX6Odb6i(^1&A;|?s?q{Oo0j9JEVOSgER ztN5izyPK$M?0uN3ox~3ee#&@!b~c|DsdPnRS7@UTluc0upUy!yR*-ejW2?KhybpOd zcj(f)2BxsQ`z2X*nfsPJ9hsY!yoBJB8HHwgau+_*FJMFHm zbQm!<6vvmjpt}%k`$!AD#?f!?G4{LMcHT7u zp?=IQwf0rBoqBKl3tlcuMQ&P(G=5J*Zk^EoMb%q)MHRN)|7RGwQ@W*5K#-0>x>M;6 z5h)32W(etS1f&s=RJuc2I;D~BZkYMb^LyX*{?_v!oU_)s*SW8K?fuy=5=G;Z?Kctd z=;A|=h;-w-bT(q`*I^(x-8cK%GX2#bkEx>S>%W;ugV+8>RY^AAdj|+1<-5iI$am@Y z`hl2jySI_;)TatFW?DCQnRI_vFLUqZRjD9V^-5EK(+7!%nk>bD)mCjlHQJeOza0p` zIwXj+fF%WL2Q}a}8r?}+VULsRqg&#w5qdHIj0AMCs}-g2Q4mdvh4h_qRv=I(JSt1Y z27?IyvcH4YV{FCv!+_c6_f?1ro&R>me8}cLq-&*Vi0g<3L$o|$!deLCjSs)+Aoy)k zg@B#d@Pl5v)Nmomsb#YK(Tggx37?ePUnOl@dkr#28X!>z7~zCo5wN(T5Ab4|KWG1X z(uGKeNiqc${e&sMHa9wl@AVKKf|Nm~Q4@^9ui$yUFZy4SANcMBoPdgf5{XIo%O5k; z1Wm>57rmnF3os8z2gr|LAg>*K-X@KIm6Hr~RDQXHnbM#p5otjQPEAy#x|Jy|wh1wb z(iM}PV3K7k6lWAJk-|lH2*!J^9(Qr4JY$lbgLh;wWO4lUtU#|u9V3cjwEC>|V5(}2 zios>Q>S>DO9(i0V7d|#N_YO=Lp1u=}}PGC+ckWn-1 z+i1M6yZO_4(Py#r`hiiMghv6jN2Sqh=V#h_^eJN_hB5;EK|cd$p}kf{Yq79wtG@D( zqIx{z&{jv1tF2aMPxl&1DK1-D6H7z~w8{2DZb~n@-=!Tp-nY4X`0e!a9l~xwB`Bww zm$%og7+zEOcwxl_!tMZ>^fUo@>D)1e^&iyjywj#y=%VG~@RUZgdl>h=@Y}hy#7605oN+v}(_oSdt?St~$b-GyO8f5^Pq!2Ot%4GTe zR>be2vpk2NUVX(h)R+YwcHiBWM=-1L@oQCiL`2cmdfKP1RlAE=5hLU-9LeJN{?C8x z#X10qV|X0l{T#n-lYggdqiG7|bhj@uBzx*l_^t8>czW@Vf|J>cv_J5vt;XB#)ucFB zjOp(Tna0k|Ie!X!HUPa_XPK-IF-#-wmUZ}MBAXMj6Y z>r^5)=i*?;IYis95N`>0>mfSz#B6AlpcEx?V1t|RBZDxgRz3MC6Yzz!Z-~31vZvAS z07D2)yxnt^LeeEA?iXvJNtKdQgAT97E1%OiRsbK}4KV(+!4t55 zxlf(&{|82l7W=SU;!Ko8*(wX}dCnvt(3anixWB=ZMxYtk$NVQ5`M(;{zDixt+p<0M z!UYiErL%*P)xx}^Iw%!>#Zd>bLCAAQLcMN_WWAr5^(vy*2p@3P*f#Invfj~P$ZRWW z8gw&eq3|g2tc{<(O=YW4HsI~*ygnmLQ9mJK8XC5G!pqEK~3#9ypiQ!OgcOl-?P}5(R;QeYGC-^y>TZK9u;W{88$NI+FsY zxk2wVqn3!tBzU-1tv0HE$jd^+0Qx&N6!On<3tv1Zkky8rak)5blay<1 z6iF@4c@2$<%@7*$aMov5`>ra>Io1CnpJAE&<`jA+M@Mu=M#KRC2|t4aFQV`@rBT<~ zLvNHBbdRO*ftK&n<_a|2K7J37)~ESeS1$`!c4s{zS;`&ZQ0wVoOpO9B2@-KLSL`(i z@%Vv-7!42b8@Z*1eRYIWW+JE8lO9&0PPK=$IVTZ{2AZ5JE7jU#Mc6mu_&;P{`BBJP z-lHar7xvP8Axid$NO+^6cNNdqaPpT0@ke5t)fC>&6ld>nCmnjNqVdt|-4wyK5~6r9 zga6OhZx^!R$(Q7`ug<}^ZP9OP)*=J4bWVTmV$4L+r^COb%F~do(cfMLz~nHo?gLA= z0$LPxp;DGOd{p$R64CrI)TR~=U*tZ#r_{IUO1ebhd~g=a*oc)L*1x=AHZ@wLJrM@s zy#L)7SA>E|Gh7)&^=W6ls~ad8<3DM4jgBbXQ;hmWXPglWYmX zG(WjinEn5RcELukk9jtyKM&F$?f7^w0CQsjDB{jz;yUlvNWe@hApd&&o+KSWd2rjN zA#B7r9Oh%-b$X!aB(MyW-FtDfN&z&e>W}9?772iktVH0SjZ-r!0WEm-qb*9~PU9rE z`Cn~w@S3WAVh>}UpZVNlOiCzR#pyCdL!#xL?te`!Kd)mKQfDLnjgq7##h&TqU&rqd zoJs}lx6A!Q8z&$DEy=YAeTT8%F(PupTbU3%RGkgAz#f)e6Y5i?eaCFV0sJb_4sMCY zz^lk1wTDA-0lNfhLA5JG*y!&;u_&bQm@ngk=foVS`({56(VEi3Ho zf>+#ra`G2ohXZOcM9Fq(FfquX^OW(;KWYD9S@^(-)QMr?CC?`*P*d?r>F-HYLSrO@ za}uOT+36xXfcG7=c+PYl)V1>6%G}*z6X{se;xG>nWE%-olFKXUQ9brI87o=TD12J) z^Xloc;Ab2bd|v#$TQfyXzRiDn(Z5#r`#sW(<;B1B^p6~xL<%&VOcz;J2vLBpIi=r4 zqGwP%Gp}p^sNH90QWX(@B=L)4hi-v2Py+X=8~b#D^tVY9wT%ySS6Xh>9WO7_qUMO= zI!_a1zKs8zO(C%|`O}Ec#yTg}SkTZEQM>BJMa@s8xfh0mH6e*;qVBtP!bt3HxmOms zVQj^y6j`n^J&8Ddz0yQ5brwf2+fBA=J-wL5OUKFi51|d`aTTO#OzkM-D3sfzn6V66 zZl6e%91`qUMp?AWLZ0V&X`e? zjSXVhT`|ah7_Qj&M@Sf*>JgcQlps10YuGINk>eh$QnhaogI(B=Og;AAOI-z*(G+;N z?AjiQiwaulxp&9?CtUC+n+9a4D}w6a#|Og<3aimJ9NUvksIiLR8MEwTUL<9{Vl3ne z@gK&}kg^y0JmJ(ekr8q>B(})Xm7~W^`mb!MXK{^j=1hNtd7L)W3_6pPUgOf+bPM!M(6Zq?}HWb zh1`9aehpvgWCCuvwyafC(8}%c$_4b_FHxh~l}7TK&b!_=v8OFwG7JGjAStiCnBhf? zmo3*9^hT8W%_JH5?HD&IFjo;2(k{K19rGX`Ep*;JvY1ss)aDL#bLwOgmHnj3PBI6y zOWyN&=s=;IAT*E$ua5?Jo z^RtmgtK%47Jb%5Vfnh0kzZw7kQ_8dJUN~CyF85c-W|Q#rEA)x;vWXJ((ho_H`p6;3 z?)n)S_5--q#5UKGUXBaGwJq~uF#oLwg(J-Kg#MGX1|7am)Q7}+zD|)M)K9$ZLG)af zIjI-m+k@720%2Nie;}Uz62%--k-GB|dv_{bgbq14lc9~1#Lt^gO2Q>P8+Ldq1TMM# zY<%u3JbqLmmK~6ynSX)Ll=R%VkVjnBp(xXG+sb$`?l-Jk7TMj*h_wfs7sLmXKhq~2 zMkI8wN3yw5lttejoXN<|_-RW$|{{!J%TQ>(CbO!k|3#`(Duc z%j8}eIcL9IlT>N0&41)U6k_0s`#me(new)N`-8k|cl#rZrlvFDv&zZa1q%=feBDjB z14IO7;21IN4{?MA1JcsYbMn*#S)attb%@RzPdV*Ur(ih84r4#oIrN9~TeHP|h+y4-bZ28)+MhoCc`cc6>1X=qTiHiyr9%6PKG!Z~ z)dr%r!z4<=pM5A=!k?d_8lNNJS0-5aP7>n84VP+4oyiZOPH%D__@6~MrPT@*Hcj$l z<8;oWd_5^_gFL5YW4{ow%%0qxm*i!(=tN~NzI&|vu9ky{0~3ru6>PpYTeSUnQR%;5Fzg@IkRKp- z8L^afL*FSr@fcrKbqUj?1r(%LAMv&hZeCL0z;3>=6yXbpJpPFwq`{0Lz99)Gr)H37 z-^0@vks56&yy$3!c@XJ0csldxW;3;TY4C^s?F7 z;`yC~u%1C@NO-&QWd<^$bw^Aj@EQt0&2f;PIKD3ZODO1uJjfRI7DY4JtQ0ht|E?2G zs2Y^30q~p8XQ5>2kpZEV^2A&Mwm|}5!+uHkDiNr6QJ&{|13lzv{b7Om%EYW{!JYTR zVTWcet0!%)xU6hps%m>t2?FNXDY2$n1lq85W#_BCFOIgPWV$VDP%VR)1Nx>7O#Zf; z!$#P9UN5k->G4d=a-oF4|H}sjY~ZvP8&#&E4>`0T8u;5v(e_&AoYrI z>`Yx1JksaK$F9EuqKf^9_VYyiSn5|^)PJBd#iE~YRyD7Fq4JNDe7u+N= z1g>5+q+A*|jeaoknmW@t51cg&Q=ZGM5)BaU$${@6$|A8d7spBktjokrwRc#{*ddHV z4X#gb1&QsQ!>29$7EgGN(4wxTCs^8^OVRGw*URHckiSCje5lq^uCVW!^88p&7io0= zeNavV85mx+-H7rzc|5*;h}tJew|coJkMSn<&4`jPw#&04Q9)`6L+J0f67@OK7~i6m zyw;nHuO7qJt$RXms=MQVNq%X#WU#P7KAEKRUb>Qml@AUz%eweFKbP`o-H_w_5qyGt z7E38@l&Jabv5ei}*H_q^(Kzm*n>*0E9OlT~eV;KlT|I{GiigrfpU8BDLR0ot6Pv4K zTPrO@!Gb*QOHL$tJM1E+28$nf{|%vL7^^|fg0j1#d2F!j*5tf?ue_?_$zWnWmu{LS z&SqhV6oMiwfJ0F?zC6#Xlryfz=PE3{l<@+9nS(rbjxy0<&@dK4g4?Y&9M8!OulP80m}vyYb&V`ye&sjX+eqHH-JEnVJ7R;qF=>;$ z89KA={OvWpnQ1u%4S|(#Vp_3rUOZBq>EQvC0gQ1T&QeNyiWuqE z(sIa)U{fNNs9E+mR-99^cKgi|w`pMW=PSOpU0bsPESUs&7DCwFX_@WGF~}+o+l)8E zKWZIoG?QzdG&)YJ6hVsD-3mshg%8Cqeq(BInC zCV2k~vD2{|QnNK}G;UHA|Bik%t|F7Fy-T+8HvKdIQ<=uSDH2+0)zUh)THVQlb?pAj zVZtB727ImDp-1zr_rvNGnT1;*TXoWlsV{b)NDcm7{o%?vy>T^ZJ^5XZIMSM8ofNb* zuLSpGFIjCZ4KbRJGHy{Sp!jg!eRoYlVNa!l1!Hy!We8lGXub~bYtQKT^*_leBDspc zmzNFp^|XQV$51P*Cl*e*?{__rb{Ho>ditI7Ii`F*fkhF(;ixw!@`pc^grV~4LOunf z5PD6Ih-9m$iO1J?J^ci`249yKRxe2jOgrRNU~cdnW{--0@?ls!hA*Fd6h7r7bS2)- ziIliar<+qR$V+*NnXS|jW}&yqtYeX&jFP{`p1-mbu(IW<(YXBG*2JVgTtJwRyW&?e z*ExLTZ}C=jHLE#hdQXf9JuLg@%lU8K@l90m(Mh?UoF8b?lcp|Ll(pQbMdaQMjcN>bZY)264M}Emwbw%kCiJS|9(TQiBeLnQMqx8u=UA z&NAl>pFvrpG3+RPSY;SG88|uVXM~04lmYDb&fX8wB*5A-*My`9DsCf>eq}q;EfBzm zVvfx|M6VCZirUIQWE(oV$(0;A&@+(6!ZDoAx%zC}ftXYid&hnk7W@VmE!Oj_ejeRb zbhpvDPr}W){E(t?bJTQL8~EQ4)T+gzy9@V%$3NF;$$&QY6o0uD&`xBz$|FIZM8URM zjM123h}qf_`2L*=r6Rt8yVNy@#{~0k)N44PAiN(R~e6Kw;x{7!?PxC-lUHX z3m9Fb%EG3*{3R|aejgN@w}E||WC+Ntb9O@$Mw!0@>L`nq9+&rRw83fEBiR>bz6TWz zWqM|amcO$?pWznA95euVr0t;vBm$lDOe`OcXR<-`6`)YWbbb9f$8+-{Qyw;R^6d0v z0POoyjI=_~%{ zFUmr+)U562BD~Kn3VQXVNVp#+OG!hgnM`MQ+-=YTFmr}NKiP9(99A%==EssPqAT<~ z9TOVP*Z3JvVkw*Oo?2$k*G$D0B3zaLgU0@Sw`N)~HyXRKa>(=St#G1uQqBB>61oSU zbJF#c*!=^NwQ zv;W!J;xX3k$7po4eO_EI+?rRdAxiOdXGHx+m`B1dJDS5Qbjw%FUIoj_LQx=EN1Y$? zCY2E6QH(njU@#%d15~X_X*ARsT>)PE6y3hD))%-OabH5OOO1%Z$!?eVm z&e@Mf@t*p9T+u==ti3{{E7iJ@o!f<~x$dyEK9S+SFSBwlZNqSk{t6m)iIJcz1R1A_ z16nj>QF2n`6>)Pymo3@-#T)md>!`e{o2GlZ+r|k=Iv3Qno_*i4GNN@<8WP-eP<-BH zd|5@K3dk05H}PMsl>wV)h)m~nXm$-K^C-`e9wP^NN0MXneN`n@8Q_Yv{mlv6PQX~H zTvlK)hYU72)*9ZoYXFq<)AzjMe0suEU-(o+$zcOh_%$z^%)Djr>U$u({qCbd~d zmSqXn?Lok)L(J_1zxLAS+a}A(WX4K=OvspL zIQJYw0VWH7W6=5dkD6#A0Oq-h0?VETfgTluU{ShQutWmQ{s{BYK;3zQ;y^nDc?CAa z1)u$A)sxP9X&3APN(Q!IDTMJjOFA3vx_qJ;aGObD*_q>MzV}(Y8X^}cb~e#O{UxSLfTLSo? zEK;73^B}#7Ay^UKb78VVA&8lR8T>l7E2_8n`0uLkI6h2)%D3a&;w|pbs2s?{`8Hxd zE}fVZS_|+#5~386e%qb*L%#%{8weJaG?pyABZEv(7@@}(2r%fH%9&YDE8RwgL&G5% zLvG4sY(K-agd)S=)}CCxNj93={g#Lhq!v)#?BQ6EY)r^DPg|#l;aS5%xAxLxIe?W` zcnVJdB|7BOiCY>6*pBGcR^;Rf2W5i1f{^)}jstUc_Iu>Lfg)YaUXbRrv-TN_3x1WW zX`W7BqlRj@YHGkjLM_7fA5P9`BALU%q=t>C3+40VxzH!&)nlUqw=%9b_czpgDLZKp z;750$*VOC6;iDyPMLnPK6SMiFR{tXn_+$ckYu=IZWDs)+3E@c&0gVV|tCF88x=;Bu zp&Y%pr2aA9lYr1&35`PJZXUhGXdnml57yi`G%wxAXh*vH3%$wz#Fvmm&}zf1<429p zxPRE$BrqkrQ8YIND{2{sgx+{yPJvXn(nGGtZiv8j3JM#d1jqFRqrVRh;_i2x{eNbW zVrCdAF7=t*b8}_0$ik--gvF;>pMM?5C`O|y^Qm>T3N&!6>dI{x>iXT0!eBbwO->E< z<9#0-)9ey`S~>Q)tXj~YtBR{`Jj2q57aM2%i;(1nh+g)OPb0|xSAXIp%e$1$7N)zv z<4O^O3HN1Rs76x`W+x{tm|hg892GNCVnaC-{+xP-hMNZ-D9q5c;#Kx{ZC_QXuk2dX|@aF;dgbIlp&u%tLDs5pA74yXaRNRKO94^m1y}%kLn4e1A0_|d?h7?&ZB>>1 zZ+|_wkW$~N08JOTu!pJnLbmuvq8<1!+Ml@p6Ii(cqAjRoz=_iN1DAZNb?Uj{ge zF8nrLZoX*RSrpK#BgkD0cHcV8M3FMj8h}S3tsWv+;xK194fEUJ$fX9nHo(ygKWvt< z2*iMC$AKAW6EA=Fw>Zn`^i2?^#ewEmCUey}2sC8&u5H-RjDz$Ge!yLn*>xvl+M%RBU*+q-X3StMQUkj}i6kOj0}|#Q z18JwyEw*3n?e95PW?y6BFx<80z`x9gJb;;8WSQ_VF{P&>9v)2hjqG29r7jF|x1KcD zR)*l||At<_mOJ5iqonLypAPN*c^M2MUu5vtpzibOq%zdmBV3DmgMe|@J9=%aCjR*Q zRUosuMW1FIkqJ2DdxIf=n(}wv$UlZhU+8{hOb$=JP;6@249Nr!{bsxP^<`-R9ieK& z1UurG%qaIYEb1bC)V2=37kUzo&7%gW+iVlBPScUj%& z`hnr*JI2kLT-mCFjx;G#{@#bi)jd8g6}lhL`p_ho32k8;=-0D0 z!;kFbOzIi1dmu)4cqghfs8r}47Hay|9hs9Q0MN1UQ7ihp*wJMzsd&P1&prENIgU^f z4euA%-|IcLZqp@GoOCW7kW=}Rn*-e7N439*VvI*2@ii!3uHzfO;!_PO7&XI*8IWD_ zpcVp-m{t*vpM(M~RzwtQX$-kEXnoIj%^Ha)d(9s9zJM8cwxBQK&Q*jq2_b`KvEU!r z=8GtoJI?)Q0{k*S1A?4ayD8-Yr9n!^0&!G0@Y>__A@SOI1tK==8q zn?+j|2H+9$`1_el*jPj}{Va9$&F~`}2KA*qU!+r|#S2s;j4dcbt)~%0$qzOj<62!w zFf(-8H@uC^w^;J>MumtnZr`$A{$D@M{>HppxrI3Aj3fRke!bt%wdF*Td!~=;&tCax*?8Ro6 zZ!Hb@5#M)mGTeQ&uL67s3v6@~pADbH!OTKWFY*IG4X=<2kL zSLo@iKCr-cLRJ_5&4_b(w@S3anaywBhSqmg0&T|l)n;4YgJKlIz?jJs=+9fZn zaaG_SD2Fe}|9qXw51$v}u0C?qw1cp&8_mlfytbY4S01_lt|3_LQTA|8Wl9#~QGHAj zT4+ytk5?J+_{&MHQq+EMtm)Z^%4Y;OG)E-nB=DH0<}I}^%V$88`|B!2jv&t*B@Va8 z%0d?A?QsWT0*WU4z9bclz(kFwxSJ&Lr7|tZMgzl#g9#)Yf?8W{1K|L6+n;-6%M6XA z-R4qYV*asTA=K9kS*7W<#Ed5a%Y%*hz{S zK9>l3sI5Etn_@f@>;_zpv<1|ZIuCl7c{!q0uZTfql6@j>IB3^G_fW!{c^0ICV6KFh zieSJNn7CQgqPvFG|H^_+VI%8r&{_*7dF~}0fFfedRwF7<(*rS}yVAY_x}%#WC`s(B zD0Duv&FZ+7|HD_?MniZRwhJ`}-}+QA!U14YpR1(+^vU3rq4V-55_HD`sSaxB?e(9h9ku`B3V0a8;I*O4H z(%dPY6PLy82w()2;r(_@z90dw8Ok<;@>0$pHnjZHgJx{ji`q=1$*(T86Htr?By_MiC$Q{!Z+`*M&4a&nAJDNob{74?EBuCHdq4&nplvKu_Z%JTyZL zJD|NrXUB(WHSBCg|M0Q)tzBQMrpzMaXnU0vEMah_Onop!dS4AA82&;Q7-9zh=ZtK% z@O1%d9lf72>6*X<;-uYurV#_t|byHv9U%QVjA^qI{2&&njX8FdEuas4~ zlAA!DmO<%6JhS07+@x(f&&OyqKd*i_whHhOX{hW1XOxy>BPCV|BsZuLVT43cBpreI z@i{wc=_#DEd8PU+w}}g!FC3zclBL3t_en9>cwAGZ1^dGFU!ETaG)mW52As&`Y4eD$ z`hj#T@l2_ZH6_Nq6qwbdB*A{87hboQ*Qz_#{0-r5mn`@*&C%J6^BFZILv(ZFzxcg9 z6*^Sv_v?oiCe0SY9bd0i%2&DT&a$7|0r2n63Wck(ANQLJX#2OzzhYUH4TG1QP@ipu z>y*V5z1x$dI>6>#w)vngz4M#K$#vF%3_U9TJK#;6O3?j%uq|jg$A!bDjqri4l1G?& z52`x16@YcH)y?bt@{0P2dJHIg!0cf9-S3Pm6VkyZD0J%`ypR4F?^#8^lEo-c6NS3% zU3qI1%AC2wfl0G}k~%s5Tk;hxab=Wy-LX=N|CZ$IYYs9e8=V6;txBICzM3;$_qJyK z?Tj6pqVG*jj*Ywu=0AF0r6PFNpfcVM@9qf%VIWT$w8-tSWFP`O8kK(nl2Qjv!?h0B zl${|<=ZF+e28=FX6gB_K5Xu##)>-qACSKCPUIApG13pDK;enm?DtV|3{h8ohqkHL9 zaUy60N?#u_j1S`7DMUg6#DK>h9&URi{##|05HOtobf`To3I7>_NRF!#57^pdzWgr! z$SgxIVD6XzRX*=c{m5g^6ADW?5B@qPDtBdpnw)<%w3YU2O->(;B^xxVge4_+=Mnvp z`@I>IPJ~?fq2a+XT8(fX#gbf+Ml(N1mxh-ukOCN7pU^uNyfHKWaG3G15d0Y^cNV{o z+5e8;SR9Ch7Sg!i+}B2=ZXi_feFGK-t9Km;$Z`l1waCmF&aGjn@4}byg3I9bi&Htsdb?!USS^e_ zk?<9+ypW26+cnEe%*_Twk9Uv!qZJ@0w&ck(HM*Nl!w$>PHq#B!asnK+TYSfZ;}lFT zIvrZ;{006_idZv6qR{KQ@>UaM&!$EZS;D|FVnrOoxecOQ+rYRR(GSyxZ&ibDWCDD? zkitU04USd(CtOSCB;8-Q@r8VLn{M^t$isscnZNssY1kYn7$cMt!(9{+AH2fPiH8Mt z9Ip$GFXU*6y01_MVJ_DZAZt2zOdL;=hu=yhM89ZfMNyfMPw0!3ocB`9@y5#|js6Y} z7V3N3ToN)=C*wnb7d=^XXf7z&^U|;o&t%_45up)hTj8flyWQ?Mc}8pK)81$&2h5Cp z4HIl!`WiDByMc3DI+_qNS-Sg+@T!uWI!xq+>?B%zMq0+|9}z;BfXB(i5$sD|Ewu`5 z{D#iO=QbL_q~whd(AtjBo$lmdx$67s*uDCFvS-EQ6qQ&S1t0i%bHWZvkHo2W>;>6; zN4aJH(5Jo%B}px5{UB4)jXRpF`E%y{z6l*wX2knB<3d5P43jN*)P@OOO)GoFW}^1? z`QhFE*Kh}sO9WO3hefSi=Hh6@rhPq2e^u+%>3;wHvK{z>{^7VUaJbUyD<>dSQ1DBr zApU}$=0*PAks+TS>ljluib2o*JdV7Ryk~brC>c%rX5<)IXjb zP!VWLHXdxTf;_|b4U@2dOqP--S$L5KLuz0VTKZaUI%@j~SXqHE6E+PB69gV`UoJ<) zjjpgG=gUvbbI=mcD~bQ}5zyAXs3@3F7Xc~@3Qs`%M3<03w)bXh-*%g2Z&gVkcULH@ z@=Xm}3-V0}*{4s>HQxfc&bUFujs0D@+OUE$e3(q`?pWTgWGwi|c~O4dS2%9>X+iG; znv5OsfOG2t$+#*VeK{J81JsVd&^kbZ{b+xdKG z0nsNzg9uUzMDG|i*!-llh*0F0qCPLN90y*Ij{J+Gw;#CW29sX~_Armz-bgj1moG1E z#cYHvLGPVc(Umom|3q*M3+V&<(h!!}Y-KQ_Jpd7dQ;kM;?LKcB-}#K{yi+d!s$Na_ z<9wdGQ^Ad1*61u2;aMe*p_RfEI-Gw9L2*`)=FEs>6^ROLQeoI8zM$P%s*ly0WR?|q zMgn91CgN#rOikwf#(OX|N-U5t>zHRu+J&(5WkOF;9(mv^=kgmh7Pa81-lb+k=hGZS z>Hi3`G3@p;NxmzlbK?oMxT;`PG})`gi^)gJ!-VZ`wcPBnFw)BseE z&HM*m#A;e-!u{dvztC1Ly`fH*Y zbX|B$Ice@l&yvjfEn4E1td??G-#0#<$-CGa+e!Xd_5Bl=tmvHtMHM(4kSrI`CHFgoT?mZ0z6M+tM z?&h~b;art&_cL!0OBE$TCFeH@zof{A;3K}BFRPsoVUp)ZWF~249ZZ+NNvqv0;Bv%f z?kwO}dTWG_(B`~WSb$BUh0piA)C`cyhsh%v0xo$d!JV7{=AqFgbe$C?Xg@9l)XRF> zNsk^Zr4fMjz1wjT<6l?NiJFhC8J9p3O1#MbEl55rE{P@_N`7MbaMRi0NSYuCT;U87 zft=k?OO|qgySEWnrH9{s-@<$|`>T za;H!AI|C;TPeu~)7)$ht!O{;%F0(=rKzJ9o$EFU7h00z+q2Jufp5-RO91G@7>NnH! z?<+H^cIc`x*Lu`UI?U?MazBo0kn^T%&N#{TW|t)BKJ}slB`Rk*c2Vx2=hNt?czsOr z`eW8h(?TrcGbxzAt0m1^mi}Ks| zJFOUW{GTeDXIC#u|A0;<9rCrLnh>T}+re5FYqhSo2b3y;@AI*K%>7d(tE%&^D9#xUg)Z4iSHDq-&!+}bmGtVilBaxh`gETxy!#k^o)!IN zXkEsrhUSqfag4|MZQPHts3YhBTnc#nR+*6o0z^jYyBle6t_YH-HrD#td2KSgP!B+| z6o586MCwjXPRo`L=mdbX2%w;LgC5U1vnD~nHtTKJJiTrJ><-1gQT-gc>hx zr$v0Nk(sgo{!mIVi7IV9SQbcWz**$~p@6!^Onr$2IIt>n$ zN}Uv@<3ih`@LqCFni3~>R|^ccIW+u|oZl)ptmid+j6)3WYytDo<6x|5cgmDz^?Pz< zhD3BmPSH644C&)dP=IvgYg$UVQ|&HG3Lngh*Njo`%$#|y!nFu724oZ&nO*>$nh~$c zp`{h7DwM;Y+v-i{NM157FTxaheQ+*J<1ZnBl!g3*MtI;aq7X7K#IqplSGr=_#_=fCVcB zy16oBA&^0J75ONrof!4>z)A#)=I!IhgWbH>5uGCOP5UTFtNIn=I}W3i3FHsW2lVZI zUwKNXmd;Ih$lfJ4<|Uv}pAIIq*WbNyc1#jgose6<0kLRLDHzGWCbm>duiE_c)>;a) zis~cQc8J}DYd8Bp=iFu`e6c_%$XTVMde`To##;*hV`)f2=h(=ULtkAJSBz_kqJ_~l zw$LQ)fu;T@?kA#IXb@nIn*iHO=dhhCje^f-E+6aQd^G|y%a(J07!7Y@P{WiE+8&41 z*+O+xHGb2?rhaC{z?id9S1|dZuXx?6$m{ZFp3Py7d9CVI75t9NNzAV@-RRfM6?E;Y zU++J$@`FtOr@Pdys7fTEiEL;)V~rkoc=j*A5>(=zgRu;DD<>fV06HQM^7$NJ+W4vg zKg2&gg?1=Ck>BhK(CLwvD{2Wb3~0^28GkBTB3P!+28wW&`YZ@{cAVtADUf~gOO{3t z4nC-d^ra{eb36vk^zW|%>ybD}nPv!lGE?bhDdtU2CzYM6X<)rV!;N3veW~EwywKZAh&p;B$CJjOopz;EXkw@6unq*5 zA7)p1?tyoz#R5rS0mJFmSQZ^A(d`{LP;G0i!e@SnGwA-w)pR7HB# zB?1VY+X4M*=3{0R;#2j3nnKmC7%sX&MEqn==S{d6ipQeun{>&QHuu9Z&iw^j>9)?jx6cN(ew)zm6UQ$O{NNnD0SssZD{)7+XAQHP-ZiQZ79?-dy7vbtQ+I24f5&#=Sa(3S!p%! zn!xzf>a%ER*$Syv{qfMvBa9wRPN!hbdOhr2R~!|hn*4G84KIVXn%HkK??V!)XAGUf z#pFsS-v{XL+h!lSj3HgIHDp?b)0*PelznftO7!OEs97&tbE1`%CCp_`=m(;y_!1TPC>p_^N~>R3We=7Bucvz)J6_0ugu0~`V(X7) zbLuvR3H{+~lV9nE!ZdYKRD!MycGTK(Ln$nWC)ChP)u@p7C8eIp_B^S5?(W=W5`Io1 z4Yt3;;FCsi75^bj%?jNtq-+P!096&6JX9%W|Dew-$lFX~VYOLi`YYc_Vbqb;4`Y_N zxj3EofpR4Hh1_c}Slh(yTP2tkN8(tGldLj1VF^a#k0D5+St1y+gB^_`LLfds-bl}I zvpRbr(Fckr-~cNVojwq7pK99#-p(UoalZFgZ)6Y`PPf5QUOxXd5mzX%MzyG$!V&Yn zzve~juT-NGM+?1Eg_Ec_5=eI}#xK0b|smO+}3fk3(-5Oq(Owjb-CP(SU?b=!Nw!8XsgTZs0K$bUA}r%gNioj0sk z!8kwcN8Yx~{=0{N$nXFISEsug)#`iVMMtQQoEd52Bnsy<*WhR=R2|5a?z#G22h0QT z7R7u%-|&PEndAW^er$CbYvO@nKCeKvJO$Vu)3T6-c4w8llgyiOJw$M{qkZRRqB+iyxVHtuQj0a1}wp^7J?clqTq6xUxP#XeDY9jpx1>U-PxRsP0kHioBP?I`* zjLHP=Y4;>`?-`}LGbXU^(SY6W9YAT66}aXDPmw@26*#%lWkYE&Ml?TP9s&-0EqK0E zUTRJIC!9CSH=|*p|4$ZAlr_mkGPU9{snWdi2~HbX^{a$#$9z4t&p)rZ7+t2G$PxEd zHZuO*turEy+rH>FB&ryi^Q4P`qt%Bx*t>t??T3=zX)A}s@E>ouYs#f)|Mlu7(o=Go z=fsPlQqWk=|9yDdt9(EYSAbd`28QJc2g$~U6uqhS*Lnz)W}@X2{PU~=R9j{e&slp7 zW)kjJ{VvIiC%E~WRk8lU(FQnMEB1L$C}($U^Kc})fSfZXF;y3xZrNt#eIAjuibGRq z{FxPh)PT#!LLEi>2*N^bG1<4>TJJ{UYw_E;zDZ6H7HhzWSK~jmIWCDBEMR+hXB@nr zl!*(NyB|jE?A$KgJsrHt)9XYQ{(TAnRV<*`2kAZf8_UwXem<>h(eUm;7)rJwnm+%n zY_sZ9aY8W1ox4)5+mhyJwtwde;_AYASjOSdpdX8+qN2ztKofxm5rr!B@YS4q$ z=(r6eqbh>Y)(G%{W%{)|$5~ddq|wExt&BJgr@-g+xDu~i+c{r5eU3G{=8HF&(O=Ww z%_2MisS?>uG9aSPQzr6QQN%Ok=O}l4UD9dx#ZW$Y=@EU+tD#F@@scNqL$7_koclyL za!%1%(3C24b;x!GTB8nlZ9tP=FK!N~I!zgv0qOwT+9?6CAKe8;=V-y5UqMwTF0UP; zD$&bpN3Rc3tZR?};T8;UN4)gU7{$s(Qg@+lt(DT;JgLskKW zeFA=9{_$6il7btsv8eq5_{yxA#6X>u-vjY~MgtbEa}>mHTjIhTHFzQj;BmjDZQM*$ zdD*l%NszDdx~6UM=oh*l0Lgb++|?PVeuQ1 zagxGC=@FE*!Z;W`=M(CF9WN~socC}^&tSfqF9Ruim}-S|NeB>oy$bB%)kF%^A@=y< z?ld4}BZ3N1Ui?$;niOZ1$D|fCwNeE9^cU1#)b#L9FUO?(XJng=%qJ#@lMhN3#GwaJUFhsl7$DfaZeKb0Ce>JVADbw-oYc<;q?TcQzaH>WIIvb$ z3u_z#z%+x>c>MNTg0eB%&`D8miR34yhKc57J_nQbUo?z9du{N&QrD2}WvT(&%cX?JR|nHy7Prs1Jj+S+ILnioJpWATIekrY zLN6>|75-fOhZ8^gt2f^MJV9;{#2K^(eqIHSxto)E zn7tQT_2cch+oslmHQbGOu4YI*9Q!uGXYcPCRw-7Q;Ju!+4Xgei{V$eduSP~O4#??0 zM-$M0t~lvf9SJ}@#acE%GAYe{yfinu8K#K-U0aSzls(R`VQb;-Nlth zV~A`lt|rR?-r~+N$Vw#bef=)F&I(fGufhkJEIqKBV)nYdtibGzBU0p98%e{|Vbeq@ zXv$Y(^uex_CBtX2$Mhh0r9*5%EZc0jU&K$goBgxp+kD>;S^TVc4}+J8qnQgnS=+i} zzMz|TtT8(-4VOJyZ{#B^SwC)XC)jHH1{r*;`2<5QBl4e4c&dAz|117{-)bU8_$buR zTKe>q8Zy$gv@}A+XuUp2$Irhcg;)0N#FqaX@aLeJcy_8qNKbZ)^oh+V6h1wFqy2R6 zJ%7vOz%Mlhy@6Lli$iFxShz_f-Ek&$?Ta$%CxxEl|JxldZR})WuFwLhJi9bixOGMX-c z9UXL-`TCc}zXp@e@-X=^HvXN1{rCGDV28fc$Tp9Ypmv|y@^x{q`q76==ZfophqUu{ z?6{*78YukgW}M?@&RRExR2_j>$TgI>*JO;`zxKsfY?lkP{qeCTPe zLrgTAG&BCvn<-?vOl>bOQ^rpu(f*i#)SYFKHK(rLy~{J$Q}LM~j7NE>&_FpS?8)H4 zQ8$ibu7jgzl14`zNW3NOB3uB^Gs)e`u0E&tA$5sU%YIDDVD z2Z(PCnLoo1{Fh(Yz>Pd1>?(1!F@s}o89g&us4VjPPOxFQ9ibR@sjN> zeZw~ErR%cb3r3eP^-qf|j@OpD1$<;0B;XRxCE@IO$(4QkdK6GC>AWf#F<&ta%7lFY z1FvFGQD#agW-YulAWiW(T{iSm!DHf{U4ooMEcIW=lKhS$onO~wiXK^Wqe&ru|%m=jM{5#rjrKV7f*dSk(8(OTAkzf7^v zNFa7(@&A%92}nW`SPS`znyjWJ^=ItpyZskN#eDmJSI~s7+#PfZu5!xb1BRj_=AKh9Y}HwxxL^n)fWdM{p3ggb&M_jHaG)Sssn@MsWQ z1mgBiQD&k{xA0h+rul5dtYX3jmy9vzH>~VjZ4z=g8sl@ot_)%}bz|(-kGn$i2ge4X zJ_ORiBa&}qW%gH1Irp72J$7bY413(D6(@A524aHyn`M(|a4UU?1!Cs*(Mpik)*DEo zJo$mI*O}X8JkUPc3h7U+L@f>1J4`DH_h@%x*DQ%nt zv?&hB=$;E4{ep(+D$fO>EF{*FS;#jt=G~Fc>i^J^RR;jPFwP%|%8xYb9?=het?3^I z>!#44FF9u5_6h%>%M0_JuH?ORSl*qjr30qIx)#cypPWA zAw~67@}ZvTXUzWlj)DAJ(GzLQvP}GFvU(;zCcLEm(_C?jtR&vAvTWh-_h{2>i>H?- zw&h7Hl^a(UZ)w$d0UJcJAh85Au5%Uwz?89+PXF4ILs7NgbO$T#_KIop-q@MPap_-? z4%QmK{@xV@}H-S}N!>@4(Y3@=k6$x^rL3X8| z7(r%pj^r7_mR?j*xo?H14PC#v9JaVtJA|qv%mMGU*{>@=>W(47e?cmq+)b~IB5S7S zwT_MUGd#MzR>QHNU5Ij@`VNS=&bo_PWuMRAj!*PLJo7{bl*hm4cPqd7kl5_xn%XBa zF&&0qg;t1h9C{o#q;#&PG;u4neTouC>)(xR1ClH>YXN}D3EAniWP4vDGl~_*RGYQ7 zKbwwre54epD^N3?9VWszZbj@DggdP|GKzffRwm2)S2ue-cza)C0%UVebZ}G0#O_5e zX~Yx~r`bFXgT|5yr5*U~T9F*{E1B>+d55}? z(60pIL>w2*kA8zUuVKpbc(A zs>SW?nxzuqUKkkT!x~XsqnS^>&+te ze$~gKgm(>Nf?%)xHSM`PHc8yt-PXdt5VQSRzZgeri{LN5Iu5UG)(>b}U47!SMT`d8 z=HIOx>iI8s%!s(GA7%5qS;n1ZH}$^nnv=3wKg$+&^_>`eYyx)r4Ral53cJD83_srW zuuT|k>`zra$N)-tsRvW$y&g;?dIvWR3Mv3DSV7EYb~U}Qa7z$U-k`OeVhHwU0DBB` zCzLd!OLzt+tSo);iR>dq2--PA*Trb+(Yh2bK)RU-5LFLl1YQ>u+sr#s0o(Bi0MJF- zNR4a2-~iKgsLdo%@2xFGlHc+<=dB2;D4YA15DU~AvzHwd0E@Z(C)Sh9?x7t}kYq!=3>!Y6|Db+f=>uF8$4I23X z^zAnD-+aNNRiDV8s>3~Q2|o^mofFA!tobpvAje6A+0|)~AwWM`L z`z$46)QtY=x26J$uuDou`Oa6;P%|`uMG@9qz~VVBQ(e>x-gh9J!w!JG(oCF*^8u{| z198h`7L(;bcWGasSFQ7<=Pu29?@Np>ZFV3j`WMwsw1yvqw08tQoNIT?YZ5Y)q9#yy z0VhR`)mxa(kwY1iu(HC>vGvnzX-254lG=!gI02CXQT=RNlwU$6ST5m4#>)iBk!+x^ zX2&Wni)}^=%oDSAdvn*v{p8RgcF+nYUwcwWGnk0|Io0;~wO5c2T+1)pJna~dq zEfk1)tQux8(Pa?9<2S?oN&pd%(NJ_7O?J=)ljN|D^RE&D zUhDJtLhYLI-v>b>AtJYHSB6@Y11#F4iew=42RVbpgQP-h)q|_-`Vu#U>3N%twTm|)GNkPhtyr@grdl*;2ZU6U%q)L>N9 z%u?}rh2^#?0*T`Loc)gZBbu0fJ)PXoLfyRe3@gG{_s8`6Zx{Fgw)B((ijgQG%w1&F zXeL#x?BrZb_*@RTQm0o0*YEh#jtG6Q&8T&mB@JoTTecYOk>;~+~> zh|g&M{RpYU-oZJ$76cfRBZXX$rN85jH>Ha zWaHPw%uGZD#v_vaPL{aD!Or&UR#n`Qo(YQ@F5ZS`jMPH*inS%NUu;?i5SBH}3#bQ{ z+P#8k1DNmT7*A(EF#L3pUwIFiW!V_QIAI>`SfaTlIS6(BbR)I;7OqbHk3b%IylID= z^=@c8)a>cfwo18G#CI-$(UQSS^-#D$B6J@%sbrUdBJwqYh4HOf&JH>3a&xXK|H#p8 z9cVRZbzK)X9jM2%+g_$hIzItNUx@gR)jN~Kqt6gff8zBaQ%`hpyL=hEADJFp?wu$L z!vDtQ{HYMGoEo%vFj7inCA%hR&oW6(pYv_%Pvhw#t_$%mJJ{yQq#l$9goz%8DKfq2 zt^HOn;qUMMlx>AzS0%icr~RVE-IC%W?~PO9N7xu?$N_8?Sr#TZS9MGb8{rylThyJV z0mD&#PGH5#`6|I!Qb{GAW^*)K%#>mg)^ozyANq}B{!F4H2xLH86%35Lz5N0JmUlP#J$Jty~~CK z`yQH=Hn}9xh*%epoFBC&tCsl!mJ?6jg};R)52QJZpmiy37)L-DXYUV*HK=j8ieg(| zOD)Ma)Bva;N#P+`m=?i*nibLJ4ly2_81^!%vH0s|W22n#sQ}h`<@qlRA=oNQZ2h>3 zLFlJI-iQjKKPlg1vEmsWsLGZLMocV#DmxX|?|-TEV0EzdZA*tar@(#`q>Kx1TUc1+ zj{Q{6Y5S4j(@0V(gkF~um?JMakO!pzzc^qA`1Aqf=p|{XS^dG7wG$?xuwM$FYnrG% z0sm%EHy&7e6(o)fK4xMXrMp<2GDQfgmZA&{G_#KI^ZqMv!^*HfFc=cGWS|y-XPkGz zjp~lc)#RS#v&!4mJ;G$@wkRgZ_Vt5B=RIsNZEcCkHucK(oKXDr#hJkD$F1cTQ8Pno zX7cFqt^)tA(HK4BcQdC->NM&86WusW36K+$rmRTwQ%v@C8?wV;U4>`{j6^?47hxkJP&5WR?I3MF~j`KtX8s^`tBIqh^B%n-UDI zJue`}!!A2gJB)-*xFt`6~a6ECtL)Z`w;c zm>#(-LIgq@03JQ{rWtO5ndA6j!aygCQDqc4PGAFA>Pu>iWBa%HOBNZ5Y*G5^25PvVUGiy}mx%mg1* zo0U+7F#gP<%QBqRbHFw-xKj!pWrU3>PVPOr^25Dd;lH$Wh8Tp8o+rg0d655 za2;slRZ{{pw22L7cKR>@=pCz*Xzs?qCS!F_VIh<;+XRDIQXOTKU~TdKz{VsrR0k%XQ+sE-rWC4J> z_-VWSJg|t!bw0KJ4`dXGye@B&J8t7Y{iYOA4U%69pH$i# ztXI8!B13NWB`lRd2*b&Gt@d3*pZgO&aHAFfmICgiA@*cEQm@pjWI5~&4G!NIvC{l? z=TerBOk_zLSxi%wG-sjDzB4!iutz^nocX+A`a<1MR14s{laYNV9yMgr7*@xBdzJkm zK(AykCzLIixPWefGh8QECP%_r@Z+noZEl~C`nQf92LXK|6}(@c*?L-mSc>T zeC$NNTh*FZa1mCBvCemV`fLZ;J?uX51-EO0g5wuYJ-@i0qTEe?L(wqtGQhCg<;+x9OFo5y-cc?ULBS z2=stfMOZ+meLcvm9GcVDoPs9b`z0&b#UG6vugW{zdr**urpVvFxeImHjrbuuB)x1d?2c}!ZY^d!V1>p= zt1FeT0pQgk56P%~^=xwr*Yc=C76R-199ky@US|K;l#zNk$N{c#mSJz< z0*dRYf3wZ1D#M=?;05e{x>ahE+<6RXIG>Xj)o9Sm7riUUc*wFnRBR87EdX#xfH$2; zsE2rVLmzl(OdP<%YSLmWCvY03ZcG44o7JhzLm?~p#W6G{qzlUC!&LG7b=W9!pq!dW zhJK*+`KVVz&R#kL2mP^p!m8wjEb$eZb;MGyU1YJj%N!p!$i3(BVGIBXV&F#sD6r7e zTKt{m`na!~vVI)+=}=g7vW@A5en{2YHBmf9)dx*}U+_t5J)2+7fFj!pfSaxL z&LI~Z3Z@N2BVD*) zW`(>VFD*8p2Bb)G&LlViSO;>Tx6(LpG7Ih{*<6e4BwKsTr3D3ULG;_T@cLdiUDhe| z!b;1(@I`Ja94+3rqM^5IZw`D%Nfu?OED&57p@?oPjR?5{Fd?>*SZD#tKOchQ98?2< z-Mt{GBX=QJ$zsr6aBqTG#QroH%3uz&(!zDxu@bW&%^($@yK@<8h$%9~qcENf_Gtw$ zs#X0D(N#J1d8XZ9=)UrZ&{XZxDS4mK^>2;-DiO$uo)mE0gFb z<)e_?uX)jBz@Sy9#rFV??tP=^4155!eBKNX^*Dm|k6PR|+RRrPZ40B`;xMNiQ?mu0 z9Zs~b$E;838^P3H!3JzSY!AWXcKS7+jvguDc3l&a$QL{Li#hE};!Z*Y-HR9MT|@o@ zEe&SnrwQGB52!7hluS&3tfSjc6=k#eH;I!o&KCHx!KwgBDijNfu4Hk*{mS9w>`IeK zSxNQVO$Y^m2V{P!i|8R>lVwBS`z_jxss^~7{7car%*NaNb~{nr%2TGDbr)igcy*8R zVAJ)I_f-KsFUO;LSE{(%VEMV#!?tl|?@ni|-)GKK zIu%s!T56RHph1r8IPmP?Zpf*42KR;JOtO;3w5DNK3`Y;1&qHNea%%Jwxj~OwrQ&Z; z))9Y361!CMKv%Cp9VtIrDu1G$l!TmuK%uGtkay-J*fmdYMJBzC;72 z=l&KjvSGC>gLQIG*{Gp25F6{-7$e5@<>n;5XS3kn!%j3i{gv3l)%TV8i5XQ*S=lBaY1)s+n0~#l_0DUi z82}>XU$j}xg>@`2-Q}yN&7GetW@;T9a4H+c9gjcOu*%D#wC^>#_-qx^TDac65S8~~ zgm0}Hu(f5Dsf&qx7cB(IipK~Hr1EX%urloP1>?S9+AQ-Xus{bU`Wj2($cp6qA_1i6 z50l~>hgg@RtJd0_sJ(QwPD<1`!fl5v@?W4;95@@*v<9NnpT%>S-&p~moE6Jtixy7i zN0RlKMuZfIlJ6d5^d?JL)Qbm|Qc}~fp|)Ou1HQO_7TO;XHa(27aW01n#v*;Ig0Su# z&m4sG>oxgcXGE%;tdJcls*1}HcHxfZTnV2vDrJ{Grt!4_Ys=U;lu#Xz3V-*#N-+xs zzqg$#h)}jBbNmHgKYkC6=JeoAS!~V(&-UH_ke+iqZ-eu^o-`0u4+wAN5qC^5`(WZv z7QNg^ZB9&SPUjwSZ?$0|g=TpRVR-^dp_iyd6Pa!%<^YjxIG<8HQv*6pq8T)-x zaX}c{cKSuLnu}fd_DWz_{b}yec@}x_Rbbv9XfNykk`Kh>cZ%T786O$rB|n+KI;d7@ z19a-FdmT%H{E^5P>La5BIn01?K)dq6GeYU$nf65PW25)Wu7)?i&43H-}q^@I=$pv2=pr%>(til ze<`<|E~#u4@L^*5tUC`YQ>8+G$}6<4!H+}d-^O;-*B=#YpH+_`mlr{}O&&kPq|N11 z2p?*Hn$zpR9hvhO2}!M}i;wR&?~^^zemU9FQ!9$6v*FrP9xi@i_r`C?OuK+?&Y}WC z5rh|NRE@JgTEEf}bN8|HHShv}x8_k%R!}`d}DK?d8lA7Z_^@cB^$TfgJIM6901j+}(RyzkY;BU-@F!NAu#x z9j$QtndSP1sd9H!gRhC){dIk}Np-71f>=-6_<_WS;O8FUrO|>-t*%M_uBlfp_4CJF zH?o|>_Ba;I4E=WedJ%EgXi%-?IIqVPA&!V3AiD`6*voeUgF zQhjP-Zf%0NH{C_jnfhHYoa`t2n9p}2Lb}jGmrwIKk}*%5(r+)29eyXfMumRUmCDk{Nztpzh`$Q3 zgDU!o^J6vGd5qf36!hT>6x}1%r15`+B|;Qk>+PA z=1FkRI)@z_z5CEySBBus>)0+85oWiYxjeV4YpnKk;gZ!!nD-yz0S=#hRS3^?+|YG* z$E`vO-$hWJH26m?y?=}TTo0nK8fM9Mc@A-qx?=brzSP9?FiIg+2iIMC6;}0#F5hudv1x5Qb^6(dF}$0f^IyMz^QrHG zbQqBE@vKHudAj7)9Zcl)(DF^Be67JtP2zDeO=+MUVf~~`?*I$>Fe}b}@fG(ujkS)a zI~h~%7#(G_r3+Vk`5{=&TE|rq;Wb{<3tu}em7(d!W<$q~+^Iez!3n@K*SeHL`OML~ z@9yxEHECGaRp@0vl~3~4F^hm+DMMpW1*Yt#TmGgr2hGqQ4T~g;) ze!@cm(=A4obZjav9436*9kXG4)uqCrujfWL5qD9{7awjbY5s1#Z-YBe=aPTgtaMQ%h2yH2MYI2q zF$EzXh+#IH?6;RH9dsExt^Wgy@CoxSXqqRF@exXaNb+YJ(k!*XKSZ6FjPG&+YF_4? z7_TR|+1Dwpm!zz4zDM$#!FeXwUCtj1YEzQ=Nzc3T`nWW_U&HOi*TZI4-u@1}9)Z4| zV7D51(HDefv(Zb^L(;#id~ygytBEX@gcL}|#G2;GFxJNkQIZN!M+7ljP?hZ7sO~#0 z{&UM*_y)gIFWv?6Uuxt+jKR6Lt|3;hk_RACdHt9YMA@ebEse}fpB06-4u7%%A$g*C zy2Gr*=O>+)E1`Zn@8uNw&-3Y?;!P1_WuE0)`R!?99#U=kbZSF4KOyJ~AcZ>$Nlz$s zuV3GF31A^ZX6%wcke!w2IHK6nwJ;V7MtU5(Dnf8d{Rh(DtlN7c8$LRN6AKcs3D&*CzP4Hwpx0ht*Kk+}; zc)Ps5=AKbbF(Ry1RKpe_mch0X+U(}@?UF#ouN^HVd}rEMHQVcN;U&J`eI8XQmCUv6 z>b^OdCwWNEGqmvBtru(c`d~U?EXd_1n8gBL>%_KEyLh?G3#rdr)>e)AD=M4n^WE5( zayb8Xdvz?bC%j(B6Mgf_sp)~@f#5<$ejcm(L&MWXC|(HU-J{fn42shYVTisV=PvLf zG!kk&&rzM3#2yUjQZ>9&FUhH1GqA(04;e(ff{YW+X9dO6Tm3-Xo@x<6J`2n}#2$o}xeQ8Xy?7D%QiH}fqON-uzyH8A!L@+Box5U*=n z+wS)p$25a?70-`wbt={;hsM7mt`v7Hrpw#}YK99XCKcwNds336zXvyB9#J4lS>1-; z{J0|RNx4=xVwG+ZaM)87OX0W}|!11qy*QVb3{c}->X~l`rD%@Cl8+m3P=(C;~4|5<-pZ-})ubenYKT(I2@rtK3%r~uk zR*3aj(TfF+42l8QhQ)M0@8)#b?&c)ASI)+Jm~+WpYAP*zL~FrCFG*bO*N3zTUh`}Y zI_xM1mL;+~l(9-jbREzC&=K(u{j03_DA3A6Z+y1qPD^ zTkO&$4vUp(?TSy@SLUa@Z04sLMRu251;)i(WU%s%@%usW(_SZz82)meh1al)@(y5)itYIt~-|^a(0AEg$N3Ksl=M6twYz*+*go=27o4Nkw1>rfEuqBXUSIFE- z!gPI%q)VpMAz!h0tcaA+2O$QlmpP?{mZ+VvZaiM*u1o}syQZJ6K(TsgLv+9b4p>lJ zDC$IfP?uBJg4ej{6ayHosi^0Wq$}_#-rvoB=I)WCh(1W3b-4`oyx+`emrl%Tcb?!u zpfb7hYDKPvd1iigTgTk&4P->j(1Kniwn;HT5yWOdo?lxH$>dq45xz<3fBeM@stBdCjKr7UD|)JZMkcTYiDJ77d;? zAT(yy^D*j}3hc9LMNn^5&Hn8N*nB;Y>^9F3o>iNgfk(xDCbp2vPZcG=wl9`@Vfo-o z-4wiP)}!&0zEiW`w`V+Or^CASu-dInL2O@4EA4RwN-_}+zl&v^Cuxd1-X;bAhNau* zm&G&_7~;i?J4p|puPxogo_e^i`eRWgOW8_x!d4Ad-~-W;=uObr71tP~*JPd)chkte z;)*{*^&t)H(X+e5@)C&>s?)v?wON?)pm`9!LWcK2_PT282f)LPLCid^i;xTUxxttT zuneW?Ly^;C0&;D2aR$;u1H2u;z}I{#pnCaq4oxq0@4mwNH#8^1Md$xO6qDo>8YFeS z!$?U~Jt8#C5?}LR8RB`$xVtIc{y?OXm>&Qiz$lmaE}k^r#J;Sdg0KR15)Q|!(7q-! zzgH|dUSNX7nf}Z22P#ed1nTi`0{m*Z=c~-jq&`R}1tA`$6!N%bg z3#TqRJVwj?W=-b-pSz2E9)NboC&%*}w^ey*_35U4Q`dyZMFoBPEki%zyW|ODOB1<@n5KD42O^gQ$zz33E`fFuH|jtJ0`=N~@a+lAcSV|3 zAvi9c^i;uV=LwDh7N4a^>C9rV6y|mMX8S+dTQgJBt$f2`GkcG!-D7hL6coJ-0=U$l z?7-YPFHd@pe_SiA+`>?T{GOU#C5qji+Z*`R*bC}M@ zDkV>=?52|UAzU$UB0I^BHiY6sCR;n4P$hSh{ZU{cY$AXB}7pB zmv$%HS%pi{F)|H{1~dJhc8fFk`eI;>V6%OE_dol1ctM$=Cc_kbxXf1a&|H3 zwwx05!c|G?yAXlQ_rTp7IKFhe@L=n#C61MlEi=a0jZ z%Ae0RX`H@}rptxg@ZS{2y<9Dd4Luq96>0)@GUN&Ra~vTzPSDO^%y{)VUQH!ylpv*V z)&3vdk9yCu;V%1Je;S;)x|@4z0{hIx1Nq*LX}0b6;=>poQrABrGH;v)%WKK|UTo>s zQgg{PPmyJ$TKyZR$=i*+3w-jR&hIj>J}oE9`HhUbj!zqkCVXAVE(rVC8LUuiXXe{fR9(zxjyPAz z=8tr3N-fE&ds>dchgv+qUCy?d8 zeVYHC_Xu?+Kjzc_Rb~B;!uy&N!}h|KM6K73Xu=y ze&&MO?;Of zZNLpbM}+M|)Qa!3s`Y;X%Ktn&WNv>m%l();oqnf_6yL8xWsvCK=9);)6x(;B726-) zp&1ZMqZXrdH69p;)W@5)Ini4hi6!hw259`QI5wn9hA-`YUz7dZjBvmIzd!najYJT> zRR1j`!?+%@;cq&})n7lnpa=4^xZ$^EfexiC%cbWhDRaZzcNBZD(8oB^}Vmc!R zY&QKrPq!-hJWp-3FBAP&SJI3Ku%hzeO~q-QRHP%O+F)kErsXy9u4QVvpk-zsiHAR$ z%c!1=O0_;MgFdgDrx~csj;{!7uYPr{-j{%RULGoQh&0WA7u>;6kTHAS(Q>J5%n4gq z2C{iLHe=kBN3~?82hljHOW_n~jGPA;bFLUT4ZsRcpQmRvMcgU*p(5l1c(1EjMVr?9 z48moaNhWWV3v3Pyf4#i4=-@+~D?d(8??*w_EOFTuE+y+zGuYv;_tdK!2;3ZZ^FrO* zQR};AXpkE!5q|E?^XdND(cYS#HRF`#RSpb6M*sLZx_v(*HyUw~i;dqW2bWEOM7x*Z zDq? zg5!fb+~b(={ut+;d+Gn6QW2L!(6eMylI zcxAeyYK_24w16WGtiAI1a{t+jlEr>uPJcGSnl4SgiBudIRIpk(fZ2YTJP2^P z--+qi7&J1q-&&ITLTIR8-?G)=a-#bosvFZ!tq#&JKGGbZGHO{IP1bc^sG7%yo-SpRqMfTIPD?JNw+V%EOEhvpKQH4vNBH&niNX zgcN8}SM8k$LGFy3Q{Wy%&u?DQlcLye=FsZr zQB@hZc|2Tu4|Pgh=)472x^23+ARq1{^V)BG+H4J#q2>XB36}HmtY0Wwq42S89wJr7 zM|-QoVEWoWF+Ii!9nPx5A6UBg`&JxHpk=CegI%R!!Au3_@rFnCJw1Uu5B~SA-iOB$ zUFiXjUT)bX1TsgyGRUIjs2+j;O#lcv?>&X%3GUTnk=jp+Gn8)-)9ICn8*V+g9SfD+ z$o-hW?&IMMdH0e)lCQ#6BYAhG7rE3@<8E-jSbL8Fxq5yN7 zMl={~GR=u-q=bIp-{<`Etn5*t)n@b3tDQ)_$+UZei1SJ%X(v);_^hnBHtY^x?f!N} zu94rpk}mDTlVgeWyN{b8CrwwC*zN8=yj*|o(EMuRK=H5<46c=I@Y7osHD(wqIE9gu zI0(G5N)?{!SsOU~UM{I48ob9HA*mUPcn=iyLc~kfT>(3OPKfHxCqGt}@7@cv27(C^ zdZeG(PI@-bc?bBP$n_7b2ZGx$RXDl666o;0eNKAvt zKm`1pz@Eig!|~)_Eq38P%URFfA$juSp>$EDQtL9inBkqgGqA}J6~-#4`ndP^vRtG- z>9U`pgjht`KE4(ofvFcoLsq4nzZ1AM@@LQ~UNzwIB2nayCG40j8ZGH8*-3NDV>;VJ z!+)FeqPN%ag@@PH5Xk)K=i8JELM3p@4`D39P#|bKK_=_3fKt~^9CuxFLRXu|?ONN; zbXma!x2{3HdBw93S}h9${6%X^HR~T(u4*y4N##MgYB2lPch;Ig_M7!$!=n$9_Nf7w zEK+?Bq;9`o!wLA1Mog*F!Hxe$#e&x=qq$lb&L*BC52Lx1As-jNZY(e=ue2+|$?B<( z{SUaWETV6-S@hlOYe5RC5DEf(=@?8MCrgw2sCfkHkX^Lwk>M-RHi{bpDcVJzh~vVt z9~xF>+gwwfR+*bL zy1q5VDz8oHZ^Ebcqg#g3>*4kKQxrHZ$=O{BG{ep6V1|>7AZo>cfgRf}n|H$rJv8>| zZMtXAwRqHWnOWJ#S{FxwA^#wOCBAO4S^f+0DX~Y}0xM66c&b7dTZwt;>&V9@rC3jF z(-}9?*9*4k+s!Gb8S4y3IjQgy;bmK4t2ONjhdM7ui6ybl+>?yd`cc<`PPSGn4VmR} zwqqY14k(b#3T-nG(bzj~S_0`(rv@)O^0XqBLdU7;s!ouF!EIkmm723EPu za~+!qj&x8wn=tlw16~GJnZDZ(g8S}wd1PPj)vTDpB6l)di@O_Y@2day*Nlrf=wBLW z46D)(CSPVY)MAu@XET$1_Zw_-1u`4X#EPne=Vc#Pa$gJBt)JzIoO!>sex?%!xUz9p=a}QY%mVe0B(XUE;&~$Kce5q4UEf3$BRkk`_%Kd z__b8u%fGokx!v^h%RprwX{AM^&C_g;B%oJMEGRO(4Y0P_RjrLAL5--=N&q=IZ*)bM zk*qSq+48Pl^#IS6dz|s_J>nMI6{H0Pe!bke4p}!^WHg_->MN6KAUP&bl14rIah5#B z(jsO)4UOyK*ro_{_DQJcOlXz_+F^|gfVIiw; z;D6upVyFZ~kh1%mtCWILuK(4%Dpp?l%!~REL4y@_Bi*Cz#?bxI^17xr1lVStZi4XP z=(xJZL7AKZoEKhPhlJakBuJIb8+HEuPvN)Py5wIq0W08JU^L)WAbSZ>j+pyHw1XU5#gWzzzJvWD? z!-d>$nYQMw6J2KtV9=h1N$Z5OK$E)5wYM7h>@*{IZAGk+oWgy5MY?-#|4U27X$Z=8 zw`t?bqp5(opWg)d_$VpB6t=RKs{;+lV85Ynga-at;JX2n@x4pfdD-oyF>+yav;lT{ zI(D7iZf=Tc==NOezOBXMnK-$d1p)cVb_RW0V1yTD?Iv+fSKSY~j3 zaIxxDjBQP9D|fiv4?e{maW<>8HobhZQ=_kAMU3OAHz5%OtN)1=BP{*1*{|vI&j-j2 zEe5v8zcf2Zz!~7=8|%h8$`xP>F!k*wf?)PhUfWC-A=i5b@ZYDgSVcJkoDs?@(u@ix zuD`Mw0wfBu_k3kC>kam7CbK0Ql&7N$o<{M)Hk)ylhkYE7_|nBrUyc@uLXBN6(zZ@S zM#@Xe6n)92w{NN7{y(QooxDiIAEd{)K5#yD*?mu8CBtxwo;T(JcL(JlCW|Zy69>t} za*uo4?a{cH&T=r|6D{MKmV}bHsL6TFPQZ(*VjOwnsR8*lzJ~quZxd|ldALvl2G8+4 zr+G5;$3Mr9E=3a@yJd%2W9as|LF<)!j-D=9t7N@o4=b{ahug<4^nb9kYHiG0FwiX| zK&zH?q6=7==o-sB%^VBpPq7QsXb(k1JFRiu_8y4OE8Db%ghT9$j7U*w)F&KX95bkS zk;(qfu^z?~&kFYWE?6EQQ~M+89$s+@k5B^?L(_A8r(0M0&}9QAt~!Nz0UfrzEQ@S^ zdM&ZNCtO-3Kn$^A4LNDZRriT@Ky&tT(=*D( zR8!A25j)+hapTlMXeZA?j8UoEOXEKOsp_LZ3q3fbH8H_AW1aK5#Q8(r)l{p!E}UD* zK=4ffMRDA{XRtY<$4w8ek}sudYXc!&7BXbqmXkWgx}MB?4ihiiuf;=D0@K1r#^h^C zc2Y&8r+y>;olx2XtW(`#D!!-TGgdMe3ohMhGqL`u2so5>*A&mza%Pc-8xr%-C3O8X z`=5)~qRbG2+_3a=27>uo#HZ-Y^E`W{K|MUR77QUIiQ^U#f$VhX_bEp!06J};qIjLG z$;=SI9Tae>OnXTTSj4#{qvb+7lt$@(yK84e`b0Co@<6%~)pwBq$jAHEe)okDlOKIv z;z5~%v+zTBkr440ig0K9$3L2g;AnQV^{|1NQ|78#9FS^$tR%COkD^AJ0eeh#9BnQc z?k&z437srsy8q;BxXwRF+AXszne50=b78NHWm>?tUbG{gb?=L|b$(~lnwZm_AT8@P zYyvkrh6q*eNAVPuZsaS`E@_;&N^Rj&5}5g1n@D0DgSXusQ>@r=}r8h{G;~q_dPSrSjSS? z&18wBh(uXtq#`Mb7AmH!ktnh=H!3ZP3Xw2{EG=YB!boL_NU|>@`#RRK%=Vkl^Zh-~ zA26?Z-LL!H=bY=h&biJoib19+I#0@n4>U1qF~k()jhWo25D)=xK5mpU?Z*jw+otYj zHb;JJN$PBzJ9`m18-1YdK;?-Y(7*YVbFWS|swoozfkq{DBMKO5)Rqg3x12bT1igM96cSvrErW$;BdXEs517&i_8Yj0HMq z(0}65lO2?rE;q52e*L$ou;a$X4o$Da;h>d|L;Af(4(Lcx4}&_IN#DCG3Np`Q`S2O5 z8^Y?vfFIUT*h~^eaH@lKc4^osLOh;U#=s;&YvCko_K@pn!50D*1x~)0uEQ$oW8XDH zn7W7|XalfY_EU43xDaf;kZu!Chsl;JV+Rw?d&P_#1|b<24P6iUzsaTGhyxY;)W8p? zI-zM2zk&C`aHZU3Gd|WQ{!eH#aB>^Oc=9XMg1sgqJfk2jl_EeoFI+2pIU6eshT585 zzJ+M*IayjaXLQY52Z}zFpKv*jh<5u3uPLIAe*t4JVtyq zacW`H`SYJ@;}4ACbGUl7IWy&>V-F`Gi}=Ta}vV!keK z+xBtcrLDBLqfXSt=2Wq!cvJk|EDi}n;VpO)G$}T9JfTQ=yfHF65X6028q4bCd zK!@Q_|Cl5kF^qF5^;tP~0c)|Iw&XA|6Ob(AzndjGV;GAx|IStZLrRr}n6e_(_38V;R0SCH$XA zVT_Kl`k48EYJ%?GYERT(y!P8oZ*KrI6g`zJs-wuU5AljmBXk6lG(80DuDolLpRDpB zGGST4hVm4?Ny(8Ye&UhV@XR*D#kuSUoSNzM5KehWKOd5^bBT7@*5CEjRod^MKh&mm zt+#8t7S_~~_+|^{quJ5205xV;Q*LchNLS#mt@d}KRw&Pz+oLB9B|;H_AgJ<}39bG< znzW<47bI-PeJDk&8(M+eZG}3Ztt^VWx?dYlMNy5dZQ!#&{)~w6Bh+c@kl~AMspkVu zfQy?h{uTLLZo>gbQsVmQl=e3DZ03>bPxk-h#Aw(H+}o#AU>s@i2Fk;WKRFw%-(5SXWSote4jqhrJQo=)92tjq>~u>|=))LL2J)EV-*zFX$NZv@?N}Y@ zm-|FSeYv^zG!UF~=^N=hQI5zw6K{RBX7^%_1|eC3(S0kHqKpiVFSG$4v~~(f3V3_G1+qg@p)S$x zK%$W<1B@(R@Q&{&$B~59k;8yiE(2_a(D8xEz=5m4q&pD1uTHo0H_0i47*5%mnz-k>9nJdN*9?yE+GrD;7 zzZnVs$`F=5~V)}QSX+JmHKTbuf3rTBemYkH5R zCzZttdEh9$HE@W;E2_()yg&gjGWBJUpu9k60Ho^oQPyHL8Qf{*Xwr&neMApZgJ+z|w}4$Z zPE}yP9mRDWG|}F+cL2d|1si(q(8vpo4aBH| zw)Hsm^`=0#JEHq(XpTtE2j#!!3Z?XOPEZ1^uNO%|QRc$kB3rg}(}lcStIuWd>5QkR zyw{co?K!m_o!4fVYZ(fhU;j5w@VlaNU`mN=@N&-dOvdSr{OcBfrCMI32j{L`So^#! z*0Xm^3q!m+U6WZ|putX5$KDUas;tJdT6gIJ67ELpmCmH1KPDLtD4Uv`M(~$6ed4-J zeKODrvrTR{hH+-l~7qQ&&NQN4l(Y#BUIDIbu@+;@NSCM)m9)kEO zw%uxs0PLx4V`kd-e$r8U`GtAlp0l^f3^N(1SSPkEJ5aZ(38lqpzzeh%%`vcxfp>2La|+=%^eMgg1NpYEB9@zbx)x zowXU-If0o?(v=YPRLHHPs_|TAp4E0dbCg#dJ8qH^rTeXp{)1N;u=xplyrxaiay6Pag-#3Vo`r zto&@DXTVU!Jp%vDqw&g zda}t|xrdvom465BgI)qkO+g|_7iogv#)a?99Dc3`NoOglZU%`)h377lT`(SlZeqev zJ%>z4Kf`MlAgUPU0QKDqG(LkGI_)i_%2C(9{FW|6Rl_{*h8TiHuS6Ce_kzd#fGs4S zuwsZ;e8C461FA=~+n^1mFj5ClE!ID$NpQo*saEwTV;SZ9;|AQvgeb06-Jvy()2KDhtNPMfi3h~U)r!HeP5HcugQ`!Y` zLbeY0PpYjIgP)paF`+zIaAYFtj3@=G7G)9R;yj?!KUB}`UC<58)%GvswL6oc9z9@|3H0^^+M>pP4%o2>tUhp#Zjo%Z{++D9WK8b0wcF(H3bD-iO1CLV9| zH{zQKH1l|0#(oZ%-5)>HiaVPaYA%Zn4X=0OW+re1ve!=fE`>MdygF-0cKVuOcfaPD zb>-;}xihQemM)W*MQEn~KK_^04ip(uhC0<&WV8a=SUM9k^oW2EmlZ0j>pgP0zEC9d*)}u@&Q2JgrtKz zTbw!9Y($R{<`}iYpe^ug)(`O8TT+YlURldH)>baEZE_c`UE!(`2*~LVeC(|~M`3{W zQ+G-IXNP=JyH_$r)0U5=MSB~BYxoU26BSdol2F~NmDm18?g7uP0?sABCV3+3w-L?zr>P&Ljh6R@ zT=D9ZdSj|F2pf{`ZKq{@tnNorltrL1vG}{J=w>MA<%mAK_7FF7petdsZ_dzF;Z3BD zXoS78sUGkxd8Gq-a|RFdgwJ22pZ?F2M>DOeuM({W>s>Y&QErfGGpfX{K(t*lm^WQ%A5|lzLYgP7(wiJPSmAVsL8|RLq~m*EW&t zeK$HuZ`B_@(veeV=AoHztNFtB$h-mDE<^I7nKXEx=dPcMR&0)h01mX=A3FtKG54I$ zWkid&S*eBNvKPpbl)#sC=$>IPpjj*nVq$*4&&XmOIQ~tvY2}|J@}zy+)juCMxY_H( zjNPX@FK;pU1zp`w@aj)tNY)m)Iw*XUQ@{ zO(6a~lEBG>9eE6=X&Jj)5s901I54|@<}dDP1hm@Kumvu`t*uB=Oi=M}-XM)c3#A_; z8Z}{`NR<}!^*cY_^?#0-nHcZJU(7!V7K2u4$O!ChYFyNB}PO7>_Ai;n6lo)J5l$AxU@-Hc2v z^onv^_{ne=jJ%5?F~6iIDF)ZHV#Kt4G9+m5TDT1Xxf;Rq6_jl{NR@{(o`xNZ-Xzdn zYG|~|ogLFFMS`z?If_q16}3DlRr%?vI*9zX zvXwX^OBU1y(fB5x+g6gqM|A18YMtP^E%9M1$N6u2_Z7$@_8G_P*y~*YBY?qOD{i8} z(L`-=-;hWhp?Lls{4!gtYJ3uJ{gTO!Orh6;Nvo=Zq5r8}7S*XEaY;t^|K5Ky+Vn}S z+DJGaOU2zQC`GU&RgU}agF4C-Jy~yee|mEiP{Td5jkQaPTDNqg=gVRu_~zrA-~KTH zo6)p15WZqBMpJOTU~7#)n{rI=lSvrI?2Nm<@6C_pZG&wyyn7b4V*YM>!LKqa$$$Fi zrS$a?d)_8%dtCN(L%+qZ#njHJqO#^RMx*AL^_>;g#DSsPnKh^T8l9eKUEdOlelO9A z&tmf{ur@B!tqI^}8tp3Z+(sM+Dd77ci9u?|tik(1FoiMyfu;*{+$xC=}P(K-;O+uN6(#Y1iA+q@_a z9X^5isJzOn_wn=E(94yRat(%0!{I=+fZkh(A9sy%(xQ7&vV&X+$;(bi_%Yup9F1G* z2^wzob-0o1zqw_FPk+DmYlv!e>wn^}F&lSyg3bt6UwZ7~skD;r)7FDiVO|pKq%Y=v zIe-X7xQq);((imD|GNDm;y{y5vkWh@j`KjLy7d&t=q0~w+YZWAZ~|;887kGoYJARO z@97@0WrA4#*m}x}(-PGm)~yMrSnr7X)1}$WckL0h+st>UAQq*Kv-=nK5zO*ZJvws# zGKjr%!~>hmGn<*X?V7fXz`GG%R`o1K^HN`?S9Z%OSFlgiNOAE8F77}X2e3(C_Bh-7 zD0uwG&yEG@wCKUxnWfVt2rq5H+;qGBOnXZFx|Xgpjx6a?6)g zvGvCf#PW};{e1@u3o+Mg#nOLwA{JB>TTn+keQ*)_dn#7SPt~uCe^;KEcgUFNdgBvd z<@(@D;VLexK7yG{;G2o3F|Q8!L_u(vC7ZplX)Ou8HGmIBYfBbdUS7jlC1(#F?z|x% z^vDD$hIPn>O6o~bk?>N7L_E(`_^$4AdcgSuIRzJ1f2($t-#JcrKm{HO;d}e`SN}%t z0JB`AvX)Z9QlBVOK9TH!67#4lDumpFrAhCugw$$D>Iu!27ujV;)7){3e4k zSe^5z<~<+H1Fb&Ul}t>hUi`}mZ9v&PgQMGn(JRP%h9{AEMPwd7aP{Y9psfHq!iLLI zL%KuIydb0I>|gQ)wo@s(#M=BbS!~vD4zcof2>g|8vqhP7`X!@3-7ScUb^t4o_Uew_ zgB)ITPX6yE`tsPokW}c=N7LHZCImPqg4WPBF_}i)eQzzf@_*T9<{b4PKzob2ExAy4 z4u<_No(r)3jHR>`c@`7glLGS(I}uIvgsxe$_ty~*#q3^<**EyB{t4VXbH~}#lGAdt zMBou>b8E6Ltzzi+KFTJC`*Sc=ul|PX)hHJ?%Lm&*_;vh3T+f%)*dC)+qqtjZb^hn<1JAj+y6)6{YpW#i zO=pey>ww~~+;^7Se!9JT`lY_P#rVTe=zucjXUAF^Jxr~lNOkn9#%F|uKD1W#ICBQn z*1%zdxUZZmoUUei{r*TzU4s|r-|hQ8&RrOOwO*c=vKr?}uI!y`958C%dvnavd~;mB z54r? zDUdZEB?i`>X(E#&3=We%>5k*4X7ohppA?(_A)FPX%e52m z5P(F>w%C!bGrOMh^PVbQ3J!1Sk2w}|PKWzq0R1UPhpLd&gN+VP&p9*RdacHdG2jkI zR33ek5ek}j?IcdsIHEJ2{B~l!aDktoN=c6M0t;yB{skPoe#hq%u6X71(V`W>_H+I0 ztusdf;A$pRNoo5q|H;E4m7+U^c)IaYaLDd-5NBUaRD!dSc%?}SvIOV>ZVw_ zsZoy(GI_PcIy?L9;?C03JK^3CF--EV9ijVHY<>6G2dj$~rXLMgnzP>XoF+-Vm0Win z!mF1Y9SVa^|JzAr7sfR|*&mg_amu5L*&GA@f_NEH8t)2Ii@K?p4(w0?j^2x~f z)=e@WZNI*iur#H-^=5d%^mb54uvg{t-LFdY#eIwXC13%m3sSU`w>SZH(B`;+sO5U^ zg_;LnE~^3)PTq||=h-1|CXF;kJQq-0onw>#(4}m;Qb-lOzJ09RfvZ8G-|V^s7+1v3 z$2AlB*#pT@WNC1gCIVgqH*&&ydB(dEpzo23*+nHYwmoby&-LfW8)o(Y$Pryu z95SrG121kKIG^oTlRW$W+9^k@O~GSMa?V;|wK`tj61mA|F~=60UcI`_LYKISEfj{+ z!4(!-;tD34{|kBuB#GRM#f27^)u7A{{o3B(-s#kVQNdFL#e3lv4Tnz<79s1~I zEa%Y^<-93s}tZJ+1NpjI#Cj%2*EWD0B!;QZie1uysRa|lA zx?CkQyE_>fooA{iGt%F(MNPt3&Jcq3b#&l>8(VE2TeOwd5skut#?7|^c*41sH4Ntr zAL&O}z@^mh6UHr@a+CUP*EOISjM$EC!Yiqpc)a|U*gi#rVpS*g86Ow8MfZH#-nXUa7s}8Bd0RGGh0FA0WTKLYyYKtu=Y;U4>D?a z`w`-q7g`h};dUgz60u)v2lN+OZ;j6uWP=^U<*lc=T07u=+nbgqo<&;k%F&31TrP zcZeWB=N%hq4~Iw2Yh^)ALVMo6!Vku@N2EB93FXe22k>m`fJ^uduC;EzzR^Yyi>+H#;Xob?6OWwpyMVYFQ_sYf9v7$gBCH2|weup+b zAQ3DE{w0%BkHRYa__1?*#I>yEtvI+~^PP#44qNn#*>3GU`Ha=^S z&9ceQrOMSEY;3`E_XnQTFVL*tIX!jl=b(l#G-?Vyg|II4p9EzU%^t&n!5 z^(|OkpnErP*5+hx;Qk`h77)Nbe)s2zZEJyU<)UjRYWjb7T+iTG zFq$h170o;SM1BK>FILIlF=AP;1fo+k-UU!A-PrGc4HdBp5Mj`S>6=T%oBWKqbSUV< z4Paum<@~tG7qZ?n?g`SUl#y3>-t@LGsUojqC< zxLMn@bxr>aGjRNWDq`4|vtc){G_cY0hqJxU10CJDhR3_wq(~9=(<7%Os1i`anu4#j zg}1R4$W9!TfDAjYb~;i`no#(<=Szs$JHo~Xkro$B4Dar#ocQW1HnS+B%C`?WYDzmP z0WC#56}s5E2eK1w8^xxC@74VldRg&;#ODJZ?iQ+buJdCi&tII%r+A~Mj#07^yBmLw zIo}^^A8hD&h!w5p&fnSsK2G(Wm@qGJeCXEsyfvrGZ5Sf$fXDej8+L^7@(4r&C5C8K zVBf*`sRvA&KrE4_*T2!SVm-0CrSrBX2J+LD*oVit%to8p@c~9vr#SH#WQ$}~wa!ZT zzD56l-L{wo--Mi1D4!N2N87usE`&iGj}g+c}(Kp8ULwRu{Bhx32YKm%jft z^%3{GibREMfZ71ul$*-LYPmrCr5VmC4fx~5yuC-&$P#={8=o7?ezwt|jem<;0_de% zJ$mRQYG$Bng4V|uj(LOa;U7Wqnao?>ac;_qDt0wNhza{#wo*cN8z07SM zu=5!{DKQ2TR$CveIC;*0_t4Tt*~MQ6{YBif8LhL1Mcm?lSYQoe`7*Xn_FcvgrJJ`s zUOlMQ(ChVMh{)Y#A714yL(WHRnUq^7k6uf(A~I?`+sl6+ze!s3y1{U|UBdNhVv5XO zkRvKKWO)e?wfC#t;%Y(^aY|TOGvPzs9P?US;X!KA2AJB%`tt!1px`p^#eiSHt<;0- z7+<#jMcvt7YE)YPA5P>(&LXFW zY1^7^%ru=FO8K8mx3K82*m&RWS8yHdzbHD%K&mR ze$aaEn)!41EIf;{1O6N>JkT>Ig!DR5cyOJ)J z7WZ)+mB!7!gTn}ZQC`ckq*}yU>NX$;>v@v<1i8w(hmc{a6Rm)@`QVEfLu$%=x@cnZ z$)UGz@9I*ta)CLZBJnyQt2b4us=H0f_J>DY^FCC>{>QQwqf<>1f#^$RrVlOcC|U5| zdrg=>G;%v-lOJ!0{R<}vC11wtt|n*71gD~XeNxB?s4os(1(tC9C=MR7Lk}P5Ctt+y zDdTg2jca6;^SsU7H(2m?_JHnb&)Gc|Zq<_4*}>>e1%o)^U~4nE zLU9lK+8?wlC|boM4nw}$NfV_V9NQwNqimC+^;<8d2+}_b%QC!?rl@#%dYWD2iYs{@JRuU+YbJNyS{%=cY);ajyAX;L`9&93KW2lEfy(uhLT^3_A2~ z=>OFhm84ceM0XkB%F)@zKgK`4JJlycgf$Yxx9%lU?b_pA;M)U3jD^d$xclRZ!mExl z6hmdZ(Qvsip@{Kru}kl$D40ZcT+syF;`p(LwuBju0Ou`r=okN_sc^SLvz~oTr0-9L z?PlD8=INh3IxHiLEx9i<+?xxYB3^5VwfT56g-b4s4`QI5JAIj2ho0bXN6u}}hXOm7 zfEY4~Jz=7<<(n-a)i`_=b0|1`7b438PQXfw(M!f95Vp?i&+6ssbLwqVZ~bmO?KOS# z1XVq1Z$C3k1}R|>wIxI%Bb0z z&M%-Y^37MwRoEcY56+j((uC<6{Ek0P~z&r((kc?S5SVaZ7rjfN-z!ghOFo1bV``UY%8a|H3{<>;-l7QJSh9ECD~_UV7F2DD)VM8 zS$6kE)9OHvgf9IQJbRJPo^v#BpnR6lx6=4T>HvWlmf+2{*kS_#CE_&mxXAgqaN-tU z+#>I!0FB}GEnVS@lP6^_-WW;TMlk~o{N)kC?;+ED@rONT8>Pq*Hw!<_sjVjZHU1s$ zrH|K{d$*x{H#t{^J|%O{JOVBL*0AwUum!%5l;Hv#*7NLmo%brrrkn$nV1)C)=C&+N zDz(ye{*f4n$AJX7y)l&SK+$_)mLWZg{BFXc2CLG3{*if4YtU_(BvtM&B ztzyud|3i|zR_*=zMq|f#(*p&_OaSojZj0k zbh^>g^??~NQ1z@_?%*EB%J!71y@3(4o2Y}3zw31s8-Dm&jVt$rI9?DuS=V(gz^C^_ zl(3@{GR7c%`!(yfNAE%@TXHq{eQDKssCUBDqILf67Ghfw<8qtNZtk@`k%W8v1F0}! zLDiS;X&D(WQ7g%Vm5~^Z^VXiWwTQv98;g<4V`kwaqNIu8No-7n^xFLcxMn84vdgTN z(6_ATZ+X{Io->7}hJ>Rz<(PG4rJkG+VglqTtDX&kwW7ENCicfW5mLZIOJMX?mv;@< z()qc+oX5R4#~(ehdUBg6Oh29bg-o+@W&Sct9RFIpR_D|a6W1$UvDDJKiR1$?H_fGW zCG&EW-}^N*1uX-_PM!vL!v!}522ByS8zOy=W-Px^Jn{-by?i<%Ds&dtG%5${FI?{- zE6c^=F%D}xDf;nRBu5?2{R2IH2>`Wji6;JpONRs3451=NF>IM*W}IG zms+Mv|BF1+EKG)QDH>_A+ZtKNEGNcZoDK^>oL7RcyOudpLyliLHN$xRKn=ed^D09E zx!ZrkX-`HLE26^U3@~Nh+%U*yNh{OTKA|h9#-@N*Hz*f{H`|`T{A7cNS1IqJ>2Sx4 z?IXMjaw|e}D|Pumj)Nk#H$q@{sJwqhlLi7gjEy~4lak)Kl$b( zbjOhJo;~N8nN!%=9WnLu?eCAP8x51IGC`mN5h0(j@Ky8!13 z5aLtltOgi@)$IiALquU|gSM2N3bC}5;I+qh{*}eWoiQ=!<~VuPWMXl{00Ml()^BXn zGH&YUXWx3LUtDKII?Se9dxKq;TNcTut-uM0)YaVKT$TO^Rp^Ce@;?*`$RgG$|E@f63N|uTzb}#JY>eYb-B36x>OF zcss)#`U4t7lQWMxjk53v$~NNB8qE=%=fJozgd8lX9mb8Ijw{2F+pZrmjUhR#3uTh#m?!-!NA+5rl1yM8i+4~`?N z%N{(+U1h|Ho@1or!X0sb_=9KFGk-X$u(Y|E!#I_-r?1qu4Sn}Q?An9;+;HM-;ux_cJIo zdH1x6Syz6z!wNE?sgh^6NJo-n$a%|Bs<1R7$|{H-wq5&`~A)?n;w#85BN0-d$HcV)IX7B|ceRKL|`?Mk~{4jbDRalw2f0Z<7S z_(YG*5RI_TlZPqGuMp~K7OxYBJ+l)9Zzn40Y~WG3JK{4@14#safo2F3k@Y13VETpfSt5j zeiL;5iP72Q@4bUrw+ut>`{UHo@X!Z7wm287X|feqqG$x7ca6qEK__oK&Zb~4V*Q#* zltOonb)!JZ{#chzcO!^45_hDeu(N0`Q#sK(6`hWoP7S+3*;UE6;MkR-RqKtT)+pW# zMVATCu6C#`krSEECntya?f@@Vk8J!jXj*|7eu&cZa}DG`xVvExp9;&kz%gQ9jPxQLV*am*%*7W{d?Iui4~-rcBGhs!@5y*Q<2449Eq8HQ_G-YY+4rICW& z?x6&)DRbbYiqQUXK=6yey}ye?CPEETa4Rz?Zmd3GKrRTYGk@HAr0n@S@kFBZXt5@s zzp@WgMjvKq?FJQ6O_+XpIAA*@@6q+qcPAVV6%m?5vrwiMLKocqW;c#vq#txW5haWHahkpk9+!_In`Yw1JyWFDD`APxLP=De} ztNOe2asB31r~3Z!$7aZyuEN`avOG4NV8{sUAS-o(m2OzpfY5Q%4E?Q1HJGO7ia=tZSY z((7v{&t5=Vc5>5QxXWuE2QjBjx1h>HW{r=G`TFVXzfl(mE!0lVC2DSUILi)dO?i)- zJ6PG%L0EmgN9XLd$rM1->Z(u9GY_vR;mm-b=i9<=HM9O;K@l1Kbva=||MhNsXVDMB z!_VY=bXFN|57!1cs^=W1S@VfKqL>KIn&2a#pz9TiZ^)J!>d-0FqD@zAGhr}p40Jzx z0ROTI4h;S5ALg+*78=@WGQ>FMmrY}XFxHdF-A2qp9;YQ-#A#+(4_0E7D1i*c3!r_2 zETICsv_HvyF3e;Lo&BR##MRC%a9e(~uaGx*6xrDyQ^YOH$rH&pLB0`fOA3D@XcGmV zhQF*Uis)n`7h;MyNgvCZ@9fRrq#cGsrOH0~5yMZy2dR3UA0>$%RpMX;OSx8)kD$r^ zWElEtk{kiy44)-RdZ(CU{X0X^>X;731)*x~1<_xkg)u*cQIwyGkvK5AIjt<_!frW7 zI#$GKSg&KXTA*V`Htf)!=+{-Eo*-G**A)y}+5C3k+BZodYxIrzjF7@n0q`H*SXlh= zak-n;$pai?D@UaN?Y88XPYHLKyZlm(*ca)ZSCE4SGZVuMYiDD9^Ljfzsuc$xyM`&U zN5H{G(ME71Wv;HOBTMUYDf7xNcm8m^%1P0@30O?1p?#Nlt?}<*>iat%@fb`9|3WB? z_xKSy(gQenskRiNgJ@G&{x)B3QGyx~qWvHtJ{35-%|zEBYwF3=znp;5$Yy;@5YOk+ z`r$;md#B*<<`xxE7tRR*fS`(c^|_a_lYV2J;jeiTc)Ke-@V)l-wiGE4F%zd&Me4ItN z&Yarr(oz0mPi*mg&7Kzn2uzGUu4u90o8&j;5uBMmK=>u21bxlN)6td)72DQra0BDv z4N~^0EY7>0g8I+rlb8=v37-Y2LiqY^(Y`BEcOr8!S%)e4qEz=zj@ec!BN8t*8oZ() z76+{fC+r=4NMLQ`Em;R-1fOEctuL5LQg~x99|Z8v)8;#QdMXPEF|BxwOiMSBC{fL@#u21-lVE z(VAXZ;2g5-9>X88b`S-0hUTVbcBM^~_Apj9w_xB8D-ME0914yH`sXFU8DJvWkG!|6 zc{D@?S){ax?Pss{f-fy1y@={V{O?vT9D_`pjj1N{7Y@MUNKFNjaZQ3CZF8#+Jo`TV z11s(NQ#Ajk(CMSR^~wfT9TFeth2gzYlNGCe6Gvv>dQjkqFMVCVZ;)_)V|KKy^Hp`8 zk_zil+JTOaVm(~%{O{o!q4rR8^?Sz*x3H@Se>e~h?pK4m_THjvHR;_4d2>0jgmd|3 z;p8oE$eJ>g6q2(QgCGs%#=Ik#9fI4*^H8QK#Kw!}9=$hidOD%7x?0yd8ye5tG7P77 z1--Hv3=Oz8V{VwbEA*r)ccOQQT3@NK&W(%ALklIb<4*L~pmgwnu|3|0qUd~?a=j-^ z4m(tSzyL`>vXqh5M@-f0;i`_5vs1M@T1qmpJV8lhK7B>#i0v*Dva^o>lN~ zwqS`x%mT#PbhYQdm>XV@1#vfB0+25jV1h~Zo4!&Y9U3=NMVz?>H>`>*$kDbvGu=C? zdu4n4LQHMdi;bSr_t++WiUsD$wxb%-4f-^nH5aY$K(<0R!uPtF1N2#Unmghb7bEe% z>M8f-`s`%ec;w^7rKyKbNiWb+zsFlW*N#Bi80DHH4cyC3=<*1EzIbNzL(>3U1oTe` zFT>lONrsk+UFJ{aSl=Q_+$HZ)O%RJm!T;cVXq_Lk7ZklxtvG-EY<%1j6cv%U`1Un1 z!+a~acSp&H53vd!u`P@~twq-n1i*pHwd;Hzq1T8p(euwF>Zru6v_T&y<_b@GP>bLm zbj{7%~};;U!y2y7Z8YjBeL#p!@BJsT4SLT5OrG^YV-QZ zvKJfWvsJE~owem>$)D37fHNY#oYA!Th495~@p`D`=@qAzm2>pV5kA9v3{lDE#6)4= z*481JFYy)M>Byzb0^b>rIiHb{f!O5=L$$JS->ju#5g@&fO@LqS$&Uz^SV*GC1-NfmrhtQxFfX zUjm$ABwV$HCHo0W-T0dMfx1C9)u9Jyr+#RH?9aWQ((kDXPdXhbCQe}%_knx2@j~3` z%PFBff2g5}Mwn+?-T<2Jt^QvH5~7w7pZ31fca44mu_C4+yda!&qXdlZ<*GX|_5WA& z3J44EU-%wrQQf}(W`+Mtm@Iy4BZ02GJY*ScV#QXk*D`(68hg-XLsNu;plB9x#{S)K z8+x@RzS)F&;KSZHitJJt9H5Q?teqoLS0i>g2;O`-4x>1`cb0Aarg(^`VpH52IQ$~% z)vo4oKdm6K$^#l36Zd_GiAHKg%vtpXGk(?Rfgm2hsD5 z1^gj9=4}RmQuGeEqO#tTEQg~zQaIcyWB2{!^{GWmXZ_ysv8(Oo#KHTYx$+mdzh7dX zhIMqm-GXZm1ve03WsplaS)j{f6-@?i(;}13qAkef^VlN5PgckIl1xrCa%wF;d<%%Y zGgocY`QYlw^5#e(_%@^PmP{ zbJk_!KNa>bXNSpPi}cINHB;`&4<#4wKJfBO;1d-04DbkeLHK zncH*p;|uJ`KmW;HCbkoG*?9cF%kJd&!{ug!V>dFyfgRp}L=cSI#eOa2kR(Ru;BKIX_v@dVqx$TP6{(Y*-1xe~lK1 z=!S1am{G;)17ay5oMEZxq3Xv7pa`Jv{2MEQ>a^MB4^eqd$YNz zZWO!95L|z62g?K}FGQ-qhld_T;|mX{AZ`B8fyuGxMvZ$|OC)Jp|5oKt0(4f8w0s9( zg86gJ0b{>eEwMIU3IPx8DmJ0>)(P+?2V}Tw*PckVY?Z5g(qkTAJVPXZusT5SWGlyW z|CF>svwNX&(GvZW-0!jDWNy?R*d*!e0?SwcQf^sXDZu z?Q`_Qr*L<_u}o(v&V@Ojf4mHx%jCv!8qt1u@L3Ianh%x$$kodTA~iy9*=H?(?QbrY z6jCk&_P7)E@3+Nn&O~ zAo^(&c*B%UXhO#KbOw-zn`_nm3`uq5I4arfj7=zSQ0kE|E!mCXP1cny`FMH$lAiImK$`AKRrD`@PlWVY z5QO+&dM~WqXr<@_&o=2?{yZ~&nAb@;=&ZIhFJ;P;@@~(v@7Jo9^kyEQKoL>ocxVM7 z_KaW{f5|7(5`X_-=#%->M%)a0s$1)3nBJ_}kBoe%vEz8s5X1Zc9JSGOW6l9jpJw=y zst6q+A+r6L{0yFr7#FKoD{(!HQ4>oU2%`6m`z&)p{Rt9R(beh`+a z+;uLVkM2)%vIF|Okwjl0<6g$6nR`+38|*p@{nPXFAq`MXvRMt(%t1%f1Ey7O!_mbO zs5ksnR=yS-dtr`XYGMaoy^8>|t3)+mD@|1fU6b2L%b%IIA#p@LMc9DDRb_)-9HAcigG1RLx4)jwe$- z_r@;spZA0XPb{Zx^SDP>mFs?j(V3EYuwA%&a$573e5MM)fPMh6|@q&-` z+H27+S@0(*5|80E?g;+n589T^In8v!{iF&J!!Sf8sySts?blG6OiV~lnTgjiZ{8f8 z@7Q_ntizo3=*WQ3DPWX5lkthror3~);HhbiR4(}H0_Pz|(}9mIf4o?7-(5{yVxBUS=UJ7Z2>;y_*$sYNmBtgwDx@cY8Qz`*00RXtuO7V~+DC zR+Adi_zx`zZk6ckz%t%0BXcsS#ibNDMG^cJu8It+-bMW^m-(zlk-r)#_MtVipL}wf zGfeYI2^9nU{dMoTUs1#$tIl(DxhMEgBjpNG4><`&OZJi>XUXr9Hxx!GC*y+_X0Tr}ESqK;SW z;h?BYOFo$!vRskfNju+4`2bn;6(c<2?zV?l6nQPqeOIWt+E6<~>7En;0A@m^=>Nyn zo5w@_zHQvsER3B{b~BaGhN#FkBeM35wAh&<5?PYnm=7vSvLs83QHV+?p{yfW%3iYX z`#N@m*`E3S?)!dTzvua9{=epPy{_vz&*M1W=Tnr*=)vs(jO-)$qWM|)F!=3gLH_2l zKBOym;7P2Q-a{E+EnIZ@)?0F(s;(T3ifp#5PBa$ z=k_K6;*QgW5CY#Qf4uDqGCPM|Fh8eK!+1>jwr5Kl#quRL}VW4RJbSr z{zBrQe~>r5;$Z=ON%S9}7MS#^Z}Xhu{{LLi7w)zX4_7drPXD6$JJdI1tfp=b1*4wu z<~%3}>x>A6(>PJpiF1XQEDAqvKgw@q&#kK@ecU$q-F_ku4hHvcS^*^)xGA7nh<418 zeuueGJ9m}AW@YqeSc^yYOHu})^GOh$@t7Fls4sU9%(^UKg+)A1G$EGXIlr1ao`=j{ z!gNO>n^ImVoln-yi+@(Sq;Yx9HoPcnOMPwCi{m_a4OFPabvT$UEe!*`j7w4sKofr| z3}Bo2Gl3-3Tl9v63H}H8yz!Q6RJ!$-lmxzkJreiN^-2X((D#%kM2^)S*@AQ9*>kPZ ze9;219iC}_oql>B0kQ@+55jgkgoPN3`X2%RhLzgJUj~1el;UY2*}+S2a`)QMK3S2j zW;K1+uz;^Kh_p)%cms%XJG&OW4v#6kYQjO0Pz68s2q8>WkcLpK3QY7FD5k$RWy=9) z0lw<4W?uDE=7YiZNtRR;BG&w=9GI5EJwFPDJ@FL80?%f(?OVo7;CH_lKkE&irv;4!a2N z81)ufqF?RUSM)fA09dC{zr#J2-KIFoQ9pSq?LNHdd1MKaL~lu^oy3AB=KaU`Z=lEN z?K<``*A8Q7CgpWAMXT`YmZ58DHgeQl1RP__9swn4q0Rz*tgV)hXRRpHMSyh*PTYo# z_S+&F8hR#@J3UIVK7ZSZr*M9_O-{_$8Ac&zQ2hId7x}fQG(lCC*YSea@}q+$#}Q4j z>ot22((TS46F}37vtyb@kw*Z(g)qi?xjV^Ikt==A(Ls|)E@=04^9xY@=Tp}HwF>l- zSLio|=gP8+N}_w|`tybIM6lYlHe>etYP>(Ki6F#6}9xVW>Q#()8>2MdW#`-}TnGAjd^t<^X>ncG1?r*M zl9{7tgj`knT&$q5}C+(NJD#~N}@lPnB`xd!Wo^n+ofsV&_L zci<0*NuAMdpnHwRFFY9=2|}Tp2_7l@D^bq*yGR4AN2;Z@t1n~&pJ#m#Ak&aeduOwWp0JV)}w&XoEF~m)0 zHQrATO&z0SRs6BsdvUBT9T@9YL*rxZY})i_yC#D+^j3%~{z_ra6Jm^WeEC?4U@?}G z)ka6|zUM6Rf|trtZwken0ox&16=A*zcD;Z06syG|no>+bd+j#eRgUS*ETI*v!UoJ$ zx5w9%-E3m(Y#IDTgbeYC{dR5T#G#RLm=M1Gw$L%Dhj@%FnUR%w4z0Fn+t|*h1u6za zK8H1TWw~NMt@x)#Y-Ki##6`zvBFK+SX`772Y7>S#-EH|vl~pyxbUyIMOfrpn;L~`) zlF$fnm$@ki2}xdu&oYM|aJrtBXKPsh6S+89x~!cNW`mYc&iFP7)`eOa`>w4RrDJht zO^{H&MS~?Rb(5td&Ytcx&$U zhre5HJjD$vdrVEX_WcH--wlKg!7oc$Tq7^)PO@&K!1)}NI;Wht9tl$(E~4j=>Vh}; z^*1yj)z^=gvp(_-ty`Hj>VcP}pw(KBBLD}!{6UOPpA8Kmyg%sY{2Qu~QGturRSw9( zd{R6at+40waUrN>jrbNopc(^Ypk4uWHJ{fOVZcPR;X;XxWd z^dod|Uw>{c*~@&8WZ2l%%xl9Kr;VB-5`Lm1DqBt+0)?CBGvjo)+CH=~2laDU*AmQE zylzFf|7;VkE?!3YS3D_jxh@Ogw2y04KC__?H3=i`e;zsRj%TTS4ORa@v+ zQnnDdxs`!;?Dq!@9P{r+@MdBTNxbyeW|5s5qzaSU8DI+pf8k<@MM(yUR<3qw- zc2Yt4x$A*e=}w=Vv_7;O5~ku#-DjJ;F3+ zEw;b}>5|<>O7~kr3SGh6h9sTkxI{gr_Tvx109_8jqn;k8o`BYU(K7ORvsBE5!AS{~ zKU6HZ7h1aCUPb9Q2KIqdC*Hci1lIRuj*YhJh6Q@Vw<#RwRYyh$yHlZ9@1x7WE5#~B6RW73# z4TtbAk@{>A%R+!_45BRx0M-3G+{7oY1kd9!9!Xr6VaZb0gU|`Qza51#9cR{p&+?6i zj>()r<)GeUpp6=>O9m34T&TF}nK64ONOBHG(2lNYzV z!Kf!AfIRd^FdE%+uWJz!fcJCWm1bAbLQH2Oui7;QMjkHn=tJ4 zr=o!xnUo!MA0@n_33$SbKNm3E5ac?b{jt4qJ?*1dJa|_d*qCoT@o89rC5Nr9fGL`(Hqwh>3h#1dpi(pLN@@tkfGPpE-8$!! z$S+jK?egYijx~q-;$(65)b=Yi3kUb}iqiF`ES|Bj7k;>*<14TqmP&|j|GBE`8a?V8 z6_S(%14K=4rz)kw)@&5oZ3)2Bl)=4WF4xN}H0YrtZ_yG7sZl+?U%2m5_cullqA@R( z7%Ln_su6ovg)EAzMGnIzzbYI@nP^*#x0e$>j=6onL4NO8V&h~O!&Q;rdO%qY(S%6g z(8h}!bHKL5?&Ca!9XaREKuRzRc+3%8)1xla&H}r^3K=PDr6n!(RmPL7!X8c`d1%I{ zK-o~W$4xVlVP0sSPDjre2k5jZfpjTu`w6b2Fu4VyANT=a{$p3)~gK`U#R&og*fFBSs@rn&SqWafh;-#>(w-W zdlc*ZspcQ8*oQ__=$oZ7M$%-ZWP#1|@Q&1lP@e1EMn;6lE#V=01^%~@g|bbU>s-1+ zYCw2iiB)bm+#T-g+mDI>2}(=wQ|snCL;=-M@hy{BUDwh56OB5R2)%O6UHv^cBO(Z{ zM#sRDgyz*T@{w;&cHH53FSK2KF$t#0sfv){`>lfhLH*-~tA$QSP-I2S(TrmDIe7FT>&zHqCXc;j>2EI95xYs15*aiS7z}EN;)Z*@U{z&5aXTk%<7_b*>bB zm5=Yd&Z7qr*ap5Lk*?@uxCLS*BLpVY6@}@j@@!Gvx*8i#6@rhtE6?v9pD@3Jn_3JI zipfeD5rFItA?5s>PSGc-Fj|hcTNNxBR#)Ij!Ne;U@kc-sPYNU2KEv6v-TPj|-;FHJ z5mo9UT&N%I{1%AY?-&l(M{KHWHxd#!T)|CKj!>*_or7I4Fh(9!{r*Gm8K02w4}svf zF3hoXp_guh)aL{Z%HIEbJvz^)t**U`{h%iXJ@w^i0rlL8jHCN4BJRoJ&_If0 zC(>L$A#n50F$*V!Ol$>BT+|DwrC66Y%reSK1>7`MqK z^yc*--<`8AEaZ;DoJ7(2@rWNlj>+A%okbyy7#X8dL`Tyv^EFY0p25RV(xYO(&+>67 zr`kTa+T1u8I6?>*uMmv?L1bti0t}IbXidXHB?QvwPfsq}e!~qB7T}P_0>C^1fc~CN z3I`JyAkSA*=MF>c*8nc-kRyNAvk z>U-aX?hDWV7)jWK;kn5}vcj;NB3$io6w`N98J^pl5lhhOW><|gn^IW3+Y)ab`xI| zx9>-`J=90Y<6PlGt@O!2ZLE`sAL}?C@^<^u8Tm)Bv^|zL0EeFBEjYDc?v8Wd><M zoYVnb&C6$gYcaoUsc)PI31 z)_GON_hXQctu4s$9;=81$*|IC-UtS;et~pq4?v?_Hsu!zKkm4_#ky1*)nSEDyJ2?D zhD4JP`ICc@hm0d%V^Xf`Zkio1$CU3#+bS2`RN$;X9O7y<`I&NG3LW$Q^vUr zWvY!OSu*JA4?+fG~3DiNY;wf|(P^1~1iA>=$EvfBB zBF$4(Gx9ajDDpxwAk!)I91pXETBG0U4O)iY=f7{Fqf6Kc$7nj*hUn7Dzda#Ioh