From cc6472959970e763fcfc8c6aaa75ed5f26bcd043 Mon Sep 17 00:00:00 2001 From: Zakaria Date: Sun, 25 Oct 2026 10:11:34 -0400 Subject: [PATCH] docs: rebrand the README as TheCloud's AWS runtime Use TheCloud's logo and name, describe the repository as the fork of Floci behind TheCloud with its own changes, and replace instructions for upstream's published artifacts (Floci CLI, Docker Hub tags and release train) with building and running this repository. Drop the upstream badges, comparison table, community, sponsor, star-history and contributor sections, keep literal identifiers (FLOCI_* settings, upstream package names), and credit Floci under License. --- README.md | 342 ++++++++-------------------------- docs/assets/thecloud-logo.png | Bin 0 -> 92824 bytes 2 files changed, 77 insertions(+), 265 deletions(-) create mode 100644 docs/assets/thecloud-logo.png diff --git a/README.md b/README.md index b93e969..a560f65 100644 --- a/README.md +++ b/README.md @@ -1,21 +1,17 @@

- Floci - Floci + TheCloud

+

TheCloud AWS runtime

+

Any Cloud. Locally.
- Light, fluffy, and always free
+ The local AWS emulator behind TheCloud.
No account. No auth token. No feature gates. Just docker compose up.

- Latest Release - Build Status - Docker Pulls - Docker Image Size License: MIT - GitHub Stars

@@ -24,41 +20,43 @@ Services · SDKs · Testcontainers · - Migration · - Docs + Migration

--- -## What is Floci? +## What is this? -Floci is a free, open-source local AWS emulator for development, testing, and CI. +TheCloud's AWS runtime is a local AWS emulator for development, testing, and CI. It is the runtime behind [TheCloud](https://gitea.zacksolutions.dev/Zakaria/floci-ui), a self-hosted cloud console. -It gives you AWS-shaped services on your machine without requiring a cloud account, an auth token, or paid feature gates. Point your AWS SDK, CLI, Terraform, CDK, OpenTofu, or test suite at `http://localhost:4566` and keep your existing workflows. +It gives you AWS-shaped services on your machine without a cloud account, an auth token, or paid feature gates. Point your AWS SDK, CLI, Terraform, CDK, OpenTofu, or test suite at `http://localhost:4566` and keep your existing workflows. -Already using LocalStack? Floci is a drop-in replacement: swap the image and keep going. See [Migrating from LocalStack](#migrating-from-localstack). +It is a fork of the open-source [Floci](https://github.com/floci-io/floci) emulator. Upstream fixes are brought in by cherry-picking from Floci's `main`, alongside TheCloud's own changes, for example: -Floci is the AWS member of the [Floci](https://github.com/floci-io) emulator family, named after [floccus](https://en.wikipedia.org/wiki/Cirrocumulus_floccus), the cloud formation that looks like popcorn. +- Cognito hosted login with identity-provider buttons, and `PreventUserExistenceErrors` honoured on app clients. +- CloudFront distributions served at `.cloudfront.localhost`. +- SES delivering real email through an SMTP relay that signs in with a password (Gmail app passwords work). +- HTTP API JWT authorizers that verify tokens from this runtime's own Cognito pools. -| Emulator | Cloud | Port | -|---|---|:---:| -| **[floci](https://github.com/floci-io/floci)** | **AWS** | **4566** | -| [floci-az](https://github.com/floci-io/floci-az) | Azure | 4577 | -| [floci-gcp](https://github.com/floci-io/floci-gcp) | GCP | 4588 | -| [floci-oci](https://github.com/floci-io/floci-oci) | OCI | 4599 | +Companion runtimes for other clouds come from upstream: [floci-az](https://github.com/floci-io/floci-az) for Azure on port 4577 and [floci-gcp](https://github.com/floci-io/floci-gcp) for GCP on port 4588. ## Quick Start -The fastest way to run Floci is with the official [CLI](https://github.com/floci-io/floci-cli) +Build and start the runtime from this repository: ```bash -floci start +git clone https://gitea.zacksolutions.dev/Zakaria/FlociClone.git +cd FlociClone +docker compose up -d ``` Export the AWS environment variables: ```bash -eval $(floci env) +export AWS_ENDPOINT_URL=http://localhost:4566 +export AWS_DEFAULT_REGION=us-east-1 +export AWS_ACCESS_KEY_ID=test +export AWS_SECRET_ACCESS_KEY=test ``` Use your existing AWS tools normally: @@ -75,121 +73,41 @@ aws dynamodb create-table \ aws dynamodb list-tables ``` -### Watch it run - -This short demo shows the CLI flow: start Floci, export the local AWS environment, run standard AWS CLI commands, and stop the emulator. - -https://github.com/user-attachments/assets/b55714dc-ef36-40ae-a734-cd2cadc288a8 - All AWS services are available at `http://localhost:4566`. Any region works. Credentials can be any non-empty values unless you explicitly enable stricter service-specific auth checks.
-Prefer Docker Compose? +Prefer docker run, or dev mode? -Create a `compose.yaml` file: - -```yaml -services: - floci: - image: floci/floci:latest - ports: - - "4566:4566" -``` - -Start Floci: +Build the image, then run it with the Docker socket so container-backed services work: ```bash -docker compose up +docker build -f docker/Dockerfile -t floci-floci:latest . +docker run -d --name floci -p 4566:4566 \ + -v /var/run/docker.sock:/var/run/docker.sock \ + floci-floci:latest ``` -Then configure your AWS environment manually: +Or run it in Quarkus dev mode, which needs JDK 25: ```bash -export AWS_ENDPOINT_URL=http://localhost:4566 -export AWS_DEFAULT_REGION=us-east-1 -export AWS_ACCESS_KEY_ID=test -export AWS_SECRET_ACCESS_KEY=test +./mvnw quarkus:dev ```
-
-Using the old hectorvent/floci image? - -Update your image name: - -```yaml -# Before -image: hectorvent/floci:latest - -# After -image: floci/floci:latest -``` - -The old `hectorvent/floci` repository no longer receives updates. - -
- ## Web Console -Floci ships a browser console for inspecting the resources in your local emulator. +[TheCloud](https://gitea.zacksolutions.dev/Zakaria/floci-ui) is the console for this runtime. It runs as its own app on port 4500, talks to the runtime at `FLOCI_ENDPOINT`, and covers the services listed in its README. -**Open it at:** `http://localhost:4566/_floci/ui` - -Nothing runs at boot. The first request pulls the console image, starts it as a sidecar container on Floci's Docker network, hands it Floci's own reachable address plus the standard AWS environment, polls its health endpoint, and redirects the browser once it reports it can reach Floci. The sidecar's port is bound by Docker, so it needs no `ports:` entry of your own, and its logs are streamed into CloudWatch Logs under `/floci/ui`. - -Starting a container needs the Docker socket: - -```yaml -services: - floci: - image: floci/floci:latest - ports: - - "4566:4566" - volumes: - - /var/run/docker.sock:/var/run/docker.sock -``` +The runtime can also start a console for you as a sidecar container on first visit to `http://localhost:4566/_floci/ui`. That needs the Docker socket, and the image is set with `FLOCI_SERVICES_UI_IMAGE`; point it at your TheCloud build to use it. | Variable | Default | Description | |---|---|---| | `FLOCI_SERVICES_UI_ENABLED` | `true` | Enable the console sidecar | -| `FLOCI_SERVICES_UI_IMAGE` | `floci/floci-ui:latest` | Console image to run | +| `FLOCI_SERVICES_UI_IMAGE` | `floci/floci-ui:latest` | Console image to run, for example `floci/floci-ui:local` for a local TheCloud build | | `FLOCI_SERVICES_UI_CONTAINER_NAME` | `floci-ui` | Name of the sidecar container | | `FLOCI_SERVICES_UI_PORT` | `4500` | Host port the console is published on | -| `FLOCI_SERVICES_UI_KEEP_RUNNING_ON_SHUTDOWN` | `false` | Leave the sidecar running when Floci stops | - -### Running a different console - -The console is not fixed to the one Floci ships. Any console implementing the [Floci console contract](https://floci.io/floci/ui/console-contract/) runs with nothing but an image name: listen on the port in `PORT`, serve `GET /api/health`, talk to Floci at `AWS_ENDPOINT_URL`. - -```yaml -environment: - FLOCI_SERVICES_UI_IMAGE: acme/my-console:1.0 -``` - -A console that differs from the contract's defaults says so in its own `io.floci.console.*` image labels, so its operators do not have to. [StackPort](https://github.com/DaviReisVieira/stackport), for example, listens on 8080 rather than 4500; on an image that predates the labels, say it by hand: - -```yaml -environment: - FLOCI_SERVICES_UI_IMAGE: davireis/stackport:latest - FLOCI_SERVICES_UI_CONTAINER_NAME: floci-stackport - FLOCI_SERVICES_UI_PORT: "8080" - FLOCI_SERVICES_UI_INTERNAL_PORT: "8080" -``` - -[Floci Dash](https://github.com/ofsazib/floci-dash) is another. It honours `PORT`, so only the two things it does differ on need naming: - -```yaml -environment: - FLOCI_SERVICES_UI_IMAGE: ghcr.io/ofsazib/floci-dash:latest - FLOCI_SERVICES_UI_CONTAINER_NAME: floci-dash - FLOCI_SERVICES_UI_ENDPOINT_ENV: FLOCI_URL - FLOCI_SERVICES_UI_STATUS_PATH: /api/healthz -``` - -The endpoint itself is never configured by hand: Floci resolves its own reachable address at start time and injects it as `AWS_ENDPOINT_URL`. - -Full reference: [Web Console](https://floci.io/floci/ui/) and [Console Contract v1](https://floci.io/floci/ui/console-contract/). +| `FLOCI_SERVICES_UI_KEEP_RUNNING_ON_SHUTDOWN` | `false` | Leave the sidecar running when the runtime stops | ## Features @@ -212,14 +130,7 @@ Lambda, RDS, Neptune, ElastiCache, MSK, MSK Connect, ECS, EC2, EKS, OpenSearch, Point standard AWS clients at `http://localhost:4566`. Existing credentials, regions, SDKs, CLI commands, and IaC workflows stay familiar. -Terraform can provision AWS-shaped resources locally through Floci using the standard HashiCorp AWS provider. See the [Terraform with Floci guide](docs/getting-started/terraform.md) for provider configuration, resource examples, and optional emulated S3 state. - - - -
-Fast enough for CI - -The native image starts in milliseconds and keeps idle memory low, making it practical for local development and test pipelines. +Terraform can provision AWS-shaped resources locally through this runtime using the standard HashiCorp AWS provider. See the [Terraform guide](docs/getting-started/terraform.md) for provider configuration, resource examples, and optional emulated S3 state.
@@ -230,36 +141,13 @@ Choose from in-memory, persistent, hybrid, and write-ahead log storage depending -## Why Floci? - -LocalStack's community edition [sunset in March 2026](https://blog.localstack.cloud/the-road-ahead-for-localstack/), requiring auth tokens and freezing security updates. Floci is the no-strings-attached alternative. - -| Capability | Floci | LocalStack Community | -|---|:---:|:---:| -| Auth token required | No | Yes | -| Security updates | Yes | Frozen | -| Startup time | ~24 ms | ~3.3 s | -| Idle memory | ~13 MiB | ~143 MiB | -| Docker image size | ~90 MB | ~1.0 GB | -| License | MIT | Restricted | -| API Gateway v2 / HTTP API | Yes | No | -| Cognito | Yes | No | -| RDS, ElastiCache, MSK, MSK Connect | Real Docker | No | -| Neptune (graph DB + Gremlin WebSocket) | Real Docker | No | -| DocumentDB (MongoDB-compatible) | Real Docker | No | -| ECS, EC2, EKS | Real Docker | No | -| CodeBuild | Real Docker execution | No | -| Native binary | ~40 MB | No | - -**Broad AWS coverage. Free forever.** See the [Services Overview](https://floci.io/floci/services/) for the full list of emulated services. - ## Architecture Overview ```mermaid flowchart LR Client["AWS SDK / CLI"] - subgraph Floci ["Floci, port 4566"] + subgraph Runtime ["TheCloud AWS runtime, port 4566"] Router["HTTP Router\nJAX-RS / Vert.x"] subgraph Stateless ["Stateless Services"] @@ -288,7 +176,7 @@ flowchart LR ## Supported Services -Floci supports local emulation for application services, data services, eventing, identity, infrastructure, billing, and container-backed workloads. +The runtime emulates application services, data services, eventing, identity, infrastructure, billing, and container-backed workloads. | Category | Services | |---|---| @@ -303,7 +191,7 @@ Floci supports local emulation for application services, data services, eventing | Cost and billing | AWS Budgets, Pricing, Cost Explorer, Cost and Usage Reports, BCM Pricing Calculator, BCM Data Exports | | Resilience, backup, and config | AWS FIS, AWS Backup, AWS Config, AppConfig, AppConfigData, CloudFormation, Cloud Control API | -For operation-level compatibility, see the [Services Overview](https://floci.io/floci/services/). +For operation-level detail, see upstream Floci's [Services Overview](https://floci.io/floci/services/); it can list upstream work this fork has not picked up yet.
Detailed service notes @@ -378,7 +266,7 @@ For operation-level compatibility, see the [Services Overview](https://floci.io/ | AWS Backup | In-process | Vaults, backup plans, selections, simulated job lifecycle, recovery points | | AWS FIS | In-process | All 26 management APIs for templates, experiments, target accounts, action and target discovery, safety lever, tagging, and pagination; experiment execution is a safe control-plane simulation and does not inject faults into other services | | AWS Config | In-process | Config rules, evaluation-driven compliance (PutEvaluations, compliance details and summaries), configuration recorders, delivery channels, retention configuration, conformance packs, tagging | -| Organizations | In-process | Organizations, roots, nested OUs, member accounts, all policy types with `FullAWSAccess` and effective-policy inheritance, trusted service access, delegated administrators, resource policy, and the full invitation/handshake flow; created accounts are usable Floci accounts and member accounts can read the organization they belong to | +| Organizations | In-process | Organizations, roots, nested OUs, member accounts, all policy types with `FullAWSAccess` and effective-policy inheritance, trusted service access, delegated administrators, resource policy, and the full invitation/handshake flow; created accounts are usable accounts in the runtime and member accounts can read the organization they belong to | | CloudTrail | In-process | Trails, event selectors (S3 data events with bucket/prefix matching), `StartLogging`/`StopLogging`, scheduled gzipped log file emission to the destination bucket at AWS-shaped key paths, IAM-deny path emits `AccessDenied` records | | CloudFront | In-process | Distributions, origins, cache behaviors, invalidations, tagging | | WAF v2 | In-process | Web ACLs, IP sets, regex pattern sets, rule groups, logging configs, resource associations, tagging (REGIONAL and CLOUDFRONT scopes) | @@ -389,7 +277,7 @@ For operation-level compatibility, see the [Services Overview](https://floci.io/ | Textract | In-process stub | API-compatible stubs, dummy block data, async job simulation | | Transcribe | In-process stub | Transcription jobs and custom vocabularies; jobs complete immediately, no real audio processing | | Pricing | In-process with static snapshot | Product discovery, attributes, price list files, pagination | -| Cost Explorer | In-process | Cost synthesized from Floci resource state and pricing snapshots | +| Cost Explorer | In-process | Cost synthesized from the runtime's resource state and pricing snapshots | | Cost and Usage Reports | In-process with floci-duck sidecar | CUR 2.0 and FOCUS 1.2 columns, account-scoped storage, Parquet emission | | BCM Pricing Calculator | In-process | Workload estimate create, usage pricing, read, and delete lifecycle | | BCM Data Exports | In-process | Export lifecycle, executions, update and delete operations | @@ -398,7 +286,7 @@ For operation-level compatibility, see the [Services Overview](https://floci.io/ ## Real Docker Integration -Floci uses real Docker containers when in-process emulation would reduce fidelity. This applies to stateful databases, connection-heavy protocols, runtimes, and build systems. +The runtime uses real Docker containers when in-process emulation would reduce fidelity. This applies to stateful databases, connection-heavy protocols, runtimes, and build systems. | Service | Default image | What is real | |---|---|---| @@ -416,12 +304,12 @@ Floci uses real Docker containers when in-process emulation would reduce fidelit | EC2 | AMI-mapped Linux images | Linux containers, SSH key injection, UserData, IMDS, IAM credentials | | ECS | User-specified task image | Container lifecycle, start, stop, health checks | | EKS | `rancher/k3s:latest` | Kubernetes API server via k3s | -| MWAA | `apache/airflow:-python3.12` + `postgres:16-alpine` | Real Apache Airflow (LocalExecutor: scheduler + webserver) with its own Postgres metadata DB; webserver/CLI reachable via Floci's proxy | +| MWAA | `apache/airflow:-python3.12` + `postgres:16-alpine` | Real Apache Airflow (LocalExecutor: scheduler + webserver) with its own Postgres metadata DB; webserver/CLI reachable via the runtime's proxy | | CodeBuild | User-specified environment image | Buildspec execution, log streaming, S3 artifact upload | | OpenSearch | `opensearchproject/opensearch:2` | Full OpenSearch engine with REST API | | ECR | `registry:2` | OCI-compatible registry for docker push and docker pull | -| Verified Permissions | `floci/floci-sidecar-cedar:1.1.0` | Cedar 4 policy parsing, schema validation and authorization decisions, via a [Floci sidecar](https://github.com/floci-io/floci-sidecars) | -| AppSync | `floci/floci-sidecar-graphql:0.2.0` | graphql-java schema validation, query planning and execution, via a [Floci sidecar](https://github.com/floci-io/floci-sidecars) | +| Verified Permissions | `floci/floci-sidecar-cedar:1.1.0` | Cedar 4 policy parsing, schema validation and authorization decisions, via an upstream [Floci sidecar](https://github.com/floci-io/floci-sidecars) | +| AppSync | `floci/floci-sidecar-graphql:0.2.0` | graphql-java schema validation, query planning and execution, via an upstream [Floci sidecar](https://github.com/floci-io/floci-sidecars) | Docker-backed services require the Docker socket: @@ -430,7 +318,7 @@ docker run -d --name floci \ -p 4566:4566 \ -v /var/run/docker.sock:/var/run/docker.sock \ -u root \ - floci/floci:latest + floci-floci:latest ``` ### Overriding default images @@ -454,7 +342,7 @@ docker run -d --name floci \ ## Persistence and Storage Modes -Floci can trade speed for durability depending on the workflow. Configure the default mode with `FLOCI_STORAGE_MODE`, or override storage per service. +The runtime can trade speed for durability depending on the workflow. Configure the default mode with `FLOCI_STORAGE_MODE`, or override storage per service. | Mode | Behavior | Best for | Durability | |---|---|---|:---:| @@ -465,22 +353,22 @@ Floci can trade speed for durability depending on the workflow. Configure the de Use `memory` for fast test runs. Use `hybrid` when you want state preserved across container restarts without much overhead. -For more detail, see the [Storage Configuration documentation](https://floci.io/floci/configuration/storage/). +For more detail, see upstream Floci's [Storage Configuration documentation](https://floci.io/floci/configuration/storage/). ## Multi-Account Isolation -Floci supports per-account resource isolation with no extra setup. If `AWS_ACCESS_KEY_ID` is exactly 12 digits, Floci uses it as the account ID. Resources created by one account are invisible to another. +The runtime supports per-account resource isolation with no extra setup. If `AWS_ACCESS_KEY_ID` is exactly 12 digits, it is used as the account ID. Resources created by one account are invisible to another. ```bash AWS_ACCESS_KEY_ID=111111111111 aws sqs create-queue --queue-name orders AWS_ACCESS_KEY_ID=222222222222 aws sqs create-queue --queue-name orders ``` -Any other key format, such as `test` or `AKIA...`, causes Floci to fall back to `FLOCI_DEFAULT_ACCOUNT_ID`, which defaults to `000000000000`. +Any other key format, such as `test` or `AKIA...`, falls back to `FLOCI_DEFAULT_ACCOUNT_ID`, which defaults to `000000000000`. STS temporary credentials are routed too: credentials from `AssumeRole` resolve to the assumed role's account, so the cross-account assume-role-then-provision pattern works locally. Resolution precedence is 12-digit AKID → temporary-session lookup → `FLOCI_DEFAULT_ACCOUNT_ID`. -See the [Multi-Account Isolation docs](https://floci.io/floci/configuration/multi-account/). +See upstream Floci's [Multi-Account Isolation docs](https://floci.io/floci/configuration/multi-account/). ## SDK Integration @@ -526,7 +414,7 @@ client = boto3.client( client.put_parameter( Name="/demo/app/message", - Value="hello from floci", + Value="hello from TheCloud", Type="String", Overwrite=True, ) @@ -552,7 +440,7 @@ const client = new SQSClient({ await client.send( new SendMessageCommand({ QueueUrl: "http://localhost:4566/000000000000/demo-queue", - MessageBody: "hello from floci", + MessageBody: "hello from TheCloud", }), ); ``` @@ -613,7 +501,7 @@ use aws_sdk_secretsmanager::Client; async fn main() -> Result<(), Box> { let config = aws_config::defaults(aws_config::BehaviorVersion::latest()) .region(Region::new("us-east-1")) - .credentials_provider(Credentials::new("test", "test", None, None, "floci")) + .credentials_provider(Credentials::new("test", "test", None, None, "thecloud")) .endpoint_url("http://localhost:4566") .load() .await; @@ -623,7 +511,7 @@ async fn main() -> Result<(), Box> { client .create_secret() .name("demo/secret") - .secret_string("hello from floci") + .secret_string("hello from TheCloud") .send() .await?; @@ -649,7 +537,7 @@ aws --endpoint-url http://localhost:4566 s3 ls ## Testcontainers -Floci has Testcontainers modules for starting isolated Floci instances directly from tests. This avoids shared state, manual daemon setup, and port conflicts. +Upstream Floci publishes Testcontainers modules for starting isolated instances directly from tests. This avoids shared state, manual daemon setup, and port conflicts. They start upstream's `floci/floci` image by default, so they test against upstream Floci rather than this fork unless you give them your own image. For Testcontainers 1.x, use the versions as indicated in the table below. @@ -767,7 +655,7 @@ def test_s3_create_bucket(): ## Compatibility Testing -The [`compatibility-tests`](./compatibility-tests/) directory validates Floci across SDKs and tooling workflows. +The [`compatibility-tests`](./compatibility-tests/) directory validates the runtime across SDKs and tooling workflows. | Module | Language / Tool | SDK / Client | Tests | |---|---|---|---:| @@ -784,22 +672,19 @@ The [`compatibility-tests`](./compatibility-tests/) directory validates Floci ac ## Migrating from LocalStack -Floci is a drop-in replacement for LocalStack Community. The port, credentials, SDK configuration, and CLI endpoint pattern work the same way. Swap the image and keep going. +The runtime is a drop-in replacement for LocalStack Community. The port, credentials, SDK configuration, and CLI endpoint pattern work the same way. Swap the image and keep going. ```yaml # Before image: localstack/localstack -# After, standard image -image: floci/floci:latest - -# After, if init scripts need AWS CLI or boto3 -image: floci/floci:latest-compat +# After, your local build of this repository +image: floci-floci:latest ``` LocalStack environment variables are translated automatically: -| LocalStack | Floci equivalent | +| LocalStack | Equivalent | |---|---| | `LOCALSTACK_HOST` | `FLOCI_HOSTNAME` | | `PERSISTENCE=1` | `FLOCI_STORAGE_MODE=persistent` | @@ -809,43 +694,23 @@ LocalStack environment variables are translated automatically: Init scripts mounted under `/etc/localstack/init/` run unchanged. The `/_localstack/init` and `/_localstack/health` endpoints are still served. Once the emulator is up, the log also ends with a LocalStack-style `Ready.` line, so tooling that watches the log for it, such as the default wait strategy of Testcontainers' `LocalStackContainer`, works unchanged. Set `LOCALSTACK_PARITY=false` to opt out of automatic translation. -See the [full migration guide](https://floci.io/floci/getting-started/migrate-from-localstack/). +See upstream Floci's [full migration guide](https://floci.io/floci/getting-started/migrate-from-localstack/). -## Image Tags +## Building and Updating -Every tag combines a variant and a channel. +The image is built from this repository; nothing is published to Docker Hub: -| Channel | Standard | Baseline (ARM64 only) | Compat with AWS CLI and boto3 | -|---|---|---|---| -| Release, floating | `latest` | `latest-baseline` | `latest-compat` | -| Release, pinned | `x.y.z` | `x.y.z-baseline` | `x.y.z-compat` | -| Nightly, floating | `nightly` | — | `nightly-compat` | -| Nightly, dated | `nightly-mmddyyyy` | — | `nightly-mmddyyyy-compat` | - -Use `latest` for stable releases, a pinned version for reproducible builds, and `nightly` to track `main`. - -```yaml -# Recommended -image: floci/floci:latest - -# Includes AWS CLI and boto3 -image: floci/floci:latest-compat - -# ARM64 baseline for Raspberry Pi 4 / pre-LSE cores -image: floci/floci:latest-baseline - -# Pinned release -image: floci/floci:x.y.z - -# Track main -image: floci/floci:nightly +```bash +docker build -f docker/Dockerfile -t floci-floci:latest . ``` -### Release train +Tests run with Maven and JDK 25: -Stable releases ship on the **1st and 3rd Tuesday of each month**. Between trains, `floci/floci:nightly` tracks `main`. Every merged fix is available the next day, and dated `nightly-mmddyyyy` tags let you pin a specific night's build. +```bash +./mvnw test +``` -Versions are derived from Conventional Commits by [semantic-release](https://github.com/semantic-release/semantic-release); `CHANGELOG.md` is generated, never hand-edited. Releases are cut from `main` only: there are no maintenance branches. +Upstream fixes come in by cherry-picking commits from Floci's `main` onto a branch, which then goes through review like any other change. ## Configuration @@ -853,26 +718,26 @@ All settings are overridable through environment variables with the `FLOCI_` pre | Variable | Default | Description | |---|---|---| -| `FLOCI_PORT` | `4566` | Port exposed by the Floci API | +| `FLOCI_PORT` | `4566` | Port the runtime's API listens on | | `FLOCI_DEFAULT_REGION` | `us-east-1` | Default AWS region | | `FLOCI_DEFAULT_ACCOUNT_ID` | `000000000000` | Default AWS account ID | -| `FLOCI_BASE_URL` | `http://localhost:4566` | Base URL used when Floci returns service URLs | -| `FLOCI_HOSTNAME` | Unset | Hostname used in returned URLs when Floci runs inside Docker Compose | +| `FLOCI_BASE_URL` | `http://localhost:4566` | Base URL used in service URLs the runtime returns | +| `FLOCI_HOSTNAME` | Unset | Hostname used in returned URLs when the runtime runs inside Docker Compose | | `FLOCI_STORAGE_MODE` | `memory` | Storage mode: `memory`, `persistent`, `hybrid`, or `wal` | | `FLOCI_STORAGE_PERSISTENT_PATH` | `./data` | Directory used for persisted state | | `FLOCI_SERVICES_LAMBDA_ECR_BASE_URI` | `public.ecr.aws` | ECR base URI used when pulling Lambda runtime images (legacy name `FLOCI_ECR_BASE_URI` still works) | | `FLOCI_SERVICES_S3_ENFORCE_AUTH` | `false` | Enforce S3 public/private read access and reject unknown signed S3 access keys | -Full reference: [configuration docs](https://floci.io/floci/configuration/advanced/application-yml) +Full reference: [`src/main/resources/application.yml`](src/main/resources/application.yml), and upstream Floci's [configuration docs](https://floci.io/floci/configuration/advanced/application-yml). ### Multi-container Docker Compose -When your application runs in a different container, set `FLOCI_HOSTNAME` to the Floci service name so returned URLs, such as SQS `QueueUrl` values, resolve correctly. +When your application runs in a different container, set `FLOCI_HOSTNAME` to the runtime's service name so returned URLs, such as SQS `QueueUrl` values, resolve correctly. ```yaml services: floci: - image: floci/floci:latest + image: floci-floci:latest ports: - "4566:4566" environment: @@ -887,59 +752,6 @@ services: Without this, services may return URLs using `localhost`, which points to the wrong container from the application container. -## Community - -Join the Floci community on [Slack](https://join.slack.com/t/floci/shared_invite/zt-3tjn02s3q-A00kEjJ1cZxsg_imTfy6Cw) or [GitHub Discussions](https://github.com/orgs/floci-io/discussions). Feature ideas, compatibility questions, design tradeoffs, and rough proposals are welcome. - -## Sponsors - -Floci is independent open source, funded by the people and companies who use it. -Sponsorship buys gratitude and nothing else: every emulated service is free for -everyone, forever, and no sponsor gets features, priority, or roadmap influence -that the rest of the Flock does not. - -### 🥇 Gold - -Large logo with top placement in the emulator READMEs and on floci.io, plus a -mention in release notes. - -[IceGuard](https://github.com/iceguard) · [Softmax](https://softmax.com/) - -### 🥈 Silver - -Logo in the emulator READMEs and on floci.io, plus a mention in release notes. - -*Your logo here. [Become a sponsor](https://github.com/sponsors/floci-io).* - -### 🥉 Community - -Name in the emulator READMEs, a sponsor badge on GitHub, and our sincere thanks. - -[AutoScout24](https://www.autoscout24.com) · [Nexxion AI](https://nexxion.ai/) - -Every sponsor, including the Friends of the Flock who support Floci outside these -tiers, is listed in [THANKS.md](https://github.com/floci-io/.github/blob/main/THANKS.md). - -**[Sponsor Floci](https://github.com/sponsors/floci-io)** - -## Star History - -

- - - - - Star History Chart - - -

- -## Contributors - - - - - ## License -MIT. Use it however you want. +MIT. TheCloud's AWS runtime is a fork of [Floci](https://github.com/floci-io/floci); thanks to the Floci contributors and sponsors whose work it builds on. diff --git a/docs/assets/thecloud-logo.png b/docs/assets/thecloud-logo.png new file mode 100644 index 0000000000000000000000000000000000000000..f6eb4ec3995a28b37beb9de7bfa0b7731f09961b GIT binary patch literal 92824 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
Wb@_On0V#3xy zw>7WC=rTtS4w+}Yl=x8+COq{Q8xwQyZ`X6Z!U-LrOcJ-?j~3VW-{(38QyBWJMUCWw z(H0~W#WiuV#j>{pr+DI0AE^W#&={1gJi&@=yGZk(`g|Kms7e2E`)pUKmsRa88nc{V z$e72SmoL(sz${I6;Z&=|zp+fTSNu2nj(!zXyy%=^5_Ono&KAUPE!Q7$VQ zWLreuQm+a>ogB8%bz&G2frlZx^n7Y@dL5pu3DIGEzUD;zMlU$M3M#bGINr+NBv-T< z1fl0g%usP3?I#&e54oSVytUHmyqKDJ2F+@*r=vW(<^hE7;KDane!W?Iqnr0P@-EeQ zyGEO99q|z;bE0Sh>-AZ#AxaA3%_5o2$*PEvM5z#Iixy15ca$g-CZOnRTbY2S+zT*e zm!@Vkl-8eQ49#wiX|YtaB<%>b9kbY(>T~djlVhJ<4%jt3)g%XI*J^mwHVndX%%GPL zn6HWqzFHnX6%_YuHy~n@GrbS&CXCwaZ7W~vH~q)l)yY@@7IAG7SKP8gz*TYl_Hef0 zy9FZY3b-5g3_NEO&Hag3`M~3|pAbH;?y-5$y4ku~NCl6K!`CG7=ce97?RZX6oF73Q z854CBRJQ%p&X170+aX!`gBnw!6{IwD7bR=+y4q_JMw^rfNH43n`pF1EkANv2`8VG1 z7@28NS=hkWU4g%7*jzVfh0z%HA#wFrV8tB%vK6 z9ebj#pbbF-wLUwvkafUeYX}Vth>q;^OC~SI)fEkD-*H@j!q z+bl*qN%nXdwJ=E%p@?|c8$VI}qg&U5^Uo7xlJ3zLfT{DLfVhD;D%Qt1&Q`GbUn6r* zL9cT~omlLGn3}z@4C`EMMYYJwrbiF`L?gQ&;OFqWPA@O|tpI&4M^?uPW^>0O+nH&V zTi%0`#@U76Vt;t#AQ0+UB&!Q~-)9Z|&&{tMVL8nfg+Z*F@!UIoIWxf&*_W zqLP4cp-=<;#zxHs2-PHkyFD?i3!nXm*`Y0SjVmTPBniu+nJQ>x02lJp_I0LANsUjo z^c^$HR(Pi7!c?*Polu0{gwF+|MxpVlsbX$DzV6Nhi5GPc z@;%PqWuRkmY?sKDwB^DO$-4mtEnYH_dAWV{gRHbRbyN)M_(XBXVozbv#>e@@R|S@= zD;D0uzE7WSR>|Illjx-Yl1=?o*2w|B!orLU>t`<&Z+rQOnsLB;A6UDdQ$SRKq&(KK z#t*_M)J(-PjLhx16FUC=iVTxKF2!$^TY~)GKx89({QOncG#JParPJnk$(D85W1C3C z?HCg5?ic7^R6e{u4}BvU;ULPu+A`ixgI}o_a>SCr<{K@8Y!HF&W`(lvpmi_k5X~`&%Ce z3}Q)#a@04l!3DFwi2Og7t8Mm^Az1(F_VeX8C%11wurTPtQloY7(WJSaJA2?BmVUpI zi!^wr9%{k#H(2s#|uCEv0)9 zC^=NHr|UXarE_gP3=@UowdxtjSw&P(kj<7Shs+NaW($w!iNDa;B$k%h8fJAi_nU&j zMlt3F-*`+u7y8)K_k{Ma*YF6#n~c!GrBZ!2JF<7kUdMIWRS+IMEosC%3m(t(X5p(y z3bWn4h({DRayg!vY(0krTjs$1QV^snBq0>C zK*|^0H}a9!zZNh;)EXfoR4{G@<@;Y2S2)C4ogjNIyinUs!pr0tt{RQ8Z)w6UBvIfk|3Gw zPrG!<*9NNWi&)a9jgEUksofo+y_AzQG_5;=V5i2+v{;!zT30$Z!$dlN52;0RAob;9 zGnw5YMPCKOx`ayK&AJCse0GP!dT3^axw*mX~Uxi~sUL{E-=L zNd||M>CNUHxMYHayBjr9vEO1*8b%%Qe2M;*$RNPC{`%RY)>C&D^S9ZRJDu z6!^G%=Z&qeJa3bdCeXV%6*Fqq^B4e!u?R(H+|4RHU#{0v{{+-2an}8+kn!q838aD%I#@!vaCy;cCL!HN0g0e723i@Rw z2v`$~B;;+eEB1)A$<5%?P?R~2cF_P+4NUamzQq2T`EkP2BGu;WUYnw5ScMC~?s#gG zy%n_JFEPr-TX>n6bQ;u2YC2=u}F&~76E*_s}RX6F9YLx=XrD=XpANlVlQdm z>-vUu$QrGh@Szn$?e-XZ`TU~?Dc}cW`a#Uj(Chy!faJBQYuQOS(rRX%#0Ao-SLcGtu&wtmf z&hx}hcw+YihIkX1P4y>1c08j?c2l-Fb z6}_aSWaS)sffdh8uTV6n!4H&?RQtkCH#vcAVdce(%-GGOG={>$VES^~`8h+g0ipb} zk*=alBBiXxL618@iO(M0%Gb_!Gj@1U$M|298^OOy2ae`mA=q;m^$X;{`;QPCamExY zVwgkdV9~ji3O6Nd*7`+R)PRi@^aDg6@1{Z7<{;v&BC3@JLwUlfpPQz4G}?Q3p7K2R zWPJ;mBanuPwU;nvW+ls`#-RUbq&`#hch{P2I9=+9cse{5w9dI`nReCGEtueaSjpZ~ zg=oPmDEUtAw)UBaD*Ldq-HW2hO18YD&$CqmFnI8OPRwSqx-+s~0CVJ!wKg>7RAA$= z{dT7ZTz_psA9^0jH3fD#@lO!>?rlbsjI}SGNt*Uj2`x<|5tzmc7509dnM$b5_lpO^7QzKIQ%K4vYmLiE{v^EsXVL36 z=!GPc2fDOPfL;+AHmvbLb2~|lh-_jp9EOF(kk1dG91#)k2r*MR{WrORWP-uyDwu)? z4&DgWRc48Qpb_7Ev~WnSPHpy$`}Iysa|4+~W`5^%$CE~8-A`EGm=;dBbhbXsl^(oy7ZKL z$6%N4?2n%~7mGv*aEXVsZPh9kShynKowC?Y;e$Ulm(o_+cpuUxuH&EgvZaHs8#YJg z=hfTLn-dYEqY^N|Dhu}%g+OM{Vq6K@zkeUy%KR}nK$Qbrlo>D$VM2vM^`Ft@h5yOC=C8>mqNuZV8a)BS$LMQgJhUw3Kdl`_JruWvDR-zrC${&xdPo3hvjA8m*(4 zl+90C-yfJ<6H>RcTL1sxqEk?Cqe0r=nOU(F5-CpfYwh?qBN| zu0|yP{rafOuGEJ;^gK{{X+(CBzqOQ%oRY%RjTEay3@0ejM0jWo(I#MOce0xHR8Q>M zXb8{X^u6XCA!^vpI2$O&GSPV8v>cKfovzSe)sSr0*~uLZ`*3 z^tn>laG(A|XzVPXiBp;}L-&VS=@8QnRW1TA#F|%|9Qzis0DC%zv@er9aUN*>N{)LE zjZNQh$ctpfh+U{&N$7Ldk~MG4to3Y4!t+-~%9@x<7lUF=>C~JFpD{Jx(rdAxWEK4& z?n?OSS7F9Z_`fn=df=lMR!=+i18XznDlk6?j;$3kK9X0)BiDwU1G-d=N>Z}&>1089 z-8^=D?v~0^_;yWW?rTyZ4rDn3;5*`RXlvl`$d7VlL3|{NZ&A?@D0$XMVWiYbI2L&| zj7T-4=a8Bv4e4gcMs@NCQ(I6VcvyD<!;-B7AM%97ne-rHFCJP+O|9uQ&_(@kUBgk90P9kP{ z$%NMJjQ0$tm5O&^<6>Mu;?0L!t0LWynlaj{jtT%z1uDxFd8t<%VX39`UWONnP)Jz6 z(ysd?5WbPkM}POI^_1UH2z}GY-LEIY^jt|d_HQbD8jAwsFSR&;z$}a z)DUgw2(QVVy}NJ6kZ5^lAr@UHy@FQ~SAY@be0ioEPKe#U1fG(Cg5VRoL9?Lx?yd_U zLFR|e>@Auej6k7$OwJ}+6_hpa2 zhvnzqLX!hg^Bq^l)wYdwGEC!~1@!a{yaNyL{<#IVN*plqDmU}pS8TGrrd)gWqoRFL z?!XY)f01|K8VbPySJxms3Q%3l!bomh)7i%Q>(5amgqeSBjw%nlSk4FL`+b-cf=;a?zaHRGrNQEbP43$9_>~Om zgwhIH(hFZSR{Yyk564}#vnMg6cwYiXNC(xJPNar=6Xycv%72UdQDJe#%JQuC*#OD6o zqsnb$-haCb>ek!gAW9YCj(Y-NH#8xDSmGwJ3VB3Iv74;GcM3vY$V*w(l^!ON!SlGi z!GqLvT7tw0M5+YLPc^wM;5r8*fBk^4oa$&GKn(dk0)m#r);F*AgP|!UO^K!1bQhg; zSv$Ce!Ng*!`KMsu*bRujt>h8nAT=MO961C~nktN`1i$`GL1`08V=hJIz z=3Gc%+PjZ}r5W73$s^TCNobQVJH^k`x{Y$v5^jJM?!lK?pkNp|N7CyN{9|zqz6dyZ za_zHag%q?eh`tIM&$Uen+9ZEV#(YFE$2yr1PAJ`rRX29sjI@#6dfJJdpGBCgHkEIL z^%xaLm#SS}ZyAIm=SH@yv^pL23L>&3)&IOL7Nb)@4ApPYEhgL;9aOgm zi4?~*ijB5&slnQnpR{n^Tl)!sfO1<!n?2%>#w8rFK9A7n(qD?q1>D zBJXCqXB)TbvB$K^7#odEIyv*#A9zeS;ebQok3C;HVQi2I?c;a1hR3@ye&iwY@Sh#6 zoob8mtI|1n*AfP~JfIlnr_)BjiPCq3+pY3wc2_^-0-JB|fVm4>uK4fxi9PLwSNmf{>9gqLe{iPb_g_E=x;Bevl2;2?rG@`AatY>6kJV(Uj5{mcj+` zfGtT5+jOYy9x_}M5XKS5N*FQrABuU|Q_gw;BH*wW4jJPkZg~E?^|e8tAQQjEaW(9f zX|*51Vtid$0}mvpoY3}o^%ty*1HY@>#Wl9&<=4L1XvRbBf9=T8-19ZTj6JnhvE^~S+0rk(a5a?S3kEOT|XdJ1;6E>j|$BQMIG zN>rN^@gSxev%nE-jeV5w=pq)tQlZ2=Dl`8@K%?^#z&6}gMB9nDOGy-Y5 zQ`AFzcqP`C%r+4sBC7{S*E}{uC&8%`h7u%G&4BrH!J(x*lemA{-P2p z3yJJRw6(6npuD*+;lLn|XeOr&O9H*EFNOX^1OqZT(%$X1z~KX&)#(8ksv{P`O%#Lv z`7c!7U6B4}ThnCo=g@M6Eaf<+#4FmQr;*pbI**?-3N2V%Q6s~pb@)|BiNdSdlEY4vm#ZbzSH_CruQ1>KV5X#-?I95zM z^-9p!I#F^=0?wf%cUSEhh1UN(Qszg8!$^6`bVJ~^v$&krlKycb>UZ0?5T#xIfmy(K zsfvA6E(hpy*7O}N$?n%~ngYjsXayGj`vd&~zL<4)A1(XlC?ZVFfSnj%e$3=6t`%ZPKO?tG#ZnX7>SyZ|L7BW=__uuwgZl2b; zb_8-<=58UYHEzd(Jdl4sy*d43g{0Po4r(dp!NDMo1SIBPI_EmGVu8~cpgp^Og+{-F zK9^e-mS=Uf6qPgMyA@89VL#g^D!6%Y`LV;CGfh;MT9Nh(g;%2)_~hXEFzg)a$RLz! z*+mF~(>sq>5$QFq0=^N)f~@(*G`4W*kRYTHH=LBo57Pd1vYXK>WO5wSK3t=8H%y?;@$(SsORcCQ*lKHzh z2^&D&kgGsk0%9&R(hTlf0F-G=b25MncDR<`vrr)R>U^MF!Sf!QQDcikHEN;Is3?N# zqF8F`4^sM0Y8KJeT0?v-&CY1>tE9PdlL~o`Wq}W=och`+(V65Kf2Hu5x3cVN)J^Buqpz`f~AVSoax2Q*QzcgkR)~W3M zG>;r5xc>UMndTb=mNbsh5J4i z6Z(MDd0(j^r`vzL%{_-t-#d&9*SaF}y$9#$y#qcryO%~NU?iEGFU#l=ql0)>VZ3!} zP8IN3@DKJIOo@Z?U)TaLyA`0&6@lJ`A`11;B;9*Frf64^ckaPTH%?`CjB@#Y6DB3NjZI3!RF+9LgX#C-|N1k^H-HP+wr^?q7CgPIp@sMW}tXa z*Lo^zLack8MoO~r1H1~Vl_m-$ds{Q}kO1&dxf}U-IOHUB3z$e+G4pQHK(Yt{Bd?F| z?toekgn(w>nej-=3W}?^j-v|*LhIKCRwLP+V%5Xg!<*C0ZMSZjSizjRAMuO&OWm9k z2QqT?e6=SROGSr2+>RJ&LEAiTpBhX9!tvnt%Ozx8J^!v)T{hp^K_e6C@L^c+So|H? zv)Bq$gJPo@+j0E)6^#H3@MbZd!{4b-E@{3Mk^lE!0Cp&6#8_BG%D-b$UH_~9bP8?p z?RpmaM3-|Gr7fVFsTPccpo4ijCH(JfZf!Z_&i{SztD|z%_|R(lBl)Dli}w;Lbdv^T z&L1g`50X446{V+cjTUV~95jQewtw9{M-hU__k!yE6qW}=YeC4MGw@jxs#R`lJ;~=< zT0tIU;IQ$Rc%1t`0A)a$zmnW=!~kE3nVzi5;3;`bDEdhXI@98$Wiv3b60BhOFnSgR zk0|e8_lN{AAbZQ6AnGGwSOJ&Rg8?jX)Cc5SoI@B~q$iqoo#~6OeSo9R9@2PLfJ(jt z-Okwcal%2{qGi;aM|MTeWa-+U&7AXOIiy!huRnzXY}2yY4*O3YclC~2tXmJKpr90?IPpuaf`)XpQg0dJ zvnv+`lpiVH*?aAsHP4SW805a_lqqiL!0z1J3r;M={)GGj=r z9M7PD4({9C&Bxby%CVP5-=ljT_09} zf1Gd?4o+AkJQnb-P`H<$F)h`rTib}|57sTLC7$yOa&!ELS6;n;r;29HOQ=J__zp`^yv-;b|R=nVScJu^73#%A&9xWABCh< zvU*wq61F@-kYRXuB47*JsVEnijSnE6z)BR|L3?fPMy%NrOJ7RR%4r>~IiS0H0b_SR zVy2yRd3Xht7e11%HOB;fOHMqEv8N49;UhtBGNz;)hUkwmLE=7#3(wi=VlRPXf}ecx z4JJkgxH{-{aH$d}(H?v5Ep&UY(TPDk7=l7DW*xCx_M)Sbq=pSzBg(@i zEHA(LX_;j50#*28clarEhr4xZiOCTvK~O`_%H*~rixbYu3)ZZzNa1i;rqQ|!e_m7z zv%@uSaa1VL?-#JzD?qgTw%s2)JTTi^S7UxGM$8F5nDZ(GEK2k=!gjtD2J9WeF*~jJ*2$0p-89x3@h$k~1!X0I8v+!)Sb!^+b%$VSpU(azL|MzP*YTY3`oh9Ox z2#1|E1GBxh2%Cw)?7@A+?$Xoub!*_>XfDcUa^pj$vFPE0*Fd?ejl(iN5-b@qd8#s| z1V6yUNLw89)d5NnLpn%x;U+&;^e}?hF_KEPZrRjzY2Rku1q*(zgAWW_9-(wp#d4K| zuht5%U5ln$PTO<*HQQst11&!k9;<+?5v-6_h-icH1&y=4%%4*(yyX`uKc1X?$*Ft0 zfxSEFOKN$`JPtXHx0C{uBIK!$Q*<{NJ`hJzeP%OpevFUZVJa3Lzr@i>9zwvQvbNc5 z7{(H9+gzY6#X@Io?SR5sIh9VNJB(?RDg)|L3g+`#U(PG zJG2@(f5DG+a8cB1Jtnx?D!?|)n{0o;UgM{4yV*MRk?>RtEU+p>%-mQ((5^f{IF%n; ze&nNC>c&MzqskJQR|l}^x5(N_kWkI!=|8@3|q<5ZCKhxLs<{_jj3Y>@as zs<70pQxKhb^sa789+d^);Fi05;L{c>INn{nsC%T(WS< zsZ%ia*8+QyaqKzKB`ay6rw2hgVGN6B3(lUmQY%nE#DR%Ow{5HDZUhGPk%(H9%Qcg{ zmxKp}a*-}u)^z9T4P_Gi;O4j{-Qg!#!2u5kf%3E+`q__e+KmQ}$P%81XBg=j4da(j z8lq2mcq$5c(T_3`9{!{UnT5yjK%cz9qfSA-K2&GpLVKIEP~6LX^u{>qQTtA0>e$jG zB@|UQFJv!vJSwVR&kpFeeypSO8O(!hU*I}H9A(cjK^|JGk2M3KFOVIu`Q`GWN7nSQ z9}ha{-MyWzI(YWgkK!dZpJP0bt-m5Hlgi<}qWGig?0`MSmz=VvTLULiv*lk#pHn~a zD}*<1e;bBLJhpzTb7Bys3I;s=5}7s{7o?0bq|Z3;pYqG15Z*SYmSCs$twzqCy&xYG zBTpI9>i2~BtDnJ`-;UFE+w{uqCXA?C!VQy3Wwyqn$4|9Q5? zk?IKLciCxEv;@Gqk<4LlV2xWpuv7UOXSM=)YEa5GtXI$7iHpb&IpyjUyEH)wLixF~ zj-C`v*mx}{Kif4#%GNSr*Gm5epNtY5y89-hHNyu?EM*Pywc&MXY#-gN}CE_{De!2^hf^SN4VNh zk{l9w0%NG&kYyP|>VS>@br?0fG!N4&+5zTtF8`bX|t4UC+GK_70O~bq&Xd&p&Q= zt$B^>m>Qp=yB=f zxR|Pj;zFJX!e0Tp&38ZeqC5IuH%j>hR9G75?y!hKhUZqYvzQ{7`UjQf}y<- zt;#pv{le}0&&zS3?N5YMS)mfV6d%;y*mKR}$I3(^0EsLfF-fl=bMjq79JX;By1Z9r ztXpNia+d#+)Ao1m+ct5_c%&8l!tyUMLL(ER!PgY3c*DhV!b!MGZ+HYs@Xj)E331{Z zU@C)2KiYZz;knohFbd<|I`@)-16Usj;fWLDlS*N845|kCMelzyGrIKJ2hV!w*|&}c zSR7l@T-9c^>H=fzWb;F&Oq{XpxOM6m^T=F&P0YZ8gl5i|O>YLVyF=x7{JA%|Tkm_$ zgIE8BMV#pNPQe&T8;zlf57EiT^Y?7MC;a`OIQ@B$=cAaJJM{GQ_zZNPE|f$Q5Jc)=Zg&JFQ66Tx}aA-lcpS~r#Qv%-%6eIz_V(XxU` zC0$S(-9a#TJTW62v-2o_;H#<%kSSWGJ5$soy{cd{aaVFPJ^y*&_7V5(q9?~vr_2e8 z&lvD&3WY1OIC;^p2QNf=pQpWuCO?EPV#mlZ%nsWU8MM;9F`B_;~c}Y4`@hvO}9nm{(%4pFp^CW$2(DDSosuCTP(y z78x7qvX*0~j0qTB@&xP>Kpl0qeh2~02V2P?;lxG(Xz|AX?ozvjxX zt6w+Q6JscLq*a=>6(JKL_62X*@u00<-Ma2k+}d`?sncu(W%kF>N2t-3#oh+;;DC?w?TV)*UCd!`iOyQhr=Afq{8_c}WxW(qv?# zbmqktDnAfB$%JEpY^AJ1lT=n^#7Jao8Gky`kyB8Hvnud7oOo5?x)GSkJ!tQV98U4g zD4#F&*@SRSbad-rIMrB|(VA`QthHlDojS;m7m%U>HT%tjimkJ;fOD8c6| zW%36Gt`-Wgd#5%#;+(N-CXQXZ0jAseQA6q}`K+|q)TR>IQkBZjy1mD-<#&J0(^E?a zuxOYIK5YVlg(G3WUj`cQzo0W&>7tY3#oa)>$OGv*!wBR{AOeMG`)|2v{Uf#X}QxrJCC_~%T0&YMMA1{FspDegcVaN z5M~|I(R*>WkF$8ko^vC*i7!?&s%fwu7&yN4R4yH9Z4(H-XoSMlI*UN4X zyZh0XQBY^-a0I{9#c^}^MJMl*T5sqYYPn(jP$UAL2>X%!cyKS=<=j}a$YN+2CKz^m+44Ioq5K#?UOc<;x(g1~Z0|F#yeDPLu&=(I z>psHDgAIrG)d!iAfQkeIL)l_~lzd?HWL$i331)}ahGPCDv%?(LdHN-EhtcZo-Vs|r zp`1D9Xhx%tfg_U-VG*iyDU@Kds9l?8qrUxq-tw8>&s*h6aFr^+_HCMPKXtdUSK}JV zLVVrO=RitPYp_h=r*va>VO=vzA#7U9#i{vY|8*1Guf>-~=mF?Uv#)*%jVqaiL zm?q|8P8Jn0RX84Sa6R9h5544$J{za|`tB{iy4)~-F=k~)uGx#Ty&3}vR2YS{opk8( zZ_g9w`9)XbaMn|>ZI8-5n00YxA6k@X!4<~-ObNFBXskHXLRq~ZU$lcZCsH1I8ZFh+ zW|Ubx4G0;-2(CZmE$My*r^-aGEUY>#d4YWN$~*scBZu^KO|Zw8pJXPbO){iO7$apK zlUZ3x7%IUIn3*5ctD~04a4jhDxqk0?>>wG`r;}^lqM?Q*s9Ym_%Lys#+)LF%?%n)E&mQxnAAcXfd{wAnAgM{TV;mnN;|eQ0}&^n?=~GJZjFI zAB(^GZtin|?y7jNG6jhBX*=K~=c~6JH@q&sL{xsv8lOFQA+cg(xu)a4IgWBHW<~FQ zHK!;VAa&v^&LfE%PEx{(?!`gWqcO4mv)F6vPkj;Qy=M z+~fP&yPsoi=K!3lQ%_1wj4k^ty0yKLGJVoYd zEG+Jaa>$cl&vTI=R@xQUXtuvNr6=Cd+Wq&}Qt{Mh; z_SN^}vclupKBf}Hm>~0sGZl8(e_5^wexhGFd@TcKPh=+O1eUqH<_$4hrDL*W7<|!G=aj=03n%5fE%`sk9Fw)Xc zxo~eLCnj#h;%ZJzum$Q-T`R2mzv!er)s^7=557WxfE7Z^c05Ir4=OABadEEJX5luv zGcUU{{q+XaC>)N-B?nweqeA6zVyZy^3T*$rv>OkOQQrL+)(=AY*^&juZ?!TMv?ive z@HL^m5-gSAD>&_C9kl41q1B}c3_w|HikgKed^0a$<%52BaajoStUbp32B16q941B< z`eX3fBIHEL0PHm4?wy-4*>wzN`u&HKL`7x*XZvxmK_^VE@PLA#`8nY-uvcf-42qfO z39UHEky}B8NIC4_&_S5-ZCGJU#tz`Ch@ zTnB7(;{*Z&r1X5a6$;~zyi$RY6tJ_|&Vl0V?|fPdQ>lcBPcW^-$AZ@(eY;@LTr1>> z7ON(aSH&QqWW1nMq0sYl^W8<$?|1*Y^6oOqZ`=k$+}X$O>gr)|TP;H3f~k@T3^V}G z)+B`sVpAaR;GML$m2SZkadf;EiXO@WiNTcFF> z9PXw%%Bv~5osBSI!v*BbcUDASOv;TyxtFeb?J1fR$3aA-*e zNWGH;69K#;;+dDx62!p{Tw11y5#N*yN;e$`qr@>mD#7;cT5Yso{trc8d^7hCZwV%n zClQ<9$=bDj%kB5yeY5GCk1^#JGv`no94t6YET3+WBBkw3>~2!|-G@tLDlt+48R1yZ z1?2}Ng>`cd3#$>#!juM$3q?lm2m~_mu8pg2d(xeG$(@#|o8DckWg9xr?#ZD`_?#y|z2!$X&n}tq2rsLnTe45#$mMJ;6pV z&yMQ{Z^dHpf1;Zn4%$r8|2^$>3k!6#6L+U@*-d*WHI8?+#94!l8#TnTp#q(8$D^c} z2JFtWwS*QnbDjkN3g3>2;xZprss%qS)Gmuzv*t%%V$lEdufE5L+H-Ie)lX&CNB)v{ zF-a4-R3Qm1YDVvY>)$l=p>pcMEn^@(sF5HIh?1^$jljka=v(jO)b8W1cC%LAk|>n$ z=!@kg7oD&hJ_;D4#y2%yWDGh|toZ1O4Icc^-G=2~7!SvqP#wxDG8JU;{A*a}j1w+q7&P*^Y^_-D~3` zX38iv)yWyDf@-OPdlkm!PQ&JTejP(5vm4C=2>Nl)uy%MD%a|UVzVqQ@XyH_hRD29O z>r!6I^oRxc=a!occcJ;G?|IIhc>c}RQhubF z{@9R0%?wXI!Imu7A6*}I**FH&0#Hbwk9a66dlqs&Me4)Sm8_O z^G1ni6;=uo;Y>5=OU0TWv7gbMoIQ7e`xJ)+y!rlDICJp}+_myuJnLGsSX2+1E!9g- zn~DYVtu>@Tag-;PF?1OrywYik$SB^Wy6fXLoZfxd88_%cDh{hynkbosvnI~)JOB7S zTsyN&`Y@G-WO8G{onOCv(oR=g(N(xjY^P1DAtQG@zSy} z-C_7pz9=6A#E%mvMQ*(NS*%F7MZE|GRPzxg1UbV@C1@$b^peK&eBrBY(aLas7^BzT z{;c%k>GvM`>}wxgP)%098tf100<+t@-)@^-vBf597i!GUaskO<#YS04m!%Y|gEqKx z%@oH+?!~cE)i560AP3@jA$B8LwdA7VQsgPSiy-VX0l9A60~X&BfF~U1sHJk%t&h9Y zFDa}1bYQ|Md$~TS^jtp(B+F3$BzKaLFDxOH!Ff>VyqDzka*pQbb&IDRPUUCo8%ZJ1 zmRNF=cJNOYCYzwS;jU+J$HmR6Je1>?8geMl@BjiHz%X&lP;Usm?|GI1|Y+D2{{C&YxN@AW9X;1X4WWxL7jz95L2X96Uf4H1NGdw+}b(t$-V? zat!o0!^9IW7~(}jTj1VZZa3t5}6ORM5dn(&<&Smlcs(I^7J)P0(*KS$|iD# z;OxUzXuUs;nO-ST;*?_o86Om}i_giP0hkHrm|%#H@iS;tNTwW6__JXStP07+P{`={ z^L|>0)_$d9UFC@Ji@bh!1=z85#J<1trvI${))~W&{hp{d;ABaIW*?z$zAm z>P$T!Gt1es(PZkaWKc+>f1kWh)T(*Ii1#(18zDAeBzP47JwTFFjg>kq?Hn3*`@>;sMoa>odcQ?3LcB3M+@@J>o0d&Cp7s5LMKfp3dnuF2 zZ|(kF6<|wTT8?h-^sP4=VJ$yMA15;tA*6s$I+lAJ(}07e3fMZw44O+ z*n*4Ljld}>y5j;07yPUedb|J|s7i+5NqKm@(uFe~aOYipFY2CH>%nb5m-En3v@+1T zVCiE7d^rjfz(v-yn-J>uLP>DHa^?Z8yI@b}i3e?uO3Y)6sQlRNNz*Yk01rw*e)xrM zFS|#zu!QC+TC$zca|iDDqTBX5HZ~-y zXGhuO=0iW996ptNAYLJTJRI?9#Y>%Jr8xc4;cPDmfIu{Yp@T4RBCpiaz?%mNum>=H z)LJ;Owl5}=>R`g*hj?qCq$mm5ZLOVw+IuXi+9)s08MzD7lzK zdkSM}cdj%v5uys^nnJ5dCr)?3%rB4JvM7@_>ER_0mMA*l6(XU-0X zmaQj`_z>O(fTa-C07xPJxtMg?7)xa4em!eJm1AE?o;9`qZVIqXi$)U<-e-$zw;4ae zUs@irjgf{Or6pv(QVkEblKAB~?6m1PVBj6bC4kVb#1brBX+tl;VQWu>B`LbXl9iOo zj{*GJ;H~l*zPv&gG0DRFd?PB83#Z@bF2K)ppFwf)G$&HJcE+KjZ27UTK)U#29$HM` z<$Wm*eHll#W=V@(Q!aT(n#tRaa{oMFJHT0&F(?MU4c|k900+Yr?ggV#<;`JN-t?$n zLL=p;=q7oTYnPnmhVb4Cci?WDx?>^Ngi%8cK4WI-kpqtD|8D4@L?4pcMWDW3R^7E#3RaK|>*#bfl9(Mki$D?}NG4&=M*Zhs=mT;NWk+>ykY zZtNIQ1o6hjS|2zbyWbu+`>Dl6!ak1TA!&S^ksT}==8rK&#Cb4eYSsvgr9mgO1UWnW z$!Fgp9r`;ib74!J6ck}TWQkus8r~CbGMC%BMbpu9=Kb{D%@GLDN1i^hcSAHGM139kc&7NC>p1SYv@^w8%lJV@&uIOAi1$7f-WQ!DEdQ-E=|X zk%3I_$_+?r9ph0r0r~JL6CL**lRlUHuu>_*5-~M5X_`!w+t)(#i``ykxGfHNQ#u&( zOp=smcqq_22nWD8QV26#BcR|ooLK`Ok3&qhgjj)jkrWln7Ndu0VKFLIP=o}dF;Zr) z@`;vU#FpUTzMZk0hpihw0fD^9iE^>bDN5DCq|~){JjvZXYM~{GV%*MMbJkS1&fsp^ zQs(#m;$T`RSBy2Tg*?#81(jvPq<|)*VhM*&3k92BF+NnJ&As33w%V{nSSR>3)(K*X zj9*@rOy)qDq|D!^Im#mc_yOdJ)$Or-iC1~nLeu88yNnJTrzoGb^Na zP{iqM7G?rg=wm!KH#+Bvd)&XTeIUWwVf>>r_6+Z%RuEc#U=O?u8bqKM8-)t@6u5Ak zN7NsSwRpEb_=5Mf*M5^Wb%*b}rCKQAD=p0s$oq%}R+d)k9BPt*<3$(ExZnLBWDW&9 z!62X|yehV?H?)^K@!;*<0lSUEX(sLU^=BHAnl#4U^EN4Vyba+q4 zC8tky%`w5iQ)0OEg-QjjCBg8{4_>TAMaJ$hPnHhlS;^(oES+d14C;~$V}jtvwW-aq zrjqOVLbuf>M!wcXOI#?=?yyGz0om~O20SPXl~FL1qn}!Gt8GAasY_@OvbiiN4BhI?d7R3e7mpmis<3TNK1fN#$j*E!3{LoFu80EQF-jj|KfofWtm{D?%R_WI5oq?Q14ZzB^Z<72ZKs*Fcmx2(W=!9;-t$z8AXOU z24AQR_8+@;YFi5($x&~;{o!3pi&o4tz~AQin=8QKLwfFx0~b3{aEp>fFT_tNO4$*} z2@md*Jmi#XnAvec`8239hGRzdkIut(vHJB3u*ex-l#qsG!bHVSSt!b08d0^exqN)7 z&%{jcl{b}LkGCeqQT~l}ew_VcAywvh+NA5NtJQhBLl`WK(~>1ney3v+2bUNHLs<^m zV}d(y_i^zT*^6TI^)y1sCt(-|RwB+$pRaEEy@70v-`r`z*4{~I^>OJ1D;6sYlSszL zhcf6BEn(u~Nnib2ivI)M|ygy8-03Yjii zfFUh`1fs!1{%LwlQz{?c=Q3u!fm+_eMb;JEpclB8`{q_dj&t?z)ivVTk{4qP`Sgp? z^5gC6Ob!UikKIso!7u!O>dphuma4k@b6(@|C`uDWn%xAECW2B_#EK0SOH}MJC~7n+ z#*QVn#Hfk!iw$F<(O8m@SV9mL6a-X2Q52BkQ+kK@9#enuf6(SvuDrDo;`1Wp%=DbG)i=mm@;&)-FH%Z+*7a3ov)8+#Zp>4a5+t{yX~(B zdvQ4&S2s2gLK$iS80=Jxw#{)Ll!rmv-DxXb4tMti+fML+2dEQV+IZMt7Hon?v}^D; zYqc4(DZo(7^!R4VZg=0VIYY0_)l-hLJxnvWu>?9n-mckSzTiO{ZQv^m-7>H=bsH9f zZMKiSZjar5`@&OBKlcl_u2}usLAIM#ntBJg|K9g~fo6g4uFRAF@X%KOJV02e z%eue%hp#oC_`=}GFFU{OHKU!*!TN^M=IsDU%YegJWk6h-^19Psyyr7|h|_(Ejgi~y z|MbY_ix=jD)Z=_oW_NXyedi=xpZT{vh&u<>9 zy#}ewj}%EzI&jeg2=*9ExxipI zS0q5VnGJU3Bm{oZllsCB6!IeM4sb?R_t@=jo;%0AMUD*;@xd=4YAc2U^_Bh?|d)adz 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

a>P)(TTfjW|7C|Feu+gDYQoq?bA(2cE3 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

tAR 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 c%Ai0Li+}!ghxEEs6g1z}%2|g0AA7O5sQ>@~ literal 0 HcmV?d00001