From c546a7eeb23853765e23d9d6cd1f5e6fb8709b8d Mon Sep 17 00:00:00 2001 From: Kleonikos Kyriakis Date: Tue, 23 Apr 2024 10:30:41 +0300 Subject: [PATCH] Remove redundant examples --- examples/compression/7zip/sevenzip.go | 41 --- examples/compression/lz4/lz4.go | 131 ------- .../manual-splitter/splitter-checksums.go | 140 ------- examples/compression/test.txt | 341 ------------------ examples/compression/zstd/zstd.go | 46 --- examples/mautrix/main.go | 153 -------- 6 files changed, 852 deletions(-) delete mode 100644 examples/compression/7zip/sevenzip.go delete mode 100644 examples/compression/lz4/lz4.go delete mode 100644 examples/compression/manual-splitter/splitter-checksums.go delete mode 100644 examples/compression/test.txt delete mode 100644 examples/compression/zstd/zstd.go delete mode 100644 examples/mautrix/main.go diff --git a/examples/compression/7zip/sevenzip.go b/examples/compression/7zip/sevenzip.go deleted file mode 100644 index 6340e94e..00000000 --- a/examples/compression/7zip/sevenzip.go +++ /dev/null @@ -1,41 +0,0 @@ -/* - * Copyright (C) 2022-2023, Chain4Travel AG. All rights reserved. - * See the file LICENSE for licensing terms. - */ - -package main - -import ( - "fmt" - "os" - "os/exec" -) - -func compressAndSplit(inputFilePath, outputArchivePath string, chunkSizeKB int) error { - cmd := exec.Command("7z", "a", fmt.Sprintf("-v%dk", chunkSizeKB), outputArchivePath, inputFilePath) - cmd.Stdout = os.Stdout - cmd.Stderr = os.Stderr - - err := cmd.Run() - if err != nil { - return fmt.Errorf("failed to compress and split: %v", err) - } - - return nil -} - -func main() { - wd, _ := os.Getwd() - - inputFilePath := wd + "/examples/compression/test.pdf" - outputArchivePath := "output_archive.7z" - chunkSizeMB := 40 - - err := compressAndSplit(inputFilePath, outputArchivePath, chunkSizeMB) - if err != nil { - fmt.Println("Error:", err) - return - } - - fmt.Println("Compression and splitting completed.") -} diff --git a/examples/compression/lz4/lz4.go b/examples/compression/lz4/lz4.go deleted file mode 100644 index c19cae7f..00000000 --- a/examples/compression/lz4/lz4.go +++ /dev/null @@ -1,131 +0,0 @@ -/* - * Copyright (C) 2022-2023, Chain4Travel AG. All rights reserved. - * See the file LICENSE for licensing terms. - */ - -package main - -import ( - "bytes" - "fmt" - "io" - "io/ioutil" - "log" - "math" - "os" - "strconv" - - "github.com/pierrec/lz4" -) - -const chunkSize = 48 << 10 // 48KB according to element "safe" limit - -func compress(in []byte) ([]byte, error) { - r := bytes.NewReader(in) - w := &bytes.Buffer{} - zw := lz4.NewWriter(w) - _, err := io.Copy(zw, r) - if err != nil { - return nil, err - } - // Closing is *very* important - if err := zw.Close(); err != nil { - return nil, err - } - return w.Bytes(), nil -} - -func compressAndSplit(inputFilePath, outputDirectory string) (uint, error) { - bytes, err := os.ReadFile(inputFilePath) - if err != nil { - return 0, err - } - compressedData, err := compress(bytes) - - // Perform chunking on the compressed content and write chunks to separate files - for i := 0; i < len(compressedData); i += chunkSize { - end := i + chunkSize - if end > len(compressedData) { - end = len(compressedData) - } - - chunk := compressedData[i:end] - - // Create a new file for writing compressed chunk - compressedChunkFilePath := fmt.Sprintf("%s_%s.lz4", outputDirectory, strconv.Itoa(i/chunkSize)) - compressedChunkFile, err := os.Create(compressedChunkFilePath) - if err != nil { - return 0, fmt.Errorf("error creating compressed file: %v", err) - } - - // Write the compressed chunk - _, err = compressedChunkFile.Write(chunk) - if err != nil { - return 0, fmt.Errorf("error writing compressed data to file: %v", err) - } - - // Close the compressed chunk file - err = compressedChunkFile.Close() - if err != nil { - return 0, fmt.Errorf("error closing compressed file: %v", err) - } - - log.Printf("Compression successful for chunk %d", i/chunkSize) - } - - return uint(math.Ceil(float64(len(compressedData)) / chunkSize)), nil -} - -func combineAndDecompress(inputPrefix, outputFilePath string, numberOfChunks uint) error { - var compressedChunks []byte - for i := uint(0); i < numberOfChunks; i++ { - inputFilePath := fmt.Sprintf("%s_%d.lz4", inputPrefix, i) - compressedChunk, err := os.ReadFile(inputFilePath) - if err == io.EOF { - break - } else if err != nil { - return err - } - compressedChunks = append(compressedChunks, compressedChunk...) - } - - // Create a decompressor - r := lz4.NewReader(bytes.NewReader(compressedChunks)) - - // Decompress data - decompressedData, err := ioutil.ReadAll(r) - if err != nil { - log.Fatalf("Error decompressing data: %v", err) - } - - // Write decompressed data to a new file - err = os.WriteFile(outputFilePath, decompressedData, 0644) - if err != nil { - log.Fatalf("Error writing decompressed data to file: %v", err) - } - - return nil -} - -func main() { - wd, _ := os.Getwd() - - inputFilePath := wd + "/examples/compression/test.pdf" - outputPrefix := wd + "/my_large_file_split" - outputFilePath := wd + "/my_large_file_combined.pdf" - - // Compress and split the file - numberOfChunks, err := compressAndSplit(inputFilePath, outputPrefix) - if err != nil { - fmt.Println("Error compressing and splitting:", err) - return - } - - // Combine and decompress the chunks - if err := combineAndDecompress(outputPrefix, outputFilePath, numberOfChunks); err != nil { - fmt.Println("Error combining and decompressing:", err) - return - } - - fmt.Println("Compression and decompression with chunking completed.") -} diff --git a/examples/compression/manual-splitter/splitter-checksums.go b/examples/compression/manual-splitter/splitter-checksums.go deleted file mode 100644 index 474d13be..00000000 --- a/examples/compression/manual-splitter/splitter-checksums.go +++ /dev/null @@ -1,140 +0,0 @@ -/* - * Copyright (C) 2022-2023, Chain4Travel AG. All rights reserved. - * See the file LICENSE for licensing terms. - */ - -package main - -import ( - "crypto/sha256" - "flag" - "fmt" - "io" - "os" -) - -func main2() { - var inputFile string - var outputPrefix string - var chunkSize int - - wd, _ := os.Getwd() - inputFilePath := wd + "/examples/compression/test.pdf" - - flag.StringVar(&inputFile, "input", inputFilePath, "Input file to be split") - flag.StringVar(&outputPrefix, "output-prefix", "output", "Output file prefix") - flag.IntVar(&chunkSize, "chunk-size", 1000, "Size of each chunk in lines") - flag.Parse() - - if inputFile == "" { - fmt.Println("Please provide an input file using the -input flag") - os.Exit(1) - } - - // Open the input file - input, err := os.Open(inputFile) - if err != nil { - fmt.Printf("Error opening input file: %s\n", err) - os.Exit(1) - } - defer input.Close() - - // Initialize variables - buf := make([]byte, 1024) - var chunkCount int - var currentChunkSize int - hasher := sha256.New() - - // Create and open the first output file - outputFile, err := createOutFile(outputPrefix, chunkCount) - if err != nil { - fmt.Printf("Error creating output file: %s\n", err) - os.Exit(1) - } - defer outputFile.Close() - - // Iterate over the input file - for { - // Read a chunk of data from the input file - n, err := input.Read(buf) - if err != nil && err != io.EOF { - fmt.Printf("Error reading input file: %s\n", err) - os.Exit(1) - } - - // Update the hash with the current chunk - hasher.Write(buf[:n]) - - // Write the chunk to the current output file - _, err = outputFile.Write(buf[:n]) - if err != nil { - fmt.Printf("Error writing to output file: %s\n", err) - os.Exit(1) - } - - currentChunkSize += n - - fmt.Printf("Chunk %d: %d bytes\n", chunkCount, n) - // Check if the current chunk size exceeds the specified chunk size - if currentChunkSize >= chunkSize { - // Close the current output file - outputFile.Close() - - // Calculate the checksum for the current file - checksum := fmt.Sprintf("%x", hasher.Sum(nil)) - - // Append checksum and reference to the next split file to the current file - appendReferenceToCurrentFile(outputPrefix, chunkCount, checksum, chunkCount+1) - - // Reset the hash and create and open the next output file - hasher = sha256.New() - outputFile, err = createOutFile(outputPrefix, chunkCount+1) - if err != nil { - fmt.Printf("Error creating output file: %s\n", err) - os.Exit(1) - } - - // Reset the current chunk size - currentChunkSize = 0 - fmt.Printf("currentChunkSize %d: %d bytes\n", currentChunkSize, n) - } - - // Break the loop if we've reached the end of the input file - if err == io.EOF { - break - } - } - - // Close the last output file - outputFile.Close() - - fmt.Println("Split operation completed successfully.") -} - -// createOutFile creates a new output file with the specified prefix and chunk count. -func createOutFile(prefix string, count int) (*os.File, error) { - filename := fmt.Sprintf("%s_%d", prefix, count) - return os.Create(filename) -} - -// appendReferenceToCurrentFile appends the checksum and reference to the next split file to the current file. -func appendReferenceToCurrentFile(prefix string, count int, checksum string, nextCount int) { - currentFilename := fmt.Sprintf("%s_%d", prefix, count) - nextFilename := fmt.Sprintf("%s_%d", prefix, nextCount) - - // Open the current file for appending - file, err := os.OpenFile(currentFilename, os.O_APPEND|os.O_WRONLY, os.ModeAppend) - if err != nil { - fmt.Printf("Error opening file for appending: %s\n", err) - os.Exit(1) - } - defer file.Close() - - // Write the checksum and reference to the next split file - content := fmt.Sprintf("Checksum: %s\nNextFile: %s\n", checksum, nextFilename) - _, err = file.WriteString(content) - if err != nil { - fmt.Printf("Error writing to file: %s\n", err) - os.Exit(1) - } -} diff --git a/examples/compression/test.txt b/examples/compression/test.txt deleted file mode 100644 index 3560e73d..00000000 --- a/examples/compression/test.txt +++ /dev/null @@ -1,341 +0,0 @@ -Lorem ipsum dolor sit amet, consectetur adipiscing elit. Mauris feugiat pretium urna, ut imperdiet leo fermentum in. Quisque congue, arcu ac congue tempus, nunc nibh facilisis mi, iaculis fringilla odio libero gravida libero. Curabitur vel tristique dui. Vestibulum rhoncus orci at erat lacinia vehicula. Nunc a fermentum est. Maecenas blandit quam nisi, et cursus felis consectetur quis. Sed varius cursus ullamcorper. Sed vitae facilisis erat. Donec pellentesque luctus purus, nec dictum elit consequat eget. Morbi eget mi ut quam consectetur vehicula. Praesent justo arcu, vulputate sit amet lectus non, pharetra sagittis sapien. Integer ac lorem eget tortor sollicitudin tincidunt ut et quam. Aenean accumsan scelerisque leo, et iaculis diam molestie a. Nullam sodales eros leo, quis dapibus nulla feugiat sed. - -Fusce lobortis augue id nisi placerat, at vehicula nulla vulputate. Pellentesque gravida, mi et laoreet pharetra, nunc erat aliquam enim, et blandit velit nulla vel lectus. Nunc feugiat leo sed maximus imperdiet. Suspendisse quis sem tellus. Quisque pulvinar, dolor ac porta sodales, tellus ante lobortis tellus, nec ullamcorper nibh ipsum a nisi. Pellentesque vitae lorem egestas, lobortis justo nec, euismod ligula. Vestibulum ut rutrum nisi. In lacinia orci ut lacus commodo, sed eleifend nisl ornare. - -Curabitur leo nisi, facilisis ut ipsum tempus, vehicula commodo elit. Vestibulum venenatis odio ac urna porta placerat. Ut non sem eget libero auctor hendrerit. Curabitur metus nulla, dapibus quis augue vitae, porttitor eleifend sem. Vestibulum ante ipsum primis in faucibus orci luctus et ultrices posuere cubilia curae; Cras dui velit, auctor vel ornare ut, dignissim a enim. In ac leo ut sem dictum elementum non non velit. Etiam non tempor odio, in porttitor nunc. Vivamus risus nibh, cursus vitae lacus eu, mollis consectetur est. Proin tempus dolor urna, eu tincidunt magna rhoncus at. Nullam vel elit a mi dapibus porttitor a sed eros. Nullam ornare felis rhoncus elementum scelerisque. - -Fusce eu lorem eget lacus tincidunt mollis vel vitae urna. Aenean dolor mauris, porttitor in aliquam sit amet, sollicitudin pellentesque ante. Quisque vel mattis dui, nec varius libero. Donec varius placerat laoreet. Proin aliquet quam quis ex facilisis finibus. Curabitur ultrices, felis sit amet scelerisque dignissim, dolor ipsum posuere risus, eu dictum tellus eros ac ipsum. Aenean cursus ligula eget magna ultricies posuere. Proin in felis lobortis, dictum ex sed, semper neque. Vestibulum non dapibus lectus, in pretium massa. Aliquam in feugiat felis. Pellentesque id consectetur est. Nunc ut cursus enim, fringilla auctor dui. Maecenas ullamcorper, lectus vitae tristique consectetur, ex leo auctor nunc, mattis volutpat ante lectus quis mauris. - -Cras eu viverra erat. Fusce est arcu, ullamcorper et magna a, ullamcorper placerat felis. Pellentesque nisi magna, lacinia sit amet ultricies ut, aliquam ut sapien. Nam metus mi, convallis quis ligula eget, hendrerit elementum tortor. Interdum et malesuada fames ac ante ipsum primis in faucibus. Nulla libero arcu, semper finibus massa ut, euismod fermentum magna. Suspendisse bibendum molestie libero nec mollis. Phasellus sed nunc sit amet arcu maximus imperdiet interdum eu eros. Fusce tristique, nisl sed faucibus commodo, lorem eros accumsan sapien, eu hendrerit justo arcu nec lorem. Etiam diam velit, vulputate ut urna quis, iaculis scelerisque metus. Integer finibus et nulla ut auctor. Vestibulum ante ipsum primis in faucibus orci luctus et ultrices posuere cubilia curae; - -Donec est erat, vulputate eget neque ac, interdum ultricies nulla. Donec facilisis ex hendrerit mi bibendum, quis pulvinar neque varius. Sed cursus sodales feugiat. Pellentesque pretium nunc orci, eu pulvinar massa pellentesque sit amet. Donec neque nunc, rutrum vel vestibulum vel, porta eu est. Fusce faucibus lectus ut sapien interdum aliquam. Cras ut venenatis metus, ut luctus orci. Nunc ultricies augue in mi ornare ultrices. Nunc sem tellus, eleifend sed porta ac, rutrum quis quam. Aliquam tellus urna, scelerisque non lorem nec, sodales tempor purus. Suspendisse scelerisque, nisl at pulvinar auctor, massa massa ultrices dolor, nec sagittis mi lacus vel ligula. Nulla facilisi. Curabitur urna sem, tincidunt in purus id, varius ornare enim. Duis ut convallis nibh. Cras mi dui, dapibus et sagittis ut, mollis sed lorem. Praesent ut lobortis ante. - -Vestibulum porttitor tempor diam. Proin maximus, enim at commodo lacinia, purus sem pellentesque augue, non placerat diam sapien nec risus. Phasellus pellentesque urna risus, eu vehicula tortor vulputate id. Phasellus a erat tortor. Aliquam erat volutpat. Nunc et suscipit ante. Integer urna dolor, blandit vel mattis ac, tempus sit amet ipsum. Praesent quam libero, vehicula et est id, posuere ullamcorper leo. Mauris venenatis quam id diam egestas, id tempor enim tristique. In placerat nulla a magna finibus, vel laoreet est lacinia. Aenean sodales auctor pharetra. Nulla sollicitudin congue posuere. Aliquam gravida accumsan orci ac varius. Morbi sed mattis velit. Nam interdum, nisi vitae rhoncus volutpat, ipsum neque vestibulum ante, et posuere est tellus vel mi. - -Phasellus pellentesque leo vitae ligula euismod ultricies scelerisque a est. Donec accumsan diam vel diam cursus interdum. Fusce blandit odio quam, non tempor lacus pulvinar non. Orci varius natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus. Proin ultrices a arcu nec egestas. Nunc tincidunt ut tortor vitae porttitor. Fusce vestibulum sapien sit amet erat ullamcorper dictum. - -Duis vitae vulputate elit. In et erat tincidunt ex ultrices scelerisque eu quis nibh. Morbi fringilla accumsan leo eu viverra. Nam dapibus felis quam, eget cursus nunc aliquam et. Donec venenatis, arcu at consequat hendrerit, est erat lacinia odio, eu dignissim dui velit nec mi. Fusce et pellentesque odio. Aliquam non leo sodales, suscipit enim ut, molestie mi. Ut mollis aliquet placerat. Vivamus tincidunt arcu quam, vel pharetra nulla eleifend ac. Mauris vel pellentesque magna. Nullam malesuada vitae justo sit amet tristique. Phasellus vel velit laoreet, bibendum quam eget, ullamcorper tellus. Nulla sed fringilla sapien. Quisque elementum sem ac lobortis vehicula. - -Suspendisse id pharetra eros, a pharetra augue. Vivamus eu neque scelerisque, auctor enim vitae, eleifend orci. Aliquam erat volutpat. Fusce lobortis commodo tortor sit amet laoreet. Suspendisse consectetur magna quis odio tempor condimentum. Nunc et nunc venenatis, condimentum dui vitae, mattis nisl. Curabitur at accumsan eros. In aliquet justo a nisi varius semper. In id urna ac dolor euismod elementum. Nam luctus ipsum nunc, a malesuada dolor eleifend at. Nam efficitur laoreet libero, at porttitor erat bibendum in. Duis id bibendum diam. Nulla dignissim tortor sit amet neque sagittis varius. Curabitur a porta leo. - -Vestibulum orci justo, hendrerit at magna at, tincidunt finibus tortor. Nam imperdiet nunc velit, ut tempus nulla molestie a. Vivamus fermentum enim vel libero molestie pharetra. Nam erat magna, convallis eu ex in, pellentesque hendrerit odio. Morbi facilisis auctor dolor, vitae molestie odio mattis id. Suspendisse lacinia a quam eu lobortis. Proin eu ligula sit amet erat pretium dictum. - -Pellentesque eget diam gravida, condimentum dui suscipit, elementum purus. Nunc nisl mi, pulvinar non odio sed, rhoncus scelerisque libero. Phasellus nec congue erat. Interdum et malesuada fames ac ante ipsum primis in faucibus. Proin felis velit, consectetur sit amet convallis et, porttitor id turpis. Proin diam tellus, scelerisque sed pulvinar eget, ultrices nec magna. Integer fermentum vulputate sapien, eget lacinia turpis ultricies in. Cras efficitur eros et ultrices efficitur. Mauris placerat luctus mauris, eu varius felis posuere nec. Nam arcu ipsum, ultrices nec sagittis ut, bibendum ut leo. Aenean cursus lacus vitae malesuada ornare. Donec dictum urna quis turpis imperdiet, ut porttitor dui finibus. Duis interdum eu nulla eu mollis. In iaculis sem risus, quis blandit massa efficitur in. Integer nec tempor ipsum, et dignissim lorem. Nunc justo leo, laoreet ac luctus vitae, aliquet vitae lectus. - -Duis vitae nulla ultrices, volutpat mi vel, elementum elit. Etiam at molestie purus, vitae pretium nibh. Pellentesque habitant morbi tristique senectus et netus et malesuada fames ac turpis egestas. Nunc porta ullamcorper sem eu blandit. Duis laoreet faucibus sapien vel dictum. Suspendisse nec leo nec nisi gravida eleifend sit amet a lacus. Duis elementum vehicula magna, sed euismod nulla faucibus a. Cras vitae vehicula massa. - -Maecenas vitae lorem ut neque sagittis dictum. Donec ut tellus a leo viverra laoreet eget ac urna. Aenean efficitur sagittis ante, sit amet rhoncus ante ornare ut. In gravida, metus vitae tempor viverra, felis nibh pellentesque tellus, quis ultrices tortor est ac lectus. Donec in nisi mauris. Pellentesque imperdiet dolor libero, sit amet mollis leo tempor vel. Morbi eu venenatis justo. Integer id risus at justo rhoncus pellentesque. Integer blandit pretium lobortis. Phasellus ac vestibulum eros. Aliquam finibus nunc non mi cursus, id imperdiet mauris imperdiet. Praesent diam mauris, condimentum semper ante sed, pulvinar tempus leo. - -Vivamus rutrum lobortis elit pellentesque elementum. Aenean sed dui justo. Etiam nec eros neque. Vivamus bibendum leo sed fermentum ultrices. Morbi sollicitudin ornare venenatis. Phasellus nec placerat ante. Nullam dignissim nulla at pharetra rhoncus. Suspendisse vitae tellus congue ante tempus iaculis. Maecenas volutpat sem id libero tristique, quis ullamcorper est consectetur. - -Quisque sodales rhoncus metus, non dictum enim cursus condimentum. Phasellus scelerisque justo ac sapien semper, imperdiet lacinia augue aliquam. Nulla nisi odio, ullamcorper sed dictum dignissim, consectetur eget eros. Quisque non massa viverra, suscipit ante ultricies, iaculis lectus. Aenean sed metus lorem. Integer viverra, dui id consectetur pharetra, sem ipsum tincidunt ante, vel pulvinar nunc massa sed magna. Cras dignissim semper ante, sed vestibulum arcu euismod eu. Quisque tempus in purus id placerat. In non sem ultricies augue ullamcorper scelerisque. Cras sit amet cursus dui, nec iaculis quam. Cras fringilla elementum mauris maximus tempus. - -Duis elementum urna ut euismod rutrum. Etiam sit amet faucibus ipsum. Curabitur tempus mauris leo, non ornare ante vestibulum a. Vivamus vulputate aliquam erat id vehicula. Suspendisse sed elementum nibh. Nam condimentum sit amet est ac rutrum. Aliquam enim enim, cursus in quam sed, fringilla pharetra felis. Cras orci sapien, cursus et sollicitudin a, lobortis eget turpis. Proin et scelerisque enim. Duis sed massa id ex dignissim commodo feugiat nec ipsum. Nulla vel pharetra sapien. Proin iaculis dui mi, a sagittis purus elementum at. Aenean ligula ante, consequat a tincidunt et, lacinia varius turpis. Ut mattis justo at felis maximus, sit amet lobortis nibh bibendum. Donec nisl justo, luctus vitae varius vel, tempus euismod dolor. Aliquam sodales in turpis vitae feugiat. - -Vivamus ultricies, quam vel sagittis malesuada, tellus mauris posuere ligula, non vehicula mi tellus nec turpis. Cras sed odio bibendum, ultricies sapien at, aliquet ex. Ut gravida sollicitudin sem. Proin dictum magna sit amet pharetra scelerisque. Maecenas lacinia quam vitae magna pretium venenatis eget ut justo. Pellentesque sodales fringilla nunc at finibus. Vestibulum ultrices tortor ipsum, eu volutpat nulla pharetra vel. Sed nisi sem, porta et turpis quis, imperdiet dapibus ipsum. Sed non enim auctor, iaculis justo ac, iaculis nisl. Morbi euismod mauris vitae felis faucibus, vel viverra erat ullamcorper. Ut sem felis, varius nec urna id, dictum lobortis lacus. Phasellus eget ornare lectus, ac consectetur lorem. Morbi id maximus purus. Etiam vehicula massa non tincidunt iaculis. Class aptent taciti sociosqu ad litora torquent per conubia nostra, per inceptos himenaeos. - -Maecenas semper, turpis ut lobortis volutpat, magna nulla accumsan mauris, vitae faucibus tortor mi eu augue. Nam porttitor arcu ac quam bibendum consectetur. Vestibulum ullamcorper dolor mauris, et ullamcorper ex tristique aliquet. Sed vulputate vestibulum mi feugiat sollicitudin. Morbi ac accumsan purus. Donec luctus ex risus, ut ultrices lorem sollicitudin sit amet. Pellentesque ullamcorper risus in fermentum eleifend. Fusce sed dolor libero. Cras scelerisque lorem eu cursus volutpat. - -Vivamus et fringilla lectus. Aenean ac dui congue, ornare lacus sit amet, sodales ante. Phasellus convallis ornare nisi, ut cursus ante ornare nec. Maecenas vel est varius, gravida dolor et, ornare elit. Curabitur et orci eu elit dictum convallis sit amet sed nulla. Mauris sit amet pellentesque nulla. Ut rutrum rhoncus velit blandit varius. - -Cras in dolor at est molestie porttitor. Suspendisse neque ligula, rutrum vel mauris consequat, lacinia iaculis dolor. Praesent ultrices risus elementum lectus efficitur convallis. Suspendisse ligula diam, efficitur vel iaculis malesuada, rutrum sed enim. Proin elementum ligula id sapien sollicitudin faucibus. Phasellus faucibus, elit a ullamcorper gravida, diam sem dignissim dui, et aliquam eros lorem vitae ante. Lorem ipsum dolor sit amet, consectetur adipiscing elit. Pellentesque ut purus varius eros accumsan eleifend. Donec quis cursus neque. Nulla sed urna a massa hendrerit lacinia. Interdum et malesuada fames ac ante ipsum primis in faucibus. In sed imperdiet nulla, sed pellentesque lectus. Donec a purus orci. Vestibulum et fringilla magna, vel pellentesque metus. Praesent imperdiet eros enim, vel ultricies ipsum lacinia eget. - -Curabitur sollicitudin vel turpis ut sodales. Donec vel bibendum risus. Duis dictum leo vitae elit fermentum ultricies. Nunc a elit iaculis, placerat nibh non, sagittis purus. Vestibulum nibh nisl, commodo tristique pulvinar sed, interdum ut urna. Ut venenatis imperdiet ex, at tempus augue rhoncus et. Proin at sapien libero. - -Pellentesque in diam lorem. Maecenas egestas in augue consequat tincidunt. Proin vitae lacinia est. Aliquam mattis lorem vel metus rhoncus, et pretium magna egestas. Nam nisi eros, sollicitudin semper porttitor id, lobortis id erat. Sed eu nisi eget ex facilisis finibus vitae vel ex. Maecenas quis ultrices tortor. Phasellus pellentesque arcu et urna facilisis suscipit et posuere massa. Nulla in tristique lorem. Duis blandit, metus sit amet vehicula vehicula, lectus mi venenatis quam, sed aliquam lectus dui a tortor. Donec tincidunt sed nibh id fringilla. Etiam fringilla ipsum sit amet eleifend blandit. Nam sit amet massa vel purus malesuada sagittis. Quisque nulla turpis, feugiat vel est eget, auctor faucibus orci. Vivamus eu felis non libero consequat varius ut et tellus. Phasellus et euismod nisi, sed luctus metus. - -In id luctus ante. Pellentesque id orci ac magna dignissim fermentum. Praesent egestas venenatis lectus. Duis lacinia vulputate ex sed rutrum. Nam sit amet purus vitae purus tempus feugiat. Nulla id iaculis mi. Vestibulum justo nisl, consequat eget metus eu, consequat lacinia elit. - -Aliquam ante justo, semper sit amet purus a, aliquet vulputate est. Praesent eleifend ipsum lacus, at posuere mauris vehicula in. Donec vel elementum velit, ut bibendum urna. Orci varius natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus. Phasellus malesuada ut eros sit amet ornare. In nec luctus lectus, ac lacinia velit. Nullam mauris tortor, dignissim ac quam ut, tempus fringilla erat. Suspendisse ut eros nec leo sollicitudin venenatis. Quisque vel feugiat elit, id fringilla lorem. - -Aenean pulvinar congue libero. Duis rhoncus accumsan elementum. Fusce tempus turpis non lacus pharetra, vitae consectetur turpis bibendum. Morbi vestibulum lectus sapien, sit amet aliquam lectus auctor sed. Curabitur vitae congue lectus. Vivamus vel fringilla turpis, ac fermentum neque. Ut laoreet pulvinar ipsum nec malesuada. Aliquam sit amet massa at nunc fringilla ornare. Donec pretium finibus est a egestas. Proin at magna mattis mauris consequat convallis sed sit amet eros. - -Nunc dapibus non neque at varius. Quisque lacinia lectus lorem, in vestibulum ex aliquam tincidunt. Sed sem lacus, ullamcorper sit amet faucibus et, laoreet elementum eros. Nam aliquet ex neque, eget maximus diam fringilla sit amet. Mauris vel commodo tortor, non cursus nulla. Suspendisse potenti. Curabitur et finibus nulla. Aenean varius, quam eu euismod dictum, ex enim interdum dui, non facilisis ex massa eleifend dui. Nullam lectus lectus, bibendum eu neque non, aliquam suscipit ante. Nunc orci libero, imperdiet quis consectetur nec, sagittis sit amet nulla. Mauris sagittis molestie hendrerit. - -Phasellus eu cursus sapien. Nunc sed tellus suscipit, blandit nisl non, porttitor tortor. Cras tincidunt leo sed arcu tempor, ut eleifend orci vulputate. Quisque volutpat, lacus in posuere accumsan, enim justo congue quam, ac dictum felis sem eu lorem. Vestibulum dui elit, porta et leo vel, ultrices facilisis leo. Aliquam a purus ullamcorper, accumsan dolor sed, dignissim augue. Integer convallis cursus maximus. Vestibulum ante ipsum primis in faucibus orci luctus et ultrices posuere cubilia curae; Donec quis nulla a erat luctus facilisis in ut nulla. - -Suspendisse at rhoncus sem. Donec neque dui, convallis vel arcu non, condimentum congue mauris. Aliquam erat volutpat. Quisque a urna dignissim, tempus ipsum eget, mollis leo. Ut sit amet quam mauris. Donec suscipit quam purus, a faucibus est pretium id. Pellentesque porta odio sed lorem eleifend semper. Vivamus consectetur imperdiet orci id condimentum. Phasellus sodales massa velit, ut lobortis dui tristique vel. - -Phasellus consectetur lorem nisl, in venenatis elit posuere ac. Donec mollis quis metus id imperdiet. Etiam consectetur molestie tellus eu consequat. Aliquam erat volutpat. Vestibulum non aliquam leo, et malesuada ex. Curabitur id nisi imperdiet, finibus urna ut, convallis nisi. Pellentesque habitant morbi tristique senectus et netus et malesuada fames ac turpis egestas. Sed malesuada auctor tortor mollis venenatis. Morbi nec quam sapien. Nulla nisi ipsum, ultricies at molestie vel, ultricies eu lorem. - -Donec faucibus eleifend vestibulum. Maecenas sollicitudin ullamcorper pellentesque. Morbi cursus porttitor lorem, sed ultricies nunc tristique id. Integer ac justo porta, porttitor lacus nec, luctus ipsum. Aliquam rhoncus lacus eget lacinia elementum. Ut et ultrices justo. Duis sit amet accumsan erat. In scelerisque dolor et turpis cursus, sit amet blandit dolor fermentum. Interdum et malesuada fames ac ante ipsum primis in faucibus. - -Praesent posuere sapien ornare posuere lobortis. Maecenas venenatis ullamcorper laoreet. Vivamus ipsum ipsum, pharetra in est sit amet, viverra pellentesque erat. Sed quis tellus id ipsum sodales gravida nec tempor ex. Vivamus nibh enim, ultrices sed porttitor in, pharetra ut arcu. Etiam sed lacus at erat cursus ullamcorper. In tempor tortor non facilisis condimentum. Nullam a gravida lectus. Morbi porta ante at aliquet rutrum. Phasellus maximus sapien a pulvinar semper. Ut congue leo eu laoreet consequat. Nam ipsum ex, hendrerit non tellus nec, ornare luctus nisl. Fusce commodo consectetur tellus eget elementum. Proin eu dolor gravida, iaculis odio quis, volutpat massa. - -Cras a dictum felis. Aliquam erat volutpat. Nullam eget dignissim velit, vitae gravida magna. Etiam tempus vulputate maximus. Nullam feugiat non est nec venenatis. Duis maximus mattis ante, luctus facilisis leo. Etiam commodo augue quis ligula lobortis, quis luctus massa malesuada. Vivamus egestas nibh ipsum. Phasellus porta nec tellus in vehicula. Mauris in lacus velit. Vivamus vulputate feugiat tortor et pharetra. Integer tincidunt elementum tristique. Nam laoreet augue tortor, in ornare felis aliquam sed. Ut ullamcorper sem orci, ut sollicitudin erat aliquam id. - -Duis vel mollis mi. Morbi euismod feugiat suscipit. Cras lobortis imperdiet quam, eget condimentum orci gravida aliquam. Pellentesque laoreet varius arcu. Proin nec congue odio. Nam vel lacus venenatis, hendrerit felis at, posuere diam. Pellentesque sit amet accumsan justo. Integer metus quam, egestas non condimentum non, gravida at diam. - -Morbi in tincidunt ante, ut porta augue. Ut mauris quam, viverra nec vulputate sit amet, ullamcorper elementum orci. Aenean odio eros, gravida sit amet est a, sodales imperdiet ligula. Maecenas euismod tempor nisi eu tempor. Quisque tristique libero et sapien molestie ullamcorper. Phasellus mauris tortor, imperdiet eget tempor ut, iaculis ac mi. Nunc bibendum turpis a mi hendrerit, et interdum urna molestie. Aliquam erat volutpat. Cras a diam quis elit gravida facilisis a et odio. Pellentesque auctor enim fringilla sapien ultrices, ut tristique purus dignissim. Quisque elementum orci egestas magna euismod, cursus dignissim sem mattis. Integer et ipsum libero. Aenean elementum posuere dolor vitae dictum. Pellentesque pellentesque id sapien at efficitur. - -Phasellus consequat diam diam, et luctus magna tempus quis. Donec malesuada enim sapien, sed ultrices lectus eleifend id. Phasellus euismod orci id pellentesque tempus. Etiam sollicitudin magna id nisi volutpat, vitae sodales augue euismod. Cras sit amet turpis ut tellus consequat blandit. Praesent finibus hendrerit laoreet. Sed in massa a ligula tempor elementum ac vel ligula. Donec eleifend, lectus id viverra dictum, risus ligula interdum odio, condimentum ullamcorper libero mauris laoreet velit. Vestibulum ante ipsum primis in faucibus orci luctus et ultrices posuere cubilia curae; Morbi pellentesque sem vel lorem hendrerit, sed fermentum risus feugiat. Vivamus quis nulla fermentum, ultrices orci convallis, cursus justo. Sed vehicula turpis purus, quis commodo lorem mollis id. - -Cras dictum porta massa et feugiat. In rhoncus sem nec urna accumsan auctor in varius dolor. Sed at erat molestie, cursus odio id, tristique ipsum. Sed at orci a nunc ullamcorper mollis. Proin egestas sem metus, sed feugiat sem efficitur a. Maecenas ut orci et tortor fringilla egestas. Fusce ante urna, varius in ipsum in, efficitur dignissim dui. Praesent quis semper quam, vel bibendum odio. Nulla vel nisi ex. Sed at quam quis nisi ullamcorper pretium at at nisl. - -Aliquam maximus metus sit amet tortor blandit, eget rhoncus lorem bibendum. Nam rhoncus risus quis turpis molestie venenatis. Nunc blandit, lectus nec venenatis cursus, leo nisi porttitor nisl, in feugiat sem nunc non lectus. Vestibulum posuere velit eget mauris suscipit pellentesque. Aenean vel elit consequat, viverra mi rutrum, aliquet arcu. Integer vitae tortor sit amet sem semper volutpat. Quisque sit amet maximus lacus, ac consectetur lacus. Aliquam sit amet iaculis sapien. Proin nisl augue, tempor eu sapien ac, fermentum fringilla lorem. - -Vestibulum malesuada nulla et blandit pharetra. Curabitur ornare erat in lorem volutpat dictum. Curabitur molestie ligula id nisi finibus, quis tincidunt quam semper. Integer tortor lorem, finibus accumsan finibus in, fringilla scelerisque augue. Cras imperdiet neque in arcu laoreet hendrerit. Vivamus ac volutpat diam, dapibus mollis dolor. Pellentesque eu metus vel mi tincidunt pellentesque. Nunc ac dignissim nulla, vel fringilla purus. Mauris vitae libero ac magna accumsan laoreet. Donec nisi felis, tincidunt nec blandit consequat, aliquet nec sem. Integer vestibulum arcu ut nisi dictum dictum. Cras ultrices efficitur massa, at dictum ex scelerisque in. Fusce vulputate orci elit, non commodo nisi euismod a. Sed aliquet ipsum nisi. - -Curabitur in viverra purus. Fusce odio odio, mattis quis velit a, sollicitudin mattis eros. Nulla nec porttitor tellus. In fringilla augue sed ornare rhoncus. Phasellus ac blandit magna. Nunc sed elit sapien. Aenean ornare tellus et quam pulvinar mattis. - -Nulla facilisi. Curabitur faucibus id mauris sed lobortis. Nulla facilisi. Nullam ullamcorper, ex sed sagittis posuere, erat eros tincidunt quam, ac tristique neque dolor a elit. Suspendisse quis nisi sit amet diam pulvinar vestibulum. Suspendisse convallis mauris est, at dapibus magna congue vel. Fusce viverra nisl fringilla nibh rutrum, eget congue orci feugiat. Aliquam velit sem, commodo quis rhoncus cursus, tempor eget sem. Etiam eleifend, velit nec porttitor pretium, purus turpis hendrerit dolor, sit amet fermentum enim urna non nibh. Class aptent taciti sociosqu ad litora torquent per conubia nostra, per inceptos himenaeos. Cras ut imperdiet quam, ut vehicula lacus. Pellentesque semper augue ut eros interdum, vitae imperdiet diam tristique. Nunc tincidunt, augue ac sagittis sodales, sem enim tristique nisi, ac interdum nulla elit non dui. Nam vehicula ultrices felis dictum sodales. - -Nulla facilisi. Suspendisse sodales odio at consequat sagittis. Ut rutrum in ligula id interdum. Nulla interdum risus ac vulputate euismod. Nulla eget condimentum nibh. Cras laoreet id tellus porttitor imperdiet. Aenean viverra sollicitudin aliquam. Nunc euismod orci nunc, et ultricies augue volutpat nec. Quisque elit libero, interdum eget diam in, porta rutrum eros. Etiam pellentesque ante vel fringilla lacinia. Proin ornare nibh sapien. Sed non dignissim turpis, a fringilla arcu. Vivamus sollicitudin tortor at ex rutrum consectetur. Nunc elit massa, fringilla nec semper in, tincidunt in purus. Nulla gravida ac nunc at cursus. Sed sit amet odio sed tortor ullamcorper pharetra vel vel est. - -Maecenas rhoncus leo lorem, sit amet sodales leo euismod nec. Nulla porttitor ac lectus ac consequat. Cras ipsum arcu, sodales ac massa id, elementum condimentum quam. Sed iaculis eget eros non gravida. Vestibulum elementum ut felis non congue. Praesent mi quam, tincidunt non nulla volutpat, sollicitudin scelerisque purus. Praesent molestie imperdiet dolor, nec porttitor magna vulputate non. Phasellus vestibulum sapien nec egestas tempus. Etiam nec neque dolor. Integer a lacinia ligula. - -Phasellus lobortis ante neque, id finibus purus tincidunt at. Suspendisse faucibus dui eget augue tincidunt gravida. Duis turpis sem, aliquet vitae nibh sit amet, lacinia convallis velit. Mauris vel metus semper, condimentum orci in, faucibus leo. Aenean viverra ante in velit ultrices, ut laoreet velit commodo. Nulla vitae hendrerit libero, non tempus magna. Donec condimentum lacus vel arcu tincidunt, vitae rutrum lectus varius. Pellentesque lectus nisl, laoreet sed interdum vitae, imperdiet nec lectus. In massa leo, egestas non ultrices pulvinar, vulputate ut dolor. In hac habitasse platea dictumst. Sed at lectus mauris. - -Praesent ut rhoncus dolor. Nulla augue magna, varius sit amet ullamcorper in, mollis et neque. Fusce ultricies, leo eu egestas feugiat, sem est ullamcorper quam, ac fringilla ipsum risus vel sapien. Aenean a eros nulla. Aliquam id massa semper, luctus metus a, varius ante. Pellentesque habitant morbi tristique senectus et netus et malesuada fames ac turpis egestas. Nunc eget turpis rhoncus, volutpat risus sit amet, pharetra ipsum. Nulla ex lorem, semper at dolor vel, convallis volutpat risus. Sed purus eros, pharetra sodales tellus id, elementum vulputate diam. Pellentesque commodo efficitur nulla, quis luctus sapien blandit in. Phasellus egestas orci a enim gravida volutpat. - -Suspendisse ultricies in mauris sed suscipit. Mauris ac tristique augue. Vestibulum vitae euismod massa. Vestibulum vitae tempus est, et malesuada nisi. Proin elit mi, commodo quis massa nec, feugiat euismod sem. Vivamus posuere lectus imperdiet accumsan pharetra. Nullam pharetra arcu in massa congue, ac ornare purus gravida. Fusce a mattis arcu. Etiam et tincidunt nunc, semper commodo mauris. Sed ut tempor nulla. Sed tempus non massa ut finibus. Proin sit amet ex at odio sagittis imperdiet. Quisque sit amet dolor quis dolor consectetur varius. Nam hendrerit porta nulla id iaculis. Donec pharetra purus pharetra luctus pulvinar. - -Morbi sit amet viverra ipsum, et auctor erat. Donec nec ipsum tincidunt, ultrices libero sed, pulvinar ligula. Sed et facilisis urna. Aliquam gravida a nibh eu malesuada. Donec aliquam velit pharetra, lacinia tortor a, volutpat velit. Etiam hendrerit, erat ac pellentesque auctor, nisi arcu fringilla nibh, sed luctus orci elit vel mauris. Phasellus volutpat sollicitudin erat a pharetra. Nam et tristique ligula. - -Aenean sit amet sem egestas, accumsan odio at, congue justo. Morbi finibus, quam sit amet finibus convallis, enim dolor egestas mauris, vitae efficitur ex massa ac eros. Etiam vehicula, odio semper iaculis mattis, felis nisl pellentesque odio, quis maximus felis ligula laoreet augue. Pellentesque id nunc dolor. Sed vitae molestie nisi. Mauris elit dolor, suscipit quis est in, pellentesque vestibulum tortor. Sed lectus diam, facilisis id lacinia ut, faucibus sed eros. Nullam vitae ante ut nulla vestibulum ornare non ut urna. Aenean commodo venenatis auctor. Quisque nec auctor erat, id suscipit nulla. Sed maximus dignissim convallis. Aliquam pellentesque dui ac quam placerat maximus. Etiam sapien lacus, interdum ut fringilla eget, scelerisque ut sem. - -Mauris ultrices magna rhoncus, hendrerit tortor tincidunt, fringilla justo. Maecenas nisi nunc, pharetra vitae augue euismod, tincidunt dapibus sapien. Vestibulum eu dapibus ligula, vitae volutpat dui. Donec vitae consectetur felis. In suscipit nunc tortor. Aenean felis quam, vehicula interdum orci vitae, convallis imperdiet libero. Aenean nec tortor nisi. Etiam varius odio neque, id vestibulum felis fringilla vitae. Vestibulum enim tellus, molestie a eros non, placerat accumsan metus. Maecenas vitae maximus velit. Cras faucibus at nisl sit amet tempor. Integer maximus convallis erat, vel sodales risus vestibulum vel. Cras malesuada leo risus, a vehicula urna bibendum nec. Nullam tempus tellus quis eros egestas posuere. Nunc bibendum erat dui, vitae fermentum sapien scelerisque in. - -Praesent quis diam et ligula placerat tincidunt. Donec ac hendrerit sem. Donec finibus ligula ac nisi cursus, in dapibus dolor gravida. Sed semper dolor odio. Nam hendrerit ex in justo maximus, id mattis nisi pellentesque. Nulla facilisi. Integer ut fringilla arcu. Praesent nec purus eu justo imperdiet gravida. Proin placerat placerat velit et interdum. Aenean id sodales nibh. Mauris pharetra non velit non luctus. - -In hendrerit magna id mi auctor, sit amet convallis nulla molestie. In egestas id nisi ut hendrerit. Sed laoreet finibus pellentesque. Nulla molestie ipsum vitae neque ultrices ultricies. Curabitur iaculis lectus a turpis tincidunt varius vel at sapien. Nulla interdum id eros nec tristique. Suspendisse in ipsum scelerisque, cursus tellus a, lacinia lacus. Nunc ultrices auctor consectetur. Maecenas vitae felis maximus, congue erat a, semper lorem. Donec rhoncus nisi nulla, eget mollis mi placerat eget. - -Vestibulum gravida eget neque at hendrerit. Donec tincidunt neque cursus nibh euismod, in semper lorem commodo. Duis faucibus sapien nibh, malesuada placerat est pretium sagittis. Aliquam pretium quam augue, ac blandit sem fermentum a. Nam interdum a augue eu faucibus. Fusce fermentum lacus quis magna tincidunt lacinia. Maecenas nec ipsum sed lectus interdum fringilla. - -Phasellus iaculis risus a felis molestie interdum. Nulla posuere mi non felis semper, et laoreet neque dictum. Mauris viverra tempus velit, eu pretium neque efficitur ac. In non tristique est. Suspendisse ut quam vulputate, accumsan felis a, maximus lorem. Aenean quis ipsum id quam vulputate mattis. Donec consectetur sem mi, a dapibus elit commodo vitae. Quisque ex tortor, dictum in iaculis sit amet, sollicitudin id augue. Nullam fringilla non leo rhoncus hendrerit. Cras metus tortor, semper vel lacus sit amet, lacinia commodo arcu. - -Praesent eu mauris in velit tristique fringilla sed non dolor. Quisque faucibus mattis nisi id congue. Curabitur varius convallis nisl quis lobortis. Aliquam laoreet, mi non auctor pretium, massa ex pharetra tortor, eu tempus arcu dui in est. Morbi tincidunt ullamcorper neque, id condimentum magna bibendum id. Fusce rutrum eros sed turpis fringilla aliquet. Sed dolor magna, dictum non feugiat ac, lobortis vel lectus. Sed non ultrices tortor. Donec at tempus est, id efficitur ante. - -Donec eget ligula nec diam suscipit tincidunt nec sed arcu. Vivamus lacus nunc, malesuada eu ipsum vitae, elementum vulputate tellus. In porta eros vitae lorem ultricies maximus. Donec ex erat, vulputate nec elit sed, dictum pretium ipsum. Donec scelerisque, metus eget tincidunt euismod, lorem magna ornare ante, quis faucibus justo mi eget tortor. Ut accumsan dui non convallis bibendum. Aenean eu lectus nec mauris facilisis feugiat. Duis non augue et nisl placerat mattis fringilla vitae sapien. Duis suscipit et lorem id semper. Nunc bibendum bibendum vestibulum. Donec dapibus orci at metus aliquam, nec malesuada ipsum eleifend. Proin eget pellentesque ligula, a consequat lectus. Aliquam egestas nunc venenatis urna eleifend aliquam. - -Class aptent taciti sociosqu ad litora torquent per conubia nostra, per inceptos himenaeos. Fusce a iaculis purus. Pellentesque sed porta turpis. Pellentesque tellus velit, maximus ut porta ac, blandit et justo. Quisque sed viverra ex. Maecenas facilisis aliquet commodo. Donec vel lorem vitae nunc fringilla luctus. In hendrerit lorem ut magna tincidunt, sed vulputate nisi tempus. Nunc sit amet ornare felis, in hendrerit est. Nullam urna nisi, ornare a nisl eu, pretium vulputate dolor. - -Nullam ut quam non magna pharetra tincidunt. Pellentesque viverra cursus elit, ut ultrices eros tincidunt nec. Sed eu nibh orci. Etiam et arcu sodales, feugiat risus ac, rutrum nunc. Praesent fermentum convallis ipsum non aliquet. Proin imperdiet a urna eu auctor. Sed euismod pulvinar lectus, nec convallis purus elementum vel. Sed cursus, magna id faucibus viverra, purus est consequat magna, maximus pellentesque magna leo efficitur velit. Duis ac tortor mattis massa suscipit fringilla non eu dolor. Curabitur dictum urna odio, non mattis odio tincidunt fringilla. Nulla dictum venenatis urna nec cursus. Phasellus volutpat a velit nec sollicitudin. - -Morbi orci nulla, eleifend id dapibus ac, feugiat eu nisl. Curabitur vitae lectus ultricies, efficitur orci sed, dictum mi. Pellentesque pellentesque, nunc ut mollis euismod, risus purus mollis eros, sed pharetra ex nisi nec orci. Fusce ante mi, bibendum nec consectetur ac, cursus sit amet massa. Cras vel venenatis ex. Sed purus ipsum, imperdiet nec pulvinar at, convallis ut est. Donec tempus diam non dui molestie mollis at at nulla. Nunc rutrum felis sed mauris ullamcorper, sit amet bibendum libero sagittis. In eu massa ut orci gravida scelerisque. Suspendisse vel vestibulum eros. Ut vehicula, augue tincidunt tincidunt pulvinar, risus ante ultricies mi, vitae semper mi sem vitae tellus. - -Praesent bibendum risus ex, vitae blandit libero laoreet quis. Maecenas dapibus lorem neque, at euismod mauris maximus id. Sed rhoncus sollicitudin tortor eget imperdiet. Praesent blandit hendrerit elementum. Praesent nec nisl venenatis, ultrices enim blandit, vulputate lorem. Etiam aliquet faucibus congue. Ut id convallis dui. Sed ultricies id ante et varius. Ut bibendum tincidunt metus, quis convallis augue euismod eget. Nullam ultricies eros vel lacus ullamcorper, id euismod diam semper. Proin consectetur tempus porttitor. - -Morbi bibendum convallis auctor. Maecenas congue dolor metus, non lacinia erat lacinia interdum. Nulla facilisi. Aenean sollicitudin diam eget massa ultricies, a malesuada ipsum faucibus. Proin dictum convallis diam, ut sagittis turpis tempus non. Quisque elementum magna eros, ut fringilla felis suscipit ut. Etiam velit enim, lobortis nec enim ac, ornare vehicula ipsum. Donec lacinia, nunc et rutrum consequat, erat diam pellentesque dolor, in faucibus dolor enim id orci. Vivamus varius vehicula auctor. Integer elit odio, ullamcorper vestibulum condimentum et, efficitur eget metus. - -Cras ut nibh mauris. Nullam quis ornare dui, eget fermentum magna. Morbi ultrices elit dui, vitae mattis enim suscipit iaculis. Fusce ut magna nulla. Quisque pharetra aliquam nibh, vitae vehicula velit convallis quis. Phasellus at tortor eros. Aenean viverra vestibulum sapien sed tristique. Donec ornare leo eu ipsum congue, non tristique dolor pulvinar. Duis et libero id justo commodo placerat. Morbi rutrum ligula vitae augue aliquam convallis eu at augue. Sed eget lobortis libero. Aenean laoreet tempor nisi id semper. - -Aenean consectetur iaculis justo, vel ullamcorper ligula finibus eu. Proin a turpis vel mauris porttitor placerat. Vestibulum ante ipsum primis in faucibus orci luctus et ultrices posuere cubilia curae; Vestibulum tincidunt arcu in malesuada euismod. Nulla id erat eget orci hendrerit imperdiet. Donec eu molestie nibh. Mauris dapibus commodo lorem sit amet luctus. Sed laoreet eget leo nec ullamcorper. Proin dui ligula, rhoncus non ex sed, volutpat viverra ex. Cras at ipsum id lacus fringilla feugiat. Maecenas euismod blandit urna sed lacinia. Fusce velit nibh, cursus ac lacinia et, pulvinar vel erat. - -Maecenas viverra lacus eu lorem pharetra, vel tempus nibh vulputate. Aliquam tempor elit eget volutpat pulvinar. Suspendisse ullamcorper vitae diam ac facilisis. Aliquam eu nisl eget purus congue sodales at vel velit. Curabitur vulputate mauris eget felis egestas, in malesuada odio aliquet. In finibus est nibh, laoreet tincidunt nibh gravida non. Donec velit lacus, aliquam sit amet eros ac, suscipit vehicula massa. Nunc sit amet diam sit amet risus scelerisque volutpat in sed tortor. Praesent id fringilla erat, in efficitur nisl. Suspendisse venenatis justo lacus, nec pharetra ipsum viverra non. Nullam at imperdiet lacus, at blandit nibh. Aenean viverra nulla eget orci fermentum egestas. - -Cras in tortor ultrices, euismod arcu sit amet, porta dui. Mauris et mauris aliquet, lobortis lectus et, semper libero. Integer mollis bibendum quam ut aliquet. Cras non aliquet mi. Interdum et malesuada fames ac ante ipsum primis in faucibus. Etiam quis euismod lacus. Integer mattis, elit vel maximus elementum, justo sem commodo ligula, eget ornare felis turpis id nisl. Nunc euismod hendrerit sapien. - -Cras bibendum venenatis elementum. Pellentesque tempus vitae diam a iaculis. Praesent semper faucibus sem, eu elementum neque aliquam eget. Suspendisse iaculis pharetra porta. Aenean quis pharetra ex, vitae rhoncus augue. Suspendisse potenti. Etiam sed viverra quam. Nunc bibendum, elit non tempor congue, elit augue venenatis lacus, nec tempor dui lorem ut augue. Quisque imperdiet dictum mi, eget ullamcorper nisl accumsan vel. Morbi ut erat at ipsum lacinia facilisis. Sed porta risus id lobortis rutrum. Aliquam pulvinar maximus diam ut vehicula. Praesent orci quam, dapibus eu suscipit vel, porta sit amet ligula. - -Fusce blandit dignissim metus, fringilla hendrerit ex molestie et. Quisque rhoncus mattis tellus, a ultrices mauris volutpat et. Quisque ornare a tortor vitae posuere. Curabitur eget ligula urna. Lorem ipsum dolor sit amet, consectetur adipiscing elit. Praesent pharetra id nulla eget tempor. Quisque viverra vulputate neque, non pulvinar orci cursus at. Suspendisse turpis nisi, dapibus sit amet felis quis, egestas sollicitudin massa. Pellentesque pretium varius sollicitudin. Nullam eu iaculis eros. Integer pulvinar sollicitudin lectus, quis pharetra justo posuere et. Quisque est elit, aliquet nec nisi ut, congue ullamcorper lacus. Integer facilisis erat in varius venenatis. Morbi luctus tincidunt elementum. - -Quisque scelerisque placerat est, et facilisis justo pretium non. Sed laoreet in elit sed consequat. Etiam velit mi, placerat ut ullamcorper vitae, tempor ac nunc. Nullam malesuada varius nisl, et tempus metus venenatis sed. Sed viverra id magna a commodo. Donec quam ante, ultricies tincidunt ligula vitae, commodo ultricies justo. Sed aliquam metus quis mauris tristique rhoncus. - -Aliquam erat lacus, euismod ut turpis sed, rutrum aliquam nisl. Cras id vestibulum sapien. Orci varius natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus. Praesent pretium, leo ac mattis hendrerit, ipsum libero consequat velit, vel venenatis dui nisl a odio. In at purus quis nulla ultrices sollicitudin sit amet quis massa. Donec facilisis sapien et dolor sodales, eget ornare turpis bibendum. Donec eget sapien lacus. Morbi semper dolor vel sem posuere laoreet. Quisque a ex a libero convallis pretium. Nam eu nisl elit. Quisque scelerisque, sapien id porttitor elementum, quam purus rutrum eros, eu elementum erat justo sit amet sem. Sed tristique tellus eros, pretium faucibus odio sagittis at. Nullam dapibus, dolor ac pellentesque porta, augue lorem consectetur erat, eu viverra urna turpis ac ante. Sed tincidunt vel tortor sit amet lobortis. Phasellus consectetur diam vel ante blandit, pretium tincidunt justo posuere. Cras sit amet augue ornare, blandit eros eget, auctor nisl. - -Mauris interdum mauris nunc, at lacinia justo pharetra non. Sed a velit lacus. In hac habitasse platea dictumst. Phasellus laoreet odio vitae venenatis bibendum. Donec rutrum tempor elit, a rhoncus lacus aliquam vitae. Nunc nec ipsum mollis velit egestas suscipit. Suspendisse vel leo et risus luctus ullamcorper. - -Duis non dui feugiat, scelerisque massa eu, porta est. Duis eget est ac dolor iaculis varius egestas sed nibh. Donec maximus sem viverra mi scelerisque, sit amet finibus elit congue. Nunc convallis justo enim, ut auctor est efficitur non. Ut vulputate justo eget auctor tristique. Donec tincidunt dictum sem, eget ultricies lacus facilisis non. In quis risus semper mi elementum imperdiet in bibendum magna. Maecenas et ligula fringilla, molestie neque eu, semper ex. - -Sed feugiat viverra arcu ac convallis. Pellentesque mattis a arcu vitae interdum. Ut consectetur, ex at viverra ornare, mauris nisi blandit elit, et ornare augue odio sit amet libero. Vivamus vehicula est ac cursus lacinia. Sed tristique dictum lacus, ut sollicitudin urna mollis et. Proin ullamcorper, metus eget hendrerit varius, dolor magna aliquet massa, a pharetra ante augue eget erat. Ut a nibh nulla. Integer erat mauris, pretium nec sapien sit amet, bibendum rhoncus massa. Donec dapibus euismod pretium. Curabitur posuere auctor tellus, quis ultricies lectus blandit sollicitudin. - -Etiam mauris augue, molestie eleifend posuere vitae, mollis et eros. Nam hendrerit pulvinar erat non sollicitudin. Cras vel semper purus. Aliquam non nulla ultrices, vehicula tellus et, vestibulum ex. Mauris luctus sapien enim, at sollicitudin felis elementum in. Nam a massa eget nisl euismod elementum. Aliquam ut iaculis lacus. Maecenas nec erat ultricies diam convallis fermentum. Duis laoreet lectus eget ligula blandit, quis pharetra arcu tempus. Cras sodales metus quis mauris placerat hendrerit. Cras nisi turpis, dapibus id quam sit amet, vehicula convallis purus. Nam eget quam id turpis dictum pellentesque. Aliquam erat volutpat. Donec felis lorem, porttitor a lectus quis, mattis tempor orci. Morbi in cursus purus. - -Mauris cursus neque eu interdum luctus. Donec malesuada arcu vel felis vestibulum pellentesque. Morbi bibendum eros eget ultricies laoreet. Etiam sed lobortis odio, et pretium ipsum. Donec id ex posuere, pulvinar nunc eget, interdum enim. Duis fermentum eros id tincidunt fermentum. Suspendisse faucibus est nibh. - -Aenean mattis erat ac libero consequat, vel ultrices neque congue. Nunc porttitor elit eu egestas mattis. Sed laoreet tempus ante, vel accumsan tellus volutpat a. Curabitur sed elit vitae dolor rutrum iaculis. Cras ornare diam at convallis consectetur. Nam ultricies tincidunt gravida. Etiam varius mi vitae maximus finibus. - -Cras commodo dui et auctor blandit. Ut efficitur venenatis neque, quis pulvinar enim congue in. Maecenas sed erat faucibus, gravida nulla sed, imperdiet eros. Aliquam nibh nibh, lobortis vitae dignissim in, sollicitudin quis lacus. Nunc pellentesque tincidunt odio, ut dictum sapien volutpat non. Quisque sed est sed tellus tempor lacinia. Cras et faucibus ex, quis maximus urna. Morbi malesuada rutrum libero, quis sollicitudin nunc pulvinar nec. Donec quis arcu quis nulla egestas scelerisque. - -Nullam at elit nec magna pharetra molestie vitae vel dolor. Quisque ultrices convallis felis ac tempus. Vestibulum rutrum, neque dignissim convallis vestibulum, quam urna maximus nibh, eu interdum risus orci sit amet lacus. Aenean placerat tristique sagittis. Nulla fringilla eu quam id laoreet. Quisque vulputate ac purus vel scelerisque. Aenean vel est eros. Praesent blandit vestibulum pretium. - -Nullam in risus condimentum libero euismod accumsan non eu sem. Phasellus mi lacus, tincidunt sit amet massa quis, porttitor varius est. Nunc elementum elementum elit, eu efficitur magna interdum quis. Donec porttitor rutrum erat id suscipit. Quisque tempus rutrum metus vel lacinia. Maecenas non justo vitae ex varius aliquet. Donec vestibulum, ligula a convallis dapibus, dolor metus pulvinar erat, sit amet tristique justo augue in nisl. Duis consequat cursus tempus. Aenean quis nisl pulvinar, ultrices dolor id, porttitor odio. Sed tincidunt velit tincidunt, finibus nunc in, lacinia justo. Nullam sed nisi quam. Phasellus varius tortor ac eros semper tristique. Mauris quis condimentum tellus. Mauris consectetur ante eu tortor placerat sollicitudin. - -Vivamus commodo leo metus, ac congue felis hendrerit auctor. Maecenas mollis neque vel fermentum placerat. Morbi id elit nec mi vulputate tristique. Aenean efficitur erat non mi imperdiet fermentum. Sed facilisis massa et nunc placerat auctor. Curabitur sed dictum ligula. Nam blandit venenatis tempus. Quisque faucibus nibh non malesuada ullamcorper. In nec auctor metus, id sodales dolor. Ut tristique laoreet augue eget venenatis. - -Duis ut dui sed justo scelerisque varius tempus a neque. Vestibulum ante ipsum primis in faucibus orci luctus et ultrices posuere cubilia curae; Nam sodales lectus nec pretium pharetra. Integer vulputate blandit eros id laoreet. Proin in tortor facilisis, sodales eros at, fermentum purus. Ut finibus risus in est malesuada lacinia. Nulla facilisi. In velit lacus, viverra eget lorem pellentesque, ornare rutrum lorem. Mauris iaculis aliquam velit, at fringilla justo mattis non. Pellentesque at risus scelerisque, aliquam nunc sit amet, finibus nibh. Duis purus augue, ultricies ac dapibus et, sollicitudin nec risus. Phasellus scelerisque cursus metus ac commodo. Maecenas et cursus justo, quis pharetra sapien. Integer auctor nibh porttitor, auctor ipsum volutpat, pretium ligula. - -Sed tellus justo, molestie vitae erat id, lacinia condimentum enim. Ut metus turpis, gravida sed facilisis non, volutpat non elit. Integer sed vehicula dolor. Ut lobortis velit at mollis molestie. Proin suscipit ante risus, quis imperdiet arcu ornare ac. Nullam urna eros, auctor id semper cursus, posuere nec elit. Sed eu leo sed libero lacinia eleifend. Sed euismod augue non lorem congue, sit amet viverra massa semper. Nam vitae pellentesque nisi. Aliquam viverra accumsan tempor. Suspendisse potenti. Etiam lacus purus, commodo eu consequat ac, pulvinar in nisi. Praesent mollis sodales malesuada. - -Nullam varius eros at pretium eleifend. Phasellus fermentum consequat turpis, id lacinia eros mollis a. Vestibulum ante ipsum primis in faucibus orci luctus et ultrices posuere cubilia curae; Nullam nisl augue, varius quis nulla vitae, imperdiet fringilla sapien. Sed non elit molestie, sagittis orci ac, tincidunt arcu. Fusce aliquet metus at euismod fermentum. Etiam ut finibus nisi. Ut semper aliquet odio. Lorem ipsum dolor sit amet, consectetur adipiscing elit. Aenean non iaculis metus, ut aliquet urna. Nulla accumsan condimentum mauris id sollicitudin. Vestibulum et mauris sollicitudin, scelerisque risus in, sagittis risus. - -Phasellus faucibus ac tortor ut dictum. Nullam pharetra vulputate sem, fermentum lobortis mauris tincidunt a. Vivamus consectetur risus eget sem euismod, in placerat leo commodo. Curabitur ultricies facilisis congue. Sed id rutrum massa, quis tincidunt erat. Nulla consectetur luctus libero at luctus. Ut non vestibulum justo. - -In hac habitasse platea dictumst. Nullam at nisi ullamcorper, pulvinar velit consequat, consectetur mi. Morbi laoreet, mauris at placerat dignissim, risus felis vulputate massa, id tincidunt mauris turpis in mauris. Suspendisse potenti. Phasellus lorem urna, posuere at bibendum sed, imperdiet at diam. Duis vel nibh sed arcu luctus laoreet. Morbi dignissim tellus a dui gravida, dapibus pulvinar lectus faucibus. Mauris elit diam, finibus nec lectus id, tincidunt efficitur orci. In commodo, dui et vestibulum tincidunt, ligula ipsum fringilla quam, id viverra augue leo at tellus. Etiam lorem erat, gravida ut tristique in, condimentum vel lacus. Aenean dapibus lobortis diam sit amet tristique. Ut blandit ultricies est, eu imperdiet nunc interdum ac. Praesent nulla purus, ornare non odio in, fringilla condimentum sem. Nunc eu nunc id diam sodales ullamcorper nec ac tellus. Vestibulum tempus tempor diam, vestibulum interdum diam malesuada in. Nulla id sapien dolor. - -Donec imperdiet ornare sollicitudin. Nulla mattis vel augue vitae sagittis. Morbi mattis in libero ac luctus. Praesent faucibus pulvinar nibh ut consectetur. Integer in nulla vitae urna gravida luctus. Nam interdum mi at rhoncus rhoncus. Quisque in turpis elit. Quisque ac nisl diam. - -Morbi vitae justo lobortis, auctor urna at, ornare sapien. Orci varius natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus. Donec ullamcorper neque in mi feugiat dapibus. Vivamus nec ullamcorper lorem, sed hendrerit dui. Proin eget nunc ac felis vulputate fermentum eget eu turpis. Aenean ut velit justo. Lorem ipsum dolor sit amet, consectetur adipiscing elit. Cras sollicitudin ex in tristique aliquam. - -Mauris tristique diam sed sollicitudin commodo. Praesent in ligula sed elit accumsan ornare nec ac metus. Etiam feugiat sodales metus, quis placerat mi malesuada non. Proin vulputate quam ex, at rhoncus nibh posuere eu. Nunc aliquet ipsum urna, id ultrices nisl rhoncus eget. Donec sagittis nulla eu ligula tempor commodo. Curabitur ut metus posuere, condimentum mi eu, lacinia eros. Aenean tincidunt massa eu lacus euismod pharetra. Fusce pulvinar elit nec imperdiet euismod. Ut vehicula ligula ac fermentum pulvinar. Cras ultrices, augue at placerat molestie, nunc lectus placerat est, id consequat risus urna at erat. Quisque egestas nunc ut varius efficitur. Maecenas ac felis arcu. - -Sed iaculis, libero at ullamcorper hendrerit, nulla dui maximus lacus, eu pulvinar ligula ipsum id diam. Ut vitae nisi vestibulum, maximus mauris sed, porttitor lacus. Aenean ut ex diam. Quisque rutrum lacus sit amet arcu dignissim aliquet. Aliquam erat volutpat. Curabitur commodo mauris est. In placerat magna nec viverra luctus. - -Morbi venenatis, velit non tincidunt vulputate, dolor lacus gravida velit, vel pharetra ex magna et purus. Quisque condimentum, augue a mattis molestie, nulla massa vestibulum elit, in faucibus risus mi at lorem. Duis turpis augue, scelerisque id ullamcorper a, fringilla id arcu. Nam et lorem lectus. Nulla bibendum ex sed mauris auctor interdum. Maecenas ullamcorper eros ut lacus accumsan, et gravida tortor semper. Nullam pharetra lacus quam, eget consectetur purus auctor in. Vivamus ornare imperdiet mi tempus ultricies. - -Nunc hendrerit vel elit aliquet mollis. Class aptent taciti sociosqu ad litora torquent per conubia nostra, per inceptos himenaeos. Nam sodales laoreet rhoncus. Nulla eu mi sit amet felis tincidunt rhoncus quis eu ante. Sed ornare elit in magna sollicitudin, at pretium sem pellentesque. Sed maximus eros libero, a laoreet dolor aliquet et. Cras at sapien leo. Phasellus tempus tristique lorem, in mollis tellus mattis ut. Nam at mauris et nunc imperdiet euismod vitae et ligula. - -Maecenas vestibulum nec nisi quis placerat. Aenean suscipit non augue ac varius. Duis ut eros mollis, convallis ligula quis, convallis ex. Vestibulum ante ipsum primis in faucibus orci luctus et ultrices posuere cubilia curae; Sed eget tincidunt orci. Donec lobortis augue turpis, eu tempor nulla mollis sit amet. Sed risus mi, posuere ut diam ut, luctus eleifend lorem. Donec risus ante, euismod sed arcu ut, laoreet varius nisl. Aliquam erat volutpat. Suspendisse fermentum suscipit eleifend. Pellentesque eget pulvinar nibh. Mauris mollis dapibus ullamcorper. Fusce pellentesque odio augue, luctus tincidunt leo malesuada eget. Praesent placerat ante quis dolor rutrum consectetur. Suspendisse sed libero sem. Maecenas hendrerit dapibus nunc, et varius dolor porta et. - -Donec quis scelerisque arcu. Fusce augue orci, facilisis bibendum blandit vitae, fermentum ac velit. Duis sodales orci massa, non tempor mauris eleifend sed. Pellentesque porttitor mi eu rutrum sodales. Nunc viverra cursus nibh id aliquam. Nulla pellentesque odio nec nisl consequat consequat. Duis aliquet fringilla leo quis volutpat. Nullam ultrices elit nibh, eget placerat orci iaculis ut. Sed volutpat iaculis leo, a volutpat orci dapibus id. Phasellus velit est, auctor eu mi sit amet, convallis congue tellus. - -Donec sed vestibulum lorem. Phasellus ultrices velit quis justo gravida, at ornare nibh elementum. Vivamus feugiat, ipsum sit amet faucibus facilisis, velit nunc rhoncus ante, nec luctus risus dolor sagittis risus. Aenean dictum mollis dolor, nec scelerisque velit congue nec. Nam id odio sit amet mi imperdiet cursus. Etiam in sapien vel nunc tincidunt tempus ac sit amet lorem. Proin hendrerit tincidunt metus. Donec bibendum ante sed tincidunt tempor. Praesent fringilla mi ipsum, id elementum quam luctus cursus. Duis nibh nisi, ornare in ligula nec, pellentesque vehicula lectus. Maecenas massa orci, interdum sit amet iaculis vel, sagittis sit amet quam. Phasellus consectetur suscipit quam. Morbi in lacus augue. Nulla rhoncus pretium mi, sed pharetra arcu feugiat vel. Nam ornare elementum mauris et accumsan. Praesent placerat imperdiet mauris, nec suscipit ipsum gravida a. - -Quisque id auctor elit. Donec in mattis risus, non fermentum sem. Suspendisse eu nulla tempor velit vehicula varius. Quisque tristique dapibus interdum. Sed volutpat, leo eu convallis tristique, sem neque rhoncus urna, quis pellentesque lectus leo sed diam. Praesent convallis efficitur enim vitae volutpat. Donec imperdiet sapien et tempus dignissim. Vestibulum posuere egestas nulla ornare malesuada. Cras suscipit nisl et odio ullamcorper vehicula. Donec accumsan, nisl in ornare rhoncus, nisi magna dictum erat, hendrerit venenatis est ex et tortor. Maecenas ultrices enim eget mollis dapibus. In eu odio in leo eleifend rutrum at non felis. Quisque eget mauris tortor. - -Nam fermentum odio a lectus iaculis ultricies. Mauris tincidunt, risus at condimentum vulputate, arcu massa posuere ex, ac consequat quam ex in nulla. Sed tincidunt et arcu vel venenatis. Integer nec rutrum quam, rutrum maximus nunc. In efficitur, ante a scelerisque ullamcorper, velit urna feugiat dolor, ut tincidunt quam nunc vitae urna. Vestibulum tempus nulla at blandit sodales. Integer accumsan ornare venenatis. Vivamus placerat pretium enim id malesuada. Sed scelerisque dui est, sit amet sodales purus sagittis in. Nam felis tortor, fringilla ac luctus quis, convallis eu neque. Nam eget nisl diam. Morbi pulvinar eros in massa volutpat, sed pretium velit dictum. - -Aliquam erat volutpat. Vestibulum justo sapien, venenatis a mi vitae, blandit sollicitudin turpis. Phasellus rhoncus volutpat malesuada. Integer varius interdum lectus at congue. In tellus urna, consectetur ut volutpat nec, luctus at metus. Praesent aliquam mi a turpis finibus, id sagittis leo mollis. Sed quis massa a sapien aliquam hendrerit. Praesent convallis tellus risus, at interdum nunc venenatis at. In erat dolor, imperdiet nec convallis sit amet, laoreet sed ante. - -Phasellus tincidunt a neque ac laoreet. Etiam ac pharetra justo. Proin eu luctus nisi, non porta eros. Aenean et augue vitae nulla rutrum elementum. Sed luctus vel ligula eget placerat. Orci varius natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus. Integer elementum vel lectus sed efficitur. Suspendisse sit amet felis vel erat consequat posuere. Etiam vehicula iaculis venenatis. - -Sed diam turpis, molestie eget est id, pellentesque pellentesque sem. Etiam fringilla finibus porta. Curabitur arcu ante, gravida eget maximus in, ullamcorper nec purus. Phasellus nisi sem, ultricies vitae commodo quis, sodales mollis nisi. Quisque nec luctus nisi. Pellentesque commodo suscipit fermentum. Lorem ipsum dolor sit amet, consectetur adipiscing elit. Nulla nec ante nec orci feugiat semper. Donec imperdiet tincidunt interdum. - -Maecenas id arcu justo. Aliquam pretium lectus arcu, vitae lobortis nulla volutpat in. Cras vel ultrices purus. Quisque accumsan placerat consequat. Nulla facilisi. Cras mollis egestas quam suscipit iaculis. Morbi at nunc convallis, fringilla mi vel, gravida magna. Integer erat justo, luctus vel volutpat fringilla, mattis in lacus. Nullam feugiat malesuada eros, faucibus venenatis mauris. Pellentesque massa urna, pulvinar in ornare ut, pharetra vitae risus. Quisque bibendum, odio vel ornare sagittis, ex purus dignissim magna, sed mattis ex justo nec neque. Vestibulum facilisis lacinia nunc, eu vehicula velit dignissim consequat. Aliquam elementum elementum quam, et gravida est cursus non. Pellentesque id gravida orci, in pharetra urna. Quisque venenatis accumsan neque sed blandit. - -Nunc lectus neque, suscipit pretium eros quis, ultrices tempor diam. Quisque vestibulum aliquet tincidunt. Maecenas convallis ipsum orci, et ornare libero blandit at. Donec et massa tellus. Fusce lobortis aliquet erat et convallis. Suspendisse eu lobortis dolor. Sed sollicitudin tellus ac risus elementum, eu volutpat turpis lobortis. Aliquam magna lacus, posuere nec placerat non, euismod vel turpis. Maecenas auctor sem nec sem pellentesque, et dictum nisi rhoncus. Mauris dignissim massa nec odio placerat maximus. Vivamus nec interdum dui, a blandit turpis. Quisque orci sem, rutrum vitae neque nec, cursus accumsan ipsum. In hac habitasse platea dictumst. - -Vestibulum ante ipsum primis in faucibus orci luctus et ultrices posuere cubilia curae; Vestibulum at nibh ut arcu vestibulum ornare. Proin fermentum venenatis bibendum. Mauris fermentum lorem ut nunc finibus, in egestas arcu consectetur. Pellentesque vel hendrerit quam. Proin laoreet turpis turpis, vitae cursus purus viverra eget. Morbi sem magna, scelerisque quis ipsum a, ultrices pulvinar risus. Maecenas eget vulputate sapien, eu tincidunt ipsum. Nulla consectetur interdum dui, eu gravida magna venenatis eu. Nunc nibh nunc, consectetur condimentum enim quis, congue ornare urna. Suspendisse venenatis scelerisque nisi ut hendrerit. Vivamus ut consequat est. Donec non odio sit amet diam suscipit mattis. Sed vel molestie elit. - -Proin tincidunt pharetra dapibus. Nam at velit aliquet, lacinia mauris eu, maximus erat. Ut at eros leo. Aliquam pharetra, ex sed efficitur dignissim, quam nunc dignissim sapien, dapibus pharetra enim ipsum nec lectus. Proin eu urna in metus varius egestas non eu justo. Praesent a nisi commodo, facilisis augue sit amet, cursus urna. Mauris feugiat, risus in tincidunt cursus, lacus nibh dapibus libero, nec ornare nulla elit sagittis orci. Morbi vitae metus eu lacus viverra aliquet. Aenean in lacus a nisl pretium feugiat. Morbi faucibus porta lacus ornare gravida. - -Phasellus turpis libero, interdum non porta et, consequat quis elit. Curabitur nec odio eu lorem consectetur euismod sed eget nulla. Nullam sit amet tincidunt magna. Sed ullamcorper sem turpis, porttitor fringilla neque pretium eget. Donec libero ligula, sagittis tincidunt sodales vel, imperdiet sed nulla. Nam pharetra nunc vitae sem volutpat tempor. Nam quam nunc, tempus at ante non, malesuada cursus orci. - -Fusce vestibulum, nulla non fermentum bibendum, enim est pellentesque tortor, id condimentum lorem turpis non dolor. Praesent laoreet neque in lorem pulvinar consectetur. Mauris augue tellus, efficitur sit amet bibendum ac, dignissim et nisl. Suspendisse facilisis, nisl nec aliquet rhoncus, sem purus scelerisque est, vitae consectetur ligula dui vitae libero. Aliquam id ultrices sem. Cras consectetur, ex vel tristique hendrerit, lorem ex lacinia est, ac iaculis neque nisl a est. Aliquam erat volutpat. Duis non est ut urna rhoncus congue a at nisi. Nullam varius nisl eget nibh dapibus iaculis eget sit amet sapien. Proin rhoncus tortor eget erat tincidunt euismod. Nulla porttitor tellus purus, at tincidunt lorem sollicitudin id. Pellentesque volutpat lacus elementum magna hendrerit, eget blandit nibh faucibus. Etiam tortor metus, bibendum id malesuada eget, lacinia quis turpis. Fusce tortor enim, consequat sit amet sapien eget, imperdiet condimentum nulla. - -Suspendisse gravida finibus leo, at mollis sem sodales ac. Pellentesque id semper velit. Nam viverra sollicitudin ipsum, eget pellentesque est feugiat sed. Nullam nec pretium dui, ut finibus erat. Aenean eget lacinia neque. Donec non dui sodales, ultrices nisi et, eleifend sem. Nunc ac lectus tortor. Phasellus bibendum velit non ornare lacinia. - -Pellentesque habitant morbi tristique senectus et netus et malesuada fames ac turpis egestas. Praesent non massa a diam convallis accumsan. Sed turpis mi, aliquam non pellentesque non, efficitur vitae quam. Morbi vestibulum ex turpis, eu tristique tellus pretium ut. Phasellus lacinia lorem nisl, et gravida orci posuere eget. Etiam at elit mollis, mollis urna vel, tristique nulla. Curabitur feugiat feugiat tempor. - -Aenean ultrices pharetra sapien. Sed ac leo interdum, finibus tortor eu, pulvinar diam. Nulla gravida dolor leo, porttitor ultricies orci finibus quis. Quisque posuere venenatis felis, eu tempus velit fringilla vel. Praesent malesuada vitae odio et volutpat. Fusce tellus eros, ullamcorper nec nunc eu, suscipit vestibulum justo. Donec sit amet porta enim, sit amet commodo metus. Phasellus congue posuere libero, eget volutpat lacus tincidunt quis. In at diam vel nunc venenatis facilisis. - -Donec fringilla diam in orci auctor, eget efficitur turpis tempus. Aenean faucibus tortor in odio dapibus viverra. Cras ac dui non urna volutpat commodo. Cras malesuada, lacus eu efficitur convallis, felis arcu condimentum urna, a euismod diam lacus nec lacus. Fusce ultricies justo a sagittis accumsan. Aenean fermentum lacinia dui, eu cursus nibh maximus et. Proin convallis risus in facilisis viverra. Morbi ultrices elementum risus, pretium molestie mauris iaculis at. - -Donec rhoncus felis eget dolor pharetra rutrum. Sed et egestas nisl. Sed quam lectus, dignissim eu tristique a, feugiat ultrices velit. Etiam ut molestie tortor. Nunc molestie ante nulla, id bibendum libero rhoncus in. Donec pharetra sagittis augue non tempor. Duis id enim a nulla porta scelerisque non nec urna. Sed molestie hendrerit tincidunt. Nullam ullamcorper dolor eu quam ultrices pulvinar. Curabitur fermentum ut ipsum ut euismod. Pellentesque pulvinar aliquam tortor, eget egestas est convallis pretium. Cras vestibulum finibus finibus. Cras aliquam, elit a facilisis tincidunt, arcu est efficitur velit, et commodo purus leo at nibh. - -Class aptent taciti sociosqu ad litora torquent per conubia nostra, per inceptos himenaeos. Praesent auctor nunc quis eros sollicitudin sagittis. Nullam mattis interdum arcu et dictum. Fusce vehicula diam sed gravida tempor. Nullam porttitor vel neque a scelerisque. Vestibulum eget diam diam. Praesent eu eros id quam eleifend sagittis et ut felis. Cras sed mi cursus, lobortis leo ac, commodo eros. Nullam eu turpis eget tellus placerat volutpat id sed ligula. Duis eu sodales nisi, iaculis ornare ante. - -Sed vehicula nec enim ut commodo. Phasellus in nulla sodales, porttitor nulla at, tincidunt orci. Nulla eu volutpat eros, quis lacinia arcu. Vivamus lacinia dignissim justo ac iaculis. Nulla vel tortor vel augue laoreet efficitur in ut est. Morbi viverra feugiat pharetra. Nam dictum feugiat metus, sit amet pharetra ante. Morbi sodales arcu vel nunc interdum, lacinia faucibus metus mollis. In eget magna vitae magna feugiat pellentesque. Aliquam vitae nunc et arcu pharetra posuere. Integer convallis consequat risus sed volutpat. Aenean ullamcorper lacus odio, sed facilisis ligula ullamcorper ut. - -Vestibulum ullamcorper ligula nibh, consequat sodales turpis vehicula quis. Aliquam efficitur ullamcorper massa nec blandit. Aliquam lobortis viverra tincidunt. Etiam sit amet suscipit nisi. Nullam nec purus pellentesque, sollicitudin urna in, interdum velit. Cras nec nisi tristique enim dapibus pulvinar. Nullam vitae luctus nulla, sit amet gravida tortor. Fusce quis urna finibus, cursus enim sed, aliquam odio. Duis malesuada bibendum nisl vitae tincidunt. In hac habitasse platea dictumst. Duis a ex eget lorem ullamcorper convallis non eu nisi. Morbi elit leo, dignissim non blandit ac, tristique eu ligula. Pellentesque at massa non tortor vestibulum ullamcorper quis nec eros. Suspendisse massa ligula, sodales nec iaculis sollicitudin, interdum nec enim. Duis porttitor ligula in elit tempus aliquet. Donec leo ante, vulputate eget ligula eu, bibendum pulvinar augue. - -Suspendisse nec auctor magna. Quisque auctor dapibus porta. Aliquam eu rhoncus purus, sit amet condimentum leo. Phasellus scelerisque nulla a tellus euismod, ac fermentum ante dignissim. Vestibulum est risus, accumsan at lobortis in, semper at dolor. Cras vel accumsan magna, vitae fermentum neque. Vestibulum pharetra consequat nisi non cursus. Maecenas tristique ultrices mollis. Interdum et malesuada fames ac ante ipsum primis in faucibus. Curabitur eget lacus vitae orci consectetur placerat ut at lorem. Morbi sed ligula in elit scelerisque euismod. Suspendisse nec tortor id purus pellentesque condimentum. Nam scelerisque, leo nec ullamcorper malesuada, metus mauris mattis urna, vel ornare leo tortor id elit. Sed maximus ac ipsum in mollis. - -Integer pretium commodo turpis eu varius. Nulla purus sapien, tincidunt id lacus id, tempor fringilla purus. Pellentesque ullamcorper odio odio, ut lobortis libero sollicitudin nec. Cras non purus eget magna porta porttitor. Curabitur feugiat lectus a orci ultricies venenatis. Nullam a velit eros. In at consectetur nibh. Phasellus eget semper risus, ac finibus nisi. Nulla at vestibulum nulla. Duis convallis ullamcorper ipsum, ut vehicula dolor malesuada quis. In hac habitasse platea dictumst. - -Phasellus at odio in tortor fringilla finibus eu ultrices sapien. Cras interdum risus a euismod mollis. In quis auctor nisl. Donec luctus magna eu neque tempus laoreet. Nulla aliquam, sapien vitae condimentum placerat, sem erat venenatis lorem, eget ultricies diam est et quam. Proin in ligula vestibulum, vehicula dui vitae, gravida nibh. Curabitur sed mauris magna. Curabitur ex nunc, blandit feugiat aliquet id, scelerisque eget nulla. - -Praesent quis est vehicula, dapibus odio ut, pulvinar est. Morbi venenatis libero vitae sem luctus, at hendrerit lectus pharetra. Suspendisse dapibus, urna sed mattis tincidunt, turpis libero lobortis dolor, quis porta ex lectus at odio. Suspendisse elementum vel arcu non viverra. Vestibulum at hendrerit ipsum. Duis purus leo, viverra ut consectetur ut, varius fermentum turpis. Duis varius feugiat mauris, vitae aliquet nulla blandit quis. Donec sit amet vehicula diam. Sed ac est in magna suscipit condimentum nec ut velit. Morbi vel tellus vulputate, malesuada dui suscipit, fringilla nulla. Mauris ornare risus sit amet orci vestibulum, a pharetra mauris mollis. Sed mollis neque eget efficitur tempus. Vivamus lobortis id sem eget sagittis. - -Vestibulum pulvinar congue arcu eget condimentum. Curabitur viverra aliquet mauris, eget consectetur neque suscipit non. Suspendisse ac mattis dui. Donec in mi tincidunt, faucibus odio eget, laoreet tellus. Phasellus id nunc nisi. Morbi nec ex ex. Vivamus urna diam, lobortis quis tellus a, consectetur faucibus felis. Integer scelerisque interdum mollis. Proin sit amet rutrum sem. Maecenas sed nisl maximus, rutrum sapien at, lacinia diam. - -Fusce ligula dui, sagittis ut sollicitudin sit amet, tristique sed metus. Nulla feugiat tristique leo nec semper. Integer ante dui, hendrerit ac velit ut, ultrices sollicitudin purus. Morbi quis dui in mi rutrum ullamcorper. Nam tempor risus sed tortor malesuada, eu tincidunt turpis cursus. Mauris posuere tempus justo non pretium. Proin tincidunt porta magna, sed euismod est finibus a. In dignissim risus vel velit fermentum, sit amet vulputate lectus dignissim. Aliquam tristique finibus urna, non venenatis tortor mollis in. Sed at tempus nulla. - -Aliquam ornare, orci sed congue varius, nunc ipsum pharetra nibh, et volutpat justo arcu non nisi. Maecenas vitae elit vehicula, maximus nunc eget, vulputate nunc. Aliquam eu nisl dolor. Aenean auctor sem vel fermentum commodo. Donec ultricies sapien non odio maximus, convallis vehicula purus viverra. Sed efficitur tellus in mauris lacinia eleifend. Morbi viverra leo et leo imperdiet commodo. Donec imperdiet in ligula id pretium. Praesent rhoncus, lorem et tempus molestie, mi metus aliquam erat, sed elementum nisl purus nec nisi. Vestibulum at mattis dui. Morbi sagittis leo eu aliquet fringilla. Duis facilisis odio nibh, non vestibulum lectus sodales sed. - -Integer ultrices, sem tincidunt elementum accumsan, nunc mi accumsan ipsum, eget blandit justo nisi a sapien. Morbi vitae mollis eros. Nam et consequat purus. Integer nec lacus at nibh posuere aliquam. Cras vel rhoncus nisi. Nulla nec urna laoreet, ornare mauris quis, lobortis nulla. Nunc ornare, neque in varius commodo, nisi orci luctus mauris, eu lacinia risus urna sit amet massa. Sed accumsan nulla eget iaculis tempus. Aenean efficitur hendrerit dui in condimentum. Nulla vehicula, purus sit amet dapibus ultrices, orci tortor malesuada sapien, eu convallis arcu nunc sed augue. - -Donec a tellus orci. Pellentesque fermentum nibh et ex suscipit, in ornare nisl porta. Nam sit amet ligula ligula. Aliquam a massa elit. Pellentesque tempor libero nec velit luctus condimentum. Quisque vel malesuada neque. Sed interdum a massa vitae bibendum. - -Pellentesque ac ante porttitor, ultrices enim at, consequat nulla. Donec vitae sapien iaculis, faucibus risus eu, tincidunt velit. Nunc eu risus lacinia, aliquam ante vitae, commodo nulla. Donec maximus ut nunc suscipit ultricies. Sed et tellus eget ante feugiat iaculis eu ac justo. Suspendisse dignissim congue orci nec maximus. Aenean in accumsan tellus. Nam ac nisl sapien. Pellentesque pretium consectetur massa, sit amet posuere nisi venenatis et. Curabitur tincidunt bibendum maximus. Cras lobortis posuere tortor non sollicitudin. Nulla rhoncus tristique sem sed vulputate. Donec tempus viverra leo, ut gravida lectus pulvinar quis. Duis consequat urna arcu, a pharetra purus egestas id. In in metus congue eros fermentum tincidunt et et ante. - -Aliquam ut turpis in est blandit dapibus scelerisque vel justo. Fusce fringilla blandit dolor. Vivamus at rutrum eros. Aenean lectus enim, vehicula sit amet finibus eget, suscipit nec quam. Ut mattis varius nunc eu tristique. Integer nec ultrices neque. Integer tincidunt at nisl id dictum. Praesent id euismod ipsum. Nunc mattis tristique diam at accumsan. Proin varius massa id nunc dapibus, vitae molestie ante varius. Nunc libero orci, tempor vel condimentum in, convallis eget sapien. - -Praesent convallis velit vel nibh dictum, in tempus dolor eleifend. Vestibulum ante ipsum primis in faucibus orci luctus et ultrices posuere cubilia curae; Maecenas a mollis odio. Nam molestie quis lorem a dignissim. Suspendisse tempus purus vel dolor lobortis commodo sit amet ac dolor. Donec vestibulum consequat risus, vel sollicitudin metus fringilla sit amet. Proin eu condimentum augue, et pharetra metus. Morbi pellentesque commodo risus eget porttitor. Phasellus molestie rutrum placerat. - -Vestibulum euismod urna eget accumsan viverra. Nulla dictum dictum risus, eu tempor libero placerat vel. In non ante metus. Quisque consequat mattis metus id sollicitudin. In imperdiet, turpis at hendrerit pretium, velit urna semper libero, a venenatis arcu orci et odio. Donec fringilla commodo lectus, vel iaculis tellus dignissim vel. Praesent lobortis ligula in risus cursus gravida. Mauris sed ipsum sem. Nullam aliquet ut nibh quis iaculis. Integer venenatis porta scelerisque. Maecenas at facilisis erat, non mattis metus. Maecenas tristique mi et neque auctor ornare. - -Praesent massa ipsum, eleifend quis enim sit amet, egestas posuere lacus. Curabitur volutpat leo sit amet tortor tempor vulputate. Proin tristique leo lacus, ac varius diam vestibulum eu. Pellentesque nec luctus metus. Aliquam id purus eu mi mattis blandit sit amet et felis. Nulla vel nunc sed nisl convallis suscipit in non dui. Sed posuere luctus quam, at pellentesque tellus tincidunt vel. Ut sagittis sapien a lectus dignissim aliquam. - -Curabitur nec ipsum bibendum, feugiat velit at, ullamcorper magna. Sed dignissim, metus eu sagittis viverra, nisl dolor aliquam enim, sed laoreet mauris mauris eu ex. Maecenas finibus purus sit amet vulputate luctus. Sed sollicitudin elit sem, in condimentum velit hendrerit a. Duis vel mattis arcu. Proin et vulputate turpis. Pellentesque sagittis blandit nulla at aliquet. Donec sodales dictum neque et accumsan. Aenean condimentum imperdiet sem quis egestas. Integer orci nibh, molestie non pulvinar vitae, dictum quis felis. Maecenas tincidunt mi sed ullamcorper interdum. - -Nulla volutpat interdum quam. Cras aliquet arcu ante, a convallis nibh tincidunt ac. Ut lobortis diam nec ultricies egestas. Proin dapibus laoreet nulla at tempor. Fusce ut nisi vitae justo venenatis pretium et at nisi. Aliquam euismod imperdiet posuere. Proin a ornare leo. Mauris facilisis elit vitae mi tempus, eu rutrum ligula scelerisque. Integer in massa sit amet nulla imperdiet feugiat quis vitae lorem. Sed in felis et velit ultricies varius eget vel urna. Aliquam orci magna, congue non eros sit amet, laoreet egestas lacus. Suspendisse elementum diam mi, malesuada lobortis enim pretium eget. - -Integer id leo ut odio mattis malesuada. Praesent faucibus ex sed condimentum sagittis. Donec ac scelerisque neque, at dapibus lacus. Nam bibendum ultrices blandit. Aliquam ut mi urna. Curabitur semper pellentesque augue, in dictum ipsum bibendum in. Etiam in interdum turpis. Aenean faucibus a dui nec varius. Nulla auctor vitae mi sed hendrerit. Praesent egestas mi laoreet, commodo enim non, ullamcorper nibh. - -Maecenas est diam, elementum ut ornare vitae, feugiat in mauris. Nam tristique ante ut massa luctus pellentesque. Nunc varius mauris id malesuada tincidunt. Sed imperdiet lacus auctor hendrerit porttitor. Quisque pulvinar convallis justo, nec interdum risus mattis in. Donec tempus fringilla augue. Integer lobortis a nulla quis vestibulum. Fusce tempus lorem quis tellus suscipit, sit amet imperdiet metus congue. Vivamus ac magna lacus. Mauris libero odio, aliquet at diam quis, mattis condimentum ante. - -Fusce lacinia turpis nec nisl auctor, sit amet efficitur mi tincidunt. Aliquam et eros mi. Pellentesque leo nibh, ornare eu nibh et, pellentesque imperdiet velit. Aliquam vulputate justo sit amet malesuada feugiat. Aliquam vitae erat ex. Vestibulum quis diam eget nibh bibendum commodo a non massa. Donec volutpat, tortor eu euismod bibendum, nisi felis vulputate mi, sed posuere nisl lectus sit amet turpis. Vestibulum pharetra bibendum sollicitudin. Suspendisse potenti. Vestibulum id urna id tortor elementum vestibulum. Pellentesque mattis at tortor vel dictum. Curabitur ac lorem eu risus elementum interdum. - -Aenean hendrerit tincidunt erat, nec consectetur lectus auctor at. Morbi ullamcorper nisi et tellus viverra bibendum. Nulla leo sem, vehicula vel eros sit amet, egestas suscipit massa. Vestibulum non metus sem. Aenean nisi mauris, commodo eget sapien vitae, ullamcorper ornare arcu. Integer porta iaculis facilisis. Sed dignissim diam eget orci lacinia, ac pellentesque est consequat. Pellentesque luctus metus in ante efficitur consequat. Sed sagittis auctor dictum. Vivamus id sapien pharetra, venenatis lacus et, rutrum tellus. Nulla nec libero accumsan, mattis est a, ullamcorper magna. Maecenas pulvinar turpis quis ligula tempus sodales. Morbi scelerisque nisi est, sit amet fringilla est feugiat bibendum. - -Praesent in condimentum sem. Sed sagittis gravida blandit. Vestibulum ante ipsum primis in faucibus orci luctus et ultrices posuere cubilia curae; Maecenas mollis ligula lorem, vel elementum magna consequat vel. Praesent turpis magna, condimentum a diam in, euismod mattis metus. Morbi tempus velit id erat sodales faucibus at eu tellus. Nam ac dictum lorem. Vestibulum nec erat eget velit egestas eleifend. Vivamus molestie, orci tincidunt pretium posuere, purus nibh sodales neque, lobortis convallis eros justo et lacus. Duis lectus nisl, molestie vitae lectus in, molestie commodo enim. Integer semper, erat sed bibendum porttitor, urna massa iaculis leo, at dignissim ligula tellus ac sem. Sed mollis molestie congue. In hac habitasse platea dictumst. Etiam sit amet tempus ex, vel egestas diam. Curabitur fermentum urna ac sem varius pretium et at sem. - -Nulla nec risus ac nibh bibendum tincidunt. Etiam elementum vel nisl ut eleifend. Donec ut ullamcorper nunc, nec gravida est. Morbi in felis ut sapien feugiat sodales nec sed eros. Maecenas bibendum purus diam, sit amet hendrerit nulla volutpat sit amet. Cras id massa lobortis nisl suscipit faucibus in eu sapien. Donec non hendrerit augue, at faucibus urna. - -Pellentesque quis ex felis. Sed nunc nulla, cursus sit amet semper vitae, pellentesque eu ligula. Nunc efficitur feugiat convallis. Sed tincidunt in mauris nec ullamcorper. Duis blandit tellus ut libero scelerisque volutpat. Integer eget ornare erat. Aenean auctor dolor a libero iaculis, at porta lacus euismod. Suspendisse ultricies pellentesque pharetra. Quisque sit amet lacus eget ipsum facilisis eleifend et a mi. - -Nulla tristique sollicitudin metus eu vulputate. Morbi sed nisl pulvinar, consectetur augue ac, dapibus ex. In tincidunt eu leo sed pellentesque. Pellentesque turpis eros, cursus id nunc non, vehicula condimentum leo. Maecenas lacinia ac turpis sollicitudin eleifend. Vestibulum id sem a nisi suscipit lacinia eu vel sapien. In sit amet sem at odio rutrum pretium id eu est. Pellentesque eget euismod quam, id pulvinar ex. Donec ornare velit in sapien auctor mollis. Morbi metus purus, tempus in orci eu, ultricies consectetur purus. Donec ullamcorper iaculis eros. Ut sodales elementum sem, non bibendum orci aliquam vitae. In hac habitasse platea dictumst. Nullam id ipsum hendrerit, rhoncus eros nec, blandit massa. Cras sagittis pellentesque tincidunt. Cras auctor condimentum felis a imperdiet. - -Proin tempor augue arcu, euismod finibus turpis faucibus quis. Nullam ac dui non ex aliquam efficitur. Orci varius natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus. Praesent ornare accumsan rhoncus. Curabitur id arcu sed sem pharetra pretium. Suspendisse id ante non erat posuere lobortis. Aliquam consequat vestibulum nunc, ac dapibus turpis porttitor sit amet. Nunc nulla tortor, dictum sit amet sem in, efficitur consectetur lectus. Vivamus vulputate, tortor eget feugiat efficitur, leo velit accumsan magna, vitae ornare ante lectus non justo. Nulla laoreet rutrum ipsum vitae pharetra. Cras leo ex, volutpat nec tortor ac, scelerisque consequat mauris. - -Nam vel sapien blandit diam vulputate maximus. Pellentesque quam felis, convallis id justo in, pellentesque sagittis lectus. Praesent a commodo eros, non vulputate enim. Praesent venenatis vestibulum magna, in sagittis arcu posuere ut. Maecenas justo enim, ullamcorper vel nibh sed, ornare rutrum turpis. In eleifend mattis sapien, nec varius est efficitur facilisis. Sed blandit ante ut tortor hendrerit, et facilisis velit imperdiet. Ut tempor a elit quis eleifend. Class aptent taciti sociosqu ad litora torquent per conubia nostra, per inceptos himenaeos. Nullam convallis, elit vitae semper egestas, turpis tortor porttitor nibh, ac consequat velit massa porta turpis. Donec nec tortor ligula. - -Suspendisse luctus tempor dolor, nec tempus diam tincidunt fringilla. Nullam ultricies, massa facilisis vestibulum posuere, eros magna scelerisque quam, nec aliquet eros mi in ex. Praesent mattis, tortor in elementum congue, ligula risus placerat erat, at tincidunt orci quam sed massa. Maecenas et arcu condimentum, hendrerit arcu in, interdum ex. Fusce varius, mauris ut euismod ornare, urna elit molestie tortor, et ultrices nisi justo sed urna. Nullam ornare a mi a fringilla. Suspendisse volutpat dignissim nibh, sed luctus nisl sollicitudin ac. Nam condimentum consectetur dui, at feugiat sapien laoreet nec. Fusce ac nisi id dolor faucibus sodales. Nulla convallis dolor id eros fringilla ultricies. Aenean non dignissim lectus, et rhoncus nulla. Donec rutrum rutrum posuere. - -Mauris ullamcorper nisi ante, et malesuada arcu ultrices vel. Curabitur euismod, lorem ut tristique pharetra, sapien nunc hendrerit tellus, in aliquam neque eros eget nisi. Morbi euismod magna a dolor scelerisque, sed condimentum mi rutrum. Vivamus non libero luctus, accumsan est eget, eleifend sapien. Vestibulum luctus vitae libero et tristique. Duis vitae fermentum erat. Lorem ipsum dolor sit amet, consectetur adipiscing elit. Cras ac bibendum tellus. Aenean eu tempus neque. Praesent egestas a massa non aliquet. Aliquam vel augue tortor. Praesent blandit vitae massa at molestie. Aliquam semper elit vitae sem ornare, non accumsan sapien tincidunt. - -Proin eget scelerisque lacus. Phasellus id porta sem. Curabitur sed sem viverra, aliquam quam hendrerit, efficitur lacus. Suspendisse finibus leo sapien, faucibus pretium magna cursus eget. In pellentesque metus sed arcu iaculis, in feugiat sem convallis. Ut rhoncus porttitor pellentesque. Pellentesque eu purus sit amet leo efficitur accumsan ut id elit. Duis lacus erat, malesuada in hendrerit in, volutpat in dui. Integer fermentum magna in ultricies vestibulum. Nunc et felis nisi. Donec sit amet molestie nulla. Maecenas elit quam, tincidunt eu suscipit sit amet, maximus at turpis. - -Vestibulum scelerisque justo a dui blandit laoreet. Fusce commodo lorem vitae accumsan sollicitudin. Ut eu semper turpis. Donec aliquam imperdiet enim, in cursus tellus maximus vel. Nullam interdum mauris nec mauris convallis placerat. Duis metus est, venenatis sit amet auctor et, rutrum ut ligula. Praesent sagittis, neque sit amet maximus feugiat, urna sem tempor libero, eget viverra nisi quam posuere ante. Aliquam turpis tortor, consectetur ac efficitur id, placerat ut ipsum. Donec hendrerit tincidunt nibh, sed facilisis elit molestie sit amet. Aliquam iaculis tempor erat, nec facilisis nisl dapibus sit amet. Phasellus semper libero diam, at ultricies purus congue id. Praesent luctus dapibus mi, in mollis ex. - -Nunc fermentum, felis eget interdum convallis, eros nisi scelerisque nisl, sed ultricies diam ex a orci. Sed finibus risus eget augue tristique, nec fermentum felis viverra. Donec dictum mollis arcu consequat faucibus. Phasellus aliquet eros vel sem posuere, ac euismod tortor dapibus. Cras volutpat pulvinar lobortis. Proin quis porta est. Nunc molestie, lectus in faucibus dapibus, nunc arcu imperdiet nulla, in consectetur diam justo feugiat est. Fusce vitae lectus at sem placerat viverra id ac leo. Ut porttitor hendrerit diam, tempor interdum turpis tempor a. - -Quisque sed eleifend massa. Vivamus dapibus semper ultricies. Quisque hendrerit in velit lobortis euismod. Fusce tempor interdum elit, ac faucibus diam ultricies in. Proin consequat, diam at faucibus laoreet, mauris est sollicitudin lorem, quis convallis leo orci a sapien. Aenean facilisis, ex non convallis viverra, mi nisi ullamcorper tellus, quis commodo dui arcu laoreet nibh. Maecenas vel laoreet urna. - -Vivamus neque massa, luctus in purus in, maximus lacinia justo. Pellentesque habitant morbi tristique senectus et netus et malesuada fames ac turpis egestas. Ut congue lorem vitae orci porttitor gravida. Suspendisse lacinia, neque a egestas aliquet, leo turpis volutpat velit, vel viverra tellus elit vitae ligula. Praesent rhoncus ante id sapien pretium, lacinia sollicitudin purus dapibus. Nulla quis blandit sapien. Nulla facilisi. - -Cras sit amet nulla purus. Proin suscipit nunc diam, eu efficitur nunc suscipit eget. Mauris massa metus, convallis sed ante eget, cursus pharetra tortor. Nam vel pretium quam. Sed volutpat erat est, et dignissim libero interdum ut. Cras ultricies consectetur volutpat. Mauris eu molestie sapien. Nullam ac urna lobortis, tincidunt dolor pulvinar, viverra massa. Ut nisi dolor, tristique nec pulvinar eu, convallis sed nunc. Maecenas quam turpis, placerat et pellentesque accumsan, egestas non tellus. Vivamus mattis sollicitudin aliquam. - -Pellentesque vel nibh mi. Vestibulum a porttitor odio. Aenean ultrices, nunc at imperdiet maximus, magna ex sagittis massa, eget eleifend leo risus scelerisque nunc. Interdum et malesuada fames ac ante ipsum primis in faucibus. Phasellus tincidunt neque arcu, id varius diam ullamcorper ac. Sed viverra arcu quam. Lorem ipsum dolor sit amet, consectetur adipiscing elit. Praesent pulvinar massa id libero tincidunt rutrum. - -Mauris interdum sem et metus fringilla, a pulvinar nulla rhoncus. Sed ornare ipsum ornare enim tempor, finibus molestie erat varius. Phasellus finibus arcu vel lacus condimentum, in mattis felis scelerisque. Praesent efficitur laoreet mauris sit amet convallis. Maecenas tempor erat nec lacus interdum imperdiet. Pellentesque maximus tristique orci, in auctor nisl posuere a. Phasellus pellentesque tellus eget metus ullamcorper, ut volutpat nunc ornare. Mauris porta ex faucibus, varius dui id, finibus ex. Sed placerat quam imperdiet magna lacinia accumsan sit amet at neque. Duis interdum augue tellus, at tincidunt libero ultrices ut. Maecenas blandit venenatis nulla non gravida. Lorem ipsum dolor sit amet, consectetur adipiscing elit. Proin congue eros sed leo feugiat aliquam. - -Proin consectetur id neque in malesuada. Ut vestibulum porttitor felis, eu iaculis nulla convallis et. Sed sed nunc vitae metus sodales varius. Aliquam eget ante at massa luctus auctor ultricies sed quam. Fusce nec vestibulum orci. Sed posuere elementum molestie. Interdum et malesuada fames ac ante ipsum primis in faucibus. - -Suspendisse ornare sagittis mollis. Mauris sed nibh quis ex suscipit consectetur nec vel ipsum. Sed ac mauris sed libero sollicitudin mattis ultrices eu mi. Pellentesque vestibulum eros et lorem dictum, eu facilisis neque gravida. Donec convallis nibh egestas erat aliquet posuere. Vivamus felis est, sagittis eget arcu quis, ultricies fermentum diam. Curabitur porta tortor purus, eu convallis nisi sollicitudin ac. Aliquam at arcu ut nisl lobortis aliquam fermentum eget metus. Etiam viverra risus at eleifend convallis. Morbi fringilla lobortis lectus eu imperdiet. Sed porta eros scelerisque ornare interdum. - -Integer porta quam justo. Pellentesque habitant morbi tristique senectus et netus et malesuada fames ac turpis egestas. Nullam nulla sem, ultrices at turpis ut, dictum bibendum sapien. Quisque suscipit, quam sit amet pellentesque porta, ligula odio consequat sapien, non placerat leo lacus sit amet erat. Pellentesque semper felis in felis porttitor tempus. Maecenas ullamcorper neque ut sem gravida vulputate. Fusce ultrices pharetra leo, et egestas ante condimentum nec. Maecenas sit amet suscipit leo. Donec ultricies purus nec nulla laoreet dignissim. Donec quis mattis nisi. Mauris nec eleifend tortor. Quisque a auctor arcu. Class aptent taciti sociosqu ad litora torquent per conubia nostra, per inceptos himenaeos. Cras rutrum eros aliquam justo suscipit pellentesque. Vivamus vehicula lectus felis. - -Cras hendrerit augue sed feugiat iaculis. Nullam placerat sollicitudin dolor nec vehicula. Duis vehicula vestibulum erat vitae suscipit. Phasellus id orci vestibulum, condimentum velit ut, feugiat nisl. Vestibulum ante ipsum primis in faucibus orci luctus et ultrices posuere cubilia curae; Nam quis euismod massa, consequat cursus felis. Phasellus gravida semper placerat. Pellentesque et ultricies mauris, vel posuere tellus. Vestibulum mauris purus, porta ac rhoncus et, suscipit non magna. Aenean ut molestie sem. Etiam purus urna, porta ac sagittis vel, rutrum et nunc. - -Orci varius natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus. Proin lacinia eros quam, sagittis pretium sem dapibus ut. Etiam quis suscipit eros. Vestibulum rutrum imperdiet efficitur. Pellentesque leo elit, hendrerit id magna eu, bibendum finibus dui. Proin lacus felis, consectetur a nunc sit amet, facilisis dapibus justo. In et turpis hendrerit, posuere metus non, semper erat. Sed a malesuada augue. Aenean aliquet interdum eros, vel elementum felis rhoncus id. Etiam quis vehicula ex. Duis consequat vulputate tincidunt. Nam molestie purus dolor, non consequat augue mattis id. Pellentesque sollicitudin scelerisque congue. Duis nec ornare erat. Duis varius id mi eget blandit. Duis dignissim, dui et laoreet viverra, metus nisi suscipit diam, eget mattis risus orci in justo. - -Ut lacinia, ligula at porttitor hendrerit, ante urna semper lorem, ut aliquam leo nisl ut est. Phasellus lacinia erat lectus, et sollicitudin sapien gravida sed. Nunc efficitur nulla viverra dui eleifend, sed malesuada orci sollicitudin. Donec ultrices sapien et tincidunt consectetur. Duis elit nisl, accumsan nec velit ut, luctus ultrices ex. Donec elementum, sem et accumsan euismod, justo tellus elementum erat, scelerisque pulvinar magna purus vitae urna. Nullam laoreet lacinia semper. In maximus cursus lacinia. Aliquam ac elit velit. Nulla faucibus mollis auctor. Fusce sagittis massa ut urna aliquet, quis varius ex dapibus. - -Praesent lacus diam, hendrerit vitae ante vitae, facilisis porta enim. Donec quis nisi dignissim, dapibus ex quis, euismod ipsum. Sed porttitor ac orci in porttitor. Quisque a hendrerit velit. Morbi ac eros nec leo tempus placerat sollicitudin non justo. Orci varius natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus. Morbi mattis, nulla id dictum blandit, sem mauris efficitur erat, sit amet eleifend risus massa vel metus. Vestibulum ac velit nec nulla efficitur dapibus. Quisque rutrum viverra nibh in euismod. Integer ultricies convallis dui non iaculis. Sed at feugiat massa, eu pharetra lorem. Nam consequat iaculis orci blandit lobortis. - -Nam sit amet tristique tellus. Nunc tempus, est ut tempus faucibus, nisi nulla fermentum ex, vitae euismod risus mauris sed quam. Phasellus tempor placerat rhoncus. Proin malesuada commodo odio, vitae tincidunt lectus rutrum eu. Orci varius natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus. Pellentesque eros orci, sodales non luctus id, eleifend ac sapien. Aliquam et ligula erat. Integer ut posuere urna. Nulla maximus lobortis tortor, sit amet vestibulum metus cursus in. Sed ante purus, pharetra vitae est semper, auctor congue nisi. Aliquam leo risus, faucibus id neque vel, euismod maximus eros. Curabitur sed erat sagittis, efficitur neque sed, accumsan odio. - -Nullam ut arcu a lectus lobortis tempus. Nulla nunc nunc, suscipit lacinia tellus et, dictum tincidunt lectus. Phasellus convallis commodo urna interdum aliquam. Donec odio lacus, interdum id hendrerit at, sollicitudin sed massa. Integer non nisl interdum, consequat eros nec, imperdiet nibh. Aliquam commodo turpis nibh, quis vehicula risus posuere non. Integer a tincidunt arcu, ac dignissim nisl. Sed gravida lectus at pellentesque dapibus. Praesent hendrerit nunc eleifend quam vulputate, sed malesuada augue pretium. Praesent molestie lorem id orci bibendum rhoncus. Curabitur turpis tellus, cursus in elit sed, tempor malesuada leo. Pellentesque sed turpis a dui blandit dapibus eget vel ipsum. Etiam cursus non lacus at laoreet. - -Morbi quis enim ac lectus molestie maximus a id ante. Maecenas arcu massa, sodales quis tempus in, tristique sed nunc. Donec tristique tempus hendrerit. Curabitur rutrum tincidunt tortor non venenatis. Praesent pretium urna ac imperdiet faucibus. Mauris ullamcorper sit amet nisi et bibendum. Maecenas vitae dictum justo. Donec ut sapien et nibh rutrum imperdiet. Aliquam malesuada lobortis purus nec commodo. Praesent tortor diam, egestas vitae libero ac, varius consequat lectus. - -Sed in arcu urna. Aenean ultricies vehicula lobortis. Nunc finibus ante sit amet bibendum laoreet. Vestibulum pretium lorem eros, ac laoreet ante pharetra ut. Duis vitae feugiat purus, vel luctus leo. Pellentesque tempus in quam vitae laoreet. Fusce vitae arcu at nulla dignissim dignissim. Nulla id lorem sodales, aliquet odio non, suscipit elit. - -Suspendisse potenti. Vivamus lacinia ornare feugiat. Curabitur commodo bibendum massa, non mollis enim volutpat id. Aenean volutpat tellus ut elit vehicula, at gravida ipsum auctor. Duis lacinia metus eu sapien accumsan, sed viverra augue imperdiet. Aliquam sagittis augue arcu, viverra elementum diam facilisis non. Nullam a blandit lectus. Cras laoreet nunc quis tortor porttitor, id interdum sem egestas. Fusce ligula ex, laoreet quis pellentesque vitae, suscipit eget felis. In mattis leo neque, ut convallis arcu luctus in. Quisque vel rutrum nibh. - -Proin pellentesque ornare massa, non maximus mauris pharetra non. Donec quis velit at turpis lacinia placerat at at ante. Donec porta ligula vitae nisl aliquam, non tristique enim viverra. In rutrum at metus quis pretium. Integer sem nibh, tempor vel accumsan non, vehicula nec quam. Aliquam dictum nisi orci, eu laoreet libero consectetur a. Vivamus tortor lectus, sagittis ac fringilla imperdiet, dapibus vitae sem. Nam posuere libero tincidunt posuere pharetra. Aliquam erat volutpat. Proin varius risus eget enim fermentum eleifend. Donec nec consequat leo. Praesent vehicula turpis eget mauris viverra luctus. Nam bibendum nisi eget odio gravida, sed convallis eros tincidunt. - -Morbi consequat ipsum in eros imperdiet, nec porta diam eleifend. Proin tempus ligula tellus, id posuere sem lacinia eget. In vel sapien ante. Duis vitae rutrum massa. Fusce ornare augue rhoncus, feugiat diam eget, pulvinar libero. Fusce auctor rutrum orci in feugiat. Phasellus at aliquet risus. Sed eu lacus nulla. Quisque viverra neque velit, a dapibus est dignissim et. Duis eu iaculis est. Curabitur in odio eget metus fringilla tincidunt. Maecenas vel elit vitae enim tempus efficitur non at turpis. Fusce id risus quis eros facilisis finibus. Mauris eu nibh gravida, pharetra diam in, aliquam sapien. - -Phasellus rutrum scelerisque sem sit amet sodales. Ut vestibulum justo congue condimentum ornare. Integer feugiat hendrerit orci non vulputate. Donec ac consequat tortor, a molestie ex. Cras eget ipsum sed diam dapibus bibendum. Suspendisse arcu odio, pulvinar ut tincidunt vel, viverra at metus. Etiam efficitur tincidunt nunc, at faucibus massa dapibus et. Integer massa leo, facilisis at volutpat id, scelerisque in nibh. Donec vitae suscipit libero. Nulla ut leo pulvinar augue hendrerit imperdiet. Mauris maximus at purus sit amet rutrum. - -Vivamus leo nunc, feugiat et dictum at, vehicula quis tellus. Etiam non nibh id turpis feugiat varius sed ut massa. Sed tortor nisl, tristique nec nulla ut, lobortis interdum purus. Nunc rhoncus lectus leo, ut ultricies neque varius a. Vestibulum convallis convallis felis, sit amet luctus eros. Curabitur eros magna, lobortis tempus justo molestie, rutrum viverra ante. Vivamus pellentesque, mi et finibus faucibus, magna enim hendrerit justo, id volutpat quam nibh vel leo. - -Ut ultricies tempus rutrum. Aenean vehicula vestibulum eros, sed volutpat odio venenatis eget. Pellentesque sollicitudin felis purus, quis gravida tortor dignissim nec. Aliquam mollis pretium turpis, nec semper tortor convallis venenatis. Nullam sed imperdiet justo. Ut et euismod ipsum, id facilisis dui. In sapien ligula, euismod a pharetra eu, maximus et nulla. In rhoncus, nisl nec tincidunt condimentum, elit nisi consequat nulla, nec tincidunt justo justo eget nunc. In ac mauris ac mi pretium faucibus sed in ante. Nam pretium nunc a augue luctus tempus. Maecenas ac vehicula est, ac iaculis lorem. Praesent mollis ac nisi et eleifend. Donec quis eleifend nisi. Pellentesque at augue mi. Aliquam ornare, lectus ut porttitor dapibus, urna felis porttitor felis, id vestibulum urna est et enim. Vivamus posuere lorem ut ante tincidunt, at facilisis leo feugiat. - -Nam molestie pulvinar neque, ut tincidunt leo dapibus eu. Aenean sit amet aliquet libero. Vivamus vestibulum libero ac ligula sagittis, ac laoreet magna sagittis. Nulla a pharetra enim. Aenean a consectetur sapien. Vivamus sodales ex massa, sit amet ultrices est aliquam eget. Nunc velit ipsum, rhoncus at libero id, convallis dapibus urna. Etiam rhoncus nulla eget mollis sollicitudin. Donec ornare ipsum egestas magna euismod, sit amet consequat felis posuere. Sed vestibulum suscipit eros ut pellentesque. Sed ultricies tincidunt ullamcorper. Pellentesque blandit ultricies odio eget sagittis. - -Cras ut finibus augue. Etiam iaculis fringilla elit eget sagittis. Cras non semper enim, ac hendrerit tortor. Mauris convallis dui vitae eros condimentum cursus. Donec luctus ultrices interdum. Integer leo velit, ullamcorper ut laoreet ut, varius vitae lectus. Fusce congue pulvinar sapien a gravida. In ac leo vulputate, porta leo at, pharetra dui. Sed efficitur tempor metus, eu cursus massa scelerisque a. Quisque tristique egestas nulla. - -Nam convallis, nisl vel congue tincidunt, sapien purus tincidunt quam, at sagittis nisi lorem vel turpis. Nam rhoncus placerat metus. Quisque tempus magna vel venenatis dignissim. Nulla sit amet ornare diam, sit amet facilisis quam. In auctor mollis volutpat. Mauris condimentum sollicitudin libero a iaculis. Aenean nunc felis, hendrerit at gravida eget, ornare nec nunc. In ac facilisis enim. Nullam cursus turpis eget arcu mattis, nec viverra mauris varius. - -Fusce porta maximus fringilla. In urna dui, pharetra id elit quis, tincidunt ultricies odio. Ut in orci placerat, tempus lorem et, finibus leo. Sed commodo feugiat orci, ut venenatis metus pulvinar id. Proin facilisis sed dui commodo tristique. Sed placerat lectus sit amet euismod fermentum. Aliquam nec erat eu dui egestas facilisis dignissim sed lorem. Duis convallis eu erat ac bibendum. Interdum et malesuada fames ac ante ipsum primis in faucibus. Aliquam gravida, arcu quis bibendum pellentesque, massa lectus facilisis felis, vitae dapibus tortor ligula at purus. Donec dictum non nulla gravida iaculis. Nam semper sollicitudin ultrices. Donec non dignissim nibh. Phasellus tincidunt, velit a malesuada elementum, magna tortor malesuada enim, ac feugiat neque felis quis diam. Curabitur ut nunc vel felis fermentum sollicitudin. Quisque feugiat fermentum erat non mattis. - -Sed imperdiet nisi ultricies nisl hendrerit, vel pulvinar orci congue. Aliquam consequat rhoncus quam sed porttitor. Suspendisse convallis, arcu sed accumsan eleifend, felis tortor molestie mi, semper viverra ipsum tortor et lectus. Vivamus rhoncus libero in nunc porta, sit amet finibus sem volutpat. Pellentesque non vestibulum libero. Nullam vitae erat in augue ultricies sagittis sit amet id leo. Ut odio ligula, sodales eget consequat quis, accumsan at nulla. Quisque leo neque, tempor quis nibh sed, hendrerit eleifend est. Nulla eget felis ut dui placerat varius. Sed feugiat tempor orci eu sodales. Nullam porta ligula at hendrerit tincidunt. Donec tincidunt, velit eu commodo dignissim, nulla magna dapibus nisi, ut volutpat massa justo id tortor. Fusce eros ligula, sodales sed imperdiet sed, lobortis vitae tortor. - -Maecenas ultrices enim quis eros vulputate placerat. Proin vel ipsum urna. Curabitur lorem urna, volutpat placerat rutrum et, ultricies sit amet felis. Sed suscipit gravida nibh. Donec ipsum neque, fringilla sed finibus nec, elementum vel lorem. Cras quis nisl eu leo porta pellentesque sed vel nunc. Curabitur tempor eros at turpis imperdiet semper. Quisque dapibus odio at molestie faucibus. Pellentesque ac diam vitae neque vestibulum consequat. - -Proin a fermentum lacus, non imperdiet sem. Vestibulum eget lacus convallis, viverra tellus ut, sodales neque. Nunc tincidunt tellus ac arcu pellentesque congue. Donec sed urna aliquam, congue nulla vel, eleifend diam. In a tristique orci eleifend. diff --git a/examples/compression/zstd/zstd.go b/examples/compression/zstd/zstd.go deleted file mode 100644 index 2e615dcc..00000000 --- a/examples/compression/zstd/zstd.go +++ /dev/null @@ -1,46 +0,0 @@ -/* - * Copyright (C) 2022-2023, Chain4Travel AG. All rights reserved. - * See the file LICENSE for licensing terms. - */ - -package main - -import ( - "os" - - "github.com/klauspost/compress/zstd" -) - -const ( - FixedBlockSize = 48 << 10 // according to element limit -) - -var encoder, _ = zstd.NewWriter(nil, zstd.WithWindowSize(FixedBlockSize)) -var decoder, _ = zstd.NewReader(nil, zstd.WithDecoderConcurrency(0)) - -func main() { - wd, _ := os.Getwd() - bytes, err := os.ReadFile(wd + "/examples/compression/test.txt") - if err != nil { - panic(err) - } - - compressedBytes := Compress(bytes) - os.WriteFile("ctest", compressedBytes, 0644) - - decompressedBytes, err := Decompress(compressedBytes) - if err != nil { - panic(err) - } - os.WriteFile("dtest.txt", decompressedBytes, 0644) -} - -// Compress a buffer. -// If you have a destination buffer, the allocation in the call can also be eliminated. -func Compress(src []byte) []byte { - return encoder.EncodeAll(src, make([]byte, 0, len(src))) -} - -func Decompress(src []byte) ([]byte, error) { - return decoder.DecodeAll(src, nil) -} diff --git a/examples/mautrix/main.go b/examples/mautrix/main.go deleted file mode 100644 index 72fefbd3..00000000 --- a/examples/mautrix/main.go +++ /dev/null @@ -1,153 +0,0 @@ -// Copyright (C) 2017 Tulir Asokan -// Copyright (C) 2018-2020 Luca Weiss -// Copyright (C) 2023 Tulir Asokan -// -// This Source Code Form is subject to the terms of the Mozilla Public -// License, v. 2.0. If a copy of the MPL was not distributed with this -// file, You can obtain one at http://mozilla.org/MPL/2.0/. - -package main - -import ( - "context" - "errors" - "flag" - "fmt" - "os" - "sync" - "time" - - "github.com/chzyer/readline" - _ "github.com/mattn/go-sqlite3" - "github.com/rs/zerolog" - - "maunium.net/go/mautrix" - "maunium.net/go/mautrix/crypto/cryptohelper" - "maunium.net/go/mautrix/event" - "maunium.net/go/mautrix/id" -) - -var homeserver = flag.String("homeserver", "", "Matrix homeserver") -var username = flag.String("username", "", "Matrix username localpart") -var password = flag.String("password", "", "Matrix password") -var database = flag.String("database", "mautrix-example.db", "SQLite database path") -var debug = flag.Bool("debug", true, "Enable debug logs") - -func main() { - flag.Parse() - if *username == "" || *password == "" || *homeserver == "" { - _, _ = fmt.Fprintf(os.Stderr, "Usage of %s:\n", os.Args[0]) - flag.PrintDefaults() - os.Exit(1) - } - - client, err := mautrix.NewClient(*homeserver, "", "") - if err != nil { - panic(err) - } - rl, err := readline.New("[no room]> ") - if err != nil { - panic(err) - } - defer rl.Close() - log := zerolog.New(zerolog.NewConsoleWriter(func(w *zerolog.ConsoleWriter) { - w.Out = rl.Stdout() - w.TimeFormat = time.Stamp - })).With().Timestamp().Logger() - if !*debug { - log = log.Level(zerolog.InfoLevel) - } - client.Log = log - log.Printf("username: %s", *username) - var lastRoomID id.RoomID - - syncer := client.Syncer.(*mautrix.DefaultSyncer) - syncer.OnEventType(event.EventMessage, func(source mautrix.EventSource, evt *event.Event) { - lastRoomID = evt.RoomID - rl.SetPrompt(fmt.Sprintf("%s> ", lastRoomID)) - log.Info(). - Str("sender", evt.Sender.String()). - Str("type", evt.Type.String()). - Str("id", evt.ID.String()). - Str("body", evt.Content.AsMessage().Body). - Msg("Received message") - }) - syncer.OnEventType(event.StateMember, func(source mautrix.EventSource, evt *event.Event) { - if evt.GetStateKey() == client.UserID.String() && evt.Content.AsMember().Membership == event.MembershipInvite { - _, err := client.JoinRoomByID(evt.RoomID) - if err == nil { - lastRoomID = evt.RoomID - rl.SetPrompt(fmt.Sprintf("%s> ", lastRoomID)) - log.Info(). - Str("room_id", evt.RoomID.String()). - Str("inviter", evt.Sender.String()). - Msg("Joined room after invite") - } else { - log.Error().Err(err). - Str("room_id", evt.RoomID.String()). - Str("inviter", evt.Sender.String()). - Msg("Failed to join room after invite") - } - } - }) - - cryptoHelper, err := cryptohelper.NewCryptoHelper(client, []byte("meow"), *database) - if err != nil { - panic(err) - } - - // You can also store the user/device IDs and access token and put them in the client beforehand instead of using LoginAs. - //client.UserID = "..." - //client.DeviceID = "..." - //client.AccessToken = "..." - // You don't need to set a device ID in LoginAs because the crypto helper will set it for you if necessary. - cryptoHelper.LoginAs = &mautrix.ReqLogin{ - Type: mautrix.AuthTypePassword, - Identifier: mautrix.UserIdentifier{Type: mautrix.IdentifierTypeThirdParty, Medium: "camino", Address: *username}, - Password: *password, - } - // If you want to use multiple clients with the same DB, you should set a distinct database account ID for each one. - //cryptoHelper.DBAccountID = "" - err = cryptoHelper.Init() - if err != nil { - panic(err) - } - // Set the client crypto helper in order to automatically encrypt outgoing messages - client.Crypto = cryptoHelper - - log.Info().Msg("Now running") - syncCtx, cancelSync := context.WithCancel(context.Background()) - var syncStopWait sync.WaitGroup - syncStopWait.Add(1) - - go func() { - err = client.SyncWithContext(syncCtx) - defer syncStopWait.Done() - if err != nil && !errors.Is(err, context.Canceled) { - panic(err) - } - }() - - for { - line, err := rl.Readline() - if err != nil { // io.EOF - break - } - if lastRoomID == "" { - log.Error().Msg("Wait for an incoming message before sending messages") - continue - } - resp, err := client.SendText(lastRoomID, line) - if err != nil { - log.Error().Err(err).Msg("Failed to send event") - } else { - log.Info().Str("event_id", resp.EventID.String()).Msg("Event sent") - } - } - cancelSync() - syncStopWait.Wait() - err = cryptoHelper.Close() - if err != nil { - log.Error().Err(err).Msg("Error closing database") - } -}