From 967ee52e960a1a4f4d8672f349f84da83410ab93 Mon Sep 17 00:00:00 2001 From: aswinkarthik93 Date: Sun, 29 Apr 2018 10:07:32 +0530 Subject: [PATCH 01/16] Introduce parallelism while processing a single file --- pkg/digest/digest.go | 88 +++++++++++++++++++++++++++------------ pkg/digest/digest_test.go | 18 ++++++++ 2 files changed, 79 insertions(+), 27 deletions(-) diff --git a/pkg/digest/digest.go b/pkg/digest/digest.go index 90a20d1..73802f1 100644 --- a/pkg/digest/digest.go +++ b/pkg/digest/digest.go @@ -3,7 +3,8 @@ package digest import ( "encoding/csv" "io" - "strings" + "runtime" + "sync" "github.com/cespare/xxhash" ) @@ -16,63 +17,96 @@ const Separator = "," type Digest struct { Key uint64 Value uint64 - Row string } // CreateDigest creates a Digest for each line of csv. // There will be one Digest per line func CreateDigest(csv []string, pKey Positions, pRow Positions) Digest { - row := strings.Join(csv, Separator) key := xxhash.Sum64String(pKey.MapToValue(csv)) digest := xxhash.Sum64String(pRow.MapToValue(csv)) - return Digest{Key: key, Value: digest, Row: row} + return Digest{Key: key, Value: digest} } // Config represents configurations that can be passed // to create a Digest. type Config struct { - KeyPositions []int - Key Positions - Value Positions - Reader io.Reader - Writer io.Writer - SourceMap bool + Key Positions + Value Positions + Reader io.Reader } // NewConfig creates an instance of Config struct. func NewConfig(r io.Reader, createSourceMap bool, primaryKey Positions, valueColumns Positions) *Config { return &Config{ - Reader: r, - SourceMap: createSourceMap, - Key: primaryKey, - Value: valueColumns, + Reader: r, + Key: primaryKey, + Value: valueColumns, } } +const bufferSize = 512 + // Create can create a Digest using the Configurations passed. // It returns the digest as a map[uint64]uint64. // It can also keep track of the Source line. func Create(config *Config) (map[uint64]uint64, map[uint64]string, error) { + maxProcs := runtime.NumCPU() reader := csv.NewReader(config.Reader) output := make(map[uint64]uint64) - sourceMap := make(map[uint64]string) - for { - line, err := reader.Read() - if err != nil { - if err == io.EOF { - break - } - return nil, nil, err + + digestChannel := make(chan []Digest, bufferSize*maxProcs) + + go readAndProcess(config, reader, digestChannel) + + for digests := range digestChannel { + for _, digest := range digests { + output[digest.Key] = digest.Value } - digest := CreateDigest(line, config.Key, config.Value) - output[digest.Key] = digest.Value - if config.SourceMap { - sourceMap[digest.Key] = digest.Row + } + + return output, nil, nil +} + +func readAndProcess(config *Config, reader *csv.Reader, digestChannel chan<- []Digest) { + eofReached := false + var wg sync.WaitGroup + for !eofReached { + lines := make([][]string, bufferSize) + + lineCount := 0 + for ; lineCount < bufferSize; lineCount++ { + line, err := reader.Read() + lines[lineCount] = line + if err != nil { + if err == io.EOF { + eofReached = true + break + } + return + } } + + wg.Add(1) + go createDigestForNLines(lines[:lineCount], config, digestChannel, &wg) + } + wg.Wait() + close(digestChannel) +} + +func createDigestForNLines(lines [][]string, + config *Config, + digestChannel chan<- []Digest, + wg *sync.WaitGroup, +) { + output := make([]Digest, len(lines)) + + for i, line := range lines { + output[i] = CreateDigest(line, config.Key, config.Value) } - return output, sourceMap, nil + digestChannel <- output + wg.Done() } diff --git a/pkg/digest/digest_test.go b/pkg/digest/digest_test.go index cc4604c..e60bc89 100644 --- a/pkg/digest/digest_test.go +++ b/pkg/digest/digest_test.go @@ -2,6 +2,7 @@ package digest import ( "bytes" + "os" "strings" "testing" @@ -64,3 +65,20 @@ func TestDigestForFile(t *testing.T) { assert.Equal(t, expectedDigest, actualDigest) assert.Equal(t, map[uint64]string{}, sourceMap) } + +func TestCreatePerformance(t *testing.T) { + file, err := os.Open("../../benchmark/majestic_million.csv") + defer file.Close() + assert.NoError(t, err) + + config := &Config{ + Reader: file, + KeyPositions: []int{0}, + Key: []int{}, + SourceMap: false, + } + + result, _, _ := Create(config) + + assert.Equal(t, 998390, len(result)) +} From 9775c17bfd1a6e65943197ddc3e46a0525614f52 Mon Sep 17 00:00:00 2001 From: aswinkarthik93 Date: Sun, 29 Apr 2018 12:29:10 +0530 Subject: [PATCH 02/16] Add new compare logic to not load all lines to memory --- pkg/digest/compare.go | 113 +++++++++++++++++++++++++++++++++++++ pkg/digest/compare_test.go | 47 ++++++++++++++- pkg/digest/digest_test.go | 37 ++---------- 3 files changed, 164 insertions(+), 33 deletions(-) diff --git a/pkg/digest/compare.go b/pkg/digest/compare.go index 22f09ff..0c08e1e 100644 --- a/pkg/digest/compare.go +++ b/pkg/digest/compare.go @@ -1,5 +1,13 @@ package digest +import ( + "encoding/csv" + "io" + "runtime" + "strings" + "sync" +) + // Compare compares two Digest maps and returns the additions and modification // keys as arrays. func Compare(baseDigest, newDigest map[uint64]uint64) (additions []uint64, modifications []uint64) { @@ -24,3 +32,108 @@ func Compare(baseDigest, newDigest map[uint64]uint64) (additions []uint64, modif } return additions[:additionCounter], modifications[:modificationCounter] } + +// Difference represents the additions and modifications +// between the two Configs +type Difference struct { + Additions []string + Modifications []string +} + +type messageType int + +const ( + addition messageType = iota + modification messageType = iota +) + +type diffMessage struct { + _type messageType + value string +} + +// Diff will differentiate between two given configs +func Diff(baseConfig, deltaConfig *Config) Difference { + maxProcs := runtime.NumCPU() + base, _, _ := Create(baseConfig) + + additions := make([]string, 0, len(base)) + modifications := make([]string, 0, len(base)) + + messageChan := make(chan []diffMessage, bufferSize*maxProcs) + + go readAndCompare(base, deltaConfig, messageChan) + + for msgs := range messageChan { + for _, msg := range msgs { + if msg._type == addition { + additions = append(additions, msg.value) + } else if msg._type == modification { + modifications = append(modifications, msg.value) + } + } + } + + return Difference{Additions: additions, Modifications: modifications} +} + +func readAndCompare(base map[uint64]uint64, config *Config, msgChannel chan<- []diffMessage) { + reader := csv.NewReader(config.Reader) + eofReached := false + var wg sync.WaitGroup + for !eofReached { + lines := make([][]string, bufferSize) + + lineCount := 0 + for ; lineCount < bufferSize; lineCount++ { + line, err := reader.Read() + lines[lineCount] = line + if err != nil { + if err == io.EOF { + eofReached = true + break + } + return + } + } + + wg.Add(1) + go compareDigestForNLines(base, lines[:lineCount], config, msgChannel, &wg) + } + wg.Wait() + close(msgChannel) +} + +func compareDigestForNLines(base map[uint64]uint64, + lines [][]string, + config *Config, + msgChannel chan<- []diffMessage, + wg *sync.WaitGroup, +) { + output := make([]diffMessage, len(lines)) + diffCounter := 0 + for _, line := range lines { + digest := CreateDigest(line, config.Key, config.Value) + if baseValue, present := base[digest.Key]; present { + // Present in both base and delta + if baseValue != digest.Value { + // Modification + output[diffCounter] = diffMessage{ + value: strings.Join(line, Separator), + _type: modification, + } + diffCounter++ + } + } else { + // Not present in base. So Addition. + output[diffCounter] = diffMessage{ + value: strings.Join(line, Separator), + _type: addition, + } + diffCounter++ + } + } + + msgChannel <- output[:diffCounter] + wg.Done() +} diff --git a/pkg/digest/compare_test.go b/pkg/digest/compare_test.go index 2441fda..45fff8e 100644 --- a/pkg/digest/compare_test.go +++ b/pkg/digest/compare_test.go @@ -1,8 +1,10 @@ -package digest +package digest_test import ( + "strings" "testing" + "github.com/aswinkarthik93/csvdiff/pkg/digest" "github.com/stretchr/testify/assert" ) @@ -20,7 +22,7 @@ func TestCompare(t *testing.T) { 10049141081086325814: 12259600610026582000, } - additions, modifications := Compare(baseDigest, newDigest) + additions, modifications := digest.Compare(baseDigest, newDigest) expectedAdditions := []uint64{10049141081086325814} expectedModifications := []uint64{10000305084889337335} @@ -28,3 +30,44 @@ func TestCompare(t *testing.T) { assert.Equal(t, expectedAdditions, additions) assert.Equal(t, expectedModifications, modifications) } + +func TestDiff(t *testing.T) { + base := `1,col-1,col-2,col-3,one-value +2,col-1,col-2,col-3,two-value +3,col-1,col-2,col-3,three-value +100,col-1,col-2,col-3,hundred-value +` + + delta := `1,col-1,col-2,col-3,one-value +2,col-1,col-2,col-3,two-value-modified +4,col-1,col-2,col-3,four-value-added +100,col-1,col-2,col-3,hundred-value-modified +5,col-1,col-2,col-3,five-value-added +` + + baseConfig := &digest.Config{ + Reader: strings.NewReader(base), + Key: []int{0}, + } + + deltaConfig := &digest.Config{ + Reader: strings.NewReader(delta), + Key: []int{0}, + } + + expected := digest.Difference{ + Additions: []string{ + "4,col-1,col-2,col-3,four-value-added", + "5,col-1,col-2,col-3,five-value-added", + }, + Modifications: []string{ + "2,col-1,col-2,col-3,two-value-modified", + "100,col-1,col-2,col-3,hundred-value-modified", + }, + } + + actual := digest.Diff(baseConfig, deltaConfig) + + assert.ElementsMatch(t, expected.Modifications, actual.Modifications) + assert.ElementsMatch(t, expected.Additions, actual.Additions) +} diff --git a/pkg/digest/digest_test.go b/pkg/digest/digest_test.go index e60bc89..73ece81 100644 --- a/pkg/digest/digest_test.go +++ b/pkg/digest/digest_test.go @@ -1,7 +1,6 @@ package digest import ( - "bytes" "os" "strings" "testing" @@ -15,7 +14,7 @@ func TestCreateDigest(t *testing.T) { firstKey := xxhash.Sum64String("1") firstLineDigest := xxhash.Sum64String(firstLine) - expectedDigest := Digest{Key: firstKey, Value: firstLineDigest, Row: firstLine} + expectedDigest := Digest{Key: firstKey, Value: firstLineDigest} actualDigest := CreateDigest(strings.Split(firstLine, Separator), []int{0}, []int{}) @@ -31,39 +30,17 @@ func TestDigestForFile(t *testing.T) { secondKey := xxhash.Sum64String("2") secondDigest := xxhash.Sum64String(secondLine) - var outputBuffer bytes.Buffer - testConfig := &Config{ - Reader: strings.NewReader(firstLine + "\n" + secondLine), - Writer: &outputBuffer, - KeyPositions: []int{0}, - Key: []int{0}, - SourceMap: true, + Reader: strings.NewReader(firstLine + "\n" + secondLine), + Key: []int{0}, } - actualDigest, sourceMap, err := Create(testConfig) + actualDigest, _, err := Create(testConfig) expectedDigest := map[uint64]uint64{firstKey: firstDigest, secondKey: secondDigest} - expectedSourceMap := map[uint64]string{firstKey: firstLine, secondKey: secondLine} - - assert.Nil(t, err, "error at DigestForFile") - assert.Equal(t, expectedDigest, actualDigest) - assert.Equal(t, expectedSourceMap, sourceMap) - - // No source map - testConfigWithoutSourceMap := &Config{ - Reader: strings.NewReader(firstLine + "\n" + secondLine), - Writer: &outputBuffer, - KeyPositions: []int{0}, - Key: []int{0}, - SourceMap: false, - } - - actualDigest, sourceMap, err = Create(testConfigWithoutSourceMap) assert.Nil(t, err, "error at DigestForFile") assert.Equal(t, expectedDigest, actualDigest) - assert.Equal(t, map[uint64]string{}, sourceMap) } func TestCreatePerformance(t *testing.T) { @@ -72,10 +49,8 @@ func TestCreatePerformance(t *testing.T) { assert.NoError(t, err) config := &Config{ - Reader: file, - KeyPositions: []int{0}, - Key: []int{}, - SourceMap: false, + Reader: file, + Key: []int{}, } result, _, _ := Create(config) From 988af9d9da0acfdeb7538130a9e6db4b269a5a32 Mon Sep 17 00:00:00 2001 From: aswinkarthik93 Date: Sun, 29 Apr 2018 13:13:56 +0530 Subject: [PATCH 03/16] Move tests to different package and test only exported methods --- cmd/run.go | 7 ++----- pkg/digest/compare.go | 28 ++++++++-------------------- pkg/digest/digest.go | 29 +++++++++-------------------- pkg/digest/digest_test.go | 33 +++++++++++++++------------------ pkg/digest/positions.go | 17 +++-------------- pkg/digest/positions_test.go | 22 +++++----------------- pkg/digest/utils.go | 26 ++++++++++++++++++++++++++ 7 files changed, 68 insertions(+), 94 deletions(-) create mode 100644 pkg/digest/utils.go diff --git a/cmd/run.go b/cmd/run.go index 8b1c0ac..cf3c9da 100644 --- a/cmd/run.go +++ b/cmd/run.go @@ -116,15 +116,12 @@ type message struct { } func generateInBackground(name string, config *digest.Config, wg *sync.WaitGroup, channel chan<- message) { - digest, sourceMap, err := digest.Create(config) - if err != nil { - panic(err) - } + digest := digest.Create(config) if debug { log.Println("Generated Digest for " + name) } - channel <- message{digestMap: digest, sourceMap: sourceMap} + channel <- message{digestMap: digest} close(channel) wg.Done() } diff --git a/pkg/digest/compare.go b/pkg/digest/compare.go index 0c08e1e..390b446 100644 --- a/pkg/digest/compare.go +++ b/pkg/digest/compare.go @@ -2,7 +2,6 @@ package digest import ( "encoding/csv" - "io" "runtime" "strings" "sync" @@ -55,7 +54,7 @@ type diffMessage struct { // Diff will differentiate between two given configs func Diff(baseConfig, deltaConfig *Config) Difference { maxProcs := runtime.NumCPU() - base, _, _ := Create(baseConfig) + base := Create(baseConfig) additions := make([]string, 0, len(base)) modifications := make([]string, 0, len(base)) @@ -79,26 +78,15 @@ func Diff(baseConfig, deltaConfig *Config) Difference { func readAndCompare(base map[uint64]uint64, config *Config, msgChannel chan<- []diffMessage) { reader := csv.NewReader(config.Reader) - eofReached := false var wg sync.WaitGroup - for !eofReached { - lines := make([][]string, bufferSize) - - lineCount := 0 - for ; lineCount < bufferSize; lineCount++ { - line, err := reader.Read() - lines[lineCount] = line - if err != nil { - if err == io.EOF { - eofReached = true - break - } - return - } - } - + for { + lines, eofReached := getNextNLines(reader) wg.Add(1) - go compareDigestForNLines(base, lines[:lineCount], config, msgChannel, &wg) + go compareDigestForNLines(base, lines, config, msgChannel, &wg) + + if eofReached { + break + } } wg.Wait() close(msgChannel) diff --git a/pkg/digest/digest.go b/pkg/digest/digest.go index 73802f1..8075a7a 100644 --- a/pkg/digest/digest.go +++ b/pkg/digest/digest.go @@ -51,7 +51,7 @@ const bufferSize = 512 // Create can create a Digest using the Configurations passed. // It returns the digest as a map[uint64]uint64. // It can also keep track of the Source line. -func Create(config *Config) (map[uint64]uint64, map[uint64]string, error) { +func Create(config *Config) map[uint64]uint64 { maxProcs := runtime.NumCPU() reader := csv.NewReader(config.Reader) @@ -67,30 +67,19 @@ func Create(config *Config) (map[uint64]uint64, map[uint64]string, error) { } } - return output, nil, nil + return output } func readAndProcess(config *Config, reader *csv.Reader, digestChannel chan<- []Digest) { - eofReached := false var wg sync.WaitGroup - for !eofReached { - lines := make([][]string, bufferSize) - - lineCount := 0 - for ; lineCount < bufferSize; lineCount++ { - line, err := reader.Read() - lines[lineCount] = line - if err != nil { - if err == io.EOF { - eofReached = true - break - } - return - } - } - + for { + lines, eofReached := getNextNLines(reader) wg.Add(1) - go createDigestForNLines(lines[:lineCount], config, digestChannel, &wg) + go createDigestForNLines(lines, config, digestChannel, &wg) + + if eofReached { + break + } } wg.Wait() close(digestChannel) diff --git a/pkg/digest/digest_test.go b/pkg/digest/digest_test.go index 73ece81..b456bfa 100644 --- a/pkg/digest/digest_test.go +++ b/pkg/digest/digest_test.go @@ -1,10 +1,10 @@ -package digest +package digest_test import ( - "os" "strings" "testing" + "github.com/aswinkarthik93/csvdiff/pkg/digest" "github.com/cespare/xxhash" "github.com/stretchr/testify/assert" ) @@ -14,9 +14,9 @@ func TestCreateDigest(t *testing.T) { firstKey := xxhash.Sum64String("1") firstLineDigest := xxhash.Sum64String(firstLine) - expectedDigest := Digest{Key: firstKey, Value: firstLineDigest} + expectedDigest := digest.Digest{Key: firstKey, Value: firstLineDigest} - actualDigest := CreateDigest(strings.Split(firstLine, Separator), []int{0}, []int{}) + actualDigest := digest.CreateDigest(strings.Split(firstLine, digest.Separator), []int{0}, []int{}) assert.Equal(t, expectedDigest, actualDigest) } @@ -25,35 +25,32 @@ func TestDigestForFile(t *testing.T) { firstLine := "1,first-line,some-columne,friday" firstKey := xxhash.Sum64String("1") firstDigest := xxhash.Sum64String(firstLine) + fridayDigest := xxhash.Sum64String("friday") secondLine := "2,second-line,nobody-needs-this,saturday" secondKey := xxhash.Sum64String("2") secondDigest := xxhash.Sum64String(secondLine) + saturdayDigest := xxhash.Sum64String("saturday") - testConfig := &Config{ + testConfig := &digest.Config{ Reader: strings.NewReader(firstLine + "\n" + secondLine), Key: []int{0}, } - actualDigest, _, err := Create(testConfig) + actualDigest := digest.Create(testConfig) expectedDigest := map[uint64]uint64{firstKey: firstDigest, secondKey: secondDigest} - assert.Nil(t, err, "error at DigestForFile") assert.Equal(t, expectedDigest, actualDigest) -} - -func TestCreatePerformance(t *testing.T) { - file, err := os.Open("../../benchmark/majestic_million.csv") - defer file.Close() - assert.NoError(t, err) - config := &Config{ - Reader: file, - Key: []int{}, + testConfig = &digest.Config{ + Reader: strings.NewReader(firstLine + "\n" + secondLine), + Key: []int{0}, + Value: []int{3}, } - result, _, _ := Create(config) + actualDigest = digest.Create(testConfig) + expectedDigest = map[uint64]uint64{firstKey: fridayDigest, secondKey: saturdayDigest} - assert.Equal(t, 998390, len(result)) + assert.Equal(t, expectedDigest, actualDigest) } diff --git a/pkg/digest/positions.go b/pkg/digest/positions.go index e69b2cf..03a8581 100644 --- a/pkg/digest/positions.go +++ b/pkg/digest/positions.go @@ -9,23 +9,12 @@ type Positions []int // their respective positions and concatenates // them using Separator as a string. func (p Positions) MapToValue(csv []string) string { - if p.Length() == 0 { + if len(p) == 0 { return strings.Join(csv, Separator) } - output := make([]string, p.Length()) - for i, pos := range p.Items() { + output := make([]string, len(p)) + for i, pos := range p { output[i] = csv[pos] } return strings.Join(output, Separator) } - -// Length returns the size of the Positions array. -func (p Positions) Length() int { - return len([]int(p)) -} - -// Items returns the elements of the Positions array -// as an array of int -func (p Positions) Items() []int { - return []int(p) -} diff --git a/pkg/digest/positions_test.go b/pkg/digest/positions_test.go index 90b0c2f..2749d5e 100644 --- a/pkg/digest/positions_test.go +++ b/pkg/digest/positions_test.go @@ -1,14 +1,15 @@ -package digest +package digest_test import ( "strings" "testing" + "github.com/aswinkarthik93/csvdiff/pkg/digest" "github.com/stretchr/testify/assert" ) func TestPositionsMapValues(t *testing.T) { - positions := Positions([]int{0, 3}) + positions := digest.Positions([]int{0, 3}) csv := []string{"zero", "one", "two", "three"} actual := positions.MapToValue(csv) @@ -18,24 +19,11 @@ func TestPositionsMapValues(t *testing.T) { } func TestPositionsMapValuesReturnsCompleteStringCsvIfEmpty(t *testing.T) { - positions := Positions([]int{}) + positions := digest.Positions([]int{}) csv := []string{"zero", "one", "two", "three"} actual := positions.MapToValue(csv) - expected := strings.Join(csv, Separator) + expected := strings.Join(csv, digest.Separator) assert.Equal(t, expected, actual) } - -func TestPositionsLength(t *testing.T) { - positions := Positions([]int{0, 3}) - - assert.Equal(t, 2, positions.Length()) -} - -func TestPositionsItems(t *testing.T) { - items := []int{0, 3} - positions := Positions(items) - - assert.Equal(t, items, positions.Items()) -} diff --git a/pkg/digest/utils.go b/pkg/digest/utils.go new file mode 100644 index 0000000..52048f3 --- /dev/null +++ b/pkg/digest/utils.go @@ -0,0 +1,26 @@ +package digest + +import ( + "encoding/csv" + "io" +) + +func getNextNLines(reader *csv.Reader) ([][]string, bool) { + lines := make([][]string, bufferSize) + + lineCount := 0 + eofReached := false + for ; lineCount < bufferSize; lineCount++ { + line, err := reader.Read() + lines[lineCount] = line + if err != nil { + if err == io.EOF { + eofReached = true + break + } + panic(err) + } + } + + return lines[:lineCount], eofReached +} From f3a8515dc56089701a7fe69292a7063d0a6610e1 Mon Sep 17 00:00:00 2001 From: aswinkarthik93 Date: Sun, 29 Apr 2018 13:30:41 +0530 Subject: [PATCH 04/16] Move run command to root command. Wire up with performance improvements. --- cmd/root.go | 57 +++++++++++++++++++++++++++++++++++++++++--- cmd/run.go | 6 ++--- pkg/digest/digest.go | 2 +- 3 files changed, 58 insertions(+), 7 deletions(-) diff --git a/cmd/root.go b/cmd/root.go index d854c9a..bf310c0 100644 --- a/cmd/root.go +++ b/cmd/root.go @@ -21,26 +21,62 @@ package cmd import ( + "errors" "fmt" + "io" "os" + "time" + "github.com/aswinkarthik93/csvdiff/pkg/digest" homedir "github.com/mitchellh/go-homedir" "github.com/spf13/cobra" "github.com/spf13/viper" ) var cfgFile string +var timed bool // rootCmd represents the base command when called without any subcommands var rootCmd = &cobra.Command{ - Use: "csvdiff", + Use: "csvdiff ", Short: "A diff tool for database tables dumped as csv files", Long: `Differentiates two csv files and finds out the additions and modifications. Most suitable for csv files created from database tables`, + PreRunE: func(cmd *cobra.Command, args []string) error { + if len(args) != 2 { + return errors.New("Pass 2 files. Usage: csvdiff ") + } + return nil + }, // Uncomment the following line if your bare application // has an action associated with it: - // Run: func(cmd *cobra.Command, args []string) { - // }, + Run: func(cmd *cobra.Command, args []string) { + if !timed { + defer timeTrack(time.Now(), "csvdiff") + } + + baseFile := newReadCloser(args[0]) + defer baseFile.Close() + deltaFile := newReadCloser(args[1]) + defer deltaFile.Close() + + baseConfig := digest.NewConfig(baseFile, config.GetPrimaryKeys(), config.GetValueColumns()) + deltaConfig := digest.NewConfig(deltaFile, config.GetPrimaryKeys(), config.GetValueColumns()) + + diff := digest.Diff(baseConfig, deltaConfig) + + fmt.Printf("Additions %d\n", len(diff.Additions)) + fmt.Printf("Modifications %d\n", len(diff.Modifications)) + fmt.Println("Rows:") + + for _, added := range diff.Additions { + fmt.Printf("%s,%s\n", added, "ADDED") + } + + for _, modified := range diff.Modifications { + fmt.Printf("%s,%s\n", modified, "MODIFIED") + } + }, } // Execute adds all child commands to the root command and sets flags appropriately. @@ -63,6 +99,12 @@ func init() { // Cobra also supports local flags, which will only run // when this action is called directly. rootCmd.Flags().BoolP("toggle", "t", false, "Help message for toggle") + + rootCmd.Flags().IntSliceVarP(&config.PrimaryKeyPositions, "primary-key", "p", []int{0}, "Primary key positions of the Input CSV as comma separated values Eg: 1,2") + rootCmd.Flags().IntSliceVarP(&config.ValueColumnPositions, "columns", "", []int{}, "Selectively compare positions in CSV Eg: 1,2. Default is entire row") + + rootCmd.Flags().BoolVarP(&debug, "debug", "", false, "Debug mode") + rootCmd.Flags().BoolVarP(&timed, "time", "", false, "Measure time") } // initConfig reads in config file and ENV variables if set. @@ -90,3 +132,12 @@ func initConfig() { fmt.Println("Using config file:", viper.ConfigFileUsed()) } } + +func newReadCloser(filename string) io.ReadCloser { + file, err := os.Open(filename) + if err != nil { + panic(err) + } + + return file +} diff --git a/cmd/run.go b/cmd/run.go index cf3c9da..2efc197 100644 --- a/cmd/run.go +++ b/cmd/run.go @@ -49,7 +49,7 @@ var ( var newLine []byte func init() { - rootCmd.AddCommand(digestCmd) + // rootCmd.AddCommand(digestCmd) newLine = []byte{'\n'} digestCmd.Flags().StringVarP(&config.Base, "base", "b", "", "The base csv file") @@ -77,9 +77,9 @@ func run() { log.Fatal(err) } - baseConfig := digest.NewConfig(config.GetBaseReader(), false, config.GetPrimaryKeys(), config.GetValueColumns()) + baseConfig := digest.NewConfig(config.GetBaseReader(), config.GetPrimaryKeys(), config.GetValueColumns()) - deltaConfig := digest.NewConfig(config.GetDeltaReader(), true, config.GetPrimaryKeys(), config.GetValueColumns()) + deltaConfig := digest.NewConfig(config.GetDeltaReader(), config.GetPrimaryKeys(), config.GetValueColumns()) var wg sync.WaitGroup baseChannel := make(chan message) diff --git a/pkg/digest/digest.go b/pkg/digest/digest.go index 8075a7a..7adab19 100644 --- a/pkg/digest/digest.go +++ b/pkg/digest/digest.go @@ -38,7 +38,7 @@ type Config struct { } // NewConfig creates an instance of Config struct. -func NewConfig(r io.Reader, createSourceMap bool, primaryKey Positions, valueColumns Positions) *Config { +func NewConfig(r io.Reader, primaryKey Positions, valueColumns Positions) *Config { return &Config{ Reader: r, Key: primaryKey, From 143c0b4313cde7e6918caa7a4b99616bd1671269 Mon Sep 17 00:00:00 2001 From: aswinkarthik93 Date: Sun, 29 Apr 2018 13:35:01 +0530 Subject: [PATCH 05/16] Remove run command --- cmd/root.go | 8 ++- cmd/run.go | 160 ---------------------------------------------------- 2 files changed, 6 insertions(+), 162 deletions(-) delete mode 100644 cmd/run.go diff --git a/cmd/root.go b/cmd/root.go index bf310c0..a36f209 100644 --- a/cmd/root.go +++ b/cmd/root.go @@ -51,7 +51,7 @@ Most suitable for csv files created from database tables`, // Uncomment the following line if your bare application // has an action associated with it: Run: func(cmd *cobra.Command, args []string) { - if !timed { + if timed { defer timeTrack(time.Now(), "csvdiff") } @@ -103,7 +103,6 @@ func init() { rootCmd.Flags().IntSliceVarP(&config.PrimaryKeyPositions, "primary-key", "p", []int{0}, "Primary key positions of the Input CSV as comma separated values Eg: 1,2") rootCmd.Flags().IntSliceVarP(&config.ValueColumnPositions, "columns", "", []int{}, "Selectively compare positions in CSV Eg: 1,2. Default is entire row") - rootCmd.Flags().BoolVarP(&debug, "debug", "", false, "Debug mode") rootCmd.Flags().BoolVarP(&timed, "time", "", false, "Measure time") } @@ -141,3 +140,8 @@ func newReadCloser(filename string) io.ReadCloser { return file } + +func timeTrack(start time.Time, name string) { + elapsed := time.Since(start) + fmt.Fprintln(os.Stderr, fmt.Sprintf("%s took %s", name, elapsed)) +} diff --git a/cmd/run.go b/cmd/run.go deleted file mode 100644 index 2efc197..0000000 --- a/cmd/run.go +++ /dev/null @@ -1,160 +0,0 @@ -// Copyright © 2018 NAME HERE -// -// Licensed under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at -// -// http://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. - -package cmd - -import ( - "encoding/json" - "fmt" - "io" - "log" - "os" - "sync" - "time" - - "github.com/aswinkarthik93/csvdiff/pkg/digest" - spinner "github.com/briandowns/spinner" - "github.com/spf13/cobra" -) - -// digestCmd represents the digest command -var digestCmd = &cobra.Command{ - Use: "run", - Short: "run diff between base-csv and delta-csv", - Run: func(cmd *cobra.Command, args []string) { - run() - }, -} - -var ( - debug bool - noTime bool - noSpinner bool - - loader *spinner.Spinner - startTime time.Time -) - -var newLine []byte - -func init() { - // rootCmd.AddCommand(digestCmd) - newLine = []byte{'\n'} - - digestCmd.Flags().StringVarP(&config.Base, "base", "b", "", "The base csv file") - digestCmd.Flags().StringVarP(&config.Delta, "delta", "d", "", "The delta csv file") - digestCmd.Flags().IntSliceVarP(&config.PrimaryKeyPositions, "primary-key", "p", []int{0}, "Primary key positions of the Input CSV as comma separated values Eg: 1,2") - digestCmd.Flags().IntSliceVarP(&config.ValueColumnPositions, "value-columns", "", []int{}, "Value key positions of the Input CSV as comma separated values Eg: 1,2. Default is entire row") - digestCmd.Flags().StringVarP(&config.Additions, "additions", "a", "STDOUT", "Output stream for the additions in delta file") - digestCmd.Flags().StringVarP(&config.Modifications, "modifications", "m", "STDOUT", "Output stream for the modifications in delta file") - - digestCmd.Flags().BoolVarP(&debug, "debug", "", false, "Debug mode") - digestCmd.Flags().BoolVarP(&noTime, "no-time", "", false, "Do not measure time") - digestCmd.Flags().BoolVarP(&noSpinner, "no-spinner", "", false, "Do not display spinner") - - digestCmd.MarkFlagRequired("base") - digestCmd.MarkFlagRequired("delta") -} - -func run() { - if !noTime { - defer timeTrack(time.Now(), "csvdiff") - } - if str, err := json.Marshal(config); err == nil && debug { - fmt.Println(string(str)) - } else if err != nil { - log.Fatal(err) - } - - baseConfig := digest.NewConfig(config.GetBaseReader(), config.GetPrimaryKeys(), config.GetValueColumns()) - - deltaConfig := digest.NewConfig(config.GetDeltaReader(), config.GetPrimaryKeys(), config.GetValueColumns()) - - var wg sync.WaitGroup - baseChannel := make(chan message) - deltaChannel := make(chan message) - - if !noSpinner { - loader = spinner.New(spinner.CharSets[14], 100*time.Millisecond) - loader.Writer = os.Stderr - loader.Color("cyan") - loader.Start() - loader.Suffix = " Computing hashes" - } - - wg.Add(1) - go generateInBackground("base", baseConfig, &wg, baseChannel) - - wg.Add(1) - go generateInBackground("delta", deltaConfig, &wg, deltaChannel) - - wg.Add(1) - go compareInBackgroud(baseChannel, deltaChannel, &wg) - - wg.Wait() -} - -func timeTrack(start time.Time, name string) { - elapsed := time.Since(start) - log.Printf("%s took %s", name, elapsed) -} - -type message struct { - digestMap map[uint64]uint64 - sourceMap map[uint64]string -} - -func generateInBackground(name string, config *digest.Config, wg *sync.WaitGroup, channel chan<- message) { - digest := digest.Create(config) - - if debug { - log.Println("Generated Digest for " + name) - } - channel <- message{digestMap: digest} - close(channel) - wg.Done() -} - -func compareInBackgroud(baseChannel, deltaChannel <-chan message, wg *sync.WaitGroup) { - baseMessage := <-baseChannel - deltaMessage := <-deltaChannel - if !noSpinner { - loader.Suffix = " Comparing hashes" - } - - additions, modifications := digest.Compare(baseMessage.digestMap, deltaMessage.digestMap) - - aWriter := config.AdditionsWriter() - mWriter := config.ModificationsWriter() - defer aWriter.Close() - defer mWriter.Close() - - if !noSpinner { - loader.Stop() - } - print("Additions", aWriter, additions, deltaMessage.sourceMap) - print("Modifications", mWriter, modifications, deltaMessage.sourceMap) - wg.Done() -} - -func print(recordType string, w io.Writer, positions []uint64, content map[uint64]string) { - fmt.Println() - fmt.Println(fmt.Sprintf("# %s: %d", recordType, len(positions))) - fmt.Println() - - for _, i := range positions { - w.Write([]byte(content[i])) - w.Write(newLine) - } -} From 80fabedd9da01094a86b7f50dd5aa40bf0c6238d Mon Sep 17 00:00:00 2001 From: aswinkarthik93 Date: Sun, 29 Apr 2018 13:39:14 +0530 Subject: [PATCH 06/16] Add version option --- cmd/root.go | 17 +++++++++++++++-- cmd/version.go | 4 ++++ 2 files changed, 19 insertions(+), 2 deletions(-) create mode 100644 cmd/version.go diff --git a/cmd/root.go b/cmd/root.go index a36f209..f4c4ff4 100644 --- a/cmd/root.go +++ b/cmd/root.go @@ -33,8 +33,11 @@ import ( "github.com/spf13/viper" ) -var cfgFile string -var timed bool +var ( + cfgFile string + timed bool + version bool +) // rootCmd represents the base command when called without any subcommands var rootCmd = &cobra.Command{ @@ -43,6 +46,10 @@ var rootCmd = &cobra.Command{ Long: `Differentiates two csv files and finds out the additions and modifications. Most suitable for csv files created from database tables`, PreRunE: func(cmd *cobra.Command, args []string) error { + if version { + return nil + } + if len(args) != 2 { return errors.New("Pass 2 files. Usage: csvdiff ") } @@ -51,6 +58,11 @@ Most suitable for csv files created from database tables`, // Uncomment the following line if your bare application // has an action associated with it: Run: func(cmd *cobra.Command, args []string) { + if version { + fmt.Println(VersionString) + return + } + if timed { defer timeTrack(time.Now(), "csvdiff") } @@ -104,6 +116,7 @@ func init() { rootCmd.Flags().IntSliceVarP(&config.ValueColumnPositions, "columns", "", []int{}, "Selectively compare positions in CSV Eg: 1,2. Default is entire row") rootCmd.Flags().BoolVarP(&timed, "time", "", false, "Measure time") + rootCmd.Flags().BoolVarP(&version, "version", "", false, "Display version") } // initConfig reads in config file and ENV variables if set. diff --git a/cmd/version.go b/cmd/version.go new file mode 100644 index 0000000..c21c381 --- /dev/null +++ b/cmd/version.go @@ -0,0 +1,4 @@ +package cmd + +// VersionString to display on --version call +const VersionString = "csvdiff v0.1.1" From da5b6238dbfd69f1a658df2e03a07f7b18089412 Mon Sep 17 00:00:00 2001 From: aswinkarthik93 Date: Sun, 29 Apr 2018 13:56:00 +0530 Subject: [PATCH 07/16] Introduce formatter with default as stdout formatter --- cmd/config.go | 35 +++++++++++++++++++++++++++++++++++ cmd/config_test.go | 46 +++++++++++++++++++++++++++++++++++++++------- cmd/formatter.go | 31 +++++++++++++++++++++++++++++++ cmd/root.go | 12 +----------- 4 files changed, 106 insertions(+), 18 deletions(-) create mode 100644 cmd/formatter.go diff --git a/cmd/config.go b/cmd/config.go index 76c5ac3..bc3e799 100644 --- a/cmd/config.go +++ b/cmd/config.go @@ -1,9 +1,11 @@ package cmd import ( + "errors" "io" "log" "os" + "strings" "github.com/aswinkarthik93/csvdiff/pkg/digest" ) @@ -18,6 +20,7 @@ func init() { type Config struct { PrimaryKeyPositions []int ValueColumnPositions []int + Format string Base string Delta string Additions string @@ -82,3 +85,35 @@ func getWriter(outputStream string) io.WriteCloser { } return os.Stdout } + +// Validate validates the config object +// and returns error if not valid. +func (c *Config) Validate() error { + allFormats := []string{stdout} + + formatValid := false + for _, format := range allFormats { + if strings.ToLower(c.Format) == format { + formatValid = true + } + } + + if !formatValid { + return errors.New("Specified format is not valid") + } + + return nil +} + +const ( + stdout = "stdout" +) + +// Formatter instantiates a new formatted +// based on config.Format +func (c *Config) Formatter() Formatter { + if strings.ToLower(c.Format) == stdout { + return &StdoutFormatter{} + } + return &StdoutFormatter{} +} diff --git a/cmd/config_test.go b/cmd/config_test.go index 30338d6..87b3b3e 100644 --- a/cmd/config_test.go +++ b/cmd/config_test.go @@ -1,30 +1,62 @@ -package cmd +package cmd_test import ( "testing" + "github.com/aswinkarthik93/csvdiff/cmd" "github.com/aswinkarthik93/csvdiff/pkg/digest" "github.com/stretchr/testify/assert" ) func TestPrimaryKeyPositions(t *testing.T) { - config := Config{PrimaryKeyPositions: []int{0, 1}} + config := cmd.Config{PrimaryKeyPositions: []int{0, 1}} assert.Equal(t, digest.Positions([]int{0, 1}), config.GetPrimaryKeys()) - config = Config{PrimaryKeyPositions: []int{}} + config = cmd.Config{PrimaryKeyPositions: []int{}} assert.Equal(t, digest.Positions([]int{0}), config.GetPrimaryKeys()) - config = Config{} + config = cmd.Config{} assert.Equal(t, digest.Positions([]int{0}), config.GetPrimaryKeys()) } func TestValueColumnPositions(t *testing.T) { - config := Config{ValueColumnPositions: []int{0, 1}} + config := cmd.Config{ValueColumnPositions: []int{0, 1}} assert.Equal(t, digest.Positions([]int{0, 1}), config.GetValueColumns()) - config = Config{ValueColumnPositions: []int{}} + config = cmd.Config{ValueColumnPositions: []int{}} assert.Equal(t, digest.Positions([]int{}), config.GetValueColumns()) - config = Config{} + config = cmd.Config{} assert.Equal(t, digest.Positions([]int{}), config.GetValueColumns()) } + +func TestConfigValidate(t *testing.T) { + var config *cmd.Config + + config = &cmd.Config{} + assert.Error(t, config.Validate()) + + config = &cmd.Config{Format: "stdout"} + assert.NoError(t, config.Validate()) + + config = &cmd.Config{Format: "stdOUT"} + assert.NoError(t, config.Validate()) +} + +func TestDefaultConfigFormatter(t *testing.T) { + config := &cmd.Config{} + + formatter, ok := config.Formatter().(*cmd.StdoutFormatter) + + assert.True(t, ok) + assert.NotNil(t, formatter) +} + +func TestStdoutConfigFormatter(t *testing.T) { + config := &cmd.Config{Format: "stdout"} + + formatter, ok := config.Formatter().(*cmd.StdoutFormatter) + + assert.True(t, ok) + assert.NotNil(t, formatter) +} diff --git a/cmd/formatter.go b/cmd/formatter.go new file mode 100644 index 0000000..534f051 --- /dev/null +++ b/cmd/formatter.go @@ -0,0 +1,31 @@ +package cmd + +import ( + "fmt" + + "github.com/aswinkarthik93/csvdiff/pkg/digest" +) + +// Formatter defines the interface through which differences +// can be formatted and displayed +type Formatter interface { + Format(digest.Difference) +} + +// StdoutFormatter formats diff to STDOUT +type StdoutFormatter struct{} + +// Format prints the diff to os.Stdout +func (f *StdoutFormatter) Format(diff digest.Difference) { + fmt.Printf("Additions %d\n", len(diff.Additions)) + fmt.Printf("Modifications %d\n", len(diff.Modifications)) + fmt.Println("Rows:") + + for _, added := range diff.Additions { + fmt.Printf("%s,%s\n", added, "ADDED") + } + + for _, modified := range diff.Modifications { + fmt.Printf("%s,%s\n", modified, "MODIFIED") + } +} diff --git a/cmd/root.go b/cmd/root.go index f4c4ff4..d00f91a 100644 --- a/cmd/root.go +++ b/cmd/root.go @@ -77,17 +77,7 @@ Most suitable for csv files created from database tables`, diff := digest.Diff(baseConfig, deltaConfig) - fmt.Printf("Additions %d\n", len(diff.Additions)) - fmt.Printf("Modifications %d\n", len(diff.Modifications)) - fmt.Println("Rows:") - - for _, added := range diff.Additions { - fmt.Printf("%s,%s\n", added, "ADDED") - } - - for _, modified := range diff.Modifications { - fmt.Printf("%s,%s\n", modified, "MODIFIED") - } + config.Formatter().Format(diff) }, } From b89cb059c8dd9048c0ec629871e395c08da2c80b Mon Sep 17 00:00:00 2001 From: aswinkarthik93 Date: Sun, 29 Apr 2018 14:17:51 +0530 Subject: [PATCH 08/16] Introduce json format --- cmd/config.go | 14 +++++++---- cmd/config_test.go | 22 ++++++++++++----- cmd/formatter.go | 35 ++++++++++++++++++++------- cmd/formatter_test.go | 55 +++++++++++++++++++++++++++++++++++++++++++ cmd/root.go | 3 ++- 5 files changed, 108 insertions(+), 21 deletions(-) create mode 100644 cmd/formatter_test.go diff --git a/cmd/config.go b/cmd/config.go index bc3e799..7af0db9 100644 --- a/cmd/config.go +++ b/cmd/config.go @@ -89,7 +89,7 @@ func getWriter(outputStream string) io.WriteCloser { // Validate validates the config object // and returns error if not valid. func (c *Config) Validate() error { - allFormats := []string{stdout} + allFormats := []string{rowmark, jsonFormat} formatValid := false for _, format := range allFormats { @@ -106,14 +106,18 @@ func (c *Config) Validate() error { } const ( - stdout = "stdout" + rowmark = "rowmark" + jsonFormat = "json" ) // Formatter instantiates a new formatted // based on config.Format func (c *Config) Formatter() Formatter { - if strings.ToLower(c.Format) == stdout { - return &StdoutFormatter{} + format := strings.ToLower(c.Format) + if format == rowmark { + return &RowMarkFormatter{} + } else if format == jsonFormat { + return &JSONFormatter{} } - return &StdoutFormatter{} + return &RowMarkFormatter{} } diff --git a/cmd/config_test.go b/cmd/config_test.go index 87b3b3e..705a1c0 100644 --- a/cmd/config_test.go +++ b/cmd/config_test.go @@ -36,27 +36,37 @@ func TestConfigValidate(t *testing.T) { config = &cmd.Config{} assert.Error(t, config.Validate()) - config = &cmd.Config{Format: "stdout"} + config = &cmd.Config{Format: "rowmark"} assert.NoError(t, config.Validate()) - config = &cmd.Config{Format: "stdOUT"} + config = &cmd.Config{Format: "rowMARK"} + assert.NoError(t, config.Validate()) + + config = &cmd.Config{Format: "json"} assert.NoError(t, config.Validate()) } func TestDefaultConfigFormatter(t *testing.T) { config := &cmd.Config{} - formatter, ok := config.Formatter().(*cmd.StdoutFormatter) + formatter, ok := config.Formatter().(*cmd.RowMarkFormatter) assert.True(t, ok) assert.NotNil(t, formatter) } -func TestStdoutConfigFormatter(t *testing.T) { - config := &cmd.Config{Format: "stdout"} +func TestConfigFormatter(t *testing.T) { + var config *cmd.Config + var formatter cmd.Formatter + var ok bool - formatter, ok := config.Formatter().(*cmd.StdoutFormatter) + config = &cmd.Config{Format: "rowmark"} + formatter, ok = config.Formatter().(*cmd.RowMarkFormatter) + assert.True(t, ok) + assert.NotNil(t, formatter) + config = &cmd.Config{Format: "json"} + formatter, ok = config.Formatter().(*cmd.JSONFormatter) assert.True(t, ok) assert.NotNil(t, formatter) } diff --git a/cmd/formatter.go b/cmd/formatter.go index 534f051..b83cc30 100644 --- a/cmd/formatter.go +++ b/cmd/formatter.go @@ -1,7 +1,9 @@ package cmd import ( + "encoding/json" "fmt" + "io" "github.com/aswinkarthik93/csvdiff/pkg/digest" ) @@ -9,23 +11,38 @@ import ( // Formatter defines the interface through which differences // can be formatted and displayed type Formatter interface { - Format(digest.Difference) + Format(digest.Difference, io.Writer) } -// StdoutFormatter formats diff to STDOUT -type StdoutFormatter struct{} +// RowMarkFormatter formats diff by marking each row as +// ADDED/MODIFIED. It mutates the row and adds as a new column. +type RowMarkFormatter struct{} // Format prints the diff to os.Stdout -func (f *StdoutFormatter) Format(diff digest.Difference) { - fmt.Printf("Additions %d\n", len(diff.Additions)) - fmt.Printf("Modifications %d\n", len(diff.Modifications)) - fmt.Println("Rows:") +func (f *RowMarkFormatter) Format(diff digest.Difference, w io.Writer) { + fmt.Fprintf(w, "Additions %d\n", len(diff.Additions)) + fmt.Fprintf(w, "Modifications %d\n", len(diff.Modifications)) + fmt.Fprintf(w, "Rows:\n") for _, added := range diff.Additions { - fmt.Printf("%s,%s\n", added, "ADDED") + fmt.Fprintf(w, "%s,%s\n", added, "ADDED") } for _, modified := range diff.Modifications { - fmt.Printf("%s,%s\n", modified, "MODIFIED") + fmt.Fprintf(w, "%s,%s\n", modified, "MODIFIED") } } + +// JSONFormatter formats diff to as a JSON Object +type JSONFormatter struct{} + +// Format prints the diff as a JSON +func (f *JSONFormatter) Format(diff digest.Difference, w io.Writer) { + data, err := json.MarshalIndent(diff, "", " ") + + if err != nil { + panic(err) + } + + w.Write(data) +} diff --git a/cmd/formatter_test.go b/cmd/formatter_test.go new file mode 100644 index 0000000..da00383 --- /dev/null +++ b/cmd/formatter_test.go @@ -0,0 +1,55 @@ +package cmd_test + +import ( + "bytes" + "testing" + + "github.com/aswinkarthik93/csvdiff/cmd" + "github.com/aswinkarthik93/csvdiff/pkg/digest" + + "github.com/stretchr/testify/assert" +) + +func TestJSONFormat(t *testing.T) { + var formatter cmd.Formatter + diff := digest.Difference{ + Additions: []string{"additions"}, + Modifications: []string{"modification"}, + } + expected := `{ + "Additions": [ + "additions" + ], + "Modifications": [ + "modification" + ] +}` + + var buffer bytes.Buffer + + formatter = &cmd.JSONFormatter{} + + formatter.Format(diff, &buffer) + assert.Equal(t, expected, buffer.String()) +} + +func TestRowMarkFormatter(t *testing.T) { + var formatter cmd.Formatter + diff := digest.Difference{ + Additions: []string{"additions"}, + Modifications: []string{"modification"}, + } + expected := `Additions 1 +Modifications 1 +Rows: +additions,ADDED +modification,MODIFIED +` + + var buffer bytes.Buffer + + formatter = &cmd.RowMarkFormatter{} + + formatter.Format(diff, &buffer) + assert.Equal(t, expected, buffer.String()) +} diff --git a/cmd/root.go b/cmd/root.go index d00f91a..668b659 100644 --- a/cmd/root.go +++ b/cmd/root.go @@ -77,7 +77,7 @@ Most suitable for csv files created from database tables`, diff := digest.Diff(baseConfig, deltaConfig) - config.Formatter().Format(diff) + config.Formatter().Format(diff, os.Stdout) }, } @@ -104,6 +104,7 @@ func init() { rootCmd.Flags().IntSliceVarP(&config.PrimaryKeyPositions, "primary-key", "p", []int{0}, "Primary key positions of the Input CSV as comma separated values Eg: 1,2") rootCmd.Flags().IntSliceVarP(&config.ValueColumnPositions, "columns", "", []int{}, "Selectively compare positions in CSV Eg: 1,2. Default is entire row") + rootCmd.Flags().StringVarP(&config.Format, "format", "", "rowmark", "Available (rowmark|json)") rootCmd.Flags().BoolVarP(&timed, "time", "", false, "Measure time") rootCmd.Flags().BoolVarP(&version, "version", "", false, "Display version") From ab165c7f91a0f5b8813d483cb7bd2bd8ef4a6e31 Mon Sep 17 00:00:00 2001 From: aswinkarthik93 Date: Sun, 29 Apr 2018 14:21:23 +0530 Subject: [PATCH 09/16] Validate configs on start and remove dead code --- cmd/config.go | 50 -------------------------------------------------- cmd/root.go | 9 +++++++++ 2 files changed, 9 insertions(+), 50 deletions(-) diff --git a/cmd/config.go b/cmd/config.go index 7af0db9..d5cf9da 100644 --- a/cmd/config.go +++ b/cmd/config.go @@ -2,9 +2,6 @@ package cmd import ( "errors" - "io" - "log" - "os" "strings" "github.com/aswinkarthik93/csvdiff/pkg/digest" @@ -21,10 +18,6 @@ type Config struct { PrimaryKeyPositions []int ValueColumnPositions []int Format string - Base string - Delta string - Additions string - Modifications string } // GetPrimaryKeys is to return the --primary-key flags as digest.Positions array. @@ -43,49 +36,6 @@ func (c *Config) GetValueColumns() digest.Positions { return []int{} } -// GetBaseReader returns an io.Reader for the base file. -func (c *Config) GetBaseReader() io.Reader { - return getReader(c.Base) -} - -// GetDeltaReader returns an io.Reader for the delta file. -func (c *Config) GetDeltaReader() io.Reader { - return getReader(c.Delta) -} - -// AdditionsWriter gives the output stream for the additions in delta csv. -func (c *Config) AdditionsWriter() io.WriteCloser { - return getWriter(c.Additions) -} - -// ModificationsWriter gives the output stream for the modifications in delta csv. -func (c *Config) ModificationsWriter() io.WriteCloser { - return getWriter(c.Modifications) -} - -func getReader(filename string) io.Reader { - file, err := os.Open(filename) - - if err != nil { - log.Fatal(err) - } - - return file -} - -func getWriter(outputStream string) io.WriteCloser { - if outputStream != "STDOUT" { - file, err := os.Create(outputStream) - - if err != nil { - log.Fatal(err) - } - - return file - } - return os.Stdout -} - // Validate validates the config object // and returns error if not valid. func (c *Config) Validate() error { diff --git a/cmd/root.go b/cmd/root.go index 668b659..089398f 100644 --- a/cmd/root.go +++ b/cmd/root.go @@ -46,18 +46,27 @@ var rootCmd = &cobra.Command{ Long: `Differentiates two csv files and finds out the additions and modifications. Most suitable for csv files created from database tables`, PreRunE: func(cmd *cobra.Command, args []string) error { + // If its --version flag, dont thrown error if version { return nil } + // Validate args if len(args) != 2 { return errors.New("Pass 2 files. Usage: csvdiff ") } + + // Validate flags + if err := config.Validate(); err != nil { + return err + } + return nil }, // Uncomment the following line if your bare application // has an action associated with it: Run: func(cmd *cobra.Command, args []string) { + // Print version and exit program if version { fmt.Println(VersionString) return From 18d4669b576c3e2a402b1e61f8efcec4a64b292f Mon Sep 17 00:00:00 2001 From: aswinkarthik93 Date: Sun, 29 Apr 2018 14:27:57 +0530 Subject: [PATCH 10/16] Update benchmark results --- benchmark/README.md | 47 ++++++++++++++++++++++++--------------------- 1 file changed, 25 insertions(+), 22 deletions(-) diff --git a/benchmark/README.md b/benchmark/README.md index e4d4dcd..e38aa9e 100644 --- a/benchmark/README.md +++ b/benchmark/README.md @@ -1,26 +1,29 @@ -## Comparison with other tools +# Comparison with other tools - -### Setup +## Setup * Using the majestic million data. (Source in credits section) * Both files have 998390 rows and 12 columns. * Only one modification between both files. * Ran on Processor: Intel Core i7 2.5 GHz 4 cores 16 GB RAM -0. csvdiff (this tool) : *0m2.085s* - -```bash -time csvdiff run -b majestic_million.csv -d majestic_million_diff.csv +## Baseline -# Additions: 0 -# Modifications: 1 +0. csvdiff (this tool) : *0m1.159s* -real 0m2.085s -user 0m3.861s -sys 0m0.340s +```bash + time csvdiff majestic_million.csv majestic_million_diff.csv +Additions 0 +Modifications 1 +... + +real 0m1.159s +user 0m2.167s +sys 0m0.222s ``` +## Other tools + 1. [data.table](https://github.com/Rdatatable/data.table) : *0m4.284s* * Join both csvs using `id` column. @@ -71,13 +74,13 @@ $ cd ./pkg/digest $ go test -bench=. -v -benchmem -benchtime=5s -cover ``` -| | | | | | -| ---------------------------- | ---------- | ----------------------- | -------------------- | ------------------- | -| BenchmarkCreate1-8 | 2000000 | 5967 ns/op | 5474 B/op | 21 allocs/op | -| BenchmarkCreate10-8 | 500000 | 16251 ns/op | 10889 B/op | 94 allocs/op | -| BenchmarkCreate100-8 | 100000 | 114219 ns/op | 67139 B/op | 829 allocs/op | -| BenchmarkCreate1000-8 | 10000 | 1042723 ns/op | 674239 B/op | 8078 allocs/op | -| BenchmarkCreate10000-8 | 1000 | 10386850 ns/op | 6533806 B/op | 80306 allocs/op | -| BenchmarkCreate100000-8 | 100 | 108740944 ns/op | 64206718 B/op | 804208 allocs/op | -| BenchmarkCreate1000000-8 | 5 | 1161730558 ns/op | 672048142 B/op | 8039026 allocs/op | -| BenchmarkCreate10000000-8 | 1 | 12721982424 ns/op | 6549111872 B/op| 80308455 allocs/op | +``` +BenchmarkCreate1-8 200000 31794 ns/op 116163 B/op 24 allocs/op +BenchmarkCreate10-8 200000 43351 ns/op 119993 B/op 79 allocs/op +BenchmarkCreate100-8 50000 142645 ns/op 160577 B/op 634 allocs/op +BenchmarkCreate1000-8 10000 907308 ns/op 621694 B/op 6085 allocs/op +BenchmarkCreate10000-8 1000 7998083 ns/op 5117977 B/op 60345 allocs/op +BenchmarkCreate100000-8 100 81260585 ns/op 49106849 B/op 604563 allocs/op +BenchmarkCreate1000000-8 10 788485738 ns/op 520115434 B/op 6042650 allocs/op +BenchmarkCreate10000000-8 1 7878009695 ns/op 5029061632 B/op 60346535 allocs/op +``` \ No newline at end of file From cecff826bbcae146d074eb55216f7b0311d4c934 Mon Sep 17 00:00:00 2001 From: aswinkarthik93 Date: Sun, 29 Apr 2018 14:33:42 +0530 Subject: [PATCH 11/16] Update documentation and usage --- README.md | 32 +++++++++++++++++++++++++------- examples/README.md | 40 ---------------------------------------- 2 files changed, 25 insertions(+), 47 deletions(-) delete mode 100644 examples/README.md diff --git a/README.md b/README.md index 8fc2a75..0d2cac8 100644 --- a/README.md +++ b/README.md @@ -24,11 +24,10 @@ Csvdiff is a difftool to compute changes between two csv files. ## Usage ```bash -$ csvdiff run --base base.csv --delta delta.csv +$ csvdiff base.csv delta.csv # Additions: 1 -... - # Modifications: 20 +# Rows: ... ``` @@ -85,22 +84,41 @@ go get -u github.com/aswinkarthik93/csvdiff ## Miscellaneous features +- By default, it marks the row as ADDED or MODIFIED by introducing a new column at last. + +```bash +% csvdiff examples/base-small.csv examples/delta-small.csv +Additions 1 +Modifications 1 +Rows: +24564,907,completely-newsite.com,com,19827,32902,completely-newsite.com,com,1621,909,19787,32822,ADDED +69,1048,aol.com,com,97543,225532,aol.com,com,70,49,97328,224491,MODIFIED +``` + - The `--primary-key` in an integer array. Specify comma separated positions if the table has a compound key. Using this primary key, it can figure out modifications. If the primary key changes, it is an addition. ```bash -% csvdiff run --base base.csv --delta delta.csv --primary-key 0,1 +% csvdiff base.csv delta.csv --primary-key 0,1 ``` - If you want to compare only few columns in the csv when computing hash, ```bash -% csvdiff run --base base.csv --delta delta.csv --primary-key 0,1 --value-columns 2 +% csvdiff base.csv delta.csv --primary-key 0,1 --columns 2 ``` -- **Additions** and **Modifications** can be written to files directly instead of STDOUT. +- Supports JSON format for post processing ```bash -% csvdiff run --base base.csv --delta delta.csv --additions additions.csv --modifications modifications.csv +% csvdiff examples/base-small.csv examples/delta-small.csv --format json +{ + "Additions": [ + "24564,907,completely-newsite.com,com,19827,32902,completely-newsite.com,com,1621,909,19787,32822" + ], + "Modifications": [ + "69,1048,aol.com,com,97543,225532,aol.com,com,70,49,97328,224491" + ] +} ``` ## Build locally diff --git a/examples/README.md b/examples/README.md deleted file mode 100644 index 5cf292a..0000000 --- a/examples/README.md +++ /dev/null @@ -1,40 +0,0 @@ -## Example - -Dataset is used from this [blog](https://blog.majestic.com/development/majestic-million-csv-daily/) - -- Base csv file - -```bash -% cat ./examples/base-small.csv -15,12,wordpress.com,com,207790,792348,wordpress.com,com,15,12,207589,791634 -43,1,europa.eu,eu,116613,353412,europa.eu,eu,41,1,119129,359818 -69,48,aol.com,com,97543,225532,aol.com,com,70,49,97328,224491 -1615,905,proboards.com,com,19833,33110,proboards.com,com,1613,902,19835,33135 -1616,906,ccleaner.com,com,19831,32507,ccleaner.com,com,1614,903,19834,32463 -1617,907,doodle.com,com,19827,32902,doodle.com,com,1621,909,19787,32822 -``` - -- Delta csv file - -```bash -% cat ./examples/delta-small.csv -15,12,wordpress.com,com,207790,792348,wordpress.com,com,15,12,207589,791634 -43,1,europa.eu,eu,116613,353412,europa.eu,eu,41,1,119129,359818 -69,1048,aol.com,com,97543,225532,aol.com,com,70,49,97328,224491 -24564,907,completely-newsite.com,com,19827,32902,completely-newsite.com,com,1621,909,19787,32822 -``` - -- On run of csvdiff - -```bash -% csvdiff run --base ./examples/base-small.csv --delta ./examples/delta-small.csv --primary-key 0 - -# Additions: 1 - -24564,907,completely-newsite.com,com,19827,32902,completely-newsite.com,com,1621,909,19787,32822 - -# Modifications: 1 - -69,1048,aol.com,com,97543,225532,aol.com,com,70,49,97328,224491 -2018/04/23 21:43:30 csvdiff took 1.361831ms -``` \ No newline at end of file From a831e0276cbc7a059dee75a003ecc998f8bd33c3 Mon Sep 17 00:00:00 2001 From: aswinkarthik93 Date: Sun, 29 Apr 2018 14:35:12 +0530 Subject: [PATCH 12/16] Remove unused spinner library --- glide.lock | 12 ++---------- glide.yaml | 2 -- 2 files changed, 2 insertions(+), 12 deletions(-) diff --git a/glide.lock b/glide.lock index 50b8ccf..282569f 100644 --- a/glide.lock +++ b/glide.lock @@ -1,12 +1,8 @@ -hash: a42b65bfb8f09e42a12971ff7d5c5b0106a86382a5dd90fc3e5b29d58c913f03 -updated: 2018-04-24T14:50:45.370899074+05:30 +hash: 9e942e84862c4047de33d9cbf763351d1baa5cd7e8f4c2745af2856a9570e0a8 +updated: 2018-04-29T14:34:53.907789+05:30 imports: -- name: github.com/briandowns/spinner - version: 48dbb65d7bd5c74ab50d53d04c949f20e3d14944 - name: github.com/cespare/xxhash version: 5c37fe3735342a2e0d01c87a907579987c8936cc -- name: github.com/fatih/color - version: 507f6050b8568533fb3f5504de8e5205fa62a114 - name: github.com/fsnotify/fsnotify version: c2828203cd70a50dcccfb2761f8b1f8ceef9a8e9 - name: github.com/hashicorp/hcl @@ -25,10 +21,6 @@ imports: version: 76626ae9c91c4f2a10f34cad8ce83ea42c93bb75 - name: github.com/magiconair/properties version: 2c9e9502788518c97fe44e8955cd069417ee89df -- name: github.com/mattn/go-colorable - version: 7dc3415be66d7cc68bf0182f35c8d31f8d2ad8a7 -- name: github.com/mattn/go-isatty - version: 6ca4dbf54d38eea1a992b3c722a76a5d1c4cb25c - name: github.com/mitchellh/go-homedir version: b8bc1bf767474819792c23f32d8286a45736f1c6 - name: github.com/mitchellh/mapstructure diff --git a/glide.yaml b/glide.yaml index 51ed9d1..8439936 100644 --- a/glide.yaml +++ b/glide.yaml @@ -1,7 +1,5 @@ package: github.com/aswinkarthik93/csvdiff import: -- package: github.com/briandowns/spinner - version: ^1.0.0 - package: github.com/cespare/xxhash version: ^1.0.0 - package: github.com/mitchellh/go-homedir From b68806f08a0b25aa30256c675d872649cf0f8a6b Mon Sep 17 00:00:00 2001 From: aswinkarthik93 Date: Sun, 29 Apr 2018 14:35:52 +0530 Subject: [PATCH 13/16] Add majestic_million csv to gitignored files --- .gitignore | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/.gitignore b/.gitignore index f0d247e..51af806 100644 --- a/.gitignore +++ b/.gitignore @@ -19,4 +19,6 @@ out/ # End of https://www.gitignore.io/api/go -vendor/ \ No newline at end of file +vendor/ + +majestic_million*.csv \ No newline at end of file From d225d9aeb69d923a64740e7986de88f16ea0b054 Mon Sep 17 00:00:00 2001 From: aswinkarthik93 Date: Sun, 29 Apr 2018 14:43:41 +0530 Subject: [PATCH 14/16] Update demo --- demo/csvdiff.gif | Bin 148988 -> 141471 bytes 1 file changed, 0 insertions(+), 0 deletions(-) diff --git a/demo/csvdiff.gif b/demo/csvdiff.gif index 65eba7b238c1f52f33b1b022157106833524cc67..76fca8c4afb160f4979ddfb4c0b213653a4dc5de 100644 GIT binary patch literal 141471 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 Bz{7}kA@l{>QX{%nYBR?MHHgA3xhzt7 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 literal 148988 zcmeFZ2UOE(*Y^8QXd$%Ft3c>QkS-!<3cZHjkrI$50tS$3NC-7xsDhvZ0wSUUB4S~r zNfQ*YffYM47F6txoI43RGtbQPp0~`q&Ue=OT+ABA<*>|M_TKk({r0x8vo_rjG6`RS zr9cpRh0oc_!yS($SQ+T*aljz(Tc0_hjo{yF!9Ni5kL5AH;X&{qcp)hTNKOS((t@;2 zAZ>GmzPY5fiKL+k8jW7Nb}d@lL`&NQ4gS*%d|7B18f%$Z7-*YVXqy-t8ylIKtT(f; zFa-Z29@2Jzv6d}VIA~#TS{Mg3o}g^&s)ZqF+4~zGr`a^2yIV9 zJI88yZ%2Elp#9Rdg0l3zw_CW!T5O5Z3e7SKO|u9iS%jxzwN0!HO>kx=_J$@7W+twN zCaz{C)))&%jEOte#K+pi-`*s|#U#Yt!rB_=;N;|F?T_{Iadp9YdOP@f-~;^}e7p(R zE!%Nnan|7^Yio+nI1+f zBNkOfl~lzrsuHrPiL^peVR2e6HM4-0T1ZdIV~~m~(o4#AlvQPvS7v8LWK*|OaucZq zDU_mgDkFo$(WgE+4>9k!$QlYOWl#Efo%&=stY)5aFQxR89BdwIe8yrw;-Fo65P3*gUZL-}jUjy+NQ$(QD7LldPe*K_v zcPL*}J8lk99TwdCJsSR@fQSl?K_i77dpl+>)Z>ffbzJdU!Q0KI;oLMXy)ELlXXM*! zb_85LVE602DcSDlTb#3Ed|y6o$TeyYK7H#Erk-2Bw(M-i$J+%$(mVw9*vz&Zh=)RFs?X8;_ed(VroqVtc8;)?>kL!KkGEd>J zYKCd`4>!o@&0V>{Kpe67a7%=T1d4?mUboIPa{}EVuUm=0A-&*@+w@xXXt`xnD z z@Lag;oiyFi4!_7QIUbM9q#JKVjD}>^{t7$Mm-*>IkHRiuKjB)bCMo$A$H`BYs{QjT zS5U*&Ji4ET-5=`n>Ul|_PORbM`cNdo9n~KvcPUE8;HHM(Y^ZpdjZf+vx3Ts#asS$! zVXcqCk4+!*7i?mjq(a};mr-xVojugISO(p%7?p~|>14fq3k%N(>F0hS7)3@Z$Y>IR z&+xB6h3D7Sj>m{Au4}?fa)dqRt+zxIW_w@{eAd9X^>cTvy;1A?wL)OaIm~>~cIfl* zF3tBZ_TGE7vchLJkQaUZ$d(R@eY^XZvOGtTP|X;0Fn&@?a6u|)tT;>eA#4_-@CoD8RLd0 z#;4-a-qp_YA2J=ayOg;1UEPA?A+wv~my*xC+qXnNWd6+Va@wtT`#(({+VpXJ<#N`S zcLyMWRt%5*G(~2)9^urAlbo2&HCt{#6}MWd+g~a4TW*w^YPDWJait_}`Jke}VOtyf znXvs?IDo>lGh%+-iSy@2%w))2YMGDHB)se_1|+5ojai*W|=#O0Ik0k1mp(A~3;UzHg>`G`= zPfy?4xE=m;ci$#={qma*u^8(Q@nd>R1#}bF9J%wvpy%`@rx&n#*}FqMA5LBme4*yJ zkssD?ayHM3TVI7hmO>1{8@Z0B-Mo13!7OqK3!bPRb$n`2`*||b`NZCvlTS^~ zeqNc1FF8^7%<-Ao?a!BXUOKV=ne>h!DM z?JqZaFP%J=GWBcF*Dp8w1$#R3oL+>=ew`h2?&;by^&(>9*SYDEp6)|VFQfgx-kQDC z({pO-WnB8#+w+2_dPkjJCDwkuv*3K{%+0A+$!EXbT`DP6{PqB~yLVXK`Awn!w}(=fdq>t^dQ+1A?UAC; z=`kDUw`H~89&6liIX&Th>21~7Z%_1gpPt<6{BG~D~UX-=1NF&P?Yy zFE`5mwqWaWW@gW&<(7@VJtyowbM27x`!@gI7JV+CxpC^!`(x?9{TeKEc6QYHLs#u@ zFCtye-nx0|L(kdYUdHb}d*_++$1}Hod$sfO*?S)^ef;I?Z?DNh=jM4_J`Ku#U&?nm z_fYckr;&}{-!OKcd#vvAdBXqu+v>~bp02 z-P5#y_fr5rCk1c@9X!E{X$v#9B@{tF9gc3wJ?YS>VOQOJXT?E zv0Bytxt{-7%>T2M{2$Bsf2raBHwyTFSG{9HxBvg9dQbb0s`r1qbYEFn`9How|HuA< zpwx%`r%L^tD|W?WCebmr1 z{ijbvjW~An+bVK7*dlz6Nz|X)>#pg3C|ENhjqCBitg6R(^Nf0$sD?`{5|N=tEA@8? zk3?S6w-HLno8x4Wn1eaU)%uw(my5YD$B1TtPVKkDA` zDcP#`!^;E5NSk-Q+PKxxCz5+)#W_fLG{JkH^rraV3i)|88<(m_D7azt0c%dLcwt0U zleli{{Ipv~Yhwr$L+tZtLJl5b?YSjjCP#Mt!VhOxVP zTleG;^}ChVTF6{`T+Z!UqXOXtQe9O$UUbrA!=+9Y2Jmpjb12su&B!u1q$NuC=|#c$ z_QefqKHCrXot9m@KX?Gb;v3-gd}|5sn{f_DQyKM}#M2f+kI^LkOQhdFmQ_hpRT=Z< zj*7qQLPF*|!ynnp)p~fec}0f0W%C@CjG@Wpso)P5+D*6j&Y2Nh*2y;`YbB$m{WUt~ zL-5-_YhL3aG!$C5XuI-517%5N_A1+sl?eBroQvbrz^cb%f0gMKSsamF`URH9!S5tn zfqQ;z<8&fc3hp2yee~lxbcZ4gb8PEc(p7D9sb%v1(8&u&+wRHO+)lJH|F(DdnT%Kq z25-^D5Uh>2o*oo1Tz-Qg&OC^;c5PE4pBLV|Cj@s9n-~LmVPFtvS}spNPhY9}v{T!Q zSaQPgjKc^oK1g6c#&QTJ&r`~ep6=Z;K3^^k$4+zYnGo3PF=zSm&Iyc9i~w{KFJh}> zEw@}ntT-MI=NsaOt-KZ0=o99FR5xvFJmu0peKC3a(O9<$t>>yLr_{UQ<~twctvn(3 zcVs;5b;0epyFtCL1~*+G{`IBkeELfN>1R}=4k31pe?`nf{-&++C zr$5}?wT19%E?f)}Jtb%~fVgfThT+q}WMl2;;V^hT9IiFS;YQBpuvCFG^#+;|I1Gmp zLs2vm#?2pzLPC15ZP5dqd~eS~GAdMA{vxFJ*r3FjC7K?+fq$#*kj$;6T+_)0!IZHf z`7cX(82(1&&M@q-l8n9t&au(DWXw|4?23}3`9sk|8l@UCrG-AEeDR{{3%XjwB1=&3 z3c#&ZO5V^R4P}|jts};ToyBo4l;j@eU)V5{P?&t~py<2SQI)ryyRqMt6?bWjVLx;* za_^v(L~Dku4BqCJWDo_EHOHmhy2|wV5v*iv&P>J-Bo8qlr+=4>4K3LEnwFu(?tNNN1OJ8$m>1&p3eGM}7fDC;hGapGqf}|ONCAWnGxlP{;2Vn>h##a*PZrE^` zW%Td5n?np!cXMY;Z#Jvyo23I9%hcWUahCel4o3D4AZJ_HI~ZV@(wm7r!NQ3E(zcdM z1WR`#p}kYlektgH3@tyBR#2veOPIcQtdZX~Aj7TqPFNq9fDX+9Vw^!}x<&Z!VjSMg z#DOiwv6MImjER%Ig&W4i)7rw*-r|pv95bDJ`>^ylOLuPve@`6H<6Qj+0bAUFBxfHU zV;}i5uaodmY4$Oxo{=0}~$(R2^t_C7ypE9QAL(lvt9U;O&ay9VBa4#HYTN4gJV zO~(tr7udpljUCWI9pgAXE)|SQo(G=Obx=^=zRSxvQsSs5ML7+77ujiP5bgO&BGy&s z>ab8E*G7J~?%i$C8477*_RaO2<|dj>dvSXBDLa9*$4VxS3nM1|`NEGpBIZTyN7}IE zO*JR*!yY#!OSa zyKFfXEk(UfSV0_8D%nA5XFLQ_TOYSb82hL+Ri$zIb_`W`yy}3ks!B#ph44;9aiR-S z%-(nkp*WpGw(5R__m%GsFD34^qsU!y@~Y6=VIGVsA_x-iXI>1JKESXP8Gcqs<82Z% zM8B=aQ=)MauC+Od8yF6`a?AKw>p&d2p+JJuQty0)pOzjK5q&s=ri6UbaQW_v); zWu~p+M|(Vq6?mtDc@7njZ>iUw>WbEEhx!-G^h(ShzECc;L`9J}bg~_kxuh&Lj~yAY ze~Gn!Ul69g}(j{KRMHIJWuU)43)tKBeFNcsX0& z*9uRUfBMSpn%;R*-E)lkaNRq@34N99sq2sF1<4xT-cu7g>e_nk(0zVKuL;xcCz>qngGK9!GkW&}Do3LaM6ZakThW}N0ojREi#Vh3+;Zo214o5LPRFk0 zcNkJ8-tXYCuu|wf5h~Unw$SPM+kW`E?_L3Sksdc~lD*(qo^~nbPSOtTK52@0wvf^skyoSLaTmZQ1g5W zqlS=sz)v-WqZRebPMG#pZ%YuMAS*s_RDQ3BjkBuZzGFY2aQhpt#pk*F8!JTHcF(C% zjeDQb9ux#5BXc2_XJE?*4I-L9q1f7FurxW=S^zVQ5g1_zLj*#FgT_3X_8_NXIbqF)89qsH*ns<@Vj8Z^S#!_^t>Mv`{&3@8eXq#a?j~ZVDL#DuNZvhXW|L4~2^_K9 zyiyfuO@t7c2#53C3ixmE%R8p7MlHG`?Sw*|GL$TLs65(pK1Zsv!1G1u>k8Vyy?E|y z@3|-M370i+3`g2wWt^CoKv&G}wy z)2AQyJQxi}7bbN*l!um&N7gk;J3pIKjy~5I=9eUTg`V48p;H{bp+U>_d9?SrdjeYL z#qw|Tstt5Y(_~@{_uQw$O(~e{*g&~4?wxPuEcl1B#+2Z5Dy8({mA9n0q@qK!!P*@_ zbBh-$ZNs8$Hc)*o+4DRY6D)KYo@9N0>~W&mT`%S8+4y4Hg33dWqU@0?A?@6 z_3UfKAI~i~{jR&6%r|}tbT>ccUph`4&wBIK?6+Hc&L4ZXJrmY0Y#JXcI`Q0Iwb361 zySk@eDz(kEIz+8GUIZ<;e_f7Fm#RhNC1j59ahyTMeF1l(Eg732b#8DjhcP>>-czGs zBq@7a@bLw`{kEd742yB0rb8QA@?|Mlejl+5e1ZcB3{8;^=W7GP*}?f`d*p<9@w9`= z+y<4(xT~Sd`nO>P= zTIdBb{X2Q>@4mQiVaVye0#`70d=#o9YlenN4ISbRg-Pj|UM|TpvRiJCDvm#MRqC@* z>yz5&t{jSrzw14ckOw3INkX)rdJo&Yg|sbUW+9;L11_sR24`gN23%9NM`~@zG)RF9 z3JNSxT3JVuT;no;feF0I%&ds?bl|BnO-NA90PiuAyq#E3m6S(M&7-9i7AKZeC6!gB zmsL^oNWdGUR^);5f?8hrKQAx1$ry6HEoW=VSX0}Whgpr)ArbouwZnLA5$$X8r>$Ri zU_R$yByc|3Ms&CMPvZ{)CCoKFxX{8OH@qO8c$8BppQc*0Yp9&2Bq0fs(Nu-!#!9CO zRA+OmXs+RaV4}igH=Jw&x?V%5498y|pVsPvhar)?zM%n~J_8;@r9oKMq6#wWcBQ{8 zDzL`?Xm~SyZnFp&CJb2Gpqxfq6O61anf0>^0eI42fk9=<^pZoj2Zja%^Vl;vBW4RO zF4P9pqQpr5_(%fqal_NHK`98FT7Oza1dYKqXcNg~V9MI9~~Bews|qOPkae6DlTD5=+WZV!$(jd>X;p(nvJ#Bm_!Btb<_ zc9$0pCaj>QxIHHcLTV)>lmx+)^mN5IxG9x>T&j99IIjIPH}1wYIKJ)DtuE+zHT47? z&fPr9rzEx3iR{J+pagLUp-%UJL7yp)%Y-EM0?RWOSm)0R42~=tHqd9%2mmB-01q0N z{dRx~03-mc>w0T~g^L?HfNA}&4^0Ix46LCEmSyy(kow#sc^$xuERp~=5=5Xs z?&Tjt5u1bnw+3u2`{IDe#NOkdHwXl()k~C3*}=Xg2HfmaY=Y#X<2!}?y8FFnxd+bz55S9btUln z=JLkkmI`^Ic}*+5tz3+VJ>F4)H1P8Aw&0>5b?wi2Z)l<@VSI_fn=qTz$~qWjf_}ug zxlmO|(Erw4z?j{GxiIysy`@MuVwkCfjxTP&P)|zSc21Kbu*Q1KXl@!ibU3L{jp(i) zg{+ay@tGU6beiEY*g{@|gm8A1s`HA1XG}{)jEMy$*KnM$+6|=?+j}^gl8CTDAVClb z(dbeV91^BEycjhrA2TI^RGUEtT#FdXDQiF0YUg95l&L(F1CgP1UXTxzl&8o$AC2-` zybuF%Ecz3Si#;r5CE^z#^Kq{Wg(iBu+*Xie%S6>Wgpy~S5&X^uIf|6!XIcEk>NqOS zRP7Px4%M78c>FwhV45b_3^UU6vBl={@CY`RS>2v~c&m5&qn4xTr?jH8*<2GVjNrj} zNB@4_f!VKQsfxa%&K0z!wlLFeU&NVhRr=Qp^?*%bDREFh4OdK1p#NMA8q)Cm|z= z6c(SlJu@>RDT|5pSj6QyrI!FD0LTEY8H|W58VLM=*x8jGolYi!r+;*DC4h6lD?hP- zzAKNMSwID^`~(K;*k(mgX$gSFVLj!GssF_c@bgIiuYSYxZS}lEE(L`}E_o$+^wQns z)KYq$AYQ8?zp60L$l0K7|AAbY#-`@tT&cqqN7`X3IBUc8$0-tK*4Fymluih?*?DC2 zAZ5+yh@-;3W~kL!k5kt6xWMct9tj&~i|PH)g$ES5#R;~9pB(= zFCs23`b$B6C6q5J_9#^0GfhDXw@$#S)eN zeUTHD?TcN_Mc+)n?z!Ozq{7Am!Aib!{s@&?T zk{S>6@2Vy<%XENS_irr5pQSU_;|f3ScVKS4mCHv$Tf9Shj$j2#hH zLBKellpVi=fXoeMg$d?11A&p025`XWR3;7xLPlb09N75G%y5wSK;QsG;13*-1|rB$ zbrIlzAet~)z!)+!A*Ppru;P|k8qRVPSs)-&SInfWf`CkEkxVDjN&yAP4m63`RFEG* ztYJ}rIiS=`EUqLmv*b_ykHm~P^fVU#$Ig|x|4X^@e>E`uum14AS2YdHtpH8vF2be> zZ3-muS!|jRy>5R1Z!lhU9luUf6#nWYyvh{a(ygJWZnv@JvEJk0w#X~!P32m5eD$OF z-9ybTAtsh!MH0p)HMr=dD34~-8aGEIMQijBZcXU)#L3{f?qKi23$sfDV)oT*OEndj zu;sX&ItkA;^=xV#TP%-84YlMAL4>6l7}2Y~2v@B)aM~{ZV#8@1_pVuvE|U^%(LAZD^66TAPr2XIlR6}&Xbeo@(yHu;~mcS z@>jtOiq!&XPoX6PH|yRMU&YwYmr1A)7O)B}l;CU-FD1z$NmSp|$F{RY&ENDG$vm2; z8Kt%cDovV}$w>!LJg(!{6XSogy^nLJ4c^4UrU_#zxslhKG49RdD9*C#vJ05h#I1$u zd_5hw_-!FkgnI4^8@BGVF}e1%mMajoU)5C)GtKegG|vG|D@T0q~XRDut_SlEU+f_G=N^u6FKa98MEihKE`YVEZvUZ9j`?RJ4tYWh3wEYaE7K zZAEH2@I%=4F76|!_Li}{XYDOMiQF;^jSaaRr?RS!?7tCuMCTNr-LJeSxhgSSonhU4 z!wM}qSEd8DtmX93+$gn-Ik0Q5_4XrYbUBZu!=p~$K_j=3W3b0QT!`Ny#K9O+sTC&0 z5ArwIF-UQWW*t5zT92ibM!A=AM4+W8`mlV^-JhFoY{hs=fP&z8ti45`&OSV z2oKN91XkSr__;sIbq^{?>;gPfM)S_b4Ndr+AGe_ioX=^xG__{2^(evKbxPlG2J^p+ zsKs08<;U-lb7kI$wB`yfk`{8;6>2PvIp3|jv%1_?in!BDm_7`ti=CdRmt zVttZ+(EHKbf`Ks@5|a{@5caqBAUk^lm_IQ&Ht~l;n2{OHPT+rW2y=cQ{Y8H;30E_@ zTN>RrmFCa%2}_CT)NM?#KZlvmvzhrkgF?#8%VM+rEVqyzO{T?A3&U7$VN6~ra0{7_ z2r3P{BS-~B>A95jAB6u7dPO?REnLm;*)f#d9n^wk3jL>BNN2l+l>gR)`0q2}f56r6 zC3a4U;Dwsq#>L)angLfYghZ~_^>TuwhL4Ic-l31C9GB|ZIa=|&rjc;4to!=%z735R z?rADNe|)#4h`=!D#x&(uCcNG+^WuwV+wD_AIsxf7HK@HQVbSMec(R-BHA$R>$JxS< z-lFV!pcRxsICfUAgfz)W6$0*@*V*p!>e-hj!_vmwV>DQ@X*)(cCp8b&MAM zT4`=2GbK$AFOqVk=N-I0<$B`56JD9m1RaN<>8Dq@>%+4)K7_wduExCe^xQ&@>|1{; z^||rMpoD7+dproQi3ZaP^@lEavd-ur1W?nI+`EqWe57fV#;yRFDht zW2P0bj*Amg)V-cgZQU3yXVmKFTeIh>|K};nm_~(>n3q}Y8ZnIc2yq9$Uy7huRWn~8*=c9n z%t}?|24e~R;lMoJozrcNWzkw~`+wnB#44+dIiW>RVvV#%1F4z;9#e-VDTwD34eVN@ zS&ugO8<{WX}DdRQ`Ba?}J}z83C_}Qk|GbiH1l`x$;mX*V9*NF9%;5eOuc2LXEWK ziG0JzKUXKFHL~t?ahIeQ-ZFs4VY9o!_xry zIVKY8xFeY~qp?y|9LLG)WQ4C2sW_n3dvC3H{Q?4GI3t`}L)boXO%|h=0?kL$;NvUg zstfQnw353#MnN#!B3*Rrj8Nd1X?1zDa))`g2etS2%pS{XsoqtvN^0lk*;+yY( zwJQEff(G@T2&M=;z)>t!Q2ds*J9ANa8)pqsI{eep`~hR4+&c>s_($MFt@i5|2qse_8YrK7$lijX(t5ENzlv4blT zB9IcQfrtAFR+xc+1n;yeN_@idiqzLB%+|;A%#nrHfW-Srk;gHoQS7iSO4Z;>0heZI zmu2{{o}eX%rAD@FitVV`tv4k*ClAVh92?#A<;`v~f0H7Q-55^hEhFEtNl9{i%-Za2 zDTCgmqHZ^CCXoPNf0n4Kph=5@TqM#I$9mnWMXSeD#Er0H8p^%nYm)0dpq#NUdqV{& zW6uJ#eC<8s?dlUxCgxFW2@_H{v{&^!ca|OpHkeRoN6OKe(7fn-%nKD^_HNH{2N++C z!6fZd5kcLKZb_m|Sr}w%G8VS17k6t+uMs992c$0^7|_b_C@ab0f}R$f}l4cl61I zy%x>d413#a2)K>%mr6tczi-%Mdqzj=BXw5}j~Y&cR=uY8DlxP%uLj#$3O%M%TXER> z_UDqYqn#Z$;TY#jGRGT_=WB;cXjVa#c=#h%k~=qg#!6e_x8%9dK&2V2WnUh-O;_dKic=Q_+!#x zj{d<(>ISZ`PIN_j-jiDn!Pj+*P3Y-)kCr7)|CW{0{9vBfeeg>0FNmBIuqxfHjWD;C zc4fKAR$kuz5cBOujdpXt=6?HRf_k0plIjFtey=+ZUk~)EeQGXVZry4jl%5khX)Nm= zkYAsCrzFNTS;+mH1722UINK?E9&c`YF%6r#DaGkkmR>7X&}_qsD&N(ccJmse1;wsP zL7d7q-H6%sw~6MMcPHxcIBH+@&guN8`CMNJ`z-&StCw{v-+xcVq3{UG{nBuw)IlL_ zJSAsaj;@x0;;~$73x=kn^6(wR6Zzdr`jmyYEr`?Mb~}HQ2u;bG{dV>8k=ND6IgATy zwSpoHon~V5F*}s6XYn1sb-Iu@pDg8=5G(&NZGYr_mD_^ChpeaX3X88*suC*jLoU@1 zj`ymW^};l;u~gX(&7uu8zOTia$|s~vmK%gs$6`VaYlCESdYtVwuu_YJ{A7G1{6UIU zLXMawS*>b~RIVjH%PAXqs6K23*1JRZ8&cUPpm7A|l*k|SCTBgbNv|Ct%Fx+$mp1>i zF5YbkPaobdIN7a9eZD&l%8_5uV@O&E$em7ZoBuXB`hY9D*C|soY2RDY^8u~4Yllrf z1YLTD$+>bPX!h!vHbUS<$849I&+zZX7kQ-DKX$oxM7M#8m{puAU)(cDyn&9Q8O|RT zDR5L_Na{6<^E2Rn$%0;;WyS$!4@-AP#JoDDCH^jCO-#R~q{`4cJM;$JsBCb&q>-w$ zp4}O(@|KF7+WOxITeCS3Z>g&4*a9mN?!G5B>stEa3A~X}9M3PO?Y#54)dqJNX-4=> zV_e*_lOn^@AoZjbzD@$#nbf`#BJ5CWAu#Mhe*Wv0uaoy~DShl9e08svI+8iswsJgM z;Nr6EmSZ;`X?A~n=AC^ZQ|ZL6d36#5={}O&MaCK~8|sp?GnZ{No~ol3QZ$MmqUxUb z_7KI7R+=2>3d$c1dzql}{nUEfgMJ6!%eQ!L>3Oot?NPQ>uy)i5iW4^VYc}k7qPkvW z2uBDtK~i@p6lGzm)%@1{Fq|rAiZXiVW?)N=%BH-vLhT!}5Nhy$CxW|3i-6{Jsh)xO zXR_aI^zS^>IjE{i4<^^dO+_REh zG*Gas&b#n&GepkdmdIOgmFvFZV?Hb?eDi{s{*bH8RegC518qagbPm%;Z^XiENxOaG zVk5VtMdnpW1<4r(@eLT2%u-uFp=uHNZ>bo1F&u{SZObpY+8zOdYS9U!|ZH znuCzSTfQWrLU*8!7^0>)3R4%1IIwZ|h;adraD^lu8 zu}+;>P8j~Xva3R{fc|5|^~iik59{QL^|^^vAV%CKx}`rUtU6s0ccbvW@;Wmd>cnHg z`d};Gx^^N^trDDin#2)F|rg5>B&nW&V6v@PfV_<7` zrS&!v%3h2U&#C0KvK%a2x^*^6_*TKz%^e&Ej8Ssa944s!bqQNhu9h}p!V$|#zQ+1R zC?rx6{i1AtD9K6$7TI8Jn|`no>Q7r^6`7k{pF>P~J-sQ$Mx^LQBudLxQjfoX94XFd zP?Tv@GHX-;P)=H-#@aOlkJ@kJZr1PN{3K)Vo>rYmRNrE5tA0i} zO`W{Xd7(i2(nS@mvVvcE_BmWAA<6tb}Ct_2Qf#X{H>l=)&u z^qO(4j@ex91YgTiUtvX>maXnabu-=BK=&~}!v()9GSLe0l844y2FC-hJ*ocHl$KGQ zJ8u?v=u_ZhgN}v~^s^;=7w_@Ln&NlJ+yG_z@U1N5#?FTiiykIzQZ_4kRvDxuRkV9H z_NJD-fK2Yk71J&_cFUy?l-yprN;GV`pI?>>S`3x{7Ksv&fPBP`i|r^q>_w8JnW{ZU ziJd;NGo-8NV5tRf#C~sc2+xaH|o#VI9=hF`&{jwj5_yOFqE6RHNq|4n{?%~;MENghsUb}^6Mm*_g)pP zRh-x=ps4j3y|oy7K*DUlSjhhL4@U{n^$B~uXcA?Izq(7_I@2M0wrk_rZvV4A>1Q>N zLTApNJ;x{1d(pN}_T2fiwgb1%4jr+*aPjP@gU!Y(qML=q@C~T(vu7_BZN4%nwzgdS zPzvhmk+av2n22?_OQw`c3TgG-{o1$wkrX3A;FY4Z&M@lkuV)v&u0<=!r?|=s2%mp< zah=>lg=^lZFK5qR?o!+KR!va2A3nLRrb}~Q7Yb3=AC=hW8f-8qFjYhoXnbcn214LGNMPU_w}u@mka@mB{2zYfM{`yD|0MkU( zHZfuidtixD9_;B3FiZr{mH?3fCN}`)8=&4;Z4)P8qL=}g`}g4r?5?apZya-cLJU)Y zA$l_>CB%kW0s;+^g_=p z26M1M_BJ1CSx8<5v5@KR$5ZJk^pbRXA(&f`Qcwow79^Ge-=cz=m%z04ODWXy;{Pfo z^S^2m{O5o8pP+#v01fPBP-M+FX>d|_EL7p8G%b8Resi53-e6x2w+UVzVSyLn$78u# zscksnUdiKYdQKVR6^`LI;?>UQ2sJcd_l#3zOgHG)i%;hn;x*+|6lbXiCR^&Jk(=;l zcy+-Av1#rB<+XSTNC%Ie*2ZJtx`WWP)WctI!bzggl4xRBJ_<3uRDcqj=h8q+*K_sj zkqH#;C;bIKha-HmY68O%Eb9mAG-y)l1UO*Dc);r6XV1i_2_AFI{{~fABUnf zbjdrO-#97zR@e2;@pp@NFWS66Hkh>n7hIbk`EmfwD`}E3Yx)dG9a=$?vvU!VCGyx? z@9QRy>)dP&PFa*;w_&h)A|;{Q|Cf>b2N^lmqALA)Q9;ZAlVU*Y3X|V5!~s`#)zYdc48NhgT0z`$k1L)OcHF0DCM>WJ9M-24=5dt)2fUzklsj-0Q z0yZd!1V8}wCo_PL83JHA5C+J!cv@jP4WJTvsRc#JC6z$gWTJ@wbv%MQmxXZkmyD_W z9V2&KkAOYurD*RRpwV}4$;F3{&>gfF_Go5e@+c&{PFK_^lqY4KrUa*ND1=%YzfK;$ z%gs_is%)Ly9v4USy2Ky{J|&Sb<%0+8xzx66sTar|_2yM6*Ig4s!f^{B1U+~AGzX6c zjE}71hpTkl@8=bSV=#(mJ)4VTP1<2WEU{?6G{C|EIt5U0%t1F86JTEh*V;NV#Wf)# z$`2RE47F}aaXxYBDREg@z+p~L4PGBfW4gz{I!-SEi|S7+i=bD5!7rH=fH7cMz9kvd zavA{S{u>MV*GRXzwEvFjT!&2zK`Be+dwZgqweZyRF79}@X0l$XnZP1KSwj$~peYmL z2XUgeLy4L~1ztGWov;iwc)1&nM_E%~jiy9k5MEJJIxeTq1&7q^Qb{}Jj$>$w`5wZ{ zXY!pZ3`iR8^SLlK>Jh^xv@-$q<2K4crv~C@|+3vClW&5>Q28Y7z5@`>!@iu@M9oCuhXoE&$)M$pdf!JaEQr z>;T*ZHgmuva(~hWtKChhU`xY1vC#pROwJ&TIc*3qN33M(4tDrw3sY1=#?RdbJOQ{r zpj+v$FaewF{S!vOIt~Cz%F1TW5b~##vTs`W4`Kk^w;j1mIw>ue!n$&FQb{FyVi4u$ z!2vulI6MD29vCD$9q0!kS5$r9y}$ z)ey|qJMsE%in*8S6r>~C6AW5$vSynFBm1x9ia^?=dnz3DPJ(dg+QM3Wy@x6zS#({_ zjBMN6auWHDmxMWk9gHFIvnZv3*D}h{2@`85@nwR0WqFYaO^;AYYa}5FM#EJq>g0jx zkqE7}w_;cFjCpJL6^&F|pl$IJno{`DyxVP~)mmk^(c%D0*~Ix~d=4R}T&rVRdZwgf z7`y%GnjPKwb9Iip>&%orTzN4q)bR-Xw~Nh<7fEMc2oUfiihMy{vqySmx-p|U$EMMU zd00sAC}CZr5@Bk5gXYMLoqNlXp*)CB(%^ZigZILDrOJiHH>35u!6KLR6KyZPrOlL(^3TFMJDcxfxWR-V|}Mf%NJ0haT!z zzVvmR64EkQIT>;IuB3nf{$0)#lk#mltIBG2)LOC8CsxvP{&Ug;bS0J2YDQh&^7%>3Yg4Y2?1-{H<;CB14u+aG3w;ay|Xv8GamMs|}G zzihc8u|bY(FA3y6X@$Hz)N?Fp9W942?wZ0OA+NASUVe?Jbrv$XNFqNBk4O`N!EwoW zt~BAy-MAXnTKt~Ra4ekGAcDYLo?zxe&SzovAv~cd-BbnPhfEW-Y1j z|6S65dP#|^OG*Y5A~-hibve6H7uWFa%ds;nj2*HujN8fAn&0$^yb#rEBO7pFZO-;TY!0YI!2CabaO4d=U}i)>9DuBcc8*{^05K;1?l@*U zZe%La&n9{c7>UPZV*%C8G|yABV$w27=gSh!Q3aKKlp%f)ll^>oeTG#Fxll6)W;3@L7?TKsh7BM>nfNjI3e6&h`vBws@WTKAw2q?& zrjp}WBmQ<#W8>%*y9)9^!A50}sbz)Kzcey%#W2HT$G*rjY&3MRsczqsZ)>*M283dTwHIR68Qut| z>3^uac~EDgP1WcF(y74i*Vo@{-;tF@&cyDbgj#1Sk(=$b8YDy%XZ%e88tkqJbbzPbnzOCP)3tN8z+ajoHD@nx2?A`Khv_|KhWH=2R{WKU6GZ|T1@okee9y%>Hpo&C#J z19%wh_Fvo3V!`IK+R#?_zpxnWKMN0LHls0*0O&^pr+|?|ttk4ZPQhO<`ake3Xqh!P6eZ?5Yn?SVWNSd@pALq^|J7^$5xs_$+VB2(X+d@esR7*a9}P%2 zCfNy^?3mq0v43qkVs;t*xy1Jf-33nq_Ed0CAY(7Ime_FOHbeJume(92eBDWR8^ij3dtL+ zgX8$t>Wc+Apbd2Sg@gn$B#Iz~?KK9Kq175PvJJ9w+*QTOgeu`UX&gdIe3u&pQ;XA7 zPtoaefp`>aG$qfu<9P)IIecS$ssb)eO?niu2QV;CDMd)gC3V0ra<`gh6$MMh8tN#U-4PZ5@ zfPfF4(5^0)Ea}LS-L3-OmaAwiYg!JwX@yys6GPcEtl4vN+;=bsSTjp?=8zo1zjUv} z{$OF5ldR)>5)*!JU}3Yc?2{Rm${LcBkP(}n9Fvv-6viEiA>d6*0#mIs!!t72JuGRU zreKYqC>5Dc2U>YJz3O+= zHMej_K@n(U$tcKW4#p|2NMk*oe{im`tf@F)l65BNWT6&QD9o?2G!J%~t>J zrvcFRC?xgo23U(f9RGcQ^^Cyk0P8YhS=GN8VBOsc23VJC{TyJu&;DfF_0<8^M{XVu z9xBYVZEv4DF+9>HP}FmD8Zwe=-&fnIRJEQeFSRv|i%&#~O5v6DN>i3l zC@fYuelpz)a|ul4lKy5CJ1dq`X;yU4Q?Gj=q^UgghIzvKfQg8t?_;t54}0$&)b!py z+J+Dy^n~6?=vC>xB=n~A7U{kB-lTUh6zRQ#h;$Siy$J|{ihypaD4+r&0#a^3x7+vq zm3!~GXU>_qbMluuk&;O=`8?nCtThFKOM%%J={iSZk_Gj^o9{o--+%F@k)7oxv9$Xn zQ#*5V4|^ki-^Z85S4!`jyZdes!|TqYlr?iofgo%&T$_+AHwrS(fYNIws~09AuHUjadQ-+lSg&rr?KfK=2+G zQxRD~8hucX1;n*@Nb+r5JOEaa&-%@#q61o_%#@9$qxhuWAi}vxQmfEYY#=JCuhDxx zH!n#+rxe>-%z=q^LhOAmF>MHYMW97JVVYrjei76dH>;{xH(9JY#mFLm-Qxzy?7BcA z&l;N|qA^p7H#m z7LNBl*ia}V64Ji%26?Cl?E&C+ocJh(BMV2z7FEO-u97L{E-Fw=!S<&_*aW8B9;=xt zIF9qgw!hF~t=eON{21ItX76ZJ4!;t#+ZCW;uG)PmsE@ZdS|irgboB$&X-S~9Y#M>Y z@s!-81Ssj$Fo68e@k+<8eRs85ioVCEYe|~mg^RsVvUqpZiI=UeQni#1nQtIG`*ywG zjwupS_J}MwDxVkJwTR>0nL;EwE70HS+U1V^=>0scwISe3ytv|D({*U}4C-t}{#ro= z05Z#o*!=2;>c!x{GNiSGDr2z`r%K^*D4oeh?=NVQmPag44x6`M2Kh`nKG6yMhz(Py zsi>C^!-(&6zUIB82c0~}ow!=CJEH$iAn!H$%bX@W6Or}>vJx!{@uUfdsZ|zvwaK0k zqi(O3?vwb)l8}&u_AeD89|g*N*uBNFT{z!8CEg)G%t~WPg8&(rpmF5{q7PyUVYt2h zNQxCKV)dmf=Tt!u`T*R7SHcjS1nXX)m?JA;Z>oUB3pAQiNh>L`IK`kwwv^T`2KS>C zjeOAkjWjPBHta}h&AeWP;zr$vH~yk0_QL^he~R8*(DIX5t&L+?rj+AJq^KW(@REU2 zP;2JCKGkTIw3Q$%t{7@u1)v@RE^l+3UlFf{e&R-e%`;Or)-I~je_QA#;m2p~xO%bF zXI$9jZk2pjg$i#G50GCq>*;pG2bkg7VujGF)LplNDH-l%T8*tC{HAE7iP(T{up4C3 ztoePiWLlY3RqTREo!7`()FOJp?6CW>f?++nK~03v4_*oQqS^N9tRB#4w{l% zxLnCN7U*ct3O0a%Q`9GxXwwO%SR7HSMjRU*$e_>xj1p2XO#;lFpc`neWlwaLRxs(N zp6lf4czoBRJagggaRB$@Q;afuuQ>9LnH@9M&pG`6-Vw#+nSDbEE!Zkv_)l_X<5mRC94?O-jWG zA1+4cng5e6WTsqxF#hvGW(dqMRgcXtYs{)m)1mUmgaWnQjxJ4Nsz$+e6frnb@9>fF zV}@D*Y!VJ%D?lK#B5ABC4huKAqHU-P2+mEBk)n5-n=C)es)$O_smy_an-c=S&8g7? zfMd9rVhXeYM4jB!9QW=6Km_U!psrzaHQJ?_&xC<}3Xl zlfr-Xsq25?zyBYT0^ssYZS?D@eKAf3@Lp_GUQEm{*pmN$m=qW>&nZ4@%r9y3Uz-#z z<4eLA7*Fb_wdZn9@+~H=^*T9N{;m@NZ^>zqJUML{jk2v!#pKFWuEoC&JH@WT21fKdizZDI|

a2Yd;dgu)|CuTn}UI}v18RnGwofl<%IAVg8*JI&^WoSOsqf$s@`Yd}DZScoss z3mrJxgBP4uB#IAHNV*a|mC6OTfnl>C5MJQ6&LJgS4-k&Vi>QQRUf|V{YtcP15E*4q z1hjqlvnB$cDu&@uZ=+8<8m%?kd@$6T8|A=Yz?c}1=y*bT%#f(i+za3y8Q^9$mgwIM zZ>BrXh8a&WzzD$6RG4i>7`?2kUf1<01&hb;s6)yK=m8@LVR|};4vyP6C71#?sl~WPQK-fOOu-~{)P#>5ICt&=JbU*x~g*wRP*a~%u|Gkv{} z^%J@|C{mPg{H>k*Ld*XWHp$w9r9m>gunILKNsvT zvUZnl?f+~}_%C|xpNYHQ9vjTGP#B}v{`;-^XY1~lUi**M-G4GI{5yL0$5Oo_=Dplh z|5xHi)cVrcF^=ZE%YzvhR(cIp3a;QgK-UI2)g5}x-z@A^OIhZqgc zzj(HNLNOymm&*~NpRdiIs_oFQpNsT=s~49rA~*?DvdLeUNo*21^Am!aJ}k#=~O17_^PyR*KM%0Oajy+uj#xNqm1?cgvyDj+T09R5xDoxHEftCme-iY zy4RMJKK&Vb!17_Da`N$yasIa`@dN>mAQrN+7}tB&$34-+IZ@@RxpIt0W$*i-mR%k^ zH*DPFpk8Z;KBCrM*z3B<67cps6T!14LtXE?bTNfJ*1`*#Q)&k1aiKr$y-G&VQbPMJi3 zYdHizE?6tJ5Pyv=TaUo5#1mUoS6%3}mT*#>8G*W8go=WaeT0!%-dZNgVs1T}>eMHV zdBj|iGaug{y=eIoL>YDUmLOFD99wh@Gi&^i>1+)JeWeZoVtJm42A+K5HftvuxP$PrM}bue?2ow>2jv2`3vWvLu2ol(3=G)5^m5*+3NfT(tGPAW z;aoe)NLW+%R*b@>9e7Q%z60oAcpzPaueJol=azkNM|7hOxmpW!U(zEV>s z8hO7=MW_g@q~ICJwxhr}K84rA{TkuR<^{sm*=EOMo2GYzB_fr4zMP>yiViopH7Z{9 z3MFREGg|g8=%AD)rlq%<-%0aV#vZ~S^?#((qCoz($OLB+j!oD&I~dmw(bQ@g^nAA$ zNiu3Zqyxg^e6;hN)RKI6fRZq_WeDhP*6i*d#phE%5YDhS;&D(T`ucUyd9ipA&>XGE z{d&2IQu;(R5W$ z5hvt{M{~Gw`)bc?S_gE^9V;PyCiA?5-bSJ$!o=v)` zk`j?HtB1I?bnH_2d1Iv5M#a~c@CEzX+i49|~;G7eaH4aNChBy~Q z*7pUrvt4OHswTz>*iF-O1SH0Cuz}4>yzetC0_;bQt-ypngJdN--pMFyAEjY5ix?r` zikSgXf*M+)50Vu3#)kSSn3I8SOfho0(g0Sz*IM}}_D%I7i5BxaTOhEzbJWrj84L7jIjsLkXQsG_j}6#M&O{d$mD=zTye2%upUT+ zkqVsk?lZ)>!;~v*pGDY=i;tW~#`Cy}<|2fK@1khblu*fp!wsij(YuLx^}Nn=CcdXT zQ@CQFn}8S;eY7*-3bBEEwG5Hd?MX!^j*(e4zU3M0DxtM`UaqfPqYxH-o$WYHh7yO) z?cKmo>gNt|b1p+AL8;t{scK^a=V*ZnC3JK8ZMZ$-i0O<=2CYx>-9@uIK;ls10T#Ow z{Oo1IV3hHo&?{s4;B5sKUi9b-FP8Ty@qk1;MXhsFKE22FgB;j9@xtIL5XNd1qr_fp z_qe@kehlF~k76h+Z>@VC{z)N>r6~&BXiI0(B!1Ir`W5~f(Hj!A@Q>$iuuLW?vwi& z$X6riwna2@fp&5T{Z;fss)~rPB00$0J2RAzxTWZb&bjGX0iK@N{4(uusL^ctk494j zwlJ&Q12+Ilm)bQ<9e$l=S=*vL<*A7+6xX_=6U+iK)sCjE;+YgoLJ_}=zCQ=4H`d0} zvvm~#&gH%JP!>@n*0NY7BPs9fXyHfWkGRqKnc(UGAknC;^;cYegO;gC+-NPtToA$M~vee+*Gi5H8Sy-OWH4Z@iV84{jhcQpeIF1V0Hh@TEFD*RU zx0rqnN7CvDhfExDyKNChb^kA14V6W-LaxBwyTqvQK*-wwYWR zg$L1rlo1wxIPFEw-0<1U)@Iz^PWm5<+vQ4&iDBY)wyc=AUHAuC?T~3q+%A*z@rEuY zZpUfytvC=9w<8Uj^DV)|?M~miKMj71iQ6qKpKe5HpR9;09}a0h*|Uv4S(iRPVs)0= zuhl+HReO3o_xwz;>E7w*(5JA)^Cz;09n5FDg*T7a<)0qkE^!)V4`QGXGo4~w~N8*vV5+OK2kpxb`SXh@QieFl<1HdE}J|>raIeP*K z|IFw~{3~#9vG2t5ht>--sKEeuV#1hskC@OuTCdAtH}Ah4F!V1IKDw6(f+n@-&x(&7 zmXtFOuR5I9So(p~>JArjF9UzfN+v5({bJ5@0VP}( zeH8zt=<|0>TSxY~uB?WMtPzS$%O0-p&SU7tgZhI}z@&YQ{eIaqwQa?Xt$qi7Ff$@i zQ*TZijC(s!2*WGhN~MU4uo>^GjR_#@D0HT z!0b>;w&t2H=E|-pOzL!6Du}7LmU&22)PSOiUJ9tOhhDN)G$M{4%6}q=ZFz90c zv+LepPb0AjnJ`W4<%?Xl#rXY})nPQNW{K8=*7aw3!mjVeAGB>ezsO}zhypV3$*)y% zOwer+`qe_7q+grLe;Q%MHb3;X`};Gt_h$gW^@Va)-#0#-Z13+;E4-h?*Z8_|D{bK8 z%kY3Qs>Lq5g*t%1x$!rMqReJ7g@$vwSNMLEh(nsx;Q;fU*xilqer&fwxV~h_u9DIM z=5k6D#dJ2FixRy2Zh<6`^TQ5R?LeeQpPk@Y*&3PolnCUeuHF)GlCZlWwYT#X2Z@F7 zA(8GuD8d2!PiR=%J z>dXAGtrM)}ZD8D7{;?zjDRf^u$9X9L2xiQ4cLQ(jviK~L6iYVo#uWAaWv8F zr#=Mb=^%dO-J>0NU-c6(NbzPR7dnQ0&ky6k+BhOF@uw&mQ<O~+g z1HPPuHQWBgq~vK!Wf~TtxtF!n%RJlbqNmPe-Y*#2x_%%?U#C4-^Ci8v5xVM78#osi zKM~Cq<;3{qV+;-~JsI#p9i}L_*tvojP8rkoU@DUpY+NhU))`nJA7FSQ!lVQF0iyLS z^bbGwCEb3eO06iyK1M#}@t#x$Ie?hu9S5&Okz(_WTN0ZVb>afWB4l8}r#+1R6){NS zl@a>wAUyy5T@rUMB7oqBTXN%Y(lE7AAdI41Ud^d5zvCH0_`<+OVlDS(V@%xaG9%!8 zPPsTxbO5*P0D)sMm%uc02YNX4QC*n;a8n_a zhl={iNZO(jUm6fADzR>c^g6&(MaeZvoMb)u$bF32J7|RdFN!X%fFYoKPt?gk_K30u zD1%E4q2!|z3o{{Np@RVlLLwnE1{3HqqG~Qx^)bDIz3e)zY98a!F{AFi+s&!fe2(hR zQ1g2^_s6TR1dcwlINr$^B#?#-H^L&Yk}Oeg+4>3f|U;`mDH1Uo9ad>37aET{(`~Z=kK%j+JdQX zgyaC~$~^ppDik8w*jV^K`d(zUGY42X@T;)T+i^f>Ksq0Og36WXj8uypba4|#hsh4U z-5ATxPYJ@GwZfAQ@Kz|HT6bXAPb{a1tt-{l(52xqT0V}#C#vSWc{3!@II6(-J8hF5 za2Z%twE3zG0>g9ZV^U1N-DofR%w4fn5xh@vB?@uJ7c|;iUALO739U1JFn`-B-vRwx zL(5iikLrH*D`xj|Edc%o)Wr6to`edLtycaa-f*PmgZVN%0I)T^7ZfcJWtRz_N^8Of z3(Xx7d&(ZsT!~BfzOR{nhnaTaleWN8ny(HgGst}8+7HLKuS@RP0KAZFEK|ZONyA>` zi!83BdS=gqJ*2)_8A0O#s9hiqXk*zW)Gc|qi}*{J!oZD3i9;a2xzBwERi7iSen%Z7 zk9k2vo3CTgjD*In-mK8(y3bVY!1*rtOY^_{b;F+c4Jc4aT z5zfW!+cQy>geu3iQhg=4PY~Q2zi@+(R9m%6_I(mgcX^r)))Edr2YBPe7X5vl7m%Xm zld>QV0Z|Q{i>=aE9MdT%73_Uia61qnuhS=pGJ}!Bp9x(LDJ1!7lM2(FVIeRaQJ_A~ zbrK+225WLv&(@4$FXw$?3*3q!z#;$PCDRd|opsEHNWP5|W0)1j0SI`D%fNQicqRb@z)aV|j4}9!=i}lRq&P;ZQ(pg8t{^vd^g>$gsBhWVOqz z3oh4s2m7LVBKsLOz$$Qul6M(v5jM})>g^S(7|0m7Ib0d z_`tpuAdN2ooK4PRzf)nSP<)mYC!ll?9q>UBPNxfaIOYssd(M1^CNXQ4ZYpY4?T!R+ zOP7$WLn+))UA3T;-6EUBm?rq$td%Ucl*TNalKYz$qbyR4w3<9!wBF&{quf~n4#A93 zEhjzw)s2revg_Yrj|ZuJXOZQq)?9jKd*tzej=I-U$QNfiTjx@Xk*|@Iv7n)v>qX($ z7O-yh%UQ+as$?X=|;!7g{XjTFBTUiwN5+sU-|H z)5BzI%Rje5Iv{Tnx92s{A0MuhWxW{t_6DIP8UlR-BH{#O^5{yqUpQmJGW_86yA^>v`R2tYzk3)9*eVBj=UD2pJF1eCJd2Yw@wlh zEj54`XNfA+IpM5}0svx3oRaK4N(}<=Ln|P)kGR*2Sb|B?hPZvA3Evnx!K#xpD=&fU z6<2_MlKPN1O|)MWYx1Xo2m(EuO?YB73!ZS9JV%)%wxEOClEl@3c-->Dc{SuPmE9XW z-dF^nRaiEAE-io6256nujVo25$XMl@`YabyOL1wkwZrc?&RX9`TnxZY9AS3=)nQ8LmuXER5#mLUjKxTBgdv?Xo zoB#(iq=%K9#vsR!F>!7xH*`3y-Haq&dpV??1Hd2iL`0^TaqS#-XDr-uGI{IePi!;J z$q`3iVIVsMX-gn~2ZDGXu~P%-ga&D1TUaM3&Sp3lb|Te;T!fXJ^PEyLI21(&1ofyR zPIZkVqJ0T6No6=7+#-r;2MRX%IbuqTW*N?L15h99r% z8z`@%-3fJLP4l^Yl#ByJAicOMHnTQfN;fjA?Mm?h7CXwPWy~}^H;)kby9nQ;K^2by z*ZshJzwG?SUzvj2RsCM7!oh0MY=!T0y|V4pQ}^Autm%{x9_5ChwIM9Q`*I5$>JY)A zr4dMeyLzz_s2J?G_@?;XQSlOO$;!E8$(m`&`{0rf`6ZhVO19sWd_F4Kp)K8$EZsLP zJqRv6%r8BDPG`9p{b)p~=d3hDq)^+I_|f)2s%!aMrhpvm4sfZ)F*7_b8Fa z)qlWLpY>_W-HVmZUPRG2DzOtz& z(HVDx&_{$tEt-Q1Lhckpl^E075fiY^+t6_bPcmk|A*ML4sq6NQehtR&2)sdDUcD9T zD^8}*A3$XN3O>)9E>@Tp#j)k1qj}XB1BUp&&6}q5lTO!wPT}!@J5BA;QAY(DGjKB| ze|j$o$Rdtq4ku|mUcAlup~Ktic-sDW5Wc|Hm>I>M*))#%2aYVrOG}y1LLjv5opKv3 zYrA5K$5wA^P@N3bn>HM*ju-3@u~3NqLOd85FP~*@!V7z3OF!M)j^!L=G-pR~W43XG4Xc7NGGHZ|Hh`mY8H3Pt51k_GHIIGszIZgpBTXR-C zkr;ZiDaz_T^C%DnkvA&-#DzE!NMBEUJo~JPrh>S2i&QMfR!RkHpZCdLrp#-r9t9P< z!=MZbAN%LavUpf%Vb=~~8MMY0M33W<@T(pGtdDG2Bn}&oj#WT1u9x6QHvggG*A4W; zEo<8V!k1ozYz>Vj@9hFbdd&K}*IgmDVzTPA>C-KaXH$+c*iJ&hSt6NPKx8)1Px<&q zeX9KYkpJK@@%_6}k#4dR6f%Y4jg zQxo~i5Il8m2uhzFil`Y}`I@Q4clB{MsbzLBc7_udd0q^y(t~7|(-s$COHO$ReNyXf zNxu<_z1t4sU1tCnYy5~1XO{@zSc6!z-i&x&k<8W-l2k93cUB=f1X8t_leA*(>FlJ~ zXUjwtK%+oko8wY3K9;4$GgbqGs<_%z7y1npswq@P)4F5p7Wj3rw+GXAj=BlA=Jy{! z@H81mIIO*@CciAZ5dht>?~sQ3@`74&PIm~3)gfIfj1OKx*0fZQr^g#c3mze#W0(7P z_A71LJeOme1oTW|F>1~o^iEc*kC{T=8@2NR&6#B(v$W86@74G?J=nvcaDFJ(4z^Tt zG5>j8G()4n^r#P;torzyXktRad;lSz5BIf$7hh-8I@>)){e<&z0eA};Pxn2>s=}*J z8iz$Zzje+|TNQNcV38cZv|@Z^Bm2tE{FTF7h!%jf^8wWP@hh{LvX`@pyZ50!6C6xD zJWZw$u>@bK+SlT_zN(F6OaPK0HELLaP82^xbBSaRM%s;*Ae~@D@j%kNNWK7A9nlc{ zm4cMFbGKxhwwrbETHcI#&#@HD5s(vWw39Re-Vj*NvxY!W;%^AOb@18eSIFkcv9P<{ zA;q8Onm$!nw^f{;a2SX~T=Adt!|en4pq=~`_fHo}uR(5yzv)50QML1X^3cEF)k4{M z+QJg<s!zCRck%jkh>e@0d5-sWS>bX-UUSCEzx^t@)<8N4ldoR z4JYV(=Q|Uw?6(ArTcYx=Qtz$;E@Pc86XF1HPBTPOYGKzp-;@FX%wF8jhdXK*R)sBA z#Vzu@3nBOPjIT6R&GuHE(6}3-!Nk*R0!+27l1rdnJ;A}~EgvTF9}p#q_lgE{ zdaH4CgS0dtZdafN^UL2?mWX=S58NDup2Vo6zX$ZJ%8{(8`oUub+Fu>4t6M;9&!0do z2x>OUuTTyMreMo6=5fp@3XoHzX>esU{rCWceoV5J&$sBiE6r{hvb?F6E5-m#@z?|k zejFRN93Ezok26-l+3ZbYYq5ZIUhe@fd_4BuI-#u3;t8|V^OW4HOYYh z0@Mw`gMT8OuIm~$d4yLB%=pB)wrnXz_!2=tw5%Wd?Me{|pd=zL_iW3g$_Be-3m5B4 zi9(ITm^GeIcY#XVAvTYegNe`$W+7?FTiYOD)E8GxuJuF{u;7k+dLo{Uya6YGKnL2u z6M6c1%%&inJ!=Q@^(Id5E{^q%Fz>L`dZTxaa+I?0BVmV|$}3j&0&k7^{yOJWTv3ex z2z;H@{mSy7u?7#&LBM^E*4hU;6dZ6K| zWy%X7#xg6c5H#+#li9T#nU70&Pi+Wrt@{L1g)K-A$_$x#Y_RhE{77>bH z3)VDBPzcHc?3iQ>_IsV<`2001=#d8j^2W=5ADjPX$$XIbfE#inT1M^4IzjA*&--4b z&9hPWdRX{yZ~=@ajdwjHt|vhV31dV)kWvK282&i^+F(h{cIRYjhY)_4dVc8sJl)Ro z;56#s)7jXE9+J7px76g{(@Rg%N}aI~IKh!@@l!lUpGoDMnqcFt&{cfk`3q9}W^Q8r zSg$)U-{LQ9SFIOs(*IS;s2Lomeqs*qY-O;0#HPg9^aHZz3GwGjSU6Np146L6kG60S zDNkK73WY~Hlcn<42(iFyPLOg1!nKp&koWg2X}!^xmN^}Mrr5DX#oVXA`XcIz7VbiRBjHbv{UIBw5OoxUuJ9scEAQqb9< zsbNFwR(~lV%x51g#IMGz)6LF&XSQ)K zhDDl3Fi85l05eTo16H#~_fDW!(pbK&$SFkheQV<`t&XI^yMDhcwtb>{0z`bX7eHhm z&t-Z4g)@7};1hI&$L$?z6qo0@H2v9$pmzC>NuWF5i5gv##Le`S@zT-8hi?$m|+aEK6HZ5%ge~6A3&jqP~WEU2!hmct8Mp zs;(g}J1awl-g|bJr><&+MX>Tre^dFUO}0A%;FC=%&vTbAX&9sqg!7d&`;d)+CO}K- zgB%KbD*Rjeqn+>7^!keL2XI@#Z42x^GJOu4*MgtcEo36jxi!15j(60zi;H@83%gK=@t}!IkDcjW%-nxuI@a~(a4EbYv!}xs=t)smeCgZ&d7Ex zX(k&TdbB4k84DE$`aOPF$N%xDCVKC2*vVwK!*c)~mQp!QD^l_5NUkEG<(nOBNv0{a z;xL8y{%}{_0*#ll9|8e!``lM4uqXg*5@ZBTG4o}2FYTIP(2KMIo_ zWggZnk~e`v*_w#~pz#8wx!P=cm3ZdGU=82BuBT582Ck64QJpz~H`~b$&;_w%qWX5z z14TYDZUHh0ezXiE%qqs5>D`dUvck8-9$PMvAP! zDWMrm(1NNF>>^A~q6p3-6Oh)~YQ4vY5Cl)Pj-?%o>5hI|M|dr>4Hzx|$~wKqdfPfz zGo9_ubUPXQCxzpn1Tn1ymN@ow3%}kRIe~mBa=EHB(l@aR?E^!omt?n_A4RI1Kob_t zco<{+*jTR_%G|QrwOIVPrdXgi>K~?<=`r&Bi0<5wCCv?+!3m0^qF|%0WwDLi>dVC8 zJ3vS1%;;+>FZen!;w@##~pmu{IshcqPz6=}QRRA{~=5R>6q`uX2y# zCL&^St*+k-Bi=IklFa;=tQ?Ph8UWR4o;%k!UBbiQHx~Rio->!hu-Kul5R!#A{VOl; zMH-IXAPs%h-eA{!!WK;m3w>iE3*)9!8&jbBVKUd(iM>3f;E){NPIDix zy${eaeUP!6>Um-dbDiTX45Fbe8NMZ(^RjxFgv2MSICUx2fPE|o{LJ8E>l&w{=`#Qc zgo`PjbD;{K#{+CdQGxYYbte9`%TOv!9vKYo!L29(G`Bud@OrLKuCJJ1E66!5E zj)!vimA5Q#IzzR&W5oO_86Ph?cCg+sM$g}VbK<1s7;+yAg>#VpJzMF@@rwcu|9WkI zqMM7h07mayj*Wcpbqi6i+MeWO>%6_S@?qjdP>uh+(9>)zoTZ}E=8{a?Pp)>ZQh-pM zI|?F^*fhMc)1x&39hyS!u8xKCbFTuroG08p6Bb5)UFny;SiqnLe8eKexM43As4#yA z635=EfA)#AvZ#GNFaVzb5CvcYP+(+9 zm>V7#4~!3>VFoa;0a$o2{}bn`Bv?=e4u|vc@o@=@Vs5Nzx>86*VM7beYu8ll-R&dd z93vAF(V3Y=rLFB9LqkI|Gc#)+K7QQXJUu{d)@1+aN~Yn8py*Xa5)zERy>Pdo!RGt>$D;+V-#4}o6ZgF-VZB0zr$V~L@Z@gIY0ruh0iLc z>IAGlK8pB@_$MXt>vu%~#DUcqN&*Y`=T8sdl>rIKU?dnA(G3?D*MEd2xP?W3x6m-2 zX%S&j%z}&XKg7hJNVd{1V}pqCMFLIazXv6Zs1b&jlmv#&zNnyGP!ekP7nFo?@IN6@ zMIFqe`5##c%;S3zaR0l4b|G`P#3iJSZm??Fa~pa5BXjuAKnWp~2ZoXmGx28sMM;GI zNlE-nj$S0tB>tcz5dS?TA&sFV)U{N8k`a2BScHMm-^?~j7ir;+fgn`v+hBE)@{IA+8vH`!Zwd>ucj1;Nts}gSfOnU^ocB3l1Xq9|*$fC&GOJL11(cO1?iK zh?ENmBJ6J|L~xqPMcXkJ6_NTAh_L$`h`21G{lP@U{fwez+=$M^yecqc#7|QMri*s5 z4D=tmX#bEA$*F;9ng7B>{OY3p$wd6@qWxkb{(QY*UTtS*7>odbp(OCZ3>YT^GFohB zLTUsJr-&ma&aq0kHPIVO$m)VwUa1_u1yfA^?aem3q$IFKx#$v_it2EHq9@KOZ45Qo z*bmz^59@bGJg{oGw`|r`&otNk7@^%nv5~;FEbeH*W&p#M;+m|`^OCP+&Y5A@Q zK$M&-Qx?OrEx`g2IP4*Rqj+E?x)=jd;aZNRI5zCJ_Vogh$lZqQ>!>g}ca|VfN`sow z8K;5IX|OvSrxNJh=ayBdSF)Bl2$yL{IZQ>BP+-qnhg~MVQ2}T0|)kNYdk+Lws z{@Yvh?hq2WY$B0rMAqXrMlux|6*^mrH1(+*T>dv}SqwgYc9}RCWhlu66NFAg*LplD zgYv=0jnYV5jTcvoDEFhSvz65W1&q$H${bzdwl~(c-6oJqY{u^V3Sy`RJ5mc0XTnE7 z)J~X8I*46c*4VkZd52>2Jo>qG1~i*i?qDaX2ltl3v9nV8N?T!e#)|$VcO6?wG7n9= z$$MlTnU`zR!-Iy5#&(spewK>(6+SsTNX&E2<{a104?gVOe&%gSQ`LLhG}-=BMVtr4 zwmYzwi&kz*X}_-xSNX@49LWhy1oeuU@>KWt_JJ2nlaJM{N@&tR9DcsZ#5<1{`T}PcU-h?prQI57+Ixdyf z{+4!TLW+J7C$Qhvt-ly^+=omY@A^M@42vgGt~2+|lURj`X}4Y1SGpy!J+f-0bj~>J zV9>SVJ1IfY;alr{*nG}Uh!m`w=v)9Lz72enP%Nvn_$?rO?)7j|M(JBO=Je0vZs$oediN{P?z7R>{ii>eL^4&b3v!tZY=6Th!ZDKo11s9s&v1p zt(Ak|(XZHAASP z2qNAbHifsO-J^qrShIR^y!}uca`ax&68XfDlRe7wCiZR*R4=mUv*b<`B()60sn$z? z+KHwaFT)id=_Lu-iGdN7gH_e~$OJz!lE9IE zruRFc)HGy}^Ki8R7Lp-?Mc4xWAp)XKdrus$rp#O8l-xx*kn~2lf~sqTY#9EYvAR6l z(+WW=9Ounzrd3I&sYf4%iP}jV_S1nCVhqfp*-4QFsv=$>wp6?{-1=3<*J>jQ0c)1L z$Al_MHr$Gs_!(mcx!e`sS`{rQA1H}MkEnx+8^}WH z^9IN|cSn&LaXdyXENp=v`#8%K4Gbj{=zVndDq^43wI|CvX_6n>VJDd9E(C;9ZA-ytl{ZDffVfS-tX7OEZ4nI-33kO5fb+Yq@U zc797b6(M#iNE$M`IuYF@;Ni{%04{cvhiYh;fFQZbOg^N=j7pXuUD%;m2`W`(iqjJ@~*xdH)B@aTqltLg2)_d(C^t)j&#)PGwWYj-0DVK)*sjjl6-Y@U#fKFvNhsNe{&JSAwf zla!dVY7uVWq#v27;NYJ)0Xx0OWL6D|CoL7EF!K%Po7k~#L$ABFHW!y^ik78Wo-@TW zeJsN@(m<1Rl&?Ysmlq^?I1MKVn%ukHM%GSpvgVTsy1J`#Erj*D9-3ANGK+H%C*CFX2ib_CnH|V>z{!32q$r(M&eSi;pjpgdX;j(y=6}GW1fTSMShG zvr%U8LiqOV@zX(Xc-VaaA*Zq1P%rs~ShJcsGmC-;38 z$ttL`hZ%cmQsTXcHkoYA>2x8GD(RbvAAgmpAI2_ss`bowP7mfiSsh4W6IW6u2^wu? zufcmmX<*Z;>))xKS+nn`I&8-&D@e#^|K@|LD`E;AI?liDrd%U|!y{wiJ5-=f3ke<) zEOXZVLRQ&r}(3Y-=aJD3`Xh-gamYqL2uwFqXd=pdazIA@vF>JFw;{;qJ zPhX11s8p7J<`gM6m2utK_MLYkGuXJ>7O3pOrgQU_+R6(2)?;Z^-4wEcDsCH97FWN@ zx{_=Fh5dBkd*q9{L?;;gSfYv~-O{ai%6t1OAy2eoS+X^Xm2EfbRG*TQ;?aij+VN)> z;6uKrg=B9|^{Kvnef_nC`{ONI=<9X1+t9j)vKf|~y5+g)f<-UtBcJb+k@YCGh(CBH zk?X4cj+&)4sQl4Fq4nW|IG$It??u0=Rp)h+_Is&#FKIB+J>H@gtDj%RR*x$EjLKVM z<9d8{n9Q7bU&v>6g7Y?U^-aF@E|r(Mr<0BLY>~BjkKi+17T4~V^sgCb+S}p#gQ?s=5gP3!ZYwVkcwF$8Ak<>;ov0ze5PZ;wuzl16}HZb1FJm4Th)thh?%vjVeUZK`n2!MgZoZR3kU< ziSu{&@fNg2WW~_TdW8=~^N}ZF_3lMw4M&>9m}K?37} zLUz#-cF3KVD2Ym8`WeA%ihx=lQYvrWhRpcEJt0BzSX?Bk=G@=7jy-(USXlfkibXXM zSWa|5nv&heC*{yInp(uXQv{PkOH>O{WQDNXMsC%zgaPE#V5m@&B&k)Ql-(r%`>uV; zW`}y_K{2EutPl&3WZkq%I4e(&f3gRsc!REYsIb`fj=0UT8Ri17NlV0&Aaj;Lnspe@ z+KcM}!s7B|5{J!VBZJU>uvl(OM7*My!wlb+V`_So%^Ps)vmnxyycAkti%ES8NpI=I z3~A7`%S?MoR7Nc3=JA<@)l<582(d%41hdTtIW##WW z1nssKy)#e{x73&#px;)iu8oEop9Ma}cB7i^Syo2EIUEg~Mknl|j}t`?Um~!vte8X* zcz&2oZ4h-L^A0NtHf^b3N~SbwiR{776NkWdu*I9R16wVbcV(Bc$p8k7eAGs1Rs@|a z^vOcEPsruvk85POV(xf%BbnBbQq$fDAFm@gu7mLD}qB_ZgLI?MM8h z6c+xgH1CokCJ$_sP_A{1ei-`Y7$~t`q#e>s`*BficYrL@Td7`A47R$o90cEuMCh$B9*JRAXCpUJ&vb!_p=%tUZ=5`CoT9t?Lh9};>h7zMyK@D1=ezGN&fk4^e0PbiX+^4O z4b}8Mr0GLJ(`I+m_I%Ul0EmU1C|sS^YL>I*{0&sx6)E`;D!pL)M)mHrP!aC5iYJAtuZUE;}qttlpxjZ?!bVG}1VmpZ8otReFQ2i|@Ye%ma4pkJ? zHiFcPcGTr|t}*ehKFb>C!TJju{k9Rg(@;j+ z)cy5H2ipu6>XA;*<<2$^=THilKn@L$_nqRkPClVzehbB#y~P0!AAC3}1}zuWQ&8Q$ zL1l)|SMsp4GW&rKvO6%ts0quhIqG^MlD;#Fz8mRzfM0q~9qy{@CYklh@bU`?9U1EKfQkN8X<<@r8h*Dc+7 z2t5d;dE(&SM3^w8q~4+t+Ht4o6aAyfS(V&M&Nh_Jl`duwUiuNPwtS#JkzNCHzF(1G z`3&fKp&%bakvn5cS>klrc6-E$U3rSM54$4`=Ws@JS6|^_=eKfSxfstc?Vd}w%i*tm zur_*5t^1EVWxxu(f@Wl-4Sov}-fCukbn{PNdNY1yW1h_L{ce3#R>n(y`#Mslmr!qj z@BgCiy`!3Zw{77hl!P9T-kV78O$1Cr3%yIEN$=8oGnE7g5UQYvG!+#E1q4L_5h;R- zh>D6z6KN_6DA>4f!2K(GpMCB*-x=Q-CV~8Pn-nG^MU=fOLY^=Cwr8LRdv=e){uaVQ7OwuDXWg5~;?H2h11TW1qffuA_7XijL3;40B4qwK9Ar9e%&@-ou;wLfeixzb)MKafQSv zvKA@opT$p44hU|^|9U6r=#&9HN9er3y%Ygw zfAyeShSDINe0Bs5_VQo@kRhko?v1qoZAb&=luhIv4?`E4yjGRIVoK5 zZJ778rmEk!vtLAqH(7X!c+UQ;c!eHM2IqT=lqyP~`?>>cgSR zI=0Dd3@%qGv~K_@d}5+^W@K={7A$R|%`EuRxsF`2;BNO!P-gkXnFVbJ0@(-sQhwX_ zW$z{Ksl1mh=vNivTF^)5lpjxCz-Yh0b3L==t{0??o+2|EC^2|CEDG)~*7CgYslK94 zKIZZHZ!bOTSiPcJo+XBb+;YwDe&Wv?!?~qD`DQrpwO|*2rr?{2e2O!#aYyd<{a1-= zxecuOd9yl86K`&!;ovGB2IFbrPcv0kQBMO4E==k@g6R*K>5Kl#&()e`xbmi~W=1OV zCK>mXskG=J!G7#GVCu;eLWZbYYxka@lhy23i0$WmGBmodawvGIh49x=WQ@H zerr-D)P``h1Vx0FobTedI1E4iL7;|n$#w|dVvN|@Q+j9VAcIEPJLfXS_=D}gmbT2U zJovRTD*k@V`2D!|`=^=jC#v4R=z2f-`u*!)@2A8+%ou-|^ZqcO`C*~z!&29WmDe9W z{Q9se{_(T%$931WBwy4z4mDSryj4VjaVX3|N&bxym@b zTC>H?{cx367B-{KabYMe{_WLtS^u*3*@mk-99T?@MS95DuIQe4wI&9k@st!46!i%KdNMELZ`?M-P`4;4D6&xb$? zgI#Z5&FBxqUgN+1Jt(P`QF)bH)R5&F!#XmG=Oz^@-oc-m(zSJQ{h_Yy@}gmhw)&_2 z@c#MJgF%sgQa710XG`+CkNG%fdVNWak^0gMDw-i#tUR2;-IlDq9VA`t#BRhACYMBx zW`)-8`w@MZ%Ee8+13|iP_OM86Y!bQl^n$oq9`%+~a$kx%BhEuSkbyO=M3XJfolXbP z_d6-yZ|C0dNEb^T4Un8*=e}#dx8)7KxnN&Vd*)kDxYQ~%UY)0F`@2$1QhGI`Wpsns z_D`Y&$BU42KT=*{UPGOgJI45azG6E1QywRI@{y$b&(u#x9!^KypFO7KR*O58be7@v zQ$;ZR&Z?`l!{`)}$ik-@Fflr9LgC(PSC4r#V@4IyiJY5wG;2X)*2CU$dr+Yt^I&2+ zt{zvvkKnL+UwVp1Vg#=lD&9IIH(gS}o+jSM-zrHhHO76AZH}MTtYh{NoQZRkyiGgY z7WwwYlV!JN-@Ew`RVP$b4N~Rw&P&dvU?>1jk;VXeD56`0r9S?7O^Ui?jv+; zJ``?`aDrfaB;HM*>G`jc1>_S;t_p^PvD`f8n$UN=5b(QR*Y^8x;kz0#sX99WP&`=#r@HJK)OlL-)wk5FI^+|F{( z?2xP3xVu%&?^HnyK8@22$qpJt?kmgmJ=7`LAa~P({nWm`bH$yi9;?-59}k-%@5`TT z_8~X&k9;6-ys(bE!8YTEO3U%~I0~n&GD(ExApBqiY;Ul*fvJ2B|M`__$c>8$JzQE& ztHai7Zo;67B@&}W1JfhRgXp!C4}#!>qbwm6C)mocswW0=j|fRs&!l`zCS;+|)gv&; z{yx zIZ7-Hu5>?bC=2wACV*ATX04Y7S3~lod!y7cwsP})Lay8%8O>s@81|Tv=KeG_%fZG{ z2UVG190{nE6!9SnU&UOVo~qLyV0j>rR9m^Y$*kYyTp<3)QH(G?uWQfCnoX6-?Oc$f z-M?Pr|06L!rmadwyZ_gZeF$m*jH91WkhE!rV)uWYpiN_E zIyK8#sr;Op%*ZeLyg`}?gyPJfE98oJn07NDNbA&=O^CVkiO2OpI+wOnY$Jl4PrjTB z(z~@~8=d7`IV&5yAD~o-KkIyIIUxAJt1Y|ae&?#S`e38?Dfa2}&Zoc61t0vmWshZc zsb<(4g5*ebAj-Maumy&gh<$UQn7h>OITK>0lImzz6JBniejKBnDF+FFckW>DM9m>Oq$Wi|&zi5<;7v|5#JIY^~)id&Z816!6=BK@BU5om-{Cj^qiL7m6nI*e*8rcN@{F6Dp}je zT$R=~r`Qm~Bvg&(NfN)#XLF!DhG@#VN@j&mDfX6*Wu_C#7Byt#HG6E7rF}@HytIVN z9xTowdIk$$4n^vwH#2^`dMeFR8k&K&_~?{Ik(lZcEI%v*me#v|&nrK?ji8GABLOEKeA=t*ls1T@FTA|p??>a$Bg_YYE$U9~1l)Wo(wJlyilw*aSSOG1ok*p?&G zZev*x$tfcAJUD0`#9dVFdf8bS_Ny|z>}%n}^aCkZ#RO&!mPN>Qmp>@i)m3L3$z@B}@11xCig{p~wYz^hsq;T5>@=r*j+JtJ5EJx=F*%xxn4}8wD z^%56(H_wU*T|K`%8QeMK%bdRdc3{K=c2xlrFB)=d)+tWm5C81gVY*iZ+!zqwf)BYp;{t<)dc{PD3 zJ&(6ktI%IH67i!@5VN`h4(2}nfuLwy56q`4#u^ zN9NZk!7&;VMyznE>7@iM~5pGuYny&7Df>-_PcIQ(Uu`T8}98bwV7XA2a(&~y9XA@?-{Tlc+U(AzzZ(IMRU(BOks>#dq9aJL zNu>A+QsM_vk{u-_ijr1F$rz$!ZBTnXQF0Need#Fq#)ndg@iJmOleuz=JL}RRbK3N(EDQ z9)bF#L|d{}bsxe_vpOyoAo}v6apob4*^+(Pir5#LCtspqS2aXhZ!6!QX(Y%ix5TJG zuqw?JDzP5Q=fT&A`mN)_Cx%m1niTF{l*ZZ^il_uo&NM^rhh2c9nXfFGRV!S&zyH#c zSQy8ka{NT&19#TL5mgUaFFlerdwxTa1Jl^e&~!yX#KT6}B|@2sZ|V+(ztybvURH&m zn;?hPAR$c_sWYt)(~I2@`j~q`g(KAs5XsJht3N>H6lu@qr5nBo?%A;9iuLk*(OJYA5mp12|5WwG&QvX>vebW_t~d8jCWJ)Jhhe5XOz8MZzo@x_;XV@Wd| zG%VydywAGj{^1rp4A-)QyoWcxmgr5HT$Qn|vNqx~;wAxx5D=CYW zdnwb~sbynQi?}Ggo!HlJ-Pz`I$1*Rx8k!?{oW)M4Q;M^L9ZzdV7Na3f+U9lo z;?nIF*4d>!to|~#gz~CWhzBoR>~uG6^{&bXIKxjWw(!LYdHL7-e!u2$FaO~>AkiRI zB3U!tcV}j@MiE~%Ic)!P&fepj&0?b@L`*6z`(fs|zIU<6$8r7f4)WPg_ZA*CeO2!G zUTK$GtCtpMFTpA;C0!exd$2yP9go!;8nHWiQCjr#{zQV~0Gz_jQ7e^7VYpww=xRpN zcO(tA#vW*oKRLS6$ikxl59?46`6(rO7b{?EUooS9O=^%7-SN@{b~${Q8uv(UX@r7N z+HTbJ@08B%$S=b&Z1*>dKWb$&*RE_CbXuvGPA%#9uC1FK&J-L%Drk{bGOH%6J<7Uw zV`$1izZbe6b;E%5M$LD&IwjbJmj)Lv+J9ZSTxlY+Ag{q#WZ-{b-1Ll$UL35t`a0er zt2W}k^DP(sx6(Zn#~PU%7H7umhfU7b8P#r%X$HFy}u{-<|0DYzqs?cI+ukX6diVRkw>=9aLn53X&~Pdhyr<0P+8T8Y-Rwv ztHs%$M(L_k?IDQxix`$_8cJ(kyXFi}+d5>68ks0RK*bxg7j|{_oPj(#LzpmP-@5zu zK4bJno(G8hbRLM03-pB;6uA>C*_SvLm3q6bH;a zgK#=iR|>rA_zTQg2SsjoE{Wv{!cR;#$*AOR!9`*~xrT=-PhmlC;3QXd{hj6std_7hC!di|Zb60xK} zYuWhnyW2#4p_xudB)TA0|J4aZ*1A5_apF}L+@O8XA^iAOD*KIJt ziPuDgZsMTVycmamfC(}AS?=EFHIO{{SdQEV@0ks+RlXxctk?54rWYjGi81@LD9VTX z-tU=w>@}2*%(CPw!%y3Kqz_J}i(XhBcc}HFKza(<5D_;OguJ-o*y8*L|3Vrtp$e zG!u6&Rk%ClAdcdbgPtZ14(4X~JZez9ilQ{WxNupMB0R6ygohnmp_DVc+_^N8;nfY!x!CN7(EtA=P$V(CzuJ)wmmR2({QShapf_5zD z_I(?eTGmP1G!mO2*!eE`s{-s;C)w*NnjrHLIvfyAcSR5@v#pV!54V?wic! zpzE|baq8l;nps?yp0FDy{D}>7IS!@;o4z@Mb136Ep11%J!W@S*Ncri^ytaAKpzDW1 ztZBYA$tS?6u=x$E>dN#?=&ZELU2?=;(9`H65Cn%;l|h%_k+y}m{G0j>pRX7?Ip?5* zM6)<0>H?=&12{%ii1JvzkgDNiKR@xH+dcC{dG_cpZ=E^j{jM1YxR}RYG>z{tZA>wP zz=($?6z<|rxWp^F%?;R^3=$UJWyAYV;FO=TnyE0}y|W}>mx*(UX0}O&9i0!_exMcX z!ynY$5l9#e^p|Uiv3r-V8cazHPCiuf{a#c0OST(^HVI}etJIt?zO?u|79{oD8%`8? z74}+9EVKvsODM-BkKr{9(yByFeyFZAcTJT{5p59SAx}0;7PCcDR5qNgMnMPA4E!oKFI#XXPLzSmmdv;u_f7an zGU+mh=xLK%T8Y5G6-Z3o_2o<2@Pie%s*q>DAR}cS4V0Ck%Mt#4>f0qmE7ki~#Fnq% z5qTwvZT5TxDFOQw_v3(YxUybKbeteZM^-1|845i)D+o&WR_4o!vpBJ0| zu?psFRn2%LS|At>QG+vlT$amP;65nZ`DsD7S`5DqX$o{y{^tEc0sPvi!&(%zWo?EU zH&VVPz*Rj-ZQNMUZZsR?!0YLlJzTWW_qbzX!t18^^8T+@?Vbps*CC&?)#FW1lV|Th zEeD`hU$eCjvgsDUl+cU@`k>RTRc77!z5-_^Ckya6Tib$?^x0^4+3XXS!UiHlAV^5Vb0%ogg9fd?o^U|!X=9e6|eQ}$#+~I4q>mc1W-UukKb6|d6(9G zkfPdfew^$)H}RwI8N<7MKW`jiAIh;%G+JR-c`)E6IznUkI+u8CFRZ~&*7jFs)Ei6T zBiW~Tvf?5sXH1S&J^XcfI8*j))(>ecZ11sLT+1~z%4Y!AuK-2U9$&Gp!;Jiz5rfTr zJt3?xURZ0eFHo)I=kF>ErAB`3M2HdQM60K(dWge_eIWNwkHLP*{)orQTiv7#|NDJvxPfsDCn3 zvc%@1_j5sK7@kD47#Oh~o{1wr&Kj=34)wMUY_H26rV8&*wYj;WF*jJW&-rr1R@jaB z_{XQ}Ru9eH3SKm~6N8c8X%^NNUkwy$m4&FiWX}VHvXvIMmvnV^z60n!u4r)AI_NeLpqZs!9ysmnOX7lGNBaN zB1^^nkKNyvwigR@O#2V#_O?zGGv6yodYGq=+~zJX{WvvVU%c5TP+#`;D34HuUDfmX zV$Un@d`+~|X9IM?R@cw?huz0C>ml=AmQCKa}`Ir_P;xomLD)*c+A*f@ys!CgSoR8y9}1I>V73JUl}&;eARTo z?!brZ%f{E<7k&J7VDXYdo9}9FHs78+t-tl|V)w5%i!Iy6KN3164*uL|k~Ql7xwZUJ=hye|+sDSgL3_YF zv=E50BxFy=B?iT29A~2qVppJv6Brj)ZUpCog+URZEc%khzbt=%l@9>RAG_-lyDK2O z8x+7I2(T;x?1F%l%;|cfS}3rV$Bues5D0+*o6zMd1>EB4Y>>cugO!7xIcj%hL<-QJ z^v(q69CySfGm%PkxprS?VD|t8Y?A=n1%Pxr(%lDGEAe%wOF{#5h=BY!pwkWTuxF$P z>V=bRQ>d=-WMJupt~pA`1T;tKbM~bCa6*1iei@(^eYCJFjY>@_Da$A>#o@vTq!>bW zJb{`**IX>Z;fqWEE2}E>)A-+gLASBYcmk1>MWz6fz|_3_0$O2FaY<>}@$!ljCo4}? zovyB_t*bwC_FTjH3l|$NU2bZ=aHnisJ#Mtd?hQTk*_i zT$-CUX|i>#$I8Qdhwz|cq_@LiFcSi2Wqd(h(uW1i2P*%?%$#l+?b};=_6L)CPm%8c zMak%FywB(Qn`ugmyR?PyeG_kOA{9`Xj z3D{}^3>&cOe==!B1G=uyj#clfg1G|{xnQfPKP*`Tfdb?c=pyTOQHpkrdu^#H3mloq{RUB z>wH3SX<^xMU@hcIYgJTC5RO!d$`NPCUT%~u;tFd$R21AB`l>}_QQ z%+$JX%Qm2{+uyg7qrwdBwV=}W26we`0drS9{{5n~*r>Xfd7;FNYoJfnn}CcnnldRT6*aIWZr!<-li z^8@YcU||KJ?Yo{?9v9o|dL!(z!?e#A;!sXyPxQPg4H$r`L|blPo+zGw%&@`*wi7 z6u|NON7NMnBtv#~?{)+4u4X7H{w78I7jY4Q+SlaZ{@-fEdcXJ9%*}Pp|D(ON!{)kP*19|FzI0Et zvbV6YvjGPCT>)pbM>)Ixjn3E0&B61C6ChNK_VfdG*nq3Y+CS9lw_Y9gjn5QY7y!VJxsJjcGTMTTk`T1jlLNK9zE&zFNcqnjl zSp)ta8}1wviAkhO7rO^V_=iXMM8*e2CPoCNriaF*Mx-U}uB*kw1_HFb38@jO0Bvtt zKw3sPeO)a*J~lIrPT1>@)e9veBeQ@-HIo=JDu%wOW}OHus^#x4syQWQIqoc~VNwX5 znN;Ttnr|8*JRKKDr|pfP)Ao|mGl}sT=&kd&BZd!)ax4cmhD) z8wcnY0(!fv)UP3VyxMxXa<$qkY ztzF%1-M_;Tuo(JjZSCi;U%;*!$IhNEAY>R&-#^SL%Q32VXri zTuT1-_BOP-XZWOk+|uMw%Q<_}(_i}~S6g=VgKt$-OJL79K5#VnfS6L#fSLE9Tt8U0WI* zu*&_h?N4P#q>f)k$iE#slWW%D!ya47?^LDaV67WB-}hc+Vp?!1=A40+cAonNvM)!< zc>gJb*4q!eWFQAAhqZ#wTwi#k*gzFG(ubz(Ki!pIy}r19VU1X5C!Uqv84lf+z@)cC z;BqTbWs}VeSEE*^xdKWaY{}upF8C%rcsB(;8p^VMH**;Qa!X|WdHgB3f5pOHfiVyJ zATvb0ubKeoF+H8(uG4Wug;lh{%QPlWe-t~xS3b^nkI&_f;w;DdZQ_;29uw)PL3CZ7 zzJcjo!rmI1-2rA){4`mL741{F^=NiH{-?$`PVc+WDoStSmELGbxgY|9T@ob{JcD4` zsEjs42eXViQ~hZ%*1Y}p75m1aY*0Db*-0S=N112h%mKb=lZ3Ij;Hos%_`otQ9f}o` z81L+)Xyh0}uqltb`)I{_{dGB`qtY9*v79k_T&I~UauiJsT0079rdHc?^7TbyCg;JG zsrSwzO15TsL6)O?&X!uWZ+$XKdlG*C~$&_%|~AXqjh4Ml0pSMomN_ zzl!31pvCNvLb z>NrFQ!0boELAC&X0R0+{R6Etm1+dgTM>gDO!5-dKr0n*XMpM-7`yl8K&Rq7rVAb(~ zc-2t`{xCE=aDPM0p-KB$ejdE+I$r#dK8hztohGDj!OuU4%E$^dPpx*$do<&1FbT$e z81i@J;Fe;!3pYsxIba!yoIfk^2U8acFzcJ<`h%aS43-}(CNy$`9p0%ad(}p+p&1TW z*LCtEhlRRpWKky`bJpIyyMNWe`uc$Qb((rwggb&bO#R~&1^?OACh4a99Ri+&!&nuEAew5$9BtWS69~exXqJpcs*n(sKuC9L*7}|4yt7Xfun3!D%`1nHz@{ zhMS2F@8rkJS$w(0xSSfk8Tm16N?D(TZC+jt^^;V-%caX!dz+xGBW<~H+@X};xs_;@ z&qSPBea*sMbRs^usV)>HumnE3U?N`-&50B!VnWX$!FCApK`81TyI?g7hP9H*-wMuj z7{xq=W_n*uuw!5k!MvSaMn*cEc8zULgb1ye2wHOuJaCoXTMj?ZnuZ}q>*i-NHTs*HjM$z1ZlzJ*V0Yf&ezY@ePgn@Ct`gEhd_dG<3VU;>%Y9q4_4KXM zgt6nYAt~n=p6S1MM78EDe!D5T9>paQno!6sAytB-a?lC)Y4ct3DOn;uL744O~6lgg;DoFrmBi?p=k$mg~)T{JGhj3&uXQURpZh zi8g}Y`=WkQj;+5=Xl9Aj7noZ#AAIg2cV5euTMN{3Lp9+P+?U~-@wrGC<0)i0gYpd5 z3Z7YnamKpd>0CxkjM(Mo_0hYo^6kkFT1<;fni)*1qhqJ*GyV2nUQ5tC)Qpc`LAa@V ze-~!%36j5xd%q}KgC1|!iOd3mko3v(BDcqx!>Hl;F%x`dYav--u8g;n#O6|Xnj(?4 z?lFWPx#FMHRgHwxue{1IY0KUY;y7qxELL0%d!lb)tDss`>kBGMYNd~&-&Qe*e;{=Th}$F$B!wJD zKk22d>`UTgXZv~T{-Zk13tFlVPSvedy9vw)J|>Hg_w=z!2b&pO@ZS1aZ-?Hi4g35`v`~$bE?lO7TwLrr zwD_#5`sMOgBOfaDaow+tw&OzmQ)4^}hK`@*k7;ggd zibRw?(G){8PbQ+viB=s%n+c-bCecBV!H^CmlQ88Z_YRWh1j&1o&S|j$co&|iWVft>XYL!I5ZUVv|A>%r4T;F2Q7%C1;nHXP@ZEuAIoO+RUz|@ciaR+2QvH2akXy0gjU2 zWhypycK+R*NlIZSo8PTb{Vi1j(j&bc6_h{ARP>YxC{uZW3|v449x4Zr^o$2c@$Dk$ z>>SQXQV5sbG8H{#0n|u5Gk_cgNJ{AWy??qNcug@ zb%7!l(#^xh)y)dy>F8|j;_3?I6XqdFhy47#VAY<@7;;@@Bg!)pOMyxMl{W>?prm4m<2xcqCGijtlp$pjGVf@#?Y(sU9* zOeb=@(%FoH1I)8zfKFWDmZh*-?YtOyA``4`HK}bQgxS<0ljI3cLPYalM z#KFiQ9pNrUY_e@si1o#@j$v)hZTBOXvyHw!>^Y#@TWd(AsJ(tw0eUpr=$wNEbGS2| zQuaeM-mZ^rHI)rQ+!q&1Vw_s#Bj2sgkG)zB4t@dBh`x~V>2~pLsMrB+=7?-08f8AF z1v}I8W!O@3hv{dhI2#5Y1+##7K%|{Y0SlCcg_VsBC}Z&o2!Ldi0mG-43I0(akkrtj zli3*P>S_aJSqpkuR>=V{bA|&!V1z$l+Pl0xK=sPf5(N~e>>Yuc)KT}KVE^bCrv$QB zCUuv|2e6~Kth|&gVn#_BU>86+sj{XHs3>*by!r2pg8uRT(--rR9zrx)nbTjD3a)qJ zwIOp-?+B+m$WO~(8`YMSl!7n|qO#_E8NKW4-B8-5_25=#Hj3Wh?wV@NP!^x73=(?a}M zub3daKWyhi8UpY1C)Lxxr*Qf^)f4^8{Ku3~s{h6J8>Ro8AZQ6ND84@^rr7_Wm~!{n zZ3_HXf9=lK0D%|)ZK^GB*6*_hDyjg5(oWC?DFMt$E?^}Ly*Gde0yvO>W`H6B1*pgZ z(G-ZIwgCT-fv&5$F2-Ef!%ElJUYD*1>yGhqL(x@~!qWkL*8n$E&=HFWKU3cjkKGuV z5RUPUNlHo#N=x%k%Zy6Oj8936*9##SMUbo#^R0nWNG8oSEeD8>(V669xT6?CkuSL< zAcx)BS`katysaP>3fK=K%)4`$&M(`hVyJL}k!U z^8jxOG!IP4|E76Brk*?Vm*zq7Icn=p^WaujckQ*@p1!;N1A{}?MGTGQ8Szk~y%1V& z&b{X^UQWJxu4poCa`1_|iDu!m?AI&rKYUz0#jI;04l^?0VK+fCEiQe6u!^E-FAb%* zIlX(HA&YL9Gs#$0q92vwgiVYmMXvf&vfV*Sbk?D{dgx3a6K-C;e(1QmztuQa#)2Bn zCvQ{&RB|3BYGu_=At0v1;RlNqy_VQK@5Mb4e;;7gcHxN&YdZTQjX5I2CEmvCH?6KU zKDQJgQ++i0AXt8rZ4|{U_1a~xPNggm_ms2@NZ3T!N-V9tdAgph)eb~+8_bhJNsjO( zc3cgth&F?>~tCz-_{kJO>JFmSjY>iret)i|6&<V|k(_{LO<~onJpr-N}`(@4C6Qw($7kk%wKk zzJFbv9X@T}-SzYP=GyX`huz)V+aP9nK$Dd}WC{n9YnZ~b>n=?FW*s^dGEEW;YM9Ov zOQ>P-M$OX0qkaHq7KGUt5^TRqvOdrD{J7na$ImZOeV2AfaiN;XAGT0Kk-M-^OVwRksH2%HF4mVE3R^r=9&};x zY-Qro;<@T9#ifS&vaqG|4QDSbUD%-=YVKEDZft!TwtT5${=)L*n_rfen|hd)R+{_x z!&j~h%3WN!I-lX28 z`>tScypGAIu z-|_D9_YXI}e)#^e2degCwND`G$EU%4O+P-5=zaXLHfo{vbA8+`>gUEpa1+2fl=SiE z*D12vFV@Yu<59o17T$^P-ZH<#I0J|cB=ASH|0|(ji|U_OrT`Ge`GKD!{WXj${u#!B zo`Emez#ohV1sVf%tv;ZGdn5vg;XnX4H#ai3xA1U70jhYrVt9bWU8p-M($6|Pawlkq zIM7w-QUmD9b3hf_4{H)ZvQEjjO)E?xBzcib0K^(eE(*^t13+s`R#p-@Cp|kiI=d)o zr^<{cMgY>*ggknQnGRQrNdHNQX0AbCqtT30`Gc~T2VD#*%+B#xmB^8)PZ()W1TPIt zFI)p-BP-RC(KnDFf9ea?Xix9ldOEy(>bm?qWE88qI0&Y$ z#SrI&;?NTVvFRN@We>^`0!f`gky+G<1Wkr!RlJJwRh7Mr#o&FqTp+o~reo!5+KkK! zx=e%NS2Q3{MJ>j$c$b$|ug*D770(X6_4x}>k^X(^bh=02&Vi^A3*f_IET@Q;200OT zEVLq%*%~PIo7jcW3o7k5#19M$XT0R^S}r~YjwDLV)b3u_JCH}^_d5~(cz%F1BJfCp zfL!B<1@I(*7KCkTz9Wz_kVu4*vOjJ(MrZh-C9+e${a)L<(sQ_ya?3lY`1!pGBe$

;8)ZE-~nJ)iUvkNpB2!j)cdV_Z}JbYYVq6BP;@nW4TOV+ zxrd&OlaY;slvMy=cv5ajyS4{>KMlWhq@s>Fkc#a93BV44Jj@lT16ZRY(B}EOLAu5R zSON*02hgwq&I8a^+%-;mZzjZHmp%~CP>fEA`X^g8iX;Q(N^h~G6=G7zj({2>eexg( z7(PhFC3t21-Fiu+cv8+WGBzWdkh){T@&6Dwq?<8)5aDl@OemozUVl7||NrpDAMk)a zTW|!JEjW?`%ob!9l$DfMU*vf&`h$97?qM;&M1aoDBg&SawM%3GZeaWVCsh99^uL zJOq}+A1Cv1y}uz{gCem!G$+1n81!xu->2bqKzrD0e?_;sJkNrbjG5&Dj{B)jce0#C z^mvFDOBZk@v5uAO)L3HA!BX!WQPu%zC#1&wJ)j zAwj_%CXeZTi}g6I0%G)8X39CF=K3YJNOm*_#B6gl*=&AI5X6LffK-s$;%RuCCG1e` z-~&gGH!I!Gwe1{Te$f#%dsa*p{$~s|`Fjin44vMp-5DqVDWO0H)_{yEeU!jGUBk*6 z;PwRCq(=5mQl2~GFn%dUfOe>sE|OkY&`pZ>2u(~0r*{QYfteQ|XaXHS$IOyrgcv|? zGnPP(rUJ7qWxFFSK=U7$PX(I)_`mq||HP7*@jEfJK7TOa!k;npyoplmCgO1Ii!%D*iQjVzTr74)B!M;%aVbeJ<-&kK?UYvuI9p&o>@(OZ|N5KPw51AC?9?k=m6gm~t zs39m3c^L=@%#dD$Vv&}Yla!WaBAaqICQ0mRF=b|hF=icixq-RUd)tBhmmq2Pug7X& zq-OwRbEuu6BOl;c=@UovIgL;$y5_8hhPefh<0`sENx7#3-C{+n z>d!b&AFSDp^IG&c|BrD52YNDSfB_r$?UdYNfT;rdB!RgDFjWIE-D+Do8QHr4&unL; zCQ8FS>W_LGJ;-a(6GmqweOAoN-5TiDn}@_ZMy3NHJ>ZD-&Mjx*?~jQNaR`c}ch-|q zLetX&($av@96IFC3n3vRNdUboUEnq)KLZKZ>(<8{7ZgXa7HO$N$#FM7m{P))rkSd0T2j`rogpLgkUuOLU;!g zmbpptSy?iOh7i~zfl90xJsV2P3hylAaBn6&E8267%E5}j;fW^PiZ=R#k9ic(R!uy9 z=i8i~UUrpXg6ss~9dl0oZO-(%4}dWMM4@5eB47uo9cKas2Uj-_uaxwlBi2Dj9FhPQ z;k2lXjG%Uxatx{j`L$jZs9gjTu-1n>dKDX0P z67`?M=N}#oW%R`#(?r;jjk67Mb@Mc(cD~gPgeUz=`~y5nV<-OY)K*-;T0Vd~2>_!y z&Pj@ZFIidB5t4h9)6N(gplj{wjPgp!3~;yb^>YE-BQ^$5gbo0_!h=8yrIrEVEd>x~ zrsgN*(TyIcb>VY&Y`y6JOOX3dj1{1@r$h6~{K2{N|3Umyn?hVMG>~{$uk^J1b+q%| zMkf8>G7r!YntflVliBY;t?y*hD!Y6PUDIwqH^nib=FEr^JLgy(r-%iiLLiQ0`uC z5LiS`mf=LSxMY+-{Mn?vEm49I)l?7%JLBQvZri)1j)M+4p4h)cK-#~=Er2B)fTbG1 zpY(#^AFvb{aCHI7h62DvgYXxyi;x21mWhM5xhb8b+a8z(3NT;zLu?0hno* zR^%8@3QWaCW)fVnMINLQpc)C3^?~vgFq0DtL@D5bkx41pq?8i zmIPdWK7mFil>9$d$AZrOBW_s$am(W0$1SLs`hG)$eGmehqOuYrpSIxvk+UH7gXZ1c zh^CueW>P)ovYk+A2_Cpww=jWQr$^zbU}u)Dxg1fYTNb2hF7y)2udc7r^@cEwY~m1S z>f|&Y?EZ+KmM5KsjHsiCcR-A&A7&B$?VE%Zh-6cN4Lzj&l%=04eS#yu3I(Ba&6l=Y@F=Fs_?bj^dL| zxNsh^+q)UjKhhx-JsqMKs{H}i{^u;njh^}Jrakn82cZjOJ3x8^ zq%?m`V}QH`Xc*Bmmh?X}mNaZUFk2c+_?@Bv78FA(1FHPE%%I=NNfD49{x=+-xq|N0 z%EI85`q=#k3<^dT;tZ&o=UtY04m?r3ZXd<7!mCGu7g{}$ioTD^jxZ+MHb*mAA5ugd z(v(g11Bq*@K~QYU8oY;zQktslTwEMj{sM21M0}NIg%|OZys*eQ5mDw7?w~@M09PV+ zoDd2o$VWH{mWxx^m!{Hr2?Uj_QV{4nWXi(H$>0-x#cce^)sqv?@4iI)?RvR2{j_iX z%W2cS{O|q^HlX)NetWk0pPs$z)5LZe|l;j zVaG@R+qoa}$=|1ar9M{Z-<&pE=|ct546Gvv;m36G+2N0kf(|_xQFif!J(w7CS#=Ro z8VJlSAtxE1lj;p(RZL7Q@$v&ptE=)dFjFdh{h0Qu3!|9M=6W+<6hpDa3te#sNhQeb zOH^Sj?S#tQ7En~<={sb?0p~=)xNbZEI(!qRFJ7Wvy$;$v@11JI*uO;8T{I~58@QY7 z0(Y>1?_aU|Z#1}z;7v?*tQ>a{JaC)+fdc^$xC`h35C~xU-#9QZ9)N;7;67s)+ygjp z7u*9-@DF?sKtTZF@1nt7C7X{c zKc5fTr@}CK0;EZUbE{k8Su)Trn=Ooz{a4v5!zMiB{||fT9oJO0_WPX>N~ocC2)#=0 zwiJ2|y(3+^ROuK(=*3V43(}i_6bp7hP*6}*L`8H!u#06ZV;i|E2{Jfm&YW}4Iq!Yn zd+&VaA4O!`J8Q4~JkRg@`z;HYuIR7uB1md%h=Y>^pRdki8!Ym{w29w|#t4^5ZklVZ zOR_*QC0-`5_*1e##_n;-Py@z~B!%D;5IS(HxWcgB7Fk(z>7C@wj;i(8{}ZtEz7H}% z7Xr#aKmbr%MHOoELElfMJgCqa!(& zZn3Rotm(%loZc;}V`KeLGD3N-&ZuT(d{$~7Q?x@fQKQs|;~9&LA}3B#NyN_sLP+g^ zVwJe^U2vjFurzsixdV<_Mu|gQNx<6&k5&?nBJa1uu`2b+rgS^vC`x?pt$2xaw$lY( z2_t9RM#nBXg|B<6->%z5>9-aLs(_||j0l1%Rxs^gaCeodyJ#?|xdk2L1s#*6K;`X` zW(iyo;JKx%eHgt^kIkm8PTqD_rXIdn@aTpodWK}s`?t6#hr}4qsE}ZAuWPfa<7Gfip+;)55?jJ~a^w?y{d-V-Q+fk9Q-9i)G2s8n0pb5x_Au^vh@u)XY z{M~GLG^Ip2eEF^Y&w_@O0)85%3n(>WWXT3n8o?mxND`^?$8GnwmF zGdNsmZKD8p^si~%e`Z=Ixq4fvJvi8Tsi!0Xmy}5WeX3()XBHgf7DZKs29GQ_ z{uc(;{0;MA1L#e%++_0;oo|R|?1(xRg*N8f>Zk7>?IunmA|hdynfjHkWhEVOj# z`++E~E38dK0=|DNU^D`z&tR*d51>PnQ)!bD>SqOpCE(+t&r85O z8tfuqYGR*J4hARbgFYsJF}X^Z1dV zzIv@+rQ~)xwKueEIq;0+F}-Mi*y5b@FsoCzO1Hz114p*T;W6@!?q37q(P&gn+OJR!oE+zAM4Yi+z_Z zNv}LIsj93dZlB4z9m49zYXr|VZTJmz3U^w232LKILCa8OQ>#@Qshty;9qGHqfD#mR znBhBj1g2(y_cKr+1BvT}g{P8~w$CX&j_*1wP$qp8<8cp&5wee)CG4YFcTY8`v@ z1$FPGafpFLjZL)9regN-=C%_&*vjDr?Y;LRdnX>bhVgiw@LLw%q|4A9`0NQW>JW@^ zLjHPXF^j+!L1F%&La9DJMWp`A5Rq zt7wvCvq5&Z5L9;Jo`$6xTgbph1k!3|uO|%5oZvWaElqwOZ6+BlQ9N6!Kmn7SmI%I5 ztK5fKUP~B{RM}SmNoz^q*~?laa|Iw+n>s@aOOuv@a+F|(1CCX8ho(?iJf0K9MZUPp zt7R(O?b`IJ#6~OJ6W1*yT0KO7FrLbG!F1Wz-p&kg;GiS|^$>XU*GeMr3JuIHTdjwR zGyh>RM6HJc|E?w>>Dz-rNtBs4D8v(L2?f$^3_`W#Sr9Ii5b1JB7OhMW+U72_;bcR) z$}i@e+pb=Hy61H9;aAHUNohN9!4X8lh<949vg5f%StPX7S)M~M0{?}@3683FU9fcB63)p~zuX&Skf(cxZkTh#1 zlqCs+nAjN#vUu$MNz$k)4}2E)K9>WDbq)}tcnn&M)7?LMXQTHXw*sf5gyS~-$JVd5 z>UFmgykzNJ`d^RqfA*1X05@51m6fC4;s4z^2pxO|F%kd0qY(NuneP$cJi5maiU%hj zI10yHFbCe&DukNWlI=SPJc`UleZW^4s|YjUSS%kA#ROWZE1L>gE6OAr8au6owb~HypI*TJRc6G(9&SZq#UEB zQY6{y%BonUB^BX;XGS5poXgzWd@p-VURvEVXaxTWaC`p&B1+St*S?SbR{r74=~a|; zBlY82`#vg)_&dYG>i5xp9t5#MtS}Xjfk7S6Quit#%B+64v{o3X1+;USH*0-=Dd-yg zo)@IM3sw(h)&`a?VDE6FO(UteD!p|EGfBV)(Ue;dZUN3>4hNMCt&@%rw2c*XOaOyQ z&`$$J7nl>MJPMuwWORTLX&D>SNv+>bVYag0Y(pgxsmg>aNU%s#_D%wz&Tknh2w^>D%gwS(HVdw2pViaI+51kAP=H}DJp9mW721D1)91mK#Wz9MO- zE!#(>yGO=*gr@*;(2?5fr-RgrAWxH^ZPWvo0R|E24}@soK63(kiGPSE5D@8M6)|D< z2@!5!5)1GsprAxV_ydg^RCNBaiNQOQfmjVdNiZIW0EaB6rh(~rd|W_$awL_TObbd) z3*VU$3xt;Blvpq=&;pSaz?%`7jf)_InE~K$Oydiw1>w$;)zpgkY{%3>_vBnK+64zI z2c~8L-J9y%AO?fT3ZTuTW>QBBKneHADg#&+_067L9#~ivo?8aS3^Ylc6hkfmz7C+- zq~()=rU?eZ@kJHD-9hCUKvGUda3(2|loJaqZ=}_v3ZRo0XO(9EPoQ}~28PVXh8bh@ z(GBAr4`G8n_2+Z2Ph?*hx4Is+B}jw?=5@>-EM`wUt?csRIw{9gQT&jA4NtR$l?anB zZ;@=P1{!Nx?HE_x0O!n_R-Jhw3n7!ndX$enJwIlJ(VU0L9=WZd!6DO`eAAIa%n?GL z3GBhUYWn+&6v&2ZJ;rx=b)_U6irIekpjPPY2ogOkUd?%rVEMd?V?LKOYCP{e$(2o3 z(Y_X0-Ld!K<*FJRrl~iJ7o@8X*%TrNou7nFS8EjYJU_BDDbC|x+d{5ypK64CHAw%2 zg6vMe*LYEL+j?HBD{M>UA+i^6WLfcjSRv%V&IhPSe@)u0nD(MTF~!Ek1cop^)|xSAa{_+**+)|~)5fLS@k(wx zM@_{m$5D+oFH8e;_eFg!vRAH?A2mIjv_vp_2qWBS%kt=WT)!K>Lg?5YZ{ji8B%=AO z%`~UPL!`AFoV2V~<#+9|Hpb9c)ue!`d%>(A)g~#-|ESBABM5NVb$p2GgH}4hNIzP9AEc#ao*i|%Khw@ z58=-OpL9H@4BVuIN4XT`n@QA0Wj~u>>J#o8F6YXOomCw>(fpIy@T1V>_S4RbU8hCf z^jr_x^TI$_Y5uHphopO@hyfQxjR~u_my97{dFJj)#)vP+QEkU zfw48)r8f%4TqV{`Xr#W($-~R=ZMW9l%VNL35^XQISKH{u`&hg<$I9ZE3~?(D62Wop zbSZnn-2Sm(4ZZSMJkQ{E322GK=J2%w7YV5MMztmp(Lc=o4xhdv{&7A&Qf=?!x~9x6@L8LTBW`F!fmNmrvS!5^1#iZ$x(!(m*!FP{WtEj*T@%o z<~$Dcm_ftLICw<44~6Whx>abH{rc=4pKbMTms9XF7iR_28XLDK{L+@W_0ES&E{^%b z`-T{GN%qC+sOORQMW(e81mU`)Ie0@Pq}~GC;;)1x+*Bl6Q*JO^W+zGU^qlV&g74qT zI0&&T!8T~Yp_?(gF{3r3CGhziO^uPjX`#wzl!Psf_5rLLWCe6q1W+e-Y9bg%Ys3aC z#weUFi&%b(Nj-gn};K!t2wPy=@0A-|c(D5}IdFMDjuw-~LuP9_cGah_q_pS38)9K4)0 zV-JL4Huas@W_!hnBM{bFJs#`9=ISRLhB8gQWN-zMA*IJ&dtno|FJo}tLUu0S(4Lz; zCXqM_+XNwid$$qXVCyuB!>y?%)i>|7w488CMxluQp&U68treJz37&Jj&NTAH&e5A8 zZ?)#;thcJay-J)3)_!)HeIpEG8`tnwYQlOkc$P^Yx@~C>dxEO(lD#+m#-Az0JYk9`j zHm=7pcWSytX|luRI5;pirBdzAmkzg!mNR{O-*<*=cD;K2(#)}w@4KRH!rc}vZ=IZd z-<>ph$mf?!x6Xckf0)S8>C0?&dsyT{Po7Puzu@KD7aFETD8-$DT?@A_dAJ-dpL`Ld zfBDYw;GKO3IJ!c{Kf8~Yd^pmU&Y)G%i)YJ$PXfnJeEQ`y z%(ln#j>)D)saJ!|&OPKC9T=vT$C;>aFUb1VGnhVBUBp+P9No(cJc-UVFkktwT4dQT zdq0jUaXdA*67kF(5V~Lx^}IN4BB1}}z(vfrXS=hk1G_j+jBVol!Fwd}j|xj#!AP}` z4#3pDdqhAX2&%xpETn%jX!tMsqct_;Pc5XCMJ-M1@+Y%eiu&pKlV{F0A1yd{o@OC! zTIV1g8Xmt*wU8cH#?RxoPE#GEGx_(PQ!S*q>m8&|p1y_{K#G-BEro?ieeOA0$yylqi@RMU zrDQ;Xdarw2Z8R@G_Ic-Zv7=^&m6iuA-j_O`7R101i&d>yZx;&|=0oHy z8`|b|sSe-IM)ZT~5gfI+Zn=|3pHu9&U9SCAO>g<`K<}L^lcy37-#eSdCix$+kUkTn zKVdYAkm}m|2dx`z2q^%*Px=q&d_WKU$Zz<6=QluGMCCU?Hw2Ulz~xgx4zKjJrUvMW zbRvIsE(grp^!|m$b%6dFv?}xtg$j6tCIC!-jqw1z1|9RDV*2YykF>N<TyGWvxeeD0r|9{(3TOn>-e ze|y600FPytTT()$^T~kDuLg8}1)%fG0iD0Qp;%s1I7dNCn#8Dx#pBcwPz&Q$TNQ{| z77b^_*os4}rnckb)-|+O3p;*cmt$os|{@)mqeObA~?n+ za;|XNTCj{=rTP=JJN(mX3XGhq`mxib??=m7{DRM`BVj zx3bhlbo5g4nM_>OA*6x~oXOM`4YAw0-n!*1+A>m#an**l-jZOpbrEMWc6HIXB%nO~gQw_zl^>QJPdPbu>0Fgy+@&;OXEcp5u>?DYD%BCZjtrsK zLI4h-)8SM<0$9jYH93fys6kVcsn{%jRZs>?m}*7fb|RT zkM#~Jup@&-N=0SY3DD^oAYfzFJ4N4-0V)epG!n?UJ9DXvk?NExC<^is0;&sAb{#^qGf|JpX1tllluqg@U0Kz6O(i zs*oD-HERCl)Yjdt5c+FoeN#OnNB-stfdH^UOJfGCDa8zfR*=t;lcmpdbIKmNO-|M0 z=I~g-*k0UY9!yq5XVUGtcQFKF8mc3u_%*uoMz_C}fYtNZ4W5Znj6dO2R{0Iu7EARC z{^;-n<66KW{w+oiXeByH4>%>NO=cZTPer+DLs9@Lg3%|KX8w+en`KQ-OFn)DCjSG)1|MYyG-RR=O$9tc>SAqpXZ|eO9VX<#d-tnv+#&Doz z5W<+Tt7Ye+uXAqFk!s8AMe)mI_V<)59T7SgF$c{wLYpDZnbG|@zD$=njWWD67+HtO zEF>OtmgM{jsajJuDH{(9K1W>3`to20SaIu6Zn`u8X;H_j)XVo4O~k86GGnGuic<>Bz@w)pV35PzXuxsL`tQ zuLhQ*dSE%KDwZKsaYxboM!Os!n0%CyLgI!#J774fQ4&1uh^HEk+{4|fysk`6I2F?G zFilUR)}kyh!GA*60#p(3v1_d+V1TeJYFryNv0d93Ec5T8mOEtRKo_+HwLuI^0C@MW z>001X0AMIBw>=035;H8RkPcPavZ6tvv>t9%+QNgxcKcOb3x@}Z?Q7DO4xSpap$nuf zTbi^5_))656;F$3rwUwvD5b+bVDAQ1g{BWM(PZfOr~FRl0{QGfXr;Ji~WTJIL@D_wZDp zWdSbGGbSE9-{5Tl6fHm=0Yxi(n@Ql>J0r*`AkYoCD}ka#FTVj_6BBMvWm{vvi(26U zVeyfEG4Vjr3QS3-D_V3sK0Y}DXjx#B04*tCUg@SGZK{x!4NP^|@b5xa0?4$@1%YGW zRRs1D&lIYJWuIOekVXa))^GY%Rsztkz#ap_)&sMO0onu1oIt+%&auN?@tLV46gLB^4h!?y?j;Kj?1=9o`)|hTsE8gZc3?@zviIUly5NH$>;(ge|c3@Y1JDwkT(T+eTvVr8#;l%#I$%cNHN?vT5dd086o z!8qq#Ll5pLU7U)$X5)G<;m#Yuie1Ngg9&kn&2_#R=lGq-sqRP}l1%D5w3Yhlkd}Qo zuG`nyB_ZEvCPDb7Xe(_nw8Cm6>Grcbi(_w7P`VF-@`?%;OxTm4(+-Ww2qpVPE&eSU zR=ay)uLXT3jInct>32+JeDu{u0(P7K`b64i0Oo!dW8`BIjICF7_w(G$10T#|)pcfp z>d?B`h#{v>&<5LI-@rxAxxpRw`bbyi%9}4=Lq^n14qaeZDfwrq^5|ds(I*8rp86SI=F+oxlShM>kEgn z;2g^PP`i5<*obGDYCcwB%}kJx!lV#`4{}&Th7mH;bTk3{gOh*cbG;jC#-D?~D#gfG zKpIM4RB+S-*nt8j{yF}x>8N>wL7dH0wqGxvU7|H9z0VO&Q{1xzTD zRjpm|!w&3M%RAPZM_*DHjy#q=$|lM#G<{@DoR{2xg_GmVs|$4r-cuJRC3JocCf-MC z`Pw``BwEVcwUeD?_=U8!+$P(V56C-Qzt*v-k$Gzi(eJeiDYrkD^~m{HrJjj#^u6*B zpB`d^BQC+?yzl;WAa}#NCkGCv>rHLF>-iysw{c8!PV{oRNDI&1VQaBTMgPm1Ejo?N zP>}#W(L6-m_VevZ1m>ky5IdB4j#>BKv|5plf4ad#jReS08j&U@F z#$X-r53Zl+`c)x4B8C;FS%vAVDM2$Gab@BE1q)HEd|4WQVvuSUb(NE~vyFj2JZZeo zIYJEzM=_YIVPs~P+p;Q?wrQ`-Rl!F`c87|7fjPjXP%L8$evk%CrLCuym#1mN#esU5 z+U+8x>B~9LU_B>q&{-|hF=HQ97Os5@_^x*-DPF5ajNSs@QN_c;PjUBI0~+^n;MkR( zk{l&quN9l#;WV8;=N;ag$>v9BNQ2DbO|rtGGMZ((%q?<0P!xMM>SYO@AWUdr7~1Ug zc$A`e^N@UvMW)hOid=an>cmXGAgGbwTPaYR^C_Q-lJT~RBH1Q?!^qvmpjaWQjluR-eZo^S?NJLqnFF)8Y2G8r6i!mSxwL*3k&tk<1pTf)Q5t|;H?8;lSvWWjn{Easg3eDrWM`n-?2|MelN zuGN(n1z#7i@!f?+HTQgH_`xp-G`Kxf)6!|PKQ*v3F~$wVXzj`f28nL5*}1?V`M>Lk zWVE5etf&JaB7YOGAvtyY0e3DgfG5%E8RaVXa4%}9Dw`S6FklK}+CW}7TFg=$*`O-J z$eA@;HWPToFX1E@pGti~K(vWD)%B(S2a|BBGnrP6tyx9CTa^9(35zl{!D(&QLQil4 zs1Mz!Om~-pq03siL*;fraTAiT=2!-=)m+%t*0Gz!vVq`euMZr`%KeU8<$Kf(CCDm93I{t#9M0Yo z6Q1G_i_PTZW(av%CyVv6=Ede~w%%Uayh=`6NGKO?ZAQKgE*c~gZ#Ote*xQror#gtI zy3(L&cVQm>`9Kkh+*GK$YabNyq~T$e6w`~7#(ptG6g*~jAVErMoF9_r?1;S`^XYYIO@)H+(MZo3lM8a?B)vc}ef$)I{Pe)Q zMtq>8&awGu?*ZSTDH0o}a{qO{U-32bj7aI}rO-rtY^6#0g9sAtOiX;ZZ8Ukw(vg3|wnM zK$P;|^dVHljvA;=KR=4vjjRLhsOLxFz|2w#|7Q(}jwQVz@uw!SyMW-ogw->n);AK<+U0geXAYf&OF_y>oU0^qq|> z0W>P$v?$Q4&<~9Aq$Li}7`)%ND<Sb9O^YW!$lEH+ z+c@Amh6iR8YZx9lIVvj3<2#J!urm_$Ewq!Pz>GG+FDyRd5BnBC;(=J?=!A&11_orv zC#2J0yi{tEJm_I`L&yNe!-i)87!Mbdvj*c)<2Zq}oz}@Xrcj$1uT(0JM{j1LSNoYr zz~iN5CD6~00xgXP*koue4LzcU*431T7FU9p zkD>?B)4G~sQf6@x)xJ$TJnCQ2@BXCa7%c=X$K2Rj%hA_lQNA%{KLSO}BUh?=r$l_> zX_?%I-dJHd>R7?B&uZ>Oc>MJ}r*?X{h?p1=6s|gLK^iT8dOLr;$)KN;oiEC(vqNB{ zi>HoXimg86;_W86`0L~TxSMB-H@;T&NQ`BiwJAiY-S2acyr*j>(5*Gdtb|gM4w~Cm zEi90))uY+gO4hJ+Cetf6l&aPU1W8kKZe@r~bJecVm1 zC^_7u1}7PC_k_FjMvb>OoGMsF?9ZL;7=$t+9v7>|u?Lzc&krEVGr_fwX!W98(LjwWjGSME{gi|UNlPcD~m-GmgJ?H*$8}UB7 z8#*+f$bw0@~?<#Z7&y^Z2cth_T` zRdUanGacIG7_5bGwwK?i(UmiKaWrg&8v_boY(ZED8ywYUSx54|tc8_r?; zzm11rPfyfHdnQFaK<$Z>4^pT-m;I1afnfu3+{9^qykr-vu*owuT>1*k^Pri8vjt}w zk)hDER781N<|qq4QY{&-WX`1z$?yp?Je@KX4MR9~Vum$kGP!%jnIN_j=Q1K^cG258 zCX=NHoZ2`(7y_$wYD2Ln*rhuOny9$(&#=cVCt#gCBT>hf$5t2xZwQ~*R4CQxHjLu1 z%bJo?&>e^qs(G5m%-s^C$F4NXp1t|q5ty-`wcbU8s(7p^1GLBRseq>OkS5z`F`8S* zDP=a07ja^VGgLx3ow&dVIshq-V=6R6=hVaGG}$P zCZabPjI3OvriMP@dD$E%b>~YTpV=VfbbR@h4g>G0#cXR<-wCxPjd9c@SN8Nj)-dTTfRXI+b4E1v^@QYWNcU{ zj%EoGU+^_`COqS;lo+*RmGZEGY0R{{yzg*-Z`b7`a)ajtUyGI;hjZ7n=_7EAllrd* zWyErZ-kymq_Ij_}RkC+FqN>BHsx$AQn6{GWxT|ly3qIfx)d6GPT&%h<}6 z7i49JPufmyNA)(}GK|c>ZEA3Oh;^>U{94h4dz2%+Puz%^X!B}QgW(|#Q4R#EV$0R$ zt>sTl^i$-jEhEgo@@%E_oK%~X8}oS*OL3K)J$b^U&?qYIme;F_TYS;(H4g^ME>s}} z-XZmB^X@&@TK+6sT4Nm~QXo7TePQ;Xdr|0v=Ew59jEMBwr%uw}(`bD*0PB4-N zb{gX>6Z^aZ@bwU@;^l)cwp=>38MPy`>F!)fOj~*S`Nf~!Xw0>|Ys4UU4HcEdAof=4 zj`*)|vff+7!J)EYg)NkVQ#Te6LA5xIK#6y4xtp6-lI_wSy^X{!nr;2sE{BBxFeA)@ zW%Z|!t@-NtD$O?{3kAB=GJa@N{bsD2=l9V|wv|(=;OY7++rSpw) zPQC6O?IZU^p2vg-6JpOyD899fni$flR%C(2`{H-z^?f*=X#Fz4ZfE(U&D&lIx%67c zcLr`aUKv$S48N9_sqvVACcpucw&x# z(>v|r$9jqOnXHN^_JK{f$Br{cOyPdUmNI&_H}ujN^pj;Akbzjw0B!CC{OLuL*UVet zx*`$Ui4J)AXBzs_NvNH1D3t;I#VP%7AF{+_6zwYIpS1mEzCxATFZ?Ny%oH|u(>abT%jX!oHy%Z{FZ}9 z;w^5O`#Y&v@k_8aW0K5JF)SOSDs65$@(fVqmsg0m$5ZabPuwVqnCMK-<1vUXDP6`l zu-?q1Y8GhkM?JV^zL|ag*6J_8{ernnr4P%%J za{K96#VCWEJQI|a$OMMCC^YJQe_9uJrQ@9nOJ|$CSvI5nHu^_$7+|(9(Y66jw$|CU z&*HZ%zq5Tq-g$w+{zFB9ltC5)BjMu(I~f0_RAh{FG68whm90`9{#bFRl0D!1Dq@`C zw>&>>SXjuLEes3RMh`iwl#)ua*;fKMnFa}Sb&mTDl9uOdaIn4aD{A)T?+MU#F{tFI z8F%bXsu`AdG7fUWWjclSIq^OevJ!HRO>jwQc5coSAThc;HFp_xaEZ%yxnPkI!S8w< z>3aLk{?SjoNtGNaqprP6uAw+g=E_kAuO64vpDJ^23dnOqYNM>KhH=ZEY7xEOIBvF| zxEZXJ_$KT0;n;&OeGjg1AA~-+BSe&QS~**?JrMOCa>E`W3m!dko=1W_2S&HfCb*x? z-ZRu(DPV-UP`UTX`}%JKUS|aqukw4}2?^Jc;x6n^H-qwGUTHVOp&zVZ0dmK;xW1 z^OnF=qc*ZfTTV(_-rlx?lWj#Svu!1x+bExdUTL&fc(lJlwO1PjRh?|FnQgZ_)?W3j zz2R9vokx3PN{7l2zYk2n|4nnVWqX^*A(_n0?e0P){iwr6?R_T?NxOeHvf-G%ojPZR{6g_UzYF=~#bkoB(9_7yJ4zqYMARzqmH>BmKp`LaG4U zrNJ%#3HH?#f`R{tt|mI*U&Hvz@@vr`3*YzL+W5a+x@xXn%~T3#V$ z17bI`%yDX%^KKkH%emLlYuIhl=_(;%-G;Vf-3_L*=*mF({R_eTHxW$wtN*uEOMfT- zg<$^Y5KP0r5X`?2%)b!KKhZ<~LNNbAF#kd@|3WbTLNNbtK`?2J91=z^9%%=?g44}R ze4Rb0z6n4Z0e=LrMF28LIVdYDEA)4vp$I%U=oNO#p#S?puchVr^<^o&Rcxn3t*-VR zXguEiVCzAo0bfC$S))QU#^9hWd_!-WM;Ghfy20gGjx33*{Pe*Rt@Yvs|Binz1d$#c z0I)0iVG#7o_|G2+0dB;fo(i!Vg7^}I$NpgmVyt$VhN0}6!R9XztB95F>+AV2WpNhD z^{4U(ZNo%GBROb820ycoej>Y(9+P$kn!`vnk);@^qp2guWh9jtZYXXft){PHB$1eB zs9_|SuVuv7lWt^)N;Wd!?%~YPhbxT2dsuahu@5kVd|KqegkRT73J{_8?XfySgxHV&u8(><$yNWso$Tm#SHjbVQ@jWn)mX`NpRGzLe%}+$d_w1>u^dK$IE?C(miWZoc z`a3_7F0c^={*adUn~jK`mWSDFO-sxB?j%|@;DaE0s+q_Yn2GS;%|v*rnaG2N=6O4; z=1C z;Jefk_v9Q}5?*Ow3MnEZGd6>`R>r1h#nF@SJV|ANnMJ@!p;II4}Pc+ExxfV&*hzY5&_s{^`!{qOzVlGfg@4 zhrT0z@7j80hadxyBCm03NQ|siuPXDo6=dul?jg~G8-sTG=79r7P<@D}BHZj!rUnn%nk!GG>#1Z?WP zA-rVIX_b5OZ{aY`#`A?$D4k(*K`s9RAvpna*IX5^<0th3UkLRDjt0vMZaV)&ohWrQ zdO`UJB#qE(k3=eCKD7r;?1fediZrgGs2VrVBT%o*vHJXxg4Jo#G2= zUzSUV;Sk*uF$+JuedVWa(UOqNCL0AlYsO*KX3HAsY_1id^4WKlA402j&ZV>Tq2rh# zp`y}k=%o~%5!$!3y~v*}>kDii8~5&4xEN&XU0siWJ#xK-hVw6=$*9w@ zQa-E}=Jio(kC-bFyq`6v5WF+J6yIO6>r7C*mlP)o*Twb55+xVtoIk-Y{!ZE&rrV`F<$6(Ph{9^=9y8^3 zQccAb3wvNMs(Gs8CQ{32XM2_0m?GO?^CWyQf{zDVSagJ`D;0I}XSwV{Sdx@kxW~Xt z=euWEK5d+0eHf-8HK2-)V{KaqyY1BllhH2fj2oAWhK!4FY)X@%p4+{@W!!yz+)0kn zy4-M%APbEu2U&@*Z_=3=VLn- zl|k2w-&S5!osDpvJA5tvttX0jaUgR7-N(Xv=??elT)nF*>IhX0NlqIB2<8-OEyQ3< zSw83S{Hc6;`^bS0lR07!K1<~rUIi2YZJVVNLsM=@T2nXL! zesL>CV<)&+jdM3G?dK|N;hW%iwF4ExsJ64d!vBRd|6wg`TmiPwhrLl(N!1H`B#&J! zrB`>`xNqL)9GT{+;mEk?F}eBkV*BP4is0_qq6fDt+*#m;A}8z!8hJ&Y(+!4arzW39 zT{CIcdEq5Sx+YfXaB)SouT*yK+R&y)`kmxgxTDJOTuOZbYw1;~2C|(J3`2V4HSV1- zj!}JvXU-GztGGBdAt^^_yx5j0sBeEuNxe?f!>a)hj}Ib^PxPnF?5N(#>@R z=;NKcgKLE+LwS~X$Exe_dB3y^r_Dn$nMA{DNN%B}I;N9xESAyeth|B#TBv8RT)-hy z2)BR4WIqDK=+Opc5g=yC!B#AxtUvo0p`O7o1c$|4DfLBj=8UzOYImHi@``U1T@G^XCRp-lr;ZP>rg_!nyb!x-P zJ@b%;SiOuMz&7$Dtr{(Fc6d~xNl1DC)vEEp5MqM=%f_!Eo+eW=w?xQ7+6D1>@AMf#gY(vlQ_OCf-6tp+XyYGq_a zFOGh2DTMon#Ri7|jZpyu3X(t~Ge|KRq_uJ>Ei0aGRB)mi70LohRPQw{KA3L5UNtJjW|Cuo{hDf2 z$V#Qzuj7GHp|}Fruh$tBK;1+$Dy-H`t44*jy6Nv$CA|%QYdjb)S9I*4S0%#f5LS3T zk6fX+2cH-qx%F^Uoa-0LZH$Yj;M=Pj_fZma-V#JaC6PZ73(v;*>T_W{3wqPTXXLEDiN`w20Q(E_|=WA z*J|p03B6A{PLlcXdpU{Z8+E*AMQ})@w`70`Y zK}+}X0)bj%Ixi7%B;A+qq&*q)-FT%oHb2pwiu8P_Wr?*U3i-Ri8SBi+FInDR#CR>i zcW?bXSH?zyJNu5i7<(|+llinN7IMThgdXIXNmmA@J`|3Z!kS9g_+p*sZ&zYer+*&j zc`$H;a|e@;;S`A&ANp_)oErFx&rtH_3GIGLIe=lcSjvn)J6?zJJGpqJnsalKe>wEx zj>10Ky^4MX43)``n!JoiGU4B*wFyN9A8;~|-h(z7;}R`*sSbVRm6IJ=RRhRY6aI=t zJH@-7-Ug(wcpq1RB*jR%5P#j`RZ*y7P(0u(CE;2Xhvr40fKDB@ux;<#SO)cP1>>g# zZvFf=h;hlQ@Tb6{_cErXmrQ5w_othjq8xqpxjeG3=uGQ|R0eyt9p@M|9bfLrY(I1f zH=Kj(>>X47!gTIu){&@fFImaz0c_gwy^b&SzP|4LsuiwrBwKkY;)HYLoa@EsnloJ( ze60=Np#|oGYgZHnn|82J-|ec8p@5#!DpM=H|#)iCvM&N&1Dz4^i9y32&~GICS&4IGRLvofd`lEX2Xv!dp+F4@b&PyR#9W4M~KmR zCv`T$(B8IEqh>BinWnoZaIOrLgha1%r;JjIHgcX=VsJlXCoWA~y!w)reY|-Os-bs-?DZJT$ubC?Gsyip-o*A<4ka!O4)&x_xVX6+Yg(3>>4DjAO++Vt8F z5;X|osTmFgDjI)+4EKR0!f2e z(!b&XZq|UJRclX{oohgx8AHh%T`T@ZY{WcqLy7HGFUlIZs$H#zYB$Ku^^)~M<+_dJ zeSCwi*pw&Bly12&yL~Q2aR#*&HbBz7 z9>X!SgreL~D%vcai;(HDCENO4l#$kuw6iVUJP{LQ9ASZ1vwu_IvOlP&`zhL6w|LjX zUO!zy|4XTL*OfW~g9Lt+yR!7A>%evf7sIRLN1Vg(X+K%tyVG=M#X8YeVb7@-&0Av? zZAI0z4i?6jXyk`lUqauIycF1iZ}@a6bCXVk*U$1$%F&@B@*|Jg*E86$EH1u@Eb+G= z8RNnl*$s_Gkk8F?t%LRoMA}wtnU05@`TVmLDbG>)lMy>_#`GQ^zQI;CZw0K!Gi%`o z@7kZb2k-~vjY`Kj2D&s`W6KLB%W8F+RgShioj1JFr-i7M)m5@|ezx1i_kGO~FJ;%` z&%_RN6xO{Ov77lkbnxpZhOn8-uHiYCgc|k8?MSHz``yZvDdQd`+37qsx3?va-7|Gx z-3{KVxWMJMpFwi^qY5;ww|BSG(JDf-AGH7CZXEj{Jm*C#rfImueP!ywu_HaB2$r82 zEKxW4%@bOjoMr>pOdOYiA5E z25F2j+4l(Wy_uEK#YjZK@K>)kHkd^1%2QJ4?zwdG+T3vW> z@;Lg;uaSdp_#Bg96`2PCCfZ+Nxq~hKQu9x8jlM20KX(40p7}IaaEsQR_aAOleT}`X zo%-3Q@DtvP<7r?tZ-W;^P8zv*rnzMF*D;Mtu?ta@MGkDHvkCgEJ=-gl5_(`N5 zAN|Rh#l3vOkION5tYBOo7nMeN)?#od>5O_tN@ZdA(l834#9p*n-b}6O{E8D|L2KWQ z#ZBHlYBHNfav_1IJ@NdCQsf2J=gu%=o_GNs zLvpm1La{kDlxf^H6$v9h%tSCr=54_wonknTZ?wEdxgQhT>&TR)Gn>wQ;(g<&$MZ~b zi{!5S9f7+~Q!re!N*^xyA6^t2bGj>dsXA1z!)bXVMO<`~^QVNK1A=$5g+#9Ps6A&_ z*g&z|@yl45&IoHMCK3vnmE6xnY{hN}bFk73KI*Ok4V?*r$SKop%11x#_n#{qtlP9{ z`n6MZgmEiH!|z_yKF7JCy+xnQT)&xL+?2*04w>6%ORiKoUhnn0yL{}_hm{Xz8>fdv zQsQqYEl(L3A!DO=y}&PiaY(p|?Ye-5CDt+uD^)PjoIF zzF>G?w8-v^`KDh^OxAM}n}hbZ?Mpg#`|*=#227f<`>vBy%non&U6pzK;L$VeY{}bZ z9XU#{dg`r%m7F~r$xlqL-Yy-gd{f2{dfe=TQNSF}w#xoFNwupxCa{%P8I2g-h=&J+ zWYyzLjh5Y2yUkw_5-=WR9Fw?^hUG`30Hb zB|BJo%4r?my7j{<)kWfMhy%Tzq-W5$kZyFG! ziu4WwQl&`f-OxMIK?I};2&gors0gTl*bxg>uz^@OE1(WDd%k_%v-f;wpYvVs%sMn~*-?gB4~1 zta6c2rjah$ksKY7Fp}c_Rd<+U%#$3_ggd&nz=wkgIF5?|$dKLs4y>lkdUDLWnc#bH zah%gIeOw$5Q4^j;wVx@3stqFbkw8^R5RHkWHiZxzpa?XRLPNX=6QClVplp`FR2ioY z#O)f4-#^b}zaEdSOt5P}n-(VQ7DsD(9L`76?ah+W)QOjILF;=YC}LI+iTCnoRCV#^O`*#8V_l_5=i=IKW#u zmt2KlKhU}>k&3-7Xji9VDpgi$dncx4Y!{X(ZGT&;3!nO&r=-4z-GAeC-g`DVQT`jWz)oKgcom55x**$yFjS z`6SGNFC3rhISzWFP46&Ua{6w#^Oa>~vp*)KS28Y62j8O+cD9D}%(F+~j=zM`OG5Lb zu=%jZijOQ!1y{M+@UT12;~KfyJ#mQE!ad>8rYGV+P*Vq9&w49g{&FILV%fuQ8D1M&`K=JX8OYy-R+0*8@UWR2!(rDHscp z>6>Gxt(9TZlTVSCm5!@@*)F@E@$~KlUzAy0 zL3e0*y?wzmrlA?rcrC)&V%IDY-0KyZ;Q(4HJfMlT`6lPov7wb^!BI(sgjY~sz*xd) zG=2=I_&Fo}g;ax_Rl}-PBX90I!K}7V3CG}q0|YcjpTq%jdx{kIBH@}1pVYl>HdP6s zm$)i~EDGOgpzl4=>`?UY&e?rq7(G|5JgC@`f6U!$UhQVwp7qqdUnkIy3^hA0>(4Xq z`NXw*&Fe5?M4jgD9%SF%nN;tUoU`lo0CaJX7tV7in8#>1huRH2(*a3CyxGEuC-m3rIfx5S<>9)3ss`(KOC0=rk zVD?9yqIh(Cr;U1C4*(Tap3i-JnM6c+7kB>lskc_B+I9=CiaYYSyQ=>~M> zy%E#%r6Yv70B(16@SW%aCH~mXE(DXUr)@VhfS3`_fAFhTjuLAgoQWjWtzBb)8!-s% zW}00LL3Oi~+zpR)fh^B3+N`O=10auyfg3osQ*@I4!qOEhc=y)MM^8I}%SIP(xkh#n z^@+x#a7m7YKpInLmfPprMRk-DPdnYUn@Bj|$Q^2{e&Dprf&HTW#Lp!MsDYWZ{hycm zC+IxCZ3_1<2K7N%-FDUWr1Z&LzD&GSVtn-@`m#5g{nJH@QGFf@%orf~ooKx_VD*Jg z;ah}x0*P_44L-lx4TnJQ$@6aRW`*zo%QHy13RGLGlChDAqKoAmCUu{P6+y@R>~QQQ zYv*Lwev`C*hp!h_H2N(sH@MJUpwBvVJI>a8Xfoob<>?{OAYQo-dZd9CPen zZ?~SS9R*a-(f6)U9rCAPy1K8AkD*Rha@x$&3*G;XeZmz|5r(dmw!Cmp#ZFjRAQcN^uKRv=t0&x`#b1Y-x z9bd8p#N^)tAW%okf%YlI?&i2QCEJw2>^kY(x{(K;{8m+tLRXJ|&gZLt=F>mx^=&pF zVe^~u)qK{>d~fyZLrrz1mXbd0ZIdx>zVV+U%ob9o415XAXjx6)k6O3J@_i4s`G&C% zH$C=BnLT=2#}9Dui%Iaq)%cyB_7lJFd8%vX6Py1UwWRVlSu0*Y>E_vGl58grCdDnx z&s0eH4tu!f^g$AXwksnwTJbe8@I=I1Ztq&}- z3=dih(I^P9?G6FR;fY+MeDy(oumzmhLQz!kr;-5fq~QJR3r3HFquAr~eY!)}{EyEC z*>o=`&D`<=_OD*;CThUGr`{EIg%FE7MbQYrWncYVx? zx>Fw!FdlPB3_Un1!iG3@B`H#5EOKql_&IxQ%Us2G;YW8zM;?epNUKF(wumlU;DR9( zUKi*)xpf1DjTrkpN3O>sW$16uS$-5OMk+2IG+jhtW6$c{r}cOgzdHo2c97Xhn64#| zp@k$cOoBr4*^q$7Bsc0JNz|iJv=SaMkZ{O85vYLS&~QT}5I6=z03+4h_AtI%CKCPB7MLO$cO4v)D z!I$|B851)pr_`2D@nzQbSe4+@9x-S3`=yDmzUmOSx^NNG;}K*Y{c3SNZBQ-!W^(!j zN9J5u`ke;u8~Zb+e=yzrk$$HIb9X-DVZ-aiy>FN7-#&|e`=b2q%ZqPcKY080$J-UY zcklPU`}l)%)BoLi`MXWxyKfKPJ!yCcyn6@Tw^D^z+1S5=IJNTGZ)Lq@1+}@thh-0P zWDl!+O8;;LeQK3!9}~Zhe@*3nWWeg$#Z}=W?`g5p3xm85Abif8?*)&(m*f9%upce} zB?!=C-+z_)pmBC}aaii!suTn1!|r__(Xz@<&6E+?kJ^_$B9G!ZYVfGakH-5x!5Iy! zv<>O7pUf|P`t)EmO8zBHU+cBk9;D6D$Mm0h3(8til<^%6i@=NY5wFGMb149j$S|OI#-A*z)W-?)NgL_s)KJ zdH<^3rIj{D7F$Ivczczoz%_EZ!zwoK_+Sy%m4Gy6%xwcDI zTiQu>AoX8zrf`7Y$NI@AfENMp-Q`lo1Y)RC0g5_8Uz`m6y+eT^a=F^op;{?jIBm`ZL3p0mY~ z-XlrU@hz+l9JLSL<-nRG!^|3J34%inwKPZ3#zAxvqMk-UJQD20AT9|JXuJbw7(<>7 zwXg&)41h2*ojAblk1Z2t3?k5%9SyHF(1Os?A}t(_^jS4uykH)*W0ph^T+m-QZx9{` zjv`W^dz1#Hf63vxP16G*djBKp)}1#sb>h~r&H$)!{kvhEvvNdy^C1C4OFQuk4^|F< zBJ|V?Jic>jks6sK}dW3@b!EN^7c8Ak%-e5$y0|*%0 zi59d?$OawmAUqIcI+A|F13_|NZsz|}#N*Bt{r&aNrESO@t7-f@LoPnh5iP`#Y-xe6 zmDGxhXs7l!tBsM%(qMRr5E4fb_$9a;Z2&m-C=e*Ym~x1~9R`UMh31$MXoMsfcqP~l z+iM9(aQelU9w5+4v{%WG%? zQaTjSH;C^A`|ETlX9n!y#NzZ+4M8F|kz${*36iv@Ft=5001xX#}6Oj-~ z!B8h;ZbRC@$4_8NdPG_VSnTvCgH2-j6i50tfGwATm8QN;xz?q*AeU+azwD-r-QMH~ zV@WoBX6i`CYI(8TweT>X#a{EarypF$o-UbY%P8my`1E_m->TP-AV9d4RVAcPQ1ggp zh_L$y01$cK{8Xiaql5^PpuJ)+7L5}Cl8ag0FUu9klhtCaB~UA#DUF~h;?oN9(mvNs z3K-FCsm^dxY3!_&!u;L{xhp(X`TmX~t7{KI3?)X`f{r9$x5*^&(C z)VGgK`GC%CC4+0Z7mrM{sq@4bvTIdAIr)>4(98HB*@SrFxM?VijgS8bA0IEXZZxe! z8e6in7UDPt0wsiKQ5|QBI!P!JDbXq@FD|t$tgVW!si-q+Xl^V6ii8+i4iMYxd-Km+ zs2;e~8?xh;vHtgx{)0=p^?-NzxupMnTENjACkK30XoAlq@RCN>9)L?Hv*186F8LocBj$Q+g^AbHgc+$Be*q zGU!_YTdpY&lHAPL-2Yt~HtLYA>pdOp+iv)~S49l2%^aRg@7}Q@L&s;@fNf0U^LvbU zKDELePGApa1ULj~NkAMw1fZserN&`Qoni&i`8HZ{OeKfPLMzMwD&7DA9+b6{e@OM= z0;^Q>bHr|wj;^0?T@?82mp%?I<*$c4xRju=63_r2>|kfL6$nWMaJHbI34E}F0zI(* zd0S2bdJ{|!=z$H!F0P;yjOgec>JkwRiUv+ZQ%p;`esPDxWBj(<*Wj}n>{f9}%Jxgo zjZ8@jPf4d>lru8beW{!sS%_O>O;&2tiQ+uJMtgD+K@t zNrYK2JQ8J~0-VDIsTitT9ypMA z0iF_2y|#_GporG~tcHQ>{-*;Ka<9LkM4yixl=kMyGyU-{s@rjIZsWBnwBdH&SeB zbX;a?TvlvcZt6dEw^Ao<-J3PwIQy?{+`x)e#f-2(+>k?u9|G5RN~E zctQ8hyM`3gDBUbUq@cJcG{{{TNG2SCN0lV?vTERH-0Zso+$d18zN zt~gj;2tPK2HNwqVq%DN~Sfmz&jux(!NF3@P>9ij0bDP*1eYE{!7fk=pBmJL+QW*X7 zwFf@W{*6-jM^OqhI~EvR-EB1YzflVRJ)7129g9lYz5l`+{Trq5&!H3|0dI)N|7z|G zWXx+&@;F;u`JYgEa6`ERD!&!&N^LiGgZ9ebTB~iS{Ljr2MA7k=)`|e?1ApV>!7V8S z=L*pR%~lkmJOw9j1kRvs*@?k6Zk!$%nr(sPiIQ4GNpK8ptBqUH&`8rzPt(xor`Zam zS%H&iMy`}s<^h+Va;vR?4r?3vJKUDH^pUqYx~;eZLvPS>1xDY05nXK)<&6|o{vgV4 zji-UZAQ+x+2ZLY(x80T{7JMaxP1{?#D;+RzWqojKJk8Sf=Y-l3Gf)Hpimt%Oaa#vL z3GKlR_aE^1?IATV-v28+-ql76G+u$t*yLaese!TOx_v+Yj?}!j^HxIUD9}9E@W7yzd0<0*C01M>D9|yM)O23EKe0~YA zf>O5ySSFEKlqACzJl-@S(=I$7+;dQRvMDC4cuGSyi9(K#_+`TS3pO4!RBXwxDA@R* zxP)VgsmD^%j#Ij^6G0gk*ou8TozjZE!-Pc{VT(=M9$||mWoE=>$N!g^@&DqU8SL;L z1vvCuD+c2b%#wCvt(C(`6gj#6?+))3rk^&et%Nu`%5ZD$OwM_N-qRIC%c~s&<>Vdp zH%?JHybU`Wra?KmLph)u5dGT;uICRvljVC(fOjJL@nE%E`N$?sRzEY&?9m ztJyYvadDzd>TUD=KJn$3tXu;$@P1M6dmeYzWF0SI>5kqqvJ^{o&!nHErFm;OBr;m8 zZbUUI;C8(O0h8#G-)MHm>kjm{c z=*dK&y*-qH!8%W}$F47ro;qQ8Ih5C!9iD9f;VC<0L-=@S&McnF;L$MSeyf9gcs8d7 zYy_3*dPzj^)1UVA_68HCFoftW-lui2FU22EzICWO#&{5Q9>loEi}b zLP(fMdeI9H@}F`rCGu7@1=R2os?3Zs4!mT0is$zzq#`&bDvD}zUHfbR!|@22C>`=5 zr^N$f5|zkO9>I9|qch=IBqIbeBagvEK%e`(e%u72Utfzh4l_2GR*{a-Lr3+Js*>?I zrI#;!;n>r{IdD_Rgwo@nCrI%l&?yn$=0lqtOJp6k;~rIMDjN-FPJ~I+;x%H`h^^EY zCSIPUlCKm#3VVE7?9{aWe6^OqlGuIKe1jPJ@b^?4NIdJ3I|6{9hu;KadhHd3p3r552@SU$tzYqB>~aigrM5 z328jVvJ~~JRc#~v*u#0*^WnX^R&km=m5)gx6_wi2uUS{+hTUYp zp&9O0g^YLE0Rm5O$E5C=aPj$^QPQP7y6H?!_r>+ToL53q>;m>0=bA8|>X-wa7nDI8 z#^q5OV3dLJ=Aeh;me#J$nC#;{=f(ML#ZYZ8QzQ$^wipc@X5$-C4Ine}_) z#$J$~3+Zok9U}v%8di&r+%=mT&9@>Wv4||(#=P?de+OAXw9@1cJLREANU38CF4)(i z&gV!TXLWwSDk2-^+Wq~9^{FKes%=(~l4#76Js#3ps*M3L$ObwlxOFAHJM|t1i?(P^ z_yF?lBj5*bgI{5e6CrZ8^jSC)?q!t&qlNgX^Hdeceh*z)rJ5_TuNl?v5brY{f3zEm znNCKfJ0#d}=k3CK(yv(|cfzshIE{Fy%lmr5Y zKIF2ZbT{S}oGztGqE}8YGic03(sNYq^NsvwV+2$Abh`cL8O|)z8v0ksWbFwA)oeCO zzARMWYrw1B6}gk*-bGh+hFWrN^YCzYtLuNlzt3vZeweAvff7$Ws9tyvn<7|`9(Hxk zp=rbO6AY04iOzIi(hBK0MK`Y2X6hw%ntILeCXo<0h~?DV~R6!+>b( zMBMA63R6=fqAI;9`?V_s-q(oXnF;$p_b`_;$UpmHNIRu_gX?BMdgEp)!?!x=bI#NLWJZ9k({o6!UP$yoONN#5Rca|zl?a8e16?ok2aM^b+AFRDo-`b28rOW1q*zxWG(<+WO=bvRUaWM0KpE!ICCIf zh9{-voc8tINCi$Ghy!fdTSWay;w^T`bJ(26V)z`up z>j{@JxT$9c6uyt>`?M>rWATN8|6A7@cul3*S$$&3;pWS#6D)1;TG3-XCE`XcA^4@wia`>^+x9qk4 zS~WqhnAgH=H|H*PBhd+3oDPm|+1iY!p~ur^o1DnkFf@Zy+SV#)VdFc@vpCC*a^&RE zu(tc<@U z=^u%du*T6HE-xEr85jImqZ$2ASoA(>8bp;^lBS_`(8B z&!Mpvtr#HXn#P<25AcG)be%!!v=r(Q^emQysHiCD=;!`9QX7 zmz0=)J2SJDmihmO_-w1}9SVMee~ZsD^ZqS9`#(f{wpACY{&`>i&n9oTNXsoh|CFCp zM~ZY!@sDEfcBOZ_%=^2>`@6skMt;95y4&Sku$H^Cifa-ijx001+q77gu}$pzo4k7d_hpz-f_C?MUL4pfSSeRoB+Z$Q>E~^FP=3zh43y`FW)O zvl6&B{(SxYJAwO8vv3!7EbzY*xXBhes5D(a=gUusoYK}5`TIsHT1U1uArgvcQVo8S2EEYY_b7SR+KglN)GWC$I5Vv24NE^ zsr?gQC6E6*{DaXJ!D<^{WeI{GLb0}6rq=_`VA&1K6@qm9zs(PVO@KyVla&U=0Q=iD z3AP1p!K$>uR3HUYwUq}1!EL{6utA^=b_>Zs$@*FOQL=v9o_kPo56WSGN$&NwQ+`e^ zR-oISlH>CCp9G_2!-(QGSf3ezcCG~z1nXnQ0jfDnanireGm@Bd74cST->q;+iXkv%qg<{s1hvFVN1oe5lC0B3eujM~{Xi*X5~Z_F7&FQc@t&B*}+ zB*-yJIYPyv%Jk!`~ctdQ8n6BL#o#1v#o0<-UiS14!RBG(i7OL=cS#%?ki% zt%BYs;8@1c2+6d50WCUs@PIbzUCL9Ouu@*Y5KHmWAUdicewxPI86fZhqE+*S0h?de zgieap>5~z}JERy?Xp|s2qeh8D3RCb}qmisc$T^DDvp@!{>jko=tP`+H1Hu`3z-&o)T%Hq(U_Q}q^F8^PTRgP12{5hMf2}HMK%&0&Bm)6Q7l7;Ywa`*i72(~aZzGk z`?z4?GQvVMw6Ysrs!3)Kb#y#=`174Y(~ODRp@n@{7ax>;%s4ggQthO&0N_?0Jm`!a ze0PzRJM{?mu;Yw&P-f{|B7X0lR9YdG!x|4PabeMhcC>@1-5k#d?a{ysOJ~xGccWM$ z4t4fDxPORUKl`?XBfa*ECq|dFr{MA<opHxB>+7M+-*~bURV-KaJ;%2LFzK<2nD|!*fExLi7Yw;lElY-NEVnUsX!~ zg1`dnrP~NBO1%_hcJ3&d61S?RAh~l#)ztV`)pVPGwOu#`8`HKCSlWNoP8I%IJN<*= z`LldV0eJ>(_rp^5LtwY^Pa*eK`E-kd1#XP~T0#9Y<8xcfP1z*vV0`{f5fzkk|3YAa z)l?Aq`49~8OVq7O5p^fx|ERU5fjcw9kj$U_t6$|-vxp4a@C2Jb5Lj^m+pcbs z&z7q@2qcDrqHYQ?bO--xXT^0()SVjiv*MZnR$POVDEzDKqU&F{p|R;Zi>?X3`B%TU zL4UiC`BRy6hk<(s2n#HemKt=_nIu9|aXsT7gc$k7kG-XDyjeX}uCMw-SmWc;bmjq9 zU6a&Ks$Ns7f;TtWsUNfWKb!oHF<2U#V0jB&58OdS9WWHRpfpPRDG=d@)|2F z_V|~D_h~DB3)zR-iX*v0-yZ50Wq5x7?%KP7fjqi>FEAKGFK>;xxGXYoX)t-Y-gWH*IMZZbA2KkOQW2 zEsCv(WE;Ltmt2Dkay8y*Vg9KBu^c&2a4}E43g_3TjxMpC)nh6{S*SzQH|9w-b|@2I zT>Vu|^+X($${$hr>f6w0M(!;^YJAH4j9yh5`lXR#$bMXkLpGN%A<3CX>E+(qy`6*h z=agdLYOfkLk1bPAnF}<)~<%Psa^i zZrO$$HWslW=VUp51&#w=mMcayJeVEoj5PNr~{Zct%heWPYV>y>-J{9 zP7L#&qu1`m4Xazy>V8CKt`nN+F5Zv;a?h9Skv;arZW$Kv*lsTbcCiOH`ljwcW5zx{ z<%eBg82VoOPnUlSgO{k2Z>ehR*Tj#1!o?~a3{M53~TC&6}zEEW8 zd(?T?kNYib`6Bl_=$8kfE6?wm_@}y;JaIh`KIhD5S6Wa0qONy*LGi$?iV#iO{Rd*9 z%MUh*V!KyGTn+@ma5U5bG!Wq%4D3qGkjG9qKn*R!XFf*Ttw4L<% zBk8q3OcSD%)6PRog}Od?Z3>isyN{%Gw(uQGhGaLa_eXgUIQ$=L``SM_t-B7;OvV^- zQ@6wRJgP+9@Nh2bgg}G^4E6&45KP{fHqLVZab-S9B@sjoq2tr+m2NV|sf`FuFv^^u zUlO2-osd2B&g5LR0N~{*$}ynBPFqMwS|SPbj09wUZFoXBbea*1Y0E6Wr-vz+*Cy?e zPlXmaF^V|pNPDg3MZ=f&!mUpc_!P3fTGimVzKrQhdSvJIFEQ1Qk9$EM&KBb3tjZhGlsC{* z5YR@(9x%hp;JeT9JeIZ5r#cE%C;C+c>zn5egoMN0BZP#ygp{O`BiSYk~xw*kRq<#)Wx{ht#gh+?dQ4h>2wQwj|eh zoF}7)nn{NHVe$1_nAw&)QM>GV=uRG|*A5s+hD#Hs(HrwmJmBiL_s&cw(>NfK6FO`U zNIdG{W@9#f6lJ4Tbk+0{G=?hO9~a1I{Fqi29=X=xPsLMU884u!4{3!eUo*`>1&0aP zrC#5o?+F*2H@o!hldSJPk2_8e)_S_G2jpV*3{vf8Z&$H#eOyd8tMXuW_-jvFgGT4W zA3s9*A-ZM<=7e@TVbtQ;L>n^2covxo)VgtA)v4C67oQKzk1OgTPTpx)N{ZyzZ1fgY zkm00XT1K3Y)j2ek#Xx|GN5>qkYZ%;HZ1Y^MK)UIf=9uqSI0) zVYLKpJ-0AxHLje>eBrIf+QyuNpK@E7^J|k$%sp#9zYNHLFHax$o(WG*xHhh zOS>^aVw?J(vevg15&f1o{Jyl+*L^-29{Ke19bXmX5yYIuWMEHE>6qLpUR|92v2GAoGkG!}%NZjs5eqbKH$V6s)vx(*=8DYG-X9Yu-pxOA5>vaw>mFiTS9Yc1?x^IL zDWhkQ@+xQd%8jB-hrJ1YAIjdnlsr(G9@YQ&T}{u*p^H=KT8wr;_lg)I>D%2I*}3yU z_Q4PD%$s-EmkZiS-poDsdVPu0>VBW-gT3qB=(}IVc7nX@(7d)Yn#;RH4Ax053gJ(lvK9iwB8=BXDfm@{<5?Bv^|C z6F+_vJO9WNLPkUjpk>Jn?qqSs9zXxAKxifF7Futoh2YS43JfdUzqFQks*AP5F{nBuyh|~_6_X^d76&*asv#`eHizTbAIBYr z#IGmCSc{`=*Tbi2fFnJOjtIcnDp6%V*|aLr=S5=Z7%^Eb$TaPVe<2yknf=6K(ve=RLnP zq?=+)LV~j;?qodV$b{oF2UVD!&7TY!%l_0xX7ey+EDFvL&tmb+^3TfUQb+S3bNG!{TV-R8c1o zaKplfHJ6cE4c~%f`dpm?%gWf8qHVkrF_#o6=Xtc}QSjN-gM;d7kRZm)6;!Y(y0^o5 zx|RE71*G{>t zCfTd`J+3nS3;LEP_w1JdUcqYrRjzRVa&|H-y&kP@3dfnEJ#?T(v`owZT$P+|UJ2Rj z57U#xKmhn20cWl@m~LwgSBx15k@IKDg=ayUUC|~RHQF$^a16kdRpV!afvmtZi1jJ4 z^~ZbB4w7)|)Eb>fwN&_e9~=1oRE()cE$=3z&dIP2=2)lWg!Y;^lvLc{MO`0A%aq8) z5_udQT3pYxT2Jc5m~z$g1~isPiZv}XQdh#iTYG9wL-GK+uH$FA4B1+G&xk|L_+!uP z!Jp|#J=5EJW=Nyy`~+q+wdwN2naSQW`=^S=XPG%dcHcPO%+J*PFp=eUv19*2vwwi8 zB&3Bcq4`;(XjDGxYz)+#33hU&Wo4r!3qU-#Im@2a@@k=Fl?#L@G`;OT``+-Z)aqH_ z?%B`BTM;F#w0*7gcU!>+51P9Tv%8JOwv8>KjiaQEtFMjcZX4g%HUaK-!QJh`w(X)3 z?cycvnuCneciUyIGD>oHfckBvudTA15gp1U9U6Tdd+v&;er?y}?j-E))LiAP#JBHz z)vn#wX?(X+VvtXyq;uD+PIKFHhf0{LpSPJ^ZMVF8&i?B;etnD-4q1Gs(Uz{mp`^>p z`qVkYobS2Ced&E) zo9CRXu$xn~1p47_^buuTKi*CDii>a%EgrO}2IX#@X7AQZ5M%^3IFCFP`^!=*m^`&p%s{`F_2fFKA+_%KELM}(Y zb=R1)ihAG8cwWz+DqzIW?uwg_;6g~si}8d5k>;`FL%O)yvh|co{kZDnL{qb5e?(l< zSaMjC&u*(m82*a8-B{u^W~5#o!$s?0v4wA;(kbMi{8I!$}Z|!b;j>NE_8OlyGo)>`JFubwGGX?c+2Q;Us zo3H&$AxUwrli%TkzbL_$dFu$JYX+47YI(f0Fp@-bxE98nJ6^OMJk}r!!VV56lV5 z<1}dvjkoKcJ5)YiKgTF2Dj#r+A{36j(n~ur8|T6rt(-)9eGzP5iCa2Tb`L1m`BU zsP`a_!uA*P{%5jpOYUO<&LLZZfP3xjs;QMF(bmpUk7kdV%zWI5)|qd z68IA42vGME3+jGEW1Yk^d?j*^ZIxcV!7N@>93_j#8lS0$CQ$Wif#>dX2L%oF#34!H1>Q;~JoMT7j70hg!h=K|0}z9z`eA4bL2 zOp2hX=5a``sm-GNddGOD2fb8PgVbEd-aQyd6O*0#a&Ang{7kdvE$*)GUy2S9-A-^k z&rkst;5exV1EOdt+Tz9QQTI)5GOz+ma|~>lb7(dW8qcvx{Da`?1YDc=*eRkUpSulU zIF@})+JO}jlLmX-;}8dvA3K;jyRtIOs96(IMUyEnqz7Z{M|k&l!9HTtktnm?4dcQ!&dFQBsmiX{0pywmMOQ8Aaw- zAqJj4n5IJ2%B|{!7J!hbkDq=Np8Lkhz2t!$%s{wQS796mzfYt&m8ztjsyeHkNN%V> z-6~YIklRd7u9P<1FoTbUJxMxB&i6cnv$j!46Y)mp3d*2r#RY)W zu88go7fY3_0r^avbj)SZB8~i>M8>_}{0DH_@yf|K%)Go4ZLb}cTor!trHLT?LUCFd zq@R?C`?x>{T!iwmA8K6S+mHeV;`7oKl09LP=V|w&-JHaD`%6?O#bIp9k(D%o3YqFw zj#gL8W9KcGP4LU(63n@^swyh!%-v8E+=A~h{hQalAkP{EsTD-y0H@Ei>kCQ(t(0&r5^bW|&b85kx}Ke|kD*Q}dKQhU$fk1CeTP z%;wZ*JY=0%izj_uQN>4oE&II48U8AR57taBzMpRC_ht0KKxEg`Qd=2_w0&p}5?)r| zx3Sz%-?H(tsr&85tJYDOudh4j_-?B9Ja74`+O;-0{dQoDuLpMV2>jdI3tDPQhSG&g zrXP6ggZkgH>j0w)(>SWnsS-meGcH%%;6Ds+KKEntDn5MdwDFhKv?v8kk^LNilZ|eJCzVcc+w1FN`rjvi z*9RCqV=gOdFhM&!7G*dFU;-+LJOz3;6gRZM26r z$%6Y@!Y<1@TPLTb6Gm#45@gJ*jch01vsL@Xrr2Qhtta10_ZzQrTDa)LbXL=BfdO{3 z4`K+@PCEtYIvy>)?V5qA_8NZB2w8+*hwyc+il9?dDaFZWz^kTX*? z6$Y%2x$iMK$l(_>%>4?kxcjd49o6MwgKrQAI3_$#fDVeKbrsh%AIRG48@O4zi5Q_; zR%en$nkmKS&P3>Hk#V#W0(p4xNSbB$SOMA?`xNo2A4Lr~VV4^i#}`#-PY3a6$F$_q z0m30QM6J2#ji}k|Q7^xE_bWWVP#< zORCq9Dg->W`JQIfu`X5gEwYx{y*$(66&q5WbATK<@R!n zjRq=6*AN~G^T2#>S9VeEta;P@&Z+Y==N@?emU?T? z-OGyZy;*r;VFPk$()nr!fz5{rRbvFFw!VupcRd0u4N%8%k5Tyxz;ur&(+J=I-6dVs zQdbw>6A|2t8zE}RkFL`km(pJ}yg&J#RkT|^z>XI}zPflZb4r60Y%Eu=?pNU((leRT z;`sjjRK{e;piFtYR_djg9Rws8Fagj2aA2!tK?-bHCeUgT7>LF~K^DTH)?68R;FjZW zw*hblw7$StE=^I%RR$P(M-v1LoRp*iXaP!tEv=LajV9%wfTk(6mIZiR7AI?VFGsAG zF}O|K{vBemj;yii;BNx=H{4l;l9iNQ&fosZzx+=segOgKWKBAtq%0m#G2k$8W2E8} zl+K?7Zy2L}N){&U+-@wJ_i(+5TA?Eq!V&Yg(cytB=d}UJu-_?fi@3%pe)$3`4zSm&c-oDFXt+ zk^I-?fl(G5CZz&K0f3Y~xKRgp;NaE~+%$^DyMTMYornAVq2b8Z8fOefI0hp4#|NVV z7n=%PY|81Q98J@d^6}j4z|{pmA!Rd}?gJk1_wMnJqp__3mkpt5WdI!FkQ_gt4=My= zsX4dLc03(*)&e4A*V)?Un6pUE5+ZlFfNB<^bar#dqmS2P4l!ztZKSnHn8?I~* zeyjXNLAo8TfFs|37p^FQ!YKASbspqBd?vIkOG!>z)w%}{Re0hBrvVW=(hK(qL4D0wSFb#0 zxSbZ&t_sqX`SN!7k$7d#Arp>7=gX4`w&ZMSbHHKTY*Fs!lr%EyBSy3d4I^P5By)-w znFM%u>a=|?`2oF8>`6GiW(6V%icH{FB3|oCGuPprKcWRT2rU`IRcE<0)=%B5x7rLLpRcb#O z#Yx{!MO!t~etd=JSg7XQ){!)wWRb_9`|wTyen zDgMcHs_CX84|RnhiKVmLCcHQ9-1Y10xU>7!u;Ppnv1P6Oo|{qVIA_Mmi7bn!NaEvA z|I#L%Px=;8ulBGTG3$zJPvJ4XS@le1Ur*sNdy*9a7IOG|Q0LVA>e8;Yuk91}$EA5} z%+4=%5*%Q1N1~n4D*;L%{2s=Qr*W#AHg4Pen1)S)N9zkRqJu&o_@Doh9!@o_cc@a^ z_xf9V@@T|zhaG&PGdXh149AVYhPq_yq#bmsv96x?Da^#WBvzNgTWV0y;1h zpjJOM!2-STruR8OFQ3atKF72RcvgL+|CwYhf?i%rUJZYvAF&YgKD)n$#ov{dZsDQ; zdwMK`tFDAvrec_5`V(Y5+t8yUN~L&u%RP0z!1|FBKJ94qq?3663mx;~)tF;CLL4kS z6BlvoUF@G1)kf9s5*;|Iq6S?(&A#ZcUWZqa?6j%40_V8_8#J5feiWB6*cn@R>k^*h z$suEesgnI_w%wTb3Ffho zdbP>bw50ze%`g7wYF8;yRG$QzW%?=cAopWAN&40lxGN% zdkbip77)(h?tXHY7Bqf8&0liQLp5oqu-@+)a)TTkh!Y{N1}Xstc)6Siz6tfi>rHCl zdTZj(us0FFWa{^B<1g)MsiOTWUSZNC^4xoe3&zykgnZ>lgiu3NFm$bCoz|4sp*Z|M z#lzp)kLWM)@GqtIw@mw6qx~b$;vDI4sd$0*FLegK21AQZRR~o8wiSvhWz_?|BJHt`_uo2cIbZ<7drnbE+n=8ZLRs=Es%eAME}tj zcwK}yML~F-kFcaL)%`b9^nXKQ(D}Ih?TG$Apf9}s(b9N5_OHIk{~v`0_75fI|BSxi ziF3s3Z@ka>@8W_M_vb0_uYcMfxAXrsiSf5(|36V*{CCQNzO@*?H}s+5yMMNs>rbMM z@R)TF=sXnLR-=>5DeJLT;bWyP#41?BX76G-#g(r~{BuCx0cF8Mi<0X+cCTOBf zR0Rwrys`i>8yDe%9tpTpAjUlAij8xg`#h_#O{W39^YRhRv+$ZbCVUg^NCiZgf>+ou zrj2C7D~DXxLZh#AKOgvA6q3DMXE^}y;Eu~+#}1nm`M z+dB1XHh<<0t=2vp3$z1vjf<3%jrkVn0~Lc*SSa-y>@@Zh&|*5TqYz>41{mg9=$!+> z6kskf^k{56+g(GX#3+%F6+4UTn!7VQgPn<+9f~k6Q?^ zOgv~_G&^2Gv@NWusq%A5OkE?|ytRv{c^01E3&O$6n$kCmy&tg_hwtQ%vReyA6JNZw z0O*t+lJd{#kz)G{iPsZA{ae=bCX2|tAkk8Jnk4j{?GuX_ zJBN?_S%onx+2zz)jFg{*aPdMiJVGc;AH9qTxiqcfX2^)qOMbwlQ7S(La#!~zzz3`2 zP`Xh3D{7j_L4Io9zg0=6}z&lVCW?%j{}oTpwc{2 z>(7DojyOW_J9ToWZBc%pMCFGEP_i$)s(yy8>?z=cj%>p?FDI%5I`ANYU7Rc9ZBZtG z1MIr|JwHa%Trjd!5~ao&Yi@|3l5)tVv8VFjp9w7Xru~^JV5I5_NxcE_k1LUZgLnY4 z1j57Ou912_bPS`w4bcCJ?=bGlB*(<|g$kPsO~#F&>wn_8K7m zSMC(#|AGlaCCY?oaC#UMC&l{#3&Y}|f0I`KaW+N(W&n!+W)}ND!0hm-52Zg?aJBy& z!Ak1>2kQ4PwIQ!VAn|ANiXXfFEi&*H5#H1Jr-z~bAGK3`pT8Xpyw^kP<^G2%j)&H1 zU?erv{xxUCvuBkI4Dk$Req&EId_mRj&cCLrf2#*P!2j<_Djq?OZiC< z|4dB(coBHIoSt9QAE=y@gSFF5Jj>ZM1Yd5r<7SR>vHEK)YOn70?_*I9Yd=pDJmVRU zjq~>YLyPkZ@%b0*8E-Fyg!|xW#du?Z+zfCoYV)S73!(|oUju(NsfH#v`0&OeHsCP zw$de_8=9SsqsUtdOGdxM;%EocsHzZzvVDlWJ*0{uNv-0IxjTw-7){ z2WcI2a^FL!x(>Qy7jE=qB9;cIArFshAW@?teaX~fc-?3v-o(VI?T~xdSvMyo4a57T z0>rClQC;5dKZdx5qmRULs@8UP)2g!wNH>?=PN-y#hO+e)+`4wZa;0 z>HC?Mz3{#^$H}E1d+94sG!C<7`T( zj+`w0{I%-1J3Jq-1Ib*N=yqKBjMW~o$&K5PTiBcsUxs4@+Y~V^4h5uxzDr~bJh{ew zmlKJIDwKpGe6OfD2}o{~gNc%du7U630C5g>p)45%RbdnkOHR@JuWQ)>5$|M-!U`)O z2uL(`BOw5g#+yu_7*+q83uQw5nv>Y3s|>-p;JOsSKw)A;!E2kK#hxx0tVIbE^nh{% z+^LUsjUeoVv4>_5BUnip0->sTl2{nWEz`Cn8(&6A)$(W{TNWf%G?@4r@WL#{^*-Tk z;u;q+Fw%?Ea4n9bU^mO$J{!dpOh6{)?~p|z){8Y)f8Nmo1a*$~#~^6B5Qd1q9&Dlb ze>Xnp(hqnER3Z2$yaJH;!&<#AA^)G@mH#AxO8<3!{()(W{{@(rk-#_i|0(bPRdoBi zzi;%Xzb~r^kT3>FSOMhmK^DvF0{9e*&UIPLU&pBnfxIWbfEJs8#b5sLKSeiwgpv|M z34k!fzvBMm35PGb`Qmde1o$|Mmis?=(7%dqTqtceRl~pIEMiDCF%2Eb|46j_Z4pcU zv51Y7v@Mj(tT=UD*o^)7O}zQ7@MZsye=2S^k^JVt|JHKzmbCI!`m5z8X%)cd6eZ(y zTkO9}y2wduOP~zpHPzIlHBd@OZ6)o$%;bNeLM=6ps8b^ zscoR6r(vyOZenVnYN3I_AL)jsI#wnq>%Y(ehUOUj@os2^F}1R`GRN5186xd`HS7Z{ ztQ>4TthHRc|Ejx1Xn5R0dW7jYMgD2LdEc~kcEn!+*4{pbevwu_!T83TS#Y?EDgGi* zbFtO&vQ_i8(s8yk#24Ls@oPn#Oq`wZ5gAKQCnG-(jE^@yBJ+nRiciS|{?m1{^6+-@ zz2)s3^l#yqKOoWDUSSbQP?P~ z&n@ijz__4o9t>` zf04zZb5FOsZS!TJg!hNZ?)J~G%2iWY^m-nDnXfl~XgAf){k}6j`fYu-;pVb(iRg=d^wl}bhn~|T z;{3uR5aQ15#LP)on*08RDt6Fs>pZ+u_f@2+fBd>{a0AoM5)Re=$;=N}s+&-yA6~cT zA<+w9MbYiaV949j0%5e5Ejh46mY>H-ikI;@t0@^u>y!+DNX-gWnUl}2q)2e}j!1ds zyrFo_ZbU}H8c!tVA`KOuNU&e-BT?a#8<8r&_K=Ler$9PQv!YV6S z$m2CNA<}kfEkosW#woQJSd_d~>P_bYDcJ2j>_-TX9cod3Y-!g|215Fw_xq0>vmode zKsL?g9csO7w3~Kes@e+LK$Sjk{S}MqG`*Wl8IS?+plr__S1%2`lFh=Z{p8RnYdPcD zK}-fu7~K0=Q>IG3q#zyyuVjwB^ffzsK@HmW* z2yg_u#!Is6kgWKUVi*^9DJpCCcs`-GVE7~%{z?fVyD%9qbqK;C>N7~Obcj(!*pvd$ zVIb?6WPt;vKqNSG`zP6|M5r?_+2{L!b229tFV0|sMh4B}vTSzuI|cDi0iyoXMyc{d z0IIY0-Gxi6I0nBMvPrtz;q`bs(g&n;yKG#UcLvG}yt3$=`(3naFQ1F{#}K71A!iq@ zWb6t$_^D|+QJ~+(P-;!GWcwM5_NmjAT%z|9tHjC5n3%t!KR1 zqx;x!=A5}pB9!~|C9>peSVQ?|pKxTfO8D)!mBqyaz12fyL6n8PA4oJGziqx_#nC%G zEyvqdl}-T#p^}=_=BGP$t6PN{f>vx&?v3yzG1BX?ulM48LsY@BGZeo(pT z={n2C?~hR~S>$|W{C*xsi4Ab}D)3pBAbS##@)cQ&M1j=sZQ>hA8z%?Y%OA0KE|)WD zDlE8fwyZN>&c0B1JRpe=n5dtLCMxb9@Q_+irC!dkUmqV83+nZwnHyqlJ8!2DJ0pq$ zEEPs8zJ`&;tuuc|WUG8=%_z9o&$9V+Lx~W^PcJ^4NdyM$0XQMZvsk*r84Qh3|BYXy>grpoFz0T`fPys4ASPt?r1Pb|7x;h zV%k(G%80c|6bQX876K<>7Zcs7>Iq-O2@)`2bzfLQ){=q{Kd!seCxtJ(Fb^8efa|y# z=sUH%%z@oS_fAe)ugkv~d8XRT>#}2Z!|2V^tqwTu4y^^ToLMQ8v{{0Xpsju$dyKLFTM#fC2U=!&MdA>D$iUD$e%?xW zIFq%SxDAX@fF4i~I06*Jypw@eYh0Xw0rHr}IJp;4Q5IC&=nwlF12R0hd1IOVud|pU zxQ97}TM<}Yr>jDG0LxubRZOE3-ER&@DPbWbW-*h*K9ol}VJw3u$F&PH!Fm^HIdjrA z$d(ZXcjaEo8r!9mc*Jlu<;(r?`UOE^Tw_ZdRkwuYE5R(uL{CT^P5ujyyK0QRS&hK3 zdnz07ERn?1(agu-g1JvA<9o@>cbrxr;%rGC!F-SfheYAAPMmJi+T52_Rb-E17H6E* zg00Vd$yyvwOc&#P5A*?NUqlaj#uJ{=67O)0x*mD$D+ban)d(3(vZvu(8Zt|Qa86NZ zTNfLszYnfcVg72U;Ifk2EQu5@^Tc_)oqrDKsOPcPL##h=P7dsx1~?EW z*`hS{&%L9z zhcm1?H|5ntzlTf}d^l<-j%bm0{nd9+3{N-z{lR$iHjeYkI_A6h3WZ3;@Mrgf=r;-* z3h=OrRP9yw>larm1TA5kCCVp?v`1O}B4YG}=@&e|<<8$fzbt>jI)1qyFL)7~>OT5i zTc)34=Ag0rnViJVl5oCn_K4UClw<)FSD z3H+pBZ;tH=fsxLOQaVST#>C1)g(%k)L=F|FUf@;_aBQ+M`NpC|M=reeG57mpG8b?* zyfMIocy8W=&77Egrv!>wEF~IAwvGK5!}Z-gnzSBvA%VN*0b7oZK6B@|c%$h7jqyUq zTmlk!u1*qMJQ9SVvEpM2jc&0<=(rz&BByO47r=OwY&-%T3c$v-{Swka%XDnwuj!aV z**MulX47p}7i@edyKnMRythS+;|X6DeIlS5rXb@CY$Z^2avO#MM(N#yB!yolr4^r~ zZ5%OM#%b6Fsh%Ju#M@!QdFjPVX(OR&*6|8GC>R{Y`NkP0d1MpQg@b+)x-55uASLUT zD4qMIPeR$~@DBEnj=yeEJ7+e7r3p@TK}C|7B?%BQ@}iY>)&xu~mrVhXIqjEJ z3CdD(&&-KsZ4@Wso=^O~&3agm(@K&&U5Xj7fbCo4fRLG*&Y64+N(Js(QXaXXS2XEs zOR&!#9A9KJiPX|PUDDs9a)=0W4>)qqy7KtPGkHc)RZ9|#U&6s*l7tNkP(Dgitysux z7AYYom0UKpWwv%uwizGHxG0PH3xbm&XV(oT6qaYfko#*aPjVR+Ya#5&iPmo@2suVY zuN6cx6j~k^=xe3dz+n>rmd-hqsP-JfPlb|vg_oc59&M6;##kQ*5RA-GdTdZOfl=d? z_TM~0=wohnxP%(Y45(bq zuH@#g6xNOh8R9+J+^_;QQpYMMS(u=FC6^bB1ISweAG+z_ZLpErlqc zZX#FOw6pG9OWw3cv5`BkQoY=V@d3^CkRPyG-%&}|@LJE5l3CD$q|I7?{<`1^*xeKq zwzwfyo@-9s7S(@Or9nb{|6x6K<1>;*xMbs4O0)%syj&i?LUnle9A9l<<46ijvRz?7 zqKdjrl`akz+Xc%BdVt^9399fYo@fXu@*rX?F#(dc!XCAXlG0*T5JeRG{Ev>m)_@5> zR;Q4URE_fuY`2b@59J@xwn$uHi7!`4HvB0IsGEqynlEKw9_xzu1Cbcnx|z~?Rnbb3 z-IT-)V~>!Z2ygnTuJ~xN3Blm-RkML`pcN9(`nk9@@~Wp{cco;HA9u?5==awLBIE5u zzuV1M9$hiEP_)((K72&1LqYnsh4Mx#8CyFT*)CVo+%*2MmKcz_Oxe58VNaS*Nbp3n zs|tW^c8l{Y zM3vMb;~kA!e^kB1N}r+#0C$so>Z)o-U`nt*PRmvK%OJDl7gE|#Zs2GzXk)eOn*-;Y;#lO;~D3dQ>0?B79&s@1H1B9xJ=J>X)~l!oc8 zvL-J}7r~@JNED}{uGB82Os}Ur)6k{pP^Wp(&9GuHDW?k4u$;{k8nyIwna~xf6b>eC z?zBOnIDUb&r|vJs*wWa|Z3cPB00Mb~Ha>u-B!hMHYlO ze`aNzL@F$(fYMUNBM|JmgO)y{n1(^GE2ci7^FiBcO${=Do{yhF?~v1VfU?g}p5kz) z=`c|%3SIiRRHwE$ZAjiH{-MCg@xh1@VZ3wXn0xPt$m6jCQf{9}`Dj}7B@#VkYA$`q zVo_RjNifMJIC+Vfe5N>QImqv~FtMZ{7gN6U(v&##!h!seF{SY}H5M{d zw;;M#5jIO!DLqKRyLQ`kopNfI(tlW5Rzd=AT0V-^4BD7J^iLPwpxgl{Uy4$K#oQz0 zYA?=T@v_g$pT`yq(?Wm9%G`KmEyhCpe?fm4I9Z;>{Ak=!=!(y;E6!UTG1 z@ml&YeV?grU#0%Vtk5@B_HXH-zSBImx9Z}$FSAIg6=6~2OYgmP;>x%Zn3w8Q?Ovq8 zen>dF<>G&rQhc93*kFCzKW^usb-7P!Z8`**d{Z%TH`^9g^8R*Gj`p4F#XjpoC!bcd z=P4gK3tyyK|9~r~yK(Hy*hR}|A7{S}9)5e~{nllKKfBacr;)Ay+pBMzT`*9l0?_(3 z5umP5yW!4qBdul&`P(d|_lsA3@t}&8hr=t^+ujEZ@h5+NUZ^zu^&4f8&{A?bY}<@!U^{A8}3v3`;Cj0&Az-g-=q#-j!s*iw7$0xHf?E?Hkm#r#fSdk z_dWM^VLyy($UnT}J$z?)+leAoa7kOhrXS!ZmhV>aIlWV`6Y4DPMJ>smM4+ajX+OqIO>Iante_&hGX zuC4zW!nUC%OeJ$~J^bp!mTuJNDbCN@WB}voElcq&2RpD01>cRJ5PjZ zo+(q0?9mG4+G%9(wtlFSL}qYoUz?1gp7*0(w4;7=xihUyGow$ltW5oJkCv_lnvp}h zZnwupuq!hlbA}*s4A|o%_|D7rod@}yvtmzrU~kXPeuL%vMTRkebswm*54PVYjNXUd z-zRy#Pxf)2;%XoENS`yLR(E98anbTr?;vC+(aRNP=ubqHYu0(1ssM_k)S(ot4XwYj1SQ9MjrVH5dSJTc<|BtZH?=Hl- zCk)efGooGHRT#~_F0Pg|&{nuZDsBP?Zt|_)B%%cznuW!>J*j@>p43=Dj61`*-TWmT z3#9U=W;+8Q&Z4D%v&8-`ie@Bwc)1sSL~4k& zhhay4CDKA+hv!8=%naT^tRNHSY~d(YiLxgdg%vg%(BZ&BSw}=K;3E-)bQzq>`;Ka{ z7r=x}XhT7X7RoK2Dzi^6%9 zHrWtukgoVk$)iak*DRiD78-F6j%YPWw4QW9PkCdv*H`eg{oe@&a>vo0N!;(aY^oPXOce5d2r2hJFwBv8ii`!Cjj;$@7+ z9fH+givix+Ar(yZu}6%h0E<~xIlo=WX1~YD<#76t-p7xUc$$~W8AltmCT=I@zHUvE zAuM;kpnv`SV+>eW%r#yW(hbiR@+fl7Bq*0##eJ7L^Qg`>>v{6R%j)wD+*v>s{A&7K z>_u5=$C`jA+}V?TeYmh@ZkPw8_(HU2mWO$o3Do6IA z1V3}+339yNqa3R4fiODz^*o!Cjq=A!R=c0>Faqi<{=+JJkbU*TcqSN@G}+;bAP9vd zY&MAF;B+MZ4iPb#B#nP!SwU=jf}$VYkCefp(>Byqqn5IyWfv;Q?wqK?31@ZbEYw)H z)zvsw2$NARPBdjFYP=eTDaO@K*P24r1>Fo&tv8&m_noMVCK#qUb2>9jg=$FF8m4=@ zINx}Gq9HqKm=RR%%=|4>Q*p~MGh)M;_2NVmL1>f}%jv>K9)?!qHp)(Qap7P-MWZ#0 za&oI(xP-#Ablr?{OEz41luorU2}XHUoUVL&VcI6OM)?n2Tm@`TwJk=C?zUIE3i*cV z*lZaUJl${=xpS)HKxkYz#OWrM9;WNUZCv!y#Z98@RM$hpxOl$WO{(ci>k)v~5oj{L zCG9&u<(-h5E{aGzMa*Y{va3l}MPJBa9g`5VTxIP@sQgISs~NrlrjK)Va=GI2LEAvA zwdf0F3EFn)kyOsHLLDVKYMS^t!pfq-8Nzx;Or)C$KUAwC0aHs0Ye+E6h)r3eGXhzr zvGcG^K}dpIlB7x{YwQe(1@dBy^6!43a-8=txPM3%okf65G9n>^&GV4?53`mRYX7+B zwD5GX*71o%K53q|(S5gDY-U}<{xJc>xeyS!u2#BT$Xcc;{V>Vr?L`5vjv{o+kLxr3 z7Ti7oZ>-{w{=k5llHC;ZzKmhuT?cP@n}Mh5n5vfQdi(1>xQ?sHnL)a+^q2NLHU-@=0;9YydsXd>C2*gZ-`BHrG~4a~dKDwC4HBAuuVoDSo#d3~TV;#Mdz6v;_C`$aiBAtz% z4N5vI+D);W2^Kjq-4U~eHmf>S5WCQlEaA8|KG{*!UkSz=7m3{I(5C9c`gZCy*y<{? zQA8msCG`1|wD%IOKc|foF;Rbm3Ykj)z!1ij;z{IQ;zV`+8y5OgT18ZOmBQ{?N@0Vk;3nCrAsO;UEq3WSkHkBGeM=fO9We)(T%3NZ(vx z&DYWfwD`|@K{qT)?Sj+<(izWpyM4IhZREMxaHYWxR3Y`+73BB|EWe9o>NN2(8cS~~ zNyf^xnpCSYN+@fYviOR7yl#i-D}-$UE?V;PLC1T~GP&QDrCZ0;a|x^DUL$Xw(|x`* zmBU$^^{p$gd>~aDL#H-Cy26B9c>K+#%fh~7=xVnOu0n#ul8(s*e9X|P=gPmypM9f3 zsb6h{DL?;K`|n~7^bLh+Hdu%UC{|8P!+k$ydMFMo;+jfPiqZI-5JbN!PSlB% zSD&A?lWlbtuFQ|-d`E&% z*eC487t+C*;`0fWR&Vz&yrMj~$C@mSD_4twmfz2&WTsi~@q{OqZQaWi;vAQzJCUG5A~%qrm>yvcYurc%)t@{+E>R}VBRQptfd!Jm zX9)U!*AfigkI!N~pT#oJ2*PD?;Bo{<3!(v5PP5;iJ;rTQf?y~`GBzS_^dgxik<9Oq zEW1e7b0nM$#m0nU7esL=qBwO?TsA0f9~4g{iZ>0#SBm0qL<#hw1Se5K?@+?KD3NoN zD4D7lld8C&s)VAdq^_!zjp~)OkE%?hs%)C7T&b#jqpCu$s^X-o(mPeQRovI}|n=hXF*2|F!` z%+WFcxJFJAK?tvqrO!zHwwk9+5?7(R$3k7q$|zP_#yw6Wwng1^fy991R)?w7c<;6(%z2cUJseR380Q&BD?mRI7$BC|6;(LJ{ zQ)ENm7aNOrK-adXTzNjs@*HX?t#5!=j=5MWw__ACnaJEMp^2rW@g^y`lB8H0t*Y(# zB);^6aDg~~-i2i5_RzA2U1*Z=u_AWjj6Al2bIk`@=*^Pm;=-Ql;?&4(wp#k}%E+-7 zR8X5jEDX+kgQ4_6??f?-n(=F*0RT(Ul|eVF{cu>ju7$t7g|>Y|J9=Nc2l}!#@>+*v z%5o0Lz4MgoV{x`|B!$i?4QCZS!w+&5%J?yH)2Qe1mddif86POVZ1zccqNW1~g_>Jn z7Y>N7y-i~m1-@bejzQb+Fl3BMCOyj2X`4*xJx=M{)tPhXDuwDY6i<#-PjyNr4T7;l z!P!wKv4K=cS9!WA12znAX{oQ%gH^)rt?TNGsTPKpv~6zC{xV7-O>G)W)(1cvK7S&8 z7p~9Mpue1xGQi(BL@i|pZJOm5VmA^DK@*LBZG43?m_wCyeZ4l^-^5v-U^g4zNrF8q z{R6vtX$5@|BRF2!SV#Zrr=UT{oZxiIQ(ah`2YQ5d#=y4!MKpUOWTd>qOMs>u3oVhj#6M_l+NY9@wv=1dkd$wIFrZq-lv_QvYs|dSI0pQEi$_ik2+qK6^}I^ z7So#8PIR{_#6kk-- zdZ>M|aJnL&NR6lVBRySv;vUM^F6GtlzmCt!`y!Z>6Fb|r4mDxU){kGfb+Ne0Z)#p9 z*Y02n5Pf9K1^abGWI0lD(6*>Jz6e#*+&f&Xp~tz9KU$p=a4#eExb^11=yjaXYc0>E zEAXZa4n*q(0eF|0v{yk-N~5*V*d=$AW@%*HuyZgOfq+Rt6%jFKw}Z0qdT4>ZhjGPvWPpI-A~i zK>+U-Tj`cv*H1AaWTf2}Sa`A85Bex~K0{HWgP!_&!&6*^Uhzv2%g6`?dT7>-%+jPwz zZDJTEu!bD~=8z+}DyZeqXQ7v)c(=nL^L1!?s65^D4Cyo2ltX0p?k$po{5QcHsU;P~ z9TC$%5*i`-!U~{l@Yhv z?@Ypx!NaM%I*nPYr~i})bewVMoAoFbElD%7NtqZ+9X(!;8T+JMn^9PwNG}0ohi2=pJF`VOvfIhZXONDy zNSHL>eg2@kJ$`yjmoLd9jgPu^sXWPjV zNH+GnZMU9u2yStO)>_vh1NW#oWgc*__sg-7G(1+W(4{N0)n|Y{hxj#L2&jotmnx6{% zEQ@8?j8k^g+oN=f%}u%ImiE)L@KU;R?{QK{N)C5&9U*xhG2aM0r(Kph)LBtC-Rqss zN-4$=o+_tC%%?`MQ)5lvKE0q?VObBCE&AX*Eh-yV<#-{=*Ca;b3xLO=i7b*J&okmJ z%Kt4!{Af4!@8x3DEInuZoR)Y44hU61yzIiY=* zRy1`lRjJiN-*O=v>!U`|+ojy)ySUjCQn)eT-M5we>~g1{#pf#SOs3k8?PtPv8^uSf>%3xrJ@BQZt{C> z<>IM#T@IuUpUCxOC3R9Lb}z~G+>`o>y>4AkXzlT$aNnUUtowuT?nmh)VQ774kK9Q@ zSyA#vm0QP8Khx5eEO(vvN1ONKL;asfLvOR~k$vy;OIE_leXs7{-+$J>=yvyPIeGhs z|8MZYG2u()6+U3R^YiX#w@AqQi*(J(n?))tP; zScbq3Z_{4u;2qb^9N(u?Cr7O0L65w@D%pQ{wjYG}^|Uz%4uajv|5PfMX@hMo+P(8* zX@T;#Mo?*Tsr8$@`(Z`p1nF*;B+HTX3U!4xpM!9#$DQq-NRia;`7emi*{TM|>NkUZ z6EJ8V(^k^`a`xn>K?=GC+GRb*w@Klh$ak6Vnt4_;<2U9Vb3}nlDlx&M1#;M z*U&!8k|zzJ(Osc0hWVF{h?dvgZiqlvewRdc_1S($WI+U`bTmdHQN7 zY?xl@er{!>X3eNA>fDlz)m=f~WGC+Wwb?;CX$U?T&!q2B?7;8GO&7 z8OlM#y>%kXR`QBgCRcb0lbFd0(Y;Brx^JiRx=p>(OsS;GJG#aCI^Wv5^boT~6leyf z_9R~Sk^gV95ku9RL>xkZ*#JNn`YR808W~0n==uGb4C!@ofCBd2)2F|W*RcXRnz*T>chk*3`hyq}O9LlQ*O^o=$+sa~d z-7aE-!I34LIJ|2$f@AG=NisOY_i5VVqrZKwH1n# zyYv~vkSiN`aON4NsBvZ)-PNecH*+d-&9e@?lDm^y$ZSi#4y1~3~+XMc<%0aJ{hvj#}y&kl;S?-kd#^8xf10)K9 zts{&Pf^FmcPX*hjR7aj5PGug^;D?yefV#ou1_fn!rhz25yCxR9y}F( z`mN`;aPPr{f=J(wl?ah%r(d6nJij>mEz(awswg@Dxe@6frBk&2B6zmA?IFtvmWM3%D785+VAK_;%L6MU{OA4Psut!6AFQ}YtXUZs0DA>2tOF(|jw8`PDl z_+taXbW#XoU^bZEhO-3dyD))vxeL>UFG}eck%Ro>YiMHwlUs)NcW9|!xt82{ z(k?72U7>S%>}+~1MYK8urKNBz4G5s*jM47Wg~hlykBxS!M1i8RRsp)36F?*8R#j*8L`Pr{ZYx9Le`jM(J@2n!&ACn*6| zK<_VpeVX^e@SJKbT%sM%rnAI)^saUpewQppzq(lbeWd~ja#7Ae53xSmCq(%hRuPC- zV~KPf(gC8t{5Xgb4LB7IZHaBzUnk}GRHlMJ7L%G~almOE0mk)%*NPKxpxF<|%jB`3o?m*kesLnRNnIWPOsly}7o#pr@b2&ykcYr_j8&AcXL3xoSHKPD1`}4KP7g z{LNmVCP0*XJ7*l`6iTTw)61+`o;*2aGk^EPIrsC&M9-Zb3_DFB*focXrUEH8O7#?7 z_+?b9?FWP8-_Int;e!Dhwe7_@g07yA%_%)&+RF*03Lt|AEp-SV{qBQAxp%n7^}NT- zWVVT__SCbL)D; zN`g)_50^&7pR{J&5p>}YSROZe-KvL8bSMvAo_w;XKvOU1QR9kx`Iue1>W8Lh7zrpC zp3k;&gT(UzfFh_AL@#+G$;Z?Ct$F}}NtRTI+x2H_w&(!!VV0)w84)1fGL0ic_JzXI zL8?UFRyLM@FCbSThrUJCwYqf=5f|~c-a*i5f-5~#X2@o@aMJlhe##VGLfH@TIM;&< zq51@|mpEEjEC+H_?b!<$fJd!ACI+Y2_<;571Gn6ElAmzt>ExcB;Ik=6e^8ZzZANvc z3y)3_dL>o-`xOu|3~#;}Ifb)dZQJ%D3gfsAOslH8m;*+jl1zKna~FW{QAkKFLXQT^ zY@P1KWXU+|vMyDh95<>ZFqP9vcRwR)Gqf!rkbb0gRgX(Os|_A-be>I0yX`>b4ZT-5 z?z8naZzElycs2YmcJpnyEBh($0%>0Xb0&ASw)AC+Y32FaMb{FmrNE&Yg^-7;x86&X z%faf|&(0~nraVYej5a??CJyi|`#u0c6v?iey|kH%Y?rLP7U;s7-YQu$>a@k3-qpLR zcQaeKwDBUlOV8j~I@P<>1zxa#I<9SO|MWwoZ@&9gyq}2%0Ywa3caewvp|sr6_mWL2 z_f`1stMM8>2bIfm-TdAF&nA`!DoM6J?ct0Im7}HAlyy6}bNTwg=G!e_zEO@Ymjvat zGgZ$HDJscl7Mo3R;rYM{%LLz&s%mi;8f#fD_kB(E8Rg?wd(t zBSdO$i_Pi>f~juSs%!JJwpRsam!21l9cdoBITPrV#xj5Lhui`7C*5lY(Kl)93k|N? zSX&4JvbRq~%5eo7OO;=>ScyON^X4=<*O5NS@=*40OnrDWZTnH^<7<HZW4{bU+l0bZ|5FdrUxeXxIl+#l>K3&oB$!7q=N+W-hvxZ2WDGb(*hE~A+&v_ z1Xm(czX=c1EE(Hb9lPy*Mm5++NERQnXXA7j+D@y2pT%4kMf2;%hI_tYu6sA%eg@4u zJtd$pe9C}AF{&uuJMcpT=mpVW2=Q4xtMRqK@5@YE3~IAk z#vjOscTQDzU5O4nnKjewzATRICCBZL801V+0`1B#)tHbc!)m>An_^(%19PY)f~A@u z`-FN1VJv@)q^pnPL%)l<2IDP+lTaHk1<#PT4CRc$p408U z`vmVNoi-xfAh@==is+wK>!)PlR@2W;Af!i%pTtU&;i#BiASU~f+dz;BP8&+Yeiq9v zzV?ya@B{Lrrb&s<$p^p+g)04gcwQXEA-qTZ6Rp`Ni3T;&QAe_jVJdMony6u#o;AV& zC&DQwqB~iceF8Pxr`&krLjp%bp%1^WWy?7^(B%-)C>1|sz8da!ExHPr zmoUQ+l*Oq^zNL~f`q-4K@)!w#VbKU0BqOK4;tlF%M=f;8Pg$3*14YCqP!$I!Zj$l? zf_H%o!vt0w0Ea61IW=Nma+D+o0WpVW{lc$`b%SKE&ZrIAYf<%*RWwI~No$y=H;#dm zLoRR_a-yb^c3;Jx&S|$m|FGHsWo!}5pxI^QIZQ=y3c4Pa4Vp+W`I*~!tDk*oz^&9! zr-@3{1j+So0KkdMbm6GK<%;m!@a!(~TpcEGdT(4k#EI2Zvl&Ifl6T^gh2=N*J2>Sh zTm*nb4%BgWDR4-c8B6*qWNJqJYa;jEgd1ODO}WY(bJ z1k&gMLJ<){=%H7sl12!jhkzMCq)QMG5Cjo0KtdqWo2ZC@bVV7OWz+%b3|2rL$8SVL znlgZbjwrA%GT)5*?R;hT+G}@z?E51ZKl0YxJK1gnbCCjmOQwm8d^>{YaAwxMTR-K9NabF=?{>rcQB7e^I05kId zWd#{6H=`O+k69k2B&j1}8YpE4hAtk!SSZ%?(QKAw(*){-oY06IcW|SsXq5)^)XTkB zH9{jZvP|H)8etWmGU?v2&sT$=viaSLX^Shn+_6fA0dpe6w%Nb3f z9q@lz?>MjC$r&=MtvpGnV1=Ct()LK@)0~z{Mal;=AA~AQHgxU)o#;nt?vOi(m49Vy%Lwo8&W1FxG`LtYRQ79F9#0#*g>brLv z>Y8kF*iDiB*PQDImyrnsFYAbtRI^Pu;%1=*bh>hlu@agWYoYwp$m!6!%8bR|Q`O%fVCX&ENZ1tXAQ~QCbS4VGx!wh)+A1 zU+xXJRkR)nB55<7y3+H}fGv?ow%v!Sc!nBig{3ar&+t;GeW&r-<5tan zGoC%}v9`6j=Y*L(Poe&IA{*Z{vV(_-7fO956-Z)fuFE_D)eI8f8c`lSF#A-8y!<+) zAl%_2@n8<=BvW_h`kk3IhRtmAhrz}d3MA@yu!H@XS9O;sF6vD`MV%d<#$QZ--6W^K zR=h6JJDQ+-J=qqz+=p)=Shbd9WonVkBy4N!n>UL8F`E$VFynbRf zlu+EaKd8kg3gXwhX&bU|?jfT_;DkPO(b?FXm9E%2U`7>p!0gOr=nT1Z&kz~y8;K$ zhx#@1NZ12#FM$}9yw;udLojx_Da$ZwBt~bTRd>-)??bEJrlCH(O<&B&K&H(=(a2D} z%}~$CXm^{D&0+n`bYmAIlTCi({fC1*+DrqDcJD4V-FtX9_i#Y6k;#cR^Z0RP#u(5q zw21O&<}bW6KG$aTn*IUZTX;+3U{{;*JtLdrMWk@Pg8c4|zu512eb`3PSVsz?qG_yP zmdBiJGf{3QJ$}GU@y7O-U6mg@VRvcrtAYo0StH&o9j_57Z8JiLQ;?hdp0wz+2Bd%r4* z`YLU2$K5ygK;adLk8DflRVQx~#!kltw(a@~QSL`9?RXsHa$MJE@v1)PmE2yJHj{me z4xp*-^-z}R;Ihx-j{WZ(_iuLiDLVRzb@~fA`YUz@oN>Tyi%7oIJjj6Nz(OGD--Tvh z*F3z_`a^B@`}_W+4&v+god&Oh5rDUq4Ln{Cf+Ik(ilAMpASF$}mxeH~Qc_aV(b2KM z6OBB49h{uV!4U^o+|2yKwvNux(b1{dIpEsZ03Hzg=ND9U0;0;El*e~de&9#iK64yI z4rD-{UAa4OYk&UkY};56I9f*ND}8Sacn+)&-05#4gChjC1}Coq!eD{HLG{eH$EU5W ztzl#WT*?%;uLl~O!r2~cVfne%_KyDk{@+GCKfk`d{`GjFUK1JSeMHsNs!QRoZ$<57 z=0j1@mlpfmH6ayI4TMlougYRWcz@Yl4Iyj^?ZTZAas4if%Rj4_S;-g0!{3?D@L%Fc zoVG6WAN90%&T03y%1knE+{70W$%37=XnBOvWE71`AVQVz3rl1_q!<#9GVL)Yt@& z*nqUY5-%8iQSutOf{eZaSuno%7J>oI0tiP3;TT|CFqi~L6~bkxfil3WSJIXXkL;jC z2KK5Omg>FjQZS)9026Obbua=f3NG%zQdM#W%n9*IzR6p{1mBdc7LY(dt9ul$WeN!I zs79t=SN;Mrgx||Qe5l(R1Z!ZiGh6_J4H0Pj07M7C!Y7Bu0{Q|#pBuE75aLA$+P@_$ z02~D&!Hk2U48ThebC4b#$v7J4eK69G8Jz^k2a=M4l2XFsQ=$RMfI;Av@D?ALfsf`n z967O7ypfXcafIV`ESC|>^-jrlPtFIHEa0dCgtsZI2tab1!uhLJAhiHk%0cNlk-%$4 ze&83Y05fN+Y2$EedK4%7D2J26OFNdG69>oy07p$>=~iEE+QHO}!|7RZ>0b&qQnNW* zR$D+LP>`Npl$};o0_@{|x;MVwC;$I5U|kSFpk~!ZOH*YK!4D1fiRU@|b3wO_qWrq` z`5nxL*$`rtBbt~Nq~VI`iDI@u>pl)#ayRRGrdbhvqLnQFd2>8GBH}S`LSF zpVasigmp&+pLWcbc$4HGEKbShBZjNIRg;u06SS9`_!brHsAAMH?D(B{gnMz&DbE#z zTV)1!mksZxmiq-2bM*JmgkLeqsXI@jAT611H3*zY5x<0AX@P30Mvs3j4y&B06_DA` zkZTSNRI_!3c=cP2_L8m2;jKd}q3Gv>mit_?BaCN8#64lVR}y~# zv@l;bSC$Pn_f4oI*p^@M^^6d)-=|h6JIBI>1*HjixfI&dPal-KKkZ7Q@_C`r`=W~! ztF&>rKsf9+Lb=YM5CMg0H%#yH#M>5oJ$z83cs@)N?|#fLM1pzL+AHAnUT17cmQoI; zb`*LxWzC~9T{>|Vr(m^NoF&8GSR#Pove;R*G6+5zh851XmyqfclxRi>P&FtSm@p7R z4E(V)1YJ^BhrGEFmdSkaqw0mm>;3^;W(=nep^WypovAP!yrx<(E7C|)D+xbS4wlS) zsv*ty$^lFHEOAs1CK!Ah;)G!FfgFb|T5Bmv*H(M#PnF~8nXYFo>?l1y8&@2`5D4y$ z$aL=gex%F#Zm(V{R$x|i z`+2IdijaQqCa4&P4j-Fv)_LN`f5;MAF*Fe*M87JWxm$M{Y{I}v!cE4I-Ge5*pdP1U z@7xur1V#72^ttoxco9sE?ljc!VpQE+`#EenLTrR?CQ`7o<=7%|a-Su27o-}#R3~%% z^U}!f#n12V+v%;Z+!b0{FRFvpOyyn zHdkNVJG8m}>&&6!>uVntf%2eSL|epIs$PUUq=e zZzyN5t+`bI{&;E!gMS1IfF%B9q5)~y{nwxdx(9vI8cJ79^{05pf;mmJa>5|C6@2x^ zho*B)FJ6kAz}*qmpA|Su)>v99eh_}u{x#<64zn`bZh!w8)~qk$3$^@)n@_-=VD*1? z^vf9iqtk!ezXY8AMt_|CUkUktJN;b&^U`ks@I|%sCk)^iA>$k?;~x8;A_1&RAl8|Q z-TMUz0FBZYBrw>^R0`Mv14BTX^k-nOZA>ELtQ~Nszl)L>WYgaX!Qb7Q3Mi7C9shd=q$v2rACe*fCt^6+iJY{5gcCVi z*1NPE_P>G?|KdLf|M$^i`{*xgkSTF}QBxwb+HQS9n@A)Q*&v%`V+QBJ4{&ENU zOa!b;{TvQNtC~2@F9)i0DtM&=10DqC!+|w-sNZ+EME7Hf$vnWEqKb>gf53x4B#KU|=G5@fL*U?v6oL2Z=mLbv)tVHlV696!wjYO!g?7tF=5{=}5>(u-VNmf6BCB_xBcgw|>;A#p zLzTJFtv(ZNO7~zpy$tOV#tfa3*z1Ah^Mg8R@hL`xv z`MWlsc2f1v-z*t&Lc?fT7p*P@V|U(b2#EeZOQ12a&pT5NVyH5?8kW`-;|J5FozTt} z^*MH$&MI8`&I>YWRLSBS57=i@$$--01{Un{MY!zs?5rZVS67ko+ zDA2(`P7WosEtRn*%lhQje~~yK+$}Cc5PB#~%F|s@?sR4B(Z;Z25A*OM;ayn%8gA&Z zf^N|xxGUvWt)X$KOqD~fLyoyKAd4s$szoLLE(++VMGIaehL7rYSAbt~Nkt>BWtba< zgR3^Y(mDjT0AGal3a;JA2*P7gEbdC>WovALa$BAI= zlM`uGa;pu(s!jFmj>Eu6T`aRqiuNnQsm(az9JVG5lv&?o?gA^ z1=jL<%<}|33UBt0)AE_&d0czAdday%%lAVV{pQ=%%a*HJesD|oZi)9TS|-{7GRNHd z4BvliucH;DuJw@hmEboR`~++c!hkZij-vmNae)6U;{ehPgMXK60A^mG4FJe8=wOQw zFdR0O0`P<90$}K&5TP6I8#ggu*uo>jQXonE-_t1f*C8!~!t{z!OeDv#2|1 zJ8=L20*D*J_LCw593msVfr#M?B6tIZpHW8-B_{>p53za>pV}Tif->xMH7R` zHfzEf&!nsBVFl{bYj5%_nms+7Jl%w0T(=wQo~~W>-#=hWDk{KEnZi(&RnMyo#%eN8 zXxN*zoVV<4mn1kYJN7tgzhrYKIWj#aCw7nt4`gfcqiFHfL?`rQ?~uN_16sIHYQD6R zU$;2vO!RPRCAq3pc!!C<#8uaJhzC$se;;h;8A+NoxjiwU@cb7YizR$oHBu{KE@&mS z=l*$05q95jd*f)m>v`%~YDd%f1xB0aYHKYKjNFTY+^06%%1C_!LZK~nGfzSxd!FPH z??YM7j>RqJ{%~Qp-1A#EH~4&eYjs)RbUOiOpHPFB_*_NB%#kNL&j#2@<##Y>-4H!5 zdDIh@DuJ~vOa0OuycGd+!GA=>%&!}Pf4=caEMt;VI-ONFKiv6?(7;>A$M17y*6x1T z5EB;U_Es-vI$}?b)V&kPq1KNzt@7@KU3qrtgOKQnfvMJy+0GXpzv=uWlJ~>R%Juc! rd#^uyzO^YPt6@fAgkJU7-c~xmMgpS4-{R`OA4C5>*8hfB+w$K4KElBr From ff923a92a7b58859eb373e5d4432cca67d5be116 Mon Sep 17 00:00:00 2001 From: aswinkarthik93 Date: Sun, 29 Apr 2018 14:46:55 +0530 Subject: [PATCH 15/16] Prepare for v1.0.0 release --- README.md | 10 +++++----- cmd/version.go | 2 +- 2 files changed, 6 insertions(+), 6 deletions(-) diff --git a/README.md b/README.md index 0d2cac8..5bcea77 100644 --- a/README.md +++ b/README.md @@ -36,29 +36,29 @@ $ csvdiff base.csv delta.csv - For MacOS ```bash -curl -sL https://github.com/aswinkarthik93/csvdiff/releases/download/v0.1.2/csvdiff_0.1.2_darwin_amd64.tar.gz | tar xfz - +curl -sL https://github.com/aswinkarthik93/csvdiff/releases/download/v1.0.0/csvdiff_1.0.0_darwin_amd64.tar.gz | tar xfz - ``` - For centos ```bash -yum install https://github.com/aswinkarthik93/csvdiff/releases/download/v0.1.2/csvdiff_0.1.2_linux_64-bit.rpm +yum install https://github.com/aswinkarthik93/csvdiff/releases/download/v1.0.0/csvdiff_1.0.0_linux_64-bit.rpm ``` - For debian ``` -curl -sL https://github.com/aswinkarthik93/csvdiff/releases/download/v0.1.2/csvdiff_0.1.2_linux_64-bit.deb -O +curl -sL https://github.com/aswinkarthik93/csvdiff/releases/download/v1.0.0/csvdiff_1.0.0_linux_64-bit.deb -O dpkg --install csvdiff_*_linux_64-bit.deb ``` - For Linux ```bash -curl -sL https://github.com/aswinkarthik93/csvdiff/releases/download/v0.1.2/csvdiff_0.1.2_linux_amd64.tar.gz | tar xfz - +curl -sL https://github.com/aswinkarthik93/csvdiff/releases/download/v1.0.0/csvdiff_1.0.0_linux_amd64.tar.gz | tar xfz - ``` -- For [Windows](https://github.com/aswinkarthik93/csvdiff/releases/download/v0.1.2/csvdiff_0.1.2_windows_amd64.tar.gz) +- For [Windows](https://github.com/aswinkarthik93/csvdiff/releases/download/v1.0.0/csvdiff_1.0.0_windows_amd64.tar.gz) - Build using Go diff --git a/cmd/version.go b/cmd/version.go index c21c381..1386969 100644 --- a/cmd/version.go +++ b/cmd/version.go @@ -1,4 +1,4 @@ package cmd // VersionString to display on --version call -const VersionString = "csvdiff v0.1.1" +const VersionString = "csvdiff v1.0.0" From beadab50d74d0e1f6f8316aedabd5ee2fe74cd43 Mon Sep 17 00:00:00 2001 From: aswinkarthik93 Date: Sun, 29 Apr 2018 14:48:56 +0530 Subject: [PATCH 16/16] Remove unused compare method --- pkg/digest/compare.go | 25 ------------------------- pkg/digest/compare_test.go | 23 ----------------------- 2 files changed, 48 deletions(-) diff --git a/pkg/digest/compare.go b/pkg/digest/compare.go index 390b446..1c466e3 100644 --- a/pkg/digest/compare.go +++ b/pkg/digest/compare.go @@ -7,31 +7,6 @@ import ( "sync" ) -// Compare compares two Digest maps and returns the additions and modification -// keys as arrays. -func Compare(baseDigest, newDigest map[uint64]uint64) (additions []uint64, modifications []uint64) { - maxSize := len(newDigest) - additions = make([]uint64, maxSize) - modifications = make([]uint64, maxSize) - - additionCounter := 0 - modificationCounter := 0 - for k, newVal := range newDigest { - if oldVal, present := baseDigest[k]; present { - if newVal != oldVal { - //Modifications - modifications[modificationCounter] = k - modificationCounter++ - } - } else { - //Additions - additions[additionCounter] = k - additionCounter++ - } - } - return additions[:additionCounter], modifications[:modificationCounter] -} - // Difference represents the additions and modifications // between the two Configs type Difference struct { diff --git a/pkg/digest/compare_test.go b/pkg/digest/compare_test.go index 45fff8e..3f94e29 100644 --- a/pkg/digest/compare_test.go +++ b/pkg/digest/compare_test.go @@ -8,29 +8,6 @@ import ( "github.com/stretchr/testify/assert" ) -func TestCompare(t *testing.T) { - baseDigest := map[uint64]uint64{ - 10000106069522789940: 11608188164212916000, - 10000305084889337335: 11796412213504516000, - 10024909476616779194: 14500526491611670000, - 1004896778135186857: 15778011848259830000, - } - - newDigest := map[uint64]uint64{ - 10000106069522789940: 11608188164212916000, - 10000305084889337335: 11796412213504516001, - 10049141081086325814: 12259600610026582000, - } - - additions, modifications := digest.Compare(baseDigest, newDigest) - - expectedAdditions := []uint64{10049141081086325814} - expectedModifications := []uint64{10000305084889337335} - - assert.Equal(t, expectedAdditions, additions) - assert.Equal(t, expectedModifications, modifications) -} - func TestDiff(t *testing.T) { base := `1,col-1,col-2,col-3,one-value 2,col-1,col-2,col-3,two-value