From 57c5242b3ee9f9479576bfe738234eb9c28e2bc5 Mon Sep 17 00:00:00 2001 From: Pavel Kirilin Date: Fri, 11 Mar 2022 03:03:46 +0400 Subject: [PATCH 1/4] Version bumped to 0.4.8. Signed-off-by: Pavel Kirilin --- Cargo.lock | 2 +- Cargo.toml | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index 7a4aef8..d345c90 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -2375,7 +2375,7 @@ dependencies = [ [[package]] name = "rustus" -version = "0.4.7" +version = "0.4.8" dependencies = [ "actix-files", "actix-rt", diff --git a/Cargo.toml b/Cargo.toml index 7464294..cc0d737 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "rustus" -version = "0.4.7" +version = "0.4.8" edition = "2021" description = "TUS protocol implementation written in Rust." keywords = [ From 4cd7dc7555175116b70f590230344f836fbf2bd5 Mon Sep 17 00:00:00 2001 From: Pavel Kirilin Date: Fri, 18 Mar 2022 20:46:05 +0400 Subject: [PATCH 2/4] Added checksum extension. (#60) Signed-off-by: Pavel Kirilin --- .github/workflows/test.yml | 18 ++--- Cargo.lock | 43 ++++++++++- Cargo.toml | 21 ++++- src/config.rs | 2 +- src/errors.rs | 15 +++- src/protocol/core/server_info.rs | 14 +++- src/protocol/core/write_bytes.rs | 40 ++++++++++ src/protocol/extensions.rs | 2 + src/utils/hashes.rs | 128 +++++++++++++++++++++++++++++++ src/utils/mod.rs | 2 + 10 files changed, 261 insertions(+), 24 deletions(-) create mode 100644 src/utils/hashes.rs diff --git a/.github/workflows/test.yml b/.github/workflows/test.yml index 1e12134..b4063cb 100644 --- a/.github/workflows/test.yml +++ b/.github/workflows/test.yml @@ -80,18 +80,14 @@ jobs: - uses: actions/checkout@v2 with: fetch-depth: 0 - - name: Install nightly toolchain - run: rustup toolchain install nightly --component llvm-tools-preview - - name: Install cargo-llvm-cov - uses: taiki-e/install-action@cargo-llvm-cov - - name: Generate code coverage - run: cargo llvm-cov --features=all,integration_tests --lcov --output-path lcov.info -- --test-threads 1 + - name: Install stable toolchain + uses: actions-rs/toolchain@v1 + with: + toolchain: stable + override: true + - name: Run tests + run: cargo test --features=all,integration_tests -- --test-threads 1 env: TEST_REDIS_URL: redis://localhost:${{ job.services.redis.ports['6379'] }}/0 TEST_DB_URL: postgresql://rustus:rustus@localhost:${{ job.services.pg.ports['5432'] }}/rustus TEST_AMQP_URL: amqp://guest:guest@localhost:${{ job.services.rabbit.ports['5672'] }} - - name: Coveralls - uses: coverallsapp/github-action@master - with: - github-token: ${{ secrets.GITHUB_TOKEN }} - path-to-lcov: lcov.info diff --git a/Cargo.lock b/Cargo.lock index d345c90..6e31f9f 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -1456,6 +1456,15 @@ dependencies = [ "opaque-debug 0.3.0", ] +[[package]] +name = "md-5" +version = "0.10.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "658646b21e0b72f7866c7038ab086d3d5e1cd6271f060fd37defb241949d0582" +dependencies = [ + "digest 0.10.3", +] + [[package]] name = "memchr" version = "2.4.1" @@ -2192,7 +2201,7 @@ dependencies = [ "itoa 0.4.8", "percent-encoding", "pin-project-lite", - "sha1", + "sha1 0.6.1", "tokio", "tokio-util 0.6.9", "url", @@ -2385,12 +2394,14 @@ dependencies = [ "bytes", "chrono", "derive_more", + "digest 0.10.3", "fern", "futures", "httptest", "lapin", "lazy_static", "log", + "md-5 0.10.1", "mobc-lapin", "mobc-redis", "openssl", @@ -2399,6 +2410,8 @@ dependencies = [ "reqwest", "serde", "serde_json", + "sha1 0.10.1", + "sha2 0.10.2", "strfmt", "structopt", "strum", @@ -2590,6 +2603,17 @@ dependencies = [ "sha1_smol", ] +[[package]] +name = "sha1" +version = "0.10.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c77f4e7f65455545c2153c1253d25056825e77ee2533f0e41deb65a93a34852f" +dependencies = [ + "cfg-if", + "cpufeatures", + "digest 0.10.3", +] + [[package]] name = "sha1_smol" version = "1.0.0" @@ -2609,6 +2633,17 @@ dependencies = [ "opaque-debug 0.3.0", ] +[[package]] +name = "sha2" +version = "0.10.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "55deaec60f81eefe3cce0dc50bda92d6d8e88f2a27df7c5033b42afeb1ed2676" +dependencies = [ + "cfg-if", + "cpufeatures", + "digest 0.10.3", +] + [[package]] name = "signal-hook-registry" version = "1.4.0" @@ -2711,7 +2746,7 @@ dependencies = [ "libc", "libsqlite3-sys", "log", - "md-5", + "md-5 0.9.1", "memchr", "num-bigint", "once_cell", @@ -2725,7 +2760,7 @@ dependencies = [ "serde", "serde_json", "sha-1 0.9.8", - "sha2", + "sha2 0.9.9", "smallvec", "sqlformat", "sqlx-rt", @@ -2799,7 +2834,7 @@ dependencies = [ "serde", "serde_derive", "serde_json", - "sha1", + "sha1 0.6.1", "syn", ] diff --git a/Cargo.toml b/Cargo.toml index cc0d737..33db9d7 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -31,6 +31,24 @@ thiserror = "^1.0" url = "^2.2.2" bytes = "^1.1.0" +[dependencies.digest] +version = "0.10.3" +optional = true + +[dependencies.sha1] +version = "^0.10.1" +features = ["compress"] +optional = true + +[dependencies.sha2] +version = "^0.10.1" +features = ["compress"] +optional = true + +[dependencies.md-5] +version = "^0.10.1" +optional = true + [dependencies.futures] version = "^0.3.21" @@ -108,12 +126,13 @@ features = ["v4"] version = "^1.0.0-alpha.1" [features] -all = ["redis_info_storage", "db_info_storage", "http_notifier", "amqp_notifier"] +all = ["redis_info_storage", "db_info_storage", "http_notifier", "amqp_notifier", "hashers"] amqp_notifier = ["lapin", "tokio-amqp", "mobc-lapin"] db_info_storage = ["rbatis", "rbson"] default = [] http_notifier = ["reqwest"] redis_info_storage = ["mobc-redis"] +hashers = ["md-5", "sha1", "sha2", "digest"] ### For testing test_redis = [] diff --git a/src/config.rs b/src/config.rs index 50b8b79..ae38eaa 100644 --- a/src/config.rs +++ b/src/config.rs @@ -189,7 +189,7 @@ pub struct RustusConf { /// Enabled extensions for TUS protocol. #[structopt( long, - default_value = "getting,creation,termination,creation-with-upload,creation-defer-length,concatenation", + default_value = "getting,creation,termination,creation-with-upload,creation-defer-length,concatenation,checksum", env = "RUSTUS_TUS_EXTENSIONS", use_delimiter = true )] diff --git a/src/errors.rs b/src/errors.rs index c2a4f49..13ad2ae 100644 --- a/src/errors.rs +++ b/src/errors.rs @@ -59,6 +59,12 @@ pub enum RustusError { StdError(#[from] std::io::Error), #[error("Can't spawn task: {0}")] TokioSpawnError(#[from] tokio::task::JoinError), + #[error("Unknown hashsum algorithm")] + UnknownHashAlgorithm, + #[error("Wrong checksum")] + WrongChecksum, + #[error("The header value is incorrect")] + WrongHeaderValue, } /// This conversion allows us to use `RustusError` in the `main` function. @@ -83,9 +89,12 @@ impl ResponseError for RustusError { match self { RustusError::FileNotFound => StatusCode::NOT_FOUND, RustusError::WrongOffset => StatusCode::CONFLICT, - RustusError::FrozenFile | RustusError::SizeAlreadyKnown | RustusError::HookError(_) => { - StatusCode::BAD_REQUEST - } + RustusError::FrozenFile + | RustusError::SizeAlreadyKnown + | RustusError::HookError(_) + | RustusError::UnknownHashAlgorithm + | RustusError::WrongHeaderValue => StatusCode::BAD_REQUEST, + RustusError::WrongChecksum => StatusCode::EXPECTATION_FAILED, _ => StatusCode::INTERNAL_SERVER_ERROR, } } diff --git a/src/protocol/core/server_info.rs b/src/protocol/core/server_info.rs index 3648e84..41d1e2f 100644 --- a/src/protocol/core/server_info.rs +++ b/src/protocol/core/server_info.rs @@ -1,4 +1,6 @@ -use actix_web::{web, HttpResponse}; +#[cfg(feature = "hashers")] +use crate::protocol::extensions::Extensions; +use actix_web::{http::StatusCode, web, HttpResponse, HttpResponseBuilder}; use crate::State; @@ -12,9 +14,13 @@ pub async fn server_info(state: web::Data) -> HttpResponse { .map(|x| x.to_string()) .collect::>() .join(","); - HttpResponse::Ok() - .insert_header(("Tus-Extension", ext_str.as_str())) - .finish() + let mut response_builder = HttpResponseBuilder::new(StatusCode::OK); + response_builder.insert_header(("Tus-Extension", ext_str.as_str())); + #[cfg(feature = "hashers")] + if state.config.tus_extensions.contains(&Extensions::Checksum) { + response_builder.insert_header(("Tus-Checksum-Algorithm", "md5,sha1,sha256,sha512")); + } + response_builder.finish() } #[cfg(test)] diff --git a/src/protocol/core/write_bytes.rs b/src/protocol/core/write_bytes.rs index 49418ab..fafc64e 100644 --- a/src/protocol/core/write_bytes.rs +++ b/src/protocol/core/write_bytes.rs @@ -1,5 +1,7 @@ use actix_web::{web, web::Bytes, HttpRequest, HttpResponse}; +#[cfg(feature = "hashers")] +use crate::utils::hashes::verify_chunk_checksum; use crate::{ errors::RustusError, notifiers::Hook, @@ -29,6 +31,20 @@ pub async fn write_bytes( return Err(RustusError::FileNotFound); } + #[cfg(feature = "hashers")] + if state.config.tus_extensions.contains(&Extensions::Checksum) { + if let Some(header) = request.headers().get("Upload-Checksum").cloned() { + let cloned_bytes = bytes.clone(); + if !tokio::task::spawn_blocking(move || { + verify_chunk_checksum(&header, cloned_bytes.as_ref()) + }) + .await?? + { + return Err(RustusError::WrongChecksum); + } + } + } + // New upload length. // Parses header `Upload-Length` only if the creation-defer-length extension is enabled. let updated_len = if state @@ -151,6 +167,7 @@ mod tests { let request = TestRequest::patch() .uri(state.config.file_url(file.id.as_str()).as_str()) .insert_header(("Content-Type", "application/offset+octet-stream")) + .insert_header(("Upload-Checksum", "md5 xIwpFX4rNYzBRAJ/Pi2MtA==")) .insert_header(("Upload-Offset", file.offset)) .set_payload(test_data) .to_request(); @@ -418,4 +435,27 @@ mod tests { let resp = call_service(&mut rustus, request).await; assert_eq!(resp.status(), StatusCode::NOT_FOUND); } + + #[actix_rt::test] + /// Tests checksum validation. + async fn wrong_checksum() { + let state = State::test_new().await; + let mut rustus = init_service( + App::new().configure(rustus_service(web::Data::new(state.test_clone().await))), + ) + .await; + let mut file = state.create_test_file().await; + file.offset = 0; + file.length = Some(10); + state.info_storage.set_info(&file, false).await.unwrap(); + let request = TestRequest::patch() + .uri(state.config.file_url(file.id.as_str()).as_str()) + .insert_header(("Upload-Offset", "0")) + .insert_header(("Upload-Checksum", "md5 K9opmNmw7hl9oUKgRH9nJQ==")) + .insert_header(("Content-Type", "application/offset+octet-stream")) + .set_payload("memes") + .to_request(); + let resp = call_service(&mut rustus, request).await; + assert_eq!(resp.status(), StatusCode::EXPECTATION_FAILED); + } } diff --git a/src/protocol/extensions.rs b/src/protocol/extensions.rs index 4eba162..9847523 100644 --- a/src/protocol/extensions.rs +++ b/src/protocol/extensions.rs @@ -18,6 +18,8 @@ pub enum Extensions { Concatenation, #[display(fmt = "getting")] Getting, + #[display(fmt = "checksum")] + Checksum, } from_str!(Extensions, "extension"); diff --git a/src/utils/hashes.rs b/src/utils/hashes.rs new file mode 100644 index 0000000..28536ee --- /dev/null +++ b/src/utils/hashes.rs @@ -0,0 +1,128 @@ +use crate::{errors::RustusError, RustusResult}; +use actix_web::http::header::HeaderValue; +use digest::Digest; + +/// Checks if hash-sum of a slice matches the given checksum. +fn checksum_verify(algo: &str, bytes: &[u8], checksum: &[u8]) -> RustusResult { + match algo { + "sha1" => { + let sum = sha1::Sha1::digest(bytes); + Ok(sum.as_slice() == checksum) + } + "sha256" => { + let sum = sha2::Sha256::digest(bytes); + Ok(sum.as_slice() == checksum) + } + "sha512" => { + let sum = sha2::Sha512::digest(bytes); + Ok(sum.as_slice() == checksum) + } + "md5" => { + let sum = md5::Md5::digest(bytes); + Ok(sum.as_slice() == checksum) + } + _ => Err(RustusError::UnknownHashAlgorithm), + } +} + +/// Verify checksum of a given chunk based on header's value. +/// +/// This function decodes given header value. +/// Format of the header is: +/// +/// +/// It tries decode header value to string, +/// splits it in two parts and after decoding base64 checksum +/// verifies it. +/// +/// # Errors +/// +/// It may return error if header value can't be represented as string, +/// if checksum can't be decoded with base64 or if unknown algorithm is used. +pub fn verify_chunk_checksum(header: &HeaderValue, data: &[u8]) -> RustusResult { + if let Ok(val) = header.to_str() { + let mut split = val.split(' '); + if let Some(algo) = split.next() { + if let Some(checksum_base) = split.next() { + let checksum = base64::decode(checksum_base).map_err(|_| { + log::error!("Can't decode checksum value"); + RustusError::WrongHeaderValue + })?; + return checksum_verify(algo, data, checksum.as_slice()); + } + } + Err(RustusError::WrongHeaderValue) + } else { + log::error!("Can't decode checksum header."); + Err(RustusError::WrongHeaderValue) + } +} + +#[cfg(test)] +mod tests { + use super::{checksum_verify, verify_chunk_checksum}; + use actix_web::http::header::HeaderValue; + + #[test] + fn test_success_checksum_verify() { + let res = checksum_verify( + "sha1", + b"hello", + b"\xaa\xf4\xc6\x1d\xdc\xc5\xe8\xa2\xda\xbe\xde\x0f;H,\xd9\xae\xa9CM", + ) + .unwrap(); + assert!(res); + let res = checksum_verify( + "sha256", + b"hello", + b",\xf2M\xba_\xb0\xa3\x0e&\xe8;*\xc5\xb9\xe2\x9e\x1b\x16\x1e\\\x1f\xa7B^s\x043b\x93\x8b\x98$", + ).unwrap(); + assert!(res); + let res = checksum_verify( + "sha512", + b"hello", + b"\x9bq\xd2$\xbdb\xf3x]\x96\xd4j\xd3\xea=s1\x9b\xfb\xc2\x89\x0c\xaa\xda\xe2\xdf\xf7%\x19g<\xa7##\xc3\xd9\x9b\xa5\xc1\x1d|z\xccn\x14\xb8\xc5\xda\x0cFcG\\.\\:\xde\xf4os\xbc\xde\xc0C", + ).unwrap(); + assert!(res); + let res = + checksum_verify("md5", b"hello", b"]A@*\xbcK*v\xb9q\x9d\x91\x10\x17\xc5\x92").unwrap(); + assert!(res); + } + + #[test] + fn test_sum_unknown_algo_checksum_verify() { + let res = checksum_verify("base64", "test".as_bytes(), b"dGVzdAo="); + assert!(res.is_err()); + } + + #[test] + fn test_success_verify_chunk_checksum() { + let res = verify_chunk_checksum( + &HeaderValue::from_str("md5 XUFAKrxLKna5cZ2REBfFkg==").unwrap(), + b"hello", + ) + .unwrap(); + assert!(res); + } + + #[test] + fn test_wrong_checksum() { + let res = verify_chunk_checksum(&HeaderValue::from_str("md5 memes==").unwrap(), b"hello"); + assert!(res.is_err()); + } + + #[test] + fn test_bytes_header() { + let res = verify_chunk_checksum( + &HeaderValue::from_bytes(b"ewq ]A@*\xbcK*v").unwrap(), + b"hello", + ); + assert!(res.is_err()); + } + + #[test] + fn test_badly_formatted_header() { + let res = verify_chunk_checksum(&HeaderValue::from_str("md5").unwrap(), b"hello"); + assert!(res.is_err()); + } +} diff --git a/src/utils/mod.rs b/src/utils/mod.rs index 0bef5e2..458aa2c 100644 --- a/src/utils/mod.rs +++ b/src/utils/mod.rs @@ -1,3 +1,5 @@ pub mod dir_struct; pub mod enums; +#[cfg(feature = "hashers")] +pub mod hashes; pub mod headers; From 33ba484cef4b030b20df7a688b390ee94fa6e2f8 Mon Sep 17 00:00:00 2001 From: Pavel Kirilin Date: Sat, 26 Mar 2022 12:10:10 +0400 Subject: [PATCH 3/4] Added healthcheck and helm chart. (#62) * Added healthcheck and helm chart. * Updated CI for publishing helm chart. Signed-off-by: Pavel Kirilin --- .github/workflows/release.yml | 20 +++ deploy/Dockerfile | 2 +- deploy/alpine.Dockerfile | 1 + deploy/helm/.helmignore | 23 +++ deploy/helm/Chart.lock | 12 ++ deploy/helm/Chart.yaml | 40 +++++ deploy/helm/charts/mysql-8.8.27.tgz | Bin 0 -> 40718 bytes deploy/helm/charts/postgresql-11.1.9.tgz | Bin 0 -> 54189 bytes deploy/helm/charts/redis-16.6.0.tgz | Bin 0 -> 86554 bytes deploy/helm/templates/NOTES.txt | 22 +++ deploy/helm/templates/_helpers.tpl | 63 ++++++++ deploy/helm/templates/deployment.yaml | 83 ++++++++++ deploy/helm/templates/hpa.yaml | 28 ++++ deploy/helm/templates/ingress.yaml | 61 ++++++++ deploy/helm/templates/pvc.yml | 30 ++++ deploy/helm/templates/service.yaml | 15 ++ deploy/helm/templates/serviceaccount.yaml | 12 ++ deploy/helm/values.yaml | 180 ++++++++++++++++++++++ src/main.rs | 1 + src/routes.rs | 7 + 20 files changed, 599 insertions(+), 1 deletion(-) create mode 100644 deploy/helm/.helmignore create mode 100644 deploy/helm/Chart.lock create mode 100644 deploy/helm/Chart.yaml create mode 100644 deploy/helm/charts/mysql-8.8.27.tgz create mode 100644 deploy/helm/charts/postgresql-11.1.9.tgz create mode 100644 deploy/helm/charts/redis-16.6.0.tgz create mode 100644 deploy/helm/templates/NOTES.txt create mode 100644 deploy/helm/templates/_helpers.tpl create mode 100644 deploy/helm/templates/deployment.yaml create mode 100644 deploy/helm/templates/hpa.yaml create mode 100644 deploy/helm/templates/ingress.yaml create mode 100644 deploy/helm/templates/pvc.yml create mode 100644 deploy/helm/templates/service.yaml create mode 100644 deploy/helm/templates/serviceaccount.yaml create mode 100644 deploy/helm/values.yaml diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml index 3ebb21f..5767480 100644 --- a/.github/workflows/release.yml +++ b/.github/workflows/release.yml @@ -126,6 +126,26 @@ jobs: file: deploy/Dockerfile tags: s3rius/rustus:latest,s3rius/rustus:${{env.APP_VERSION}} + release_helm: + runs-on: ubuntu-latest + steps: + - name: Checkout + uses: actions/checkout@v2 + - name: Configure Git + run: | + git config user.name "$GITHUB_ACTOR" + git config user.email "$GITHUB_ACTOR@users.noreply.github.com" + - name: Install Helm + uses: azure/setup-helm@v1 + with: + version: v3.7.1 + - name: Run chart-releaser + uses: helm/chart-releaser-action@v1.3.0 + with: + charts_dir: ./deploy + env: + CR_TOKEN: "${{ secrets.GITHUB_TOKEN }}" + publish_crate: runs-on: ubuntu-latest steps: diff --git a/deploy/Dockerfile b/deploy/Dockerfile index 96c0cb4..4fca83a 100644 --- a/deploy/Dockerfile +++ b/deploy/Dockerfile @@ -14,6 +14,6 @@ COPY . . RUN cargo build --release --bin rustus --features=all FROM debian:bullseye-20211201-slim AS runtime -WORKDIR app +WORKDIR /app COPY --from=builder /app/target/release/rustus /usr/local/bin/ ENTRYPOINT ["/usr/local/bin/rustus"] diff --git a/deploy/alpine.Dockerfile b/deploy/alpine.Dockerfile index be8e4df..deb1275 100644 --- a/deploy/alpine.Dockerfile +++ b/deploy/alpine.Dockerfile @@ -7,5 +7,6 @@ ADD "https://github.com/s3rius/rustus/releases/download/${app_version}/rustus-${ RUN tar xvf *.tar.gz RUN rm *.tar.gz RUN mv rustus /bin +WORKDIR /app ENTRYPOINT ["/bin/rustus"] \ No newline at end of file diff --git a/deploy/helm/.helmignore b/deploy/helm/.helmignore new file mode 100644 index 0000000..0e8a0eb --- /dev/null +++ b/deploy/helm/.helmignore @@ -0,0 +1,23 @@ +# Patterns to ignore when building packages. +# This supports shell glob matching, relative path matching, and +# negation (prefixed with !). Only one pattern per line. +.DS_Store +# Common VCS dirs +.git/ +.gitignore +.bzr/ +.bzrignore +.hg/ +.hgignore +.svn/ +# Common backup files +*.swp +*.bak +*.tmp +*.orig +*~ +# Various IDEs +.project +.idea/ +*.tmproj +.vscode/ diff --git a/deploy/helm/Chart.lock b/deploy/helm/Chart.lock new file mode 100644 index 0000000..188b0a7 --- /dev/null +++ b/deploy/helm/Chart.lock @@ -0,0 +1,12 @@ +dependencies: +- name: redis + repository: https://charts.bitnami.com/bitnami + version: 16.6.0 +- name: postgresql + repository: https://charts.bitnami.com/bitnami + version: 11.1.9 +- name: mysql + repository: https://charts.bitnami.com/bitnami + version: 8.8.27 +digest: sha256:96a4a257c98a0c8dbe07690d480dec99a1a73c5074e5e8811d6947e741eb9126 +generated: "2022-03-24T14:49:00.598734768+04:00" diff --git a/deploy/helm/Chart.yaml b/deploy/helm/Chart.yaml new file mode 100644 index 0000000..a39382b --- /dev/null +++ b/deploy/helm/Chart.yaml @@ -0,0 +1,40 @@ +apiVersion: v2 +name: rustus +description: A Helm chart for rustus +home: https://github.com/s3rius/rustus/ +icon: https://raw.githubusercontent.com/s3rius/rustus/master/imgs/logo.svg +# A chart can be either an 'application' or a 'library' chart. +# +# Application charts are a collection of templates that can be packaged into versioned archives +# to be deployed. +# +# Library charts provide useful utilities or functions for the chart developer. They're included as +# a dependency of application charts to inject those utilities and functions into the rendering +# pipeline. Library charts do not define any templates and therefore cannot be deployed. +type: application + +# This is the chart version. This version number should be incremented each time you make changes +# to the chart and its templates, including the app version. +# Versions are expected to follow Semantic Versioning (https://semver.org/) +version: 0.1.0 + +# This is the version number of the application being deployed. This version number should be +# incremented each time you make changes to the application. Versions are not expected to +# follow Semantic Versioning. They should reflect the version the application is using. +# It is recommended to use it with quotes. +appVersion: "0.4.8" + + +dependencies: + - name: redis + version: ^16.0 + condition: redis.enabled + repository: "https://charts.bitnami.com/bitnami" + - name: postgresql + version: ^11.0 + condition: postgresql.enabled + repository: "https://charts.bitnami.com/bitnami" + - name: mysql + version: ^8.0 + condition: mysql.enabled + repository: "https://charts.bitnami.com/bitnami" \ No newline at end of file diff --git a/deploy/helm/charts/mysql-8.8.27.tgz b/deploy/helm/charts/mysql-8.8.27.tgz new file mode 100644 index 0000000000000000000000000000000000000000..91094de0ff9060c1052081fffc59e6276f6caf79 GIT binary patch literal 40718 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 WJUlRV)br literal 0 HcmV?d00001 diff --git a/deploy/helm/charts/postgresql-11.1.9.tgz b/deploy/helm/charts/postgresql-11.1.9.tgz new file mode 100644 index 0000000000000000000000000000000000000000..e308ad4c099a5f4a459b307fd457b5d20df19c30 GIT binary patch literal 54189 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 literal 0 HcmV?d00001 diff --git a/deploy/helm/charts/redis-16.6.0.tgz b/deploy/helm/charts/redis-16.6.0.tgz new file mode 100644 index 0000000000000000000000000000000000000000..770de4e3e3241056140f0a00761c3310ae45ed52 GIT binary patch literal 86554 zcmV)PK()UgiwG0|00000|0w_~VMtOiV@ORlOnEsqVl!4SWK%V1T2nbTPgYhoO;>Dc zVQyr3R8em|NM&qo0PMZ{dmFitD4L)3S72#pE#<07O19-$CeB%oq#5fQOV*X-nX@;^ zXG7f}iB+@FX`m%D9{=z6!>b!WqaS=o<8j2ZCu5<3szRXv6be;^3`Lj@4ref9{RN!I zf4GO=a5x+uym%r0I~)$(|L#41_2LhEFZTBi4qm)^vA_R^;oko9y%&D~!}}n{{pFOw z><`1Wak-uQo%~>u5C$102_0<#5JHBgBwLKY5oGWhQnUqA{4>fZCdmlg?r*^~E&e>{ z@AnV3B9x*eLP>}b9c=|5fpathA(_ufvIRhfQbI8kKxd4lbTk-*T;6E^8nXn>aX%#U zf%^9r01QqAEdfwvK>_PlW8Uk3>VMjb5Dhb&GEsEFC3*YmbO&GxU;;>r5!^xEHf*GVUM0Y`qDWki9B1X3WfJp=>$ry@6Nq=ibIHxpI zrkKt0Ym*s@PXm@AG?+umP*!{r6L$-Tyz3f*$xlc*jsaybyrHu80MDoLUx6qN_Vf9AeQ~l!>Zn4skrv96%ZUZ-a;}poHOj zHMnJc6lFO4?+8&2ZVoesll~+t8dx8;WSOK&j;O%hz&I^A5eaWl7RaWh^c?gL`opc? zdhUG%g6QqA%2@)yp0ulZ?FG+E5cJm*$B`X+<$p6 zie65>dpV50d-)1Q(aZ0ypYMl5v^P9>xj#8T;qwr^9PWJ=p~=gaFZL(<*CCob|85e! zn!w@k)qh0?*IQGRpbRn;jX-aIxW69^p9jMiS9=Ge;q%e{i~hm>tAp-)o`C_%SBeFa{~i;2bfO z(XA&>bm5WMNCBS1DROF@#|Toi3lhQ*U^B=7n_&v>a2x}2i?R$yyc|^;?*g2JaUS7h z3e0tAm#Y&KJk2u{aYZbrvi($&B2|(nPrzZGWhh|)-a;J1>$s>Y$7?m0tBN?2c!x&QDy)BOEzXcElzHdSCGAL6YYucJ9?dG~6pyIPwj;YW@ z69BUedLWwgYG{{c*@R@^oG;6iac=!g;(U&_=}r}tSPc3pq?D_I8kkV5|C41fLVpIu z$89~d6num^n-$GIa==>>B3I)rZjC^%w*|nHC*Zh0?aP0;EE&mSegK#+bi<#}LViAj zb0jKg&}K{Uw|{H_YXlWS(K8Mh6g?1MwoLgy6uX`+-RAJ$>;I}zz(~MjrwQ67UI#jmdOCm?k+06f~D=0yVP_m<^qe3$R6Btv}M34q{sQ$}H zDVUs?@;K?~yTYbm$VnXl8Y7f8;e^?gf-(P}Rj~2a8Wm0^IKgaTuO8Mic~adcMQwEu zwkwNejDOA0q*Sx{kyajGg^KN*{09t9>A;Xj0i<8-A5{dtO-VP>O1{6D{#t3s;MCWG z7jNVFJZD1OIHdq)91zc~#lvdhC=sKV3 zc_Hh|B0e$rpoy}P*g^CTrUnHQ=X_*aW`rF}naF|&U1OL8d&3~xd-w2RTJqFwJp<1_A>eJV`SYaOUA;8ptv|8OpI50TY)*^-dV%#9l^q zAC>mP*GPBMR$71_!Ff&@Uti`h$pwrsL;Sp_r>5AjQW&Csw~jGLZ|I;8`UE6Y zCtLb66!Ff&ST0E5?A_Jz2>dcb3Bc?b<&^A-wIa>XEhc&8gi^{6UqtaVA=2nC$H^kE zOBc=++@H__=zoJ7wBT&K=Gz|2FuFw%m}F$`cF^pCq6FkgjHssC#^um%Fuj&0e;0C! zbe$h?j3_uIdBRNQ@?+;je8LH32u6H_a>_~P3Txc~ZE^KQ>GqwIh zYX$q86sUjbgP6U(NoK+*5_cpw;`QVk zzx$yUP^yp8A$kJS6eWDUh!+886;~8R5ibD?xnqJOsY`>4qwj&ydRL$^3IL2V1fzvs zD)5m4_4uS@qOxHI$cB zO*_-pmaJp1r?RYXw>xYmQsI)cR&{|I0Vqxn*6=$sM3JKoLF$x3)j7|zBIyeJ#HR+E zBpw0_Nct2Nl6e{(*31)En=L_WWi|l4Aeh5X zb2KN}B9Nyoa7$vyaEt=R;+|QPt82kE3~ypG4JiH>0(-;#7xU|0xgix8n!0zK-2MzR ztAo;v;@e?NgHX$2;B-}?F*J91)%C->ce)5j&2I z=C!feBn%aye9f`jL;{!6d7>e#0(bE&i{R{B<&fS!RE-=c);UwmTm4H=8Sq=9S` zht9HGqY4T%fkZQSVl*}o+dLJkOrDYKSq36r z$Te9}%Gqi*Z3Ug843kI$Jr{qi4vpbCB01CGuH>Jq!<#@H=NY=1Wr)s59DyHX0boVR z(lBWrhKSM<=A|rXgDI{x$}%bM6@x1Pp1~S{{h_@1Fu6SfFGZovG+pYFIRbm4++~TZ zU+J=zYp-NlAD0$Q8}xFrX|-(!-YT6-!s{TPOG4}@p-V#TD5F)VTfi=Kq*NIuz7`=Z z)?BZY+FzFzQwR8Ra%wm30KQdHmxkCuR+om^QCgRV+fiOUaD@fmEWJ00-P?r3%5%%5 zxw9Y2ql~rN3m=T~dR|^=$+HnjijG%-iHp-(v~R6tTj90W@?{WP;F>XC*i%uVb|&aD zxNU$Xa^DQkkn}hO8Tx0AsB#jC@f@>`%Aj$z!jJp8xMNUmtOLJztFL{DMi_XCLWNt1 zH1B1N{Y9y>&G3spNeto-6dAadKqBT+;hoE+S`w<*3kn97{4Uk=a}rU0BoP)1aV$We z*d}ysZ3PiU=o1?}p@=D?zx^eckSu__xz_+7X1HjesB<=q$jhUYMD$rr$666g=#Lr6 zQ*en`9q?yWt^w7oFf&vD*DZ3Y;Rx&vhkNb_l}EL&d6)`_s|=QT2<$RswaBtO8PoSv z@X9}QO{hT8ymHpOd5kvK+~h({2RDPjZNJxo=poqeyNya8a3g?q2Ko?v|;^n#m6L4KP zEL@lbbNPFh9HAI7U0rHaixiFQs#4g^k~&2~7-spzi6Nyzg6dc6O5M_6>wKsi;~AlB z9Aiikt;GX)B>-hD38c&TP?X)`5YZq(jE@ygrUMv70ZLeg5e*m-D=T7Qz!A{k4zro~ zXP|Hu;%ZP?YxX9Qa`8JB_On?2vHnae`olH0Ta4}osxy*a8*1l zd@!1gh&q#S*Fn*@#LZxa&NIS~2xr>O1zhq{00G6xG)5qm-%CFjaE;g!IJ(8+@^b(w#nVLaBq0$RJi!UyH~8P0o&Y9M z0279b5>qOyzSgZLLVOtZF~)@Z?Qy5l=@H;mDxV1wA>edRvEV*v=l@$Fk{3D@>MhP5 z!fHji^@~n8)QhcdbED|&phCpDQFwzEl0dNzYnPTeWZ|q6c_#9k!V#q#ZrLFdy((FS z0v&B2{;gQ0{{$caXdeaeUwhS}eX|Ri$2FJHdJuI-8n+xE<*RTp?k=pB=R#FXTPBwB zH2PS#+EK?7GeG!4pNRz?ricEI$}g`X~O(4Dll zs;hq8PB_RV+6PyB;sX0Vp^#xZ5ncx)a74}syHw}9lD&1PYnUD52?`fsjNTA()6uxL zO?QOPL(a&YpN?!7scSSLnK&}Ri8?iAthD{u2OhyFzWN(mUrhdrc8L4mEI?} zs!dZzQW9;KJ~k$*MrR6HNBAVJLX&FPmBSwLB!oH|DUMJmyjG&f#IDLs1zdS5w(!Pq zSJAL5t||+XXUbVU(Z^CDurf%&`0jiIcn#C|f`3>t#$g@*x&q%;U1vDD@*G1e-u^bRrH@qeP}Gk^+d!1AZqMlK*)Dh% zg#3R|I3u7pLvc*N9m(RT_v{~<-wufd*Ut@?Qp5Lh*&VU)Ol5(Z=;e8~#89K}8Z|0@ z@&Xh-Rlt{vkHXLL2xlMl^42#o z$(r?=tcix=f1$T{j+rn6i=b#m6s_Vw|1Tu(NV*^{fOW&2LN*h(I^rLEB1xcyb~fkh z8;SsAb%S8t?-;t{`-(qhgeMauLb0pySJpUjVn$#PK?XapFTXz5y`cGZgfpRqEwqtC zb%>t_gzNfh-M|Tm(5>lgXi=<)=s4hJ*mYHI)n^cj&~gRsWC9{I!3m0Xt-xhzU;K+% z^jD*evYhsUp08Q2w+rrOIGky>UJ9Z`0_QjcDHnQ*NrIE90WVJ!6=2)AI^E%#g+i6& zal8u>Qb8y7WOd%!1>uYkAr$5fY=KnVX_U;Z25Pr(7>fJzQ?Wc$87#kwh$?FkjaG8G z;tTl&g3&J-X6RiKc33mSZ1s#O{ugqm=?HxHBks@_(^6@;^vdgP=-4hfJI{YUw7OL> zDYo@NAE*p;aS_5TPSqYyvK)_`Lpmf;M5)rc<%776^ahdRO=*?Sr067gaWR!Z{;sFGg>a6o|D@ z(W0&Ne|bI}4u`?>{Z|LC{%Ur<=!V09x@A#!AAJ&6q48A)Cleg{VyGRq>lT2?COWXX zBU{uhsaR9_@vL5T{!3}ehyOgWnaoZ2(O)3-tl zTltbf!BBO1C8SGeV4qSxEZYgm=3*Y_6h&o@hL7qT^HCc7b{v8fP^E4+5D@Cg(l{8Z zFQAxH;y*>(_VMT3{a!J*1=m{wBcSV+7&kN#gmJ$z-e#|CQkUzRT-PsPGOf8(^>a(KvS5NUbO+;j@FYW&WjJJk0y80*;D%;Kpolbf*1{}Z*ICO@ zy*KR3{~HeWU(~VIYTYWP%c&s^oNrc5s+LET&2b{?{FuQIom)PvCkaDS0b7J=i-~Ep z08`#Xxn34Ji_C55-f(UK(1>dUo(~&B8dX?2Z4PQwwd|-yRoGYmJru{3vwVJyGJc5h zqbah+lwNgZ>k)YF#jsT1WP$2FLMJsvYsOCcX#6IlC(99hxbR7h^8w-~HLA@7P->|t zJ#y+pC^hDd#86s@zm_OUtB0Ejqx4O?2MMI~^<`s`l%8I-$5Q$z+FUSYJ4rR+lm=Ns z+d5U3Cd$StTspOWuXaL?{F)F(Sq9To+I?C93iq^Q2a+gcq=Y6?T66&?&OqnZp{#ly zF|ZgMF~HP@z40c6KADP}i82bbx>v3oiRvG=f9qIO&DNEJQGIJp6YLGeqk3Vl9+2t< zw@yT=7vQ=fsa~M>6O-B;JGJMHol>RihWqXBdpo^GRB8tqy`R8TKlC*sQ~dzf3QhHc zTst<^5B6IRPA$)jYec7Z5ZC((P_2Q#PK0U=$n`>0Yk;mFqgn&_+YeGL^s5JsQnm3u zXqc*v`nQQwE#~?|Myi%VzH+FlX;v1SdTYQw z#`OB`6dHqio%L{yuwG-eJcS9IBECy1M+;w>aHisAfQFEF1dvn(VgND$fBfU=_~h)v z;k&b|@yXfo#fP);>G2=`xJoE$hoR*Q-n^htUPu@N?4iH5|Fv<=7OTJR$Yx_KJB2o{ zuS42lKE(;1=ks!aG<$@J zvTS4>;L7&ezqbV;{8S=@pO!~hwjY7LE*KfiridM$zvn7$h!Vz6Dr5q92_wS2lFvwa z^sB*Iz-U;4syI)DvY3)kylUii5e1#^wX7BJ-q=r@aga|5ph{Y6az0zJ;z-O;ULryC!NgmeGJ5 zc0sGy#|y)xJ2{>_0pH6v-D|ok&ide%E9`0}+dJPZzwXP|;Kf7nS@Bf7Tu?Mq2MkUf z$LE6I0!2SlZ~r&ap(`~5;#?8-gl15>S`#n^r;Skf_ia3%=S&VToKgTYRQf!lXr~E& zTG;R!(eP@e;@JpI2D{RBaPrY~+5|5`*ZEX0z_O_{NGT?44DU_QJ5Oxi@B0X#7V3sdkc zh73{mY!{%I7G8GGP9|rBiQCA8J?pCF85T}y6%!hJz!}U{c8{gZFxr|JHA2rV1xx@G zq3C2%_FD~ep$6$;*BQ2o%vw6t7EZ(pQ8?Z7mpj4Kx%BYm^-PJUC77kbfS39_hzd!U>+vOG;8f>eVIVP_8jA`e zFkcjDuRM_cnUgG^mvim^6@P0m^6Lof`y2BePQcc|S7T-SoQT*Waf27faXg5evakmm_9G5mg38zLFIKAL+~z=oV!Q zus5{g!ysUULE%-lzpn$FsEC)4feum=#Z(>>cV(nT83SSC=ajn~8G-%%p`UsBZc`l% zFHlGXjpO3ZQ=J(z{RJl=6wa4-GnC1VIfj%KS|+9@Gj1=JYhIC$(yUJ2nM0T-o`1^ zIr2ElX$~`(Fr>nyFyl2j9FhoOx<*C2>qXHM>8HVa4mnYL5#p4fvftv|pAcb*tIF2| zL6&EzOxg!QFCurzc*0P2isKk7ndwO}05PHzkPM)I<}l`T?GJ~;zIkHsjH@-Di$P#` zE*T@wlKcSWmliKUMbIM`<_IyaT_#fi?R_*M5fYP#+$DbCde}8M6KsmI3CZRXu67tH z1Vwk+OWp_^42MH5{tki>*!xa?@DRiQjAImEE|QQM>5>Y?Q^-arz0LXDD5g4=N;7ZF zMYz)9yG^Ns%0t!WGVA!n;XyL%cssMP)Hy7H~$ye@<>Lq%!{-}j2^N=aUjQxA%oMNUYg)gU=2ghnj#p)1MlZrVhuAJ0W zzo%43RRhmbxsE(6Ysq!gj<6xwQ73fwo9xIqPPIos(h9xz83JirU^gBE=^EP`gCBjg z+)MOhRV2DaKl*_z?W?GD(K3(zSpz-Q!b zq^*0nKzB$*Pi?cMAJtJo)fCoI!S~gNbu@ObKCYvsqmOYN?IOEIV28{7<^!~c zhI@-X$TPEIdCqKdllP(!E}4b%!I5wSRK9OOF6$~86(5X{BndJd(|(zWZCe<=1g2d; zl6WC={1j_(NU{ut%!ViS-x=2t6hYc3rMx*yuYV_Wp9+N^3GWY*^d$}a47O`m6bLxX zl$nG}_e7X1N@K{ACt$lmY=kJ&QpsuADSi4(mKDdp+A-vt%}FxNc;CiRqz)}um1Mc{ z6XLk7LG`)?DL{r>kS}LRYNsO+rM%mfYSE=(oiY-e$eclzmCE`mYh)xwBMvxWNQZqa z0sHt9S0kucPW%W&4mFO&_Zg@}sw5kMlf+-6Onm0~$T3*N>yw{mvU@o74D9iS#`SpB zVP)iTP&*CkahEYwqjz?BTJj0Jbqv0RBfHkU#fn12_EH2V&@NccNn|2ACsD<^yaY0l z0;fv9+Nx`iimy+eaNOF;wf06R&mtm`Sz%68WqkWfT~ziKSoz#np=7_zkmxoeWpG)A z>^}Hqd~tSi_T$LYB}_qt(hP+BKi1SKF$4FgbKTv3K(J|~GlO8b*MjzwjL z=4q^x&~E|dqg?T%wdfW$Z2m8s)+=&@5_698dMbUAh^|qm!NQ!w>u=T_Q=teHiouhd zB4OW9_p@$=fDwHz`HBu9-8!sZz!cXsw-Q*O0@*-AIEat}3fYX90=G>Df;OgyV zb@^h2uBT{XF?Dw%-cV^69gdJ30LmULZL*TBQMT~)rDpo@xR|)AJB$(^LZUe3?e;l{j zOyNH|KEF6V9A6zD^;Il^MIKHlLog~1omB|6h?@6UqZ!tp0Ts6g^2L9k&}av(H8 zTsk3wjjJvnf`g?lA3_zFHywfxnwbt^-K++BxXY{td;RAJ{h^uG;N@dFfK8_ZsLDZY zM5n4?#96AG!5a$i)C355xDp9$-Vn;b7~H{y`D!2^P4#9MzI9fs8KFknWR=uZSdxu( z|L|;ZIX;v24jnVMrLI&<#3Rs)NeE*Ovgco2Kd}ssv#Gu+gxNHgFCPM@Do~C<|fg~y(FAcvhcyrE@8wd^e9gaTId$rbVp`S;G33kQC7;H zigYZSzbP8&$A*+0(^vbkL0Gy~GL*t4@6YF>(TRz6+^Pz3iT2mkvj9VBB0*XH% zQ}_#Qx41o#8@h#7HyeTHL)s0kgi_=Sn;{+3tnM$$-piUIN@TG@y&^f7FE4z)I1lVNkh>E# zBMHfruB>y9nq`FoR@fKHQ8MOgL5k6Ksku>}$`oQxK&5#H#`ktgnx?j@8DT0?>d9z@ za#CBXri0vww^Q+vMYD@M*2x7`pzo?{=o7itYmx;tT)IwfnW{6#TDSJuwcNE2>Mg~t z1}^l0^nO=Bhqz8FphM}JE1*L`2RSS9lUpr2$V&(GmOqTKFKeHkiuJf~i7B)Z7$bg+ z5GuiuOww5F#^_U;jih1pL!N$CbL@5R^XI}71N6L}8a>blU%mv2?A{mf`ZXAupeH07 zf&IBz6jvjZ`G$RqGVy*X%CbUYfUBH1jq>>%W{Z*I$(vBdbt~}sGvHl#DiQXJ@-JU{ z;L8`Cs?vZLAsS{lmAMdCf>~z3)L?DS%Utbm@N{NjmILrtn;JDBbJ64jU%EbAFBqb0 zjnALJ-f-yP88qRY!%yp@brAd&{FhCGM@sx+(j+Ghg0iNhV7;_4Lcly1D$iVA4Vp+S z@%h#H2-ZZc>&fh}^6MYPO&6nvH;E*yUn_t=p~Z3O^5IILOSA}EgA{E`kr2)zDEe@N z7W9M2YP^n6{O#rZA3NZ$z#|HK^lKG`8Kgk50dO`vfC!iF}p zl&NX-n}*UOPbh{e+p4-(m{8%&sob--1Usd31(99;li?GqZYu_Vs=LQiYT5ZeKrEI{UGUAI9Yj#qsif7wW$O<;^{A7u7yH4j3N%e#eV? zNQDcAAC}kkq7E8^Q!kjM{VnPc7@ikCJarxyP2jW>LM^<__*_^+ZMa-m?iSAvUOhTo z+=Ii#iM2F5qYrwSR~5eHuJ!D7tuyG(_jw-pD_q~%EdJWO2fDJaVX~zCi@>X21%8$>nU>O1&wz1d6%N( za)u|`63JC18iw-vMyFiMMZY5ow)uP;>K80T_>DrKo<#vpHzY)amgnu7ET#Kl!zVbj$}7|0L}HH??0+X=zM1U7eJNu2G`EF&yK6iF8aTaWRT( zL(%UhdKAGT80yZBq^=DVO1=sl)A&_P$MTxq2laLChmI>b; z%pj!6JdpOg zJ`HDR4*UO0NwP^C!{Kmv@ZyE|?{GMD{<}9k7(V~Q-i!UcgM$~ZUhMDxVYv5VxcB@I zV7N&l>V7$8F#E%BZCq~WekZ@rTLAQ)%7O2VK#%X+qrrfSK%m5dWYdBC=ab$pug(@J z;&r8CsVqw~esW?M(cTDr7W-chX5kDo6tX-+MXAxAvJ59v(O#Bg7K;z+L143aQHdYc zdeX_gC^Ibky!lw39(B?X@R2f@L@*`^`Upq{KB|O-y#B`$GD>m|`ER|ldT$r>jLJRf zf$?Qm^)F{LU%w2#*!>!p0kV8&vZ8jId+1@WqFF5eR-r-3H6byACG0x*Hkt1!0x6{Q zj%1M;)XS+X8hk0+_H^YsGMs_-4R!&d6RFOCn-AzhkijG(bAAd6XE1}Ic=3;Kc1b=* z84iIY2jC(%f{k>BqX;EVUjXO{aq6j^cGv!vLLmx5BnEm=j4EHY+<$$sL`nM3EhS9q z;aB51ZfPS}O^|MIvfA+dLb98fzzF=rA*?cbmFaqf(wHpfC}DECUNXq|Dd`fik2Z#4 z%9c&|lre-}>L)g6o7_$K>>gBKi>Lx} z2FmlmMDq(0JqzF$XUK+3-;>1 z!cRRBWL5M1eS#Us@guInuUT$D%aQ}kWk_In-ewL=!O?12j}CO^tdL0hg*}B z+}-b@RJpP1vOGPgGOYyE_T+IUqa)K?|AvX@Qi!4=QEQ~_xoO#V?Q|pV{*>#Eaxxe8 zU7_?cZI7SeL_9NBq&)4l>8Q#%tOJLA%X&FQN*`J6oE#wraZK-Lhzi8Yf7*jz$KNy# zOW}S^afE^pX7=EyV6`grT7mIy0=5(VGW)=NE!_?L(@x}$(|+r!U9i$|_GbjJ42Czg zUh4(M<=vb1Z4X$BZ{Qv*Pc2#Nr)83(UaQ5!%__EJFu?^yAw*T$F+<)$|{~bKq z{~qFZ_-1@@1ufH zq>eD0CWJB^o|32xj`{Ls>#6`WgB%h{NRe{Tx;qq znEc-bOmd5|y9_gi5^-%a+A{BF1+_^S=TYfv&C*y|*p+Grwj&%ez4p{~O=IpU-=!XS zx&wX%2~Hx;y%)UC06>{_W^-scz($-~KO%X(tn+V(e1_KxfIgux=W2#v$xVKZLKcH5 zVzNdMl;J^KP%hNX)>%>dIbz3to=#OBk{N=O zBy<?-5k{CA~r8i-J^JDE!hRQ#+V55JQa&4Ht>`N2y41SjD&xkddgd(mth$=Xq&9fl>%aKa{__eUD2 zHRq31F#C_R2ew@Wq%vkZzTs*eq{>i$ZI_A80%!~3j)!_}6@3W$14qcJgccC z9+#f8jf}eg8LOpc)rq_1tb*pE=I-oUS48NZg4|*i&+uR1g3f zBa{N1h@1?IiZW~_Nasuj034EZA=&Gu0WTk{ifnF$X*XsKxC9Is8AyJKEZG(ZM*}ub z&99rla)TE2NNz+n)75btj_Z1%zSu$xfJlLEFE@I)7y*zmC{;Btqt(%ku>}aQEqj08 z5(`pL==E(neZAga(d&ai1_Cb;Q!S~IDkk{5!2$p}o;~#`bH5J`)x0k?0&8j?zC9T& zuN;=_YSItoDqlZ`#biBvd-7rY{_4%^o-=uSMQDeI) ze-F;02jM{BAn-Nwz^nfLw)0Dg&O@`qV+PptF1NLHMi?4_OPqwxONK^NL*?C1`N-#L z8>3DMC8PE%1y|~I&Jow619N3syxc9H%gY(Xkut)nXPQfst4HaeBb%R{w$Gi$Ez>n# zmUgQ8Rasavm4c*?C};1Ejz657J7<%GM5wD#-9C0;hUWBd!+-QCgDj_g7)2RBGKw-Au^fcklj0xa7@p%JWwv<%XfZ+j6M|fcGbukn9d-Q8y`|x8b0(By?xx zXbG0Ex7QSz2 ztMy#BeC0cA(@MJb{<^wIwDNS+&h-c1VZW}?_nQy=eg?&$$iugI0_}o`^ypV`O68id z<#RgI8Ibx}QN0wdn!I}}!7`KX)Q~M4I3Po^g(7;RhkO%&UpFn46>Wpj6Xb-xPp27- z5ZE!aoTs(m^d4{6Y+Pmu6jX*_mDS|f0Ztd6ftQdQE59(UF*qzSpN^4 zobvs7e0Bw#FI)ff?maj=K0X3h@4)%-#SiZ;PQmyLyg&c(VtjNAet35w9Ocx~cnQX5 zN8p!t7eBpyHx_NaKL&>v$K$KxqZ&E5_lFsZQZuHYKpY4fR|q4$pzc>y zDO4Rx&AMjy_@5#$!Cp3Mrk`JY+lJQ1yq$XP1#RquDQ94YMNnLdb>Iw_e05bPvrhJ_ z>~pU2ipB;5CxD{)Ey@nbJcV4j{p;(!{)=F^3;wd#e-#XSpnnKcc#UJsFrxjR@@u4^ z^nb)mQ={RDLmcR#PYfl3DTCX+YsBDQiBf2jPW|$=yZ+60BC6xoY@t}Q44Y)`dCsKs zGRypV9i!4p9Sx$5ReLX1<&hk=^@H&5!-f+46Zo#!H&02R$P%h zz;FuafODxQm~En}@TLf%?;RRX(sTNS!ck_%RCyh_;NV2NJ@hKW`h#xyYc~?tVB$w;quz!1vTYdYyoDkqj$KqWWtN)5arvQLC0; zdZ#`t;5BZ$_076&!d9-w4R6PVGFWnFHC?dimc=tPPuZe@10%8^=4?Np~8 zeXMecW9we-L^tPiQ~j!nuH|4OLsscI-_GT2aK?|I=oUrNIPZk?bl}gqg6Z!3rY`U6 zdc!vZmgKazkn8{+g zv%5vu3}ttiB3?RGhZg;rZ@`6@ICm_*|^ox!twE_-7&afZlUne4bTHNtg5T$KP7y1#8NK+>wx zw;Ne!#>SeqF#1slaV|jz9@tiu`YoVXG<<@h%vQy)_I$VJJ-O_4S$=v_vU*@|2zp`_ za3|LeXkVki;S7a0oHKk*Ao+ZXynvPOsi*{E(%J^=CL&K*G8NB$QVOSNSFFP!uQ-7?u3gLBOY6e^px{uxKnMe; z_X|wL(*k9gdj_%L_Zdk^Os0#=G(#{tBnf31#0jI;hPD<8D=X*5pjPd9Qis_b1{OCk zL8rVZ3wzbE;uZgw-~{ykp7e~Wf#HWx)YXkau`~WX`FZ^I{qZIEdHnX|Xnb|@?rik; zgzvjWqhEzEb(qvYtG=mA{~{-;UY!F#Z3&=^f}g&l;8vM7JBe$PI5`^0wqt4i%U*x) zpsS&ErxH3}i&)?lw2nY+C9z(glL%a?8bDS7CLm6x2ze=04w48Sfxo^6oP3$x1Sb)g z%cuP(B%8~F3uH}i;)Em#QOfAxPNmbPgOtes2{h4x93Xy_&?F7k9(3_)lT3Poij*go zD@?a>x97M!)CsC_voX^7?le@hy>W~IHLD5cpCq0xP!yw(p{OqzqPYPb3OKDYpNxsG zuM?M1#QYrE4g&GbD0|)e^y$;5-cDtF9Cf_vP$adHPHss;=c!}Fdl4Zlow*BtA(DWy zzak5oesPcHsYrntNmtY>qEe?h5OzVTnGuWFtC<^5%z+9JiYr!5=GR8mUAONt60FLy zWktGj8Klm>9VNMbU#S_xx(4=LN3~WFnpciu9VjK*Ws)(4q0&{E??~i2(oSI#jZAJ- zM+2B(6h~`w{_5?eHXwH0F5>FO;JbFJTpL+;Po8U~RqmaPfiQ4ac(0zT(wLM60PD8#Fs)8dBBtl4iFtRu;Fttx&%w%!J-87fqH{;F^` zC`|y}6Xz)2``^{_pF<4Y+I%)_t)3Wwytbs8N7rP(Ybx3AkA3+vBb4!ui+q@lj_KoS z;Y=&N+@Ic{#jbcqp6icwIK6MINiv^yq?1>@5&sgD3XH#kf98at`rKomA3Zd`p`Yvj zSy+(!3pn492WYeZ=kVo==Pw-p&zJjqFCYCsAL7?|QE6NUh$xJ$(!FQ|Zuhosa1xDx ztaS?0tvO;af((wf04UbK^)5k#DXj=F8P!CX7>gE=X$Wdk;>vG*sRU;cUwSJEbt~C$ zWZSo*De&3$>htXaZ^B&*ppj`8c+&e?$uDY1b9Mmp-N){!ftyG*5wy^2P^(3uyptP& zUjxynC*VCrS-?*nG3Kg`Kx5zajq1nZ(7F@c+>qFCmm3-0spBN#YO$|3TR=S$Wiuke znI~e%cr&9fZpI4?Hrv#*Q|)XsP;ZuRUck#T&QGk$#C@pJbC{K-p46>=Ca&v?OmHeP zP`;1qrNlR)K1K`4md2;1A=P#2#+1hJ76oOV$OWR_u>iq9KEGCQIt;c+)n-TA4|&bu z)<8RtcT0nf47iuu)%Dk(D6J^1$VG3!=BdgwT$cy7aB)9(6Ld*=(SOg?qZvLJQeH0+ zTPDRtkdO!k!+z)bGX$d;QM!5_-lftJRIC0oCs{tPa3&&mNdPAdWx*WBF{UUaTtK>T zs#1Xi8*^BvCMXx>1mc+7qAXx|j!5nw*;ZT{%9R4*Vo6~J;~2#OT_oX({n0Qk1&ErB zrNG#}+E~KA+2y7N^ve6PzgJt;{9^w;$6NROhd!|k1~H~=a|ghd^WSjqz>WWV`TWKH z#(NV9mwc2yEusoV_Rx#z6Mw-r+o!`uubHVZa-4b;5&F@{y#INS-Y;N(&J@WaX5WAKlE zfdBl@npb#wPq+U9dQU%l+I{Km^a{`ksOD&^!mUr}rVPe3B?(2ZpKj}IPTAiA3Z8?f zd-6#U0LphpiV^^V84zrk5z4^deL;xM#w;48nkQFpFJ%f$1ERaHSm4VfyzWz-$cY8cxdwH@prhQIN})cgzkcqsrW-? zbHo$yH_&_fe|jK5{{+3g{TDs(k3R!8Ly2mF!WjX*D?CRLAUV_THlt6Nfj#lZ1e>6= zH1xoKyav7VcV|EPA(j4F?82o@U%6=hP^!n+xXk1JR@GF=h z7=a+!1HS@zcLSb%mI+Uu?)~}8vz^u%#|6{;SfG-%-o6_joph;qI=;L*zBqdK%h^iP zxZ7Ej&-C&PRWrvwdxBQo6V}(h1~^jon=S{J$7fe3XUA`gb>YL=`_u1_FS;xbJs*t2 zvEW#5y_LZa`uO6i0$eW)-WER{|BsiNPHRE|>6_R`VMb9gy=Wia-4qjSfYSl^{KLEV zXGb4S&R_4z{tdV+7v&=1y8e>o366?S7w^wbj`X+x7~u3*-tt#nNfCr6V7ox^dT*!r z0Km!l>!*8v2F2ImpVcSLXdPs_ZO~$akon;E{#+CoHA`?VAW69msSFz{mX(`?+$DvL zrv1YBk5v9&Zx@`L?+V&>!PBAcp~UKR@{28A&JjTyyt*nra=mU}`PMVIRBZ*7@>n4f$9BY8D|X%VNp{tZy`{m;vn z`v=dR`=3|C$NQg$`Kj%QWJ^Y#Tk*86RiqLtB6d6OSkkSoui~ATeX*rW#oV0JZ{0{AI`%3W!GLCuE~Vr54}Yy`7qWT{#$tw_|DX{ zyDkKt#Xtv+k;q;U)?O4Ufa@mOcP>ij7~#qApz~|F$;EZ~J@lpmdA061zI#>=JI2!L zRw7Xv&F5w4wY6VvtK&}pN(o^9dq~kaWHZonqP2TFLbT`%?!P>sWn4_nfE0+O6GwNf zULT<*D|0S zQ{B5FHM_KbTxW!`af~5FM(2&f&T354@R~@hs0l9zDg#?9kviAUp#)jAX;Hg^> z)(#BxicI0Z>bt-c*E2g5Z9(KArb0Ko_KD$nLZPqBu+gfDPCDexRn|32HzM^GnvJcLjKnB&H#nnkBcz*1Hb{A0&P$^oHB~m$t2zQU)<-&n z89L8Mh~$c_L(BDU;`{7d+FRgsr6!!AD34KQZ!T7`7rWK2eN$m5o8v^t%a0ih(K*Vn z*n>$DQ6GZF1|{4gw}5eM(SagnFbw|*)ycazt4HPf_H9+6YRTM!7M0?gc(YBVWUR2D zp64;1pl}h!=nWw^&J9`dZ6o6BV5(dG_p4Mpns!6}70Lcq)eJ17p4EYER?=4KM}*-t zA(Y|pltjo+wo1IQ-iSDebTW@+hD15cRCpyJZJuNY!Lp=!2{MZKL@n?BH$QAJo36Pj zI9NEq4Gfq7vtde2&})s8AjKJ^AaqB~d}ByiGzOHxj0N^z#a7ieyePSKvC1|4`;)7) z@#)EjqvP-2|7g_!GHt6`&$9$(3(yl8cR_CgV~ToUn`F*{9ii)d+9E|e{6#H?&7MJtU7hz+=wo2nWP4)@%yVc9}eH19G_iXuF471rKvmS!b`dV zZG#_F8+h$fy)1OUtoi64FAslQL%&B@Do@b0Q*`v^!}<7Pe0sSwVdc|$OU<(O#pa#_ zxq+yvP9bvK94EIw!>qD6Z$PiGz<1OyniV-?XZGMYJZ<`_Uioqri0aDT&a1=I>fnYt zSlGK4BsB-(W~eIGP5x6iFi+{{ZlZ>!iQ$tQ(@Uqz zA)vO*^y3YO49R?_g_!Ef2Fh-RBew(@PTGAm)yH>Lk@L2CwGam{UgP zmnK0Q=0H2b%^M`Nk7UEpT2*W|3ad7Zk5CL34Yny8iKme}YH6Fb%Z8ZxZC&#B1iVYc zo8TmgKunS;$^e_eL?5vWKXdg|W}2Z}&Q$g60wxI{6YwuGzs3lp(te0&-2G2Z& z&S6;=Di4DiC*W4Pn>gD#!{3^qnr6c0=D3Y=^OL;r`)-)!cAb@`xr1gC^V|X1IMF*! zLI>pfv(N#!iD~G7{5s}gHTa;N^0j8-g$1ioTsJot9i;0{#?CX8k~|AtOHonWFLWtf4PZSL*0HwPhO&;`v2AV3Sd}EY z2r^iYs(a@D@<;RQE{#>SI_l)9Z7C**uP6!-a}C^PhuJ(8-g--cMl2k7VX}GJ0LcBi zyn#&x6B-X|Ek!qP=(gZX)4L>I6p09J`j$J^{%p+A6%7@Qo`qE;bv}5V>=kZL9PdJ- zrXB!Q#QRG+XDCT@^;l5QST+(ug)~Z6BRoBtmY== z8Tf}C6smvz6f94-L&!i4tQ`l0ihnJCqWT938D*b6Pr>ELd-9c8Y}S5 ztN-jg-u89aWjo)#jgO9MMoCagM}vW9s}bL>M7G>Fgfj5u%V-rdZVlnJ83SD6kN@xa zyNj#i3wb>y?)2{I8mu1QCU5mR-sRe4j8`O~>1wWn8fPxi_i@+cgTLNoQ^PeyRZj!e zi;Dl++uv(fq*goZRvK^YwEG}u%4JTF-^ek>l+XJ+$JAn3`ykVDwox}!I6|Q_vo~Oj zD!{h;QP=n`KTQydsN~2w%I26-;e0-NZ3Tecx)rLSU{%{fU6uNfqm}(&Ywy2tg4to= z&0O1E-HI+~$SOJVrEUAr;}q>5Z3pRQ$J_zF(#RKt*YU%11eYQZq-Cuxr}3)bEPpPq zfzf(GU-m4B+75$?Y3QF|8!&RoGMr4ob_1QY0-WW^n7*ed13NpQ2XjVxRUIark-G#0 z7vLj~K#+eNiU0lxeg$F9KoEf*=z(Ce|8XS)VVxh2fww^wt?!Umh4sw&3H>o6dFs4B zw;cI3=hBB5pmxhmcWj_npzChMsSKT$q7{hQkQu3paV3qe3CzZCGQK`ze7lBGw`G;R z;yXqlt94nj6~ON6v@%10Ue6_}+dAzEuEo4G!?!p_Qxthr%wpP%z_4Bt6*2c0(%~T3 z;MKf>ywc36wA~0PVkW#HlwB_9veRous1U@4Q-`NY7rnbuAc^sWuhm^R7XFDg>Ap-+ zs__y@bIPBZE2ktvBQSjR@@0j<%5~-vlr8z=T;4>88Jbrl zZXJsu0I871njUxrvi82TZSdSAFgk&Wr>o1&$A&q_i^O!>s&;u`R&D5L?JchVL}c!A za};4aSqcDXp0dRe&TNuo&9+@r!Rr=H;oEibztCIEH83}F z6ns8h3htWi%F>PZ$w0VPuN;ch!1u!#(lVQsfw+k%(3{5O8pdTE`L}1I{p@|0;I~eh z{Z0L9^1r8aBQO8TU(5Ud&xfzv_kUkLfARb=|NBGy#8q)h)A23DG1pGP=r!1;Xnu>b zLo!cchCuHxd;R^F!O){YSXtcpj$Ed0-`N3ynz$VWfyrerq5(4*S!kuCjfJtc(tCU%g|y+ox@M7G@cR4PRn zj>-b_nnjms-<}IXn6UCLC_{7e`#*D>q39?h>7g;hwbnm=`*zE`qgkJGovxqTIM@{k zMQ?GEf3nCHB#)B?r<&$z8Y6yIgRvL@`g`l4bx9I{XN9r)nJ$q=sNzq3ZZ8VFN6%-E zYS_2-tJD8(!w1v<_Mg9cQPKaNKfeF-AU{JrtAG1PYAi8HP;aNBiEF#v4C*{0)MjrJ z>X_2{e2bH%EZ*)lD}rkp$kwrCE&1%v3g)Yg8Lk?%D%(o6s(s35nX)ua#~S6@p;op) zEo*!F&8$v!@6s%1X!=b}OtoEjXsgnTM?+HOSF``C*B3UU1GMb_FJ3<1bN2s({o(%O z{{Ij^&&8$tnxAWkxz)y(ODQD3f0N6%^8jBpPD0OQbBABTfaB|T1LRF`p#l7IJn3q% z+Q_IaVWsljhui8ETcrMH1QbuigCMH0@{4b(*?UW1^gWDW67qhChUk+>;Tm6Ma5BN6 zFKdDg$=je_J8@4G?R4$b)s2l>C+BL?TV+jj`&vIB!BRK65JsXZ>E_oaUA+}@CylXF z7Z2l{m!6#0_b=2{B=q9XreSc}SmYUTr-koZmMyjQ}_TY>PR5~MA; zvUb@B4B*Wt4TtFFv)e|G>%YIlMMeLY{%`@^paHP${&)Y?OV|GQa_>?9e~@3DujQsx ze+ln*tNR;S4}M?DzZ%E;(Eb}hZ$$lXfdB8S|2s@E4*-F?-}~yWcm!}jt$PM&r);OT z^0KFZ4$U8w=5-GOT|qaW1U#ztjIlJZ^Se~FZ3nx^fL17uX+{_cNjw5qhvy#My9B-g zUF`R#V|~p(SN}_-Ly2^@+K>j=qW`^o_2Ri}|J^${c+~$M;^*v;YWS5So}mRwweQUQ zY-xs8K&B0)tfs=5yh>x&ynB!Cc)x3RJmKZ0_JA$v=~OKCt8EGgdSm0lcC|=Lx2Kb2 znjuOp1-ahIAwy}5L(wr~M|UQK$h9V*mRH!v8VeHtu$1Ob*fgjoU>wKf4nzqR7vFKt zKPxOwZni+}(J!By@j}Hu{Ql_N0!eaqP4XlHAxRPx%F$y45H>@ZHsJBWq0Q))&td2Y zsqb>B0ZCEaL8HqXgBKXFJK#uO>1(&91nzY_ezeNcTC=kr`pU-<0B~Z+v=%0uRAlKJ zk{ZvAsI#AOCLF7iP}y!`6ii5F+3{*usUmyn(yO>qH12B|*Wi~~$Ge`A-Sb}>U2o3uSN&Sf ze|rbd51jMgi{aj@$MfGq{2bxt!|xBjGBZ{9g1^$5!(I`mb%be_r(9e3K98n|Jst!9 zjgNsIv76(h3=S0S%o0n#^H*=qz>&?*_6|+s{^hl;yS}Yx&stzEnd$j3UgJY8bDyWi{T@wxL?eSLbn~ zy@!qV4zpR?u<_Mibzo|QyauhaQO?At<@rrOQdgL147T+><_>uJnBn8A`?>qSvP;v! zEQOmo2)6D22QMq}p9lMo@t+U!^X&gh1o|*%goZHYTe#ljx0?b*c3d66fH1h-H}iJ9 zAsPM`Nf?aJNiQJWW-|$Yi)JFGh?sGzZ)gA7gb_!7yt*)}AibDUhLR+cvEn~6r<;t1QlaamV2mfC>V(a#4!di5Nhzb~&p zrLWqB3e?p~fcn$T3mB$(Q6gcDZ&3!P=sm+R{+G(k($b3x5zQ)OJ&02@C)r}fuFOT_ zP4&hm<>Az#+Wmin5uk1Hp9fX{pO<@&`~QRdYP=qsTqBm#0hV?df864KBcE}-INgKK zcoXPN@SzF*zpc->%akUcac|w#e8yc+Yx<0LplqkM@{&H|U79~A&1?FMcLu#u^r*j= zzVK1EW~cbkmPTz}?X3Z%F8obJkowtD6GGZWQtJ7*R1j&`#-IIBq-~=OJlH#jk$TpQ z4aSi+K>z9jNwxOyP}b0T{a+n*DPrrM0h;yymoE-pxc7grUhF^me>}+V-u3@B!;2|r zHO?cZ)#dT@@HL$tepesat@_nk;MTzlS7G*aP{7$j!8)1gZVb^VCT&LokXF zU1plpY}t7lL540_1{sMdE4MUfD$GYy9{Heg$*}_g@}R z`;92ifE0-3OOxHP%KAZfh1HjXi*<{L{!;d<#+eOPKvsNdP7`XZP- zV&kTbuY^;zKYm^h4fGT^?^EYZ1S>^l9EMz#YIrNwt!BNCSl8_g6G3GRDdmmI7L`wa z?Vtjn678j#6X2-&c@Q%q>128|hO`r2l_ZChcX5v}WB> z;LbBd5fgBvR?{m^nZ0gLRf)BN;Z4(LfLx!(ghZ$_fxL1Xg(g5rp0dN;i06*mYu})S z5+2&AzN}i;!>(e_0bf?$ax+UeBmNei%`Kda#3*yOJfmR~-eL>m{AR44r2rL~?~Te6_{?;`{73jyD79OiwsNQ68hr-fyg8 zKYpuW`#!@^HphvOnjbS5qH~mCu`!b*@*6E0TaM`X+7)}#H84gcL0fhqdnpdD+xm39N(LtO|DSp3##o!^_76CeeB$I3w1|9m(fUta$5?&7FjSQ63$ zy@h#ffjOHM>q!kxXECyxbf}tBbPg%KBUvQgNo;1L?#zcDPTtl?SkIb{^738U8mas% zNENjORLoU9k628XoTO%pR?7IA)w)!~xHHf+a{-@*rSqXac zTr%k&FAslQL%&B_qS-mj;GFU`Is60K-$aPIa zv&L#i$Zf9?#)MlMUUs@qE*7SjB)mb)9s9K6_YB%>964oVerZy)VIFkAxUN;rYa+Zw z38J)Nc&#cnC&d*HjE_(Z7frTV8;hrvJ925Oxz`4n`i;Fx4DcM0oSD#I6z#Quv|G6_ zX)Ydpy_#i+&PW_}pwVsOf}B7c=NVcCq}#*=i9VH11N!GRg8{i#&OC*V;YAiI@0dY~ zlj#Rd(}$RZF#Z6O=!1UYXx83`CO)^%$hRh}Cb`|-9I#?g-E~AT5YxNN*6g}36N_*0T6b!w(%6L;ig&fA?sHXC)Yr+cAGVQT>Esj!Yk(l+jO?2c_8 zT*g#XzNg=S%JZ4#*Ycy!@5+28UDm5ZFArHu^-_FAQGl3xV`BD*%~RoSx)f*^Q$_E{#~vJsf3_Say_$ITuy&;r= zFJDG0nR;s|H!tHFsXzX|=kG4AjxXe8mbd}Dr%SVXe4D%j?0EHSlQCYAgryM(z?2 zT!4=_0zv+9B>wv&_!WdX13?6Opa+7<{>L^8UFtE<)w{kJh?^9;`Y!o3LC@5m&>u6B zr~G8MdJk$2cn>j1?e?1P*g&s9*WGqg89gsWD-g3G<53mkO4?l$n2p~xbTOB&B&}=M z)7$lpx~;417vDDmS*^>$tpIjkt<{Mh^m;B)-BxQ?bS>_s8NS6anxe>~a26A11cvpp zsED~gW1xdzgO};#(;Dg?3N4C1NMMGLPKNMbx;l69AY zg-4)Gx-XlVYP>|2rt+ue$|;G^2n=7nd|4r|a^<)LWwPyt30w9U+0UXi$UjBfy>LK1iwymlLy?$WJ4P=cXiBR#UoIpC;pW-PV!(hb+;APi}3f}L?x^Mh`e((J^S$kVO2CKh& zoUkN+v;Fub*kNdXi|8qtCy*l0|LfuK==tElV^we{O=v_pmF@0=fxRv;4hu6GL@e)s zG7`Fq@BqLBe`7sJyWWK>AFPTfj_ygaef~80_~ic>$03fVov8s!As`b>kl9oQV)ZRh)nS=i(Ik+MM>x$L%wXn>ISa>K*&7gebF$vL-&5m_2+@n9_ z;dAnfp+D<3!ehcry~^q~5t%M;bPFRKs#O`9X{U%^Cxr5yUCV(nBTRHgFZ+)V^O|{l zk%(`O`n~Kc(ewHi(wC2SP%tB)|M*wa_kaKQ)Ai-qyC2R^&s5RH$Ew`>N5D`B`fPu& zf4x8L?>b|>eEjPl%$T3@Y48NR2ZMiu{$ufDANaDZ0>}`Ma{ye-!vdgxdG_||{O#H6 zelfvHeI)dj**n|GLf(b>zU<>xpTGR2JhjX-XgF_O$;oC@A_nvDOB69T#7E92S26oq zXPAA;=|M2GYqO6vgi&QCPZ>JX58}Rhd+GDU6^Z53@YnJ?Cde9trIQK%pmdbJYuPS8 zPy8b04G@U!A4^IGQ*JDB=1mo)k zV%e%^Kv{(>`yM8#2EE4dgk0ZeOt4z6F#Z+}w@zB=Akma;$<^x>GK9B=|?8VfSaBSRm1mc&}XTNrtp zfRA8GQ33{E{{s5#IwW^--{zd0;^`F8>p6^57+p^wj>s*d9iJaF?8D#7`#(Hpt=2g{ zzn%472W=x-8XceFk`&KQ@%N%~XJFB#pX4Fy_>^Q*Y@6-r3RT{vpCbN7Vtl0=efk7` zt4C{!xT&rW!;lWfi-9Z&yv9lUo$pzPOV{eOdY83$WW9~-bL-iK7HMQV=ohfFLcfmy z$9xwYWWntzLllOgRV+12a8ozb7U?|J{YU<-Dy%&AJTd@&`U(8^e^=B}=|A52tGIP} z`hDu}_RB;2o)z%TP-s_}$Ty0dPuX_Vo2+8X_zY15FauC4RkA_Gdaup$gx3LyCt{Y; z1>C;>X^eD#X({myQuX3Rzc9NYJTtFPHs~qk2ERl62N=D4{69UP*)cmeHDS0}EuC_D z{J`|zM?BcK4KR~(eVw`$gm*XKi~Tu?F(-5%{Hou;efH^#cC+sGi_=vuc-5TG*O*iB zmaj<~hajQo7L$}2&HVANRSWRxIQz{H?I(cab};22smE&ix`0uu9n|W(ULgxjPSRku zbTIksp{!tOF5^BXqNwY!MXO*CBXCfrAJww|xM~^u;N?rO{51LtKRp7ckRfn*4Bip| z1CDP|E`S6R$8o-+?lRpWa3?s1kRp1o2ZO%>b(Eb+6nQ8wMk;f2MIW(D02(@R-#c;m zTk)}=m;GXwl8T_wI$8s*m~a~{4MYpP%-f`G5R)$+xjjlx9lfkMQPn*y*7|bUu`Aw{ zo#lN5zD7KlAqIk!QWTq2`hrQ5t6W{jXj@Pd&)E2qvh#}(rhwNdf) z`-7i8?fHK>{OOZ*uzhP>F`mDVySfz<_DV;(G;bGY`ROq@@ld>`Wz2<$=QGR{p+2-D z`>Y;%CeNh{{#K8s)5W9gX3PYpoXjCdr^-b84h7<>y8t^80y{$DmU@KbE zLcu$!FY689MBEqx&Hy|>{u{^KZ3)<-Cb`bLK~thx{!NEfHIav zi_BZaL@t2QxDy(h0J#T-lHhgU?BWf7imZ82W&u-tf%*Vm`|GYfh-7RcH zj6789EI4K$O+ZZUJP(4oi4vMw8#uK3y42m_a*{G9T<-Cx;f2{Pq}W?DDtIdtz<=;- z+)}f$E`(Cgc8DiPmXsBCyEmAkHFPGAcO}@e&P#`P;8MQ4KKR?;8l$AT=&uJbj!7B^ zXdt=YPZsXUyKgRE?(_!(<$muUXlIr9{{P4yc*M+)hC0p5 zWuLr_14Q{?f+JMuk(DAD`iCD1~>tWM?V z$QESMFBwz>34bboZE-&XmpQ7wata>mRr6BxONuE=mgWiVi`H9j=G5NlW1(O~^5f zb%P33$loOcPM257;#oEoK30eft8XmWPZmFRzac2#Ucy1-w4Vd#0Qej@_c?IxVFb>J zcC~SH1u||PXa_bM^Cid6Om;#fUo+$~75Q2d7*KG77UJ@Ec>F)IeqTHl-&jkd8p?oZ z(eCJY@X4aJN8l31nB#wobDpGDxvs2-{Kx+Ok3a7J_~Va1S|b-*{P+HkKmK>k??3*} z{*OQYkJUixj5<{NrMOxtmz(bQqyFv3z6GxkurNT^IKCDV$EVEHIW0i{e;+;hkv)0* zt5_s3d?Hmi`EL#8r#_I+@@qOOZv+fOXCo93_~OU-i~i&PEALn>VX|ft)P9XU;|m4> zJ_3@Un6U`389W3Zf%GpKuhNmu!Tppmp5Jp&$LAo8-|8N88+4J8@^)e_HWZK`$6m+( z@4K>W)AKGv8?GY~+(@?UaG8AFn)`FXPd{b-?W#qbF0Pf?y~06f15qV?#0lAqhy4+FOU&X;#FFlT2yq5o=su%Cs;^!)d*KyGh;MNLI0Ts(UtPto9I=`*6VkPGb9BKe| z^gW@8d#4T#|1}fz^Enm6Z?J3r5R00iL$8{rT;5k2yY5!UL1XBl!UOc{A1a~z>=wLVw;)gt8eLnerL^&O>=tn> z<9*jO-UovO^!>*1zU!gzPMZm!zV=XfTNydi&pj0W(N1(TOD+4qHO_|BG4oI0+)J{^ z-wBQ}n<0B!DlApL&8+k+EVn&m1}>jXr^@tEQ zUU_8gu8yh4fs6zXNX+EJ905f_LSh&(Frj2F?>Uag2;4%71uM$@C9%h3Qg)W)9;aes z%kfhDP1A1eXbn6s(q>&EzQVaytmhoSxt)iVkWgBf79<6bA|Qlwg5xQeqanEDkV@-l zsSZHjGTGt@D2%!XFk>kK(D<(aCwU105(h}mDZrEY1M>bTx@T=fdx=Kw74aREto`zn zVRJ{v4^vtF9%L1$azHx zW!Uz+?_Qt1RFcVAYd}eaz(*i7VK6w%T`6|x^mhUaAuzP_sUR3Wv*_h4`X5$CRmOOA zOhA5?2?c2)zFvb@G0W+^S(dnrtMpuDSw#rz=*Jokv%&fb9`8#r8na<>iss$cs!gG% zX;7L1G)hv+!Coax$?m;;f}X{w9$@+u_?%DFSw7KkH&e(1{T32)?mHu=kW`C;H8AydS5KqmR#*Q-OA>KPt-8*`$>3^K4cZpV#+6qimp`YGC>`f> z8p&sS@%^WfG*1iJv{JpzqGjNBUt$hCUSnj1%wAw#h?b9`g>FR8U{5}-Fpdxhw&t4>HRMhP{g}^0eac{k4Ik~7TEJ&@BfPC zpZWh5J~g%tm~z4b7~yzY$`;GaSe7Pk3jwR|{_W8iacHE%w}j$f|}c@jIOcb?m!#*k{jbt2@IF z%{%99b!WsW4%l(s-N+t*%hf%-_};9^04VAH4l$C_z}WDq{_{99y{Tmik~H_y$gxgt z5rtFqJ;#xL_jxH6B_NvJ@ybKIL32VEE21)&ox8%u1?9f(f|c@Lro(9`1zS%OSR((Q zKYvzy|NqMu&pyBZyp_+d9lq$h)56cS3w8+2cer25oy!r>4V?jA0wF^`Sgm#nLTg~a zUkd#$*x}@o%i{Kr@ot_M+1~{vAU8U(oW{(W+u-c_po77n$|@nrX+^Wd<1ABHpo@LF zrjJ%uS2iEFRyMQRE`~rlH)i-pT*;b2Xg*r$#9O*%an4%3)Qf%X=$))a?F{W!r)u*` zXm_)NEtK$T6SmRGl}cq8eNP3?$W0mOgJu@0**@ibKMQa%pqQWJx!ZwZ*lw7|7#wEa z^`xV5icSFsMwdAkXZHSDDv3fk2}pDdu1+s{xf+^J(JoBL>`5L}&|*WJ*q_xlLk+R! zPIv~X--cXHmG+?Y)5;rAiuEWhTJb;(aIC_L3LwX66cxa18w|Elx>*74<%`qpQZp2x zfD@{O1JgHphIm1cCL|oJr4Bp=7YtiS&q9vnV9aPNOd2ZvuCe!l;0 z<8zPqKijj|?6xO>-G7o-GmJ2kbxv;(N&u%YxB+CM^bK%_KrkbOA<-aZ2t3)>my}>e z7>ZRZdFd0QCs0gOR}7?Tvp zkf1x0$2;%+04X!W=vl!Xjv_F&rXeYJMpN(0@)^QZ)zDV2x81?Tus7p8VaNOXGZf8- zY_=bgfb9n}Ncr^`F@Bv;7;qdQn!&E8A+!z34uJN3VKe!6mbA!kjB~9 z27>Ht{#-B^Nquu?o;I={)uFKqj&^tRqqP47Jo@>iK>cU%>5~FOpVJI0!55^u`!jfY zkUzlZG?EovMN3(ly}%>1{mb28bFu{l_@!mC0N{}sReqhpVSdeqd0C_y1HTg&y)%Q% zw$hmKcCEg$73>QF+vj;d`02mWKLv(F`R{&>1k&%7J@)64nz6jzuQUx2t_x?5Af1-8f zY{WfPI9C=3!m%1Tv?QX1o-JZ60c3w|k%)h36qYXmrzxts)s?XpdukAs)e+R3iuID< zM#`l<@N>#IkYx$^jAk5!A|>-PUaR>CC%Tg1hkP~k>R=MP2f`;rv!k+f8&_SuqL_9? zwys8Kn4}s)tcX3NV6{^COvMS7IMvCHM|R($TJ`ButqnG_tgjIqHYi+BJ_n1f=gjX4 z+|?ZViUzjqj~OoU$M`)g>I!1oXUs;1MY27iEGeeSxVSpNsnCm_?8}%nM_daS_JDfa zMM`da8X!w0Jl1jk{bTi~YOAuniaNUG199LRBUO4wX=)Qp1zW>&p7H1Y54>@ za}wrAu7Hd&7VWTf>@1{&xecxbP}<|X1eDq(slO@y77SmXKk`#)|1*Y|4q`x;*#8a> zUmO+UKVCdP`W*kUl~3-6^~7TA#5M64C4*jLTi(DZhg}*UwQ=DAsSjHZ=V%&Du}0uV z<0%@1Xlx)nWlL-zkNQ8q${lwlb)mD?Dd}sn&jW~*|cIOwG2RPr=L+|Uq zWw0-0eDXVSX=7ys>|YgImVs%cX2|}m-;zQv2goe^ zC=XiTfv!7h84(R0gtql#w%y_uno?%w%mOIdcl~wULNqn8G5P2%AWbTvjIBaEg;0++ zaU;Kl4Rzv?Hod9&$@2k_Md@@vEBUCk1e0&HeI%W@zz4aBA-7qq^=k-`i=ep`emFyuy6-(T){3R#WRz;wpy^u1&EuQIAdG zZzjN6z}{p)XAiSb$hsTv9P(hM?vg8CdOur)AO5G>{%eKEu4x0Vwf`O-96Wn^P|W{( z_Sycsoll4M-*yJzj%~kfvc7H7E~R~!Q@(%Cl?i^E#>wAAZ30@CqF;Exw3MJ=iQm=4 z^ov}VXhHz`q`vi#w|TOz1&ROaPsdM_5OQ?MDdcFX?S1ZdUTalF_eQ3vQt3DnzJW2E zqB)AWZFlti;N3Xi0M3DRpfGY(Z>q&e#AoHR{il3$o1Sma8Mjb!5Bl1Ny*zT&@%dA6 zPUn8r&yLq^NH*~d!HCbA&#KxFnopk1 zq#to=K9%mU(p<7;U5lyma*4|p(tq+ij-)P+UlS3wnKQTv#43hg1u-L~OE9V9hv#sL zF48DcMGUKjYsJpa2;(Oah74KQTVFQTPii;Vo~5GJ)1PY0chyu`tV&)glh51+3LP@X z<*bSFXrQl$>w}L*);9xKYbhr|AoQlU<*)$#m|UruRnn;%ZHkG6GJ=e~wF)c)Q2NQQ z8k7cb6oWQf04Eb1W4^FthyJD;!pX*ONHvZDIRhm-TjD&{!l%24%U41|mVu|9-SF`( zJ=_IF3~@P*QfXvyWm)^!54n6Q%mFOsxNG37A=d;@G;Iu>XuJ$Odq4%7zNp`zMWfd8 z%|S&>joPcGRTwrU_*f=SsT+`MpT4ZMR<=9x;YJnsj9@tQ5o)n z-d^*iw;q1Qi!|P4YOeoPja#n;Hb&3Fq{;T`a{lY>RAD0XL_nLJ(q7y0VmXfzbO>{C zhPJ?ZA+o*_M?ZhQt^19Gbh@UrDa;}U>|)F0I30uPjJ?)QNmvToGzg0O=6f<*z0&9Y zCA6pE^6f?OZE;Q|6}~#ZdVBKb{QA||SKoi*v;eA9gO(69hI9e?oQg&1%M97Rsu$^q z0GX}2go<|k(jkYb>iL;U@EZBumrQ!{`t^7JxITMxarLk4nVIG55flAJQ0^_WpK7R> z^Vj9?=hQV#8M@GA`M<^yDn0e*uA}pSnja(IqczHm#`fJO0{RU$Y;*JZ4^$PxzPZ1q zWPV)uL5fa__}|eYt61%RJlPJ$tRXs<%o+CQ1}$p3ntlAcyb3lu5WgGryqv1?Yj-iM zhyRzKQh7k-SvBX#ek-lnA@#hjRt=e8S{vn7!2hDzs!Ji*%BgxUt;NjQlW#TCx>Ug< zc8VykA$3rG8?No>^=Ao`-jHiG{z(P=9%`w29j*o<_cgdSfW7)wP1f?5EoY{iqU1)W z{ME_T$@Q!A=90haam|WtvffdXVS{hlJv@qk0Fy8Rw z6{l^rLxpK&SZTWrs$M|~&*EEIAI#TfUC)^_L6v){sDamCb}a4HH_Pdp+Mkshs-$L@ zMR0=^JAG5$^uQ#?dZcz-Ws0gFboDLuAuE6Y;^|e~xunwI z>>o1mTbnf*;5i~GZ$6sap*S2%g8(shHKT~lNE9|0u-K(IWK{@*gj;GfKrt63VFdDMidW*aK1irS%s-x2m&!9W!1`Z)b zFvLqvq1$G)V_2A{lXF-YbKQej7_NhpSQxRBqgWX8VVuPbsI48wcg`}@(rbsuu`uhl zd|l>&FIL1;e_b1foOf;s;Vp^MIeJ6VxJrw3Z0-dbnTviGkk5`A*z3KcD*~$-*3;nE zipm}K)pyASHcR&lA%_i-GLLBMTqMMU6|NSo%-60ZxDA+@F}aP!K}}b`A}d%N1RotY z>aE*V!Kdznt(HOlio!v0vs{$b-@Cma4frRJ+TG+Z~0kEFJiB z{EB}YHWk29n&NW=%bF1^*@|u=gvA~F0mZQ7$;l5Oj-|lM*9vI)y~KI^r^Q{Y=rL^` zLL}YrZ7wHjg)h(EUY)-^d;Nf;9~=db#Xp%D%U8;p@~=Gkblgp1LG zikfghTRnWDG;P;$6d9b2-1Vy-hGzHGyjaK9!XB!o+;rSS)x7HmKG-8~Ci1~QL+7Cn z-f67Z2k-Bz20v6y)++kJ6I;-5+%>kgiwKAo19uk!QLN!;KGm@h&Fi^=&f+2RJHXZh zBD_;?EF!|U9rgG3t;I&vO}PmJ(PpC~DyCV>En6|>s&3he;nr}=R*bloTef1%hvAmB zYzJ$uY=c9%o$!d-NjK$>?TUSGI@qFWqHd0LN8uJ#<8^Vcy9~If8uUN#Xm2anqJG+k za=L%>F2NQiDe~U!gTIBE@9cYpTiPX_49k(${!176;HtX_h2vqUsU)q zzW_h|^cTQqDE4R-=z}x`yB^G!k9PvdLB)8xg<&SR#63dHuGPqh{+hq#dxIAC^TMU$ zB@Xe4^8ACr;MZSe5Af;JOZ%nal|yZR8xawWJ^pITPF|m%)cN+By-rxUW_2!m7m)8S ztDKx6n!q&TzG-%B#oVij?0)vSHxRdt-P0$pURCUpgp?ic?|a0J{OwA<_3iN2KXEzFYaDg~k5r8`Xa~p?BS<3-s zPs*PUj}Dh>AuC-k%bh#BU2f%C)aDZO8@vcC*QB%LTO6XG;4tnYhbJ3%d6`BJxZ;b) zF+w3zSBVQm=a?~B-SYUQQ*QdU*q~H++IOFKOv43fN+_YPPn=3OSA_LsqmF_vBn z+g?D>vKz>++52ldfRjs3aXbY(HE>qaFiqnV_B}%s?Cyd-OgZV7HLYMq?qV=_2Szvq zgLHH(|N9O22!fP@K?wSw4+fK?(Q3A#s(2=A;yUH08YREhy1z z3FFoSHs{v*_6z#`B2dk^b&+(P)k`S8#SxmK(4(Mb2j>_ZRMVmcW`kKW?gU*1(x{PF zb5s@kb^?k#3*w4=xnOM%*o-hqh&4L9r%4kny!3?v##1A^$~~4vBf6mbo}Sa4TRhE` zfAm>-Lqc>64!(T;yaZs$`PKq5)wg57+Fl!%UK#asKhE^I>8ZVC3Uf3sQQSI)DgY8m zjTIPp2(r>$wrul?4^WxMlRT)lJC8MIPJAVgTd$1rzTLE1_}E6xroP~1e&8l9<~a(n z`^XajXrA!JD@>2UuMR@0tv?#ZGp1KGE!VrO*_UwC8nUU((yzE@cDN)pLvDOU{1pX$ z-#AxbXL)zKf0E1@e9Z^R>ip8(LGB;DBhV}CjE!uJ4P;k=rSnL~|5r#aNAMm!f8j^O z!*}bfZpno$#rvVwdP4uJ zf2EgsD{3oM4OInw>4e$O`T+oCxT>J%g27a|$ZKcMySmFYkR;`!7|(IfuSL#X>6a9- z;?0C{Ld`X}_GXU%?Roa6(dMwy16$U!!`<+A?{tk`LaSny1&H)A4TA`>{4F$V+FF=E ze;Sc7jPge6Z!Zg9A<(e;5c^fl2XT(Qh^=^#myWgBlkA`VAsl5dWDU=g`ndu<_b+92^`Rymhis+;JuO1|fYDX78h=d`PKsi+Z@ zp0jT&zN2p$1jkLlVbgv#OD?_S5Es)GN|NsKw6TjBptzkK>-k^etEdhwb6 zZ{wp+LYv3^HHo~@Bw}5GY$2g32*=Z5Kqw;e*zOlahaO}Zi?0u;t_XT8z!|%b^~T;; zew+1mZ9475i*ukmmo*je!!X2x;lOAmG34cHO{c23FEnJ$4^Vh65pJa`^7iDM1+BS0 zqc}_m&ivp5T^(e`c`|SVjGIvsjya;Y&??JfzG-rf%Duh*^W|W$fWib_sWfcMXkdTc z1fYs>R)lIsVnSV71;F~U2}Is8R)mKl$wVR?+XX)Lx8lp%xbM2ba?*RTHk9h?cR5t~ z0HvSW09+n-In)_1zci*4*-9GWBttiroGRL}-!?w_i0%}lKjg*#$~X*7n2wCu4*js5%$op3=f8febASWYdQnCk8F5jr>Gcv%V-%hu%B^NG zj;yT^L@Wrr+TtaSga5kHgrWuk<^Lfzrr(5`%ohnd2ChWq5$l=F4d5`)1q&Ysa42c# zBN)GUhT_1z*YSv1O(|d2)!cQX`&af+i5$5W8N;08_+8}=T7s~Kj1rHM>i1#E_* z2uvd~R!T08r+e~x!SOAUVVu_YFb;cfkG={-Vnt%z85bHe|vb&`BWH^R5y(dFHPkK-OzuqJ81EiRw44l6@W4&QQ z$_sy z#KHHcof+rJ@xDsY9%8cF>%GD(h#;OLs@Fy$2`HLkp^gfWMc+B3H`#FDH5@bWnukMh z5-$M7(-~)g&k#j829P2^k;F*i>+6y-WG%6nazdzDB@}ZEBaoytAq+7<1k)5qh6FJg zm5Jj}28#k1F91tO%m`&Ooa_lzf>4I$DCT>BPyiRqol8jWPi>SG|(1wc_k01QK*Gux$6ksa^v2Qx@H8|ts6-CzIPbj2~_Fp9u@G0>Vm zaMI(&RC4C?m{Ss_fdH}BlhQ|y4#tFV#wkq1ZoDt=qJU$H`79mV^PB$;LK55{svh&& z1tCfzvJlGxNG!(td!`WPqd7|AF3|T8kTM}7`3!;g-=b)qw-<;G*(^IWU=CwAMReHf znSE6YC24t##HMRuDCdVsQkY$QBeB_)_X9+G%NLKHt zxH{zxS_|ZXUWwvrdFSLLArYA_)T*%=q(Y4y3icrmA&$WWK_OO{L=XlueI5j77K=O~ zQAF-=JU#C9KDu)>`F!+))#mfD_i?b|XXTEifqEaorP1`~X~c07At{*0Pzavd705ag zqtly?L+}+6+C9J%uplXz2||ZpjHj{*L)={laEaq-guore90BRe0y|87r$}YD0){sR zW~(a$I~gjfH}iLQVfcef-B+5ze%itFsisgvb;Bf{?t)SmLj}IBnz)NYNC9|35k1suQvd>Xaa}B!$1F@-as9)r^BP+f%xm<2ar&5iy0=d(3#Xu2q7S7JB>p`BgyM< zJfSetv9!3Aa@j~U%~`KVCa}e~>ab)i$p~<1O&jGBeRN#X7@CQFaZF7DvpVU_JyArV zVy%P`#u`bJ2JUb+A^H$_f06OGpLQPE%#I_CeIC=8q7`(=e1A(%}muWsalItO+QhLt!F|Jzr)cmv`q6l%tqU?3H6oK-R z>ppq&@)}b#C%1?Jv%mJb8s`!NkTDWq$c>JYQ-a#3NOrIYLaC1Vax01djSSGWmR7J> zY4fc(#jlV`au!?D>hlpu`=C6(l}rxQ{I=v{y2=SgD)3m98F(iz2Xrw~U}%(INtIKT zEztJ|x>$n2sNWxf@&p%Y6e&wI8uB+y7B6d^Ud4(cjfb+Uo)&j%~QUt~ZM6~G!h#Ej_&x^Yv+8e{wty}yj(}ht8 z$oOXz@LIjB8jxQlhfJhEqSP_49T_Fq3e6Qgpx60 z>IyX$ZJ3JO6at)E3V~^$2|YxyWVG`A+EFbadISN;sUD1z{J;nxg1l^8rmbamjD{=H zXAwe4UoVUg5J;zNWVU9?I)}mlg5wE}F<Tv^wI63O+9^NENH@f!d;rW;31OHMIa$S2rbYc!&NXD@nTo@yMf$#}IGlnV zJfEjro)s|P@Ar1+HOQ9;(BV@nyaf+n%o0T zQK&p%OAL_Bz_E&N3I1pP1UG0QREDwO-kf4|i$XA=WL|=B-PI{pFLSh8S-{Rg88Q{7 zAT3S^hGN~6K}oD$e2XcGr3!NkDVBs+0gl5%Ep7kQ=9GoaI`uJAwMsAyQ3!C%i85Z9 zQe&&Hj#=naQ-*9*>{LZN`Q(y(79^!Wy?<5!eL|>9T(K+>PzJ{%Sd{H}J;CB&vnd&4 z&rzW!HWNHGl428|nmH7Ks2vyvl>}>Jep`9 zpQbTLC?-_=Axnvt{Ii-ax&l|4HolHv-5NWz3rmp8Xg)9zV^p5PPQlgBo>u|vfU8V5 zJ}GKjxmq)h6~H}xQ_)@t6=`NFNjpu&;>!#ZfkE|3d%JS3iJI{2~-+`F5_@a0i1mJ|Ds8=wLZ9IN&XX~-E0;Cfku zmosz)XAW)?+AVzb$EB zEzfkxG#^+A3E3CG3dzIcs96~h*yF71uKJUUes#`?%~0KmzR01I5lfr zzqbmKB?vdi|NH+hy$kk1JS=dtP0$BMCKWMFCi*AUNheWCX!?$$XLY+`@vNV ztki!cU>mRQj4*x@VaQOOE2VPNMRx#I{}lnvz-{FDAz?Ydw=~q5G>xlzFdY+Z4sJuK zRt^I$4P{3KZv@(=;IbK{=zGMS`q*yu6@ z8(PoB>P}P`sf^Y0cv8gGl7uo}TQmcSY&QhwvY@Fe$v>NX>Q8IX<2QCMWcRs7Wq zT5&=RkD4R~j%z{I;Km#eHU{%Y^JP7_F$s|iYnk_c1aC=*ipwi`Y-jK`TwM>iH)v6` z;z)2MV=$pgvd&5)V7(xC2yRty)e?*KB3Ey2A;)dXI5+PbABh+0jZ?!pan-GIZx4lfnt^Ab4Lb<{*cWGDs z3ap>&pk4*&hTukcf`Ua5p>GMfsT9JEZoE5eS4K3XoXmx4?1r(8(S%T>>Vs(glk)sN z*N_ZXt z)nLuHr6ITshbX8CY*FBzgrNDGS#U+Q0_lP)I&}$a3-!GG z!k6c+WY9GNE!N9K49 zm#<>gr>O#2cmeA*p5w9tc_|dI8J63w_CV_D|3=Ch`5>TAAfHv+Pi6f(L9q(9EUivH zb%R0xc@@1hF-?91qx}$axa@LKe$?MX$^u-LjzdhPu8~#F(U1#mO~#_H4(}?oQOZO& zLzT~vZVTi?V%3Y*__G4I)-!X3%S9Pn)mCOabpfpk=Y5A@_z#LX`YsNTNsg>Nd4AgU ztgbkA9ezH7(VxD--sP=a-3t4I8y~BjEU;jR5R`oJ!|6KUHnNgOET3E6 zg*t(CHE;zZxs*PW;!RWgtprG_CZBAz4tO1an7$>e55!7eyKC0XL}* zk6i+;jF{~L+(z-S8eE}RRYmmbi?M`j0L;J8&uFaSh~8VIM?|_vvsTlw+%5w1cqP12*yDf=6Y~n6Bq*1b!DK}09T2McQBqJ z9oyX;T;rNw0o*pkP^B+`hB`wXLJh%fWHLi^j$=9RHxvfw!V_2a5uC>yO(g)Fn*w20 zPcRi-fr?4Xv#JRR#G5Ahe?oI$%1T<2Weh8*Z(~g z_p};YaXKF(S}c5=Z)aYxW}P)2J*|sMGZ1%@x|u<~$>dD~@kX*YSHfUf{${?$4jWZ*V&LG}&Cg+AA-f%K!vxB$_#GB6NtcScQciUP@=hB640kOOl zz0p1#f69Z5STpx0tq%#9vJ&!%0D8U8vQUo-h-ZYA7g=7d9B5^D5+^ytsu;<-5U;Yv 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 JH9i1j2LPY28#Mp` literal 0 HcmV?d00001 diff --git a/deploy/helm/templates/NOTES.txt b/deploy/helm/templates/NOTES.txt new file mode 100644 index 0000000..216b570 --- /dev/null +++ b/deploy/helm/templates/NOTES.txt @@ -0,0 +1,22 @@ +1. Get the application URL by running these commands: +{{- if .Values.ingress.enabled }} +{{- range $host := .Values.ingress.hosts }} + {{- range .paths }} + http{{ if $.Values.ingress.tls }}s{{ end }}://{{ $host.host }}{{ .path }} + {{- end }} +{{- end }} +{{- else if contains "NodePort" .Values.service.type }} + export NODE_PORT=$(kubectl get --namespace {{ .Release.Namespace }} -o jsonpath="{.spec.ports[0].nodePort}" services {{ include "rustus.fullname" . }}) + export NODE_IP=$(kubectl get nodes --namespace {{ .Release.Namespace }} -o jsonpath="{.items[0].status.addresses[0].address}") + echo http://$NODE_IP:$NODE_PORT +{{- else if contains "LoadBalancer" .Values.service.type }} + NOTE: It may take a few minutes for the LoadBalancer IP to be available. + You can watch the status of by running 'kubectl get --namespace {{ .Release.Namespace }} svc -w {{ include "rustus.fullname" . }}' + export SERVICE_IP=$(kubectl get svc --namespace {{ .Release.Namespace }} {{ include "rustus.fullname" . }} --template "{{"{{ range (index .status.loadBalancer.ingress 0) }}{{.}}{{ end }}"}}") + echo http://$SERVICE_IP:{{ .Values.service.port }} +{{- else if contains "ClusterIP" .Values.service.type }} + export POD_NAME=$(kubectl get pods --namespace {{ .Release.Namespace }} -l "app.kubernetes.io/name={{ include "rustus.name" . }},app.kubernetes.io/instance={{ .Release.Name }}" -o jsonpath="{.items[0].metadata.name}") + export CONTAINER_PORT=$(kubectl get pod --namespace {{ .Release.Namespace }} $POD_NAME -o jsonpath="{.spec.containers[0].ports[0].containerPort}") + echo "Visit http://127.0.0.1:8080 to use your application" + kubectl --namespace {{ .Release.Namespace }} port-forward $POD_NAME 8080:$CONTAINER_PORT +{{- end }} diff --git a/deploy/helm/templates/_helpers.tpl b/deploy/helm/templates/_helpers.tpl new file mode 100644 index 0000000..218dbb7 --- /dev/null +++ b/deploy/helm/templates/_helpers.tpl @@ -0,0 +1,63 @@ +{{/* +Expand the name of the chart. +*/}} +{{- define "rustus.name" -}} +{{- default .Chart.Name .Values.nameOverride | trunc 63 | trimSuffix "-" }} +{{- end }} + +{{/* +Create a default fully qualified app name. +We truncate at 63 chars because some Kubernetes name fields are limited to this (by the DNS naming spec). +If release name contains chart name it will be used as a full name. +*/}} +{{- define "rustus.fullname" -}} +{{- if .Values.fullnameOverride }} +{{- .Values.fullnameOverride | trunc 63 | trimSuffix "-" }} +{{- else }} +{{- $name := default .Chart.Name .Values.nameOverride }} +{{- if contains $name .Release.Name }} +{{- .Release.Name | trunc 63 | trimSuffix "-" }} +{{- else }} +{{- printf "%s-%s" .Release.Name $name | trunc 63 | trimSuffix "-" }} +{{- end }} +{{- end }} +{{- end }} + +{{/* +Create chart name and version as used by the chart label. +*/}} +{{- define "rustus.chart" -}} +{{- printf "%s-%s" .Chart.Name .Chart.Version | replace "+" "_" | trunc 63 | trimSuffix "-" }} +{{- end }} + +{{/* +Common labels +*/}} +{{- define "rustus.labels" -}} +helm.sh/chart: {{ include "rustus.chart" . }} +{{ include "rustus.selectorLabels" . }} +{{- if .Chart.AppVersion }} +app.kubernetes.io/version: {{ .Chart.AppVersion | quote }} +{{- end }} +app.kubernetes.io/managed-by: {{ .Release.Service }} +{{- end }} + +{{/* +Selector labels +*/}} +{{- define "rustus.selectorLabels" -}} +app: {{ include "rustus.name" . }} +app.kubernetes.io/name: {{ include "rustus.name" . }} +app.kubernetes.io/instance: {{ .Release.Name }} +{{- end }} + +{{/* +Create the name of the service account to use +*/}} +{{- define "rustus.serviceAccountName" -}} +{{- if .Values.serviceAccount.create }} +{{- default (include "rustus.fullname" .) .Values.serviceAccount.name }} +{{- else }} +{{- default "default" .Values.serviceAccount.name }} +{{- end }} +{{- end }} diff --git a/deploy/helm/templates/deployment.yaml b/deploy/helm/templates/deployment.yaml new file mode 100644 index 0000000..320d368 --- /dev/null +++ b/deploy/helm/templates/deployment.yaml @@ -0,0 +1,83 @@ +apiVersion: apps/v1 +kind: Deployment +metadata: + name: {{ include "rustus.fullname" . }} + labels: + {{- include "rustus.labels" . | nindent 4 }} +spec: + {{- if not .Values.autoscaling.enabled }} + replicas: {{ .Values.replicaCount }} + {{- end }} + selector: + matchLabels: + {{- include "rustus.selectorLabels" . | nindent 6 }} + template: + metadata: + {{- with .Values.podAnnotations }} + annotations: + {{- toYaml . | nindent 8 }} + {{- end }} + labels: + {{- include "rustus.selectorLabels" . | nindent 8 }} + spec: + {{- with .Values.imagePullSecrets }} + imagePullSecrets: + {{- toYaml . | nindent 8 }} + {{- end }} + serviceAccountName: {{ include "rustus.serviceAccountName" . }} + securityContext: + {{- toYaml .Values.podSecurityContext | nindent 8 }} + containers: + - name: {{ .Chart.Name }} + securityContext: + {{- toYaml .Values.securityContext | nindent 12 }} + image: "{{ .Values.image.repository }}:{{ .Values.image.tag | default .Chart.AppVersion }}" + imagePullPolicy: {{ .Values.image.pullPolicy }} + {{- with .Values.image.command }} + command: + {{- . | toYaml | nindent 12 }} + {{- end }} + ports: + - name: http + containerPort: {{ default 1081 .Values.env.RUSTUS_PORT }} + protocol: TCP + readinessProbe: + httpGet: + path: /health + port: http + {{- with .Values.env }} + env: + {{- range $key, $val := . }} + - name: {{ $key | quote }} + value: {{ $val | quote }} + {{- end }} + {{- end }} + {{- if .Values.persistence.enabled }} + volumeMounts: + - name: data + mountPath: {{ default "/app/data" .Values.env.RUSTUS_DATA_DIR }} + {{- end }} + resources: + {{- toYaml .Values.resources | nindent 12 }} + {{- if .Values.persistence.enabled }} + volumes: + - name: data + persistentVolumeClaim: + {{- if .Values.persistence.existingClaim }} + claimName: {{ .Values.persistence.existingClaim }} + {{- else }} + claimName: {{ printf "rustus-data-%s" (include "rustus.fullname" .) }} + {{- end }} + {{- end }} + {{- with .Values.nodeSelector }} + nodeSelector: + {{- toYaml . | nindent 8 }} + {{- end }} + {{- with .Values.affinity }} + affinity: + {{- toYaml . | nindent 8 }} + {{- end }} + {{- with .Values.tolerations }} + tolerations: + {{- toYaml . | nindent 8 }} + {{- end }} diff --git a/deploy/helm/templates/hpa.yaml b/deploy/helm/templates/hpa.yaml new file mode 100644 index 0000000..13d5fa1 --- /dev/null +++ b/deploy/helm/templates/hpa.yaml @@ -0,0 +1,28 @@ +{{- if .Values.autoscaling.enabled }} +apiVersion: autoscaling/v2beta1 +kind: HorizontalPodAutoscaler +metadata: + name: {{ include "rustus.fullname" . }} + labels: + {{- include "rustus.labels" . | nindent 4 }} +spec: + scaleTargetRef: + apiVersion: apps/v1 + kind: Deployment + name: {{ include "rustus.fullname" . }} + minReplicas: {{ .Values.autoscaling.minReplicas }} + maxReplicas: {{ .Values.autoscaling.maxReplicas }} + metrics: + {{- if .Values.autoscaling.targetCPUUtilizationPercentage }} + - type: Resource + resource: + name: cpu + targetAverageUtilization: {{ .Values.autoscaling.targetCPUUtilizationPercentage }} + {{- end }} + {{- if .Values.autoscaling.targetMemoryUtilizationPercentage }} + - type: Resource + resource: + name: memory + targetAverageUtilization: {{ .Values.autoscaling.targetMemoryUtilizationPercentage }} + {{- end }} +{{- end }} diff --git a/deploy/helm/templates/ingress.yaml b/deploy/helm/templates/ingress.yaml new file mode 100644 index 0000000..9c17955 --- /dev/null +++ b/deploy/helm/templates/ingress.yaml @@ -0,0 +1,61 @@ +{{- if .Values.ingress.enabled -}} +{{- $fullName := include "rustus.fullname" . -}} +{{- $svcPort := .Values.service.port -}} +{{- if and .Values.ingress.className (not (semverCompare ">=1.18-0" .Capabilities.KubeVersion.GitVersion)) }} + {{- if not (hasKey .Values.ingress.annotations "kubernetes.io/ingress.class") }} + {{- $_ := set .Values.ingress.annotations "kubernetes.io/ingress.class" .Values.ingress.className}} + {{- end }} +{{- end }} +{{- if semverCompare ">=1.19-0" .Capabilities.KubeVersion.GitVersion -}} +apiVersion: networking.k8s.io/v1 +{{- else if semverCompare ">=1.14-0" .Capabilities.KubeVersion.GitVersion -}} +apiVersion: networking.k8s.io/v1beta1 +{{- else -}} +apiVersion: extensions/v1beta1 +{{- end }} +kind: Ingress +metadata: + name: {{ $fullName }} + labels: + {{- include "rustus.labels" . | nindent 4 }} + {{- with .Values.ingress.annotations }} + annotations: + {{- toYaml . | nindent 4 }} + {{- end }} +spec: + {{- if and .Values.ingress.className (semverCompare ">=1.18-0" .Capabilities.KubeVersion.GitVersion) }} + ingressClassName: {{ .Values.ingress.className }} + {{- end }} + {{- if .Values.ingress.tls }} + tls: + {{- range .Values.ingress.tls }} + - hosts: + {{- range .hosts }} + - {{ . | quote }} + {{- end }} + secretName: {{ .secretName }} + {{- end }} + {{- end }} + rules: + {{- range .Values.ingress.hosts }} + - host: {{ .host | quote }} + http: + paths: + {{- range .paths }} + - path: {{ .path }} + {{- if and .pathType (semverCompare ">=1.18-0" $.Capabilities.KubeVersion.GitVersion) }} + pathType: {{ .pathType }} + {{- end }} + backend: + {{- if semverCompare ">=1.19-0" $.Capabilities.KubeVersion.GitVersion }} + service: + name: {{ $fullName }} + port: + number: {{ $svcPort }} + {{- else }} + serviceName: {{ $fullName }} + servicePort: {{ $svcPort }} + {{- end }} + {{- end }} + {{- end }} +{{- end }} diff --git a/deploy/helm/templates/pvc.yml b/deploy/helm/templates/pvc.yml new file mode 100644 index 0000000..5836d74 --- /dev/null +++ b/deploy/helm/templates/pvc.yml @@ -0,0 +1,30 @@ +{{- if and (.Values.persistence.enabled) (not .Values.persistence.existingClaim) }} +kind: PersistentVolumeClaim +apiVersion: v1 +metadata: + name: {{ printf "rustus-data-%s" (include "rustus.fullname" .) }} + labels: + {{- include "rustus.selectorLabels" . | nindent 4 }} + {{- if .Values.persistence.annotations }} + annotations: {{- toYaml .Values.persistence.annotations | nindent 4 }} + {{- end }} +spec: + storageClassName: {{ .Values.persistence.storageClass }} + accessModes: + {{- range .Values.persistence.accessModes }} + - {{ . | quote }} + {{- end }} + {{- with .Values.persistence.dataSource }} + dataSource: + {{ . | toYaml | nindent 4 }} + {{- end }} + {{- with .Values.persistence.selector }} + selector: + {{- . | toYaml | nindent 4 }} + {{- end }} + mountOptions: + {{- .Values.persistence.mountOptions | toYaml | nindent 4 }} + resources: + requests: + storage: {{ .Values.persistence.size | quote }} +{{- end }} \ No newline at end of file diff --git a/deploy/helm/templates/service.yaml b/deploy/helm/templates/service.yaml new file mode 100644 index 0000000..3143da2 --- /dev/null +++ b/deploy/helm/templates/service.yaml @@ -0,0 +1,15 @@ +apiVersion: v1 +kind: Service +metadata: + name: {{ include "rustus.fullname" . }} + labels: + {{- include "rustus.labels" . | nindent 4 }} +spec: + type: {{ .Values.service.type }} + ports: + - port: {{ .Values.service.port }} + targetPort: http + protocol: TCP + name: http + selector: + {{- include "rustus.selectorLabels" . | nindent 4 }} diff --git a/deploy/helm/templates/serviceaccount.yaml b/deploy/helm/templates/serviceaccount.yaml new file mode 100644 index 0000000..9118fa4 --- /dev/null +++ b/deploy/helm/templates/serviceaccount.yaml @@ -0,0 +1,12 @@ +{{- if .Values.serviceAccount.create -}} +apiVersion: v1 +kind: ServiceAccount +metadata: + name: {{ include "rustus.serviceAccountName" . }} + labels: + {{- include "rustus.labels" . | nindent 4 }} + {{- with .Values.serviceAccount.annotations }} + annotations: + {{- toYaml . | nindent 4 }} + {{- end }} +{{- end }} diff --git a/deploy/helm/values.yaml b/deploy/helm/values.yaml new file mode 100644 index 0000000..a062c48 --- /dev/null +++ b/deploy/helm/values.yaml @@ -0,0 +1,180 @@ +# Default values for rustus. +# This is a YAML-formatted file. +# Declare variables to be passed into your templates. + +replicaCount: 1 + +image: + repository: s3rius/rustus + pullPolicy: IfNotPresent + # Overrides the image tag whose default is the chart appVersion. + tag: "" + command: [] + # command: + # - rustus + +env: + RUSTUS_PORT: 1081 + RUSTUS_DATA_DIR: /data + RUSTUS_INFO_DIR: /data + RUSTUS_DIR_STRUCTURE: "{year}/{month}/{day}" + +# For redis info storage +# RUSTUS_INFO_STORAGE: redis-info-storage +# RUSTUS_INFO_DB_DSN: redis://:pass@rustus-redis-master/0 + +# For postgresql info storage +# RUSTUS_INFO_STORAGE: db-info-storage +# RUSTUS_INFO_DB_DSN: postgresql://rustus:rustus@rustus-postgresql/rustus + +# For MySQL info storage +# RUSTUS_INFO_STORAGE: db-info-storage +# RUSTUS_INFO_DB_DSN: mysql://rustus:rustus@rustus-mysql/rustus + +persistence: + enabled: false + + # Existing pvc to use + existingClaim: "" + + # Options for creating pvc + accessModes: + - ReadWriteOnce + size: 1Gi + storageClass: local-path + mountOptions: {} + selector: {} + annotations: {} + dataSource: {} + +imagePullSecrets: [] +nameOverride: "" +fullnameOverride: "" + +serviceAccount: + # Specifies whether a service account should be created + create: true + # Annotations to add to the service account + annotations: {} + # The name of the service account to use. + # If not set and create is true, a name is generated using the fullname template + name: "" + +podAnnotations: {} + +podSecurityContext: {} +# fsGroup: 2000 + +securityContext: + {} + # capabilities: + # drop: + # - ALL + # readOnlyRootFilesystem: true +# runAsNonRoot: true +# runAsUser: 1000 + +service: + type: ClusterIP + port: 80 + +ingress: + enabled: false + className: "" + annotations: {} + # kubernetes.io/ingress.class: nginx + # kubernetes.io/tls-acme: "true" + hosts: + - host: rustus.localhost + paths: + - path: / + pathType: Prefix + tls: [] + # - secretName: chart-example-tls + # hosts: + # - chart-example.local + +resources: + {} + # We usually recommend not to specify default resources and to leave this as a conscious + # choice for the user. This also increases chances charts run on environments with little + # resources, such as Minikube. If you do want to specify resources, uncomment the following + # lines, adjust them as necessary, and remove the curly braces after 'resources:'. + # limits: + # cpu: 100m + # memory: 128Mi + # requests: +# cpu: 100m +# memory: 128Mi + +autoscaling: + enabled: false + minReplicas: 1 + maxReplicas: 100 + targetCPUUtilizationPercentage: 80 + # targetMemoryUtilizationPercentage: 80 + +nodeSelector: {} + +tolerations: [] + +affinity: {} + +# Configuration for redis sub-chart +redis: + # After enabling this parameter + # you should set info-storage to redis-info-storage + # and provide valid connection string. + # You can do it using following env variables: + # RUSTUS_INFO_STORAGE: redis-info-storage + # RUSTUS_INFO_DB_DSN: redis://:pass@rustus-redis-master/0 + + enabled: false + + global: + redis: + # ! Override values for production use + password: "pass" + + master: + persistence: + # ! Override values for production use + enabled: false + + service: + type: ClusterIP + +# Configuration for postgresql sub-chart +postgresql: + # After enabling this parameter + # you should set info-storage to db-info-storage + # and provide valid connection string. + # You can do it using following env variables: + # RUSTUS_INFO_STORAGE: db-info-storage + # RUSTUS_INFO_DB_DSN: postgresql://rustus:rustus@rustus-postgresql/rustus + + enabled: false + + global: + postgresql: + auth: + # ! Override values for production use + username: rustus + password: rustus + database: rustus + +mysql: + # After enabling this parameter + # you should set info-storage to db-info-storage + # and provide valid connection string. + # You can do it using following env variables: + # RUSTUS_INFO_STORAGE: db-info-storage + # RUSTUS_INFO_DB_DSN: mysql://rustus:rustus@rustus-mysql/rustus + + enabled: false + + auth: + # ! Override values for production use + database: rustus + username: rustus + password: rustus diff --git a/src/main.rs b/src/main.rs index 16713c6..6fc08e6 100644 --- a/src/main.rs +++ b/src/main.rs @@ -93,6 +93,7 @@ pub fn create_server(state: State) -> Result { } srv.call(req) }) + .route("/health", web::get().to(routes::health_check)) // Default response for unknown requests. // It returns 404 status_code. .default_service(web::route().to(routes::not_found)) diff --git a/src/routes.rs b/src/routes.rs index 9dca6f6..6a07692 100644 --- a/src/routes.rs +++ b/src/routes.rs @@ -10,3 +10,10 @@ use crate::errors::{RustusError, RustusResult}; pub async fn not_found() -> RustusResult { Err(RustusError::FileNotFound) } + +/// Checks that application is accepting connections correctly. +#[allow(clippy::unused_async)] +#[cfg_attr(coverage, no_coverage)] +pub async fn health_check() -> HttpResponse { + HttpResponse::Ok().finish() +} From cc0a4684a1fadb987b38b49eb552793c3f7209b9 Mon Sep 17 00:00:00 2001 From: Pavel Kirilin Date: Sat, 26 Mar 2022 14:13:50 +0400 Subject: [PATCH 4/4] Changed concat logic in file storage. (#63) Signed-off-by: Pavel Kirilin --- src/storages/file_storage.rs | 11 ++++++++--- 1 file changed, 8 insertions(+), 3 deletions(-) diff --git a/src/storages/file_storage.rs b/src/storages/file_storage.rs index 86bf09d..29c431b 100644 --- a/src/storages/file_storage.rs +++ b/src/storages/file_storage.rs @@ -144,8 +144,9 @@ impl Storage for FileStorage { parts_info: Vec, ) -> RustusResult<()> { let info = file_info.clone(); + let force_fsync = self.force_fsync; tokio::task::spawn_blocking(move || { - let mut file = OpenOptions::new() + let file = OpenOptions::new() .write(true) .append(true) .create(true) @@ -154,6 +155,7 @@ impl Storage for FileStorage { error!("{:?}", err); RustusError::UnableToWrite(err.to_string()) })?; + let mut writer = BufWriter::new(file); for part in parts_info { if part.path.is_none() { return Err(RustusError::FileNotFound); @@ -162,9 +164,12 @@ impl Storage for FileStorage { .read(true) .open(part.path.as_ref().unwrap())?; let mut reader = BufReader::new(part_file); - copy(&mut reader, &mut file)?; + copy(&mut reader, &mut writer)?; + } + writer.flush()?; + if force_fsync { + writer.get_ref().sync_data()?; } - file.sync_data()?; Ok(()) }) .await?