diff --git a/docs/fix_old_versions_js.py b/docs/fix_old_versions_js.py deleted file mode 100644 index 1353c8ecc8d..00000000000 --- a/docs/fix_old_versions_js.py +++ /dev/null @@ -1,106 +0,0 @@ -#!/usr/bin/env python3 - -import os -import sys -import re -import glob - -def replace_code_in_file(file_path, search_pattern, replacement_code): - """ - Replace the matching pattern and next 8 lines with replacement code. - Returns True if file was modified, False otherwise. - """ - try: - with open(file_path, 'r', encoding='utf-8') as f: - lines = f.readlines() - - modified = False - new_lines = [] - i = 0 - - while i < len(lines): - if re.search(search_pattern, lines[i]): - # Found the pattern, add replacement code - new_lines.append(replacement_code + '\n') - # Skip the next 8 lines (total 9 lines including current) - i += 9 - modified = True - else: - new_lines.append(lines[i]) - i += 1 - - if modified: - with open(file_path, 'w', encoding='utf-8') as f: - f.writelines(new_lines) - - return modified - - except Exception as e: - print(f" Error processing {file_path}: {e}") - return False - -def main(): - # Get directory from command line argument or use current directory - scan_dir = sys.argv[1] if len(sys.argv) > 1 else '.' - - # Check if directory exists - if not os.path.isdir(scan_dir): - print(f"Error: Directory '{scan_dir}' does not exist.") - sys.exit(1) - - # The regex pattern to search for - search_pattern = r'for \(let \[key, value\] of Object\.entries\(versions\)\)' - - # The replacement code block - replacement_code = ''' for (let versionObj of versions) { - const el = document.createElement("option"); - el.value = versionObj.version; - el.textContent = versionObj.title; - if (versionObj.version === selectedVersion) { - el.selected = true; - } - selectVersionElmFirst.after(el); - }''' - - # Counters - files_processed = 0 - files_modified = 0 - - print(f"Scanning HTML files in directory: {scan_dir}") - print("-" * 40) - - # Find all HTML files recursively - pattern = os.path.join(scan_dir, '**', '*.html') - html_files = glob.glob(pattern, recursive=True) - - for file_path in html_files: - print(f"Processing: {file_path}") - - # Check if file contains the search pattern - try: - with open(file_path, 'r', encoding='utf-8') as f: - content = f.read() - - if re.search(search_pattern, content): - print(f" Found matching pattern in: {file_path}") - - if replace_code_in_file(file_path, search_pattern, replacement_code): - print(f" Successfully modified: {file_path}") - files_modified += 1 - else: - print(f" Failed to modify: {file_path}") - else: - print(f" No matching pattern found in: {file_path}") - - files_processed += 1 - - except Exception as e: - print(f" Error reading {file_path}: {e}") - - print("-" * 40) - print("Processing complete!") - print(f"Files processed: {files_processed}") - print(f"Files modified: {files_modified}") - -if __name__ == "__main__": - main() diff --git a/docs/mkdocs.yml b/docs/mkdocs.yml deleted file mode 100644 index 9089119cf6f..00000000000 --- a/docs/mkdocs.yml +++ /dev/null @@ -1,267 +0,0 @@ -# MkDocs settings -dev_addr: 127.0.0.1:4000 -site_name: lakeFS Community Documentation -site_url: https://community.lakefs.io/ -repo_url: https://github.com/treeverse/lakeFS -repo_name: treeverse/lakeFS -site_description: Open Source Data Version Control for Data Lakes and Lakehouses -site_dir: site -docs_dir: src -use_directory_urls: true -watch: - - overrides -extra_css: - - assets/css/overrides.css - -# Material theme settings -theme: - name: material - logo: assets/logo.svg - custom_dir: overrides - favicon: favicon.ico - features: - - content.footnote.tooltips - - content.code.copy - - content.tabs.link - - content.tooltips - - search.suggest - - search.share - icon: - repo: fontawesome/brands/github - palette: - primary: white - accent: teal - -# Other settings -extra: - scope: "/" - homepage: https://lakefs.io - status: - new: New - enterprise: Enterprise Feature - deprecated: Deprecated Feature - experimental: Experimental Feature - version: - provider: mike - default: latest - alias: true - icon: - repo: fontawesome/brands/github - palette: - primary: white - accent: teal - features: - enable_ask_ai: !ENV [ENABLE_ASK_AI, true] - -# Markdown settings -markdown_extensions: - - toc: - permalink: true - toc_depth: 5 - - tables - - footnotes - - fenced_code - - attr_list - - def_list - - admonition - - pymdownx.highlight: - anchor_linenums: true - line_spans: __span - pygments_lang_class: true - - pymdownx.inlinehilite - - pymdownx.snippets - - pymdownx.emoji: # support emojis - emoji_index: !!python/name:material.extensions.emoji.twemoji - emoji_generator: !!python/name:material.extensions.emoji.to_svg - - pymdownx.superfences: # support mermaid diagrams - custom_fences: - - name: mermaid - class: mermaid - format: !!python/name:pymdownx.superfences.fence_code_format - - pymdownx.tabbed: # support linking to tabs - alternate_style: true - slugify: !!python/object/apply:pymdownx.slugs.slugify - kwds: - case: lower - - pymdownx.tasklist: # support TODO lists - custom_checkbox: true - - pymdownx.critic - - pymdownx.caret - - pymdownx.keys - - pymdownx.mark - - pymdownx.tilde - - pymdownx.details - -plugins: - - mike: - version_selector: true - redirect_template: overrides/redirect.html - - search - - render_swagger: - allow_arbitrary_locations: true - - meta - - glightbox - - redirects: - redirect_maps: - reference/mount-csi-driver.md: reference/mount.md#mount-csi-driver-everest-on-kubernetes - howto/unity-delta-sharing.md: integrations/unity-catalog.md - integrations/index.md: https://community.lakefs.io/v1.60/integrations/ - understand/data_lifecycle_management/production.md: https://community.lakefs.io/v1.60/understand/data_lifecycle_management/production/ - understand/use_cases/index.md: https://community.lakefs.io/v1.60/understand/use_cases/ - understand/data_lifecycle_management/data-devenv.md: https://community.lakefs.io/v1.60/understand/data_lifecycle_management/data-devenv/ - -############################################################ -# This section is used to generate the navigation sidebar # -############################################################ -nav: - - Welcome to lakeFS: index.md - - Quickstart: - - Overview: quickstart/index.md - - "1\uFE0F\u20E3 Run lakeFS": quickstart/launch.md - - "2\uFE0F\u20E3 Query the data": quickstart/query.md - - "3\uFE0F\u20E3 Create a branch": quickstart/branch.md - - "4\uFE0F\u20E3 Commit and Merge": quickstart/commit-and-merge.md - - "5\uFE0F\u20E3 Roll back Changes": quickstart/rollback.md - - "6\uFE0F\u20E3 Using Actions and Hooks": quickstart/actions-and-hooks.md - - "7\uFE0F\u20E3 Work with data locally": quickstart/work-with-data-locally.md - - ➡️ Learn more: quickstart/learning-more-lakefs.md - - Use Cases: - - Data Quality: - - Isolated Dev & Test Environments: understand/use_cases/etl_testing.md - - Data Contract Enforcement: understand/use_cases/cicd_for_data.md - - Rollback: understand/use_cases/rollback.md - - Reproducibility: understand/use_cases/reproducibility.md - - User Guides: - - Installing: - - Overview: howto/deploy/index.md - - AWS: howto/deploy/aws.md - - Azure: howto/deploy/azure.md - - GCP: howto/deploy/gcp.md - - On-Premises: howto/deploy/onprem.md - - Upgrading: howto/deploy/upgrade.md - - Work with Data locally: howto/local-checkouts.md - - Sizing Guide: howto/sizing-guide.md - - Data Management: - - Git-Like Versioning: - - Pull Requests: howto/pull-requests.md - - Branch Protection: howto/protect-branches.md - - Merge Strategies: understand/how/merge.md - - Import & Export Data: - - Importing Data: howto/import.md - - Export Data: howto/export.md - - Copying data to/from lakeFS: howto/copying.md - - Data Catalogs Exports: howto/catalog_exports.md - - lakeFS Mount: reference/mount.md - - Actions and Hooks: - - Overview: howto/hooks/index.md - - Airflow Hooks: howto/hooks/airflow.md - - Lua Hooks: howto/hooks/lua.md - - Webhooks: howto/hooks/webhooks.md - - Garbage Collection: - - Overview: howto/garbage-collection/gc.md - - Managed Garbage Collection: howto/garbage-collection/managed-gc.md - - Standalone Garbage Collection: howto/garbage-collection/standalone-gc.md - - Metadata search: datamanagment/metadata-search.md - - Multiple Storage Backends: howto/multiple-storage-backends.md - - Transactional Mirroring: howto/mirroring.md - - Backup and Restore: howto/backup-and-restore.md - - Advanced Operations: - - Private Link: howto/private-link.md - - S3 Virtual-host addressing: howto/virtual-host-addressing.md - - Monitoring & Auditing: - - Monitoring using Prometheus: reference/monitor.md - - Auditing: reference/auditing.md - - Migrating away: howto/migrate-away.md - - lakeFS Enterprise   🚀: - - Features: enterprise/index.md - - lakeFS Cloud: cloud/index.md - - On-Premises: - - Quickstart: enterprise/getstarted/quickstart.md - - Installation: enterprise/getstarted/install.md - - Migrating from lakeFS OSS: enterprise/getstarted/migrate-from-oss.md - - Upgrading: enterprise/upgrade.md - - Architecture: enterprise/architecture.md - - Troubleshooting: enterprise/troubleshooting.md - - Configuration Reference: enterprise/configuration.md - - Integrations: - - Data Processing & Compute: - - Apache Spark: integrations/spark.md - - Apache Iceberg: integrations/iceberg.md - - AWS Glue & Athena: integrations/athena.md - - Presto / Trino: integrations/presto_trino.md - - DuckDB: integrations/duckdb.md - - Dremio: integrations/dremio.md - - Databricks: integrations/databricks.md - - Cloudera: integrations/cloudera.md - - Delta Lake: integrations/delta.md - - Apache Kafka: integrations/kafka.md - - Apache Hive: integrations/hive.md - - ML & AI: - - Amazon SageMaker: integrations/sagemaker.md - - Vertex AI: integrations/vertex_ai.md - - Red Hat OpenShift AI: integrations/red_hat_openshift_ai.md - - HuggingFace Datasets: integrations/huggingface_datasets.md - - MLflow: integrations/mlflow.md - - Kubeflow: integrations/kubeflow.md - - Vector Databases: - - LanceDB: integrations/lancedb.md - - Catalogs & Metadata: - - Iceberg REST Catalog: integrations/iceberg-rest-catalog.md - - Glue Data Catalog: integrations/glue_metastore.md - - Unity Catalog: integrations/unity-catalog.md - - Orchestration & ETL: - - Apache Airflow: integrations/airflow.md - - Airbyte: integrations/airbyte.md - - Dev & Tools: - - Python: - - Overview: integrations/python.md - - High-Level SDK: - - Getting Started: integrations/python-getting-started.md - - Branches & Merging: integrations/python-versioning-branches.md - - References, Commits & Tags: integrations/python-refs.md - - Transactions: integrations/python-transactions.md - - Data Operations: integrations/python-data-operations.md - - Generated SDK: integrations/python-sdk.md - - lakefs-spec: integrations/python-lakefs-spec.md - - Boto / S3 Gateway: integrations/python-boto.md - - AWS CLI: integrations/aws_cli.md - - Git: integrations/git.md - - R: integrations/r.md - - MATLAB: integrations/matlab.md - - Concepts: - - Architecture: understand/architecture.md - - Model: understand/model.md - - Data Structure: understand/data-structure.md - - Performance Best Practices: understand/performance-best-practices.md - - Internals: - - Versioning Internals: understand/how/versioning-internals.md - - Database structure: understand/how/kv.md - - FAQ: understand/faq.md - - Glossary: understand/glossary.md - - Security: - - Overview: security/index.md - - Authentication: - - Authentication: security/authentication.md - - Single Sign On (SSO): security/sso.md - - AWS IAM Roles: security/external-principals-aws.md - - Remote Authenticator: security/remote-authenticator.md - - Short-Lived Tokens (STS): security/sts-login.md - - SCIM: howto/scim.md - - Authorization: - - Role-Based Access Control (RBAC): security/rbac.md - - Access Control Lists (ACLs): security/access-control-lists.md - - ACL Server Implementation: security/ACL-server-implementation.md - - Presigned URLs: security/presigned-url.md - - - Reference: - - lakeFS API: reference/api.md - - lakectl (lakeFS command-line tool): reference/cli.md - - lakeFS Server Configuration: reference/configuration.md - - S3 Gateway API: reference/s3.md - - Spark Client: reference/spark-client.md - - Authorization API: security/authorization-yaml.md - - Community: - - About the lakeFS Project: project/index.md - - Contributing: - - Code: project/contributing.md - - Documentation: project/docs.md diff --git a/docs/overrides/partials/ask-ai.html b/docs/overrides/partials/ask-ai.html deleted file mode 100644 index 534623fe6e2..00000000000 --- a/docs/overrides/partials/ask-ai.html +++ /dev/null @@ -1,6 +0,0 @@ - - diff --git a/docs/overrides/partials/footer.html b/docs/overrides/partials/footer.html deleted file mode 100644 index 24f1b8b487c..00000000000 --- a/docs/overrides/partials/footer.html +++ /dev/null @@ -1,57 +0,0 @@ - - diff --git a/docs/overrides/partials/header.html b/docs/overrides/partials/header.html deleted file mode 100644 index f9e77f6506b..00000000000 --- a/docs/overrides/partials/header.html +++ /dev/null @@ -1,73 +0,0 @@ -{% set class = "md-header" %} -{% if "navigation.tabs.sticky" in features %} - {% set class = class ~ " md-header--shadow md-header--lifted" %} -{% elif "navigation.tabs" not in features %} - {% set class = class ~ " md-header--shadow" %} -{% endif %} -
- - {% if "navigation.tabs.sticky" in features %} - {% if "navigation.tabs" in features %} - {% include "partials/tabs.html" %} - {% endif %} - {% endif %} -
diff --git a/docs/overrides/partials/integrations/analytics.html b/docs/overrides/partials/integrations/analytics.html deleted file mode 100644 index 6c76d11ff0f..00000000000 --- a/docs/overrides/partials/integrations/analytics.html +++ /dev/null @@ -1,39 +0,0 @@ - - - - - - - - - - - - - - - diff --git a/docs/overrides/partials/outdated.html b/docs/overrides/partials/outdated.html deleted file mode 100644 index d9adfa39747..00000000000 --- a/docs/overrides/partials/outdated.html +++ /dev/null @@ -1,3 +0,0 @@ - diff --git a/docs/overrides/partials/slack.html b/docs/overrides/partials/slack.html deleted file mode 100644 index fac1f5899cd..00000000000 --- a/docs/overrides/partials/slack.html +++ /dev/null @@ -1,3 +0,0 @@ - - Join us on Slack - \ No newline at end of file diff --git a/docs/overrides/redirect.html b/docs/overrides/redirect.html deleted file mode 100644 index 55cb3626ac3..00000000000 --- a/docs/overrides/redirect.html +++ /dev/null @@ -1,14 +0,0 @@ - - - - - Redirecting - - - - - -

Redirecting to {{href}}

- - - diff --git a/docs/requirements-docs.txt b/docs/requirements-docs.txt deleted file mode 100644 index 6a8341a8716..00000000000 --- a/docs/requirements-docs.txt +++ /dev/null @@ -1,8 +0,0 @@ -PyYAML>=6.0 -mike==2.1.3 -mkdocs-material==9.7.1 -mkdocs-redirects==1.2.2 -mkdocs==1.6.1 -git+https://github.com/treeverse/mkdocs-render-swagger-plugin.git#egg=mkdocs-render-swagger-plugin -pymdown-extensions==10.21.2 -mkdocs-glightbox==0.5.2 diff --git a/docs/robots.txt b/docs/robots.txt deleted file mode 100644 index 7dbfd423481..00000000000 --- a/docs/robots.txt +++ /dev/null @@ -1,6 +0,0 @@ -User-agent: * - -Allow: /dev -Allow: /latest - -Sitemap: https://community.lakefs.io/latest/sitemap.xml diff --git a/docs/src/_includes/gtag_frame.html b/docs/src/_includes/gtag_frame.html deleted file mode 100644 index fd736d27516..00000000000 --- a/docs/src/_includes/gtag_frame.html +++ /dev/null @@ -1,4 +0,0 @@ - - - \ No newline at end of file diff --git a/docs/src/assets/by-treeverse.png b/docs/src/assets/by-treeverse.png deleted file mode 100644 index 8885fa8ff3e..00000000000 Binary files a/docs/src/assets/by-treeverse.png and /dev/null differ diff --git a/docs/src/assets/css/cookieconsent.css b/docs/src/assets/css/cookieconsent.css deleted file mode 100644 index 333f3c728e4..00000000000 --- a/docs/src/assets/css/cookieconsent.css +++ /dev/null @@ -1,13 +0,0 @@ -#cc-main { - --cc-btn-primary-bg: #279890; - --cc-btn-primary-border-color: #279890; - --cc-btn-primary-hover-bg: #fff; - --cc-btn-primary-hover-color: #279890; - --cc-btn-primary-hover-border-color: #279890; - --cc-font-family: "GalanoGrotesque-Medium"; - --cc-toggle-on-bg: var(--cc-btn-primary-bg); -} - -h2.cm__title { - margin-top: 0 !important; -} diff --git a/docs/src/assets/css/overrides.css b/docs/src/assets/css/overrides.css deleted file mode 100644 index 13ef31f96c7..00000000000 --- a/docs/src/assets/css/overrides.css +++ /dev/null @@ -1,171 +0,0 @@ -/* lakeFS custom theme overrides for MkDocs Material */ -:root { - --md-active-color: #00aa94; -} - - -.md-button { - font-size: 0.7rem; -} - -/* ----------------------------- */ -/* Footer customization */ -/* ----------------------------- */ - -/* Give footer breathing room */ -.md-footer { - padding: 0.5rem 0 !important; - font-size: 0.6rem; -} - -/* lists inline config already here */ -.md-footer__nav .md-footer__list, -.md-footer__legal .md-footer__list, -.md-footer__social .md-footer__list { - list-style: none; - padding: 0; - margin: 0; - display: flex; - flex-wrap: wrap; - gap: 1rem; -} - -.md-footer__social .md-footer__list li a { - display: inline-flex; - align-items: center; - color: var(--lakefs-teal) !important; - transition: color 0.2s ease-in-out; -} - -/* Change color on hover for better feedback */ -.md-footer__social .md-footer__list li a:hover { - color: var(--lakefs-green) !important; -} - -/* Social links icons sizing */ -.md-footer__social .md-footer__list svg { - width: 22px; - height: 22px; - fill: currentColor; /* ensure svg uses anchor color */ -} - -/* ----------------------------- */ -/* Layout refinements for large displays */ -/* ----------------------------- */ -.md-grid { - max-width: calc(100% - 60px); -} - -.md-content__inner { - max-width: 1000px; -} - -@media (min-width: 1440px) { - .md-sidebar--primary { - width: 14rem; - flex: 0 0 14rem; - } -} - -/* Extra-large screens */ -@media (min-width: 1920px) { - .md-sidebar--primary { - width: 16rem; - flex: 0 0 16rem; - } - - .md-sidebar--secondary { - width: 24rem; - flex: 0 0 24rem; - } -} - -@media (min-width: 2200px) { - .md-sidebar--secondary { - width: 28rem; - flex: 0 0 28rem; - } -} - -/* Extra-Extra-large screens */ -@media (min-width: 2500px) { - .md-sidebar--secondary { - width: 30rem; - flex: 0 0 30rem; - } -} - -@supports selector(::-webkit-scrollbar) { - [dir=ltr] .md-sidebar__inner { - padding-right: 20px; - } -} - - -/* -------------------------- */ -/* Enterprise status badge */ -/* -------------------------- */ -.md-status--enterprise::after { - mask-image: none; - -webkit-mask-image: none; - content: "🚀"; - font-size: 0.6rem; - background-color: transparent; -} -.md-status.md-status--enterprise:hover:after { - background-color: transparent !important; -} - -.md-nav__item .md-nav__link--active, .md-nav__item .md-nav__link--active code { - color: var(--md-active-color); - font-weight: 600; -} - - - -/* ----------------------------------------------------------------------------------------*/ -/* Custom CSS for video embeds */ -/* based on https://github.com/squidfunk/mkdocs-material/issues/492#issuecomment-336640342 */ -/* ----------------------------------------------------------------------------------------*/ -.video-wrapper { - position: relative; - display: block; - height: 0; - padding: 0; - overflow: hidden; - padding-bottom: 56.25%; -} -.video-wrapper > iframe { - position: absolute; - top: 0; - bottom: 0; - left: 0; - width: 100%; - height: 100%; - border: 0; -} - - -/* Join us on Slack */ -[data-md-color-primary=white] .md-button.md-button-nav-cta, -[data-md-color-primary=white] .md-button.md-button-nav-cta:hover -.md-button-nav-cta -.md-button-nav-cta:hover { - background-color: #f24886; - color: white; - border-radius: 0.25rem; - padding: 0.5rem 0.7rem; - font-size: 0.7rem; - font-weight: 600; - margin-right: 1.4rem; -} - .md-button-nav-warn, - .md-button-nav-warn:hover { - background-color: var(--md-warning-bg-color); - color: var(--md-warning-fg-color); - border-radius: 0.25rem; - padding: 0.5rem 0.7rem; - font-size: 0.7rem; - font-weight: 600; - margin-right: 1.4rem; - } \ No newline at end of file diff --git a/docs/src/assets/icons/anchor green.svg b/docs/src/assets/icons/anchor green.svg deleted file mode 100644 index 3e5bd042421..00000000000 --- a/docs/src/assets/icons/anchor green.svg +++ /dev/null @@ -1,3 +0,0 @@ - - - diff --git a/docs/src/assets/icons/anchor.svg b/docs/src/assets/icons/anchor.svg deleted file mode 100644 index b542e0954b5..00000000000 --- a/docs/src/assets/icons/anchor.svg +++ /dev/null @@ -1,3 +0,0 @@ - - - diff --git a/docs/src/assets/icons/close.svg b/docs/src/assets/icons/close.svg deleted file mode 100644 index 5e6fee30642..00000000000 --- a/docs/src/assets/icons/close.svg +++ /dev/null @@ -1,9 +0,0 @@ - - - close menu@2x - - - - - - \ No newline at end of file diff --git a/docs/src/assets/icons/github-hover.svg b/docs/src/assets/icons/github-hover.svg deleted file mode 100644 index e5e7d733345..00000000000 --- a/docs/src/assets/icons/github-hover.svg +++ /dev/null @@ -1,11 +0,0 @@ - - - icon / slack copy 2@2x - - - - - - - - \ No newline at end of file diff --git a/docs/src/assets/icons/github.png b/docs/src/assets/icons/github.png deleted file mode 100644 index aab26142b68..00000000000 Binary files a/docs/src/assets/icons/github.png and /dev/null differ diff --git a/docs/src/assets/icons/github.svg b/docs/src/assets/icons/github.svg deleted file mode 100644 index 11e64277479..00000000000 --- a/docs/src/assets/icons/github.svg +++ /dev/null @@ -1,11 +0,0 @@ - - - icon / slack copy 2@2x - - - - - - - - \ No newline at end of file diff --git a/docs/src/assets/icons/linkedin-hover.svg b/docs/src/assets/icons/linkedin-hover.svg deleted file mode 100644 index 4c63319b76f..00000000000 --- a/docs/src/assets/icons/linkedin-hover.svg +++ /dev/null @@ -1,11 +0,0 @@ - - - icon / slack copy 3@2x - - - - - - - - \ No newline at end of file diff --git a/docs/src/assets/icons/linkedin.png b/docs/src/assets/icons/linkedin.png deleted file mode 100644 index f0e32090880..00000000000 Binary files a/docs/src/assets/icons/linkedin.png and /dev/null differ diff --git a/docs/src/assets/icons/linkedin.svg b/docs/src/assets/icons/linkedin.svg deleted file mode 100644 index 61c45f9ac52..00000000000 --- a/docs/src/assets/icons/linkedin.svg +++ /dev/null @@ -1,13 +0,0 @@ - - - icon / slack copy 3@2x - - - - - - - - - - \ No newline at end of file diff --git a/docs/src/assets/icons/menu.svg b/docs/src/assets/icons/menu.svg deleted file mode 100644 index 6640d05ed18..00000000000 --- a/docs/src/assets/icons/menu.svg +++ /dev/null @@ -1,11 +0,0 @@ - - - mobile menu@2x - - - - - - - - \ No newline at end of file diff --git a/docs/src/assets/icons/search.png b/docs/src/assets/icons/search.png deleted file mode 100644 index 72d8bdc6efb..00000000000 Binary files a/docs/src/assets/icons/search.png and /dev/null differ diff --git a/docs/src/assets/icons/search.svg b/docs/src/assets/icons/search.svg deleted file mode 100644 index d148b03124b..00000000000 --- a/docs/src/assets/icons/search.svg +++ /dev/null @@ -1,8 +0,0 @@ - - - search on@2x - - - - - \ No newline at end of file diff --git a/docs/src/assets/icons/slack-hover.svg b/docs/src/assets/icons/slack-hover.svg deleted file mode 100644 index 6240311fd23..00000000000 --- a/docs/src/assets/icons/slack-hover.svg +++ /dev/null @@ -1,11 +0,0 @@ - - - icon / slack@2x - - - - - - - - \ No newline at end of file diff --git a/docs/src/assets/icons/slack.png b/docs/src/assets/icons/slack.png deleted file mode 100644 index 6dfe2d61f9e..00000000000 Binary files a/docs/src/assets/icons/slack.png and /dev/null differ diff --git a/docs/src/assets/icons/slack.svg b/docs/src/assets/icons/slack.svg deleted file mode 100644 index 247941f6502..00000000000 --- a/docs/src/assets/icons/slack.svg +++ /dev/null @@ -1,11 +0,0 @@ - - - icon / slack@2x - - - - - - - - \ No newline at end of file diff --git a/docs/src/assets/icons/twitter-hover.svg b/docs/src/assets/icons/twitter-hover.svg deleted file mode 100644 index 844b1116900..00000000000 --- a/docs/src/assets/icons/twitter-hover.svg +++ /dev/null @@ -1,11 +0,0 @@ - - - icon / slack copy@2x - - - - - - - - \ No newline at end of file diff --git a/docs/src/assets/icons/twitter.png b/docs/src/assets/icons/twitter.png deleted file mode 100644 index 61c92397017..00000000000 Binary files a/docs/src/assets/icons/twitter.png and /dev/null differ diff --git a/docs/src/assets/icons/twitter.svg b/docs/src/assets/icons/twitter.svg deleted file mode 100644 index 935abeb0c6c..00000000000 --- a/docs/src/assets/icons/twitter.svg +++ /dev/null @@ -1,11 +0,0 @@ - - - icon / slack copy@2x - - - - - - - - \ No newline at end of file diff --git a/docs/src/assets/icons/youtube-hover.svg b/docs/src/assets/icons/youtube-hover.svg deleted file mode 100644 index 79028a4b69a..00000000000 --- a/docs/src/assets/icons/youtube-hover.svg +++ /dev/null @@ -1,7 +0,0 @@ - - - Youtube-hover - - - - \ No newline at end of file diff --git a/docs/src/assets/icons/youtube.png b/docs/src/assets/icons/youtube.png deleted file mode 100644 index edf4be69871..00000000000 Binary files a/docs/src/assets/icons/youtube.png and /dev/null differ diff --git a/docs/src/assets/icons/youtube.svg b/docs/src/assets/icons/youtube.svg deleted file mode 100644 index 6614ca8a03e..00000000000 --- a/docs/src/assets/icons/youtube.svg +++ /dev/null @@ -1,7 +0,0 @@ - - - Youtube - - - - \ No newline at end of file diff --git a/docs/src/assets/img/404-illustration.png b/docs/src/assets/img/404-illustration.png deleted file mode 100644 index 3b99633cb43..00000000000 Binary files a/docs/src/assets/img/404-illustration.png and /dev/null differ diff --git a/docs/src/assets/img/Databricks-arch.excalidraw b/docs/src/assets/img/Databricks-arch.excalidraw deleted file mode 100644 index 7938c6a8580..00000000000 --- a/docs/src/assets/img/Databricks-arch.excalidraw +++ /dev/null @@ -1,2288 +0,0 @@ -{ - "type": "excalidraw", - "version": 2, - "source": "https://excalidraw.com", - "elements": [ - { - "type": "rectangle", - "version": 599, - "versionNonce": 421591746, - "index": "aV", - "isDeleted": false, - "id": "fKdWdkNM9XYc-7n1H_JyG", - "fillStyle": "hachure", - "strokeWidth": 1, - "strokeStyle": "solid", - "roughness": 1, - "opacity": 100, - "angle": 0, - "x": 312.9164573811969, - "y": 3438.744149522377, - "strokeColor": "#1e1e1e", - "backgroundColor": "transparent", - "width": 364.0026135070274, - "height": 353.9706516152905, - "seed": 1911862587, - "groupIds": [], - "frameId": null, - "roundness": { - "type": 3 - }, - "boundElements": [ - { - "id": "94vLrbjNaZ-Is-8OTvFrb", - "type": "arrow" - }, - { - "id": "FoG-M0XjPajxjfIcaEGnO", - "type": "arrow" - }, - { - "id": "yt9EYZ_KA4Mchy3BUUQct", - "type": "arrow" - }, - { - "id": "GyPIp862EuIWsednp_LJE", - "type": "arrow" - } - ], - "updated": 1725544570539, - "link": null, - "locked": false - }, - { - "type": "rectangle", - "version": 448, - "versionNonce": 1172078110, - "index": "aVG", - "isDeleted": false, - "id": "rc8yXewY6HEPU-FwSwn3-", - "fillStyle": "hachure", - "strokeWidth": 1, - "strokeStyle": "solid", - "roughness": 1, - "opacity": 100, - "angle": 0, - "x": 883.7566840331633, - "y": 3421.342955144116, - "strokeColor": "#1e1e1e", - "backgroundColor": "transparent", - "width": 181.98388158898558, - "height": 93.00907374489543, - "seed": 1701992539, - "groupIds": [], - "frameId": null, - "roundness": { - "type": 3 - }, - "boundElements": [ - { - "id": "HCNSYE_W_xRA4UTqgTuuu", - "type": "arrow" - }, - { - "id": "GyPIp862EuIWsednp_LJE", - "type": "arrow" - } - ], - "updated": 1725544671737, - "link": null, - "locked": false - }, - { - "type": "text", - "version": 188, - "versionNonce": 1377980475, - "index": "aWG", - "isDeleted": false, - "id": "C1-kKCZJAGayLq8AFHcP_", - "fillStyle": "hachure", - "strokeWidth": 1, - "strokeStyle": "solid", - "roughness": 1, - "opacity": 100, - "angle": 0, - "x": 1267.0388624342286, - "y": 3282.233183635602, - "strokeColor": "#1e1e1e", - "backgroundColor": "transparent", - "width": 179.22793579101562, - "height": 35, - "seed": 413344987, - "groupIds": [], - "frameId": null, - "roundness": null, - "boundElements": [], - "updated": 1722537743081, - "link": null, - "locked": false, - "fontSize": 28, - "fontFamily": 1, - "text": "Object Store", - "textAlign": "left", - "verticalAlign": "top", - "containerId": null, - "originalText": "Object Store", - "autoResize": true, - "lineHeight": 1.25 - }, - { - "type": "text", - "version": 524, - "versionNonce": 1295073589, - "index": "aWV", - "isDeleted": false, - "id": "9OomwBL5b71Vw2A8hnvQG", - "fillStyle": "hachure", - "strokeWidth": 1, - "strokeStyle": "solid", - "roughness": 1, - "opacity": 100, - "angle": 0, - "x": 1224.8463054463277, - "y": 3587.374912933678, - "strokeColor": "#1e1e1e", - "backgroundColor": "transparent", - "width": 165.03779590129852, - "height": 52.303226761469986, - "seed": 386188827, - "groupIds": [], - "frameId": null, - "roundness": null, - "boundElements": [], - "updated": 1722540974228, - "link": null, - "locked": false, - "fontSize": 20.921290704587996, - "fontFamily": 1, - "text": "lakeFS Managed\nBucket/s*", - "textAlign": "center", - "verticalAlign": "top", - "containerId": null, - "originalText": "lakeFS Managed\nBucket/s*", - "autoResize": true, - "lineHeight": 1.25 - }, - { - "type": "text", - "version": 564, - "versionNonce": 615590805, - "index": "aWd", - "isDeleted": false, - "id": "9amrjmm6vzKNvV1txfde1", - "fillStyle": "hachure", - "strokeWidth": 1, - "strokeStyle": "solid", - "roughness": 1, - "opacity": 100, - "angle": 0, - "x": 1236.8717429018543, - "y": 3529.01430153436, - "strokeColor": "#258c81", - "backgroundColor": "transparent", - "width": 61.157129574892735, - "height": 30.444620954311894, - "seed": 235752443, - "groupIds": [], - "frameId": null, - "roundness": null, - "boundElements": [ - { - "id": "FoG-M0XjPajxjfIcaEGnO", - "type": "arrow" - } - ], - "updated": 1722537938459, - "link": null, - "locked": false, - "fontSize": 12.177848381724752, - "fontFamily": 1, - "text": "Metadata\nFiles", - "textAlign": "center", - "verticalAlign": "top", - "containerId": null, - "originalText": "Metadata\nFiles", - "autoResize": true, - "lineHeight": 1.25 - }, - { - "type": "text", - "version": 675, - "versionNonce": 904819125, - "index": "aWh", - "isDeleted": false, - "id": "ToMIIJgI6tA6N828WY6rq", - "fillStyle": "hachure", - "strokeWidth": 1, - "strokeStyle": "solid", - "roughness": 1, - "opacity": 100, - "angle": 0, - "x": 1318.8706249429092, - "y": 3530.2828956536414, - "strokeColor": "#1971c2", - "backgroundColor": "transparent", - "width": 32.62775346636772, - "height": 30.44462095431188, - "seed": 785567637, - "groupIds": [], - "frameId": null, - "roundness": null, - "boundElements": [], - "updated": 1722538759880, - "link": null, - "locked": false, - "fontSize": 12.177848381724752, - "fontFamily": 1, - "text": "Data\nFiles", - "textAlign": "center", - "verticalAlign": "top", - "containerId": null, - "originalText": "Data\nFiles", - "autoResize": true, - "lineHeight": 1.25 - }, - { - "type": "text", - "version": 503, - "versionNonce": 518870299, - "index": "aWl", - "isDeleted": false, - "id": "SSwnkbraAHrWf4k26Yw0H", - "fillStyle": "hachure", - "strokeWidth": 1, - "strokeStyle": "solid", - "roughness": 1, - "opacity": 100, - "angle": 0, - "x": 1250.5732655789477, - "y": 3827.328135003164, - "strokeColor": "#1e1e1e", - "backgroundColor": "transparent", - "width": 105.2199496626854, - "height": 50, - "seed": 1034420533, - "groupIds": [], - "frameId": null, - "roundness": null, - "boundElements": [], - "updated": 1722538174899, - "link": null, - "locked": false, - "fontSize": 20, - "fontFamily": 1, - "text": "Unmanaged\nBucket/s", - "textAlign": "center", - "verticalAlign": "top", - "containerId": null, - "originalText": "Unmanaged\nBucket/s", - "autoResize": true, - "lineHeight": 1.25 - }, - { - "type": "image", - "version": 457, - "versionNonce": 1211580482, - "index": "ac", - "isDeleted": false, - "id": "XC4ZfmwenvusZshR_P-vg", - "fillStyle": "hachure", - "strokeWidth": 1, - "strokeStyle": "solid", - "roughness": 1, - "opacity": 100, - "angle": 0, - "x": 923.775497770621, - "y": 3429.7902151724725, - "strokeColor": "transparent", - "backgroundColor": "transparent", - "width": 97.38623046777609, - "height": 76.28588053309127, - "seed": 111869403, - "groupIds": [], - "frameId": null, - "roundness": null, - "boundElements": [ - { - "id": "P6npyxRsQMDzyRRtFJCAZ", - "type": "arrow" - } - ], - "updated": 1725544674087, - "link": null, - "locked": false, - "status": "saved", - "fileId": "57c766831721e9fb1cd3ac887423f3539a447a55", - "scale": [ - 1, - 1 - ] - }, - { - "type": "image", - "version": 242, - "versionNonce": 1515296795, - "index": "ad", - "isDeleted": false, - "id": "PLXjmnHvBPwOF5s_2M80N", - "fillStyle": "hachure", - "strokeWidth": 1, - "strokeStyle": "solid", - "roughness": 1, - "opacity": 100, - "angle": 0, - "x": 1195.0597551231497, - "y": 3273.658229707978, - "strokeColor": "transparent", - "backgroundColor": "transparent", - "width": 57.78143547920078, - "height": 57.78143547920078, - "seed": 1661221877, - "groupIds": [], - "frameId": null, - "roundness": null, - "boundElements": [], - "updated": 1722537740595, - "link": null, - "locked": false, - "status": "saved", - "fileId": "14425b5cfc24549457fe531a77b482c2336c0d1d", - "scale": [ - 1, - 1 - ] - }, - { - "type": "ellipse", - "version": 413, - "versionNonce": 973815451, - "index": "am", - "isDeleted": false, - "id": "UgXMbNZ2cISgBrh6ismcD", - "fillStyle": "solid", - "strokeWidth": 4, - "strokeStyle": "solid", - "roughness": 0, - "opacity": 100, - "angle": 0, - "x": 1214.1092737197202, - "y": 3426.8532767163338, - "strokeColor": "#1e1e1e", - "backgroundColor": "transparent", - "width": 185.48977829962644, - "height": 39.201122455943676, - "seed": 1418848981, - "groupIds": [], - "frameId": null, - "roundness": { - "type": 2 - }, - "boundElements": [], - "updated": 1722536698420, - "link": null, - "locked": false - }, - { - "type": "ellipse", - "version": 530, - "versionNonce": 106559931, - "index": "amG", - "isDeleted": false, - "id": "_hfeDSwLW7xKar-modPKg", - "fillStyle": "solid", - "strokeWidth": 4, - "strokeStyle": "solid", - "roughness": 0, - "opacity": 100, - "angle": 0, - "x": 1237.1477084934322, - "y": 3716.930821703292, - "strokeColor": "#1e1e1e", - "backgroundColor": "transparent", - "width": 127.96422399257345, - "height": 27.043760905302562, - "seed": 1436675061, - "groupIds": [], - "frameId": null, - "roundness": { - "type": 2 - }, - "boundElements": [], - "updated": 1722538174899, - "link": null, - "locked": false - }, - { - "type": "line", - "version": 469, - "versionNonce": 776064149, - "index": "an", - "isDeleted": false, - "id": "cwJIg6NqVo2NMUoXhDnjW", - "fillStyle": "solid", - "strokeWidth": 4, - "strokeStyle": "solid", - "roughness": 0, - "opacity": 100, - "angle": 0, - "x": 1400.4484126719815, - "y": 3445.719602817568, - "strokeColor": "#1e1e1e", - "backgroundColor": "#12b886", - "width": 27.435039617214706, - "height": 131.1158512677214, - "seed": 219662389, - "groupIds": [], - "frameId": null, - "roundness": null, - "boundElements": [], - "updated": 1722536698420, - "link": null, - "locked": false, - "startBinding": null, - "endBinding": null, - "lastCommittedPoint": null, - "startArrowhead": null, - "endArrowhead": null, - "points": [ - [ - 0, - 0 - ], - [ - -27.435039617214706, - 131.1158512677214 - ] - ] - }, - { - "type": "line", - "version": 586, - "versionNonce": 1846086235, - "index": "anG", - "isDeleted": false, - "id": "2z_yZfH_SMtR9BrRtmG8E", - "fillStyle": "solid", - "strokeWidth": 4, - "strokeStyle": "solid", - "roughness": 0, - "opacity": 100, - "angle": 0, - "x": 1365.6978827081718, - "y": 3729.9461738227797, - "strokeColor": "#1e1e1e", - "backgroundColor": "#12b886", - "width": 18.926668558261248, - "height": 90.45316844089105, - "seed": 1052424667, - "groupIds": [], - "frameId": null, - "roundness": null, - "boundElements": [], - "updated": 1722538174899, - "link": null, - "locked": false, - "startBinding": null, - "endBinding": null, - "lastCommittedPoint": null, - "startArrowhead": null, - "endArrowhead": null, - "points": [ - [ - 0, - 0 - ], - [ - -18.926668558261248, - 90.45316844089105 - ] - ] - }, - { - "type": "line", - "version": 673, - "versionNonce": 687780667, - "index": "ao", - "isDeleted": false, - "id": "H_XtdgYlVr7iUFJpqCbWp", - "fillStyle": "solid", - "strokeWidth": 4, - "strokeStyle": "solid", - "roughness": 0, - "opacity": 100, - "angle": 0, - "x": 1212.980854385111, - "y": 3446.065940141501, - "strokeColor": "#1e1e1e", - "backgroundColor": "#12b886", - "width": 27.435039617214724, - "height": 131.11585126772144, - "seed": 1740306837, - "groupIds": [], - "frameId": null, - "roundness": null, - "boundElements": [], - "updated": 1722536698420, - "link": null, - "locked": false, - "startBinding": null, - "endBinding": null, - "lastCommittedPoint": null, - "startArrowhead": null, - "endArrowhead": null, - "points": [ - [ - 0, - 0 - ], - [ - 27.435039617214724, - 131.11585126772144 - ] - ] - }, - { - "type": "line", - "version": 790, - "versionNonce": 2060257019, - "index": "aoG", - "isDeleted": false, - "id": "CFRTG3kjWCUrlOVzJ7Vpo", - "fillStyle": "solid", - "strokeWidth": 4, - "strokeStyle": "solid", - "roughness": 0, - "opacity": 100, - "angle": 0, - "x": 1236.3692434706413, - "y": 3730.185102281819, - "strokeColor": "#1e1e1e", - "backgroundColor": "#12b886", - "width": 18.92666855826126, - "height": 90.45316844089108, - "seed": 717923669, - "groupIds": [], - "frameId": null, - "roundness": null, - "boundElements": [], - "updated": 1722538174899, - "link": null, - "locked": false, - "startBinding": null, - "endBinding": null, - "lastCommittedPoint": null, - "startArrowhead": null, - "endArrowhead": null, - "points": [ - [ - 0, - 0 - ], - [ - 18.92666855826126, - 90.45316844089108 - ] - ] - }, - { - "type": "line", - "version": 648, - "versionNonce": 1910862325, - "index": "ap", - "isDeleted": false, - "id": "akl7vry0vw3MofnYpEndn", - "fillStyle": "solid", - "strokeWidth": 4, - "strokeStyle": "solid", - "roughness": 0, - "opacity": 100, - "angle": 0, - "x": 1241.0102979672567, - "y": 3576.4837884948356, - "strokeColor": "#1e1e1e", - "backgroundColor": "#12b886", - "width": 132.9629216786985, - "height": 9.835979999683579, - "seed": 1571880693, - "groupIds": [], - "frameId": null, - "roundness": { - "type": 2 - }, - "boundElements": [], - "updated": 1722536698420, - "link": null, - "locked": false, - "startBinding": null, - "endBinding": null, - "lastCommittedPoint": null, - "startArrowhead": null, - "endArrowhead": null, - "points": [ - [ - 0, - 0 - ], - [ - 64.33734309428377, - 9.835979999683579 - ], - [ - 132.9629216786985, - 1.3938745221653432 - ] - ] - }, - { - "type": "line", - "version": 767, - "versionNonce": 321417115, - "index": "apG", - "isDeleted": false, - "id": "dZYE85DV9lUebPHuRCjgl", - "fillStyle": "solid", - "strokeWidth": 4, - "strokeStyle": "solid", - "roughness": 0, - "opacity": 100, - "angle": 0, - "x": 1255.70597474399, - "y": 3820.156737982185, - "strokeColor": "#1e1e1e", - "backgroundColor": "#12b886", - "width": 91.72741079519767, - "height": 6.785568236718933, - "seed": 949798523, - "groupIds": [], - "frameId": null, - "roundness": { - "type": 2 - }, - "boundElements": [], - "updated": 1722538174899, - "link": null, - "locked": false, - "startBinding": null, - "endBinding": null, - "lastCommittedPoint": null, - "startArrowhead": null, - "endArrowhead": null, - "points": [ - [ - 0, - 0 - ], - [ - 44.384538373350125, - 6.785568236718933 - ], - [ - 91.72741079519767, - 0.961595152072412 - ] - ] - }, - { - "type": "line", - "version": 1251, - "versionNonce": 517641179, - "index": "aq", - "isDeleted": false, - "id": "Fr7P_CVOlfsTYH98ZGC7W", - "fillStyle": "solid", - "strokeWidth": 4, - "strokeStyle": "solid", - "roughness": 0, - "opacity": 100, - "angle": 0, - "x": 1401.550970267136, - "y": 3447.863697266036, - "strokeColor": "#1e1e1e", - "backgroundColor": "#12b886", - "width": 204.20793772300001, - "height": 73.92223842015714, - "seed": 629102677, - "groupIds": [], - "frameId": null, - "roundness": { - "type": 2 - }, - "boundElements": [], - "updated": 1722536698420, - "link": null, - "locked": false, - "startBinding": null, - "endBinding": null, - "lastCommittedPoint": null, - "startArrowhead": null, - "endArrowhead": null, - "points": [ - [ - 0, - 0 - ], - [ - 8.41304386281733, - -6.992816983523688 - ], - [ - -8.914834167083862, - -46.345262208693256 - ], - [ - -56.84501538608395, - -71.12383284278236 - ], - [ - -123.82021026334682, - -73.92223842015714 - ], - [ - -171.6030768976081, - -53.21233210229683 - ], - [ - -195.7948938601827, - -6.2553848968735215 - ], - [ - -188.10231038835357, - -0.4688874539394121 - ] - ] - }, - { - "type": "line", - "version": 1368, - "versionNonce": 692962363, - "index": "aqV", - "isDeleted": false, - "id": "nya0fBWtyDxdIUTsvDnGM", - "fillStyle": "solid", - "strokeWidth": 4, - "strokeStyle": "solid", - "roughness": 0, - "opacity": 100, - "angle": 0, - "x": 1366.458506438301, - "y": 3731.4253247753554, - "strokeColor": "#1e1e1e", - "backgroundColor": "#12b886", - "width": 140.87736005396957, - "height": 50.996890297369326, - "seed": 1096102581, - "groupIds": [], - "frameId": null, - "roundness": { - "type": 2 - }, - "boundElements": [], - "updated": 1722538174899, - "link": null, - "locked": false, - "startBinding": null, - "endBinding": null, - "lastCommittedPoint": null, - "startArrowhead": null, - "endArrowhead": null, - "points": [ - [ - 0, - 0 - ], - [ - 5.803924287309746, - -4.824149379127804 - ], - [ - -6.150095421272407, - -31.972303641918348 - ], - [ - -39.21579047863243, - -49.066348348330976 - ], - [ - -85.42010921675873, - -50.996890297369326 - ], - [ - -118.38417605130402, - -36.709703611302615 - ], - [ - -135.07343576665983, - -4.315415552496223 - ], - [ - -129.76653700655336, - -0.32347237531487866 - ] - ] - }, - { - "type": "line", - "version": 688, - "versionNonce": 122856315, - "index": "au", - "isDeleted": false, - "id": "Vz387B1b2vmibhxvnqQSH", - "fillStyle": "solid", - "strokeWidth": 1, - "strokeStyle": "solid", - "roughness": 0, - "opacity": 100, - "angle": 0, - "x": 1272.6330163883117, - "y": 3476.5593270274376, - "strokeColor": "#1e1e1e", - "backgroundColor": "#2ce5b4", - "width": 28.98577851804393, - "height": 42.9811349199005, - "seed": 1643133019, - "groupIds": [ - "KDDtU5RMPJKd3ckJPcy7u" - ], - "frameId": null, - "roundness": null, - "boundElements": [], - "updated": 1722536755118, - "link": null, - "locked": false, - "startBinding": null, - "endBinding": null, - "lastCommittedPoint": null, - "startArrowhead": null, - "endArrowhead": null, - "points": [ - [ - 0, - 0 - ], - [ - 8.907146199098388, - 15.427629767282772 - ], - [ - 8.907146199098388, - 42.9811349199005 - ], - [ - -20.07863231894554, - 42.9811349199005 - ], - [ - -20.07863231894554, - 1.3633462798771523 - ], - [ - 0, - 0 - ] - ] - }, - { - "type": "line", - "version": 572, - "versionNonce": 633764891, - "index": "av", - "isDeleted": false, - "id": "LmVPBMi0EdUrxG5bIS9xR", - "fillStyle": "solid", - "strokeWidth": 1, - "strokeStyle": "solid", - "roughness": 0, - "opacity": 100, - "angle": 0, - "x": 1281.2718300799863, - "y": 3490.260528414957, - "strokeColor": "#1e1e1e", - "backgroundColor": "#2ce5b4", - "width": 13.070403643350538, - "height": 13.168462466172253, - "seed": 94270715, - "groupIds": [ - "KDDtU5RMPJKd3ckJPcy7u" - ], - "frameId": null, - "roundness": null, - "boundElements": [], - "updated": 1722536755118, - "link": null, - "locked": false, - "startBinding": null, - "endBinding": null, - "lastCommittedPoint": null, - "startArrowhead": null, - "endArrowhead": null, - "points": [ - [ - 0, - 0 - ], - [ - -13.070403643350538, - 0 - ], - [ - -9.54192475998025, - -13.168462466172253 - ] - ] - }, - { - "type": "line", - "version": 797, - "versionNonce": 882216149, - "index": "aw", - "isDeleted": false, - "id": "ev_I2v8T0dl-snNInpQe2", - "fillStyle": "solid", - "strokeWidth": 1, - "strokeStyle": "solid", - "roughness": 0, - "opacity": 100, - "angle": 0, - "x": 1340.3672103751042, - "y": 3477.9419639990383, - "strokeColor": "#1971c2", - "backgroundColor": "#a5d8ff", - "width": 28.98577851804393, - "height": 42.9811349199005, - "seed": 2016632891, - "groupIds": [ - "dRFmKGMiTbRgGwfpJBDTA" - ], - "frameId": null, - "roundness": null, - "boundElements": [], - "updated": 1722538773231, - "link": null, - "locked": false, - "startBinding": null, - "endBinding": null, - "lastCommittedPoint": null, - "startArrowhead": null, - "endArrowhead": null, - "points": [ - [ - 0, - 0 - ], - [ - 8.907146199098388, - 15.427629767282772 - ], - [ - 8.907146199098388, - 42.9811349199005 - ], - [ - -20.07863231894554, - 42.9811349199005 - ], - [ - -20.07863231894554, - 1.3633462798771523 - ], - [ - 0, - 0 - ] - ] - }, - { - "type": "line", - "version": 681, - "versionNonce": 854988539, - "index": "ax", - "isDeleted": false, - "id": "nURCUYMNMyP0_7-yyrBkJ", - "fillStyle": "solid", - "strokeWidth": 1, - "strokeStyle": "solid", - "roughness": 0, - "opacity": 100, - "angle": 0, - "x": 1349.0060240667788, - "y": 3491.643165386558, - "strokeColor": "#1971c2", - "backgroundColor": "#a5d8ff", - "width": 13.070403643350538, - "height": 13.168462466172253, - "seed": 1600001269, - "groupIds": [ - "dRFmKGMiTbRgGwfpJBDTA" - ], - "frameId": null, - "roundness": null, - "boundElements": [], - "updated": 1722538773231, - "link": null, - "locked": false, - "startBinding": null, - "endBinding": null, - "lastCommittedPoint": null, - "startArrowhead": null, - "endArrowhead": null, - "points": [ - [ - 0, - 0 - ], - [ - -13.070403643350538, - 0 - ], - [ - -9.54192475998025, - -13.168462466172253 - ] - ] - }, - { - "type": "line", - "version": 885, - "versionNonce": 376624187, - "index": "axG", - "isDeleted": false, - "id": "XYysRAd24zX_Q2p2eGnra", - "fillStyle": "solid", - "strokeWidth": 1, - "strokeStyle": "solid", - "roughness": 0, - "opacity": 100, - "angle": 0, - "x": 1331.0303939180938, - "y": 3759.3131073009517, - "strokeColor": "#1971c2", - "backgroundColor": "#a5d8ff", - "width": 28.98577851804393, - "height": 42.9811349199005, - "seed": 998622907, - "groupIds": [ - "irGlI1gUH6Ec0F0oKCLIA" - ], - "frameId": null, - "roundness": null, - "boundElements": [], - "updated": 1722538776295, - "link": null, - "locked": false, - "startBinding": null, - "endBinding": null, - "lastCommittedPoint": null, - "startArrowhead": null, - "endArrowhead": null, - "points": [ - [ - 0, - 0 - ], - [ - 8.907146199098388, - 15.427629767282772 - ], - [ - 8.907146199098388, - 42.9811349199005 - ], - [ - -20.07863231894554, - 42.9811349199005 - ], - [ - -20.07863231894554, - 1.3633462798771523 - ], - [ - 0, - 0 - ] - ] - }, - { - "type": "line", - "version": 769, - "versionNonce": 1577050357, - "index": "axV", - "isDeleted": false, - "id": "d48yd9wY4bhWwtyxNljv4", - "fillStyle": "solid", - "strokeWidth": 1, - "strokeStyle": "solid", - "roughness": 0, - "opacity": 100, - "angle": 0, - "x": 1339.6692076097684, - "y": 3773.0143086884714, - "strokeColor": "#1971c2", - "backgroundColor": "#a5d8ff", - "width": 13.070403643350538, - "height": 13.168462466172253, - "seed": 2108380789, - "groupIds": [ - "irGlI1gUH6Ec0F0oKCLIA" - ], - "frameId": null, - "roundness": null, - "boundElements": [], - "updated": 1722538776295, - "link": null, - "locked": false, - "startBinding": null, - "endBinding": null, - "lastCommittedPoint": null, - "startArrowhead": null, - "endArrowhead": null, - "points": [ - [ - 0, - 0 - ], - [ - -13.070403643350538, - 0 - ], - [ - -9.54192475998025, - -13.168462466172253 - ] - ] - }, - { - "type": "line", - "version": 914, - "versionNonce": 1797428443, - "index": "axd", - "isDeleted": false, - "id": "O0Ik_-buSPvejH_LvCcMc", - "fillStyle": "solid", - "strokeWidth": 1, - "strokeStyle": "solid", - "roughness": 0, - "opacity": 100, - "angle": 0, - "x": 1287.1445715076575, - "y": 3759.4733474492523, - "strokeColor": "#1971c2", - "backgroundColor": "#a5d8ff", - "width": 28.98577851804393, - "height": 42.9811349199005, - "seed": 392454165, - "groupIds": [ - "hhRkWUwlJ4OviPrDNswcV" - ], - "frameId": null, - "roundness": null, - "boundElements": [], - "updated": 1722538776295, - "link": null, - "locked": false, - "startBinding": null, - "endBinding": null, - "lastCommittedPoint": null, - "startArrowhead": null, - "endArrowhead": null, - "points": [ - [ - 0, - 0 - ], - [ - 8.907146199098388, - 15.427629767282772 - ], - [ - 8.907146199098388, - 42.9811349199005 - ], - [ - -20.07863231894554, - 42.9811349199005 - ], - [ - -20.07863231894554, - 1.3633462798771523 - ], - [ - 0, - 0 - ] - ] - }, - { - "type": "line", - "version": 798, - "versionNonce": 1034025557, - "index": "axl", - "isDeleted": false, - "id": "1ITqAjtgxj2u9TJWayiE8", - "fillStyle": "solid", - "strokeWidth": 1, - "strokeStyle": "solid", - "roughness": 0, - "opacity": 100, - "angle": 0, - "x": 1295.783385199332, - "y": 3773.174548836772, - "strokeColor": "#1971c2", - "backgroundColor": "#a5d8ff", - "width": 13.070403643350538, - "height": 13.168462466172253, - "seed": 1201739707, - "groupIds": [ - "hhRkWUwlJ4OviPrDNswcV" - ], - "frameId": null, - "roundness": null, - "boundElements": [], - "updated": 1722538776295, - "link": null, - "locked": false, - "startBinding": null, - "endBinding": null, - "lastCommittedPoint": null, - "startArrowhead": null, - "endArrowhead": null, - "points": [ - [ - 0, - 0 - ], - [ - -13.070403643350538, - 0 - ], - [ - -9.54192475998025, - -13.168462466172253 - ] - ] - }, - { - "type": "arrow", - "version": 293, - "versionNonce": 1478691422, - "index": "b00", - "isDeleted": false, - "id": "HCNSYE_W_xRA4UTqgTuuu", - "fillStyle": "hachure", - "strokeWidth": 1, - "strokeStyle": "solid", - "roughness": 1, - "opacity": 100, - "angle": 0, - "x": 1066.740565622149, - "y": 3460.648650738039, - "strokeColor": "#258c81", - "backgroundColor": "#ffffff", - "width": 182.92968465593754, - "height": 40.87623321251385, - "seed": 1298328277, - "groupIds": [], - "frameId": null, - "roundness": { - "type": 2 - }, - "boundElements": [ - { - "type": "text", - "id": "9JxM9dyoRp9meqG8llmiS" - } - ], - "updated": 1725544671737, - "link": null, - "locked": false, - "startBinding": { - "elementId": "rc8yXewY6HEPU-FwSwn3-", - "focus": -0.5176202515159919, - "gap": 1, - "fixedPoint": null - }, - "endBinding": null, - "lastCommittedPoint": null, - "startArrowhead": "arrow", - "endArrowhead": "arrow", - "points": [ - [ - 0, - 0 - ], - [ - 64.87394947035204, - 24.382785695793245 - ], - [ - 182.92968465593754, - 40.87623321251385 - ] - ] - }, - { - "type": "text", - "version": 13, - "versionNonce": 145362939, - "index": "b00V", - "isDeleted": false, - "id": "9JxM9dyoRp9meqG8llmiS", - "fillStyle": "hachure", - "strokeWidth": 1, - "strokeStyle": "solid", - "roughness": 0, - "opacity": 100, - "angle": 0, - "x": 1091.4385315145344, - "y": 3475.0314364338324, - "strokeColor": "#258c81", - "backgroundColor": "#ffffff", - "width": 80.35196715593338, - "height": 20, - "seed": 364298389, - "groupIds": [], - "frameId": null, - "roundness": null, - "boundElements": [], - "updated": 1722538051132, - "link": null, - "locked": false, - "fontSize": 16, - "fontFamily": 1, - "text": "Metadata", - "textAlign": "center", - "verticalAlign": "middle", - "containerId": "HCNSYE_W_xRA4UTqgTuuu", - "originalText": "Metadata", - "autoResize": true, - "lineHeight": 1.25 - }, - { - "type": "arrow", - "version": 776, - "versionNonce": 427765918, - "index": "b0G", - "isDeleted": false, - "id": "GyPIp862EuIWsednp_LJE", - "fillStyle": "hachure", - "strokeWidth": 1, - "strokeStyle": "solid", - "roughness": 0, - "opacity": 100, - "angle": 0, - "x": 701.419009853068, - "y": 3463.5176299298537, - "strokeColor": "#1e1e1e", - "backgroundColor": "#ffffff", - "width": 179.96696509205026, - "height": 0.33654184094984885, - "seed": 52134741, - "groupIds": [], - "frameId": null, - "roundness": { - "type": 2 - }, - "boundElements": [], - "updated": 1725544688079, - "link": null, - "locked": false, - "startBinding": { - "elementId": "fKdWdkNM9XYc-7n1H_JyG", - "focus": -0.8561968624583398, - "gap": 24.49993896484375, - "fixedPoint": null - }, - "endBinding": { - "elementId": "rc8yXewY6HEPU-FwSwn3-", - "focus": 0.10371774472304966, - "gap": 2.3707090880450323, - "fixedPoint": null - }, - "lastCommittedPoint": null, - "startArrowhead": "arrow", - "endArrowhead": "arrow", - "points": [ - [ - 0, - 0 - ], - [ - 179.96696509205026, - -0.33654184094984885 - ] - ] - }, - { - "type": "arrow", - "version": 648, - "versionNonce": 2127617154, - "index": "b0H", - "isDeleted": false, - "id": "94vLrbjNaZ-Is-8OTvFrb", - "fillStyle": "hachure", - "strokeWidth": 1, - "strokeStyle": "solid", - "roughness": 0, - "opacity": 100, - "angle": 0, - "x": 702.7601963765055, - "y": 3741.599849175025, - "strokeColor": "#1971c2", - "backgroundColor": "#ffffff", - "width": 519.5107918836129, - "height": 0.589509264049866, - "seed": 382577883, - "groupIds": [], - "frameId": null, - "roundness": { - "type": 2 - }, - "boundElements": [ - { - "type": "text", - "id": "K2M3nmYuNkeXvtPaSRB-X" - } - ], - "updated": 1725544587073, - "link": null, - "locked": false, - "startBinding": { - "elementId": "fKdWdkNM9XYc-7n1H_JyG", - "focus": 0.7116931220340239, - "gap": 25.84112548828125, - "fixedPoint": null - }, - "endBinding": null, - "lastCommittedPoint": null, - "startArrowhead": "arrow", - "endArrowhead": "arrow", - "points": [ - [ - 0, - 0 - ], - [ - 519.5107918836129, - -0.589509264049866 - ] - ] - }, - { - "type": "text", - "version": 7, - "versionNonce": 2025606677, - "index": "b0HG", - "isDeleted": false, - "id": "K2M3nmYuNkeXvtPaSRB-X", - "fillStyle": "hachure", - "strokeWidth": 1, - "strokeStyle": "solid", - "roughness": 0, - "opacity": 100, - "angle": 0, - "x": 940.0115674424673, - "y": 3697.1162259565835, - "strokeColor": "#1971c2", - "backgroundColor": "#ffffff", - "width": 42.895988285541534, - "height": 20, - "seed": 1105348949, - "groupIds": [], - "frameId": null, - "roundness": null, - "boundElements": [], - "updated": 1722538767196, - "link": null, - "locked": false, - "fontSize": 16, - "fontFamily": 1, - "text": "Data", - "textAlign": "center", - "verticalAlign": "middle", - "containerId": "94vLrbjNaZ-Is-8OTvFrb", - "originalText": "Data", - "autoResize": true, - "lineHeight": 1.25 - }, - { - "type": "arrow", - "version": 1107, - "versionNonce": 1844428866, - "index": "b0HV", - "isDeleted": false, - "id": "FoG-M0XjPajxjfIcaEGnO", - "fillStyle": "hachure", - "strokeWidth": 1, - "strokeStyle": "solid", - "roughness": 0, - "opacity": 100, - "angle": 0, - "x": 703.8018833882243, - "y": 3558.5500363712927, - "strokeColor": "#1971c2", - "backgroundColor": "#ffffff", - "width": 521.800621702034, - "height": 3.848623689989836, - "seed": 915786645, - "groupIds": [], - "frameId": null, - "roundness": { - "type": 2 - }, - "boundElements": [ - { - "type": "text", - "id": "e1j3hXwZh4R5fHWNy3zFH" - } - ], - "updated": 1725544585386, - "link": null, - "locked": false, - "startBinding": { - "elementId": "fKdWdkNM9XYc-7n1H_JyG", - "focus": -0.31200300975951706, - "gap": 26.8828125, - "fixedPoint": null - }, - "endBinding": { - "elementId": "9amrjmm6vzKNvV1txfde1", - "focus": -0.6574472910135761, - "gap": 11.269237811595985, - "fixedPoint": null - }, - "lastCommittedPoint": null, - "startArrowhead": "arrow", - "endArrowhead": "arrow", - "points": [ - [ - 0, - 0 - ], - [ - 521.800621702034, - -3.848623689989836 - ] - ] - }, - { - "type": "text", - "version": 47, - "versionNonce": 942598901, - "index": "b0Hl", - "isDeleted": false, - "id": "e1j3hXwZh4R5fHWNy3zFH", - "fillStyle": "hachure", - "strokeWidth": 1, - "strokeStyle": "solid", - "roughness": 0, - "opacity": 100, - "angle": 0, - "x": 944.103324640474, - "y": 3548.844679102245, - "strokeColor": "#1971c2", - "backgroundColor": "#ffffff", - "width": 42.895988285541534, - "height": 20, - "seed": 696045493, - "groupIds": [], - "frameId": null, - "roundness": null, - "boundElements": [], - "updated": 1722538756147, - "link": null, - "locked": false, - "fontSize": 16, - "fontFamily": 1, - "text": "Data", - "textAlign": "center", - "verticalAlign": "middle", - "containerId": "FoG-M0XjPajxjfIcaEGnO", - "originalText": "Data", - "autoResize": true, - "lineHeight": 1.25 - }, - { - "type": "image", - "version": 405, - "versionNonce": 287162754, - "index": "b0O", - "isDeleted": false, - "id": "WdkrYra56assCyd-YXdgZ", - "fillStyle": "hachure", - "strokeWidth": 1, - "strokeStyle": "solid", - "roughness": 0, - "opacity": 100, - "angle": 0, - "x": 374.5715355296081, - "y": 3367.835634753072, - "strokeColor": "transparent", - "backgroundColor": "#ffffff", - "width": 235.0192366810598, - "height": 62.67179644828261, - "seed": 66171035, - "groupIds": [], - "frameId": null, - "roundness": null, - "boundElements": [ - { - "id": "yt9EYZ_KA4Mchy3BUUQct", - "type": "arrow" - } - ], - "updated": 1725544661135, - "link": null, - "locked": false, - "status": "saved", - "fileId": "052b11aa8b22d6eabf95831f5c83abbbdebc45ef", - "scale": [ - 1, - 1 - ] - }, - { - "type": "text", - "version": 57, - "versionNonce": 1717000277, - "index": "b0R", - "isDeleted": false, - "id": "9OvAOafyzEx2eTcf6a6sZ", - "fillStyle": "hachure", - "strokeWidth": 1, - "strokeStyle": "solid", - "roughness": 0, - "opacity": 100, - "angle": 0, - "x": 1185.3806807731926, - "y": 3331.483415371421, - "strokeColor": "#1e1e1e", - "backgroundColor": "#ffffff", - "width": 275.1998291015625, - "height": 20, - "seed": 1762599413, - "groupIds": [], - "frameId": null, - "roundness": null, - "boundElements": [], - "updated": 1722538651923, - "link": null, - "locked": false, - "fontSize": 16, - "fontFamily": 1, - "text": "S3 / Azure Blob / GCS / MinIO ...", - "textAlign": "center", - "verticalAlign": "top", - "containerId": null, - "originalText": "S3 / Azure Blob / GCS / MinIO ...", - "autoResize": true, - "lineHeight": 1.25 - }, - { - "type": "text", - "version": 528, - "versionNonce": 1326136149, - "index": "b0S", - "isDeleted": false, - "id": "Fhakw2nF56ggm_i2A1Hlz", - "fillStyle": "hachure", - "strokeWidth": 1, - "strokeStyle": "solid", - "roughness": 0, - "opacity": 100, - "angle": 0, - "x": 317.8442255491933, - "y": 3839.670578499913, - "strokeColor": "#1e1e1e", - "backgroundColor": "#a5d8ff", - "width": 595.9036865234375, - "height": 20, - "seed": 1798373467, - "groupIds": [], - "frameId": null, - "roundness": null, - "boundElements": [], - "updated": 1722538964014, - "link": null, - "locked": false, - "fontSize": 16, - "fontFamily": 1, - "text": "* All Data & Metadata is always stored within your Account and Network", - "textAlign": "center", - "verticalAlign": "top", - "containerId": null, - "originalText": "* All Data & Metadata is always stored within your Account and Network", - "autoResize": true, - "lineHeight": 1.25 - }, - { - "id": "AW4wY3hWkhVIqmOykjdMl", - "type": "image", - "x": 706.5731906592259, - "y": 3282.5365783516645, - "width": 46, - "height": 47, - "angle": 0, - "strokeColor": "transparent", - "backgroundColor": "transparent", - "fillStyle": "solid", - "strokeWidth": 2, - "strokeStyle": "solid", - "roughness": 1, - "opacity": 100, - "groupIds": [], - "frameId": null, - "index": "b0X", - "roundness": null, - "seed": 404631682, - "version": 105, - "versionNonce": 582825474, - "isDeleted": false, - "boundElements": null, - "updated": 1725544513961, - "link": null, - "locked": false, - "status": "saved", - "fileId": "f8e4899a9159ac15f50bae4ac5c2dccd836011de", - "scale": [ - 1, - 1 - ] - }, - { - "type": "rectangle", - "version": 488, - "versionNonce": 1176997214, - "index": "b0Y", - "isDeleted": false, - "id": "z1W92KzkwojMzlqN6Plu8", - "fillStyle": "hachure", - "strokeWidth": 1, - "strokeStyle": "solid", - "roughness": 1, - "opacity": 100, - "angle": 0, - "x": 701.8841063100456, - "y": 3261.78898422824, - "strokeColor": "#1e1e1e", - "backgroundColor": "transparent", - "width": 181.98388158898558, - "height": 93.00907374489543, - "seed": 38669854, - "groupIds": [], - "frameId": null, - "roundness": { - "type": 3 - }, - "boundElements": [ - { - "id": "P6npyxRsQMDzyRRtFJCAZ", - "type": "arrow" - }, - { - "id": "yt9EYZ_KA4Mchy3BUUQct", - "type": "arrow" - } - ], - "updated": 1725544559802, - "link": null, - "locked": false - }, - { - "type": "text", - "version": 314, - "versionNonce": 1116347714, - "index": "b0Z", - "isDeleted": false, - "id": "13cE0-qFZjKqduZujcHyv", - "fillStyle": "hachure", - "strokeWidth": 1, - "strokeStyle": "solid", - "roughness": 1, - "opacity": 100, - "angle": 0, - "x": 773.2452792822728, - "y": 3282.6468231026415, - "strokeColor": "#1e1e1e", - "backgroundColor": "transparent", - "width": 77.21994018554688, - "height": 50, - "seed": 542653954, - "groupIds": [], - "frameId": null, - "roundness": null, - "boundElements": [], - "updated": 1725544513961, - "link": null, - "locked": false, - "fontSize": 20, - "fontFamily": 1, - "text": "Unity\nCatalog", - "textAlign": "center", - "verticalAlign": "top", - "containerId": null, - "originalText": "Unity\nCatalog", - "autoResize": true, - "lineHeight": 1.25 - }, - { - "type": "arrow", - "version": 711, - "versionNonce": 2117289310, - "index": "b0a", - "isDeleted": false, - "id": "P6npyxRsQMDzyRRtFJCAZ", - "fillStyle": "hachure", - "strokeWidth": 1, - "strokeStyle": "solid", - "roughness": 1, - "opacity": 100, - "angle": 0, - "x": 885.2679146968808, - "y": 3305.3532800529015, - "strokeColor": "#258c81", - "backgroundColor": "#ffffff", - "width": 81.15973111234541, - "height": 114.3790722231729, - "seed": 1458601886, - "groupIds": [], - "frameId": null, - "roundness": { - "type": 2 - }, - "boundElements": [ - { - "type": "text", - "id": "j8Zt4Ulc-RcPxroAJla6n" - } - ], - "updated": 1725544677019, - "link": null, - "locked": false, - "startBinding": { - "elementId": "z1W92KzkwojMzlqN6Plu8", - "focus": -0.6640351786153109, - "gap": 1.3999267978495595, - "fixedPoint": null - }, - "endBinding": { - "elementId": "XC4ZfmwenvusZshR_P-vg", - "focus": 0.1903316542076412, - "gap": 10.05786289639832, - "fixedPoint": null - }, - "lastCommittedPoint": null, - "startArrowhead": "arrow", - "endArrowhead": "arrow", - "points": [ - [ - 0, - 0 - ], - [ - 57.02657441915176, - 49.83874970645229 - ], - [ - 81.15973111234541, - 114.3790722231729 - ] - ] - }, - { - "type": "text", - "version": 17, - "versionNonce": 601030786, - "index": "b0b", - "isDeleted": false, - "id": "j8Zt4Ulc-RcPxroAJla6n", - "fillStyle": "hachure", - "strokeWidth": 1, - "strokeStyle": "solid", - "roughness": 0, - "opacity": 100, - "angle": 0, - "x": 994.3189449911908, - "y": 3515.248472020096, - "strokeColor": "#258c81", - "backgroundColor": "#ffffff", - "width": 80.35196715593338, - "height": 20, - "seed": 2050677726, - "groupIds": [], - "frameId": null, - "roundness": null, - "boundElements": [], - "updated": 1725544490151, - "link": null, - "locked": false, - "fontSize": 16, - "fontFamily": 1, - "text": "Metadata", - "textAlign": "center", - "verticalAlign": "middle", - "containerId": "P6npyxRsQMDzyRRtFJCAZ", - "originalText": "Metadata", - "autoResize": true, - "lineHeight": 1.25 - }, - { - "type": "arrow", - "version": 1223, - "versionNonce": 2005420482, - "index": "b0c", - "isDeleted": false, - "id": "yt9EYZ_KA4Mchy3BUUQct", - "fillStyle": "hachure", - "strokeWidth": 1, - "strokeStyle": "solid", - "roughness": 1, - "opacity": 100, - "angle": 0, - "x": 724.0218806174502, - "y": 3362.2912147005477, - "strokeColor": "#258c81", - "backgroundColor": "#ffffff", - "width": 99.7599142214134, - "height": 67.68391677137743, - "seed": 1260352862, - "groupIds": [], - "frameId": null, - "roundness": { - "type": 2 - }, - "boundElements": [ - { - "type": "text", - "id": "b3_R9mIkILcj8av3_nA5y" - } - ], - "updated": 1725544661135, - "link": null, - "locked": false, - "startBinding": { - "elementId": "z1W92KzkwojMzlqN6Plu8", - "focus": -0.05957350657654702, - "gap": 7.4931567274120425, - "fixedPoint": null - }, - "endBinding": { - "elementId": "WdkrYra56assCyd-YXdgZ", - "focus": 1.084245357795154, - "gap": 14.671194185368904, - "fixedPoint": null - }, - "lastCommittedPoint": null, - "startArrowhead": "arrow", - "endArrowhead": "arrow", - "points": [ - [ - 0, - 0 - ], - [ - -54.73563261209824, - 37.751072704499165 - ], - [ - -99.7599142214134, - 67.68391677137743 - ] - ] - }, - { - "type": "text", - "version": 21, - "versionNonce": 1149890242, - "index": "b0d", - "isDeleted": false, - "id": "b3_R9mIkILcj8av3_nA5y", - "fillStyle": "hachure", - "strokeWidth": 1, - "strokeStyle": "solid", - "roughness": 0, - "opacity": 100, - "angle": 0, - "x": 909.800388939104, - "y": 3430.3460898952812, - "strokeColor": "#258c81", - "backgroundColor": "#ffffff", - "width": 80.35196715593338, - "height": 20, - "seed": 8722846, - "groupIds": [], - "frameId": null, - "roundness": null, - "boundElements": [], - "updated": 1725544527659, - "link": null, - "locked": false, - "fontSize": 16, - "fontFamily": 1, - "text": "Metadata", - "textAlign": "center", - "verticalAlign": "middle", - "containerId": "yt9EYZ_KA4Mchy3BUUQct", - "originalText": "Metadata", - "autoResize": true, - "lineHeight": 1.25 - }, - { - "type": "text", - "version": 645, - "versionNonce": 529689694, - "index": "b0g", - "isDeleted": false, - "id": "xTeR0_bCh8KU0wcP-0srj", - "fillStyle": "hachure", - "strokeWidth": 1, - "strokeStyle": "solid", - "roughness": 1, - "opacity": 100, - "angle": 0, - "x": 514.0731808416692, - "y": 3477.921130353618, - "strokeColor": "#1e1e1e", - "backgroundColor": "transparent", - "width": 125.70667818470588, - "height": 56.12847900390625, - "seed": 5315998, - "groupIds": [], - "frameId": null, - "roundness": null, - "boundElements": [], - "updated": 1725545244443, - "link": null, - "locked": false, - "fontSize": 22.4513916015625, - "fontFamily": 1, - "text": "All-Purpose\nCompute", - "textAlign": "center", - "verticalAlign": "top", - "containerId": null, - "originalText": "All-Purpose Compute", - "autoResize": false, - "lineHeight": 1.25 - }, - { - "type": "text", - "version": 595, - "versionNonce": 494503362, - "index": "b0h", - "isDeleted": false, - "id": "3S9sBolfAkDLZjOd2Fe9H", - "fillStyle": "hachure", - "strokeWidth": 1, - "strokeStyle": "solid", - "roughness": 1, - "opacity": 100, - "angle": 0, - "x": 339.6697297312135, - "y": 3565.9532501045946, - "strokeColor": "#1e1e1e", - "backgroundColor": "transparent", - "width": 125.70667818470588, - "height": 28.064239501953125, - "seed": 320580994, - "groupIds": [], - "frameId": null, - "roundness": null, - "boundElements": [], - "updated": 1725545208914, - "link": null, - "locked": false, - "fontSize": 22.4513916015625, - "fontFamily": 1, - "text": "Jobs", - "textAlign": "center", - "verticalAlign": "top", - "containerId": null, - "originalText": "Jobs", - "autoResize": false, - "lineHeight": 1.25 - }, - { - "type": "text", - "version": 586, - "versionNonce": 406510914, - "index": "b0i", - "isDeleted": false, - "id": "iqXJML6s2q5suJoS4jKvq", - "fillStyle": "hachure", - "strokeWidth": 1, - "strokeStyle": "solid", - "roughness": 1, - "opacity": 100, - "angle": 0, - "x": 339.6697297312135, - "y": 3690.836123639751, - "strokeColor": "#1e1e1e", - "backgroundColor": "transparent", - "width": 125.70667818470588, - "height": 56.12847900390625, - "seed": 992415582, - "groupIds": [], - "frameId": null, - "roundness": null, - "boundElements": [], - "updated": 1725545145468, - "link": null, - "locked": false, - "fontSize": 22.4513916015625, - "fontFamily": 1, - "text": "SQL \nWarehouse", - "textAlign": "center", - "verticalAlign": "top", - "containerId": null, - "originalText": "SQL Warehouse", - "autoResize": false, - "lineHeight": 1.25 - }, - { - "type": "text", - "version": 794, - "versionNonce": 1501638814, - "index": "b0j", - "isDeleted": false, - "id": "y9hEhmdS3EwfPhiLFa3li", - "fillStyle": "hachure", - "strokeWidth": 1, - "strokeStyle": "solid", - "roughness": 1, - "opacity": 100, - "angle": 0, - "x": 514.0731808416692, - "y": 3630.8682433907275, - "strokeColor": "#1e1e1e", - "backgroundColor": "transparent", - "width": 125.70667818470588, - "height": 28.064239501953125, - "seed": 147045314, - "groupIds": [], - "frameId": null, - "roundness": null, - "boundElements": [], - "updated": 1725545244444, - "link": null, - "locked": false, - "fontSize": 22.4513916015625, - "fontFamily": 1, - "text": "Notebooks", - "textAlign": "center", - "verticalAlign": "top", - "containerId": null, - "originalText": "Notebooks", - "autoResize": false, - "lineHeight": 1.25 - }, - { - "id": "rUqXwJHrDEWBy717ee_5r", - "type": "image", - "x": 341.6351816862896, - "y": 3616.324382001567, - "width": 121.77577427455374, - "height": 63.93228149414071, - "angle": 0, - "strokeColor": "transparent", - "backgroundColor": "transparent", - "fillStyle": "solid", - "strokeWidth": 2, - "strokeStyle": "solid", - "roughness": 1, - "opacity": 100, - "groupIds": [], - "frameId": null, - "index": "b0k", - "roundness": null, - "seed": 161296322, - "version": 238, - "versionNonce": 1041493726, - "isDeleted": false, - "boundElements": null, - "updated": 1725545232109, - "link": null, - "locked": false, - "status": "saved", - "fileId": "39f6aaecb1c0b0b2b31e3bed9bf23bd8bfe551f5", - "scale": [ - 1, - 1 - ] - }, - { - "type": "image", - "version": 411, - "versionNonce": 697134302, - "index": "b0l", - "isDeleted": false, - "id": "_oBaI02DYBrY_e6-i5-bH", - "fillStyle": "solid", - "strokeWidth": 2, - "strokeStyle": "solid", - "roughness": 1, - "opacity": 100, - "angle": 0, - "x": 516.0386327967452, - "y": 3542.324382001567, - "strokeColor": "transparent", - "backgroundColor": "transparent", - "width": 121.77577427455374, - "height": 63.93228149414071, - "seed": 160702018, - "groupIds": [], - "frameId": null, - "roundness": null, - "boundElements": [], - "updated": 1725545244444, - "link": null, - "locked": false, - "status": "saved", - "fileId": "39f6aaecb1c0b0b2b31e3bed9bf23bd8bfe551f5", - "scale": [ - 1, - 1 - ] - } - ], - "appState": { - "gridSize": 20, - "gridStep": 5, - "gridModeEnabled": false, - "viewBackgroundColor": "#ffffff" - }, - "files": { - "57c766831721e9fb1cd3ac887423f3539a447a55": { - "mimeType": "image/png", - "id": "57c766831721e9fb1cd3ac887423f3539a447a55", - "dataURL": "data:image/png;base64,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", - "created": 1722535141187, - "lastRetrieved": 1722535141187 - }, - "14425b5cfc24549457fe531a77b482c2336c0d1d": { - "mimeType": "image/png", - "id": "14425b5cfc24549457fe531a77b482c2336c0d1d", - "dataURL": "data:image/png;base64,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", - "created": 1722535283692, - "lastRetrieved": 1722535283692 - }, - "052b11aa8b22d6eabf95831f5c83abbbdebc45ef": { - "mimeType": "image/png", - "id": "052b11aa8b22d6eabf95831f5c83abbbdebc45ef", - "dataURL": "data:image/png;base64,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", - "created": 1722538330971, - "lastRetrieved": 1722538330971 - }, - "f8e4899a9159ac15f50bae4ac5c2dccd836011de": { - "mimeType": "image/png", - "id": "f8e4899a9159ac15f50bae4ac5c2dccd836011de", - "dataURL": "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAC4AAAAvCAYAAACc5fiSAAAAAXNSR0IArs4c6QAABXNJREFUaEPtmXlsVFUUh7/73rz3ZqYlhYJtoVKUWCVo1LiBCJKYGJciEqBGgQqyapRoNFESghtqIFJqKTZxVyQmBNwVorIV/lIUF1SUQqhNoSJS6ca8N2+5Zt6kDdL1yWSqSW8y/91373fPPefcc34jpJSS/+EQ/eBpvrV+i6fZ4KTG4q6LW1ODs/c7ZMuplJ9BZEbRJk5AyclpXzsl4G59Pdbr67Df/wgZj6ceXA2hP3w/kVkzQQh//dSAHzqEuboCe/MW0EKISAQUNQUH8JAnm8B10UpmkvH046Am100deGk59tZtqOPGYdx6M2LI4LMHt21OPfUssq4ObdYMMpY/0Q144j3yvN5vKgTu4cOYCfBtO9CmTyW8aAFqwbm9X6OLmdI0abptOvLXX3oGly2tPoj754keDyB0HXXECLCtvge3v9pDrKwC78svwXG7tZrIzcN44D608WP7Htza8hnmilXI2lpETi5EI13Ci4HZGCV3Errskv8A+OYkOCdPoM29B7Xwgq6trhuECkf6Ud/Bx4fn+64mXRcC1nEiFAJFQVpW733cagM3W4lUlKOPubrHIHMT6fDM4ByWh/3zfrya35CO0+Map08IXViIWlgI0ks/uDJkEOYbyUeJltZg4HNnE75jOiJs9AH4OYOxNr2H/cUOiAUrA0LTpmAU3YLQtPSDq/lD8X4/hnuiAbzus9OZ15GoSdTcHKRt9wF4uh+glAVnP3gvn/yUWjyRv9t+AfKKFAKRyONBapVUgSuDs4m98ir2xveRzS0BsEG7dx6RGXciwuH0B6cyeBCxFyux129ANjUGAg89tJjonBJEONIH4Hk5WLt24373PVhWIHD12mvRx17ju0uvy9pUuUra6/F+8P48nu48nj8U53ANXn09sodO6szIVQuGEyoY7tfyaQ9OZUg25ltvY3/wCbQGzONz7sYonoow+qSszcbasAn7s63QGrCsvWMaxuRJCD1IWbvl82TP2dxEtHKNn097Gk71QcxVZTg7d6EVTyOyaD7KsKE4tbXIY8f91i7IUPLzUfOHIR2bpsnFSXliTgkZTy7zW7pOBaF41S7MlaV41QcJV1YQvmFiuwjT6eZSYu/7CfO5lXg/7EMrmUF47myU3NykvBGw30xSCR/Qa2iguXgWsvoA+rIlROfP61qCc/b9SGxVOW7VTvSFCzAWzkPtRpVKFELx7VVYz5ciW1swFt+PMW0KIpoRxMgd53oe1sefYi5fgWz8i+gLpehFt7TP6yDBecf+wHz1dex3NkB+PuElj6CPv46E+NPZ8I4cJVZRif3ehyijRxF59GG0sWPar/Tf0idEqdjK1TjbtiNGnk9mRRnqhYVdgyf8Mf7FNsyytXjVB1CuupLoE0sJjbqog8t4x/8k9tIryUMmhMn7FhJZOBflbKwtJbKxkVPla3He/QDZ3Iw2u4SMpY+BpnUDDngnG7HWrSf+5nrkXw2I4QXoxVMIXXEFIqz7CpfzWy3xDz/G2/M1QlVRi4ow7p6BYujI1mBdfbtf2zbOoRrin27G+2YvmBah6ycQXfkMSl7ePy6vS7XWa2rC2vgu8dfWIY/WgVAQGZkQ0cF2knBWHDIzCd10I+FF8/3C36x8GS9REQYdhg5xG9lwAmzb7/C1SUWEH3mQRJZp08Xblu1eZnYcfC1xTSXez/uT5anfsQv/2kRuLvqsu/zHQhkwAHvvt8RKy/H27AmKDZkDknCmCdmDMBbMw7h9EkpWVgfoTtNhZzsmLOlWHySRcWRdPUQM1MsvJXTxaJTs7PZP3Loj2FW7kUeOBgePhhFZWajnFaBecjHKwEGdAvfO4sG3T9sXKflHIm20p23UD55uq/dbPN0W/xvACquwtqUnKwAAAABJRU5ErkJggg==", - "created": 1725544409286, - "lastRetrieved": 1725544409286 - }, - "39f6aaecb1c0b0b2b31e3bed9bf23bd8bfe551f5": { - "mimeType": "image/png", - "id": "39f6aaecb1c0b0b2b31e3bed9bf23bd8bfe551f5", - "dataURL": "data:image/png;base64,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", - "created": 1725545071196, - "lastRetrieved": 1725545071196 - } - } -} \ No newline at end of file diff --git a/docs/src/assets/img/UI-Import-Dialog.png b/docs/src/assets/img/UI-Import-Dialog.png deleted file mode 100644 index d7ea7e8df5a..00000000000 Binary files a/docs/src/assets/img/UI-Import-Dialog.png and /dev/null differ diff --git a/docs/src/assets/img/add_branch_protection_rule.png b/docs/src/assets/img/add_branch_protection_rule.png deleted file mode 100644 index 69c07f75729..00000000000 Binary files a/docs/src/assets/img/add_branch_protection_rule.png and /dev/null differ diff --git a/docs/src/assets/img/airbyte.png b/docs/src/assets/img/airbyte.png deleted file mode 100644 index 8207a222801..00000000000 Binary files a/docs/src/assets/img/airbyte.png and /dev/null differ diff --git a/docs/src/assets/img/architecture.excalidraw b/docs/src/assets/img/architecture.excalidraw deleted file mode 100644 index a51dbc3958f..00000000000 --- a/docs/src/assets/img/architecture.excalidraw +++ /dev/null @@ -1,3546 +0,0 @@ -{ - "type": "excalidraw", - "version": 2, - "source": "https://excalidraw.com", - "elements": [ - { - "type": "rectangle", - "version": 1242, - "versionNonce": 25930805, - "isDeleted": false, - "id": "_aEm-L6P94yZvYLPiUQdu", - "fillStyle": "hachure", - "strokeWidth": 2, - "strokeStyle": "solid", - "roughness": 1, - "opacity": 100, - "angle": 0, - "x": 577.625, - "y": 224.6171875, - "strokeColor": "#000000", - "backgroundColor": "transparent", - "width": 566.3671875, - "height": 441.734375, - "seed": 883304279, - "groupIds": [], - "strokeSharpness": "sharp", - "boundElements": [], - "updated": 1665354334763, - "link": null, - "locked": false - }, - { - "type": "text", - "version": 502, - "versionNonce": 1695398075, - "isDeleted": false, - "id": "TgGwOOzgVI1in0sDAxa-r", - "fillStyle": "hachure", - "strokeWidth": 2, - "strokeStyle": "solid", - "roughness": 1, - "opacity": 100, - "angle": 0, - "x": 585.609375, - "y": 194.30078125, - "strokeColor": "#000000", - "backgroundColor": "transparent", - "width": 135, - "height": 25, - "seed": 1816928153, - "groupIds": [], - "strokeSharpness": "round", - "boundElements": [], - "updated": 1665354175302, - "link": null, - "locked": false, - "fontSize": 20, - "fontFamily": 1, - "text": "lakeFS server", - "baseline": 18, - "textAlign": "left", - "verticalAlign": "top", - "containerId": null, - "originalText": "lakeFS server" - }, - { - "type": "rectangle", - "version": 719, - "versionNonce": 1032096629, - "isDeleted": false, - "id": "9B7vsP3VbZUcmy_h0fyUT", - "fillStyle": "hachure", - "strokeWidth": 1, - "strokeStyle": "solid", - "roughness": 1, - "opacity": 100, - "angle": 0, - "x": 631.6484375, - "y": 370.693359375, - "strokeColor": "#000000", - "backgroundColor": "transparent", - "width": 169, - "height": 93, - "seed": 1114015833, - "groupIds": [], - "strokeSharpness": "round", - "boundElements": [ - { - "id": "nJIgCOrDzHKFPTaxD6jNH", - "type": "text" - }, - { - "id": "nJIgCOrDzHKFPTaxD6jNH", - "type": "text" - }, - { - "type": "text", - "id": "nJIgCOrDzHKFPTaxD6jNH" - }, - { - "id": "f4fx7Okaga8CbENsmpkmP", - "type": "arrow" - }, - { - "id": "Bv7_JtCztVbjCF9lOPXMj", - "type": "arrow" - } - ], - "updated": 1665354057906, - "link": null, - "locked": false - }, - { - "type": "rectangle", - "version": 957, - "versionNonce": 1212742971, - "isDeleted": false, - "id": "Bxgkr0odgFyw9uf9SBh9m", - "fillStyle": "hachure", - "strokeWidth": 1, - "strokeStyle": "solid", - "roughness": 1, - "opacity": 100, - "angle": 0, - "x": 630.6875, - "y": 247.59375, - "strokeColor": "#000000", - "backgroundColor": "transparent", - "width": 102, - "height": 66, - "seed": 379535735, - "groupIds": [], - "strokeSharpness": "round", - "boundElements": [ - { - "id": "gYy1ZNZFlRjyv6QM22Mwh", - "type": "text" - }, - { - "id": "gYy1ZNZFlRjyv6QM22Mwh", - "type": "text" - }, - { - "id": "gYy1ZNZFlRjyv6QM22Mwh", - "type": "text" - }, - { - "type": "text", - "id": "gYy1ZNZFlRjyv6QM22Mwh" - }, - { - "id": "qlZi2lbDur0dqp82LYO_L", - "type": "arrow" - } - ], - "updated": 1665354284481, - "link": null, - "locked": false - }, - { - "type": "rectangle", - "version": 1437, - "versionNonce": 2106152757, - "isDeleted": false, - "id": "2ZfD2SrM-46E8aH7dhW-L", - "fillStyle": "hachure", - "strokeWidth": 1, - "strokeStyle": "solid", - "roughness": 1, - "opacity": 100, - "angle": 0, - "x": 294.03125, - "y": 378.376953125, - "strokeColor": "#000000", - "backgroundColor": "transparent", - "width": 169, - "height": 90, - "seed": 1564026839, - "groupIds": [], - "strokeSharpness": "sharp", - "boundElements": [ - { - "id": "gFQ7_SRIz8GTTeavtNxc1", - "type": "text" - }, - { - "id": "gFQ7_SRIz8GTTeavtNxc1", - "type": "text" - }, - { - "id": "gFQ7_SRIz8GTTeavtNxc1", - "type": "text" - }, - { - "id": "gFQ7_SRIz8GTTeavtNxc1", - "type": "text" - }, - { - "id": "gFQ7_SRIz8GTTeavtNxc1", - "type": "text" - }, - { - "id": "qlZi2lbDur0dqp82LYO_L", - "type": "arrow" - }, - { - "type": "text", - "id": "gFQ7_SRIz8GTTeavtNxc1" - }, - { - "id": "f4fx7Okaga8CbENsmpkmP", - "type": "arrow" - } - ], - "updated": 1665354301139, - "link": null, - "locked": false - }, - { - "type": "rectangle", - "version": 1734, - "versionNonce": 1185922709, - "isDeleted": false, - "id": "LFEQGiwWugw-bHxiMcZeO", - "fillStyle": "hachure", - "strokeWidth": 1, - "strokeStyle": "solid", - "roughness": 1, - "opacity": 100, - "angle": 0, - "x": 292.69140625, - "y": 538.07421875, - "strokeColor": "#000000", - "backgroundColor": "transparent", - "width": 169, - "height": 110, - "seed": 513927961, - "groupIds": [], - "strokeSharpness": "sharp", - "boundElements": [ - { - "id": "qlZi2lbDur0dqp82LYO_L", - "type": "arrow" - }, - { - "type": "text", - "id": "6tgg9ZzYCBwT1BVPy4fTj" - }, - { - "id": "AB97GotmGG213cLmZEUpn", - "type": "arrow" - } - ], - "updated": 1665354315695, - "link": null, - "locked": false - }, - { - "type": "rectangle", - "version": 1406, - "versionNonce": 42022811, - "isDeleted": false, - "id": "FcI_PQ6EPBwrqiPhB5Ph8", - "fillStyle": "hachure", - "strokeWidth": 1, - "strokeStyle": "solid", - "roughness": 1, - "opacity": 100, - "angle": 0, - "x": 925.701171875, - "y": 241.80859375, - "strokeColor": "#000000", - "backgroundColor": "transparent", - "width": 169, - "height": 93, - "seed": 329647831, - "groupIds": [], - "strokeSharpness": "round", - "boundElements": [ - { - "id": "ePEr9LdcAMy2hfkyeKgHd", - "type": "text" - }, - { - "id": "ePEr9LdcAMy2hfkyeKgHd", - "type": "text" - }, - { - "id": "ePEr9LdcAMy2hfkyeKgHd", - "type": "text" - }, - { - "id": "ePEr9LdcAMy2hfkyeKgHd", - "type": "text" - }, - { - "type": "text", - "id": "ePEr9LdcAMy2hfkyeKgHd" - }, - { - "id": "KcyC9x5YsNNHh13B4n1nx", - "type": "arrow" - } - ], - "updated": 1665354057906, - "link": null, - "locked": false - }, - { - "type": "rectangle", - "version": 1052, - "versionNonce": 1432963765, - "isDeleted": false, - "id": "5ER2G9M0ztifcYbrsZIow", - "fillStyle": "hachure", - "strokeWidth": 1, - "strokeStyle": "solid", - "roughness": 1, - "opacity": 100, - "angle": 0, - "x": 925.7011718750001, - "y": 346.91145833333337, - "strokeColor": "#000000", - "backgroundColor": "transparent", - "width": 169, - "height": 93, - "seed": 726083447, - "groupIds": [], - "strokeSharpness": "round", - "boundElements": [ - { - "id": "xZMYT3ni3ok2L7lxP6yGX", - "type": "text" - }, - { - "id": "xZMYT3ni3ok2L7lxP6yGX", - "type": "text" - }, - { - "id": "xZMYT3ni3ok2L7lxP6yGX", - "type": "text" - }, - { - "id": "xZMYT3ni3ok2L7lxP6yGX", - "type": "text" - }, - { - "id": "xZMYT3ni3ok2L7lxP6yGX", - "type": "text" - }, - { - "type": "text", - "id": "xZMYT3ni3ok2L7lxP6yGX" - }, - { - "id": "_WCe-x56UysqDesPMcovo", - "type": "arrow" - } - ], - "updated": 1665354187260, - "link": null, - "locked": false - }, - { - "type": "rectangle", - "version": 1189, - "versionNonce": 1112378427, - "isDeleted": false, - "id": "svs0ZIIoEf9geQINc8L5R", - "fillStyle": "hachure", - "strokeWidth": 1, - "strokeStyle": "solid", - "roughness": 1, - "opacity": 100, - "angle": 0, - "x": 925.7011718750001, - "y": 452.0143229166667, - "strokeColor": "#000000", - "backgroundColor": "transparent", - "width": 169, - "height": 93, - "seed": 1969047831, - "groupIds": [], - "strokeSharpness": "round", - "boundElements": [ - { - "id": "lEnBUWHkXGiRrMqpAQ7DR", - "type": "text" - }, - { - "id": "lEnBUWHkXGiRrMqpAQ7DR", - "type": "text" - }, - { - "id": "lEnBUWHkXGiRrMqpAQ7DR", - "type": "text" - }, - { - "id": "lEnBUWHkXGiRrMqpAQ7DR", - "type": "text" - }, - { - "id": "lEnBUWHkXGiRrMqpAQ7DR", - "type": "text" - }, - { - "id": "lEnBUWHkXGiRrMqpAQ7DR", - "type": "text" - }, - { - "type": "text", - "id": "lEnBUWHkXGiRrMqpAQ7DR" - }, - { - "id": "wECT1xqiaxw7G2ECloOnC", - "type": "arrow" - } - ], - "updated": 1665354057906, - "link": null, - "locked": false - }, - { - "type": "rectangle", - "version": 1273, - "versionNonce": 2085398773, - "isDeleted": false, - "id": "APPf-R5uuQPPULrXAaGQl", - "fillStyle": "hachure", - "strokeWidth": 1, - "strokeStyle": "solid", - "roughness": 1, - "opacity": 100, - "angle": 0, - "x": 925.7011718750001, - "y": 557.1171875, - "strokeColor": "#000000", - "backgroundColor": "transparent", - "width": 169, - "height": 93, - "seed": 1676121463, - "groupIds": [], - "strokeSharpness": "round", - "boundElements": [ - { - "id": "iKQzPTb5mtu0ByF_0GqRF", - "type": "text" - }, - { - "id": "iKQzPTb5mtu0ByF_0GqRF", - "type": "text" - }, - { - "id": "iKQzPTb5mtu0ByF_0GqRF", - "type": "text" - }, - { - "id": "iKQzPTb5mtu0ByF_0GqRF", - "type": "text" - }, - { - "id": "iKQzPTb5mtu0ByF_0GqRF", - "type": "text" - }, - { - "id": "iKQzPTb5mtu0ByF_0GqRF", - "type": "text" - }, - { - "id": "iKQzPTb5mtu0ByF_0GqRF", - "type": "text" - }, - { - "type": "text", - "id": "iKQzPTb5mtu0ByF_0GqRF" - }, - { - "id": "S4SJSvhxNOOGmTdSWiyvI", - "type": "arrow" - } - ], - "updated": 1665354057906, - "link": null, - "locked": false - }, - { - "type": "rectangle", - "version": 472, - "versionNonce": 988171483, - "isDeleted": false, - "id": "_philqtA2msBgS2RN0gJq", - "fillStyle": "hachure", - "strokeWidth": 1, - "strokeStyle": "solid", - "roughness": 1, - "opacity": 100, - "angle": 0, - "x": 631.6484375, - "y": 520.80078125, - "strokeColor": "#000000", - "backgroundColor": "transparent", - "width": 169, - "height": 93, - "seed": 1462723511, - "groupIds": [], - "strokeSharpness": "round", - "boundElements": [ - { - "id": "WlOxNA-p-slsjxP8fsP_x", - "type": "text" - }, - { - "id": "WlOxNA-p-slsjxP8fsP_x", - "type": "text" - }, - { - "id": "WlOxNA-p-slsjxP8fsP_x", - "type": "text" - }, - { - "type": "text", - "id": "WlOxNA-p-slsjxP8fsP_x" - }, - { - "id": "AB97GotmGG213cLmZEUpn", - "type": "arrow" - }, - { - "id": "tqXh-I1GblNxzaOjAhp0X", - "type": "arrow" - } - ], - "updated": 1665354057906, - "link": null, - "locked": false - }, - { - "type": "text", - "version": 642, - "versionNonce": 118866517, - "isDeleted": false, - "id": "nJIgCOrDzHKFPTaxD6jNH", - "fillStyle": "hachure", - "strokeWidth": 1, - "strokeStyle": "solid", - "roughness": 1, - "opacity": 100, - "angle": 0, - "x": 696.6484375, - "y": 404.693359375, - "strokeColor": "#000000", - "backgroundColor": "transparent", - "width": 39, - "height": 25, - "seed": 1667728823, - "groupIds": [], - "strokeSharpness": "round", - "boundElements": [], - "updated": 1665354057906, - "link": null, - "locked": false, - "fontSize": 20, - "fontFamily": 1, - "text": "API", - "baseline": 18, - "textAlign": "center", - "verticalAlign": "middle", - "containerId": "9B7vsP3VbZUcmy_h0fyUT", - "originalText": "API" - }, - { - "type": "text", - "version": 891, - "versionNonce": 40550549, - "isDeleted": false, - "id": "gYy1ZNZFlRjyv6QM22Mwh", - "fillStyle": "hachure", - "strokeWidth": 1, - "strokeStyle": "solid", - "roughness": 1, - "opacity": 100, - "angle": 0, - "x": 645.1875, - "y": 268.09375, - "strokeColor": "#000000", - "backgroundColor": "transparent", - "width": 73, - "height": 25, - "seed": 386463097, - "groupIds": [], - "strokeSharpness": "round", - "boundElements": [], - "updated": 1665354278569, - "link": null, - "locked": false, - "fontSize": 20, - "fontFamily": 1, - "text": "Web UI", - "baseline": 18, - "textAlign": "center", - "verticalAlign": "middle", - "containerId": "Bxgkr0odgFyw9uf9SBh9m", - "originalText": "Web UI" - }, - { - "type": "text", - "version": 1480, - "versionNonce": 2076353179, - "isDeleted": false, - "id": "gFQ7_SRIz8GTTeavtNxc1", - "fillStyle": "hachure", - "strokeWidth": 1, - "strokeStyle": "solid", - "roughness": 1, - "opacity": 100, - "angle": 0, - "x": 318.03125, - "y": 383.376953125, - "strokeColor": "#000000", - "backgroundColor": "transparent", - "width": 121, - "height": 80, - "seed": 204416281, - "groupIds": [], - "strokeSharpness": "round", - "boundElements": [], - "updated": 1665354301139, - "link": null, - "locked": false, - "fontSize": 16, - "fontFamily": 1, - "text": "Web UI\nlakectl\nSpark/lakeFSFS\nClient SDKs", - "baseline": 74, - "textAlign": "center", - "verticalAlign": "middle", - "containerId": "2ZfD2SrM-46E8aH7dhW-L", - "originalText": "Web UI\nlakectl\nSpark/lakeFSFS\nClient SDKs" - }, - { - "type": "text", - "version": 1364, - "versionNonce": 1171190037, - "isDeleted": false, - "id": "ePEr9LdcAMy2hfkyeKgHd", - "fillStyle": "hachure", - "strokeWidth": 1, - "strokeStyle": "solid", - "roughness": 1, - "opacity": 100, - "angle": 0, - "x": 939.2011718749999, - "y": 263.30859375, - "strokeColor": "#000000", - "backgroundColor": "transparent", - "width": 142, - "height": 50, - "seed": 1724102169, - "groupIds": [], - "strokeSharpness": "round", - "boundElements": [], - "updated": 1665354057906, - "link": null, - "locked": false, - "fontSize": 20, - "fontFamily": 1, - "text": "Authentication\nAuthorization", - "baseline": 43, - "textAlign": "center", - "verticalAlign": "middle", - "containerId": "FcI_PQ6EPBwrqiPhB5Ph8", - "originalText": "Authentication\nAuthorization" - }, - { - "type": "text", - "version": 986, - "versionNonce": 2007242427, - "isDeleted": false, - "id": "xZMYT3ni3ok2L7lxP6yGX", - "fillStyle": "hachure", - "strokeWidth": 1, - "strokeStyle": "solid", - "roughness": 1, - "opacity": 100, - "angle": 0, - "x": 967.201171875, - "y": 380.91145833333337, - "strokeColor": "#000000", - "backgroundColor": "transparent", - "width": 86, - "height": 25, - "seed": 1840934777, - "groupIds": [], - "strokeSharpness": "round", - "boundElements": [], - "updated": 1665354057906, - "link": null, - "locked": false, - "fontSize": 20, - "fontFamily": 1, - "text": "Graveler", - "baseline": 18, - "textAlign": "center", - "verticalAlign": "middle", - "containerId": "5ER2G9M0ztifcYbrsZIow", - "originalText": "Graveler" - }, - { - "type": "text", - "version": 1130, - "versionNonce": 1431963253, - "isDeleted": false, - "id": "lEnBUWHkXGiRrMqpAQ7DR", - "fillStyle": "hachure", - "strokeWidth": 1, - "strokeStyle": "solid", - "roughness": 1, - "opacity": 100, - "angle": 0, - "x": 966.201171875, - "y": 473.5143229166667, - "strokeColor": "#000000", - "backgroundColor": "transparent", - "width": 88, - "height": 50, - "seed": 281589721, - "groupIds": [], - "strokeSharpness": "round", - "boundElements": [], - "updated": 1665354057906, - "link": null, - "locked": false, - "fontSize": 20, - "fontFamily": 1, - "text": "Storage \nAdapter", - "baseline": 43, - "textAlign": "center", - "verticalAlign": "middle", - "containerId": "svs0ZIIoEf9geQINc8L5R", - "originalText": "Storage Adapter" - }, - { - "type": "text", - "version": 1204, - "versionNonce": 1242007387, - "isDeleted": false, - "id": "iKQzPTb5mtu0ByF_0GqRF", - "fillStyle": "hachure", - "strokeWidth": 1, - "strokeStyle": "solid", - "roughness": 1, - "opacity": 100, - "angle": 0, - "x": 982.201171875, - "y": 591.1171875, - "strokeColor": "#000000", - "backgroundColor": "transparent", - "width": 56, - "height": 25, - "seed": 1612702073, - "groupIds": [], - "strokeSharpness": "round", - "boundElements": [], - "updated": 1665354057906, - "link": null, - "locked": false, - "fontSize": 20, - "fontFamily": 1, - "text": "Hooks", - "baseline": 18, - "textAlign": "center", - "verticalAlign": "middle", - "containerId": "APPf-R5uuQPPULrXAaGQl", - "originalText": "Hooks" - }, - { - "type": "text", - "version": 394, - "versionNonce": 1637576661, - "isDeleted": false, - "id": "WlOxNA-p-slsjxP8fsP_x", - "fillStyle": "hachure", - "strokeWidth": 1, - "strokeStyle": "solid", - "roughness": 1, - "opacity": 100, - "angle": 0, - "x": 657.1484375, - "y": 554.80078125, - "strokeColor": "#000000", - "backgroundColor": "transparent", - "width": 118, - "height": 25, - "seed": 11736889, - "groupIds": [], - "strokeSharpness": "round", - "boundElements": [], - "updated": 1665354057906, - "link": null, - "locked": false, - "fontSize": 20, - "fontFamily": 1, - "text": "S3 gateway", - "baseline": 18, - "textAlign": "center", - "verticalAlign": "middle", - "containerId": "_philqtA2msBgS2RN0gJq", - "originalText": "S3 gateway" - }, - { - "type": "rectangle", - "version": 1587, - "versionNonce": 1349194491, - "isDeleted": false, - "id": "S6p1P0dhiH25w1GCOnTPp", - "fillStyle": "cross-hatch", - "strokeWidth": 2, - "strokeStyle": "solid", - "roughness": 0, - "opacity": 100, - "angle": 0, - "x": 1274.0637531815069, - "y": 504.4251538793582, - "strokeColor": "#000000", - "backgroundColor": "#40c05788", - "width": 65.08084106445301, - "height": 65.08084106445301, - "seed": 1208316473, - "groupIds": [ - "p8XMXpqXhpKUaBRdzQEwH", - "0GDE3jfCf0MWKFg5Aq0E4", - "0wcYe7v3VXAclSCBbcLcS", - "9p5ZZoHV7wS9XjrQwglVX" - ], - "strokeSharpness": "sharp", - "boundElements": [ - { - "id": "S6p1P0dhiH25w1GCOnTPp", - "type": "arrow" - }, - { - "id": "wECT1xqiaxw7G2ECloOnC", - "type": "arrow" - } - ], - "updated": 1665354780006, - "link": null, - "locked": false - }, - { - "type": "ellipse", - "version": 1371, - "versionNonce": 745430933, - "isDeleted": false, - "id": "tdjFsnYUHbm7qID9T53R7", - "fillStyle": "hachure", - "strokeWidth": 2, - "strokeStyle": "solid", - "roughness": 0, - "opacity": 100, - "angle": 0, - "x": 1287.6766083591658, - "y": 515.4922499048741, - "strokeColor": "#000000", - "backgroundColor": "transparent", - "width": 39.10563151041674, - "height": 10.753995455228363, - "seed": 988588503, - "groupIds": [ - "0wcYe7v3VXAclSCBbcLcS", - "9p5ZZoHV7wS9XjrQwglVX" - ], - "strokeSharpness": "round", - "boundElements": [], - "updated": 1665354780006, - "link": null, - "locked": false - }, - { - "type": "line", - "version": 1989, - "versionNonce": 1608044603, - "isDeleted": false, - "id": "i5RrCViQzPUN9hFfmBwDj", - "fillStyle": "hachure", - "strokeWidth": 2, - "strokeStyle": "solid", - "roughness": 0, - "opacity": 100, - "angle": 0, - "x": 1288.0345247754321, - "y": 521.3707179537521, - "strokeColor": "#000000", - "backgroundColor": "transparent", - "width": 38.295773237179446, - "height": 40.48662140675077, - "seed": 921486105, - "groupIds": [ - "0wcYe7v3VXAclSCBbcLcS", - "9p5ZZoHV7wS9XjrQwglVX" - ], - "strokeSharpness": "round", - "boundElements": [], - "updated": 1665354780006, - "link": null, - "locked": false, - "startBinding": null, - "endBinding": null, - "lastCommittedPoint": null, - "startArrowhead": null, - "endArrowhead": null, - "points": [ - [ - 0, - 0 - ], - [ - 3.8452774439103905, - 32.14685684595355 - ], - [ - 6.768312737880933, - 37.98883103590748 - ], - [ - 20.34867663261207, - 40.48662140675077 - ], - [ - 32.537268066406114, - 38.400380608974274 - ], - [ - 35.36686823918285, - 31.944173177083314 - ], - [ - 38.295773237179446, - 0.09767190004004078 - ] - ] - }, - { - "type": "ellipse", - "version": 1381, - "versionNonce": 1124574453, - "isDeleted": false, - "id": "n4YLocvG2ZKKd-4yTwDUV", - "fillStyle": "solid", - "strokeWidth": 1, - "strokeStyle": "solid", - "roughness": 0, - "opacity": 100, - "angle": 0, - "x": 1304.8048128613698, - "y": 531.6332171321251, - "strokeColor": "#000000", - "backgroundColor": "#000", - "width": 4.69818115234375, - "height": 4.69818115234375, - "seed": 226973431, - "groupIds": [ - "0wcYe7v3VXAclSCBbcLcS", - "9p5ZZoHV7wS9XjrQwglVX" - ], - "strokeSharpness": "round", - "boundElements": [], - "updated": 1665354780006, - "link": null, - "locked": false - }, - { - "type": "line", - "version": 2067, - "versionNonce": 241766619, - "isDeleted": false, - "id": "CDm-90FSnkFU14GpRbSiW", - "fillStyle": "solid", - "strokeWidth": 2, - "strokeStyle": "solid", - "roughness": 0, - "opacity": 100, - "angle": 0, - "x": 1307.2949312695728, - "y": 534.2062075496056, - "strokeColor": "#000000", - "backgroundColor": "#000", - "width": 23.24691772460949, - "height": 11.53113708496096, - "seed": 1920399353, - "groupIds": [ - "0wcYe7v3VXAclSCBbcLcS", - "9p5ZZoHV7wS9XjrQwglVX" - ], - "strokeSharpness": "round", - "boundElements": [], - "updated": 1665354780006, - "link": null, - "locked": false, - "startBinding": null, - "endBinding": null, - "lastCommittedPoint": null, - "startArrowhead": null, - "endArrowhead": null, - "points": [ - [ - 0, - 0 - ], - [ - 7.0229309082030795, - 7.4353179931640625 - ], - [ - 17.00493774414076, - 11.53113708496096 - ], - [ - 22.923687744140693, - 10.143841552734386 - ], - [ - 23.24691772460949, - 5.890612792968767 - ], - [ - 17.962628173828193, - 1.7561248779296932 - ] - ] - }, - { - "type": "text", - "version": 1900, - "versionNonce": 890322517, - "isDeleted": false, - "id": "gvnBdXocomaSYbJ15dp6t", - "fillStyle": "hachure", - "strokeWidth": 1, - "strokeStyle": "solid", - "roughness": 1, - "opacity": 100, - "angle": 0, - "x": 1222.1041737137334, - "y": 573.5953984820812, - "strokeColor": "#000000", - "backgroundColor": "transparent", - "width": 169, - "height": 75, - "seed": 1318019095, - "groupIds": [ - "9p5ZZoHV7wS9XjrQwglVX" - ], - "strokeSharpness": "sharp", - "boundElements": [], - "updated": 1665354780006, - "link": null, - "locked": false, - "fontSize": 20, - "fontFamily": 1, - "text": "Object Store\nBucket\n(S3, GCS, Azure)", - "baseline": 68, - "textAlign": "center", - "verticalAlign": "top", - "containerId": null, - "originalText": "Object Store\nBucket\n(S3, GCS, Azure)" - }, - { - "type": "text", - "version": 2360, - "versionNonce": 1315454331, - "isDeleted": false, - "id": "Dstrr1oxpMuw-m4JGSQNd", - "fillStyle": "hachure", - "strokeWidth": 1, - "strokeStyle": "solid", - "roughness": 1, - "opacity": 100, - "angle": 0, - "x": 1182.6666737137334, - "y": 379.8079656063978, - "strokeColor": "#000000", - "backgroundColor": "transparent", - "width": 248, - "height": 75, - "seed": 4475417, - "groupIds": [ - "3vUy3YGgxOz_BM44Ug3Wm" - ], - "strokeSharpness": "sharp", - "boundElements": [], - "updated": 1665354780006, - "link": null, - "locked": false, - "fontSize": 20, - "fontFamily": 1, - "text": "Key Value\nStore\n(PostgreSQL, DynamoDB)", - "baseline": 68, - "textAlign": "center", - "verticalAlign": "top", - "containerId": null, - "originalText": "Key Value\nStore\n(PostgreSQL, DynamoDB)" - }, - { - "type": "rectangle", - "version": 2053, - "versionNonce": 1499507637, - "isDeleted": false, - "id": "QrK4-de5GsjEjuLVX52yz", - "fillStyle": "cross-hatch", - "strokeWidth": 2, - "strokeStyle": "solid", - "roughness": 0, - "opacity": 100, - "angle": 0, - "x": 1274.1262531815069, - "y": 308.92678350367504, - "strokeColor": "#000000", - "backgroundColor": "#4c6ef588", - "width": 65.08084106445301, - "height": 65.08084106445301, - "seed": 1284489207, - "groupIds": [ - "ViKZFsTx2amo6qdF5pqIB", - "KLrkluwnW3w9OX_UyMG76", - "gJO33xk2S3V-m-z0IgTNC", - "3vUy3YGgxOz_BM44Ug3Wm" - ], - "strokeSharpness": "sharp", - "boundElements": [ - { - "id": "QrK4-de5GsjEjuLVX52yz", - "type": "arrow" - }, - { - "id": "KcyC9x5YsNNHh13B4n1nx", - "type": "arrow" - } - ], - "updated": 1665354780006, - "link": null, - "locked": false - }, - { - "type": "line", - "version": 2902, - "versionNonce": 594369211, - "isDeleted": false, - "id": "-EDC7qSOsy8GhwdGINNIA", - "fillStyle": "cross-hatch", - "strokeWidth": 2, - "strokeStyle": "solid", - "roughness": 0, - "opacity": 100, - "angle": 6.070517456686609, - "x": 1324.9076059293707, - "y": 358.25696050529285, - "strokeColor": "#000000", - "backgroundColor": "#fd7e14", - "width": 4.515147036494501, - "height": 6.809419856658472, - "seed": 1430626041, - "groupIds": [ - "eGSGWFEsoUXpvRXdhwmB4", - "AcdY7zGYermAUxB_oNgFC", - "gJO33xk2S3V-m-z0IgTNC", - "3vUy3YGgxOz_BM44Ug3Wm" - ], - "strokeSharpness": "sharp", - "boundElements": [], - "updated": 1665354780006, - "link": null, - "locked": false, - "startBinding": null, - "endBinding": null, - "lastCommittedPoint": null, - "startArrowhead": null, - "endArrowhead": "arrow", - "points": [ - [ - 0, - 0 - ], - [ - 4.515147036494501, - 6.809419856658472 - ] - ] - }, - { - "type": "line", - "version": 2795, - "versionNonce": 414646901, - "isDeleted": false, - "id": "Vgf2G2dX5nG0xUedD_BMI", - "fillStyle": "cross-hatch", - "strokeWidth": 2, - "strokeStyle": "solid", - "roughness": 0, - "opacity": 100, - "angle": 0.029928014204294584, - "x": 1328.4106760236623, - "y": 316.08795953786733, - "strokeColor": "#000000", - "backgroundColor": "#fd7e14", - "width": 4.878221980723982, - "height": 7.187766181342914, - "seed": 1117956375, - "groupIds": [ - "eGSGWFEsoUXpvRXdhwmB4", - "AcdY7zGYermAUxB_oNgFC", - "gJO33xk2S3V-m-z0IgTNC", - "3vUy3YGgxOz_BM44Ug3Wm" - ], - "strokeSharpness": "sharp", - "boundElements": [], - "updated": 1665354780006, - "link": null, - "locked": false, - "startBinding": null, - "endBinding": null, - "lastCommittedPoint": null, - "startArrowhead": null, - "endArrowhead": "arrow", - "points": [ - [ - 0, - 0 - ], - [ - -4.878221980723982, - 7.187766181342914 - ] - ] - }, - { - "type": "line", - "version": 3402, - "versionNonce": 872958811, - "isDeleted": false, - "id": "v9QeKKJVHsGUaok6amhuc", - "fillStyle": "cross-hatch", - "strokeWidth": 2, - "strokeStyle": "solid", - "roughness": 0, - "opacity": 100, - "angle": 5.765434113477622, - "x": 1332.629635512782, - "y": 361.39783418032465, - "strokeColor": "#000000", - "backgroundColor": "transparent", - "width": 7.027484543816502, - "height": 5.025822775075784, - "seed": 755587033, - "groupIds": [ - "eGSGWFEsoUXpvRXdhwmB4", - "AcdY7zGYermAUxB_oNgFC", - "gJO33xk2S3V-m-z0IgTNC", - "3vUy3YGgxOz_BM44Ug3Wm" - ], - "strokeSharpness": "sharp", - "boundElements": [], - "updated": 1665354780006, - "link": null, - "locked": false, - "startBinding": null, - "endBinding": null, - "lastCommittedPoint": null, - "startArrowhead": null, - "endArrowhead": null, - "points": [ - [ - 0, - 0 - ], - [ - -2.6558630674341366, - 5.025822775075784 - ], - [ - -7.027484543816502, - 2.0346398876757292 - ] - ] - }, - { - "type": "line", - "version": 3619, - "versionNonce": 670624725, - "isDeleted": false, - "id": "Y6DGEH9GO3DBRnS6V3Bmu", - "fillStyle": "cross-hatch", - "strokeWidth": 2, - "strokeStyle": "solid", - "roughness": 0, - "opacity": 100, - "angle": 2.48666424209895, - "x": 1285.537585021598, - "y": 315.4442679408971, - "strokeColor": "#000000", - "backgroundColor": "transparent", - "width": 6.480608834450265, - "height": 4.428740972665685, - "seed": 79392311, - "groupIds": [ - "eGSGWFEsoUXpvRXdhwmB4", - "AcdY7zGYermAUxB_oNgFC", - "gJO33xk2S3V-m-z0IgTNC", - "3vUy3YGgxOz_BM44Ug3Wm" - ], - "strokeSharpness": "sharp", - "boundElements": [], - "updated": 1665354780006, - "link": null, - "locked": false, - "startBinding": null, - "endBinding": null, - "lastCommittedPoint": null, - "startArrowhead": null, - "endArrowhead": null, - "points": [ - [ - 0, - 0 - ], - [ - -3.0517914343207093, - 4.428740972665685 - ], - [ - -6.4806088344502655, - 0.4183784164032155 - ] - ] - }, - { - "type": "line", - "version": 2996, - "versionNonce": 557590523, - "isDeleted": false, - "id": "aQCrDAYHZkiHVAz3R-cLD", - "fillStyle": "cross-hatch", - "strokeWidth": 2, - "strokeStyle": "solid", - "roughness": 0, - "opacity": 100, - "angle": 6.070517456686609, - "x": 1282.3188097297736, - "y": 316.7779651160744, - "strokeColor": "#000000", - "backgroundColor": "#fd7e14", - "width": 4.515147036494501, - "height": 6.809419856658472, - "seed": 1235416249, - "groupIds": [ - "eGSGWFEsoUXpvRXdhwmB4", - "AcdY7zGYermAUxB_oNgFC", - "gJO33xk2S3V-m-z0IgTNC", - "3vUy3YGgxOz_BM44Ug3Wm" - ], - "strokeSharpness": "sharp", - "boundElements": [], - "updated": 1665354780006, - "link": null, - "locked": false, - "startBinding": null, - "endBinding": null, - "lastCommittedPoint": null, - "startArrowhead": null, - "endArrowhead": "arrow", - "points": [ - [ - 0, - 0 - ], - [ - 4.515147036494501, - 6.809419856658472 - ] - ] - }, - { - "type": "line", - "version": 2859, - "versionNonce": 1039575349, - "isDeleted": false, - "id": "jI92EQqdfBMt7di-mknre", - "fillStyle": "cross-hatch", - "strokeWidth": 2, - "strokeStyle": "solid", - "roughness": 0, - "opacity": 100, - "angle": 0.06885648930104615, - "x": 1287.3425001592234, - "y": 358.0083078048653, - "strokeColor": "#000000", - "backgroundColor": "#fd7e14", - "width": 4.878221980723982, - "height": 7.187766181342914, - "seed": 1304334167, - "groupIds": [ - "eGSGWFEsoUXpvRXdhwmB4", - "AcdY7zGYermAUxB_oNgFC", - "gJO33xk2S3V-m-z0IgTNC", - "3vUy3YGgxOz_BM44Ug3Wm" - ], - "strokeSharpness": "sharp", - "boundElements": [], - "updated": 1665354780006, - "link": null, - "locked": false, - "startBinding": null, - "endBinding": null, - "lastCommittedPoint": null, - "startArrowhead": null, - "endArrowhead": "arrow", - "points": [ - [ - 0, - 0 - ], - [ - -4.878221980723982, - 7.187766181342914 - ] - ] - }, - { - "type": "line", - "version": 3628, - "versionNonce": 1091268763, - "isDeleted": false, - "id": "1Rmd-DXZ6u1CzIxIxpIX-", - "fillStyle": "cross-hatch", - "strokeWidth": 2, - "strokeStyle": "solid", - "roughness": 0, - "opacity": 100, - "angle": 3.854199750177644, - "x": 1331.6476757175305, - "y": 314.65376079179435, - "strokeColor": "#000000", - "backgroundColor": "transparent", - "width": 6.480608834450265, - "height": 4.428740972665685, - "seed": 1588983193, - "groupIds": [ - "eGSGWFEsoUXpvRXdhwmB4", - "AcdY7zGYermAUxB_oNgFC", - "gJO33xk2S3V-m-z0IgTNC", - "3vUy3YGgxOz_BM44Ug3Wm" - ], - "strokeSharpness": "sharp", - "boundElements": [], - "updated": 1665354780006, - "link": null, - "locked": false, - "startBinding": null, - "endBinding": null, - "lastCommittedPoint": null, - "startArrowhead": null, - "endArrowhead": null, - "points": [ - [ - 0, - 0 - ], - [ - -3.0517914343207093, - 4.428740972665685 - ], - [ - -6.4806088344502655, - 0.4183784164032155 - ] - ] - }, - { - "type": "line", - "version": 3622, - "versionNonce": 1008056981, - "isDeleted": false, - "id": "grDakEOTelrLa7WPFOrwt", - "fillStyle": "cross-hatch", - "strokeWidth": 2, - "strokeStyle": "solid", - "roughness": 0, - "opacity": 100, - "angle": 0.663921886409196, - "x": 1285.56544494387, - "y": 362.2619734878205, - "strokeColor": "#000000", - "backgroundColor": "transparent", - "width": 6.480608834450265, - "height": 4.428740972665685, - "seed": 134253687, - "groupIds": [ - "eGSGWFEsoUXpvRXdhwmB4", - "AcdY7zGYermAUxB_oNgFC", - "gJO33xk2S3V-m-z0IgTNC", - "3vUy3YGgxOz_BM44Ug3Wm" - ], - "strokeSharpness": "sharp", - "boundElements": [], - "updated": 1665354780006, - "link": null, - "locked": false, - "startBinding": null, - "endBinding": null, - "lastCommittedPoint": null, - "startArrowhead": null, - "endArrowhead": null, - "points": [ - [ - 0, - 0 - ], - [ - -3.0517914343207093, - 4.428740972665685 - ], - [ - -6.4806088344502655, - 0.4183784164032155 - ] - ] - }, - { - "type": "line", - "version": 4551, - "versionNonce": 86549819, - "isDeleted": false, - "id": "Yu5RqzMvmG_q5RNZGObUb", - "fillStyle": "solid", - "strokeWidth": 2, - "strokeStyle": "solid", - "roughness": 0, - "opacity": 100, - "angle": 0, - "x": 1293.9760669426707, - "y": 326.56302247891716, - "strokeColor": "#000000", - "backgroundColor": "transparent", - "width": 23.135415315317864, - "height": 36.920965026381495, - "seed": 1601559161, - "groupIds": [ - "pWdcZI6tf4oqswgXag4nZ", - "eGSGWFEsoUXpvRXdhwmB4", - "AcdY7zGYermAUxB_oNgFC", - "gJO33xk2S3V-m-z0IgTNC", - "3vUy3YGgxOz_BM44Ug3Wm" - ], - "strokeSharpness": "round", - "boundElements": [], - "updated": 1665354780006, - "link": null, - "locked": false, - "startBinding": null, - "endBinding": null, - "lastCommittedPoint": null, - "startArrowhead": null, - "endArrowhead": null, - "points": [ - [ - 0, - 0 - ], - [ - 0, - 25.503446923456124 - ], - [ - 0.40532440068439735, - 30.11539925866262 - ], - [ - 3.1876357067575456, - 31.80990219489879 - ], - [ - 7.354871715271549, - 33.14980858335201 - ], - [ - 11.79869252961072, - 33.49583129123406 - ], - [ - 15.592667073872917, - 33.15082359908378 - ], - [ - 19.15112117952793, - 32.29793104408936 - ], - [ - 22.700411705907744, - 29.933635302086913 - ], - [ - 22.943034924407762, - 25.503446923456124 - ], - [ - 23.135415315317864, - 3.4738605093386736 - ], - [ - 22.843298221964968, - -0.11105662756083756 - ], - [ - 19.96759931086617, - -2.0234583686940315 - ], - [ - 16.74018432777816, - -3.10679842415807 - ], - [ - 12.544405636380267, - -3.4251337351474422 - ], - [ - 9.881394068972043, - -3.4158696025941406 - ], - [ - 4.21068157261921, - -2.726823717701885 - ], - [ - 0, - 0 - ] - ] - }, - { - "type": "ellipse", - "version": 2708, - "versionNonce": 990617589, - "isDeleted": false, - "id": "5N1mH9nR7sZUzHHqQQx9k", - "fillStyle": "solid", - "strokeWidth": 2, - "strokeStyle": "solid", - "roughness": 0, - "opacity": 100, - "angle": 0, - "x": 1293.8908851715294, - "y": 323.01507548738044, - "strokeColor": "#000000", - "backgroundColor": "#ffffff", - "width": 23.09445309598474, - "height": 6.279263528942145, - "seed": 1598416279, - "groupIds": [ - "pWdcZI6tf4oqswgXag4nZ", - "eGSGWFEsoUXpvRXdhwmB4", - "AcdY7zGYermAUxB_oNgFC", - "gJO33xk2S3V-m-z0IgTNC", - "3vUy3YGgxOz_BM44Ug3Wm" - ], - "strokeSharpness": "sharp", - "boundElements": [ - { - "id": "qDAjBIpEBo14rHQOTksb5", - "type": "arrow" - }, - { - "id": "k87rpiXpFp_U0HYO0AxcM", - "type": "arrow" - } - ], - "updated": 1665354780006, - "link": null, - "locked": false - }, - { - "type": "line", - "version": 2549, - "versionNonce": 1200018043, - "isDeleted": false, - "id": "i0C0dBGFwbpjXPU7tEH70", - "fillStyle": "cross-hatch", - "strokeWidth": 2, - "strokeStyle": "solid", - "roughness": 0, - "opacity": 100, - "angle": 0, - "x": 1294.290593207425, - "y": 335.6774826586258, - "strokeColor": "#000000", - "backgroundColor": "transparent", - "width": 22.7078851177541, - "height": 2.9175197700512814, - "seed": 212214617, - "groupIds": [ - "AcdY7zGYermAUxB_oNgFC", - "gJO33xk2S3V-m-z0IgTNC", - "3vUy3YGgxOz_BM44Ug3Wm" - ], - "strokeSharpness": "round", - "boundElements": [], - "updated": 1665354780006, - "link": null, - "locked": false, - "startBinding": null, - "endBinding": null, - "lastCommittedPoint": null, - "startArrowhead": null, - "endArrowhead": null, - "points": [ - [ - 0, - 0 - ], - [ - 0.6822069967714703, - 0.7376254855918456 - ], - [ - 2.3335499504986355, - 1.5019708109206908 - ], - [ - 4.313367541800834, - 1.9645855665289391 - ], - [ - 8.191658726607782, - 2.5738270010049926 - ], - [ - 11.917316337340536, - 2.6118955005120905 - ], - [ - 15.218956419281389, - 2.402545763947514 - ], - [ - 18.07580483939641, - 2.022006211239024 - ], - [ - 20.76827744650372, - 1.311150431337028 - ], - [ - 22.157553094084978, - 0.515659662955493 - ], - [ - 22.707885117754103, - -0.3056242695391904 - ] - ] - }, - { - "type": "line", - "version": 2577, - "versionNonce": 1994516149, - "isDeleted": false, - "id": "yaYPo2SPPV5_7S6L6vQCg", - "fillStyle": "cross-hatch", - "strokeWidth": 2, - "strokeStyle": "solid", - "roughness": 0, - "opacity": 100, - "angle": 0, - "x": 1293.6484666284866, - "y": 346.41196748549527, - "strokeColor": "#000000", - "backgroundColor": "transparent", - "width": 22.7078851177541, - "height": 2.9175197700512814, - "seed": 314776247, - "groupIds": [ - "AcdY7zGYermAUxB_oNgFC", - "gJO33xk2S3V-m-z0IgTNC", - "3vUy3YGgxOz_BM44Ug3Wm" - ], - "strokeSharpness": "round", - "boundElements": [], - "updated": 1665354780006, - "link": null, - "locked": false, - "startBinding": null, - "endBinding": null, - "lastCommittedPoint": null, - "startArrowhead": null, - "endArrowhead": null, - "points": [ - [ - 0, - 0 - ], - [ - 0.6822069967714703, - 0.7376254855918456 - ], - [ - 2.3335499504986355, - 1.5019708109206908 - ], - [ - 4.313367541800834, - 1.9645855665289391 - ], - [ - 8.191658726607782, - 2.5738270010049926 - ], - [ - 11.917316337340536, - 2.6118955005120905 - ], - [ - 15.218956419281389, - 2.402545763947514 - ], - [ - 18.07580483939641, - 2.022006211239024 - ], - [ - 20.76827744650372, - 1.311150431337028 - ], - [ - 22.157553094084978, - 0.515659662955493 - ], - [ - 22.707885117754103, - -0.3056242695391904 - ] - ] - }, - { - "type": "arrow", - "version": 6012, - "versionNonce": 1537912763, - "isDeleted": false, - "id": "qDAjBIpEBo14rHQOTksb5", - "fillStyle": "cross-hatch", - "strokeWidth": 2, - "strokeStyle": "solid", - "roughness": 0, - "opacity": 100, - "angle": 6.034244644020102, - "x": 1293.570274904469, - "y": 333.0746597642921, - "strokeColor": "#000000", - "backgroundColor": "#fd7e14", - "width": 9.312361834934453, - "height": 17.671409793681782, - "seed": 1117409337, - "groupIds": [ - "AcdY7zGYermAUxB_oNgFC", - "gJO33xk2S3V-m-z0IgTNC", - "3vUy3YGgxOz_BM44Ug3Wm" - ], - "strokeSharpness": "round", - "boundElements": [], - "updated": 1665354780815, - "link": null, - "locked": false, - "startBinding": { - "elementId": "5N1mH9nR7sZUzHHqQQx9k", - "focus": 0.17059876156304296, - "gap": 5.982831142860286 - }, - "endBinding": null, - "lastCommittedPoint": null, - "startArrowhead": null, - "endArrowhead": null, - "points": [ - [ - 0, - 0 - ], - [ - -3.465638014918799, - 0.7718575351198613 - ], - [ - -5.876234540924429, - 2.2686732691115044 - ], - [ - -7.611221385428145, - 4.187007865361685 - ], - [ - -8.997800821851968, - 7.29372360223152 - ], - [ - -9.312361834934453, - 9.676626083368124 - ], - [ - -8.554263497776105, - 13.118230666911925 - ], - [ - -7.085140858725698, - 15.667973469486617 - ], - [ - -4.895857300277928, - 17.671409793681782 - ] - ] - }, - { - "type": "arrow", - "version": 6142, - "versionNonce": 224755061, - "isDeleted": false, - "id": "k87rpiXpFp_U0HYO0AxcM", - "fillStyle": "cross-hatch", - "strokeWidth": 2, - "strokeStyle": "solid", - "roughness": 0, - "opacity": 100, - "angle": 0.31086799431261625, - "x": 1316.7807046060636, - "y": 333.0966330332307, - "strokeColor": "#000000", - "backgroundColor": "#fd7e14", - "width": 10.586513682546029, - "height": 18.03828294930969, - "seed": 119319511, - "groupIds": [ - "AcdY7zGYermAUxB_oNgFC", - "gJO33xk2S3V-m-z0IgTNC", - "3vUy3YGgxOz_BM44Ug3Wm" - ], - "strokeSharpness": "round", - "boundElements": [], - "updated": 1665354780815, - "link": null, - "locked": false, - "startBinding": { - "elementId": "5N1mH9nR7sZUzHHqQQx9k", - "focus": -0.31376123802392564, - "gap": 5.844781649134341 - }, - "endBinding": null, - "lastCommittedPoint": null, - "startArrowhead": null, - "endArrowhead": null, - "points": [ - [ - 0, - 0 - ], - [ - 3.9398194479572393, - 0.7878819391097368 - ], - [ - 6.68024272166653, - 2.31577281187833 - ], - [ - 8.652616894185485, - 4.273933628848496 - ], - [ - 10.228913266236956, - 7.445147366688905 - ], - [ - 10.586513682546029, - 9.877520883980232 - ], - [ - 9.724689522220247, - 13.390576039308046 - ], - [ - 8.05455608074463, - 15.993253621786636 - ], - [ - 5.565726634756559, - 18.03828294930969 - ] - ] - }, - { - "type": "arrow", - "version": 2899, - "versionNonce": 270232853, - "isDeleted": false, - "id": "KcyC9x5YsNNHh13B4n1nx", - "fillStyle": "hachure", - "strokeWidth": 1, - "strokeStyle": "solid", - "roughness": 1, - "opacity": 100, - "angle": 0, - "x": 1125.0397205887334, - "y": 343.70943497603946, - "strokeColor": "#000000", - "backgroundColor": "transparent", - "width": 134.44921875, - "height": 0, - "seed": 1818528151, - "groupIds": [], - "strokeSharpness": "round", - "boundElements": [], - "updated": 1665354780006, - "link": null, - "locked": false, - "startBinding": { - "elementId": "ovxFkdb6JYmDVntxtXYhP", - "focus": -0.4924045350392734, - "gap": 16.183593749999943 - }, - "endBinding": { - "elementId": "QrK4-de5GsjEjuLVX52yz", - "focus": -0.06890602221680925, - "gap": 14.637313842773438 - }, - "lastCommittedPoint": null, - "startArrowhead": null, - "endArrowhead": "arrow", - "points": [ - [ - 0, - 0 - ], - [ - 134.44921875, - 0 - ] - ] - }, - { - "type": "arrow", - "version": 1980, - "versionNonce": 556071835, - "isDeleted": false, - "id": "wECT1xqiaxw7G2ECloOnC", - "fillStyle": "hachure", - "strokeWidth": 1, - "strokeStyle": "solid", - "roughness": 1, - "opacity": 100, - "angle": 0, - "x": 1124.9655018387334, - "y": 535.313772100086, - "strokeColor": "#000000", - "backgroundColor": "transparent", - "width": 136.41075134277344, - "height": 0, - "seed": 2147214713, - "groupIds": [], - "strokeSharpness": "round", - "boundElements": [], - "updated": 1665354780006, - "link": null, - "locked": false, - "startBinding": { - "elementId": "ovxFkdb6JYmDVntxtXYhP", - "focus": 0.4224560986162166, - "gap": 16.109374999999943 - }, - "endBinding": { - "elementId": "S6p1P0dhiH25w1GCOnTPp", - "focus": 0.05076155392223218, - "gap": 12.6875 - }, - "lastCommittedPoint": null, - "startArrowhead": null, - "endArrowhead": "arrow", - "points": [ - [ - 0, - 0 - ], - [ - 136.41075134277344, - 0 - ] - ] - }, - { - "type": "rectangle", - "version": 571, - "versionNonce": 1719794715, - "isDeleted": false, - "id": "-2EVeASmSy6Dzai2GOLcp", - "fillStyle": "hachure", - "strokeWidth": 1, - "strokeStyle": "solid", - "roughness": 1, - "opacity": 100, - "angle": 0, - "x": 863.2155018387333, - "y": 720.4729694209747, - "strokeColor": "#000000", - "backgroundColor": "transparent", - "width": 130.29506185356837, - "height": 78.10175988474508, - "seed": 67551833, - "groupIds": [], - "strokeSharpness": "round", - "boundElements": [ - { - "id": "S4SJSvhxNOOGmTdSWiyvI", - "type": "arrow" - } - ], - "updated": 1665354057906, - "link": null, - "locked": false - }, - { - "type": "rectangle", - "version": 939, - "versionNonce": 935307029, - "isDeleted": false, - "id": "QGA9hcyCu7CIxfyEs9-kR", - "fillStyle": "hachure", - "strokeWidth": 1, - "strokeStyle": "solid", - "roughness": 1, - "opacity": 100, - "angle": 0, - "x": 1014.1647205887334, - "y": 722.5747293057198, - "strokeColor": "#000000", - "backgroundColor": "transparent", - "width": 131, - "height": 76, - "seed": 515180601, - "groupIds": [], - "strokeSharpness": "round", - "boundElements": [ - { - "type": "text", - "id": "GHNC0SfzsX_EaicI6lR8W" - }, - { - "id": "90Cmc39ToPGS7gEAyoJ0m", - "type": "arrow" - } - ], - "updated": 1665354057906, - "link": null, - "locked": false - }, - { - "type": "text", - "version": 589, - "versionNonce": 1656864955, - "isDeleted": false, - "id": "GHNC0SfzsX_EaicI6lR8W", - "fillStyle": "hachure", - "strokeWidth": 1, - "strokeStyle": "solid", - "roughness": 1, - "opacity": 100, - "angle": 0, - "x": 1039.6647205887334, - "y": 735.5747293057198, - "strokeColor": "#000000", - "backgroundColor": "transparent", - "width": 80, - "height": 50, - "seed": 499778169, - "groupIds": [], - "strokeSharpness": "round", - "boundElements": [], - "updated": 1665354057906, - "link": null, - "locked": false, - "fontSize": 20, - "fontFamily": 1, - "text": "WebHook\nServer", - "baseline": 43, - "textAlign": "center", - "verticalAlign": "middle", - "containerId": "QGA9hcyCu7CIxfyEs9-kR", - "originalText": "WebHook\nServer" - }, - { - "type": "line", - "version": 2597, - "versionNonce": 1942223989, - "isDeleted": false, - "id": "GW79IEdKEHYHBe8eryERC", - "fillStyle": "cross-hatch", - "strokeWidth": 1, - "strokeStyle": "solid", - "roughness": 2, - "opacity": 100, - "angle": 6.239310365041726, - "x": 878.2580781443856, - "y": 743.2507145334735, - "strokeColor": "#c92a2a", - "backgroundColor": "#c92a2a", - "width": 18.43824366436583, - "height": 17.30749582081731, - "seed": 659418937, - "groupIds": [ - "s-Go0sl61eFF_N1KyhrXn", - "6rZueH22yRCRic155yH5W" - ], - "strokeSharpness": "round", - "boundElements": [], - "updated": 1665354057906, - "link": null, - "locked": false, - "startBinding": null, - "endBinding": null, - "lastCommittedPoint": null, - "startArrowhead": null, - "endArrowhead": null, - "points": [ - [ - 0, - 0 - ], - [ - 11.207015016493163, - 0 - ], - [ - 14.485970010828552, - 1.639477497167701 - ], - [ - 18.43824366436583, - 8.146087016565971 - ], - [ - 16.16819789905669, - 17.30749582081731 - ], - [ - 0, - 0 - ] - ] - }, - { - "type": "line", - "version": 2816, - "versionNonce": 400552283, - "isDeleted": false, - "id": "CKp-X9iUrQwI9UIKMEKro", - "fillStyle": "cross-hatch", - "strokeWidth": 1, - "strokeStyle": "solid", - "roughness": 2, - "opacity": 100, - "angle": 3.0886314529654637, - "x": 895.6849336935974, - "y": 760.4526337597035, - "strokeColor": "#40c057", - "backgroundColor": "#40c057", - "width": 18.43824366436583, - "height": 17.30749582081731, - "seed": 808877271, - "groupIds": [ - "s-Go0sl61eFF_N1KyhrXn", - "6rZueH22yRCRic155yH5W" - ], - "strokeSharpness": "round", - "boundElements": [], - "updated": 1665354057906, - "link": null, - "locked": false, - "startBinding": null, - "endBinding": null, - "lastCommittedPoint": null, - "startArrowhead": null, - "endArrowhead": null, - "points": [ - [ - 0, - 0 - ], - [ - 11.207015016493163, - 0 - ], - [ - 14.485970010828552, - 1.639477497167701 - ], - [ - 18.43824366436583, - 8.146087016565971 - ], - [ - 16.16819789905669, - 17.30749582081731 - ], - [ - 0, - 0 - ] - ] - }, - { - "type": "line", - "version": 2735, - "versionNonce": 1263969749, - "isDeleted": false, - "id": "UyAUCreQoGs3b5R1XOskd", - "fillStyle": "cross-hatch", - "strokeWidth": 1, - "strokeStyle": "solid", - "roughness": 2, - "opacity": 100, - "angle": 4.678603911496447, - "x": 877.9131086878907, - "y": 760.6056946708031, - "strokeColor": "#364fc7", - "backgroundColor": "#364fc7", - "width": 18.43824366436583, - "height": 17.30749582081731, - "seed": 1914544153, - "groupIds": [ - "s-Go0sl61eFF_N1KyhrXn", - "6rZueH22yRCRic155yH5W" - ], - "strokeSharpness": "round", - "boundElements": [], - "updated": 1665354057907, - "link": null, - "locked": false, - "startBinding": null, - "endBinding": null, - "lastCommittedPoint": null, - "startArrowhead": null, - "endArrowhead": null, - "points": [ - [ - 0, - 0 - ], - [ - 11.207015016493163, - 0 - ], - [ - 14.485970010828552, - 1.639477497167701 - ], - [ - 18.43824366436583, - 8.146087016565971 - ], - [ - 16.16819789905669, - 17.30749582081731 - ], - [ - 0, - 0 - ] - ] - }, - { - "type": "line", - "version": 2934, - "versionNonce": 925830651, - "isDeleted": false, - "id": "ko_pIRQK8MO7BhRsKb3qD", - "fillStyle": "cross-hatch", - "strokeWidth": 1, - "strokeStyle": "solid", - "roughness": 2, - "opacity": 100, - "angle": 1.549319999052873, - "x": 896.5709399155492, - "y": 743.4814283814526, - "strokeColor": "#15aabf", - "backgroundColor": "#15aabf", - "width": 18.43824366436583, - "height": 17.30749582081731, - "seed": 2017783, - "groupIds": [ - "s-Go0sl61eFF_N1KyhrXn", - "6rZueH22yRCRic155yH5W" - ], - "strokeSharpness": "round", - "boundElements": [], - "updated": 1665354057907, - "link": null, - "locked": false, - "startBinding": null, - "endBinding": null, - "lastCommittedPoint": null, - "startArrowhead": null, - "endArrowhead": null, - "points": [ - [ - 0, - 0 - ], - [ - 11.207015016493163, - 0 - ], - [ - 14.485970010828552, - 1.639477497167701 - ], - [ - 18.43824366436583, - 8.146087016565971 - ], - [ - 16.16819789905669, - 17.30749582081731 - ], - [ - 0, - 0 - ] - ] - }, - { - "type": "text", - "version": 2340, - "versionNonce": 1636639541, - "isDeleted": false, - "id": "C1z4kYjS5cqqozcVs0TUd", - "fillStyle": "solid", - "strokeWidth": 4, - "strokeStyle": "solid", - "roughness": 2, - "opacity": 100, - "angle": 0, - "x": 914.0789195264196, - "y": 748.7180603534874, - "strokeColor": "#000000", - "backgroundColor": "#364fc7", - "width": 66, - "height": 25, - "seed": 763639033, - "groupIds": [ - "6rZueH22yRCRic155yH5W" - ], - "strokeSharpness": "round", - "boundElements": [], - "updated": 1665354057907, - "link": null, - "locked": false, - "fontSize": 20, - "fontFamily": 1, - "text": "Airflow", - "baseline": 18, - "textAlign": "center", - "verticalAlign": "top", - "containerId": null, - "originalText": "Airflow" - }, - { - "type": "arrow", - "version": 501, - "versionNonce": 598840987, - "isDeleted": false, - "id": "S4SJSvhxNOOGmTdSWiyvI", - "fillStyle": "hachure", - "strokeWidth": 1, - "strokeStyle": "solid", - "roughness": 1, - "opacity": 100, - "angle": 0, - "x": 1000.8877577080685, - "y": 651.1171875, - "strokeColor": "#000000", - "backgroundColor": "transparent", - "width": 76.4718001322866, - "height": 66.55519805571976, - "seed": 1202091319, - "groupIds": [], - "strokeSharpness": "round", - "boundElements": [], - "updated": 1665354057907, - "link": null, - "locked": false, - "startBinding": { - "elementId": "APPf-R5uuQPPULrXAaGQl", - "focus": -0.3278195400237206, - "gap": 1 - }, - "endBinding": { - "elementId": "-2EVeASmSy6Dzai2GOLcp", - "focus": -0.47296661320585337, - "gap": 2.8005838652548505 - }, - "lastCommittedPoint": null, - "startArrowhead": null, - "endArrowhead": "arrow", - "points": [ - [ - 0, - 0 - ], - [ - -76.4718001322866, - 66.55519805571976 - ] - ] - }, - { - "type": "arrow", - "version": 435, - "versionNonce": 1523381397, - "isDeleted": false, - "id": "90Cmc39ToPGS7gEAyoJ0m", - "fillStyle": "hachure", - "strokeWidth": 1, - "strokeStyle": "solid", - "roughness": 1, - "opacity": 100, - "angle": 0, - "x": 1028.9420643387334, - "y": 649.4946511807198, - "strokeColor": "#000000", - "backgroundColor": "transparent", - "width": 49.6228133264749, - "height": 71.74441315406978, - "seed": 1476473241, - "groupIds": [], - "strokeSharpness": "round", - "boundElements": [], - "updated": 1665354057907, - "link": null, - "locked": false, - "startBinding": null, - "endBinding": { - "elementId": "QGA9hcyCu7CIxfyEs9-kR", - "focus": 0.284443406640884, - "gap": 1.3356649709302246 - }, - "lastCommittedPoint": null, - "startArrowhead": null, - "endArrowhead": "arrow", - "points": [ - [ - 0, - 0 - ], - [ - 49.6228133264749, - 71.74441315406978 - ] - ] - }, - { - "type": "arrow", - "version": 725, - "versionNonce": 1056310715, - "isDeleted": false, - "id": "qlZi2lbDur0dqp82LYO_L", - "fillStyle": "hachure", - "strokeWidth": 1, - "strokeStyle": "solid", - "roughness": 1, - "opacity": 100, - "angle": 0, - "x": 618.9576893387333, - "y": 279.30927731586377, - "strokeColor": "#000000", - "backgroundColor": "transparent", - "width": 146.6601562499999, - "height": 2.02734375, - "seed": 1645838231, - "groupIds": [], - "strokeSharpness": "round", - "boundElements": [], - "updated": 1665354290661, - "link": null, - "locked": false, - "startBinding": { - "elementId": "Bxgkr0odgFyw9uf9SBh9m", - "focus": 0.012381923951955132, - "gap": 11.729810661266697 - }, - "endBinding": { - "elementId": "c28Qe0SCzKMZd3JP8Kk3b", - "focus": -0.030587254493153675, - "gap": 13.949970758483033 - }, - "lastCommittedPoint": null, - "startArrowhead": null, - "endArrowhead": "arrow", - "points": [ - [ - 0, - 0 - ], - [ - -146.6601562499999, - -2.02734375 - ] - ] - }, - { - "type": "text", - "version": 379, - "versionNonce": 599433083, - "isDeleted": false, - "id": "EdJsglDp3VgseBHeDcM06", - "fillStyle": "hachure", - "strokeWidth": 1, - "strokeStyle": "solid", - "roughness": 1, - "opacity": 100, - "angle": 0, - "x": 298.0240955887333, - "y": 194.4634011807198, - "strokeColor": "#000000", - "backgroundColor": "transparent", - "width": 104, - "height": 25, - "seed": 100125529, - "groupIds": [], - "strokeSharpness": "round", - "boundElements": [], - "updated": 1665354359520, - "link": null, - "locked": false, - "fontSize": 20, - "fontFamily": 1, - "text": "Web Users", - "baseline": 18, - "textAlign": "left", - "verticalAlign": "top", - "containerId": null, - "originalText": "Web Users" - }, - { - "type": "text", - "version": 629, - "versionNonce": 130473301, - "isDeleted": false, - "id": "ZTIEx8NH_vfxlwKr_MrOM", - "fillStyle": "hachure", - "strokeWidth": 1, - "strokeStyle": "solid", - "roughness": 1, - "opacity": 100, - "angle": 0, - "x": 298.8365955887333, - "y": 507.66261993071976, - "strokeColor": "#000000", - "backgroundColor": "transparent", - "width": 115, - "height": 25, - "seed": 1796789593, - "groupIds": [], - "strokeSharpness": "round", - "boundElements": [], - "updated": 1665354315695, - "link": null, - "locked": false, - "fontSize": 20, - "fontFamily": 1, - "text": "Applications", - "baseline": 18, - "textAlign": "left", - "verticalAlign": "top", - "containerId": null, - "originalText": "Applications" - }, - { - "type": "text", - "version": 717, - "versionNonce": 2085277173, - "isDeleted": false, - "id": "iuEBgNrxLinbhXOGKd74q", - "fillStyle": "hachure", - "strokeWidth": 1, - "strokeStyle": "solid", - "roughness": 1, - "opacity": 100, - "angle": 0, - "x": 298.0240955887333, - "y": 350.2759011807198, - "strokeColor": "#000000", - "backgroundColor": "transparent", - "width": 137, - "height": 25, - "seed": 489058615, - "groupIds": [], - "strokeSharpness": "round", - "boundElements": [], - "updated": 1665354301139, - "link": null, - "locked": false, - "fontSize": 20, - "fontFamily": 1, - "text": "lakeFS clients", - "baseline": 18, - "textAlign": "left", - "verticalAlign": "top", - "containerId": null, - "originalText": "lakeFS clients" - }, - { - "type": "text", - "version": 565, - "versionNonce": 203481403, - "isDeleted": false, - "id": "6tgg9ZzYCBwT1BVPy4fTj", - "fillStyle": "hachure", - "strokeWidth": 1, - "strokeStyle": "solid", - "roughness": 1, - "opacity": 100, - "angle": 0, - "x": 312.19140625, - "y": 543.07421875, - "strokeColor": "#000000", - "backgroundColor": "transparent", - "width": 130, - "height": 100, - "seed": 309086487, - "groupIds": [], - "strokeSharpness": "round", - "boundElements": [], - "updated": 1665354315695, - "link": null, - "locked": false, - "fontSize": 16, - "fontFamily": 1, - "text": "Boto S3 Router\nSpark/S3A\nKafka\nTrino\nmlflow and etc", - "baseline": 94, - "textAlign": "center", - "verticalAlign": "middle", - "containerId": "LFEQGiwWugw-bHxiMcZeO", - "originalText": "Boto S3 Router\nSpark/S3A\nKafka\nTrino\nmlflow and etc" - }, - { - "type": "arrow", - "version": 1560, - "versionNonce": 2145815675, - "isDeleted": false, - "id": "AB97GotmGG213cLmZEUpn", - "fillStyle": "hachure", - "strokeWidth": 1, - "strokeStyle": "solid", - "roughness": 1, - "opacity": 100, - "angle": 0, - "x": 475.5631580887333, - "y": 570.0230638987974, - "strokeColor": "#000000", - "backgroundColor": "transparent", - "width": 138.765625, - "height": 0, - "seed": 1979912921, - "groupIds": [], - "strokeSharpness": "round", - "boundElements": [], - "updated": 1665354323419, - "link": null, - "locked": false, - "startBinding": { - "elementId": "LFEQGiwWugw-bHxiMcZeO", - "focus": -0.4191119063855012, - "gap": 13.871751838733303 - }, - "endBinding": { - "elementId": "_philqtA2msBgS2RN0gJq", - "focus": -0.058543712877364124, - "gap": 17.319654411266697 - }, - "lastCommittedPoint": null, - "startArrowhead": null, - "endArrowhead": "arrow", - "points": [ - [ - 0, - 0 - ], - [ - 138.765625, - 0 - ] - ] - }, - { - "type": "arrow", - "version": 912, - "versionNonce": 771428981, - "isDeleted": false, - "id": "f4fx7Okaga8CbENsmpkmP", - "fillStyle": "hachure", - "strokeWidth": 1, - "strokeStyle": "solid", - "roughness": 1, - "opacity": 100, - "angle": 0, - "x": 477.1725330887333, - "y": 419.82416426602776, - "strokeColor": "#000000", - "backgroundColor": "transparent", - "width": 138.92578125, - "height": 0, - "seed": 1508910009, - "groupIds": [], - "strokeSharpness": "round", - "boundElements": [], - "updated": 1665354311400, - "link": null, - "locked": false, - "startBinding": { - "elementId": "2ZfD2SrM-46E8aH7dhW-L", - "focus": -0.07895086353271633, - "gap": 14.141283088733303 - }, - "endBinding": { - "elementId": "9B7vsP3VbZUcmy_h0fyUT", - "focus": -0.056576449269414304, - "gap": 15.550123161266697 - }, - "lastCommittedPoint": null, - "startArrowhead": null, - "endArrowhead": "arrow", - "points": [ - [ - 0, - 0 - ], - [ - 138.92578125, - 0 - ] - ] - }, - { - "type": "line", - "version": 162, - "versionNonce": 363053269, - "isDeleted": false, - "id": "EWRSqhwZ2v-na6UAj8dLs", - "fillStyle": "hachure", - "strokeWidth": 1, - "strokeStyle": "dashed", - "roughness": 1, - "opacity": 100, - "angle": 0, - "x": 530.7819080887333, - "y": 118.75636993071981, - "strokeColor": "#000000", - "backgroundColor": "transparent", - "width": 0, - "height": 699.48046875, - "seed": 341512663, - "groupIds": [], - "strokeSharpness": "round", - "boundElements": [], - "updated": 1665354057907, - "link": null, - "locked": false, - "startBinding": null, - "endBinding": null, - "lastCommittedPoint": null, - "startArrowhead": null, - "endArrowhead": null, - "points": [ - [ - 0, - 0 - ], - [ - 0, - 699.48046875 - ] - ] - }, - { - "type": "rectangle", - "version": 1055, - "versionNonce": 1020257781, - "isDeleted": false, - "id": "c28Qe0SCzKMZd3JP8Kk3b", - "fillStyle": "solid", - "strokeWidth": 1, - "strokeStyle": "solid", - "roughness": 1, - "opacity": 100, - "angle": 0, - "x": 295.8950993498263, - "y": 228.874571730831, - "strokeColor": "#000000", - "backgroundColor": "transparent", - "width": 162.45246298042406, - "height": 97.2259675748086, - "seed": 151848981, - "groupIds": [ - "R-fNoTpX4maAyiy5bwymb" - ], - "strokeSharpness": "sharp", - "boundElements": [ - { - "id": "qlZi2lbDur0dqp82LYO_L", - "type": "arrow" - } - ], - "updated": 1665354278569, - "link": null, - "locked": false - }, - { - "type": "line", - "version": 838, - "versionNonce": 774463317, - "isDeleted": false, - "id": "D6Vjp_tb3fsyH-ctJK1OH", - "fillStyle": "solid", - "strokeWidth": 1, - "strokeStyle": "solid", - "roughness": 1, - "opacity": 100, - "angle": 0, - "x": 294.52875384721625, - "y": 242.48792166413278, - "strokeColor": "#000000", - "backgroundColor": "transparent", - "width": 163.66954523384825, - "height": 0, - "seed": 540471227, - "groupIds": [ - "R-fNoTpX4maAyiy5bwymb" - ], - "strokeSharpness": "round", - "boundElements": [], - "updated": 1665354278570, - "link": null, - "locked": false, - "startBinding": null, - "endBinding": null, - "lastCommittedPoint": null, - "startArrowhead": null, - "endArrowhead": null, - "points": [ - [ - 0, - 0 - ], - [ - 163.66954523384825, - 0 - ] - ] - }, - { - "type": "ellipse", - "version": 658, - "versionNonce": 723430523, - "isDeleted": false, - "id": "mFwVUZ5MZ2PAuQg7jQHzl", - "fillStyle": "solid", - "strokeWidth": 1, - "strokeStyle": "solid", - "roughness": 0, - "opacity": 100, - "angle": 0, - "x": 301.59630788569126, - "y": 234.30080117438402, - "strokeColor": "#000000", - "backgroundColor": "#fa5252", - "width": 6.354044670437319, - "height": 6.354044670437319, - "seed": 1455242613, - "groupIds": [ - "R-fNoTpX4maAyiy5bwymb" - ], - "strokeSharpness": "sharp", - "boundElements": [], - "updated": 1665354278570, - "link": null, - "locked": false - }, - { - "type": "ellipse", - "version": 703, - "versionNonce": 483175605, - "isDeleted": false, - "id": "rClxA705H32TIXIuT8Bzz", - "fillStyle": "solid", - "strokeWidth": 1, - "strokeStyle": "solid", - "roughness": 0, - "opacity": 100, - "angle": 0, - "x": 314.63314026398604, - "y": 234.30080117438402, - "strokeColor": "#000000", - "backgroundColor": "#fab005", - "width": 6.354044670437319, - "height": 6.354044670437319, - "seed": 1826046043, - "groupIds": [ - "R-fNoTpX4maAyiy5bwymb" - ], - "strokeSharpness": "sharp", - "boundElements": [], - "updated": 1665354278570, - "link": null, - "locked": false - }, - { - "type": "ellipse", - "version": 761, - "versionNonce": 1697211675, - "isDeleted": false, - "id": "nXSKBLbL1yLdBl6mmo2b4", - "fillStyle": "solid", - "strokeWidth": 1, - "strokeStyle": "solid", - "roughness": 0, - "opacity": 100, - "angle": 0, - "x": 328.2425294563652, - "y": 234.87335798846848, - "strokeColor": "#000000", - "backgroundColor": "#40c057", - "width": 6.354044670437319, - "height": 6.354044670437319, - "seed": 1602209493, - "groupIds": [ - "R-fNoTpX4maAyiy5bwymb" - ], - "strokeSharpness": "sharp", - "boundElements": [], - "updated": 1665354278570, - "link": null, - "locked": false - }, - { - "type": "ellipse", - "version": 1040, - "versionNonce": 1751076373, - "isDeleted": false, - "id": "Mh9x2szX1497_0haYDzCg", - "fillStyle": "solid", - "strokeWidth": 1, - "strokeStyle": "solid", - "roughness": 1, - "opacity": 90, - "angle": 0, - "x": 348.6019088665661, - "y": 255.2648863311597, - "strokeColor": "#000000", - "backgroundColor": "#04aaf7", - "width": 54.2680166090767, - "height": 54.2680166090767, - "seed": 778337531, - "groupIds": [ - "R-fNoTpX4maAyiy5bwymb" - ], - "strokeSharpness": "sharp", - "boundElements": [], - "updated": 1665354278570, - "link": null, - "locked": false - }, - { - "type": "line", - "version": 1657, - "versionNonce": 1251215803, - "isDeleted": false, - "id": "TlUYtKTx8Yat7J4E-5VYz", - "fillStyle": "solid", - "strokeWidth": 1, - "strokeStyle": "solid", - "roughness": 0, - "opacity": 100, - "angle": 0, - "x": 382.9996450595104, - "y": 275.87488710290137, - "strokeColor": "#087f5b", - "backgroundColor": "#40c057", - "width": 35.85610336609899, - "height": 31.04786919388095, - "seed": 904537141, - "groupIds": [ - "R-fNoTpX4maAyiy5bwymb" - ], - "strokeSharpness": "round", - "boundElements": [], - "updated": 1665354278570, - "link": null, - "locked": false, - "startBinding": null, - "endBinding": null, - "lastCommittedPoint": null, - "startArrowhead": null, - "endArrowhead": null, - "points": [ - [ - 0, - 0 - ], - [ - -2.325388564058283, - -0.5267206656258894 - ], - [ - -9.619125978041163, - -7.966925549111279 - ], - [ - -14.427821284761738, - -5.522853506520872 - ], - [ - -16.020885987601655, - 3.0148697513649148 - ], - [ - -14.315022585758907, - 8.56196563161751 - ], - [ - -22.13457547355497, - 11.288130750359024 - ], - [ - -21.85344640834797, - 17.331093366033496 - ], - [ - -15.72760937019428, - 16.958642351427752 - ], - [ - -11.045595679276936, - 12.039644336042855 - ], - [ - -4.598716190115264, - 22.697473369376752 - ], - [ - -0.5275508384131768, - 23.08094364476967 - ], - [ - -4.798283119120274, - 6.098058919610197 - ], - [ - 1.7613950690442115, - 5.522853506520834 - ], - [ - 4.017369049100754, - 7.4534279964299595 - ], - [ - 11.73280006089421, - 7.4534279964299595 - ], - [ - 13.721527892544017, - 0.8066098896195579 - ], - [ - 5.362276614134478, - 1.4104653807555212 - ], - [ - 6.969224233774734, - -7.316789162669303 - ], - [ - 3.1410099260787536, - -6.790068497043413 - ], - [ - -0.30195344040758026, - -1.1724493477530322 - ], - [ - 0, - 0 - ] - ] - }, - { - "type": "line", - "version": 1077, - "versionNonce": 1607910261, - "isDeleted": false, - "id": "U4TbV5DX0XCfbSiVt06V3", - "fillStyle": "solid", - "strokeWidth": 1, - "strokeStyle": "solid", - "roughness": 1, - "opacity": 90, - "angle": 0, - "x": 349.9472493966725, - "y": 281.89429122810816, - "strokeColor": "#000000", - "backgroundColor": "#99bcff", - "width": 53.473960938857935, - "height": 0, - "seed": 274802075, - "groupIds": [ - "R-fNoTpX4maAyiy5bwymb" - ], - "strokeSharpness": "round", - "boundElements": [], - "updated": 1665354278570, - "link": null, - "locked": false, - "startBinding": null, - "endBinding": null, - "lastCommittedPoint": null, - "startArrowhead": null, - "endArrowhead": null, - "points": [ - [ - 0, - 0 - ], - [ - 53.473960938857935, - 0 - ] - ] - }, - { - "type": "line", - "version": 3284, - "versionNonce": 1082202715, - "isDeleted": false, - "id": "QCBQ4txik2LHCSiGrJ3dp", - "fillStyle": "solid", - "strokeWidth": 1, - "strokeStyle": "solid", - "roughness": 0, - "opacity": 90, - "angle": 0, - "x": 356.4199106665164, - "y": 262.28761283303623, - "strokeColor": "#000000", - "backgroundColor": "#99bcff", - "width": 37.243798848241454, - "height": 7.255009908906467, - "seed": 2111952277, - "groupIds": [ - "R-fNoTpX4maAyiy5bwymb" - ], - "strokeSharpness": "round", - "boundElements": [], - "updated": 1665354278570, - "link": null, - "locked": false, - "startBinding": null, - "endBinding": null, - "lastCommittedPoint": null, - "startArrowhead": null, - "endArrowhead": null, - "points": [ - [ - 0, - 0 - ], - [ - 0.9812141829093962, - 2.8919681956901635 - ], - [ - 5.212785296889474, - 5.318302940240559 - ], - [ - 10.84355342442342, - 6.787676566209217 - ], - [ - 19.664854934769295, - 6.921573984780089 - ], - [ - 29.959011086092513, - 5.9860900906379 - ], - [ - 35.97091461134096, - 2.582820802133418 - ], - [ - 37.243798848241454, - -0.33343592412637807 - ] - ] - }, - { - "type": "ellipse", - "version": 1101, - "versionNonce": 1467518165, - "isDeleted": false, - "id": "fLYDxkyzzy0bAgkBtuAFo", - "fillStyle": "solid", - "strokeWidth": 1, - "strokeStyle": "solid", - "roughness": 1, - "opacity": 90, - "angle": 0, - "x": 366.67630875020285, - "y": 253.50864135942476, - "strokeColor": "#000000", - "backgroundColor": "transparent", - "width": 19.72596765221649, - "height": 56.93834267864238, - "seed": 704625211, - "groupIds": [ - "R-fNoTpX4maAyiy5bwymb" - ], - "strokeSharpness": "sharp", - "boundElements": [], - "updated": 1665354278570, - "link": null, - "locked": false - }, - { - "type": "line", - "version": 3489, - "versionNonce": 1673729787, - "isDeleted": false, - "id": "Vv2w5sDYg4vDitoFBaAJs", - "fillStyle": "solid", - "strokeWidth": 1, - "strokeStyle": "solid", - "roughness": 0, - "opacity": 90, - "angle": 0, - "x": 358.34564314934124, - "y": 302.60364451298426, - "strokeColor": "#000000", - "backgroundColor": "#99bcff", - "width": 37.243798848241454, - "height": 7.489841737098479, - "seed": 1117543157, - "groupIds": [ - "R-fNoTpX4maAyiy5bwymb" - ], - "strokeSharpness": "round", - "boundElements": [], - "updated": 1665354278570, - "link": null, - "locked": false, - "startBinding": null, - "endBinding": null, - "lastCommittedPoint": null, - "startArrowhead": null, - "endArrowhead": null, - "points": [ - [ - 0, - 0 - ], - [ - 5.212785296889474, - -5.490446992146268 - ], - [ - 10.84355342442342, - -7.007381641354876 - ], - [ - 19.664854934769295, - -7.145613082344516 - ], - [ - 29.959011086092513, - -6.179849230509038 - ], - [ - 35.97091461134096, - -2.666422139481399 - ], - [ - 37.243798848241454, - 0.3442286547539627 - ] - ] - }, - { - "type": "rectangle", - "version": 188, - "versionNonce": 36430203, - "isDeleted": false, - "id": "ovxFkdb6JYmDVntxtXYhP", - "fillStyle": "hachure", - "strokeWidth": 1, - "strokeStyle": "dashed", - "roughness": 1, - "opacity": 100, - "angle": 0, - "x": 910.8248768387333, - "y": 237.4009011807198, - "strokeColor": "#000000", - "backgroundColor": "transparent", - "width": 198.0312500000001, - "height": 418.87109374999994, - "seed": 1940931643, - "groupIds": [], - "strokeSharpness": "sharp", - "boundElements": [ - { - "id": "Bv7_JtCztVbjCF9lOPXMj", - "type": "arrow" - }, - { - "id": "tqXh-I1GblNxzaOjAhp0X", - "type": "arrow" - }, - { - "id": "wECT1xqiaxw7G2ECloOnC", - "type": "arrow" - }, - { - "id": "KcyC9x5YsNNHh13B4n1nx", - "type": "arrow" - } - ], - "updated": 1665354225422, - "link": null, - "locked": false - }, - { - "type": "arrow", - "version": 158, - "versionNonce": 1923373915, - "isDeleted": false, - "id": "Bv7_JtCztVbjCF9lOPXMj", - "fillStyle": "hachure", - "strokeWidth": 1, - "strokeStyle": "dashed", - "roughness": 1, - "opacity": 100, - "angle": 0, - "x": 815.5475330887333, - "y": 417.6782449307198, - "strokeColor": "#000000", - "backgroundColor": "transparent", - "width": 77.0703125, - "height": 0, - "seed": 909377717, - "groupIds": [], - "strokeSharpness": "round", - "boundElements": [], - "updated": 1665354057907, - "link": null, - "locked": false, - "startBinding": { - "elementId": "9B7vsP3VbZUcmy_h0fyUT", - "focus": 0.010427646359565883, - "gap": 14.899095588733303 - }, - "endBinding": { - "elementId": "ovxFkdb6JYmDVntxtXYhP", - "focus": 0.1392227993770456, - "gap": 18.207031250000057 - }, - "lastCommittedPoint": null, - "startArrowhead": null, - "endArrowhead": "arrow", - "points": [ - [ - 0, - 0 - ], - [ - 77.0703125, - 0 - ] - ] - }, - { - "type": "arrow", - "version": 300, - "versionNonce": 1021696981, - "isDeleted": false, - "id": "tqXh-I1GblNxzaOjAhp0X", - "fillStyle": "hachure", - "strokeWidth": 1, - "strokeStyle": "dashed", - "roughness": 1, - "opacity": 100, - "angle": 0, - "x": 811.9225330887333, - "y": 564.5649636807198, - "strokeColor": "#000000", - "backgroundColor": "transparent", - "width": 78.66796875, - "height": 0, - "seed": 140186005, - "groupIds": [], - "strokeSharpness": "round", - "boundElements": [], - "updated": 1665354057907, - "link": null, - "locked": false, - "startBinding": { - "elementId": "_philqtA2msBgS2RN0gJq", - "focus": -0.05883478643613427, - "gap": 11.274095588733303 - }, - "endBinding": { - "elementId": "ovxFkdb6JYmDVntxtXYhP", - "focus": -0.5621228935662265, - "gap": 20.234375000000057 - }, - "lastCommittedPoint": null, - "startArrowhead": null, - "endArrowhead": "arrow", - "points": [ - [ - 0, - 0 - ], - [ - 78.66796875, - 0 - ] - ] - } - ], - "appState": { - "gridSize": null, - "viewBackgroundColor": "#ffffff" - }, - "files": {} -} \ No newline at end of file diff --git a/docs/src/assets/img/architecture.png b/docs/src/assets/img/architecture.png deleted file mode 100644 index fa27302b065..00000000000 Binary files a/docs/src/assets/img/architecture.png and /dev/null differ diff --git a/docs/src/assets/img/azure_postgres_conn.png b/docs/src/assets/img/azure_postgres_conn.png deleted file mode 100644 index cfd401583a9..00000000000 Binary files a/docs/src/assets/img/azure_postgres_conn.png and /dev/null differ diff --git a/docs/src/assets/img/branching_1.png b/docs/src/assets/img/branching_1.png deleted file mode 100644 index e258a41172c..00000000000 Binary files a/docs/src/assets/img/branching_1.png and /dev/null differ diff --git a/docs/src/assets/img/branching_2.png b/docs/src/assets/img/branching_2.png deleted file mode 100644 index c2f87c57aef..00000000000 Binary files a/docs/src/assets/img/branching_2.png and /dev/null differ diff --git a/docs/src/assets/img/branching_3.png b/docs/src/assets/img/branching_3.png deleted file mode 100644 index c6b153ab507..00000000000 Binary files a/docs/src/assets/img/branching_3.png and /dev/null differ diff --git a/docs/src/assets/img/branching_4.png b/docs/src/assets/img/branching_4.png deleted file mode 100644 index d34bd2d6f6b..00000000000 Binary files a/docs/src/assets/img/branching_4.png and /dev/null differ diff --git a/docs/src/assets/img/branching_6.png b/docs/src/assets/img/branching_6.png deleted file mode 100644 index 69556c73992..00000000000 Binary files a/docs/src/assets/img/branching_6.png and /dev/null differ diff --git a/docs/src/assets/img/branching_7.png b/docs/src/assets/img/branching_7.png deleted file mode 100644 index 93bb84bca3a..00000000000 Binary files a/docs/src/assets/img/branching_7.png and /dev/null differ diff --git a/docs/src/assets/img/branching_8.png b/docs/src/assets/img/branching_8.png deleted file mode 100644 index 212a5435b15..00000000000 Binary files a/docs/src/assets/img/branching_8.png and /dev/null differ diff --git a/docs/src/assets/img/catalog_export_athena_aws_ui_sql.png b/docs/src/assets/img/catalog_export_athena_aws_ui_sql.png deleted file mode 100644 index 25fd7b06a36..00000000000 Binary files a/docs/src/assets/img/catalog_export_athena_aws_ui_sql.png and /dev/null differ diff --git a/docs/src/assets/img/cloudera/ClouderaManager.png b/docs/src/assets/img/cloudera/ClouderaManager.png deleted file mode 100644 index fc96e7164ce..00000000000 Binary files a/docs/src/assets/img/cloudera/ClouderaManager.png and /dev/null differ diff --git a/docs/src/assets/img/cloudera/ManagementConsole.png b/docs/src/assets/img/cloudera/ManagementConsole.png deleted file mode 100644 index 3c91a38f770..00000000000 Binary files a/docs/src/assets/img/cloudera/ManagementConsole.png and /dev/null differ diff --git a/docs/src/assets/img/cloudera/hadoopFileSystems.png b/docs/src/assets/img/cloudera/hadoopFileSystems.png deleted file mode 100644 index 35501d782df..00000000000 Binary files a/docs/src/assets/img/cloudera/hadoopFileSystems.png and /dev/null differ diff --git a/docs/src/assets/img/cloudera/spark_on_yarn.png b/docs/src/assets/img/cloudera/spark_on_yarn.png deleted file mode 100644 index 1375a1c48ae..00000000000 Binary files a/docs/src/assets/img/cloudera/spark_on_yarn.png and /dev/null differ diff --git a/docs/src/assets/img/cookies.png b/docs/src/assets/img/cookies.png deleted file mode 100644 index 682d5705a7b..00000000000 Binary files a/docs/src/assets/img/cookies.png and /dev/null differ diff --git a/docs/src/assets/img/create-repo-no-sn.png b/docs/src/assets/img/create-repo-no-sn.png deleted file mode 100644 index 1b6f5f5912e..00000000000 Binary files a/docs/src/assets/img/create-repo-no-sn.png and /dev/null differ diff --git a/docs/src/assets/img/create_repo_azure.png b/docs/src/assets/img/create_repo_azure.png deleted file mode 100644 index 29761e623d4..00000000000 Binary files a/docs/src/assets/img/create_repo_azure.png and /dev/null differ diff --git a/docs/src/assets/img/create_repo_local.png b/docs/src/assets/img/create_repo_local.png deleted file mode 100644 index 214d8d454c3..00000000000 Binary files a/docs/src/assets/img/create_repo_local.png and /dev/null differ diff --git a/docs/src/assets/img/create_repo_s3.png b/docs/src/assets/img/create_repo_s3.png deleted file mode 100644 index 9c81864cf7d..00000000000 Binary files a/docs/src/assets/img/create_repo_s3.png and /dev/null differ diff --git a/docs/src/assets/img/csv_export_hooks_data.png b/docs/src/assets/img/csv_export_hooks_data.png deleted file mode 100644 index e4f27ba9e7f..00000000000 Binary files a/docs/src/assets/img/csv_export_hooks_data.png and /dev/null differ diff --git a/docs/src/assets/img/databricks-arch.png b/docs/src/assets/img/databricks-arch.png deleted file mode 100644 index 35aa9fb1120..00000000000 Binary files a/docs/src/assets/img/databricks-arch.png and /dev/null differ diff --git a/docs/src/assets/img/databricks-install-package.png b/docs/src/assets/img/databricks-install-package.png deleted file mode 100644 index 116e2408b56..00000000000 Binary files a/docs/src/assets/img/databricks-install-package.png and /dev/null differ diff --git a/docs/src/assets/img/databricks_lakefs_conf.png b/docs/src/assets/img/databricks_lakefs_conf.png deleted file mode 100644 index 3f586a6e5c7..00000000000 Binary files a/docs/src/assets/img/databricks_lakefs_conf.png and /dev/null differ diff --git a/docs/src/assets/img/delete_branch_protection_rule.png b/docs/src/assets/img/delete_branch_protection_rule.png deleted file mode 100644 index 1086a5a9838..00000000000 Binary files a/docs/src/assets/img/delete_branch_protection_rule.png and /dev/null differ diff --git a/docs/src/assets/img/delta-diff-operations.png b/docs/src/assets/img/delta-diff-operations.png deleted file mode 100644 index 2f9fb4c1e58..00000000000 Binary files a/docs/src/assets/img/delta-diff-operations.png and /dev/null differ diff --git a/docs/src/assets/img/delta-diff-table-icon.png b/docs/src/assets/img/delta-diff-table-icon.png deleted file mode 100644 index d3f21d9a0cb..00000000000 Binary files a/docs/src/assets/img/delta-diff-table-icon.png and /dev/null differ diff --git a/docs/src/assets/img/delta-lake/change-override.excalidraw b/docs/src/assets/img/delta-lake/change-override.excalidraw deleted file mode 100644 index a212a7386d3..00000000000 --- a/docs/src/assets/img/delta-lake/change-override.excalidraw +++ /dev/null @@ -1,1230 +0,0 @@ -{ - "type": "excalidraw", - "version": 2, - "source": "https://excalidraw.com", - "elements": [ - { - "type": "ellipse", - "version": 1027, - "versionNonce": 647317342, - "isDeleted": false, - "id": "fe_nfDr9tTgEIvvpCd4v2", - "fillStyle": "solid", - "strokeWidth": 1, - "strokeStyle": "solid", - "roughness": 0, - "opacity": 100, - "angle": 0, - "x": -4962.066245843499, - "y": -5360.556055867614, - "strokeColor": "#1e1e1e", - "backgroundColor": "transparent", - "width": 51.445748465402175, - "height": 47.903921944754984, - "seed": 105164354, - "groupIds": [], - "frameId": null, - "roundness": { - "type": 2 - }, - "boundElements": [ - { - "id": "hnGG0ORkM1R9laet6Fu-R", - "type": "arrow" - }, - { - "id": "rQ1E3oz56mEvpV-VDg2J7", - "type": "arrow" - } - ], - "updated": 1709205412170, - "link": null, - "locked": false - }, - { - "type": "text", - "version": 1021, - "versionNonce": 768337282, - "isDeleted": false, - "id": "SoEo4-k9VMyZ5uBfxyIJz", - "fillStyle": "solid", - "strokeWidth": 1, - "strokeStyle": "solid", - "roughness": 0, - "opacity": 100, - "angle": 0, - "x": -5014.204696382217, - "y": -5340.757431640277, - "strokeColor": "#1e1e1e", - "backgroundColor": "transparent", - "width": 33.90399169921875, - "height": 20, - "seed": 1138333186, - "groupIds": [], - "frameId": null, - "roundness": null, - "boundElements": [], - "updated": 1709205412170, - "link": null, - "locked": false, - "fontSize": 16, - "fontFamily": 1, - "text": "Main", - "textAlign": "left", - "verticalAlign": "top", - "containerId": null, - "originalText": "Main", - "lineHeight": 1.25, - "baseline": 14 - }, - { - "type": "ellipse", - "version": 1096, - "versionNonce": 1366338462, - "isDeleted": false, - "id": "tC2jVLTBxRlrnJ20cLkch", - "fillStyle": "solid", - "strokeWidth": 1, - "strokeStyle": "solid", - "roughness": 0, - "opacity": 100, - "angle": 0, - "x": -4850.969454146422, - "y": -5626.018764393218, - "strokeColor": "#1e1e1e", - "backgroundColor": "transparent", - "width": 51.445748465402175, - "height": 47.903921944754984, - "seed": 368805314, - "groupIds": [], - "frameId": null, - "roundness": { - "type": 2 - }, - "boundElements": [ - { - "id": "hnGG0ORkM1R9laet6Fu-R", - "type": "arrow" - }, - { - "id": "C58w5kcGj-nrQmBTlM3Jh", - "type": "arrow" - } - ], - "updated": 1709205412170, - "link": null, - "locked": false - }, - { - "type": "text", - "version": 1019, - "versionNonce": 1006101826, - "isDeleted": false, - "id": "y_svLlAPCrmXkxzAxG-6R", - "fillStyle": "solid", - "strokeWidth": 1, - "strokeStyle": "solid", - "roughness": 0, - "opacity": 100, - "angle": 0, - "x": -4973.38442513125, - "y": -5607.453373942603, - "strokeColor": "#1e1e1e", - "backgroundColor": "transparent", - "width": 117.24790954589844, - "height": 20, - "seed": 1976139138, - "groupIds": [], - "frameId": null, - "roundness": null, - "boundElements": [], - "updated": 1709205412170, - "link": null, - "locked": false, - "fontSize": 16, - "fontFamily": 1, - "text": "table_updates", - "textAlign": "left", - "verticalAlign": "top", - "containerId": null, - "originalText": "table_updates", - "lineHeight": 1.25, - "baseline": 14 - }, - { - "type": "rectangle", - "version": 2142, - "versionNonce": 1599495170, - "isDeleted": false, - "id": "HabXaoI8CH7irylkjrLYT", - "fillStyle": "solid", - "strokeWidth": 1, - "strokeStyle": "solid", - "roughness": 0, - "opacity": 100, - "angle": 0, - "x": -4799.428878125622, - "y": -5571.366127982683, - "strokeColor": "#1e1e1e", - "backgroundColor": "transparent", - "width": 155.75714111328205, - "height": 110, - "seed": 600761090, - "groupIds": [], - "frameId": null, - "roundness": { - "type": 3 - }, - "boundElements": [ - { - "type": "text", - "id": "mDzdjx08Tx8DERt_I6oGJ" - }, - { - "id": "bRWwXzQ71wM5xiGBRf6Fg", - "type": "arrow" - }, - { - "id": "hnGG0ORkM1R9laet6Fu-R", - "type": "arrow" - } - ], - "updated": 1709205412171, - "link": null, - "locked": false - }, - { - "type": "text", - "version": 1595, - "versionNonce": 751754526, - "isDeleted": false, - "id": "mDzdjx08Tx8DERt_I6oGJ", - "fillStyle": "solid", - "strokeWidth": 1, - "strokeStyle": "solid", - "roughness": 0, - "opacity": 100, - "angle": 0, - "x": -4794.428878125622, - "y": -5566.366127982683, - "strokeColor": "#1e1e1e", - "backgroundColor": "transparent", - "width": 142.6879425048828, - "height": 100, - "seed": 1136603842, - "groupIds": [], - "frameId": null, - "roundness": null, - "boundElements": [], - "updated": 1709205412171, - "link": null, - "locked": false, - "fontSize": 16, - "fontFamily": 1, - "text": "my-table/\n _delta_log/\n 0000.json\n \n ", - "textAlign": "left", - "verticalAlign": "top", - "containerId": "HabXaoI8CH7irylkjrLYT", - "originalText": "my-table/\n _delta_log/\n 0000.json\n \n ", - "lineHeight": 1.25, - "baseline": 94 - }, - { - "type": "arrow", - "version": 2359, - "versionNonce": 776654302, - "isDeleted": false, - "id": "hnGG0ORkM1R9laet6Fu-R", - "fillStyle": "solid", - "strokeWidth": 1, - "strokeStyle": "solid", - "roughness": 0, - "opacity": 100, - "angle": 0, - "x": -4932.327073881227, - "y": -5362.938868759379, - "strokeColor": "#1e1e1e", - "backgroundColor": "transparent", - "width": 93.78930268948716, - "height": 215.66890458533726, - "seed": 667889986, - "groupIds": [], - "frameId": null, - "roundness": null, - "boundElements": [], - "updated": 1709205412171, - "link": null, - "locked": false, - "startBinding": { - "elementId": "fe_nfDr9tTgEIvvpCd4v2", - "focus": -0.2679492115275112, - "gap": 2.650562094922236 - }, - "endBinding": { - "elementId": "tC2jVLTBxRlrnJ20cLkch", - "focus": 0.1113230338672914, - "gap": 2.6099758318858157 - }, - "lastCommittedPoint": null, - "startArrowhead": null, - "endArrowhead": "arrow", - "points": [ - [ - 0, - 0 - ], - [ - 93.78930268948716, - -215.66890458533726 - ] - ] - }, - { - "type": "rectangle", - "version": 1255, - "versionNonce": 2134401822, - "isDeleted": false, - "id": "kkijwArtO7QkKMC0uzt0I", - "fillStyle": "solid", - "strokeWidth": 1, - "strokeStyle": "dotted", - "roughness": 0, - "opacity": 100, - "angle": 0, - "x": -4885.859025042897, - "y": -5760.962795521386, - "strokeColor": "#1971c2", - "backgroundColor": "transparent", - "width": 626.6013076279205, - "height": 126.94807450850031, - "seed": 2102640770, - "groupIds": [], - "frameId": null, - "roundness": null, - "boundElements": [], - "updated": 1709205412171, - "link": null, - "locked": false - }, - { - "type": "text", - "version": 1320, - "versionNonce": 2034853314, - "isDeleted": false, - "id": "7rgUrDQRWvC514soL_7DN", - "fillStyle": "solid", - "strokeWidth": 1, - "strokeStyle": "solid", - "roughness": 0, - "opacity": 100, - "angle": 0, - "x": -4868.4364576124635, - "y": -5742.445399831138, - "strokeColor": "#1971c2", - "backgroundColor": "transparent", - "width": 77.93992614746094, - "height": 25, - "seed": 323211970, - "groupIds": [], - "frameId": null, - "roundness": null, - "boundElements": [], - "updated": 1709205412171, - "link": null, - "locked": false, - "fontSize": 20, - "fontFamily": 1, - "text": "writer_1", - "textAlign": "left", - "verticalAlign": "top", - "containerId": null, - "originalText": "writer_1", - "lineHeight": 1.25, - "baseline": 17 - }, - { - "type": "text", - "version": 820, - "versionNonce": 649744222, - "isDeleted": false, - "id": "b963r4PhcYVJd0u-BDUQB", - "fillStyle": "solid", - "strokeWidth": 1, - "strokeStyle": "solid", - "roughness": 0, - "opacity": 100, - "angle": 0, - "x": -4802.081990073777, - "y": -5677.471527573025, - "strokeColor": "#1e1e1e", - "backgroundColor": "transparent", - "width": 127.03993225097656, - "height": 20, - "seed": 1110650626, - "groupIds": [], - "frameId": null, - "roundness": null, - "boundElements": [], - "updated": 1709205412171, - "link": null, - "locked": false, - "fontSize": 16, - "fontFamily": 1, - "text": "insert to table ", - "textAlign": "left", - "verticalAlign": "top", - "containerId": null, - "originalText": "insert to table ", - "lineHeight": 1.25, - "baseline": 14 - }, - { - "type": "rectangle", - "version": 2226, - "versionNonce": 1952144770, - "isDeleted": false, - "id": "Sl5OkkrPd5ze725b4mtoo", - "fillStyle": "solid", - "strokeWidth": 1, - "strokeStyle": "solid", - "roughness": 0, - "opacity": 100, - "angle": 0, - "x": -4667.254099237502, - "y": -5751.56239205704, - "strokeColor": "#1e1e1e", - "backgroundColor": "transparent", - "width": 155.75714111328205, - "height": 110, - "seed": 1194758750, - "groupIds": [ - "VN77kAFV_B4v8lW-fk7pS" - ], - "frameId": null, - "roundness": { - "type": 3 - }, - "boundElements": [ - { - "type": "text", - "id": "ohSb2OurRU0qNlDleyO4Q" - } - ], - "updated": 1709205412171, - "link": null, - "locked": false - }, - { - "type": "text", - "version": 1679, - "versionNonce": 397718430, - "isDeleted": false, - "id": "ohSb2OurRU0qNlDleyO4Q", - "fillStyle": "solid", - "strokeWidth": 1, - "strokeStyle": "solid", - "roughness": 0, - "opacity": 100, - "angle": 0, - "x": -4662.254099237502, - "y": -5746.56239205704, - "strokeColor": "#1e1e1e", - "backgroundColor": "transparent", - "width": 142.6879425048828, - "height": 100, - "seed": 95458974, - "groupIds": [ - "VN77kAFV_B4v8lW-fk7pS" - ], - "frameId": null, - "roundness": null, - "boundElements": [], - "updated": 1709205412171, - "link": null, - "locked": false, - "fontSize": 16, - "fontFamily": 1, - "text": "my-table/\n _delta_log/\n 0000.json\n \n ", - "textAlign": "left", - "verticalAlign": "top", - "containerId": "Sl5OkkrPd5ze725b4mtoo", - "originalText": "my-table/\n _delta_log/\n 0000.json\n \n ", - "lineHeight": 1.25, - "baseline": 94 - }, - { - "type": "text", - "version": 605, - "versionNonce": 1910005058, - "isDeleted": false, - "id": "loW37EPae1kVkmXVuXEKX", - "fillStyle": "solid", - "strokeWidth": 1, - "strokeStyle": "solid", - "roughness": 0, - "opacity": 100, - "angle": 0, - "x": -4598.661108823377, - "y": -5685.441551837686, - "strokeColor": "#1971c2", - "backgroundColor": "transparent", - "width": 72.01594543457031, - "height": 20, - "seed": 652219102, - "groupIds": [ - "VN77kAFV_B4v8lW-fk7pS" - ], - "frameId": null, - "roundness": null, - "boundElements": [], - "updated": 1709205412171, - "link": null, - "locked": false, - "fontSize": 16, - "fontFamily": 1, - "text": "0001.json", - "textAlign": "left", - "verticalAlign": "top", - "containerId": null, - "originalText": "0001.json", - "lineHeight": 1.25, - "baseline": 14 - }, - { - "type": "text", - "version": 1937, - "versionNonce": 2086178782, - "isDeleted": false, - "id": "riWYWxJq3vRDrVWOgCCA6", - "fillStyle": "solid", - "strokeWidth": 1, - "strokeStyle": "solid", - "roughness": 0, - "opacity": 100, - "angle": 0, - "x": -4757.9349944719015, - "y": -5893.660961115476, - "strokeColor": "#f08c00", - "backgroundColor": "transparent", - "width": 86.75991821289062, - "height": 25, - "seed": 1680093890, - "groupIds": [], - "frameId": null, - "roundness": null, - "boundElements": [], - "updated": 1709205412171, - "link": null, - "locked": false, - "fontSize": 20, - "fontFamily": 1, - "text": "writer_2", - "textAlign": "left", - "verticalAlign": "top", - "containerId": null, - "originalText": "writer_2", - "lineHeight": 1.25, - "baseline": 17 - }, - { - "type": "rectangle", - "version": 1150, - "versionNonce": 2132763906, - "isDeleted": false, - "id": "ENZOzINYjC5AYsv_xPm1D", - "fillStyle": "solid", - "strokeWidth": 1, - "strokeStyle": "dotted", - "roughness": 0, - "opacity": 100, - "angle": 0, - "x": -4774.080569581123, - "y": -5907.653045786014, - "strokeColor": "#f08c00", - "backgroundColor": "transparent", - "width": 622.5461620288896, - "height": 132.6602189619462, - "seed": 877955714, - "groupIds": [], - "frameId": null, - "roundness": null, - "boundElements": [], - "updated": 1709205412171, - "link": null, - "locked": false - }, - { - "type": "text", - "version": 1043, - "versionNonce": 280421406, - "isDeleted": false, - "id": "-XL0T2w3Vjb5h9UVEL_0b", - "fillStyle": "solid", - "strokeWidth": 1, - "strokeStyle": "solid", - "roughness": 0, - "opacity": 100, - "angle": 0, - "x": -4695.662828790724, - "y": -5848.503605062552, - "strokeColor": "#1e1e1e", - "backgroundColor": "transparent", - "width": 127.03993225097656, - "height": 20, - "seed": 1662436190, - "groupIds": [], - "frameId": null, - "roundness": null, - "boundElements": [], - "updated": 1709205412171, - "link": null, - "locked": false, - "fontSize": 16, - "fontFamily": 1, - "text": "insert to table ", - "textAlign": "left", - "verticalAlign": "top", - "containerId": null, - "originalText": "insert to table ", - "lineHeight": 1.25, - "baseline": 14 - }, - { - "type": "rectangle", - "version": 2568, - "versionNonce": 632255682, - "isDeleted": false, - "id": "wu9O7s6wpd_4VPxn-3QCR", - "fillStyle": "solid", - "strokeWidth": 1, - "strokeStyle": "solid", - "roughness": 0, - "opacity": 100, - "angle": 0, - "x": -4560.755357500721, - "y": -5896.000928905702, - "strokeColor": "#1e1e1e", - "backgroundColor": "transparent", - "width": 155.75714111328205, - "height": 110, - "seed": 162054914, - "groupIds": [ - "Vlvg1MzWmG4hCc5yFv94W" - ], - "frameId": null, - "roundness": { - "type": 3 - }, - "boundElements": [ - { - "type": "text", - "id": "62Yr4UKb6bJYYwjlIUFqk" - } - ], - "updated": 1709205412171, - "link": null, - "locked": false - }, - { - "type": "text", - "version": 2021, - "versionNonce": 1723904094, - "isDeleted": false, - "id": "62Yr4UKb6bJYYwjlIUFqk", - "fillStyle": "solid", - "strokeWidth": 1, - "strokeStyle": "solid", - "roughness": 0, - "opacity": 100, - "angle": 0, - "x": -4555.755357500721, - "y": -5891.000928905702, - "strokeColor": "#1e1e1e", - "backgroundColor": "transparent", - "width": 142.6879425048828, - "height": 100, - "seed": 324866754, - "groupIds": [ - "Vlvg1MzWmG4hCc5yFv94W" - ], - "frameId": null, - "roundness": null, - "boundElements": [], - "updated": 1709205412171, - "link": null, - "locked": false, - "fontSize": 16, - "fontFamily": 1, - "text": "my-table/\n _delta_log/\n 0000.json\n \n ", - "textAlign": "left", - "verticalAlign": "top", - "containerId": "wu9O7s6wpd_4VPxn-3QCR", - "originalText": "my-table/\n _delta_log/\n 0000.json\n \n ", - "lineHeight": 1.25, - "baseline": 94 - }, - { - "type": "text", - "version": 947, - "versionNonce": 1730645122, - "isDeleted": false, - "id": "xv5tZ1iJ5py8jiTy_uPxX", - "fillStyle": "solid", - "strokeWidth": 1, - "strokeStyle": "solid", - "roughness": 0, - "opacity": 100, - "angle": 0, - "x": -4492.162367086598, - "y": -5829.880088686348, - "strokeColor": "#f08c00", - "backgroundColor": "transparent", - "width": 72.01594543457031, - "height": 20, - "seed": 1232169602, - "groupIds": [ - "Vlvg1MzWmG4hCc5yFv94W" - ], - "frameId": null, - "roundness": null, - "boundElements": [], - "updated": 1709205412171, - "link": null, - "locked": false, - "fontSize": 16, - "fontFamily": 1, - "text": "0001.json", - "textAlign": "left", - "verticalAlign": "top", - "containerId": null, - "originalText": "0001.json", - "lineHeight": 1.25, - "baseline": 14 - }, - { - "id": "C58w5kcGj-nrQmBTlM3Jh", - "type": "arrow", - "x": -4798.600862037932, - "y": -5600.172060712383, - "width": 512.5524096461941, - "height": 0.3490622264407648, - "angle": 0, - "strokeColor": "#1e1e1e", - "backgroundColor": "transparent", - "fillStyle": "solid", - "strokeWidth": 1, - "strokeStyle": "solid", - "roughness": 0, - "opacity": 100, - "groupIds": [], - "frameId": null, - "roundness": null, - "seed": 707598722, - "version": 942, - "versionNonce": 709293214, - "isDeleted": false, - "boundElements": null, - "updated": 1709205412171, - "link": null, - "locked": false, - "points": [ - [ - 0, - 0 - ], - [ - 512.5524096461941, - 0.3490622264407648 - ] - ], - "lastCommittedPoint": null, - "startBinding": { - "elementId": "tC2jVLTBxRlrnJ20cLkch", - "focus": 0.07834831332532421, - "gap": 1 - }, - "endBinding": { - "elementId": "okug8_b1o-AK1c4zb1cHm", - "focus": -0.08446521325685712, - "gap": 1.2725227181444865 - }, - "startArrowhead": null, - "endArrowhead": "arrow" - }, - { - "type": "ellipse", - "version": 1211, - "versionNonce": 960932930, - "isDeleted": false, - "id": "okug8_b1o-AK1c4zb1cHm", - "fillStyle": "solid", - "strokeWidth": 1, - "strokeStyle": "solid", - "roughness": 0, - "opacity": 100, - "angle": 0, - "x": -4284.86130480659, - "y": -5625.7797410291205, - "strokeColor": "#1e1e1e", - "backgroundColor": "transparent", - "width": 51.445748465402175, - "height": 47.903921944754984, - "seed": 607501250, - "groupIds": [], - "frameId": null, - "roundness": { - "type": 2 - }, - "boundElements": [ - { - "id": "C58w5kcGj-nrQmBTlM3Jh", - "type": "arrow" - } - ], - "updated": 1709205412171, - "link": null, - "locked": false - }, - { - "type": "rectangle", - "version": 2883, - "versionNonce": 1694150878, - "isDeleted": false, - "id": "YsU4X2D7I84VH5qlixNZb", - "fillStyle": "solid", - "strokeWidth": 1, - "strokeStyle": "solid", - "roughness": 0, - "opacity": 100, - "angle": 0, - "x": -4398.895428489304, - "y": -5568.694422935351, - "strokeColor": "#1e1e1e", - "backgroundColor": "transparent", - "width": 155.75714111328205, - "height": 110, - "seed": 1290313474, - "groupIds": [ - "i9Ty7PgbjYEYjMfRwAQ_x" - ], - "frameId": null, - "roundness": { - "type": 3 - }, - "boundElements": [ - { - "type": "text", - "id": "h5-GUvm1zeBixMrtqQZ-t" - }, - { - "id": "WVniNkq4JXSyroRgK0V3S", - "type": "arrow" - } - ], - "updated": 1709205412171, - "link": null, - "locked": false - }, - { - "type": "text", - "version": 2333, - "versionNonce": 32232450, - "isDeleted": false, - "id": "h5-GUvm1zeBixMrtqQZ-t", - "fillStyle": "solid", - "strokeWidth": 1, - "strokeStyle": "solid", - "roughness": 0, - "opacity": 100, - "angle": 0, - "x": -4393.895428489304, - "y": -5563.694422935351, - "strokeColor": "#1e1e1e", - "backgroundColor": "transparent", - "width": 142.6879425048828, - "height": 100, - "seed": 440495810, - "groupIds": [ - "i9Ty7PgbjYEYjMfRwAQ_x" - ], - "frameId": null, - "roundness": null, - "boundElements": [], - "updated": 1709205412171, - "link": null, - "locked": false, - "fontSize": 16, - "fontFamily": 1, - "text": "my-table/\n _delta_log/\n 0000.json\n \n ", - "textAlign": "left", - "verticalAlign": "top", - "containerId": "YsU4X2D7I84VH5qlixNZb", - "originalText": "my-table/\n _delta_log/\n 0000.json\n \n ", - "lineHeight": 1.25, - "baseline": 94 - }, - { - "type": "text", - "version": 1259, - "versionNonce": 1114432798, - "isDeleted": false, - "id": "tbzp6IoKEQ_09RUCrja2w", - "fillStyle": "solid", - "strokeWidth": 1, - "strokeStyle": "solid", - "roughness": 0, - "opacity": 100, - "angle": 0, - "x": -4330.302438075181, - "y": -5502.573582715998, - "strokeColor": "#f08c00", - "backgroundColor": "transparent", - "width": 72.01594543457031, - "height": 20, - "seed": 728385154, - "groupIds": [ - "i9Ty7PgbjYEYjMfRwAQ_x" - ], - "frameId": null, - "roundness": null, - "boundElements": [], - "updated": 1709205412171, - "link": null, - "locked": false, - "fontSize": 16, - "fontFamily": 1, - "text": "0001.json", - "textAlign": "left", - "verticalAlign": "top", - "containerId": null, - "originalText": "0001.json", - "lineHeight": 1.25, - "baseline": 14 - }, - { - "type": "arrow", - "version": 1429, - "versionNonce": 652491650, - "isDeleted": false, - "id": "rQ1E3oz56mEvpV-VDg2J7", - "fillStyle": "solid", - "strokeWidth": 1, - "strokeStyle": "solid", - "roughness": 0, - "opacity": 100, - "angle": 0, - "x": -4909.624399796204, - "y": -5336.177683168648, - "strokeColor": "#1e1e1e", - "backgroundColor": "transparent", - "width": 738.7930016379823, - "height": 4.4436759483332935, - "seed": 1654600670, - "groupIds": [], - "frameId": null, - "roundness": null, - "boundElements": [], - "updated": 1709205412171, - "link": null, - "locked": false, - "startBinding": { - "elementId": "fe_nfDr9tTgEIvvpCd4v2", - "focus": 0.024511903836125275, - "gap": 1 - }, - "endBinding": { - "elementId": "jIcpsn41EuSbCdnDmAuo-", - "focus": -0.02183714962544129, - "gap": 2.9915930404247533 - }, - "lastCommittedPoint": null, - "startArrowhead": null, - "endArrowhead": "arrow", - "points": [ - [ - 0, - 0 - ], - [ - 738.7930016379823, - -4.4436759483332935 - ] - ] - }, - { - "type": "ellipse", - "version": 1464, - "versionNonce": 1429255582, - "isDeleted": false, - "id": "jIcpsn41EuSbCdnDmAuo-", - "fillStyle": "solid", - "strokeWidth": 1, - "strokeStyle": "solid", - "roughness": 0, - "opacity": 100, - "angle": 0, - "x": -4167.849374154192, - "y": -5365.269027149354, - "strokeColor": "#1e1e1e", - "backgroundColor": "transparent", - "width": 51.445748465402175, - "height": 47.903921944754984, - "seed": 1049167902, - "groupIds": [], - "frameId": null, - "roundness": { - "type": 2 - }, - "boundElements": [ - { - "id": "rQ1E3oz56mEvpV-VDg2J7", - "type": "arrow" - }, - { - "id": "WVniNkq4JXSyroRgK0V3S", - "type": "arrow" - } - ], - "updated": 1709205412171, - "link": null, - "locked": false - }, - { - "id": "WVniNkq4JXSyroRgK0V3S", - "type": "arrow", - "x": -4243.9285422714165, - "y": -5580.419412949524, - "width": 97.3017710453023, - "height": 213.499272478678, - "angle": 0, - "strokeColor": "#1e1e1e", - "backgroundColor": "transparent", - "fillStyle": "solid", - "strokeWidth": 1, - "strokeStyle": "solid", - "roughness": 0, - "opacity": 100, - "groupIds": [], - "frameId": null, - "roundness": null, - "seed": 781890462, - "version": 1378, - "versionNonce": 1536523074, - "isDeleted": false, - "boundElements": null, - "updated": 1709205412171, - "link": null, - "locked": false, - "points": [ - [ - 0, - 0 - ], - [ - 97.3017710453023, - 213.499272478678 - ] - ], - "lastCommittedPoint": null, - "startBinding": { - "elementId": "YsU4X2D7I84VH5qlixNZb", - "focus": -1.0442313323075774, - "gap": 11.724990014172363 - }, - "endBinding": { - "elementId": "jIcpsn41EuSbCdnDmAuo-", - "focus": 0.2565292854670769, - "gap": 1.995269766354479 - }, - "startArrowhead": null, - "endArrowhead": "arrow" - }, - { - "type": "rectangle", - "version": 2851, - "versionNonce": 1862554078, - "isDeleted": false, - "id": "xWTA3yWkCeWYAENX-VNAA", - "fillStyle": "solid", - "strokeWidth": 1, - "strokeStyle": "solid", - "roughness": 0, - "opacity": 100, - "angle": 0, - "x": -4184.040535592853, - "y": -5302.752519151736, - "strokeColor": "#1e1e1e", - "backgroundColor": "transparent", - "width": 155.75714111328205, - "height": 110, - "seed": 690885698, - "groupIds": [ - "QkQ7Tm6n1EKE9giprl8Yk" - ], - "frameId": null, - "roundness": { - "type": 3 - }, - "boundElements": [ - { - "type": "text", - "id": "_hCKRkwFYAExNMeSOgBD7" - } - ], - "updated": 1709205412171, - "link": null, - "locked": false - }, - { - "type": "text", - "version": 2303, - "versionNonce": 797491970, - "isDeleted": false, - "id": "_hCKRkwFYAExNMeSOgBD7", - "fillStyle": "solid", - "strokeWidth": 1, - "strokeStyle": "solid", - "roughness": 0, - "opacity": 100, - "angle": 0, - "x": -4179.040535592853, - "y": -5297.752519151736, - "strokeColor": "#1e1e1e", - "backgroundColor": "transparent", - "width": 142.6879425048828, - "height": 100, - "seed": 1353071618, - "groupIds": [ - "QkQ7Tm6n1EKE9giprl8Yk" - ], - "frameId": null, - "roundness": null, - "boundElements": [], - "updated": 1709205412171, - "link": null, - "locked": false, - "fontSize": 16, - "fontFamily": 1, - "text": "my-table/\n _delta_log/\n 0000.json\n \n ", - "textAlign": "left", - "verticalAlign": "top", - "containerId": "xWTA3yWkCeWYAENX-VNAA", - "originalText": "my-table/\n _delta_log/\n 0000.json\n \n ", - "lineHeight": 1.25, - "baseline": 94 - }, - { - "type": "text", - "version": 1229, - "versionNonce": 2090493470, - "isDeleted": false, - "id": "WZThBioc8RIWhdjYGzJpn", - "fillStyle": "solid", - "strokeWidth": 1, - "strokeStyle": "solid", - "roughness": 0, - "opacity": 100, - "angle": 0, - "x": -4115.44754517873, - "y": -5236.631678932381, - "strokeColor": "#f08c00", - "backgroundColor": "transparent", - "width": 72.01594543457031, - "height": 20, - "seed": 1849912258, - "groupIds": [ - "QkQ7Tm6n1EKE9giprl8Yk" - ], - "frameId": null, - "roundness": null, - "boundElements": [], - "updated": 1709205412171, - "link": null, - "locked": false, - "fontSize": 16, - "fontFamily": 1, - "text": "0001.json", - "textAlign": "left", - "verticalAlign": "top", - "containerId": null, - "originalText": "0001.json", - "lineHeight": 1.25, - "baseline": 14 - }, - { - "type": "rectangle", - "version": 2255, - "versionNonce": 2101154498, - "isDeleted": false, - "id": "wxujanoYybgFtiGCKIa7g", - "fillStyle": "solid", - "strokeWidth": 1, - "strokeStyle": "solid", - "roughness": 0, - "opacity": 100, - "angle": 0, - "x": -4972.787358498867, - "y": -5303.541197409743, - "strokeColor": "#1e1e1e", - "backgroundColor": "transparent", - "width": 155.75714111328205, - "height": 110, - "seed": 1679913310, - "groupIds": [], - "frameId": null, - "roundness": { - "type": 3 - }, - "boundElements": [ - { - "type": "text", - "id": "oTDEG8OMQ_l-2EbLcHLeE" - } - ], - "updated": 1709205412171, - "link": null, - "locked": false - }, - { - "type": "text", - "version": 1708, - "versionNonce": 1323561566, - "isDeleted": false, - "id": "oTDEG8OMQ_l-2EbLcHLeE", - "fillStyle": "solid", - "strokeWidth": 1, - "strokeStyle": "solid", - "roughness": 0, - "opacity": 100, - "angle": 0, - "x": -4967.787358498867, - "y": -5298.541197409743, - "strokeColor": "#1e1e1e", - "backgroundColor": "transparent", - "width": 142.6879425048828, - "height": 100, - "seed": 535270814, - "groupIds": [], - "frameId": null, - "roundness": null, - "boundElements": [], - "updated": 1709205412171, - "link": null, - "locked": false, - "fontSize": 16, - "fontFamily": 1, - "text": "my-table/\n _delta_log/\n 0000.json\n \n ", - "textAlign": "left", - "verticalAlign": "top", - "containerId": "wxujanoYybgFtiGCKIa7g", - "originalText": "my-table/\n _delta_log/\n 0000.json\n \n ", - "lineHeight": 1.25, - "baseline": 94 - } - ], - "appState": { - "gridSize": null, - "viewBackgroundColor": "#ffffff" - }, - "files": {} -} \ No newline at end of file diff --git a/docs/src/assets/img/delta-lake/concurrent-file-overwrite.png b/docs/src/assets/img/delta-lake/concurrent-file-overwrite.png deleted file mode 100644 index 1a6638fb063..00000000000 Binary files a/docs/src/assets/img/delta-lake/concurrent-file-overwrite.png and /dev/null differ diff --git a/docs/src/assets/img/delta-lake/merge-conflict.excalidraw b/docs/src/assets/img/delta-lake/merge-conflict.excalidraw deleted file mode 100644 index a4c4a6e8643..00000000000 --- a/docs/src/assets/img/delta-lake/merge-conflict.excalidraw +++ /dev/null @@ -1,1499 +0,0 @@ -{ - "type": "excalidraw", - "version": 2, - "source": "https://excalidraw.com", - "elements": [ - { - "type": "ellipse", - "version": 723, - "versionNonce": 2133466690, - "isDeleted": false, - "id": "ogZ6xhDLj2zCWtoP_pLWt", - "fillStyle": "solid", - "strokeWidth": 1, - "strokeStyle": "solid", - "roughness": 0, - "opacity": 100, - "angle": 0, - "x": -4874.160408813066, - "y": -4506.505037062658, - "strokeColor": "#1e1e1e", - "backgroundColor": "transparent", - "width": 51.445748465402175, - "height": 47.903921944754984, - "seed": 2002829378, - "groupIds": [], - "frameId": null, - "roundness": { - "type": 2 - }, - "boundElements": [ - { - "id": "WLwABAOJOSDvAU7Y7yFjD", - "type": "arrow" - } - ], - "updated": 1709205338879, - "link": null, - "locked": false - }, - { - "type": "text", - "version": 653, - "versionNonce": 1992253150, - "isDeleted": false, - "id": "4onWMn2YDuyGxv896P6mo", - "fillStyle": "solid", - "strokeWidth": 1, - "strokeStyle": "solid", - "roughness": 0, - "opacity": 100, - "angle": 0, - "x": -4996.617165404867, - "y": -4487.939646612043, - "strokeColor": "#1e1e1e", - "backgroundColor": "transparent", - "width": 33.90399169921875, - "height": 20, - "seed": 463693826, - "groupIds": [], - "frameId": null, - "roundness": null, - "boundElements": [], - "updated": 1709205338879, - "link": null, - "locked": false, - "fontSize": 16, - "fontFamily": 1, - "text": "Main", - "textAlign": "left", - "verticalAlign": "top", - "containerId": null, - "originalText": "Main", - "lineHeight": 1.25, - "baseline": 14 - }, - { - "type": "ellipse", - "version": 1057, - "versionNonce": 1586562562, - "isDeleted": false, - "id": "LLwD7_p7LskpBfMC0seH9", - "fillStyle": "solid", - "strokeWidth": 1, - "strokeStyle": "solid", - "roughness": 0, - "opacity": 100, - "angle": 0, - "x": -4414.71486961106, - "y": -4497.629609816566, - "strokeColor": "#1e1e1e", - "backgroundColor": "transparent", - "width": 51.445748465402175, - "height": 47.903921944754984, - "seed": 951785410, - "groupIds": [], - "frameId": null, - "roundness": { - "type": 2 - }, - "boundElements": [ - { - "id": "WLwABAOJOSDvAU7Y7yFjD", - "type": "arrow" - }, - { - "id": "2UbB1KMaCo94zzVFFyzaJ", - "type": "arrow" - } - ], - "updated": 1709205338879, - "link": null, - "locked": false - }, - { - "type": "ellipse", - "version": 581, - "versionNonce": 1399575326, - "isDeleted": false, - "id": "pwYTqEEjmc69F11pHjYF_", - "fillStyle": "solid", - "strokeWidth": 1, - "strokeStyle": "solid", - "roughness": 0, - "opacity": 100, - "angle": 0, - "x": -4761.215198764938, - "y": -4719.065058599346, - "strokeColor": "#1e1e1e", - "backgroundColor": "transparent", - "width": 51.445748465402175, - "height": 47.903921944754984, - "seed": 2126958466, - "groupIds": [], - "frameId": null, - "roundness": { - "type": 2 - }, - "boundElements": [ - { - "id": "1AwG7wawIuu2khWvBnauV", - "type": "arrow" - }, - { - "id": "Zmhu_d6OClqOpd2i8SGGY", - "type": "arrow" - } - ], - "updated": 1709205338879, - "link": null, - "locked": false - }, - { - "type": "text", - "version": 1006, - "versionNonce": 1212478914, - "isDeleted": false, - "id": "W0IxIdBb5Dii08JD7H2ok", - "fillStyle": "solid", - "strokeWidth": 1, - "strokeStyle": "solid", - "roughness": 0, - "opacity": 100, - "angle": 0, - "x": -5021.378123395241, - "y": -4705.650272396779, - "strokeColor": "#1971c2", - "backgroundColor": "transparent", - "width": 77.93992614746094, - "height": 25, - "seed": 1107660610, - "groupIds": [], - "frameId": null, - "roundness": null, - "boundElements": [], - "updated": 1709205338879, - "link": null, - "locked": false, - "fontSize": 20, - "fontFamily": 1, - "text": "writer_1", - "textAlign": "left", - "verticalAlign": "top", - "containerId": null, - "originalText": "writer_1", - "lineHeight": 1.25, - "baseline": 17 - }, - { - "type": "text", - "version": 765, - "versionNonce": 50315102, - "isDeleted": false, - "id": "-s9A1E-5y1TaIoxttsW3z", - "fillStyle": "solid", - "strokeWidth": 1, - "strokeStyle": "solid", - "roughness": 0, - "opacity": 100, - "angle": 0, - "x": -4780.634325003079, - "y": -4700.357249151108, - "strokeColor": "#1e1e1e", - "backgroundColor": "transparent", - "width": 15.579986572265625, - "height": 25, - "seed": 1993758466, - "groupIds": [], - "frameId": null, - "roundness": null, - "boundElements": [ - { - "id": "1AwG7wawIuu2khWvBnauV", - "type": "arrow" - } - ], - "updated": 1709205338879, - "link": null, - "locked": false, - "fontSize": 20, - "fontFamily": 1, - "text": "b1", - "textAlign": "left", - "verticalAlign": "top", - "containerId": null, - "originalText": "b1", - "lineHeight": 1.25, - "baseline": 17 - }, - { - "type": "ellipse", - "version": 1438, - "versionNonce": 2103766402, - "isDeleted": false, - "id": "zyeeGJMekmv4sNA5NsgZ9", - "fillStyle": "solid", - "strokeWidth": 1, - "strokeStyle": "solid", - "roughness": 0, - "opacity": 100, - "angle": 0, - "x": -4748.924636543954, - "y": -4913.101373427406, - "strokeColor": "#1e1e1e", - "backgroundColor": "transparent", - "width": 51.445748465402175, - "height": 47.903921944754984, - "seed": 767043266, - "groupIds": [], - "frameId": null, - "roundness": { - "type": 2 - }, - "boundElements": [ - { - "id": "BSSZFIfUQiKNRu4Rlehv5", - "type": "arrow" - }, - { - "id": "kUzN5rRojuoaj26p1Biqe", - "type": "arrow" - } - ], - "updated": 1709205338879, - "link": null, - "locked": false - }, - { - "type": "text", - "version": 1382, - "versionNonce": 701244318, - "isDeleted": false, - "id": "8-AtRPpXAf5qu2DAJhnYo", - "fillStyle": "solid", - "strokeWidth": 1, - "strokeStyle": "solid", - "roughness": 0, - "opacity": 100, - "angle": 0, - "x": -5018.254038922583, - "y": -5016.093077005808, - "strokeColor": "#f08c00", - "backgroundColor": "transparent", - "width": 86.75991821289062, - "height": 25, - "seed": 256507522, - "groupIds": [], - "frameId": null, - "roundness": null, - "boundElements": [], - "updated": 1709205338879, - "link": null, - "locked": false, - "fontSize": 20, - "fontFamily": 1, - "text": "writer_2", - "textAlign": "left", - "verticalAlign": "top", - "containerId": null, - "originalText": "writer_2", - "lineHeight": 1.25, - "baseline": 17 - }, - { - "type": "ellipse", - "version": 1150, - "versionNonce": 1127214402, - "isDeleted": false, - "id": "9lHLcujynHEODAGbzWpPQ", - "fillStyle": "solid", - "strokeWidth": 1, - "strokeStyle": "solid", - "roughness": 0, - "opacity": 100, - "angle": 0, - "x": -4532.408416451184, - "y": -4722.149829891901, - "strokeColor": "#1e1e1e", - "backgroundColor": "transparent", - "width": 51.445748465402175, - "height": 47.903921944754984, - "seed": 1481301570, - "groupIds": [], - "frameId": null, - "roundness": { - "type": 2 - }, - "boundElements": [ - { - "id": "eAx3-tJuHqAGC3LF-JPx8", - "type": "arrow" - } - ], - "updated": 1709205338879, - "link": null, - "locked": false - }, - { - "type": "text", - "version": 346, - "versionNonce": 973209566, - "isDeleted": false, - "id": "AuN4vCXle-xo0AA-UkFZA", - "fillStyle": "solid", - "strokeWidth": 1, - "strokeStyle": "solid", - "roughness": 0, - "opacity": 100, - "angle": 0, - "x": -4677.104788347109, - "y": -4688.523164504064, - "strokeColor": "#1e1e1e", - "backgroundColor": "transparent", - "width": 127.03993225097656, - "height": 20, - "seed": 1436141058, - "groupIds": [], - "frameId": null, - "roundness": null, - "boundElements": [], - "updated": 1709205338879, - "link": null, - "locked": false, - "fontSize": 16, - "fontFamily": 1, - "text": "insert to table ", - "textAlign": "left", - "verticalAlign": "top", - "containerId": null, - "originalText": "insert to table ", - "lineHeight": 1.25, - "baseline": 14 - }, - { - "type": "ellipse", - "version": 1416, - "versionNonce": 1594160386, - "isDeleted": false, - "id": "FIiTK_X32e1Ezqc3thhIL", - "fillStyle": "solid", - "strokeWidth": 1, - "strokeStyle": "solid", - "roughness": 0, - "opacity": 100, - "angle": 0, - "x": -4443.213034196717, - "y": -4911.350116757134, - "strokeColor": "#1e1e1e", - "backgroundColor": "transparent", - "width": 51.445748465402175, - "height": 47.903921944754984, - "seed": 1614132674, - "groupIds": [], - "frameId": null, - "roundness": { - "type": 2 - }, - "boundElements": [ - { - "id": "2UbB1KMaCo94zzVFFyzaJ", - "type": "arrow" - }, - { - "id": "kUzN5rRojuoaj26p1Biqe", - "type": "arrow" - } - ], - "updated": 1709205338879, - "link": null, - "locked": false - }, - { - "type": "rectangle", - "version": 1770, - "versionNonce": 934433822, - "isDeleted": false, - "id": "M1n1GhbJ2APqr45TNVrlk", - "fillStyle": "solid", - "strokeWidth": 1, - "strokeStyle": "solid", - "roughness": 0, - "opacity": 100, - "angle": 0, - "x": -4823.349082948458, - "y": -4451.587461123878, - "strokeColor": "#1e1e1e", - "backgroundColor": "transparent", - "width": 155.75714111328205, - "height": 110, - "seed": 1497214338, - "groupIds": [], - "frameId": null, - "roundness": { - "type": 3 - }, - "boundElements": [ - { - "type": "text", - "id": "kOypLf68N3ji-dtpJ5vkC" - }, - { - "id": "WLwABAOJOSDvAU7Y7yFjD", - "type": "arrow" - } - ], - "updated": 1709205338879, - "link": null, - "locked": false - }, - { - "type": "text", - "version": 1223, - "versionNonce": 308479170, - "isDeleted": false, - "id": "kOypLf68N3ji-dtpJ5vkC", - "fillStyle": "solid", - "strokeWidth": 1, - "strokeStyle": "solid", - "roughness": 0, - "opacity": 100, - "angle": 0, - "x": -4818.349082948458, - "y": -4446.587461123878, - "strokeColor": "#1e1e1e", - "backgroundColor": "transparent", - "width": 142.6879425048828, - "height": 100, - "seed": 636529986, - "groupIds": [], - "frameId": null, - "roundness": null, - "boundElements": [], - "updated": 1709205338879, - "link": null, - "locked": false, - "fontSize": 16, - "fontFamily": 1, - "text": "my-table/\n _delta_log/\n 0000.json\n \n ", - "textAlign": "left", - "verticalAlign": "top", - "containerId": "M1n1GhbJ2APqr45TNVrlk", - "originalText": "my-table/\n _delta_log/\n 0000.json\n \n ", - "lineHeight": 1.25, - "baseline": 94 - }, - { - "type": "rectangle", - "version": 1939, - "versionNonce": 2093883486, - "isDeleted": false, - "id": "n4pOczy0p3JJCiL04xQoO", - "fillStyle": "solid", - "strokeWidth": 1, - "strokeStyle": "solid", - "roughness": 0, - "opacity": 100, - "angle": 0, - "x": -4633.7769659940495, - "y": -4653.760927200805, - "strokeColor": "#1e1e1e", - "backgroundColor": "transparent", - "width": 155.75714111328205, - "height": 110, - "seed": 732804354, - "groupIds": [ - "6iyWuhB12BXL7nOQpmsnr" - ], - "frameId": null, - "roundness": { - "type": 3 - }, - "boundElements": [ - { - "type": "text", - "id": "SvFtSb2ysu9i39_JK-Y_p" - }, - { - "id": "eAx3-tJuHqAGC3LF-JPx8", - "type": "arrow" - } - ], - "updated": 1709205338879, - "link": null, - "locked": false - }, - { - "type": "text", - "version": 1391, - "versionNonce": 384375938, - "isDeleted": false, - "id": "SvFtSb2ysu9i39_JK-Y_p", - "fillStyle": "solid", - "strokeWidth": 1, - "strokeStyle": "solid", - "roughness": 0, - "opacity": 100, - "angle": 0, - "x": -4628.7769659940495, - "y": -4648.760927200805, - "strokeColor": "#1e1e1e", - "backgroundColor": "transparent", - "width": 142.6879425048828, - "height": 100, - "seed": 1274266818, - "groupIds": [ - "6iyWuhB12BXL7nOQpmsnr" - ], - "frameId": null, - "roundness": null, - "boundElements": [], - "updated": 1709205338879, - "link": null, - "locked": false, - "fontSize": 16, - "fontFamily": 1, - "text": "my-table/\n _delta_log/\n 0000.json\n \n ", - "textAlign": "left", - "verticalAlign": "top", - "containerId": "n4pOczy0p3JJCiL04xQoO", - "originalText": "my-table/\n _delta_log/\n 0000.json\n \n ", - "lineHeight": 1.25, - "baseline": 94 - }, - { - "type": "text", - "version": 322, - "versionNonce": 2099668126, - "isDeleted": false, - "id": "wyjveP0Tl9iJsRVzaYDSn", - "fillStyle": "solid", - "strokeWidth": 1, - "strokeStyle": "solid", - "roughness": 0, - "opacity": 100, - "angle": 0, - "x": -4564.970399483169, - "y": -4587.317445755492, - "strokeColor": "#1971c2", - "backgroundColor": "transparent", - "width": 72.01594543457031, - "height": 20, - "seed": 1617026178, - "groupIds": [ - "6iyWuhB12BXL7nOQpmsnr" - ], - "frameId": null, - "roundness": null, - "boundElements": [], - "updated": 1709205338879, - "link": null, - "locked": false, - "fontSize": 16, - "fontFamily": 1, - "text": "0001.json", - "textAlign": "left", - "verticalAlign": "top", - "containerId": null, - "originalText": "0001.json", - "lineHeight": 1.25, - "baseline": 14 - }, - { - "type": "rectangle", - "version": 2119, - "versionNonce": 441859138, - "isDeleted": false, - "id": "X52u9_BiHmIFEHej-Oxlf", - "fillStyle": "solid", - "strokeWidth": 1, - "strokeStyle": "solid", - "roughness": 0, - "opacity": 100, - "angle": 0, - "x": -4579.791605041528, - "y": -4848.161354044467, - "strokeColor": "#1e1e1e", - "backgroundColor": "transparent", - "width": 155.75714111328205, - "height": 110, - "seed": 917961794, - "groupIds": [ - "5AgixBmPhcSGPPH16TUb-" - ], - "frameId": null, - "roundness": { - "type": 3 - }, - "boundElements": [ - { - "type": "text", - "id": "mstR-FmjOT92MIwTn27yT" - }, - { - "id": "2UbB1KMaCo94zzVFFyzaJ", - "type": "arrow" - } - ], - "updated": 1709205338879, - "link": null, - "locked": false - }, - { - "type": "text", - "version": 1571, - "versionNonce": 174858462, - "isDeleted": false, - "id": "mstR-FmjOT92MIwTn27yT", - "fillStyle": "solid", - "strokeWidth": 1, - "strokeStyle": "solid", - "roughness": 0, - "opacity": 100, - "angle": 0, - "x": -4574.791605041528, - "y": -4843.161354044467, - "strokeColor": "#1e1e1e", - "backgroundColor": "transparent", - "width": 142.6879425048828, - "height": 100, - "seed": 215098370, - "groupIds": [ - "5AgixBmPhcSGPPH16TUb-" - ], - "frameId": null, - "roundness": null, - "boundElements": [], - "updated": 1709205338879, - "link": null, - "locked": false, - "fontSize": 16, - "fontFamily": 1, - "text": "my-table/\n _delta_log/\n 0000.json\n \n ", - "textAlign": "left", - "verticalAlign": "top", - "containerId": "X52u9_BiHmIFEHej-Oxlf", - "originalText": "my-table/\n _delta_log/\n 0000.json\n \n ", - "lineHeight": 1.25, - "baseline": 94 - }, - { - "type": "text", - "version": 502, - "versionNonce": 982082562, - "isDeleted": false, - "id": "h3Uxd9SHfAxqlA8lGGhlh", - "fillStyle": "solid", - "strokeWidth": 1, - "strokeStyle": "solid", - "roughness": 0, - "opacity": 100, - "angle": 0, - "x": -4510.985038530647, - "y": -4781.7178725991525, - "strokeColor": "#f08c00", - "backgroundColor": "transparent", - "width": 72.01594543457031, - "height": 20, - "seed": 213013442, - "groupIds": [ - "5AgixBmPhcSGPPH16TUb-" - ], - "frameId": null, - "roundness": null, - "boundElements": [], - "updated": 1709205338879, - "link": null, - "locked": false, - "fontSize": 16, - "fontFamily": 1, - "text": "0001.json", - "textAlign": "left", - "verticalAlign": "top", - "containerId": null, - "originalText": "0001.json", - "lineHeight": 1.25, - "baseline": 14 - }, - { - "type": "text", - "version": 420, - "versionNonce": 405820702, - "isDeleted": false, - "id": "jGTLUs8NOf4XHQ71uklsv", - "fillStyle": "solid", - "strokeWidth": 1, - "strokeStyle": "solid", - "roughness": 0, - "opacity": 100, - "angle": 0, - "x": -4617.846880675621, - "y": -4876.945196697177, - "strokeColor": "#1e1e1e", - "backgroundColor": "transparent", - "width": 127.03993225097656, - "height": 20, - "seed": 1215728514, - "groupIds": [], - "frameId": null, - "roundness": null, - "boundElements": [ - { - "id": "kUzN5rRojuoaj26p1Biqe", - "type": "arrow" - } - ], - "updated": 1709205338879, - "link": null, - "locked": false, - "fontSize": 16, - "fontFamily": 1, - "text": "insert to table ", - "textAlign": "left", - "verticalAlign": "top", - "containerId": null, - "originalText": "insert to table ", - "lineHeight": 1.25, - "baseline": 14 - }, - { - "type": "arrow", - "version": 918, - "versionNonce": 25269186, - "isDeleted": false, - "id": "eAx3-tJuHqAGC3LF-JPx8", - "fillStyle": "solid", - "strokeWidth": 1, - "strokeStyle": "solid", - "roughness": 0, - "opacity": 100, - "angle": 0, - "x": -4494.295583776001, - "y": -4676.349554147726, - "strokeColor": "#1e1e1e", - "backgroundColor": "transparent", - "width": 93.69919137050329, - "height": 181.92035974070404, - "seed": 912116546, - "groupIds": [], - "frameId": null, - "roundness": { - "type": 2 - }, - "boundElements": [], - "updated": 1709205338879, - "link": null, - "locked": false, - "startBinding": { - "elementId": "n4pOczy0p3JJCiL04xQoO", - "focus": -0.9562988901370194, - "gap": 22.588626946921067 - }, - "endBinding": null, - "lastCommittedPoint": null, - "startArrowhead": null, - "endArrowhead": "arrow", - "points": [ - [ - 0, - 0 - ], - [ - 93.69919137050329, - 181.92035974070404 - ] - ] - }, - { - "type": "rectangle", - "version": 2019, - "versionNonce": 1633536898, - "isDeleted": false, - "id": "jEpOc9gA9ECPKB7-xBSI9", - "fillStyle": "solid", - "strokeWidth": 1, - "strokeStyle": "solid", - "roughness": 0, - "opacity": 100, - "angle": 0, - "x": -4445.877185720612, - "y": -4442.136724682132, - "strokeColor": "#1e1e1e", - "backgroundColor": "transparent", - "width": 155.75714111328205, - "height": 110, - "seed": 1580294850, - "groupIds": [ - "xYKUDi2W49YoCvXGyJL6e" - ], - "frameId": null, - "roundness": { - "type": 3 - }, - "boundElements": [ - { - "type": "text", - "id": "GgXUZoq4b8dgEhIsBvKwx" - } - ], - "updated": 1709205338879, - "link": null, - "locked": false - }, - { - "type": "text", - "version": 1472, - "versionNonce": 1155016094, - "isDeleted": false, - "id": "GgXUZoq4b8dgEhIsBvKwx", - "fillStyle": "solid", - "strokeWidth": 1, - "strokeStyle": "solid", - "roughness": 0, - "opacity": 100, - "angle": 0, - "x": -4440.877185720612, - "y": -4437.136724682132, - "strokeColor": "#1e1e1e", - "backgroundColor": "transparent", - "width": 142.6879425048828, - "height": 100, - "seed": 1429977730, - "groupIds": [ - "xYKUDi2W49YoCvXGyJL6e" - ], - "frameId": null, - "roundness": null, - "boundElements": [], - "updated": 1709205338879, - "link": null, - "locked": false, - "fontSize": 16, - "fontFamily": 1, - "text": "my-table/\n _delta_log/\n 0000.json\n \n ", - "textAlign": "left", - "verticalAlign": "top", - "containerId": "jEpOc9gA9ECPKB7-xBSI9", - "originalText": "my-table/\n _delta_log/\n 0000.json\n \n ", - "lineHeight": 1.25, - "baseline": 94 - }, - { - "type": "text", - "version": 404, - "versionNonce": 811404098, - "isDeleted": false, - "id": "wb0_cbs-iPoF9sBYWHVv-", - "fillStyle": "solid", - "strokeWidth": 1, - "strokeStyle": "solid", - "roughness": 0, - "opacity": 100, - "angle": 0, - "x": -4377.070619209731, - "y": -4375.693243236819, - "strokeColor": "#1971c2", - "backgroundColor": "transparent", - "width": 72.01594543457031, - "height": 20, - "seed": 1889868354, - "groupIds": [ - "xYKUDi2W49YoCvXGyJL6e" - ], - "frameId": null, - "roundness": null, - "boundElements": [], - "updated": 1709205338879, - "link": null, - "locked": false, - "fontSize": 16, - "fontFamily": 1, - "text": "0001.json", - "textAlign": "left", - "verticalAlign": "top", - "containerId": null, - "originalText": "0001.json", - "lineHeight": 1.25, - "baseline": 14 - }, - { - "type": "arrow", - "version": 1189, - "versionNonce": 1480442334, - "isDeleted": false, - "id": "2UbB1KMaCo94zzVFFyzaJ", - "fillStyle": "solid", - "strokeWidth": 1, - "strokeStyle": "solid", - "roughness": 0, - "opacity": 100, - "angle": 0, - "x": -4409.411395697797, - "y": -4858.488569181136, - "strokeColor": "#1e1e1e", - "backgroundColor": "transparent", - "width": 19.946068101089622, - "height": 359.8628738488396, - "seed": 1598849538, - "groupIds": [], - "frameId": null, - "roundness": { - "type": 2 - }, - "boundElements": [], - "updated": 1709205338879, - "link": null, - "locked": false, - "startBinding": { - "elementId": "X52u9_BiHmIFEHej-Oxlf", - "focus": -1.187767547939438, - "gap": 14.932425499329838 - }, - "endBinding": { - "elementId": "LLwD7_p7LskpBfMC0seH9", - "focus": 0.03530906917672053, - "gap": 1 - }, - "lastCommittedPoint": null, - "startArrowhead": null, - "endArrowhead": "arrow", - "points": [ - [ - 0, - 0 - ], - [ - 19.946068101089622, - 359.8628738488396 - ] - ] - }, - { - "type": "arrow", - "version": 564, - "versionNonce": 618550018, - "isDeleted": false, - "id": "kUzN5rRojuoaj26p1Biqe", - "fillStyle": "solid", - "strokeWidth": 1, - "strokeStyle": "solid", - "roughness": 0, - "opacity": 100, - "angle": 0, - "x": -4693.745276794551, - "y": -4892.283184485677, - "strokeColor": "#1e1e1e", - "backgroundColor": "transparent", - "width": 250.17607011271957, - "height": 0.1822173504415332, - "seed": 472969666, - "groupIds": [], - "frameId": null, - "roundness": { - "type": 2 - }, - "boundElements": [], - "updated": 1709205338879, - "link": null, - "locked": false, - "startBinding": { - "elementId": "zyeeGJMekmv4sNA5NsgZ9", - "focus": -0.13173142231619034, - "gap": 3.9214480665472067 - }, - "endBinding": { - "elementId": "FIiTK_X32e1Ezqc3thhIL", - "focus": 0.19555038025911065, - "gap": 1 - }, - "lastCommittedPoint": null, - "startArrowhead": null, - "endArrowhead": "arrow", - "points": [ - [ - 0, - 0 - ], - [ - 250.17607011271957, - 0.1822173504415332 - ] - ] - }, - { - "type": "text", - "version": 237, - "versionNonce": 1562760734, - "isDeleted": false, - "id": "itvK8N-Zu8RRRiLKZFlF-", - "fillStyle": "solid", - "strokeWidth": 1, - "strokeStyle": "solid", - "roughness": 0, - "opacity": 100, - "angle": 0, - "x": -4373.438068288975, - "y": -4693.725003651696, - "strokeColor": "#e03131", - "backgroundColor": "transparent", - "width": 239.95187377929688, - "height": 20, - "seed": 1785817474, - "groupIds": [], - "frameId": null, - "roundness": null, - "boundElements": [], - "updated": 1709205338879, - "link": null, - "locked": false, - "fontSize": 16, - "fontFamily": 1, - "text": "Merge fails due to a conflict ", - "textAlign": "left", - "verticalAlign": "top", - "containerId": null, - "originalText": "Merge fails due to a conflict ", - "lineHeight": 1.25, - "baseline": 14 - }, - { - "type": "line", - "version": 352, - "versionNonce": 1365287618, - "isDeleted": false, - "id": "WT2vugnQfYCHjuts054FT", - "fillStyle": "solid", - "strokeWidth": 4, - "strokeStyle": "solid", - "roughness": 0, - "opacity": 100, - "angle": 0, - "x": -4387.246487652812, - "y": -4680.468472889977, - "strokeColor": "#e03131", - "backgroundColor": "transparent", - "width": 13.118373325894026, - "height": 17.951572963169383, - "seed": 1363994946, - "groupIds": [ - "jdLwdOPNVKmDtD3-vXPaA" - ], - "frameId": null, - "roundness": { - "type": 2 - }, - "boundElements": [], - "updated": 1709205338879, - "link": null, - "locked": false, - "startBinding": null, - "endBinding": null, - "lastCommittedPoint": null, - "startArrowhead": null, - "endArrowhead": null, - "points": [ - [ - 0, - 0 - ], - [ - -13.118373325894026, - 17.951572963169383 - ] - ] - }, - { - "type": "line", - "version": 562, - "versionNonce": 1820418654, - "isDeleted": false, - "id": "90Zf7fZd5ulllMEm5WsuN", - "fillStyle": "solid", - "strokeWidth": 4, - "strokeStyle": "solid", - "roughness": 0, - "opacity": 100, - "angle": 0, - "x": -4400.957250766653, - "y": -4679.711898531717, - "strokeColor": "#e03131", - "backgroundColor": "transparent", - "width": 14.59167480468659, - "height": 15.397382463726899, - "seed": 404910338, - "groupIds": [ - "jdLwdOPNVKmDtD3-vXPaA" - ], - "frameId": null, - "roundness": { - "type": 2 - }, - "boundElements": [], - "updated": 1709205338879, - "link": null, - "locked": false, - "startBinding": null, - "endBinding": null, - "lastCommittedPoint": null, - "startArrowhead": null, - "endArrowhead": null, - "points": [ - [ - 0, - 0 - ], - [ - 14.59167480468659, - 15.397382463726899 - ] - ] - }, - { - "type": "arrow", - "version": 718, - "versionNonce": 545454722, - "isDeleted": false, - "id": "WLwABAOJOSDvAU7Y7yFjD", - "fillStyle": "solid", - "strokeWidth": 1, - "strokeStyle": "solid", - "roughness": 0, - "opacity": 100, - "angle": 0, - "x": -4820.558902143084, - "y": -4479.856055443219, - "strokeColor": "#1e1e1e", - "backgroundColor": "transparent", - "width": 404.6595485926555, - "height": 2.1077378845993735, - "seed": 1114702018, - "groupIds": [], - "frameId": null, - "roundness": { - "type": 2 - }, - "boundElements": [], - "updated": 1709205338879, - "link": null, - "locked": false, - "startBinding": { - "elementId": "ogZ6xhDLj2zCWtoP_pLWt", - "focus": 0.10653700306491325, - "gap": 2.3039530047365133 - }, - "endBinding": { - "elementId": "LLwD7_p7LskpBfMC0seH9", - "focus": 0.16409744857823455, - "gap": 1.5343036149306961 - }, - "lastCommittedPoint": null, - "startArrowhead": null, - "endArrowhead": "arrow", - "points": [ - [ - 0, - 0 - ], - [ - 404.6595485926555, - 2.1077378845993735 - ] - ] - }, - { - "type": "rectangle", - "version": 557, - "versionNonce": 1908654594, - "isDeleted": false, - "id": "6AuEHwE3GbF_AEtNUpOi3", - "fillStyle": "solid", - "strokeWidth": 1, - "strokeStyle": "dotted", - "roughness": 0, - "opacity": 100, - "angle": 0, - "x": -5038.888221585141, - "y": -5045.482805719315, - "strokeColor": "#f08c00", - "backgroundColor": "transparent", - "width": 669.6878387115825, - "height": 313.1841823032928, - "seed": 1795743746, - "groupIds": [], - "frameId": null, - "roundness": null, - "boundElements": [ - { - "id": "BSSZFIfUQiKNRu4Rlehv5", - "type": "arrow" - } - ], - "updated": 1709205338879, - "link": null, - "locked": false - }, - { - "type": "rectangle", - "version": 888, - "versionNonce": 1322440478, - "isDeleted": false, - "id": "E3Z-rmUWZoIBam9yOArN6", - "fillStyle": "solid", - "strokeWidth": 1, - "strokeStyle": "dotted", - "roughness": 0, - "opacity": 100, - "angle": 0, - "x": -5037.20835969898, - "y": -4721.684812635738, - "strokeColor": "#1971c2", - "backgroundColor": "transparent", - "width": 668.0315021892181, - "height": 188.8683344243646, - "seed": 1823576002, - "groupIds": [], - "frameId": null, - "roundness": null, - "boundElements": [ - { - "id": "1AwG7wawIuu2khWvBnauV", - "type": "arrow" - }, - { - "id": "BSSZFIfUQiKNRu4Rlehv5", - "type": "arrow" - } - ], - "updated": 1709205338879, - "link": null, - "locked": false - }, - { - "type": "arrow", - "version": 1609, - "versionNonce": 989908930, - "isDeleted": false, - "id": "1AwG7wawIuu2khWvBnauV", - "fillStyle": "solid", - "strokeWidth": 1, - "strokeStyle": "solid", - "roughness": 0, - "opacity": 100, - "angle": 0, - "x": -4834.608650019732, - "y": -4504.732350186047, - "strokeColor": "#1e1e1e", - "backgroundColor": "transparent", - "width": 81.79272997921726, - "height": 168.82151191470984, - "seed": 753795970, - "groupIds": [], - "frameId": null, - "roundness": null, - "boundElements": [], - "updated": 1709205338879, - "link": null, - "locked": false, - "startBinding": { - "elementId": "E3Z-rmUWZoIBam9yOArN6", - "focus": -0.18973897987154792, - "gap": 28.084128025325754 - }, - "endBinding": { - "elementId": "-s9A1E-5y1TaIoxttsW3z", - "focus": -1.9469887223595808, - "gap": 12.238418390298648 - }, - "lastCommittedPoint": null, - "startArrowhead": null, - "endArrowhead": "arrow", - "points": [ - [ - 0, - 0 - ], - [ - 81.79272997921726, - -168.82151191470984 - ] - ] - }, - { - "type": "arrow", - "version": 3003, - "versionNonce": 235308382, - "isDeleted": false, - "id": "BSSZFIfUQiKNRu4Rlehv5", - "fillStyle": "solid", - "strokeWidth": 1, - "strokeStyle": "solid", - "roughness": 0, - "opacity": 100, - "angle": 0, - "x": -4845.6801434550825, - "y": -4506.576247150813, - "strokeColor": "#1e1e1e", - "backgroundColor": "transparent", - "width": 107.13697027572653, - "height": 359.1605733587958, - "seed": 220611394, - "groupIds": [], - "frameId": null, - "roundness": null, - "boundElements": [], - "updated": 1709205338879, - "link": null, - "locked": false, - "startBinding": { - "elementId": "E3Z-rmUWZoIBam9yOArN6", - "focus": -0.29402235190910925, - "gap": 26.240231060559836 - }, - "endBinding": { - "elementId": "zyeeGJMekmv4sNA5NsgZ9", - "focus": 0.3130525348324614, - "gap": 3.5398723098396054 - }, - "lastCommittedPoint": null, - "startArrowhead": null, - "endArrowhead": "arrow", - "points": [ - [ - 0, - 0 - ], - [ - 107.13697027572653, - -359.1605733587958 - ] - ] - }, - { - "type": "arrow", - "version": 275, - "versionNonce": 529893250, - "isDeleted": false, - "id": "Zmhu_d6OClqOpd2i8SGGY", - "fillStyle": "solid", - "strokeWidth": 1, - "strokeStyle": "solid", - "roughness": 0, - "opacity": 100, - "angle": 0, - "x": -4708.833474763065, - "y": -4698.500519625166, - "strokeColor": "#1e1e1e", - "backgroundColor": "transparent", - "width": 177.86420549665127, - "height": 1.169651576450633, - "seed": 62950146, - "groupIds": [], - "frameId": null, - "roundness": null, - "boundElements": [], - "updated": 1709205338879, - "link": null, - "locked": false, - "startBinding": { - "elementId": "pwYTqEEjmc69F11pHjYF_", - "focus": -0.1487412340172701, - "gap": 1.1813995419280694 - }, - "endBinding": null, - "lastCommittedPoint": null, - "startArrowhead": null, - "endArrowhead": "arrow", - "points": [ - [ - 0, - 0 - ], - [ - 177.86420549665127, - 1.169651576450633 - ] - ] - }, - { - "type": "text", - "version": 944, - "versionNonce": 1946823070, - "isDeleted": false, - "id": "ku9fwnNuiqyc625XEumnj", - "fillStyle": "solid", - "strokeWidth": 1, - "strokeStyle": "solid", - "roughness": 0, - "opacity": 100, - "angle": 0, - "x": -4781.085874121029, - "y": -4896.7100993141175, - "strokeColor": "#1e1e1e", - "backgroundColor": "transparent", - "width": 24.399978637695312, - "height": 25, - "seed": 121363138, - "groupIds": [], - "frameId": null, - "roundness": null, - "boundElements": [ - { - "id": "BSSZFIfUQiKNRu4Rlehv5", - "type": "arrow" - } - ], - "updated": 1709205338879, - "link": null, - "locked": false, - "fontSize": 20, - "fontFamily": 1, - "text": "b2", - "textAlign": "left", - "verticalAlign": "top", - "containerId": null, - "originalText": "b2", - "lineHeight": 1.25, - "baseline": 17 - }, - { - "type": "text", - "version": 256, - "versionNonce": 1519338974, - "isDeleted": false, - "id": "wdm8lY-Pc3nWnX4OKAv9I", - "fillStyle": "solid", - "strokeWidth": 1, - "strokeStyle": "solid", - "roughness": 0, - "opacity": 100, - "angle": 0, - "x": -5048.63663120371, - "y": -5118.105719398638, - "strokeColor": "#1e1e1e", - "backgroundColor": "transparent", - "width": 723.295654296875, - "height": 35, - "seed": 1131516482, - "groupIds": [], - "frameId": null, - "roundness": null, - "boundElements": [], - "updated": 1709205338879, - "link": null, - "locked": false, - "fontSize": 28, - "fontFamily": 1, - "text": "Merge conflicts by Multi-writers to multiple branches", - "textAlign": "left", - "verticalAlign": "top", - "containerId": null, - "originalText": "Merge conflicts by Multi-writers to multiple branches", - "lineHeight": 1.25, - "baseline": 24 - } - ], - "appState": { - "gridSize": null, - "viewBackgroundColor": "#ffffff" - }, - "files": {} -} \ No newline at end of file diff --git a/docs/src/assets/img/delta-lake/merge-conflict.png b/docs/src/assets/img/delta-lake/merge-conflict.png deleted file mode 100644 index 410c27035da..00000000000 Binary files a/docs/src/assets/img/delta-lake/merge-conflict.png and /dev/null differ diff --git a/docs/src/assets/img/delta-lake/multi-writers-with-lakefs-branches-merges.png b/docs/src/assets/img/delta-lake/multi-writers-with-lakefs-branches-merges.png deleted file mode 100644 index c0eaf61c716..00000000000 Binary files a/docs/src/assets/img/delta-lake/multi-writers-with-lakefs-branches-merges.png and /dev/null differ diff --git a/docs/src/assets/img/delta-lake/multi-writers-with-lakefs-branches.excalidraw b/docs/src/assets/img/delta-lake/multi-writers-with-lakefs-branches.excalidraw deleted file mode 100644 index 4490b280888..00000000000 --- a/docs/src/assets/img/delta-lake/multi-writers-with-lakefs-branches.excalidraw +++ /dev/null @@ -1,2250 +0,0 @@ -{ - "type": "excalidraw", - "version": 2, - "source": "https://excalidraw.com", - "elements": [ - { - "type": "ellipse", - "version": 650, - "versionNonce": 2050083358, - "isDeleted": false, - "id": "I8RGguEZIqgQ2iYCMY84G", - "fillStyle": "solid", - "strokeWidth": 1, - "strokeStyle": "solid", - "roughness": 0, - "opacity": 100, - "angle": 0, - "x": -4864.8435371630285, - "y": -6305.026070423402, - "strokeColor": "#1e1e1e", - "backgroundColor": "transparent", - "width": 51.445748465402175, - "height": 47.903921944754984, - "seed": 123034946, - "groupIds": [], - "frameId": null, - "roundness": { - "type": 2 - }, - "boundElements": [ - { - "id": "17huQdfU8roWs28YiJOFQ", - "type": "arrow" - }, - { - "id": "HVrlrSxgKJ_WzZvmX9Y5N", - "type": "arrow" - }, - { - "id": "-y7UzxgOlXVLOiBsmLUry", - "type": "arrow" - } - ], - "updated": 1709205155388, - "link": null, - "locked": false - }, - { - "type": "text", - "version": 549, - "versionNonce": 1810814558, - "isDeleted": false, - "id": "_6MstH_s_f9liSx4461Ju", - "fillStyle": "solid", - "strokeWidth": 1, - "strokeStyle": "solid", - "roughness": 0, - "opacity": 100, - "angle": 0, - "x": -4985.144203385236, - "y": -6292.842375059928, - "strokeColor": "#1e1e1e", - "backgroundColor": "transparent", - "width": 33.90399169921875, - "height": 20, - "seed": 1484672898, - "groupIds": [], - "frameId": null, - "roundness": null, - "boundElements": [], - "updated": 1709205155388, - "link": null, - "locked": false, - "fontSize": 16, - "fontFamily": 1, - "text": "Main", - "textAlign": "left", - "verticalAlign": "top", - "containerId": null, - "originalText": "Main", - "lineHeight": 1.25, - "baseline": 14 - }, - { - "type": "ellipse", - "version": 952, - "versionNonce": 57975874, - "isDeleted": false, - "id": "_pxFluJ_cp9w75XmiVlw-", - "fillStyle": "solid", - "strokeWidth": 1, - "strokeStyle": "solid", - "roughness": 0, - "opacity": 100, - "angle": 0, - "x": -4403.24190759143, - "y": -6302.532338264451, - "strokeColor": "#1e1e1e", - "backgroundColor": "transparent", - "width": 51.445748465402175, - "height": 47.903921944754984, - "seed": 1470024926, - "groupIds": [], - "frameId": null, - "roundness": { - "type": 2 - }, - "boundElements": [ - { - "id": "17huQdfU8roWs28YiJOFQ", - "type": "arrow" - }, - { - "id": "E1zwoGpModq1EKmZdw64p", - "type": "arrow" - } - ], - "updated": 1709205160427, - "link": null, - "locked": false - }, - { - "type": "ellipse", - "version": 476, - "versionNonce": 1066700290, - "isDeleted": false, - "id": "Laf-YTcaNfUCqrV36HKSG", - "fillStyle": "solid", - "strokeWidth": 1, - "strokeStyle": "solid", - "roughness": 0, - "opacity": 100, - "angle": 0, - "x": -4749.742236745308, - "y": -6523.9677870472315, - "strokeColor": "#1e1e1e", - "backgroundColor": "transparent", - "width": 51.445748465402175, - "height": 47.903921944754984, - "seed": 174303006, - "groupIds": [], - "frameId": null, - "roundness": { - "type": 2 - }, - "boundElements": [ - { - "id": "xTI2SX2v3Ibfasf1nrMu2", - "type": "arrow" - }, - { - "id": "HVrlrSxgKJ_WzZvmX9Y5N", - "type": "arrow" - }, - { - "id": "Vp4_YREtsDSxxEhj5zmIt", - "type": "arrow" - } - ], - "updated": 1709205155388, - "link": null, - "locked": false - }, - { - "type": "text", - "version": 902, - "versionNonce": 474270494, - "isDeleted": false, - "id": "pe8NNkP-KtTPQCWZgkty5", - "fillStyle": "solid", - "strokeWidth": 1, - "strokeStyle": "solid", - "roughness": 0, - "opacity": 100, - "angle": 0, - "x": -5009.905161375611, - "y": -6510.553000844663, - "strokeColor": "#1971c2", - "backgroundColor": "transparent", - "width": 77.93992614746094, - "height": 25, - "seed": 870126430, - "groupIds": [], - "frameId": null, - "roundness": null, - "boundElements": [], - "updated": 1709205155388, - "link": null, - "locked": false, - "fontSize": 20, - "fontFamily": 1, - "text": "writer_1", - "textAlign": "left", - "verticalAlign": "top", - "containerId": null, - "originalText": "writer_1", - "lineHeight": 1.25, - "baseline": 17 - }, - { - "type": "text", - "version": 660, - "versionNonce": 905557854, - "isDeleted": false, - "id": "EeXqsSo4ns-ZCoBVD0LCL", - "fillStyle": "solid", - "strokeWidth": 1, - "strokeStyle": "solid", - "roughness": 0, - "opacity": 100, - "angle": 0, - "x": -4769.161362983448, - "y": -6505.259977598993, - "strokeColor": "#1e1e1e", - "backgroundColor": "transparent", - "width": 15.579986572265625, - "height": 25, - "seed": 1722156994, - "groupIds": [], - "frameId": null, - "roundness": null, - "boundElements": [ - { - "id": "HVrlrSxgKJ_WzZvmX9Y5N", - "type": "arrow" - } - ], - "updated": 1709205155388, - "link": null, - "locked": false, - "fontSize": 20, - "fontFamily": 1, - "text": "b1", - "textAlign": "left", - "verticalAlign": "top", - "containerId": null, - "originalText": "b1", - "lineHeight": 1.25, - "baseline": 17 - }, - { - "type": "ellipse", - "version": 1333, - "versionNonce": 1522998174, - "isDeleted": false, - "id": "frI8ILH80by_7U7jKorJe", - "fillStyle": "solid", - "strokeWidth": 1, - "strokeStyle": "solid", - "roughness": 0, - "opacity": 100, - "angle": 0, - "x": -4737.451674524324, - "y": -6718.00410187529, - "strokeColor": "#1e1e1e", - "backgroundColor": "transparent", - "width": 51.445748465402175, - "height": 47.903921944754984, - "seed": 1746920286, - "groupIds": [], - "frameId": null, - "roundness": { - "type": 2 - }, - "boundElements": [ - { - "id": "-y7UzxgOlXVLOiBsmLUry", - "type": "arrow" - }, - { - "id": "g5hSV8QmbxT18ueyrdRKR", - "type": "arrow" - } - ], - "updated": 1709205155388, - "link": null, - "locked": false - }, - { - "type": "text", - "version": 1314, - "versionNonce": 1837135170, - "isDeleted": false, - "id": "wZdBpoSIj3AqXRusmeTf5", - "fillStyle": "solid", - "strokeWidth": 1, - "strokeStyle": "solid", - "roughness": 0, - "opacity": 100, - "angle": 0, - "x": -4998.286156905957, - "y": -6735.140045612948, - "strokeColor": "#f08c00", - "backgroundColor": "transparent", - "width": 86.75991821289062, - "height": 25, - "seed": 1061668766, - "groupIds": [], - "frameId": null, - "roundness": null, - "boundElements": [], - "updated": 1709205155388, - "link": null, - "locked": false, - "fontSize": 20, - "fontFamily": 1, - "text": "writer_2", - "textAlign": "left", - "verticalAlign": "top", - "containerId": null, - "originalText": "writer_2", - "lineHeight": 1.25, - "baseline": 17 - }, - { - "type": "ellipse", - "version": 1046, - "versionNonce": 810503198, - "isDeleted": false, - "id": "nzVX7_-rJ4eSTAyqWqiK4", - "fillStyle": "solid", - "strokeWidth": 1, - "strokeStyle": "solid", - "roughness": 0, - "opacity": 100, - "angle": 0, - "x": -4520.935454431553, - "y": -6527.052558339786, - "strokeColor": "#1e1e1e", - "backgroundColor": "transparent", - "width": 51.445748465402175, - "height": 47.903921944754984, - "seed": 373467074, - "groupIds": [], - "frameId": null, - "roundness": { - "type": 2 - }, - "boundElements": [ - { - "id": "lIVdCf4mUsZuAfK280qjY", - "type": "arrow" - } - ], - "updated": 1709205155388, - "link": null, - "locked": false - }, - { - "id": "Bj-ulLnFznW98y3Rqhvuw", - "type": "text", - "x": -4665.631826327479, - "y": -6493.425892951948, - "width": 127.03993225097656, - "height": 20, - "angle": 0, - "strokeColor": "#1e1e1e", - "backgroundColor": "transparent", - "fillStyle": "solid", - "strokeWidth": 1, - "strokeStyle": "solid", - "roughness": 0, - "opacity": 100, - "groupIds": [], - "frameId": null, - "roundness": null, - "seed": 610683970, - "version": 242, - "versionNonce": 1191975006, - "isDeleted": false, - "boundElements": null, - "updated": 1709205155388, - "link": null, - "locked": false, - "text": "insert to table ", - "fontSize": 16, - "fontFamily": 1, - "textAlign": "left", - "verticalAlign": "top", - "baseline": 14, - "containerId": null, - "originalText": "insert to table ", - "lineHeight": 1.25 - }, - { - "type": "ellipse", - "version": 1311, - "versionNonce": 296133762, - "isDeleted": false, - "id": "TE6v9B5AAJjR5aIgpNtWi", - "fillStyle": "solid", - "strokeWidth": 1, - "strokeStyle": "solid", - "roughness": 0, - "opacity": 100, - "angle": 0, - "x": -4431.740072177087, - "y": -6716.252845205019, - "strokeColor": "#1e1e1e", - "backgroundColor": "transparent", - "width": 51.445748465402175, - "height": 47.903921944754984, - "seed": 2024224158, - "groupIds": [], - "frameId": null, - "roundness": { - "type": 2 - }, - "boundElements": [ - { - "id": "P2L0-K8BUaSimEQic5kwJ", - "type": "arrow" - }, - { - "id": "g5hSV8QmbxT18ueyrdRKR", - "type": "arrow" - } - ], - "updated": 1709205155388, - "link": null, - "locked": false - }, - { - "id": "G9By4GiKoleoOWTjfa1lw", - "type": "rectangle", - "x": -4817.706152103706, - "y": -6256.431595821762, - "width": 155.75714111328205, - "height": 110, - "angle": 0, - "strokeColor": "#1e1e1e", - "backgroundColor": "transparent", - "fillStyle": "solid", - "strokeWidth": 1, - "strokeStyle": "solid", - "roughness": 0, - "opacity": 100, - "groupIds": [], - "frameId": null, - "roundness": { - "type": 3 - }, - "seed": 1254547010, - "version": 1680, - "versionNonce": 1948435522, - "isDeleted": false, - "boundElements": [ - { - "type": "text", - "id": "RDlrbWC9cw0RtUoQ7CON4" - }, - { - "id": "17huQdfU8roWs28YiJOFQ", - "type": "arrow" - }, - { - "id": "oLB4nglhzy-mLQ4zT4MlJ", - "type": "arrow" - } - ], - "updated": 1709205155388, - "link": null, - "locked": false - }, - { - "id": "RDlrbWC9cw0RtUoQ7CON4", - "type": "text", - "x": -4812.706152103706, - "y": -6251.431595821762, - "width": 142.6879425048828, - "height": 100, - "angle": 0, - "strokeColor": "#1e1e1e", - "backgroundColor": "transparent", - "fillStyle": "solid", - "strokeWidth": 1, - "strokeStyle": "solid", - "roughness": 0, - "opacity": 100, - "groupIds": [], - "frameId": null, - "roundness": null, - "seed": 1130590722, - "version": 1133, - "versionNonce": 1737234654, - "isDeleted": false, - "boundElements": null, - "updated": 1709205155388, - "link": null, - "locked": false, - "text": "my-table/\n _delta_log/\n 0000.json\n \n ", - "fontSize": 16, - "fontFamily": 1, - "textAlign": "left", - "verticalAlign": "top", - "baseline": 94, - "containerId": "G9By4GiKoleoOWTjfa1lw", - "originalText": "my-table/\n _delta_log/\n 0000.json\n \n ", - "lineHeight": 1.25 - }, - { - "type": "rectangle", - "version": 1837, - "versionNonce": 201754078, - "isDeleted": false, - "id": "cYBcW8tBG39tjX_xiVwap", - "fillStyle": "solid", - "strokeWidth": 1, - "strokeStyle": "solid", - "roughness": 0, - "opacity": 100, - "angle": 0, - "x": -4622.4522724539875, - "y": -6458.865588115637, - "strokeColor": "#1e1e1e", - "backgroundColor": "transparent", - "width": 155.75714111328205, - "height": 110, - "seed": 1920357378, - "groupIds": [ - "dDaO15OSW4bSJcLRyePcW" - ], - "frameId": null, - "roundness": { - "type": 3 - }, - "boundElements": [ - { - "type": "text", - "id": "Q3K3Y1kUFR-G_EDVTLb7K" - }, - { - "id": "lIVdCf4mUsZuAfK280qjY", - "type": "arrow" - } - ], - "updated": 1709205168693, - "link": null, - "locked": false - }, - { - "type": "text", - "version": 1290, - "versionNonce": 590748190, - "isDeleted": false, - "id": "Q3K3Y1kUFR-G_EDVTLb7K", - "fillStyle": "solid", - "strokeWidth": 1, - "strokeStyle": "solid", - "roughness": 0, - "opacity": 100, - "angle": 0, - "x": -4617.4522724539875, - "y": -6453.865588115637, - "strokeColor": "#1e1e1e", - "backgroundColor": "transparent", - "width": 142.6879425048828, - "height": 100, - "seed": 240157634, - "groupIds": [ - "dDaO15OSW4bSJcLRyePcW" - ], - "frameId": null, - "roundness": null, - "boundElements": [], - "updated": 1709205168693, - "link": null, - "locked": false, - "fontSize": 16, - "fontFamily": 1, - "text": "my-table/\n _delta_log/\n 0000.json\n \n ", - "textAlign": "left", - "verticalAlign": "top", - "containerId": "cYBcW8tBG39tjX_xiVwap", - "originalText": "my-table/\n _delta_log/\n 0000.json\n \n ", - "lineHeight": 1.25, - "baseline": 94 - }, - { - "id": "7vDHXet_nuaCq2V5wnHx1", - "type": "text", - "x": -4553.645705943107, - "y": -6392.422106670323, - "width": 72.01594543457031, - "height": 20, - "angle": 0, - "strokeColor": "#1971c2", - "backgroundColor": "transparent", - "fillStyle": "solid", - "strokeWidth": 1, - "strokeStyle": "solid", - "roughness": 0, - "opacity": 100, - "groupIds": [ - "dDaO15OSW4bSJcLRyePcW" - ], - "frameId": null, - "roundness": null, - "seed": 905098498, - "version": 221, - "versionNonce": 171654658, - "isDeleted": false, - "boundElements": null, - "updated": 1709205170678, - "link": null, - "locked": false, - "text": "0001.json", - "fontSize": 16, - "fontFamily": 1, - "textAlign": "left", - "verticalAlign": "top", - "baseline": 14, - "containerId": null, - "originalText": "0001.json", - "lineHeight": 1.25 - }, - { - "type": "rectangle", - "version": 2005, - "versionNonce": 526776670, - "isDeleted": false, - "id": "lB-Gdq5GxDC5VH1c4nBNC", - "fillStyle": "solid", - "strokeWidth": 1, - "strokeStyle": "solid", - "roughness": 0, - "opacity": 100, - "angle": 0, - "x": -4568.0345947947335, - "y": -6653.176246329492, - "strokeColor": "#1e1e1e", - "backgroundColor": "transparent", - "width": 155.75714111328205, - "height": 110, - "seed": 2056296862, - "groupIds": [ - "DfNpHw7mvwumYpxFTzcfp" - ], - "frameId": null, - "roundness": { - "type": 3 - }, - "boundElements": [ - { - "type": "text", - "id": "smR7X02aUeC9hzegUQT88" - }, - { - "id": "P2L0-K8BUaSimEQic5kwJ", - "type": "arrow" - } - ], - "updated": 1709205155388, - "link": null, - "locked": false - }, - { - "type": "text", - "version": 1458, - "versionNonce": 1830245250, - "isDeleted": false, - "id": "smR7X02aUeC9hzegUQT88", - "fillStyle": "solid", - "strokeWidth": 1, - "strokeStyle": "solid", - "roughness": 0, - "opacity": 100, - "angle": 0, - "x": -4563.0345947947335, - "y": -6648.176246329492, - "strokeColor": "#1e1e1e", - "backgroundColor": "transparent", - "width": 142.6879425048828, - "height": 100, - "seed": 650622430, - "groupIds": [ - "DfNpHw7mvwumYpxFTzcfp" - ], - "frameId": null, - "roundness": null, - "boundElements": [], - "updated": 1709205155388, - "link": null, - "locked": false, - "fontSize": 16, - "fontFamily": 1, - "text": "my-table/\n _delta_log/\n 0000.json\n \n ", - "textAlign": "left", - "verticalAlign": "top", - "containerId": "lB-Gdq5GxDC5VH1c4nBNC", - "originalText": "my-table/\n _delta_log/\n 0000.json\n \n ", - "lineHeight": 1.25, - "baseline": 94 - }, - { - "type": "text", - "version": 389, - "versionNonce": 2111907202, - "isDeleted": false, - "id": "EfkopdUAlSmTX0CpXq5Ri", - "fillStyle": "solid", - "strokeWidth": 1, - "strokeStyle": "solid", - "roughness": 0, - "opacity": 100, - "angle": 0, - "x": -4499.228028283853, - "y": -6586.732764884177, - "strokeColor": "#f08c00", - "backgroundColor": "transparent", - "width": 72.01594543457031, - "height": 20, - "seed": 777079326, - "groupIds": [ - "DfNpHw7mvwumYpxFTzcfp" - ], - "frameId": null, - "roundness": null, - "boundElements": [], - "updated": 1709205173242, - "link": null, - "locked": false, - "fontSize": 16, - "fontFamily": 1, - "text": "0001.json", - "textAlign": "left", - "verticalAlign": "top", - "containerId": null, - "originalText": "0001.json", - "lineHeight": 1.25, - "baseline": 14 - }, - { - "type": "text", - "version": 316, - "versionNonce": 463835970, - "isDeleted": false, - "id": "xe_XEuPqPeNXKNJL9Tb6p", - "fillStyle": "solid", - "strokeWidth": 1, - "strokeStyle": "solid", - "roughness": 0, - "opacity": 100, - "angle": 0, - "x": -4606.3739186559915, - "y": -6681.847925145062, - "strokeColor": "#1e1e1e", - "backgroundColor": "transparent", - "width": 127.03993225097656, - "height": 20, - "seed": 521780162, - "groupIds": [], - "frameId": null, - "roundness": null, - "boundElements": [ - { - "id": "g5hSV8QmbxT18ueyrdRKR", - "type": "arrow" - } - ], - "updated": 1709205155388, - "link": null, - "locked": false, - "fontSize": 16, - "fontFamily": 1, - "text": "insert to table ", - "textAlign": "left", - "verticalAlign": "top", - "containerId": null, - "originalText": "insert to table ", - "lineHeight": 1.25, - "baseline": 14 - }, - { - "id": "lIVdCf4mUsZuAfK280qjY", - "type": "arrow", - "x": -4445.222993601325, - "y": -6410.958974197634, - "width": 58.69398723782342, - "height": 109.95995253947967, - "angle": 0, - "strokeColor": "#1e1e1e", - "backgroundColor": "transparent", - "fillStyle": "solid", - "strokeWidth": 1, - "strokeStyle": "solid", - "roughness": 0, - "opacity": 100, - "groupIds": [], - "frameId": null, - "roundness": { - "type": 2 - }, - "seed": 1210218910, - "version": 254, - "versionNonce": 266937950, - "isDeleted": false, - "boundElements": null, - "updated": 1709205168693, - "link": null, - "locked": false, - "points": [ - [ - 0, - 0 - ], - [ - 58.69398723782342, - 109.95995253947967 - ] - ], - "lastCommittedPoint": null, - "startBinding": { - "elementId": "cYBcW8tBG39tjX_xiVwap", - "focus": -0.9617735188030769, - "gap": 21.47213773938165 - }, - "endBinding": null, - "startArrowhead": null, - "endArrowhead": "arrow" - }, - { - "type": "rectangle", - "version": 1955, - "versionNonce": 1512516290, - "isDeleted": false, - "id": "8ys_ZIn-JhNRsE00pwI-Z", - "fillStyle": "solid", - "strokeWidth": 1, - "strokeStyle": "solid", - "roughness": 0, - "opacity": 100, - "angle": 0, - "x": -4434.404223700983, - "y": -6247.072599914871, - "strokeColor": "#1e1e1e", - "backgroundColor": "transparent", - "width": 155.75714111328205, - "height": 110, - "seed": 1767858754, - "groupIds": [ - "jV9T-u8DWG2DcSQAzysjP" - ], - "frameId": null, - "roundness": { - "type": 3 - }, - "boundElements": [ - { - "type": "text", - "id": "0fiGcLhM8scDP1NqbOaWY" - }, - { - "id": "E1zwoGpModq1EKmZdw64p", - "type": "arrow" - } - ], - "updated": 1709205155388, - "link": null, - "locked": false - }, - { - "type": "text", - "version": 1409, - "versionNonce": 524769886, - "isDeleted": false, - "id": "0fiGcLhM8scDP1NqbOaWY", - "fillStyle": "solid", - "strokeWidth": 1, - "strokeStyle": "solid", - "roughness": 0, - "opacity": 100, - "angle": 0, - "x": -4429.404223700983, - "y": -6242.072599914871, - "strokeColor": "#1e1e1e", - "backgroundColor": "transparent", - "width": 142.6879425048828, - "height": 100, - "seed": 1501415938, - "groupIds": [ - "jV9T-u8DWG2DcSQAzysjP" - ], - "frameId": null, - "roundness": null, - "boundElements": [], - "updated": 1709205155388, - "link": null, - "locked": false, - "fontSize": 16, - "fontFamily": 1, - "text": "my-table/\n _delta_log/\n 0000.json\n \n ", - "textAlign": "left", - "verticalAlign": "top", - "containerId": "8ys_ZIn-JhNRsE00pwI-Z", - "originalText": "my-table/\n _delta_log/\n 0000.json\n \n ", - "lineHeight": 1.25, - "baseline": 94 - }, - { - "type": "text", - "version": 341, - "versionNonce": 998855810, - "isDeleted": false, - "id": "IR47HAyj6b4oE7R88Urdv", - "fillStyle": "solid", - "strokeWidth": 1, - "strokeStyle": "solid", - "roughness": 0, - "opacity": 100, - "angle": 0, - "x": -4365.597657190102, - "y": -6180.629118469558, - "strokeColor": "#1971c2", - "backgroundColor": "transparent", - "width": 72.01594543457031, - "height": 20, - "seed": 1358510530, - "groupIds": [ - "jV9T-u8DWG2DcSQAzysjP" - ], - "frameId": null, - "roundness": null, - "boundElements": [], - "updated": 1709205181462, - "link": null, - "locked": false, - "fontSize": 16, - "fontFamily": 1, - "text": "0001.json", - "textAlign": "left", - "verticalAlign": "top", - "containerId": null, - "originalText": "0001.json", - "lineHeight": 1.25, - "baseline": 14 - }, - { - "id": "P2L0-K8BUaSimEQic5kwJ", - "type": "arrow", - "x": -4400.307428477639, - "y": -6667.746697748289, - "width": 25.39454745223884, - "height": 363.68677134764766, - "angle": 0, - "strokeColor": "#1e1e1e", - "backgroundColor": "transparent", - "fillStyle": "solid", - "strokeWidth": 1, - "strokeStyle": "solid", - "roughness": 0, - "opacity": 100, - "groupIds": [], - "frameId": null, - "roundness": { - "type": 2 - }, - "seed": 2142313346, - "version": 549, - "versionNonce": 812146334, - "isDeleted": false, - "boundElements": null, - "updated": 1709205155388, - "link": null, - "locked": false, - "points": [ - [ - 0, - 0 - ], - [ - 25.39454745223884, - 363.68677134764766 - ] - ], - "lastCommittedPoint": null, - "startBinding": { - "elementId": "lB-Gdq5GxDC5VH1c4nBNC", - "focus": -1.1589277588857154, - "gap": 14.570451418797347 - }, - "endBinding": null, - "startArrowhead": null, - "endArrowhead": "arrow" - }, - { - "id": "g5hSV8QmbxT18ueyrdRKR", - "type": "arrow", - "x": -4682.27231477492, - "y": -6697.185912933561, - "width": 250.17607011271957, - "height": 0.1822173504415332, - "angle": 0, - "strokeColor": "#1e1e1e", - "backgroundColor": "transparent", - "fillStyle": "solid", - "strokeWidth": 1, - "strokeStyle": "solid", - "roughness": 0, - "opacity": 100, - "groupIds": [], - "frameId": null, - "roundness": { - "type": 2 - }, - "seed": 2021419614, - "version": 262, - "versionNonce": 801694274, - "isDeleted": false, - "boundElements": null, - "updated": 1709205155388, - "link": null, - "locked": false, - "points": [ - [ - 0, - 0 - ], - [ - 250.17607011271957, - 0.1822173504415332 - ] - ], - "lastCommittedPoint": null, - "startBinding": { - "elementId": "frI8ILH80by_7U7jKorJe", - "focus": -0.13173142231615237, - "gap": 3.921448066547107 - }, - "endBinding": { - "elementId": "TE6v9B5AAJjR5aIgpNtWi", - "focus": 0.19555038025903468, - "gap": 1 - }, - "startArrowhead": null, - "endArrowhead": "arrow" - }, - { - "id": "0WDIjOlhzkviW-BNds7jh", - "type": "text", - "x": -4361.965106269344, - "y": -6498.627732099581, - "width": 239.95187377929688, - "height": 20, - "angle": 0, - "strokeColor": "#e03131", - "backgroundColor": "transparent", - "fillStyle": "solid", - "strokeWidth": 1, - "strokeStyle": "solid", - "roughness": 0, - "opacity": 100, - "groupIds": [], - "frameId": null, - "roundness": null, - "seed": 689578946, - "version": 135, - "versionNonce": 488956290, - "isDeleted": false, - "boundElements": null, - "updated": 1709205217523, - "link": null, - "locked": false, - "text": "Merge fails due to a conflict ", - "fontSize": 16, - "fontFamily": 1, - "textAlign": "left", - "verticalAlign": "top", - "baseline": 14, - "containerId": null, - "originalText": "Merge fails due to a conflict ", - "lineHeight": 1.25 - }, - { - "id": "-menBhvfH3-WXyHUd8UCx", - "type": "line", - "x": -4375.773525633182, - "y": -6485.371201337862, - "width": 13.118373325894026, - "height": 17.951572963169383, - "angle": 0, - "strokeColor": "#e03131", - "backgroundColor": "transparent", - "fillStyle": "solid", - "strokeWidth": 4, - "strokeStyle": "solid", - "roughness": 0, - "opacity": 100, - "groupIds": [ - "wn2Ivq1enxBAhYeZ8Q1f1" - ], - "frameId": null, - "roundness": { - "type": 2 - }, - "seed": 1643381122, - "version": 248, - "versionNonce": 1253822238, - "isDeleted": false, - "boundElements": null, - "updated": 1709205155388, - "link": null, - "locked": false, - "points": [ - [ - 0, - 0 - ], - [ - -13.118373325894026, - 17.951572963169383 - ] - ], - "lastCommittedPoint": null, - "startBinding": null, - "endBinding": null, - "startArrowhead": null, - "endArrowhead": null - }, - { - "type": "line", - "version": 458, - "versionNonce": 721598914, - "isDeleted": false, - "id": "LuJH7OPVOwzMNk9-G1ltP", - "fillStyle": "solid", - "strokeWidth": 4, - "strokeStyle": "solid", - "roughness": 0, - "opacity": 100, - "angle": 0, - "x": -4389.484288747022, - "y": -6484.614626979603, - "strokeColor": "#e03131", - "backgroundColor": "transparent", - "width": 14.59167480468659, - "height": 15.397382463726899, - "seed": 756159554, - "groupIds": [ - "wn2Ivq1enxBAhYeZ8Q1f1" - ], - "frameId": null, - "roundness": { - "type": 2 - }, - "boundElements": [], - "updated": 1709205155388, - "link": null, - "locked": false, - "startBinding": null, - "endBinding": null, - "lastCommittedPoint": null, - "startArrowhead": null, - "endArrowhead": null, - "points": [ - [ - 0, - 0 - ], - [ - 14.59167480468659, - 15.397382463726899 - ] - ] - }, - { - "id": "17huQdfU8roWs28YiJOFQ", - "type": "arrow", - "x": -4811.59438537688, - "y": -6279.120094837566, - "width": 406.57657464437034, - "height": 1.9340786202155869, - "angle": 0, - "strokeColor": "#1e1e1e", - "backgroundColor": "transparent", - "fillStyle": "solid", - "strokeWidth": 1, - "strokeStyle": "solid", - "roughness": 0, - "opacity": 100, - "groupIds": [], - "frameId": null, - "roundness": { - "type": 2 - }, - "seed": 1238573762, - "version": 418, - "versionNonce": 915169410, - "isDeleted": false, - "boundElements": null, - "updated": 1709205155388, - "link": null, - "locked": false, - "points": [ - [ - 0, - 0 - ], - [ - 406.57657464437034, - 1.9340786202155869 - ] - ], - "lastCommittedPoint": null, - "startBinding": { - "elementId": "I8RGguEZIqgQ2iYCMY84G", - "focus": 0.0761171461910146, - "gap": 1.8824790651980692 - }, - "endBinding": { - "elementId": "_pxFluJ_cp9w75XmiVlw-", - "focus": -0.06367547286089222, - "gap": 1.8162509856176428 - }, - "startArrowhead": null, - "endArrowhead": "arrow" - }, - { - "type": "arrow", - "version": 1392, - "versionNonce": 256467102, - "isDeleted": false, - "id": "O9RyGZ8uliaqanJxFXT6M", - "fillStyle": "solid", - "strokeWidth": 1, - "strokeStyle": "solid", - "roughness": 0, - "opacity": 100, - "angle": 0, - "x": -4364.8497363480365, - "y": -6302.3465232926, - "strokeColor": "#1e1e1e", - "backgroundColor": "transparent", - "width": 169.7135555023724, - "height": 360.97302809826124, - "seed": 1255772546, - "groupIds": [], - "frameId": null, - "roundness": { - "type": 2 - }, - "boundElements": [], - "updated": 1709205155388, - "link": null, - "locked": false, - "startBinding": null, - "endBinding": { - "elementId": "C6VNWiQh3UeB3CE82gqOe", - "focus": 0.08140434080565791, - "gap": 3.4684718011418063 - }, - "lastCommittedPoint": null, - "startArrowhead": null, - "endArrowhead": "arrow", - "points": [ - [ - 0, - 0 - ], - [ - 169.7135555023724, - -360.97302809826124 - ] - ] - }, - { - "type": "ellipse", - "version": 1278, - "versionNonce": 1827733570, - "isDeleted": false, - "id": "C6VNWiQh3UeB3CE82gqOe", - "fillStyle": "solid", - "strokeWidth": 1, - "strokeStyle": "solid", - "roughness": 0, - "opacity": 100, - "angle": 0, - "x": -4207.18357413668, - "y": -6711.496794865507, - "strokeColor": "#1e1e1e", - "backgroundColor": "transparent", - "width": 51.445748465402175, - "height": 47.903921944754984, - "seed": 547549250, - "groupIds": [], - "frameId": null, - "roundness": { - "type": 2 - }, - "boundElements": [ - { - "id": "O9RyGZ8uliaqanJxFXT6M", - "type": "arrow" - }, - { - "id": "JlePwwVpmoikeh89UpvPo", - "type": "arrow" - } - ], - "updated": 1709205155388, - "link": null, - "locked": false - }, - { - "id": "cgeJO65hweUreVPeaKagB", - "type": "rectangle", - "x": -5027.41525956551, - "y": -6764.610223357403, - "width": 1237.3977057488414, - "height": 225.9534647176562, - "angle": 0, - "strokeColor": "#f08c00", - "backgroundColor": "transparent", - "fillStyle": "solid", - "strokeWidth": 1, - "strokeStyle": "dotted", - "roughness": 0, - "opacity": 100, - "groupIds": [], - "frameId": null, - "roundness": null, - "seed": 1737730526, - "version": 393, - "versionNonce": 46420254, - "isDeleted": false, - "boundElements": [ - { - "id": "-y7UzxgOlXVLOiBsmLUry", - "type": "arrow" - } - ], - "updated": 1709205155389, - "link": null, - "locked": false - }, - { - "id": "oTJTZ68UunsDfa6Bz65__", - "type": "rectangle", - "x": -5025.735397679348, - "y": -6531.796187417758, - "width": 625.2706473214296, - "height": 194.04575892857156, - "angle": 0, - "strokeColor": "#1971c2", - "backgroundColor": "transparent", - "fillStyle": "solid", - "strokeWidth": 1, - "strokeStyle": "dotted", - "roughness": 0, - "opacity": 100, - "groupIds": [], - "frameId": null, - "roundness": null, - "seed": 2098033822, - "version": 624, - "versionNonce": 926635970, - "isDeleted": false, - "boundElements": [ - { - "id": "xW0DXOgS5gQ44Umiwfsvn", - "type": "arrow" - }, - { - "id": "HVrlrSxgKJ_WzZvmX9Y5N", - "type": "arrow" - }, - { - "id": "-y7UzxgOlXVLOiBsmLUry", - "type": "arrow" - } - ], - "updated": 1709205155389, - "link": null, - "locked": false - }, - { - "type": "ellipse", - "version": 1651, - "versionNonce": 1855487326, - "isDeleted": false, - "id": "zEGtaUtEdZYSrf4dbL4tF", - "fillStyle": "solid", - "strokeWidth": 1, - "strokeStyle": "solid", - "roughness": 0, - "opacity": 100, - "angle": 0, - "x": -3911.67220050099, - "y": -6714.8132823367705, - "strokeColor": "#1e1e1e", - "backgroundColor": "transparent", - "width": 51.445748465402175, - "height": 49, - "seed": 1726980894, - "groupIds": [], - "frameId": null, - "roundness": { - "type": 2 - }, - "boundElements": [ - { - "id": "JlePwwVpmoikeh89UpvPo", - "type": "arrow" - } - ], - "updated": 1709205155389, - "link": null, - "locked": false - }, - { - "type": "text", - "version": 522, - "versionNonce": 1604133278, - "isDeleted": false, - "id": "FN4kZnnuFWH3WVLoVME3W", - "fillStyle": "solid", - "strokeWidth": 1, - "strokeStyle": "solid", - "roughness": 0, - "opacity": 100, - "angle": 0, - "x": -4153.782156075877, - "y": -6675.249365694784, - "strokeColor": "#1e1e1e", - "backgroundColor": "transparent", - "width": 199.99989318847656, - "height": 20, - "seed": 361336670, - "groupIds": [], - "frameId": null, - "roundness": null, - "boundElements": [ - { - "id": "JlePwwVpmoikeh89UpvPo", - "type": "arrow" - } - ], - "updated": 1709205155389, - "link": null, - "locked": false, - "fontSize": 16, - "fontFamily": 1, - "text": "retry to insert to table ", - "textAlign": "left", - "verticalAlign": "top", - "containerId": null, - "originalText": "retry to insert to table ", - "lineHeight": 1.25, - "baseline": 14 - }, - { - "id": "JlePwwVpmoikeh89UpvPo", - "type": "arrow", - "x": -4155.099731157279, - "y": -6692.036355564607, - "width": 241.66386188623483, - "height": 0.5398655690451051, - "angle": 0, - "strokeColor": "#1e1e1e", - "backgroundColor": "transparent", - "fillStyle": "solid", - "strokeWidth": 1, - "strokeStyle": "solid", - "roughness": 0, - "opacity": 100, - "groupIds": [], - "frameId": null, - "roundness": null, - "seed": 2050260382, - "version": 654, - "versionNonce": 1224949214, - "isDeleted": false, - "boundElements": null, - "updated": 1709205155389, - "link": null, - "locked": false, - "points": [ - [ - 0, - 0 - ], - [ - 241.66386188623483, - 0.5398655690451051 - ] - ], - "lastCommittedPoint": null, - "startBinding": { - "elementId": "C6VNWiQh3UeB3CE82gqOe", - "focus": -0.18998017452960755, - "gap": 1.0731331833146314 - }, - "endBinding": { - "elementId": "zEGtaUtEdZYSrf4dbL4tF", - "focus": 0.045787793630051817, - "gap": 1.7915412032686433 - }, - "startArrowhead": null, - "endArrowhead": "arrow" - }, - { - "type": "rectangle", - "version": 2689, - "versionNonce": 1326964318, - "isDeleted": false, - "id": "kZ7xyav-wF0SzTg-W48oA", - "fillStyle": "solid", - "strokeWidth": 1, - "strokeStyle": "solid", - "roughness": 0, - "opacity": 100, - "angle": 0, - "x": -4041.8004695398613, - "y": -6645.344150989828, - "strokeColor": "#1e1e1e", - "backgroundColor": "transparent", - "width": 155.75714111328205, - "height": 110, - "seed": 958905538, - "groupIds": [ - "PZA8FLKHsg03dyKPiMiXY", - "bDtIabYEhbJPretPnaQb7" - ], - "frameId": null, - "roundness": { - "type": 3 - }, - "boundElements": [ - { - "type": "text", - "id": "ceiYP_Er-lS11gbNqCEq5" - }, - { - "id": "FfVjSXw-kI_ckJ0J0_3fj", - "type": "arrow" - } - ], - "updated": 1709205155389, - "link": null, - "locked": false - }, - { - "type": "text", - "version": 2142, - "versionNonce": 899825282, - "isDeleted": false, - "id": "ceiYP_Er-lS11gbNqCEq5", - "fillStyle": "solid", - "strokeWidth": 1, - "strokeStyle": "solid", - "roughness": 0, - "opacity": 100, - "angle": 0, - "x": -4036.8004695398613, - "y": -6640.344150989828, - "strokeColor": "#1e1e1e", - "backgroundColor": "transparent", - "width": 142.6879425048828, - "height": 100, - "seed": 1951847554, - "groupIds": [ - "PZA8FLKHsg03dyKPiMiXY", - "bDtIabYEhbJPretPnaQb7" - ], - "frameId": null, - "roundness": null, - "boundElements": [], - "updated": 1709205155389, - "link": null, - "locked": false, - "fontSize": 16, - "fontFamily": 1, - "text": "my-table/\n _delta_log/\n 0000.json\n \n ", - "textAlign": "left", - "verticalAlign": "top", - "containerId": "kZ7xyav-wF0SzTg-W48oA", - "originalText": "my-table/\n _delta_log/\n 0000.json\n \n ", - "lineHeight": 1.25, - "baseline": 94 - }, - { - "type": "text", - "version": 1061, - "versionNonce": 1554098782, - "isDeleted": false, - "id": "B1XAVEOiOsHSxYhKiQgY3", - "fillStyle": "solid", - "strokeWidth": 1, - "strokeStyle": "solid", - "roughness": 0, - "opacity": 100, - "angle": 0, - "x": -3973.4624993511748, - "y": -6581.080343965555, - "strokeColor": "#1971c2", - "backgroundColor": "transparent", - "width": 72.01594543457031, - "height": 20, - "seed": 883118750, - "groupIds": [ - "SDTkfJK_c9rlszHZCIj2k", - "bDtIabYEhbJPretPnaQb7" - ], - "frameId": null, - "roundness": null, - "boundElements": [], - "updated": 1709205195630, - "link": null, - "locked": false, - "fontSize": 16, - "fontFamily": 1, - "text": "0001.json", - "textAlign": "left", - "verticalAlign": "top", - "containerId": null, - "originalText": "0001.json", - "lineHeight": 1.25, - "baseline": 14 - }, - { - "type": "text", - "version": 1143, - "versionNonce": 668151042, - "isDeleted": false, - "id": "eNHxsBS_MtiO9Hv3irz1l", - "fillStyle": "solid", - "strokeWidth": 1, - "strokeStyle": "solid", - "roughness": 0, - "opacity": 100, - "angle": 0, - "x": -3974.434004652515, - "y": -6558.378230405287, - "strokeColor": "#f08c00", - "backgroundColor": "transparent", - "width": 79.07194519042969, - "height": 20, - "seed": 1012704350, - "groupIds": [ - "mCoQNulPCYMTRLSxBRgeh", - "bDtIabYEhbJPretPnaQb7" - ], - "frameId": null, - "roundness": null, - "boundElements": [], - "updated": 1709205176595, - "link": null, - "locked": false, - "fontSize": 16, - "fontFamily": 1, - "text": "0002.json", - "textAlign": "left", - "verticalAlign": "top", - "containerId": null, - "originalText": "0002.json", - "lineHeight": 1.25, - "baseline": 14 - }, - { - "id": "FfVjSXw-kI_ckJ0J0_3fj", - "type": "arrow", - "x": -3867.157059887273, - "y": -6608.165817588203, - "width": 72.44893829240482, - "height": 307.13824837993525, - "angle": 0, - "strokeColor": "#1e1e1e", - "backgroundColor": "transparent", - "fillStyle": "solid", - "strokeWidth": 1, - "strokeStyle": "solid", - "roughness": 0, - "opacity": 100, - "groupIds": [], - "frameId": null, - "roundness": null, - "seed": 1220073950, - "version": 847, - "versionNonce": 1205755614, - "isDeleted": false, - "boundElements": null, - "updated": 1709205155389, - "link": null, - "locked": false, - "points": [ - [ - 0, - 0 - ], - [ - 72.44893829240482, - 307.13824837993525 - ] - ], - "lastCommittedPoint": null, - "startBinding": { - "elementId": "kZ7xyav-wF0SzTg-W48oA", - "focus": -1.1112951929089885, - "gap": 18.886268539306002 - }, - "endBinding": null, - "startArrowhead": null, - "endArrowhead": "arrow" - }, - { - "type": "ellipse", - "version": 1141, - "versionNonce": 1927415298, - "isDeleted": false, - "id": "sza_MQkoDVdKg6y1DOeBx", - "fillStyle": "solid", - "strokeWidth": 1, - "strokeStyle": "solid", - "roughness": 0, - "opacity": 100, - "angle": 0, - "x": -3816.5167483317946, - "y": -6299.659237606094, - "strokeColor": "#1e1e1e", - "backgroundColor": "transparent", - "width": 51.445748465402175, - "height": 47.903921944754984, - "seed": 743475266, - "groupIds": [], - "frameId": null, - "roundness": { - "type": 2 - }, - "boundElements": [ - { - "id": "E1zwoGpModq1EKmZdw64p", - "type": "arrow" - }, - { - "id": "FfVjSXw-kI_ckJ0J0_3fj", - "type": "arrow" - } - ], - "updated": 1709205155389, - "link": null, - "locked": false - }, - { - "type": "arrow", - "version": 780, - "versionNonce": 322253698, - "isDeleted": false, - "id": "E1zwoGpModq1EKmZdw64p", - "fillStyle": "solid", - "strokeWidth": 1, - "strokeStyle": "solid", - "roughness": 0, - "opacity": 100, - "angle": 0, - "x": -4349.5204543130585, - "y": -6275.421048283134, - "strokeColor": "#1e1e1e", - "backgroundColor": "transparent", - "width": 531.3035993004432, - "height": 1.377464118514581, - "seed": 978902978, - "groupIds": [], - "frameId": null, - "roundness": { - "type": 2 - }, - "boundElements": [], - "updated": 1709205160760, - "link": null, - "locked": false, - "startBinding": { - "elementId": "_pxFluJ_cp9w75XmiVlw-", - "focus": 0.12887160237939754, - "gap": 2.477823519563046 - }, - "endBinding": { - "elementId": "sza_MQkoDVdKg6y1DOeBx", - "focus": -0.07242759362461478, - "gap": 1.7576857359728635 - }, - "lastCommittedPoint": null, - "startArrowhead": null, - "endArrowhead": "arrow", - "points": [ - [ - 0, - 0 - ], - [ - 531.3035993004432, - 1.377464118514581 - ] - ] - }, - { - "type": "rectangle", - "version": 2707, - "versionNonce": 1441096386, - "isDeleted": false, - "id": "KPYxoOFrlBo2Sb0dZg9gc", - "fillStyle": "solid", - "strokeWidth": 1, - "strokeStyle": "solid", - "roughness": 0, - "opacity": 100, - "angle": 0, - "x": -3828.179226003347, - "y": -6244.524053118949, - "strokeColor": "#1e1e1e", - "backgroundColor": "transparent", - "width": 155.75714111328205, - "height": 110, - "seed": 301284034, - "groupIds": [ - "vBqsrhAPC4z2QC277Au0l", - "GNeveevTDFVnckBqN-YoW" - ], - "frameId": null, - "roundness": { - "type": 3 - }, - "boundElements": [ - { - "type": "text", - "id": "bXVBM1yeZdSlPFNIlLkyd" - } - ], - "updated": 1709205163717, - "link": null, - "locked": false - }, - { - "type": "text", - "version": 2160, - "versionNonce": 913291906, - "isDeleted": false, - "id": "bXVBM1yeZdSlPFNIlLkyd", - "fillStyle": "solid", - "strokeWidth": 1, - "strokeStyle": "solid", - "roughness": 0, - "opacity": 100, - "angle": 0, - "x": -3823.179226003347, - "y": -6239.524053118949, - "strokeColor": "#1e1e1e", - "backgroundColor": "transparent", - "width": 142.6879425048828, - "height": 100, - "seed": 314872450, - "groupIds": [ - "vBqsrhAPC4z2QC277Au0l", - "GNeveevTDFVnckBqN-YoW" - ], - "frameId": null, - "roundness": null, - "boundElements": [], - "updated": 1709205163717, - "link": null, - "locked": false, - "fontSize": 16, - "fontFamily": 1, - "text": "my-table/\n _delta_log/\n 0000.json\n \n ", - "textAlign": "left", - "verticalAlign": "top", - "containerId": "KPYxoOFrlBo2Sb0dZg9gc", - "originalText": "my-table/\n _delta_log/\n 0000.json\n \n ", - "lineHeight": 1.25, - "baseline": 94 - }, - { - "type": "text", - "version": 1079, - "versionNonce": 361983390, - "isDeleted": false, - "id": "8Xl61AApZV1BJq0TXaS4E", - "fillStyle": "solid", - "strokeWidth": 1, - "strokeStyle": "solid", - "roughness": 0, - "opacity": 100, - "angle": 0, - "x": -3759.841255814661, - "y": -6180.260246094677, - "strokeColor": "#1971c2", - "backgroundColor": "transparent", - "width": 72.01594543457031, - "height": 20, - "seed": 928182850, - "groupIds": [ - "j4jsjTrEjPq8dqu3lb09a", - "GNeveevTDFVnckBqN-YoW" - ], - "frameId": null, - "roundness": null, - "boundElements": [], - "updated": 1709205188428, - "link": null, - "locked": false, - "fontSize": 16, - "fontFamily": 1, - "text": "0001.json", - "textAlign": "left", - "verticalAlign": "top", - "containerId": null, - "originalText": "0001.json", - "lineHeight": 1.25, - "baseline": 14 - }, - { - "type": "text", - "version": 1162, - "versionNonce": 1853594626, - "isDeleted": false, - "id": "YjDxh1oKbYOKmIFMj8yFT", - "fillStyle": "solid", - "strokeWidth": 1, - "strokeStyle": "solid", - "roughness": 0, - "opacity": 100, - "angle": 0, - "x": -3760.8127611160016, - "y": -6157.558132534407, - "strokeColor": "#f08c00", - "backgroundColor": "transparent", - "width": 79.07194519042969, - "height": 20, - "seed": 1115642370, - "groupIds": [ - "3R4ogctVE-taTP--Wuu9s", - "GNeveevTDFVnckBqN-YoW" - ], - "frameId": null, - "roundness": null, - "boundElements": [], - "updated": 1709205184894, - "link": null, - "locked": false, - "fontSize": 16, - "fontFamily": 1, - "text": "0002.json", - "textAlign": "left", - "verticalAlign": "top", - "containerId": null, - "originalText": "0002.json", - "lineHeight": 1.25, - "baseline": 14 - }, - { - "id": "Dk12h2yd6vKwNh6HJeHKp", - "type": "text", - "x": -3769.3598018666926, - "y": -6324.110945718538, - "width": 129.79193115234375, - "height": 20, - "angle": 0, - "strokeColor": "#2f9e44", - "backgroundColor": "transparent", - "fillStyle": "solid", - "strokeWidth": 1, - "strokeStyle": "solid", - "roughness": 0, - "opacity": 100, - "groupIds": [], - "frameId": null, - "roundness": null, - "seed": 1764308574, - "version": 139, - "versionNonce": 1410598082, - "isDeleted": false, - "boundElements": null, - "updated": 1709205155389, - "link": null, - "locked": false, - "text": "Merge succeeds ", - "fontSize": 16, - "fontFamily": 1, - "textAlign": "left", - "verticalAlign": "top", - "baseline": 14, - "containerId": null, - "originalText": "Merge succeeds ", - "lineHeight": 1.25 - }, - { - "type": "arrow", - "version": 792, - "versionNonce": 715989086, - "isDeleted": false, - "id": "HVrlrSxgKJ_WzZvmX9Y5N", - "fillStyle": "solid", - "strokeWidth": 1, - "strokeStyle": "solid", - "roughness": 0, - "opacity": 100, - "angle": 0, - "x": -4824.464998791562, - "y": -6302.695820250774, - "strokeColor": "#1e1e1e", - "backgroundColor": "transparent", - "width": 84.15189668284711, - "height": 173.40085586770238, - "seed": 1437605470, - "groupIds": [], - "frameId": null, - "roundness": null, - "boundElements": [], - "updated": 1709205155389, - "link": null, - "locked": false, - "startBinding": { - "elementId": "I8RGguEZIqgQ2iYCMY84G", - "focus": 0.14746664035579127, - "gap": 1.6478971627609553 - }, - "endBinding": { - "elementId": "EeXqsSo4ns-ZCoBVD0LCL", - "focus": -2.103379796210999, - "gap": 13.268274302467944 - }, - "lastCommittedPoint": null, - "startArrowhead": null, - "endArrowhead": "arrow", - "points": [ - [ - 0, - 0 - ], - [ - 84.15189668284711, - -173.40085586770238 - ] - ] - }, - { - "id": "-y7UzxgOlXVLOiBsmLUry", - "type": "arrow", - "x": -4837.840230596915, - "y": -6305.734970536609, - "width": 108.28679638350604, - "height": 365.9516799068024, - "angle": 0, - "strokeColor": "#1e1e1e", - "backgroundColor": "transparent", - "fillStyle": "solid", - "strokeWidth": 1, - "strokeStyle": "solid", - "roughness": 0, - "opacity": 100, - "groupIds": [], - "frameId": null, - "roundness": null, - "seed": 844996510, - "version": 2280, - "versionNonce": 2054823042, - "isDeleted": false, - "boundElements": null, - "updated": 1709205155389, - "link": null, - "locked": false, - "points": [ - [ - 0, - 0 - ], - [ - 108.28679638350604, - -365.9516799068024 - ] - ], - "lastCommittedPoint": null, - "startBinding": { - "elementId": "I8RGguEZIqgQ2iYCMY84G", - "focus": -0.22550627866706457, - "gap": 1 - }, - "endBinding": { - "elementId": "NHmazCsKZ8W6WlErUNsKj", - "focus": -2.0766335163406278, - "gap": 15.659499250293266 - }, - "startArrowhead": null, - "endArrowhead": "arrow" - }, - { - "id": "Vp4_YREtsDSxxEhj5zmIt", - "type": "arrow", - "x": -4697.360512743435, - "y": -6503.40324807305, - "width": 177.86420549665127, - "height": 1.169651576450633, - "angle": 0, - "strokeColor": "#1e1e1e", - "backgroundColor": "transparent", - "fillStyle": "solid", - "strokeWidth": 1, - "strokeStyle": "solid", - "roughness": 0, - "opacity": 100, - "groupIds": [], - "frameId": null, - "roundness": null, - "seed": 1293681794, - "version": 72, - "versionNonce": 388326558, - "isDeleted": false, - "boundElements": null, - "updated": 1709205155389, - "link": null, - "locked": false, - "points": [ - [ - 0, - 0 - ], - [ - 177.86420549665127, - 1.169651576450633 - ] - ], - "lastCommittedPoint": null, - "startBinding": { - "elementId": "Laf-YTcaNfUCqrV36HKSG", - "focus": -0.14874123401723216, - "gap": 1.1813995419279344 - }, - "endBinding": null, - "startArrowhead": null, - "endArrowhead": "arrow" - }, - { - "type": "text", - "version": 840, - "versionNonce": 1674001474, - "isDeleted": false, - "id": "NHmazCsKZ8W6WlErUNsKj", - "fillStyle": "solid", - "strokeWidth": 1, - "strokeStyle": "solid", - "roughness": 0, - "opacity": 100, - "angle": 0, - "x": -4769.612912101397, - "y": -6701.612827762002, - "strokeColor": "#1e1e1e", - "backgroundColor": "transparent", - "width": 24.399978637695312, - "height": 25, - "seed": 1929146818, - "groupIds": [], - "frameId": null, - "roundness": null, - "boundElements": [ - { - "id": "-y7UzxgOlXVLOiBsmLUry", - "type": "arrow" - } - ], - "updated": 1709205155389, - "link": null, - "locked": false, - "fontSize": 20, - "fontFamily": 1, - "text": "b2", - "textAlign": "left", - "verticalAlign": "top", - "containerId": null, - "originalText": "b2", - "lineHeight": 1.25, - "baseline": 17 - }, - { - "type": "text", - "version": 846, - "versionNonce": 210444510, - "isDeleted": false, - "id": "muXYWomAHA9tM6b8PBL2N", - "fillStyle": "solid", - "strokeWidth": 1, - "strokeStyle": "solid", - "roughness": 0, - "opacity": 100, - "angle": 0, - "x": -4240.239686145225, - "y": -6700.096333849421, - "strokeColor": "#1e1e1e", - "backgroundColor": "transparent", - "width": 23.779983520507812, - "height": 25, - "seed": 512954050, - "groupIds": [], - "frameId": null, - "roundness": null, - "boundElements": [], - "updated": 1709205155389, - "link": null, - "locked": false, - "fontSize": 20, - "fontFamily": 1, - "text": "b3", - "textAlign": "left", - "verticalAlign": "top", - "containerId": null, - "originalText": "b3", - "lineHeight": 1.25, - "baseline": 17 - }, - { - "id": "PAyd1QjwPqTb57jaQ9LsN", - "type": "text", - "x": -5056.295138910642, - "y": -6860.213749767095, - "width": 338.995849609375, - "height": 35, - "angle": 0, - "strokeColor": "#1e1e1e", - "backgroundColor": "transparent", - "fillStyle": "solid", - "strokeWidth": 1, - "strokeStyle": "solid", - "roughness": 0, - "opacity": 100, - "groupIds": [], - "frameId": null, - "roundness": null, - "seed": 1829891934, - "version": 139, - "versionNonce": 1647610498, - "isDeleted": false, - "boundElements": null, - "updated": 1709205317845, - "link": null, - "locked": false, - "text": "Multi-writers Workaround", - "fontSize": 28, - "fontFamily": 1, - "textAlign": "left", - "verticalAlign": "top", - "baseline": 24, - "containerId": null, - "originalText": "Multi-writers Workaround", - "lineHeight": 1.25 - } - ], - "appState": { - "gridSize": null, - "viewBackgroundColor": "#ffffff" - }, - "files": {} -} \ No newline at end of file diff --git a/docs/src/assets/img/delta-record-addition.png b/docs/src/assets/img/delta-record-addition.png deleted file mode 100644 index 8ce14a97d96..00000000000 Binary files a/docs/src/assets/img/delta-record-addition.png and /dev/null differ diff --git a/docs/src/assets/img/delta-schema-change.png b/docs/src/assets/img/delta-schema-change.png deleted file mode 100644 index a56c19dde1e..00000000000 Binary files a/docs/src/assets/img/delta-schema-change.png and /dev/null differ diff --git a/docs/src/assets/img/deploy/deploy-lakefs.excalidraw.png b/docs/src/assets/img/deploy/deploy-lakefs.excalidraw.png deleted file mode 100644 index 8dff1ec999e..00000000000 Binary files a/docs/src/assets/img/deploy/deploy-lakefs.excalidraw.png and /dev/null differ diff --git a/docs/src/assets/img/deploy/deploy-on-aws.excalidraw.png b/docs/src/assets/img/deploy/deploy-on-aws.excalidraw.png deleted file mode 100644 index 242a8b82554..00000000000 Binary files a/docs/src/assets/img/deploy/deploy-on-aws.excalidraw.png and /dev/null differ diff --git a/docs/src/assets/img/deploy/deploy-on-azure.excalidraw.png b/docs/src/assets/img/deploy/deploy-on-azure.excalidraw.png deleted file mode 100644 index dde393808ab..00000000000 Binary files a/docs/src/assets/img/deploy/deploy-on-azure.excalidraw.png and /dev/null differ diff --git a/docs/src/assets/img/deploy/deploy-on-gcp.excalidraw.png b/docs/src/assets/img/deploy/deploy-on-gcp.excalidraw.png deleted file mode 100644 index a0ccbfdc5ce..00000000000 Binary files a/docs/src/assets/img/deploy/deploy-on-gcp.excalidraw.png and /dev/null differ diff --git a/docs/src/assets/img/docs_logo.jpg b/docs/src/assets/img/docs_logo.jpg deleted file mode 100644 index 45d7defcbe1..00000000000 Binary files a/docs/src/assets/img/docs_logo.jpg and /dev/null differ diff --git a/docs/src/assets/img/docs_logo.png b/docs/src/assets/img/docs_logo.png deleted file mode 100644 index 000395641af..00000000000 Binary files a/docs/src/assets/img/docs_logo.png and /dev/null differ diff --git a/docs/src/assets/img/duckdb.png b/docs/src/assets/img/duckdb.png deleted file mode 100644 index ced7e65277a..00000000000 Binary files a/docs/src/assets/img/duckdb.png and /dev/null differ diff --git a/docs/src/assets/img/empty_repo_list.png b/docs/src/assets/img/empty_repo_list.png deleted file mode 100644 index 4d3ff21cebb..00000000000 Binary files a/docs/src/assets/img/empty_repo_list.png and /dev/null differ diff --git a/docs/src/assets/img/enterprise/enterprise-arch.excalidraw b/docs/src/assets/img/enterprise/enterprise-arch.excalidraw deleted file mode 100644 index 374e680d8b9..00000000000 --- a/docs/src/assets/img/enterprise/enterprise-arch.excalidraw +++ /dev/null @@ -1,1450 +0,0 @@ -{ - "type": "excalidraw", - "version": 2, - "source": "https://excalidraw.com", - "elements": [ - { - "type": "rectangle", - "version": 422, - "versionNonce": 1311699014, - "index": "a2", - "isDeleted": false, - "id": "7eEwcdvLsyiVJQ43QZnR5", - "fillStyle": "solid", - "strokeWidth": 4, - "strokeStyle": "solid", - "roughness": 2, - "opacity": 20, - "angle": 0, - "x": 1750.81438463707, - "y": -926.8342062515839, - "strokeColor": "#0c8599", - "backgroundColor": "#eaddd7", - "width": 332.31903204258964, - "height": 193.2722988936914, - "seed": 1416552582, - "groupIds": [], - "frameId": null, - "roundness": { - "type": 3 - }, - "boundElements": [ - { - "id": "_6gNM-DRkJaMKQsQ2SyzQ", - "type": "arrow" - }, - { - "id": "YllS82nAwrqMo9ZSXpVb1", - "type": "arrow" - }, - { - "id": "rbM2veZIDmCophmBNfmqs", - "type": "arrow" - }, - { - "id": "Z3xFKVJN3UYuyp4DXgfvn", - "type": "arrow" - } - ], - "updated": 1714308036640, - "link": null, - "locked": false - }, - { - "id": "xnrJUlSpz2SdEBfnxJDd9", - "type": "text", - "x": 1869.9344887052414, - "y": -899.8937096483263, - "width": 79.68794250488281, - "height": 35, - "angle": 0, - "strokeColor": "#0c8599", - "backgroundColor": "#eaddd7", - "fillStyle": "solid", - "strokeWidth": 4, - "strokeStyle": "solid", - "roughness": 2, - "opacity": 40, - "groupIds": [], - "frameId": null, - "index": "a4", - "roundness": null, - "seed": 1918401370, - "version": 131, - "versionNonce": 1366144518, - "isDeleted": false, - "boundElements": null, - "updated": 1714308045116, - "link": null, - "locked": false, - "text": "Fluffy", - "fontSize": 28, - "fontFamily": 1, - "textAlign": "left", - "verticalAlign": "top", - "containerId": null, - "originalText": "Fluffy", - "lineHeight": 1.25 - }, - { - "id": "Gawq1ZdBkaz4K1CvR6dpE", - "type": "rectangle", - "x": 1751.8773808679393, - "y": -1222.8666077688783, - "width": 332.31903204258964, - "height": 193.2722988936914, - "angle": 0, - "strokeColor": "#0c8599", - "backgroundColor": "#eaddd7", - "fillStyle": "solid", - "strokeWidth": 4, - "strokeStyle": "solid", - "roughness": 2, - "opacity": 20, - "groupIds": [ - "3asvjcnRT22kyHS7lR_RC" - ], - "frameId": null, - "index": "a5V", - "roundness": { - "type": 3 - }, - "seed": 768808966, - "version": 389, - "versionNonce": 910187974, - "isDeleted": false, - "boundElements": [ - { - "id": "_6gNM-DRkJaMKQsQ2SyzQ", - "type": "arrow" - }, - { - "id": "YjQgpSF3oQ4gnZyPRlRL1", - "type": "arrow" - }, - { - "id": "-iwNE2WrEhf-EWSRbcj0e", - "type": "arrow" - }, - { - "id": "UPmw7JR4shDYhAn-VLH32", - "type": "arrow" - } - ], - "updated": 1714308007790, - "link": null, - "locked": false - }, - { - "id": "0S4TIenuNuF6VNZaBg1-o", - "type": "image", - "x": 1867.9048427104228, - "y": -1146.3573032827424, - "width": 100.2641083576225, - "height": 100.2641083576225, - "angle": 0, - "strokeColor": "transparent", - "backgroundColor": "#eaddd7", - "fillStyle": "solid", - "strokeWidth": 4, - "strokeStyle": "solid", - "roughness": 2, - "opacity": 100, - "groupIds": [ - "3asvjcnRT22kyHS7lR_RC" - ], - "frameId": null, - "index": "a6", - "roundness": null, - "seed": 201664006, - "version": 342, - "versionNonce": 1617396230, - "isDeleted": false, - "boundElements": null, - "updated": 1714307213408, - "link": null, - "locked": false, - "status": "saved", - "fileId": "42f43407d586d13ccf0d29be8715d3ed1c722167", - "scale": [ - 1, - 1 - ] - }, - { - "type": "text", - "version": 413, - "versionNonce": 1565395290, - "index": "a7", - "isDeleted": false, - "id": "0SvUAuAjTuKs2AXrLTM8v", - "fillStyle": "solid", - "strokeWidth": 4, - "strokeStyle": "solid", - "roughness": 2, - "opacity": 40, - "angle": 0, - "x": 1873.992921059156, - "y": -1193.2973743219482, - "strokeColor": "#0c8599", - "backgroundColor": "#eaddd7", - "width": 88.08795166015625, - "height": 35, - "seed": 1432544582, - "groupIds": [ - "3asvjcnRT22kyHS7lR_RC" - ], - "frameId": null, - "roundness": null, - "boundElements": [], - "updated": 1714307213408, - "link": null, - "locked": false, - "fontSize": 28, - "fontFamily": 1, - "text": "lakeFS", - "textAlign": "center", - "verticalAlign": "top", - "containerId": null, - "originalText": "lakeFS", - "lineHeight": 1.25 - }, - { - "type": "rectangle", - "version": 604, - "versionNonce": 686301958, - "index": "a8", - "isDeleted": false, - "id": "VlJw3MaharsUWGsLHAxL8", - "fillStyle": "solid", - "strokeWidth": 4, - "strokeStyle": "solid", - "roughness": 2, - "opacity": 20, - "angle": 0, - "x": 1332.7380388717243, - "y": -1067.2081658138754, - "strokeColor": "#0c8599", - "backgroundColor": "#eaddd7", - "width": 200.96411345337762, - "height": 147.57084418783415, - "seed": 1812680454, - "groupIds": [ - "Q80DkbObQsva0V-UQX9pr" - ], - "frameId": null, - "roundness": { - "type": 3 - }, - "boundElements": [ - { - "id": "YjQgpSF3oQ4gnZyPRlRL1", - "type": "arrow" - }, - { - "id": "YllS82nAwrqMo9ZSXpVb1", - "type": "arrow" - }, - { - "id": "UahJQLVQwuqbMTeM6d-qo", - "type": "arrow" - } - ], - "updated": 1714307461317, - "link": null, - "locked": false - }, - { - "type": "text", - "version": 349, - "versionNonce": 176585498, - "index": "a9", - "isDeleted": false, - "id": "GeK2ok6yPGj7y77I1AXx1", - "fillStyle": "solid", - "strokeWidth": 4, - "strokeStyle": "solid", - "roughness": 2, - "opacity": 40, - "angle": 0, - "x": 1363.3101606008545, - "y": -1018.4227437199584, - "strokeColor": "#0c8599", - "backgroundColor": "#eaddd7", - "width": 139.8198699951172, - "height": 50, - "seed": 5313606, - "groupIds": [ - "Q80DkbObQsva0V-UQX9pr" - ], - "frameId": null, - "roundness": null, - "boundElements": [], - "updated": 1714307281900, - "link": null, - "locked": false, - "fontSize": 20, - "fontFamily": 1, - "text": "Reverse Proxy\n (Nginx)", - "textAlign": "center", - "verticalAlign": "top", - "containerId": null, - "originalText": "Reverse Proxy\n (Nginx)", - "lineHeight": 1.25 - }, - { - "id": "_6gNM-DRkJaMKQsQ2SyzQ", - "type": "arrow", - "x": 1913.5743935383239, - "y": -1018.2268453843149, - "width": 2.830819593245451, - "height": 93.82056632347599, - "angle": 0, - "strokeColor": "#0c8599", - "backgroundColor": "#eaddd7", - "fillStyle": "solid", - "strokeWidth": 4, - "strokeStyle": "solid", - "roughness": 2, - "opacity": 100, - "groupIds": [], - "frameId": null, - "index": "aA", - "roundness": { - "type": 2 - }, - "seed": 446823578, - "version": 102, - "versionNonce": 1619076186, - "isDeleted": false, - "boundElements": null, - "updated": 1714307404640, - "link": null, - "locked": false, - "points": [ - [ - 0, - 0 - ], - [ - -2.830819593245451, - 93.82056632347599 - ] - ], - "lastCommittedPoint": null, - "startBinding": { - "elementId": "Gawq1ZdBkaz4K1CvR6dpE", - "focus": 0.007119567756919515, - "gap": 11.367463490871955 - }, - "endBinding": { - "elementId": "7eEwcdvLsyiVJQ43QZnR5", - "focus": -0.05366155495896556, - "gap": 1 - }, - "startArrowhead": null, - "endArrowhead": "arrow" - }, - { - "id": "YjQgpSF3oQ4gnZyPRlRL1", - "type": "arrow", - "x": 1541.7823144330268, - "y": -1021.0620537493118, - "width": 203.05221193095144, - "height": 112.83609439583154, - "angle": 0, - "strokeColor": "#0c8599", - "backgroundColor": "#eaddd7", - "fillStyle": "solid", - "strokeWidth": 4, - "strokeStyle": "solid", - "roughness": 2, - "opacity": 100, - "groupIds": [], - "frameId": null, - "index": "aC", - "roundness": { - "type": 2 - }, - "seed": 1991576282, - "version": 123, - "versionNonce": 1510353626, - "isDeleted": false, - "boundElements": null, - "updated": 1714307458120, - "link": null, - "locked": false, - "points": [ - [ - 0, - 0 - ], - [ - 203.05221193095144, - -112.83609439583154 - ] - ], - "lastCommittedPoint": null, - "startBinding": { - "elementId": "VlJw3MaharsUWGsLHAxL8", - "focus": 0.25218233616941843, - "gap": 8.080162107924934 - }, - "endBinding": { - "elementId": "Gawq1ZdBkaz4K1CvR6dpE", - "focus": 0.5499057700881548, - "gap": 7.042854503961053 - }, - "startArrowhead": null, - "endArrowhead": "arrow" - }, - { - "type": "arrow", - "version": 376, - "versionNonce": 1542847366, - "index": "aD", - "isDeleted": false, - "id": "YllS82nAwrqMo9ZSXpVb1", - "fillStyle": "solid", - "strokeWidth": 4, - "strokeStyle": "solid", - "roughness": 2, - "opacity": 100, - "angle": 0, - "x": 1543.05591652687, - "y": -973.304206322248, - "strokeColor": "#0c8599", - "backgroundColor": "#eaddd7", - "width": 190.63891100780506, - "height": 141.50883654523204, - "seed": 3654918, - "groupIds": [], - "frameId": null, - "roundness": { - "type": 2 - }, - "boundElements": [], - "updated": 1714307453297, - "link": null, - "locked": false, - "startBinding": { - "elementId": "VlJw3MaharsUWGsLHAxL8", - "focus": -0.41390023099597545, - "gap": 9.353764201768172 - }, - "endBinding": { - "elementId": "7eEwcdvLsyiVJQ43QZnR5", - "focus": -0.6112006930068046, - "gap": 17.119557102394765 - }, - "lastCommittedPoint": null, - "startArrowhead": null, - "endArrowhead": "arrow", - "points": [ - [ - 0, - 0 - ], - [ - 190.63891100780506, - 141.50883654523204 - ] - ] - }, - { - "type": "arrow", - "version": 460, - "versionNonce": 1498259162, - "index": "aE", - "isDeleted": false, - "id": "UahJQLVQwuqbMTeM6d-qo", - "fillStyle": "solid", - "strokeWidth": 4, - "strokeStyle": "solid", - "roughness": 2, - "opacity": 100, - "angle": 0, - "x": 1173.214626408946, - "y": -996.584375123391, - "strokeColor": "#0c8599", - "backgroundColor": "#eaddd7", - "width": 147.33746540617403, - "height": 3.8066413573469617, - "seed": 1059135238, - "groupIds": [], - "frameId": null, - "roundness": { - "type": 2 - }, - "boundElements": [], - "updated": 1714307487588, - "link": null, - "locked": false, - "startBinding": null, - "endBinding": { - "elementId": "VlJw3MaharsUWGsLHAxL8", - "focus": 0.12934005021811398, - "gap": 12.185947056604164 - }, - "lastCommittedPoint": null, - "startArrowhead": null, - "endArrowhead": "arrow", - "points": [ - [ - 0, - 0 - ], - [ - 147.33746540617403, - -3.8066413573469617 - ] - ] - }, - { - "type": "text", - "version": 295, - "versionNonce": 683785434, - "index": "aF", - "isDeleted": false, - "id": "vGEU5fYL-QHgrV6Nnkd2A", - "fillStyle": "solid", - "strokeWidth": 4, - "strokeStyle": "solid", - "roughness": 2, - "opacity": 100, - "angle": 0, - "x": 1169.721772806785, - "y": -1043.1820831354905, - "strokeColor": "#0c8599", - "backgroundColor": "#eaddd7", - "width": 151.57986450195312, - "height": 25, - "seed": 2031666950, - "groupIds": [], - "frameId": null, - "roundness": null, - "boundElements": [], - "updated": 1714307493692, - "link": null, - "locked": false, - "fontSize": 20, - "fontFamily": 1, - "text": "lakefs.acme.com", - "textAlign": "center", - "verticalAlign": "top", - "containerId": null, - "originalText": "lakefs.acme.com", - "lineHeight": 1.25 - }, - { - "type": "text", - "version": 669, - "versionNonce": 2028106522, - "index": "aG", - "isDeleted": false, - "id": "JXoiTwHwA3Ec51XnaA8u5", - "fillStyle": "solid", - "strokeWidth": 4, - "strokeStyle": "solid", - "roughness": 2, - "opacity": 100, - "angle": 0, - "x": 1335.1256345812612, - "y": -1103.9476515209071, - "strokeColor": "#0c8599", - "backgroundColor": "#eaddd7", - "width": 200.85980224609375, - "height": 50, - "seed": 1422380634, - "groupIds": [], - "frameId": null, - "roundness": null, - "boundElements": [], - "updated": 1714307580097, - "link": null, - "locked": false, - "fontSize": 20, - "fontFamily": 1, - "text": "Prefix based routing\n", - "textAlign": "center", - "verticalAlign": "top", - "containerId": null, - "originalText": "Prefix based routing\n", - "lineHeight": 1.25 - }, - { - "id": "YU-SehvNUMNwO46FA8giW", - "type": "text", - "x": 1549.232180578229, - "y": -891.6480359875749, - "width": 120.33992004394531, - "height": 100, - "angle": 0, - "strokeColor": "#0c8599", - "backgroundColor": "#eaddd7", - "fillStyle": "solid", - "strokeWidth": 4, - "strokeStyle": "solid", - "roughness": 2, - "opacity": 100, - "groupIds": [], - "frameId": null, - "index": "aI", - "roundness": null, - "seed": 222185050, - "version": 306, - "versionNonce": 875611078, - "isDeleted": false, - "boundElements": null, - "updated": 1714545708243, - "link": null, - "locked": false, - "text": "/saml/\n/sso/\n/api/v1/oidc/\n...", - "fontSize": 20, - "fontFamily": 1, - "textAlign": "left", - "verticalAlign": "top", - "containerId": null, - "originalText": "/saml/\n/sso/\n/api/v1/oidc/\n...", - "lineHeight": 1.25 - }, - { - "type": "text", - "version": 596, - "versionNonce": 170156442, - "index": "aK", - "isDeleted": false, - "id": "oeGyuD3hWXrd6Q79vLMiN", - "fillStyle": "solid", - "strokeWidth": 4, - "strokeStyle": "solid", - "roughness": 2, - "opacity": 100, - "angle": 0, - "x": 1543.7913471875506, - "y": -1165.1730371584104, - "strokeColor": "#0c8599", - "backgroundColor": "#eaddd7", - "width": 182.09983825683594, - "height": 50, - "seed": 1650594374, - "groupIds": [], - "frameId": null, - "roundness": null, - "boundElements": [], - "updated": 1714308072523, - "link": null, - "locked": false, - "fontSize": 20, - "fontFamily": 1, - "text": "Everything except \nthe below routes", - "textAlign": "left", - "verticalAlign": "top", - "containerId": null, - "originalText": "Everything except \nthe below routes", - "lineHeight": 1.25 - }, - { - "id": "z3wb6uoVDyLZgo_dpKyBl", - "type": "rectangle", - "x": 2215.0054595130678, - "y": -1337.7986665183848, - "width": 434.5793931209073, - "height": 697.3331334702658, - "angle": 0, - "strokeColor": "#0c8599", - "backgroundColor": "transparent", - "fillStyle": "solid", - "strokeWidth": 4, - "strokeStyle": "solid", - "roughness": 2, - "opacity": 20, - "groupIds": [], - "frameId": null, - "index": "aO", - "roundness": { - "type": 3 - }, - "seed": 191414106, - "version": 265, - "versionNonce": 1579222362, - "isDeleted": false, - "boundElements": null, - "updated": 1714307698531, - "link": null, - "locked": false - }, - { - "id": "K5NClpRGylEmxB_Wm-5aT", - "type": "text", - "x": 2289.414797449179, - "y": -1309.3478654727094, - "width": 301.95184326171875, - "height": 35, - "angle": 0, - "strokeColor": "#0c8599", - "backgroundColor": "transparent", - "fillStyle": "solid", - "strokeWidth": 4, - "strokeStyle": "solid", - "roughness": 2, - "opacity": 100, - "groupIds": [], - "frameId": null, - "index": "aP", - "roundness": null, - "seed": 1400470662, - "version": 117, - "versionNonce": 620498394, - "isDeleted": false, - "boundElements": null, - "updated": 1714307719330, - "link": null, - "locked": false, - "text": "Third Party Providers", - "fontSize": 28, - "fontFamily": 1, - "textAlign": "left", - "verticalAlign": "top", - "containerId": null, - "originalText": "Third Party Providers", - "lineHeight": 1.25 - }, - { - "id": "xnAyKqeLkXYZK021tYs2A", - "type": "image", - "x": 2365.901165471365, - "y": -1238.7492776405395, - "width": 145.4325718820477, - "height": 151.3685952241721, - "angle": 0, - "strokeColor": "transparent", - "backgroundColor": "transparent", - "fillStyle": "solid", - "strokeWidth": 4, - "strokeStyle": "solid", - "roughness": 2, - "opacity": 100, - "groupIds": [], - "frameId": null, - "index": "aR", - "roundness": null, - "seed": 856504070, - "version": 306, - "versionNonce": 355214406, - "isDeleted": false, - "boundElements": [ - { - "id": "-iwNE2WrEhf-EWSRbcj0e", - "type": "arrow" - }, - { - "id": "UPmw7JR4shDYhAn-VLH32", - "type": "arrow" - } - ], - "updated": 1714308007790, - "link": null, - "locked": false, - "status": "saved", - "fileId": "01f5bbd8e4ddca1dd3d02921396d9d769ba087b4", - "scale": [ - 1, - 1 - ] - }, - { - "id": "4epq6d18H1Pi9HUPCc6dY", - "type": "image", - "x": 2368.551779999215, - "y": -841.2435079642223, - "width": 140.13134282634692, - "height": 140.13134282634692, - "angle": 0, - "strokeColor": "transparent", - "backgroundColor": "transparent", - "fillStyle": "solid", - "strokeWidth": 4, - "strokeStyle": "solid", - "roughness": 2, - "opacity": 100, - "groupIds": [], - "frameId": null, - "index": "aU", - "roundness": null, - "seed": 1103079194, - "version": 330, - "versionNonce": 1668814534, - "isDeleted": false, - "boundElements": [ - { - "id": "Z3xFKVJN3UYuyp4DXgfvn", - "type": "arrow" - } - ], - "updated": 1714308036640, - "link": null, - "locked": false, - "status": "saved", - "fileId": "28af0d2b6f1f4003921becff31d875783d4890bb", - "scale": [ - 1, - 1 - ] - }, - { - "id": "PnXkBbkQ8Ig9XtCkVaieD", - "type": "text", - "x": 2322.2106052178233, - "y": -699.0748199926416, - "width": 216.4197998046875, - "height": 25, - "angle": 0, - "strokeColor": "#0c8599", - "backgroundColor": "transparent", - "fillStyle": "solid", - "strokeWidth": 4, - "strokeStyle": "solid", - "roughness": 2, - "opacity": 100, - "groupIds": [], - "frameId": null, - "index": "aV", - "roundness": null, - "seed": 1266908954, - "version": 148, - "versionNonce": 327826758, - "isDeleted": false, - "boundElements": null, - "updated": 1714307994815, - "link": null, - "locked": false, - "text": "SSO Identity Provider", - "fontSize": 20, - "fontFamily": 1, - "textAlign": "left", - "verticalAlign": "top", - "containerId": null, - "originalText": "SSO Identity Provider", - "lineHeight": 1.25 - }, - { - "type": "text", - "version": 269, - "versionNonce": 878103622, - "index": "aW", - "isDeleted": false, - "id": "QTjdAhBE1pUDySrts74uo", - "fillStyle": "solid", - "strokeWidth": 4, - "strokeStyle": "solid", - "roughness": 2, - "opacity": 100, - "angle": 0, - "x": 2331.997540218541, - "y": -882.7712134051693, - "strokeColor": "#0c8599", - "backgroundColor": "transparent", - "width": 213.2398223876953, - "height": 25, - "seed": 862017754, - "groupIds": [], - "frameId": null, - "roundness": null, - "boundElements": [ - { - "id": "rbM2veZIDmCophmBNfmqs", - "type": "arrow" - } - ], - "updated": 1714308030286, - "link": null, - "locked": false, - "fontSize": 20, - "fontFamily": 1, - "text": "KV DB (e.g. postgres)", - "textAlign": "left", - "verticalAlign": "top", - "containerId": null, - "originalText": "KV DB (e.g. postgres)", - "lineHeight": 1.25 - }, - { - "type": "text", - "version": 369, - "versionNonce": 1260573702, - "index": "aX", - "isDeleted": false, - "id": "BhCRzPQ5ZrOOJH4GLlQxZ", - "fillStyle": "solid", - "strokeWidth": 4, - "strokeStyle": "solid", - "roughness": 2, - "opacity": 100, - "angle": 0, - "x": 2340.5175368616074, - "y": -1079.1342910633073, - "strokeColor": "#0c8599", - "backgroundColor": "transparent", - "width": 196.1998291015625, - "height": 25, - "seed": 1439635206, - "groupIds": [], - "frameId": null, - "roundness": null, - "boundElements": [], - "updated": 1714307989094, - "link": null, - "locked": false, - "fontSize": 20, - "fontFamily": 1, - "text": "Blockstore (e.g. S3)", - "textAlign": "left", - "verticalAlign": "top", - "containerId": null, - "originalText": "Blockstore (e.g. S3)", - "lineHeight": 1.25 - }, - { - "type": "arrow", - "version": 374, - "versionNonce": 405390406, - "index": "aY", - "isDeleted": false, - "id": "-iwNE2WrEhf-EWSRbcj0e", - "fillStyle": "solid", - "strokeWidth": 4, - "strokeStyle": "solid", - "roughness": 2, - "opacity": 30, - "angle": 0, - "x": 2088.299140850368, - "y": -1138.7026272061219, - "strokeColor": "#0c8599", - "backgroundColor": "#eaddd7", - "width": 268.6262723812356, - "height": 0.3648552853771889, - "seed": 611672986, - "groupIds": [], - "frameId": null, - "roundness": { - "type": 2 - }, - "boundElements": [], - "updated": 1714308023190, - "link": null, - "locked": false, - "startBinding": { - "elementId": "Gawq1ZdBkaz4K1CvR6dpE", - "focus": -0.131149941438345, - "gap": 4.102727939839042 - }, - "endBinding": { - "elementId": "xnAyKqeLkXYZK021tYs2A", - "focus": -0.3277535041961902, - "gap": 8.97575223976105 - }, - "lastCommittedPoint": null, - "startArrowhead": null, - "endArrowhead": "arrow", - "points": [ - [ - 0, - 0 - ], - [ - 268.6262723812356, - 0.3648552853771889 - ] - ] - }, - { - "type": "arrow", - "version": 1039, - "versionNonce": 1937114374, - "index": "aZ", - "isDeleted": false, - "id": "UPmw7JR4shDYhAn-VLH32", - "fillStyle": "solid", - "strokeWidth": 4, - "strokeStyle": "solid", - "roughness": 2, - "opacity": 30, - "angle": 0, - "x": 2087.172907681361, - "y": -1126.1826647261519, - "strokeColor": "#0c8599", - "backgroundColor": "#eaddd7", - "width": 271.31743208119497, - "height": 144.26068438890047, - "seed": 295832454, - "groupIds": [], - "frameId": null, - "roundness": { - "type": 2 - }, - "boundElements": [], - "updated": 1714545494086, - "link": null, - "locked": false, - "startBinding": { - "elementId": "Gawq1ZdBkaz4K1CvR6dpE", - "focus": -0.4852460198889117, - "gap": 2.9764947708317777 - }, - "endBinding": { - "elementId": "WHdKqWgNktR-2_FDZRCeI", - "focus": -0.23420082794532118, - "gap": 17.88202860013439 - }, - "lastCommittedPoint": null, - "startArrowhead": null, - "endArrowhead": "arrow", - "points": [ - [ - 0, - 0 - ], - [ - 271.31743208119497, - 144.26068438890047 - ] - ] - }, - { - "type": "arrow", - "version": 1011, - "versionNonce": 1544616838, - "index": "aa", - "isDeleted": false, - "id": "rbM2veZIDmCophmBNfmqs", - "fillStyle": "solid", - "strokeWidth": 4, - "strokeStyle": "solid", - "roughness": 2, - "opacity": 30, - "angle": 0, - "x": 2086.182076054847, - "y": -854.8814542820674, - "strokeColor": "#0c8599", - "backgroundColor": "#eaddd7", - "width": 272.84001846872115, - "height": 96.89347749161016, - "seed": 1905304070, - "groupIds": [], - "frameId": null, - "roundness": { - "type": 2 - }, - "boundElements": [], - "updated": 1714545494087, - "link": null, - "locked": false, - "startBinding": { - "elementId": "7eEwcdvLsyiVJQ43QZnR5", - "focus": 0.22863684675511883, - "gap": 3.048659375187526 - }, - "endBinding": { - "elementId": "WHdKqWgNktR-2_FDZRCeI", - "focus": 0.17760024048881923, - "gap": 17.350273839121883 - }, - "lastCommittedPoint": null, - "startArrowhead": null, - "endArrowhead": "arrow", - "points": [ - [ - 0, - 0 - ], - [ - 272.84001846872115, - -96.89347749161016 - ] - ] - }, - { - "type": "arrow", - "version": 548, - "versionNonce": 2143601626, - "index": "ab", - "isDeleted": false, - "id": "Z3xFKVJN3UYuyp4DXgfvn", - "fillStyle": "solid", - "strokeWidth": 4, - "strokeStyle": "solid", - "roughness": 2, - "opacity": 30, - "angle": 0, - "x": 2080.7789417058734, - "y": -834.105838706363, - "strokeColor": "#0c8599", - "backgroundColor": "#eaddd7", - "width": 269.68130838476236, - "height": 35.1211459394126, - "seed": 6537926, - "groupIds": [], - "frameId": null, - "roundness": { - "type": 2 - }, - "boundElements": [], - "updated": 1714308045104, - "link": null, - "locked": false, - "startBinding": { - "elementId": "7eEwcdvLsyiVJQ43QZnR5", - "focus": -0.2134039460510788, - "gap": 1 - }, - "endBinding": { - "elementId": "4epq6d18H1Pi9HUPCc6dY", - "focus": 0.20616072996064502, - "gap": 18.091529908579332 - }, - "lastCommittedPoint": null, - "startArrowhead": null, - "endArrowhead": "arrow", - "points": [ - [ - 0, - 0 - ], - [ - 269.68130838476236, - 35.1211459394126 - ] - ] - }, - { - "id": "SdPJKHOVhZhqFnlMA5tJO", - "type": "text", - "x": 1228.4676373570853, - "y": -989.6839333135869, - "width": 25.239990234375, - "height": 25, - "angle": 0, - "strokeColor": "#0c8599", - "backgroundColor": "transparent", - "fillStyle": "solid", - "strokeWidth": 4, - "strokeStyle": "solid", - "roughness": 2, - "opacity": 30, - "groupIds": [], - "frameId": null, - "index": "ac", - "roundness": null, - "seed": 924095366, - "version": 47, - "versionNonce": 873928218, - "isDeleted": false, - "boundElements": null, - "updated": 1714308235438, - "link": null, - "locked": false, - "text": "[1]", - "fontSize": 20, - "fontFamily": 1, - "textAlign": "left", - "verticalAlign": "top", - "containerId": null, - "originalText": "[1]", - "lineHeight": 1.25 - }, - { - "type": "text", - "version": 218, - "versionNonce": 244381446, - "index": "ad", - "isDeleted": false, - "id": "C2dCS0ZX7ODBYix-TVr1K", - "fillStyle": "solid", - "strokeWidth": 4, - "strokeStyle": "solid", - "roughness": 2, - "opacity": 30, - "angle": 0, - "x": 1415.517464366353, - "y": -911.5266491522183, - "strokeColor": "#0c8599", - "backgroundColor": "transparent", - "width": 34.05998229980469, - "height": 25, - "seed": 1245057222, - "groupIds": [], - "frameId": null, - "roundness": null, - "boundElements": [], - "updated": 1714308251260, - "link": null, - "locked": false, - "fontSize": 20, - "fontFamily": 1, - "text": "[2]", - "textAlign": "left", - "verticalAlign": "top", - "containerId": null, - "originalText": "[2]", - "lineHeight": 1.25 - }, - { - "type": "text", - "version": 325, - "versionNonce": 242231002, - "index": "ae", - "isDeleted": false, - "id": "JD-FjoYseTKpSeV_sISoB", - "fillStyle": "solid", - "strokeWidth": 4, - "strokeStyle": "solid", - "roughness": 2, - "opacity": 30, - "angle": 0, - "x": 1896.1240231565876, - "y": -1256.7142549400035, - "strokeColor": "#0c8599", - "backgroundColor": "transparent", - "width": 33.43998718261719, - "height": 25, - "seed": 1167838406, - "groupIds": [], - "frameId": null, - "roundness": null, - "boundElements": [], - "updated": 1714308283752, - "link": null, - "locked": false, - "fontSize": 20, - "fontFamily": 1, - "text": "[3]", - "textAlign": "left", - "verticalAlign": "top", - "containerId": null, - "originalText": "[3]", - "lineHeight": 1.25 - }, - { - "type": "text", - "version": 291, - "versionNonce": 1401298906, - "index": "af", - "isDeleted": false, - "id": "PY2IOIshxbmyJGWhH0R2I", - "fillStyle": "solid", - "strokeWidth": 4, - "strokeStyle": "solid", - "roughness": 2, - "opacity": 30, - "angle": 0, - "x": 1894.804382824698, - "y": -718.6392961957064, - "strokeColor": "#0c8599", - "backgroundColor": "transparent", - "width": 32.61997985839844, - "height": 25, - "seed": 1175851590, - "groupIds": [], - "frameId": null, - "roundness": null, - "boundElements": [], - "updated": 1714308290945, - "link": null, - "locked": false, - "fontSize": 20, - "fontFamily": 1, - "text": "[4]", - "textAlign": "left", - "verticalAlign": "top", - "containerId": null, - "originalText": "[4]", - "lineHeight": 1.25 - }, - { - "type": "text", - "version": 585, - "versionNonce": 1938804570, - "index": "ag", - "isDeleted": false, - "id": "FAnl_jQpTBU04XntUl5Tl", - "fillStyle": "solid", - "strokeWidth": 4, - "strokeStyle": "solid", - "roughness": 2, - "opacity": 30, - "angle": 0, - "x": 2512.2204326385317, - "y": -965.2341822337299, - "strokeColor": "#0c8599", - "backgroundColor": "transparent", - "width": 32.17997741699219, - "height": 25, - "seed": 277624346, - "groupIds": [], - "frameId": null, - "roundness": null, - "boundElements": [], - "updated": 1714308334206, - "link": null, - "locked": false, - "fontSize": 20, - "fontFamily": 1, - "text": "[5]", - "textAlign": "left", - "verticalAlign": "top", - "containerId": null, - "originalText": "[5]", - "lineHeight": 1.25 - }, - { - "type": "text", - "version": 296, - "versionNonce": 1877833882, - "index": "ah", - "isDeleted": false, - "id": "bangvYBm9G4mP9YJ9wG0J", - "fillStyle": "solid", - "strokeWidth": 4, - "strokeStyle": "solid", - "roughness": 2, - "opacity": 30, - "angle": 0, - "x": 2517.166552796947, - "y": -788.0557322867609, - "strokeColor": "#0c8599", - "backgroundColor": "transparent", - "width": 32.61997985839844, - "height": 25, - "seed": 711020998, - "groupIds": [], - "frameId": null, - "roundness": null, - "boundElements": [], - "updated": 1714308338074, - "link": null, - "locked": false, - "fontSize": 20, - "fontFamily": 1, - "text": "[6]", - "textAlign": "left", - "verticalAlign": "top", - "containerId": null, - "originalText": "[6]", - "lineHeight": 1.25 - }, - { - "id": "WHdKqWgNktR-2_FDZRCeI", - "type": "image", - "x": 2376.3723683626904, - "y": -1035.8263413657496, - "width": 126.50653833186759, - "height": 144.49464751192338, - "angle": 0, - "strokeColor": "transparent", - "backgroundColor": "transparent", - "fillStyle": "solid", - "strokeWidth": 4, - "strokeStyle": "solid", - "roughness": 2, - "opacity": 80, - "groupIds": [], - "frameId": null, - "index": "aj", - "roundness": null, - "seed": 2029135834, - "version": 168, - "versionNonce": 470249094, - "isDeleted": false, - "boundElements": [ - { - "id": "UPmw7JR4shDYhAn-VLH32", - "type": "arrow" - }, - { - "id": "rbM2veZIDmCophmBNfmqs", - "type": "arrow" - } - ], - "updated": 1714545494086, - "link": null, - "locked": false, - "status": "saved", - "fileId": "8a6fb526480e2312a4c8f4e4503f7c8edca88962", - "scale": [ - 1, - 1 - ] - }, - { - "id": "zEOgmohkYz4YoN-KD02kD", - "type": "text", - "x": 1927.847385099101, - "y": -1009.3837441073794, - "width": 54.0999755859375, - "height": 75, - "angle": 0, - "strokeColor": "#0c8599", - "backgroundColor": "transparent", - "fillStyle": "solid", - "strokeWidth": 4, - "strokeStyle": "solid", - "roughness": 2, - "opacity": 80, - "groupIds": [], - "frameId": null, - "index": "ak", - "roundness": null, - "seed": 1417480838, - "version": 118, - "versionNonce": 512455686, - "isDeleted": false, - "boundElements": null, - "updated": 1714545701359, - "link": null, - "locked": false, - "text": "RBAC\nSTS\n...", - "fontSize": 20, - "fontFamily": 1, - "textAlign": "left", - "verticalAlign": "top", - "containerId": null, - "originalText": "RBAC\nSTS\n...", - "lineHeight": 1.25 - } - ], - "appState": { - "gridSize": null, - "viewBackgroundColor": "#ffffff" - }, - "files": { - "42f43407d586d13ccf0d29be8715d3ed1c722167": { - "mimeType": "image/svg+xml", - "id": "42f43407d586d13ccf0d29be8715d3ed1c722167", - "dataURL": "data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjAgMCAxNDUuMTcgODEuNjgiIHdpZHRoPSI1MCIgaGVpZ2h0PSI1MCI+PGRlZnM+PHN0eWxlPi5jbHMtMXtmaWxsOiMyNThjODI7fS5jbHMtMntmaWxsOiMyY2U1YjU7fTwvc3R5bGU+PC9kZWZzPjx0aXRsZT5sb2dvIDEwPC90aXRsZT48ZyBpZD0iTGF5ZXJfMiIgZGF0YS1uYW1lPSJMYXllciAyIj48ZyBpZD0iTGF5ZXJfMS0yIiBkYXRhLW5hbWU9IkxheWVyIDEiPjxwYXRoIGNsYXNzPSJjbHMtMSIgZD0iTTE0My45Miw0MGEyNS43NCwyNS43NCwwLDAsMC01LTkuNTZjLTEuMTMtNS42Ni0zLjU0LTExLTcuNTItMTQuMzJhMjEsMjEsMCwwLDAtOC42NC00LjYzLDEsMSwwLDAsMC0xLjE1LDEuMzFjMSwyLjYxLDIuNjQsOCwxLjkxLDEyLjIxYTI0LjA4LDI0LjA4LDAsMCwwLTMuMjQtNS42Yy0xLjg3LTIuNDItMi45Mi0zLjc3LTIuMzUtNi42NS40OS0yLjUsMy44MS00LjU4LDcuODktNS4yOWExLDEsMCwwLDAsLjUtMS42NUMxMjQsMy43MywxMTkuMiwwLDExMy41NSwwYy03LjksMC0xMi4xNCw0LjA2LTEzLjM0LDEwLjg3LTEsNS43OS41NSw5LjkyLDEuNjksMTIuOTQuMTkuNDguMzUuOTIuNDksMS4zMS0uOTItLjYzLTItMS4yOS0zLjExLTEuOTVhNTMuNTYsNTMuNTYsMCwwLDAtMjYuNy02Ljg1LDUzLjU0LDUzLjU0LDAsMCwwLTI2LjY5LDYuODVjLTEuMTUuNjYtMi4xOSwxLjMyLTMuMTEsMS45NS4xNC0uMzkuMy0uODMuNDktMS4zMSwxLjE0LTMsMi43MS03LjE1LDEuNjktMTIuOTRDNDMuNzUsNC4wNiwzOS41MiwwLDMxLjYyLDAsMjYsMCwyMS4xNiwzLjczLDE4Ljg4LDUuODZhMSwxLDAsMCwwLC41LDEuNjVjNC4wOC43MSw3LjQsMi43OSw3Ljg5LDUuMjkuNTcsMi44OC0uNDgsNC4yMy0yLjM1LDYuNjVhMjMuNzMsMjMuNzMsMCwwLDAtMy4yNCw1LjZjLS43My00LjIzLjk0LTkuNiwxLjkxLTEyLjIxYTEsMSwwLDAsMC0xLjE2LTEuMzEsMjEuMDgsMjEuMDgsMCwwLDAtOC42Myw0LjYzYy00LDMuMzYtNi4zOSw4LjY2LTcuNTIsMTQuMzJhMjUuNzQsMjUuNzQsMCwwLDAtNSw5LjU2Yy0xLjksOC4wNy0yLjUsMTYuNzgsNC41OSwyNS4xMSw0LjU0LDUuMzQsMTEuODIsOC4xMSwyMC44Miw4LjExYTIzLjEyLDIzLjEyLDAsMCwxLDUuNDEsMS42MWM2LjkxLDIuNTUsMTguNDksNi44MSw0MC41MSw2LjgxczMzLjYxLTQuMjYsNDAuNTItNi44MWEyMy4xMiwyMy4xMiwwLDAsMSw1LjQxLTEuNjFjOSwwLDE2LjI3LTIuNzcsMjAuODItOC4xMUMxNDYuNDIsNTYuODIsMTQ1LjgyLDQ4LjExLDE0My45Miw0MFoiLz48cGF0aCBjbGFzcz0iY2xzLTIiIGQ9Ik0xMTguNTEsNjguMzZjLTYuMTMsMC0xNS4zMSw4LjQyLTQ1LjkzLDguNDJzLTM5LjgtOC40Mi00NS45Mi04LjQyQzIuMTcsNjguMzYsNC45Miw0NS4yNSw0LjkyLDQ1LjI1UzkuNDYsNTYuNzksMjEsNTYuNzlhMjAuMzMsMjAuMzMsMCwwLDAsNC4xNi0uNDQuNTYuNTYsMCwwLDAsMC0xLjA4Yy0xNy44NC01LjMzLTE4LTI2LjE3LTcuNC0zNi4yLTQuNDgsMTkuMDYsOC44OCwyNSwxNCwyNi42MWEuNTEuNTEsMCwwLDAsLjUxLS44NEMyOSw0MS40MywyMS40NiwzMiwyOC44LDIyLjQ0LDM4LDEwLjUsMjUuNzQsNS45MSwyNS43NCw1LjkxYTE5LjI0LDE5LjI0LDAsMCwxLDUuODgtMWMzLjU0LDAsNy41NCwxLjI5LDguNTEsNi44MiwxLjgxLDEwLjIzLTcsMTMuODEtLjY2LDIyLjA2YS40MS40MSwwLDAsMCwuNjYsMGgwczExLTEyLjU1LDMyLjQ1LTEyLjU1UzEwNSwzMy43NywxMDUsMzMuNzdoMGEuNDEuNDEsMCwwLDAsLjY2LDBjNi4zNy04LjI1LTIuNDctMTEuODMtLjY2LTIyLjA2LDEtNS41Myw1LTYuODIsOC41MS02LjgyYTE5LjI0LDE5LjI0LDAsMCwxLDUuODgsMXMtMTIuMjUsNC41OS0zLjA3LDE2LjUzYzcuMzQsOS41NC0uMTgsMTktMy40OSwyMi40YS41MS41MSwwLDAsMCwuNTEuODRjNS4xMy0xLjU2LDE4LjQ5LTcuNTUsMTQtMjYuNjEsMTAuNjIsMTAsMTAuNDMsMzAuODctNy40LDM2LjJhLjU2LjU2LDAsMCwwLDAsMS4wOCwyMC4zMywyMC4zMywwLDAsMCw0LjE2LjQ0YzExLjUyLDAsMTYuMDUtMTEuNTQsMTYuMDUtMTEuNTRTMTQzLDY4LjM2LDExOC41MSw2OC4zNloiLz48cGF0aCBjbGFzcz0iY2xzLTEiIGQ9Ik01Mi4zOCw0OGE0LjI5LDQuMjksMCwxLDAtOC41NywwYzAsMi4zNiwxLjkyLDMuMDYsNC4yOCwzLjA2UzUyLjM4LDUwLjM5LDUyLjM4LDQ4WiIvPjxwYXRoIGNsYXNzPSJjbHMtMSIgZD0iTTEwMS4zNiw0OGE0LjI5LDQuMjksMCwxLDAtOC41NywwYzAsMi4zNiwxLjkyLDMuMDYsNC4yOSwzLjA2UzEwMS4zNiw1MC4zOSwxMDEuMzYsNDhaIi8+PHBhdGggY2xhc3M9ImNscy0xIiBkPSJNNzIuNTgsNjQuODdBMzkuNTcsMzkuNTcsMCwwLDEsNTMuODEsNjBhMiwyLDAsMCwxLS4zLTMuMjJoMGEyLDIsMCwwLDEsMi4yMi0uMjRjMy44LDIuMTEsMTAuMDgsMy40LDE2Ljg1LDMuNHMxMy0xLjI5LDE2Ljg2LTMuNGEyLDIsMCwwLDEsMi4yMi4yNGgwYTIsMiwwLDAsMS0uMywzLjIyQTM5LjU4LDM5LjU4LDAsMCwxLDcyLjU4LDY0Ljg3WiIvPjxwYXRoIGNsYXNzPSJjbHMtMSIgZD0iTTM0LjMzLDcwLjUyYTExLjY3LDExLjY3LDAsMCwxLTUuOS01LjIyLjI0LjI0LDAsMCwwLS40NS4xMVY2NmEyLjgyLDIuODIsMCwwLDEtMS4xNSwyLjI3bC0uMTkuMTQsMS4zNC4xNFoiLz48cGF0aCBjbGFzcz0iY2xzLTEiIGQ9Ik0xMTAuOCw3MC41MmExMS43LDExLjcsMCwwLDAsNS45MS01LjIyLjI0LjI0LDAsMCwxLC40NS4xMVY2NmEyLjgyLDIuODIsMCwwLDAsMS4xNSwyLjI3bC4xOS4xNC0xLjM0LjE0WiIvPjxwYXRoIGNsYXNzPSJjbHMtMSIgZD0iTTQxLjY1LDMyLjI4YTI4LjEzLDI4LjEzLDAsMCwwLTIuOTEsMy4xNy4yMy4yMywwLDAsMS0uNC0uMTljLjEzLS42NS4yNi0xLjI1LjM2LTEuNjhhMS43NiwxLjc2LDAsMCwwLS4yLTEuMjVsLS4zNS0uNTdaIi8+PHBhdGggY2xhc3M9ImNscy0xIiBkPSJNMTAzLjUzLDMyLjI4YTI4LjEzLDI4LjEzLDAsMCwxLDIuOTEsMy4xNy4yMy4yMywwLDAsMCwuNDEtLjE5Yy0uMTQtLjY1LS4yNy0xLjI1LS4zNy0xLjY4YTEuNzYsMS43NiwwLDAsMSwuMi0xLjI1bC4zNS0uNTdaIi8+PC9nPjwvZz48L3N2Zz4=", - "created": 1714307151956, - "lastRetrieved": 1715236891767 - }, - "01f5bbd8e4ddca1dd3d02921396d9d769ba087b4": { - "mimeType": "image/png", - "id": "01f5bbd8e4ddca1dd3d02921396d9d769ba087b4", - "dataURL": "data:image/png;base64,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", - "created": 1714307782740, - "lastRetrieved": 1715236891767 - }, - "28af0d2b6f1f4003921becff31d875783d4890bb": { - "mimeType": "image/png", - "id": "28af0d2b6f1f4003921becff31d875783d4890bb", - "dataURL": "data:image/png;base64,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", - "created": 1714307898564, - "lastRetrieved": 1715236891767 - }, - "8a6fb526480e2312a4c8f4e4503f7c8edca88962": { - "mimeType": "image/png", - "id": "8a6fb526480e2312a4c8f4e4503f7c8edca88962", - "dataURL": "data:image/png;base64,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hAgggAACCCCAAAI5FEhPTzeVKlWSrVu35rAk97ycROscfTljxgy57bbbSLTcM9aJBAEEEEAAAQQQQCBIAl9++aW56667glS6M4sl0TpHvzVo0EAWLFhAouXMcU2rEUAAAQQQQAABBEIoULduXbNkyZIQ1mj/qki0ztNHixYtknr16pFs2X8c00IEEEAAAQQQQACBMAksWLDA6CQFj78LkGidZ0Q0b95cvvnmGxIt3jUIIIAAAggggAACCJxDoHHjxmbu3Ln4nCFAonWBIbFs2TKpXbs2yRZvHQQQQAABBBBAAAEEzhBYtGiRqVevHi5nESDRusCwuP7662Xp0qUSERFBssVbCAEEEEAAAQQQQACBvwQyMzPNDTfcYJ0r8/inAImWH6NiypQpcscdd5Bo+WHFIQgggAACCCCAAALeEJg4caJp27atN4LNRpQkWn6gValSRX7//XfJmzcvyZYfXhyCAAIIIIAAAggg4G6B5ORkU716ddm8ebO7A81BdCRafuK99tpr0q9fPxItP704DAEEEEAAAQQQQMC9As8//7x55ZVX3BtgACIj0fITMSYmRlavXi0VKlQg2fLTjMMQQAABBBBAAAEE3CewYcMGU6NGDTlx4oT7ggtgRCRaWcC89dZb5euvvybRyoIZhyKAAAIIIIAAAgi4R0AXwGjSpInMmzfPPUEFKRISrSzCjhkzRjp16kSylUU3DkcAAQQQQAABBBBwvsCwYcNMt27dnB9ICCIg0coicmxsrLUwRrly5Ui2smjH4QgggAACCCCAAALOFdi8ebO58sor5fjx484NIoQtJ9HKBnbTpk1l5syZ7K2VDTteggACCCCAAAIIIOA8gfT0dNOgQQNZtGiR8xofphaTaGUTfuDAgdKnTx9mtbLpx8sQQAABBBBAAAEEnCPwwgsvmJdeesk5DbZBS0m0stkJUVFR8v3330vdunVJtrJpyMsQQAABBBBAAAEE7C/w/fffm4YNG0pGRob9G2ujFpJo5aAzypcvL7/88osULVqUZCsHjrwUAQQQQAABBBBAwJ4C+/fvN1dddZXs2rXLng20catItHLYObq85bfffitRUVEkWzm05OUIIIAAAggggAAC9hFIS0szujbBggUL7NMoB7WERCsAndW3b18ZMGAAiVYALCkCAQQQQAABBBBAwB4C3bt3N0OHDrVHYxzYChKt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V5mgZXDxaDoCCCCAAAIIIOBFgR9++MG6/vrrXdv1SpUqyebNm10TsrRQpUqVshISElxbs3N1jKDlqXLTWQQQQAABBBBAwHyBQ4cOWfHx8ZKRkWF+Z87Rg27dusnEiRMJWoZXl6BleAFpPgIIIIAAAggg4EWBunXrWitXrnRl199//33p3bs3Qcvw6hK0DC8gzUcAAQQQQAABBLwoMGDAAGvEiBGu63quXLl02aBUrFiRoGV4dQlahheQ5iOAAAIIIIAAAl4U+O2336wrr7zSdV1v1KiRLF682FUhS4vENVquG6rn71CpUqUkISHBdYPYQyWkqwgggAACCCDgcYErrrjCWr16tasUdNv6Bx980HXvUQlarhqmF+4MQctDxaarCCCAAAIIIOBKgVGjRln9+vVzTd8KFCgg//zzjxQpUoSg5YKqsnTQBUWkCwgggAACCCCAgBcFUlJSLN0KfdeuXa7o/lNPPSWvvPKK60KWFocZLVcMUf86oVuC7t69W6Kiolw5mP1T4FkIIIAAAggggIDZAsOHD7cGDhxodidEJDY2VjZt2iQlSpRw3XvT9PR0q0SJErJ//37j65SVDnh2RkuRnn32WXnxxRddN5izMgB4LgIIIIAAAgggYLJAamqqVbt2bVm3bp3J3ZBhw4bJ008/7cr3pYMGDbJefvllo+uTncZ7Omjp9plffPGF3HLLLa4c1NkZELwGAQQQQAABBBAwTeCHH36wrr/+etOafbK9l112meimHvny5XPde9IZM2ZYHTt2lMzMTGPrk92GezpoKVrhwoVl+fLlUrlyZdcN7OwOCl6HAAIIIIAAAgiYJtCrVy/rgw8+MK3Zkjt3bpk/f740atTIde9Ft27dam/Bf+DAAePqEogGez5oKaJONy9evFhiYmJcN8ADMUg4BgIIIIAAAggg4HQB3RijYcOG8scffzi9qae17z//+Y888cQTrnsPqvVo0qSJrFixwqh6BLKxBK3/afbo0UM++eQT1w3yQA4WjoUAAggggAACCDhZYO3atfabe1NmUG677Tb57LPPJCIiwlXvQTMzM627775bJkyY4OThEvS2EbROIdaL9AYNGuSqgR70EcQJEEAAAQQQQAABBwn8+uuvVsuWLSUxMdFBrTq7KS1atJDvvvvOlddlDR061BoyZIij/UPROILWKcq6Ocann34qd9xxB2ErFKOPcyCAAAIIIIAAAkEQmDVrlnXLLbc4Nmxdc8018s0330hcXJzr3nNOnTrV6tq1qyc3vzhzKBO0zhCJjo6WefPmydVXX+26gR+En2McEgEEEEAAAQQQcKTAsmXLrHbt2sm+ffsc1b4OHTrIpEmTXLk3wPLly61rr71WkpOTHWUersYQtM4hX6pUKVmyZImUK1eOsBWukcl5EUAAAQQQQACBHAps2LDBnl1ZuXJlDo+U85dHRESI3lj5hRdekKioKNe9x9QdBnUzkt27d+ccyyVHIGidp5B6P4OFCxdK8eLFXfeN4JKxSzcQQAABBBBAAIGLCujud48//ri8++67YlnWRZ8fjCcUL15cN12TG264wZXvK/ft22fpcsi1a9cGg8/YYxK0LlC6Bg0ayJw5c6RAgQKu/KYwdtTScAQQQAABBBBAIIsC8+fPtx566CH7xsCh+tBZrG7dusnrr78uxYoVc+X7yaNHj9qbj+h9afk4XYCgdZERoQPn22+/deWOMHwzIIAAAggggAACXhJIS0uzb2o8fPhw2bJlS9C6rhusdezYUXTnvXr16rkyYCne8ePHLb3m7IcffgiapckHJmj5Ub2bb75Zpk6d6sr1tH50n6cggAACCCCAAAKuEtDApfevev/992XBggUBW1JYqFAh6dKlizzyyCNSq1Yt1wYsHQwZGRnW7bffLlOmTHHV2AhkZwhafmr27NnT/maMjIx09TeNnxw8DQEEEEAAAQQQcIXAli1bLA0LermIhq6kpKQs9atixYqiK6BuuOEGad++vURHR7v+vaLekPj++++XMWPGZMnKa08maGWh4vfee6+MHTuWsJUFM56KAAIIIIAAAgiYInDixAnrzz//lPXr19uPXbt22ffiSklJsbugM1b58+cXDVdVq1aVatWqeW6Xag1ZDz74oLz33numlDVs7SRoZZG+V69ednpnZiuLcDwdAQQQQAABBBBAwGgBDVm6oYju4MjHxQUIWhc3OusZvXv3tsNWRESE66eGs8HDSxBAAAEEEEAAAQRcJqAh6+GHH5Z33nnHZT0LXncIWtm0feCBB+Stt95iZiubfrwMAQQQQAABBBBAwAwB3fhClwuOHj3ajAY7pJUErRwU4s4775SPP/5Y8uTJw8xWDhx5KQIIIIAAAggggIAzBdLT0y1dzaXvefnImgBBK2teZz1bd5eZPHmyxMTEELZyaMnLEUAAAQQQQAABBJwjkJqaat1xxx0yffp05zTKoJYQtAJQrGbNmsnXX38tcXFxhK0AeHIIBBBAAAEEEEAAgfAKHDt2zLrllltk9uzZ4W2IwWcnaAWoeFdffbXMnDlT4uPjCVsBMuUwCCCAAAIIIIAAAqEX2Lt3r9WuXTtZvnx56E/uojMStAJYzMqVK8u3336r91UgbAXQlUMhgAACCCCAAAIIhEZg06ZNVtu2be37iPGRMwGCVs78znp10aJF5auvvpKmTZsStgJsy+EQQAABBBBAAAEEgiewZMkSq0OHDrJ3797gncRDRyZoBaHY+fLlk08++URuu+02wlYQfDkkAggggAACCCCAQGAFvvjiC6tbt26SkpIS2AN7+GgErSAVPzIyUt544w3p168fYStIxhwWAQQQQAABBBBAIOcC//3vf63+/ftLZmZmzg/GEU4KELSCPBgUWG9szL22ggzN4RFAAAEEEEAAAQSyJJCWlmY9/vjjMmrUqCy9jif7J0DQ8s8pR89q2rSpTJs2TYoXL87sVo4keTECCCCAAAIIIIBAIAT2799vdenSRebOnRuIw3GMcwgQtEI0LMqWLStffvmlXHnllYStEJlzGgQQQAABBBBAAIGzBf744w+rY8eOsnXrVniCKEDQCiLumYfOnz+/vUlGp06dCFshdOdUCCCAAAIIIIAAAv8nMGXKFOuee+6RpKQkSIIsQNAKMvCZh8+VK5c888wz8vzzz0tUVBSBK8T+nA4BBBBAAAEEEPCiQHp6uvXss8/K8OHDxbIsLxKEvM8ErZCT/98JmzdvLp999pmULFmSsBWmGnBaBBBAAAEEEEDACwJ79+61t26fNWuWF7rrmD4StMJYitKlS8vnn3/OzY3DWANOjQACCCCAAAIIuFlg/vz51u233y4JCQlu7qYj+0bQCnNZoqKi5MUXX5Qnn3xSIiIimN0Kcz04PQIIIIAAAggg4AaBzMxMS7dtHzBggKSlpbmhS8b1gaDlkJLdfPPN8sEHH0jRokUJWw6pCc1AAAEEEEAAAQRMFNCt23v16iVfffWVic13TZsJWg4qZYkSJeTjjz+WG264gbDloLrQFAQQQAABBBBAwBSBOXPmWHfffbfs2LHDlCa7tp0ELYeVVnclfOSRR2TEiBGSN29eApfD6kNzEEAAAQQQQAABJwqkpaVZejmKPjIyMpzYRM+1iaDl0JI3aNBAJk6cKFWqVCFsObRGNAsBBBBAAAEEEHCCwObNm6277rpLFi1a5ITm0Ib/CRC0HDwUChQoIHoRY8+ePQlbDq4TTUMAAQQQQAABBMIlMHbsWOuxxx6TxMTEcDWB855HgKBlwNC44YYb5P3335cyZcoQuAyoF01EAAEEEEAAAQSCLbBr1y6rb9++8vXXXwf7VBw/mwIErWzChfplhQoVsu/k3bdvX8JWqPE5HwIIIIAAAggg4CCByZMnWw888IAcOHDAQa2iKWcKELQMGxOdO3eWd955Ry655BICl2G1o7kIIIAAAggggEBOBPbs2WMHrC+++CInh+G1IRIgaIUIOpCnKV68uB22OnXqRNgKJCzHQgABBBBAAAEEHCqgs1gPPfSQ7Nu3z6EtpFnMaLloDLRv394OXOXKlSNwuaiudAUBBBBAAAEEEPAJJCQkWHrrn2nTpoFimAAzWoYV7MzmxsXFyb///W/73luRkZEELsPrSfMRQAABBBBAAAEVyMzMtMaOHSsDBgyQo0ePgmKgAEHLwKKdq8lNmjSRMWPGSI0aNQhbLqkp3UAAAQQQQAABbwqsX7/e3lFw7ty53gRwSa8JWi4ppHYjb968MmjQIHnyySclOjqawOWi2tIVBBBAAAEEEHC/QHJysvXKK6+IPk6cOOH+Dru8hwQtFxa4cuXKMnLkSGnfvj1hy4X1pUsIIIAAAggg4D6B2bNnWw8//LCsXbvWfZ3zaI8IWi4uvG6W8eabb0rFihUJXC6uM11DAAEEEEAAAXMFtm/fbumKpPHjx5vbCVp+TgGClssHRnR0tL2U8KmnnmI5octrTfcQQAABBBBAwByBEydOWLp79LPPPiuJiYnmNJyW+i1A0PKbyuwnVqlSRV5//XWWE5pdRlqPAAIIIIAAAi4QmDFjhtW/f3/ZsGGDC3pDF84nQNDy2Nho1aqVHbhq167NckKP1Z7uIoAAAggggEB4Bf7++2/r8ccfl2+//Ta8DeHsIREgaIWE2VkniYiIkG7dusmIESOkRIkSBC5nlYfWIIAAAggggIDLBPbv328NHTpUdKlgenq6y3pHd5jRYgycJZA/f37Rv6pw/RaDAwEEEEAAAQQQCLyA7zqs5557To4cORL4E3BERwswo+Xo8oSmcbod/EsvvSRdu3aViIgIZrhCw85ZEEAAAQQQQMClApmZmdakSZPsjS42b97s0l7SrYsJELQuJuSh/1+zZk0ZNmyY3HTTTYQtD9WdriKAAAIIIIBA4ARmzZplDRw4UFasWBG4g3IkIwUIWkaWLbiNbt26tX1H8vr16xO4gkvN0RFAAAEEEEDAJQLLli2z9HKMn376ySU9ohs5FSBo5VTQpa/PlSuXdO7cWV5++WW57LLLCFwurTPdQgABBBBAAIGcCWzdutXS90vvv/++ZGZm5uxgvNpVAgQtV5Uz8J3JnTu33H777aIXcV566aUErsATc0QEEEAAAQQQMFDgn3/+sV577TUZPXq0HD9+3MAe0ORgCxC0gi3skuNr4OrZs6cMHjxYypYtS+BySV3pBgIIIIAAAghkTWD79u2W3iJnzJgxkpqamrUX82xPCRC0PFXunHc2T548cs8999gzXKVLlyZw5ZyUIyCAAAIIIICAAQJ79uyxXn/9dRk5ciQBy4B6OaGJng1acXFxOjMja9ascUIdjGtDdHS03H///fLkk09KyZIlCVzGVZAGI4AAAggggIA/AgkJCdarr75qLxFMSUnx5yU85wwB3dl6+/btnruXmGeDVqlSpWTjxo2ttqnTAAAgAElEQVTywAMPyCeffMI3RDYFdIbrtttukyFDhrBpRjYNeRkCCCCAAAIIOE9AN7nQGayxY8cSsHJQno4dO8q4ceOkWrVqkpCQkIMjmfdSTwethIQEeyZm9OjR1sMPPyxpaWnmVdAhLfZtmjFo0CD9RmKGyyF1oRkIIIAAAgggkDWBTZs2Wbo8kE0usuZ25rMjIyPlpZdeslc/RURE5CpVqpRF0MqZqTGv1hktX9DSRv/888+Wzszs3r3bmD44saERERHSrl07+xquBg0aELicWCTahAACCCCAAAJnCaxatcre5OLTTz+VjIwMhHIgEB8fL5999pm0adPm5HtBglYOQE176ZlBS9u/bds2S+8d9euvv5rWHce1V+/DdeONN0r//v2lZcuWBC7HVYgGIYAAAggggIAKzJkzx14iOHPmTLEsC5QcCjRo0ECmTZsm5cqVO+39H0Erh7AmvfxcQUvbn5qaavXr18/espOPwAjUrl1bHnzwQbn77rslOjqa0BUYVo6CAAIIIIAAAtkUOHHihPXll1+K3gdr6dKl2TwKLztToHv37vaSy5iYmLPe7xG0PDRezhe0fAQff/yxfd1WYmKih1SC21U1V9O+fftK0aJFCVzB5eboCCCAAAIIIHCGwIEDBywNAm+99ZbnNmYI5mCIjY2VN998U+69997zvr8jaAWzAg479sWCljZ37dq11u233y6///67w1pvdnPy5s0rXbt2laefflqqV69O4DK7nLQeAQQQQAABxwts3LjRGjVqlHzwwQeSlJTk+Paa1MDq1avL559/LldcccUF39MRtEyqag7b6k/Q0lPoUkLdLUVTOut2c4h+xst144yWLVuKLtXs0KEDgSuwvBwNAQQQQAABzwssWLDADlhffPEFG1wEYTToUsH33ntPYmNjL/o+jqAVhAI49ZD+Bi1f+7/88kvr3nvvlYMHDzq1S0a3q06dOvY9zbiOy+gy0ngEEEAAAQTCLuC7/ko3uFiyZEnY2+PGBhQsWNC+FuuOO+64aMDy9Z+g5caRcJ4+ZTVo6WH0xnV33nmnLFq0yENSoe1q6dKl7eu4evXqJZdcconf37yhbSVnQwABBBBAAAGnCezZs8fSpYFvv/227Ny502nNc017GjZsaG/dXrFixSy9TyNouWYIXLwj2QlaetS0tDRL7xE1fPhwpqAvzpztZ+TJk0duvfVW0TtqN2/e3L7RXbYPxgsRQAABBBBAwJUCmZmZ1rx58+zZlenTp8uJEydc2U8ndEov+RgwYIC88MILkidPniy/LyNoOaGKIWpDdoOWr3mLFy+2evToIevXrw9Ri717mssuu8ye4dKlm8xyeXcc0HMEEEAAAQR8AocOHbImT55sX0O/Zs0aYIIsUKFCBfnoo4+kRYsWWQ5YvqYRtIJcJCcdPqdBS/uSnJxsPfXUU2yUEaLC6m6FHTp0sGe5WrVqxSxXiNw5DQIIIIAAAk4RWL58uaX3Op0wYYK+D3NKs1zdDt3wQpdjFixYMNshS4EIWq4eJqd3LhBBy3fEH374wdIZlx07dnhIMLxdrVq1qvTs2dOe6SpWrFiOvvHD2xPOjgACCCCAAAIXEjh8+LCl24frm/1Vq1aBFSKBSy65RDTU3nzzzQF5n0XQClHhnHCaQAYt7Y9OYQ8cONAekHyETuDUWa42bdoE5AdB6FrPmRBAAAEEEEDgfAK+2auJEydy76sQD5NOnTrZ27YH8o/ZBK0QFzGcpwt00PL15bPPPrMeeughtoEPQ3GvuOIKue+++3Sr0YD+YAhDVzglAggggAACnhTYu3evpTvajR07lmuvwjACChUqJG+99ZbcddddAf/jNUErDAUN1ymDFbS0P7t377Z0V5bx48eHq3uePm9kZKRerCm6prhz585+3UTP02B0HgEEEEAAgTAKpKamWj/++KP9vumrr75i58Aw1aJ9+/byzjvvSLly5QIesrRLBK0wFTYcpw1m0PL1Z8aMGdaDDz4o27dvD0cXOaeIxMXF2Rto6I2Q2UCDIYEAAggggIBzBHRp4Lhx4+TTTz+V/fv3O6dhHmtJ8eLF5dVXX5UePXoEJWD5OAlaHhpYoQhayqkXcA4ZMsSehs3MzPSQsPO6WrZsWdEbTus28VWrVg3qDxPn9Z4WIYAAAgggEH6BrVu3WpMmTbKXBm7atCn8DfJ4C7p06SLvvvuuxMfHB/19EUHLQ4MtVEHLR7pgwQJLrx9au3ath5Sd29Urr7zSXlqo13MVL1486D9cnCtByxBAAAEEEAiuwMGDB60pU6aIzl4tWrRILMsK7gk5+kUFKlasaN/k+brrrgvZeyCC1kXL4p4nhDpoqVxKSor1yiuvyLBhw1h/7JChxPVcDikEzUAAAQQQcJUA1105s5wRERHSu3dvee2116RAgQIhC1mqQdBy5pgISqvCEbR8Hfn999/ta7f0rzp8OEegcOHC9vVcuoFGmzZtJF++fCH9AeQcCVqCAAIIIIBA1gV84Wrq1Kny9ddf6+UTWT8IrwiaQIMGDezNLho0aBCW9zcEraCV1nkHDmfQUo3MzExLd9fR3Qn37t3rPCCPtygmJkZatmwpunZZ7yWRP3/+sPxQ8ngZ6D4CCCCAgMMFdLXOrFmzRJcGarg6cuSIw1vsvebpH5Kfe+45efjhhyUqKips72cIWh4ae+EOWj5qvdGxDn6923lGRoaHKmBOV6Ojo+0dCzV03XrrrSGfajdHipYigAACCHhBIDk52Zo9e7YdrnQ79qNHj3qh28b1MVeuXHo/LHuZ4CWXXBK2gOWDI2gZN4Sy32CnBC1fD1auXGnf6JjlhNmvaSheeWrouvnmm3X7+LD/4ApFvzkHAggggIC3BU4NV19++aUcO3bM2yAO733dunXtP+I3btzYMe9TCFoOHzSBbJ7Tgpb2jeWEgaxw8I+VL18+ad26tT3T1bFjRylUqJBjfpgFv/ecAQEEEEDA7QJJSUnWTz/9ZM9cTZ8+XRITE93eZeP7V6hQIXn++efDvkzwXJAELeOHl/8dcGLQ8rX+wIED9r23dNvN9PR0/zvFM8Mm4Atdelf1G2+8UcqWLUvoCls1ODECCCCAQHYFtm3bZn377bcyY8YM0eWBx48fz+6heF0IBXQX5V69esmLL77oiGWCBK3/E+jTp4/k6tOnjzVmzJgQDofwn8rJQcuns27dOuvZZ5+1/5LEh1kC1atXl5tuusme8WrevLnkzp2b4GVWCWktAggg4AmBjIwMa+XKlXaw+uabb2TFihXc58qwyuvmXa+//rrUqVPH0e81mNEybGDlpLkmBC1f/2bPnm09/vjj8scff+Sky7w2TAJFixa1dzDU2S7dPr5w4cKO/kEYJiZOiwACCCAQIoHExERrzpw5drDSgLVr164QnZnTBFKgSpUq9gxW165djXhfQdAKZPUdfiyTgpZS6l+cJkyYIAMHDpTdu3c7XJfmnU9Ap/br1Kljhy6d8apfv74RPxypKAIIIICA2QKbNm2yfLNW8+fPlxMnTpjdIQ+3Xrdr1/eDjz32mOTNm9eY9xEELQ8NWtOClq80+leoESNGyKuvviopKSkeqpg7u1qxYkX75sgavK677jpukuzOMtMrBBBAIOQCaWlp1pIlS+xZK92Cfe3atSFvAycMrEDu3LmlZ8+ejr4O60I9JmgFdjw4+mimBi0f6tatW63BgwfLxIkTdbdCR1vTOP8E8ufPL9dee619XZfet+uKK66QiIgIY/5S5V8veRYCCCCAQDAEdOfiVatW2RtY6E6BOmuVlJQUjFNxzBAL6P2wOnXqJC+99JJUrVrV2PcFBK0QD5xwns70oOWz++uvv+wbHk+dOpWLV8M5oIJw7mLFitkbaWjw0lmvSpUqGfvDNQg8HBIBBBDwvEBCQoK1cOFCO1zNnDlTdu7c6XkTtwHoe4Bhw4ZJgwYNjH8PQNBy2+i8QH/cErR8XVyyZIk1aNAg0Ytb+XCnQKVKlezQ1aRJE/tz6dKljf+h685K0SsEEEAgOAL79u2z5s6dawcrDVh//fVXcE7EUcMucNVVV8nLL7+sv+9d87ueoBX2YRW6BrgtaPnkZs2aZT311FPy22+/hQ6TM4VFwBe8NHRdf/31EhcX55ofxmEB5aQIIICAwwT0hsGLFi2yg5U+dBt2LhdwWJEC3JzLL79chg4dKp07d3bd5QMErQAPFicfzq1BS811nfbkyZNFr+HasGGDk8tA2wIkkCdPHmnUqJG9jXzTpk3l6quvlvz58xO8AuTLYRBAAIFQCOiGV7qBhc5W6czV4sWL2R0wFPAOOEf58uXl+eefl+7du0tUVJQrf38TtBww0ELVBDcHLZ+h7jg0btw4++LJzZs3h4qW8zhAICoqSurVqyeNGzeWa665xl5uWKJECVf+4HYAN01AAAEEsiWwa9cu65dffrGDlX7WGav09PRsHYsXmSlQpkwZe6v2++67z/U7DxO0zByj2Wq1F4KWD0bvwTVt2jR59tlnZf369dny4kXmC5QsWdKe7dLQpZ81iLGrofl1pQcIIGCOgN7Lyheq9PPff//NRlbmlC+gLS1btqw8/vjj0qdPH4mJifHEH0IJWgEdQs4+mJeC1pmBS5cUrlu3ztkFonVBFyhYsKDoxba+4KUzX/ny5fPED/ug43ICBBDwvICuKvnjjz9OzlbNmzdP9u3b53kXrwP4Albfvn0lOjraU79zCVoeGv1eDFq+8qanp1uffvqpfcM7Zrg8NOgv0tWYmJiTwatBgwZSv359KVOmjKd+CTAaEEAAgewK7Nixw1q2bJnoQ5cB/vrrr5KSkpLdw/E6lwmUK1dOnn76abn33nslb968nvzdStBy2aC+UHe8HLRODVyfffaZfQ0Xd4z30ODPQlf1+0QDly946ef4+HhP/oLIAhtPRQABlwvoNuvLly+3Q5Xv865du1zea7qXHQHd5EIDVs+ePT0bsHxuBK3sjCBDX0PQ+v+F02u49EaHekM83eGIDwQuJKDXel155ZUnH7r0sGjRooQvhg0CCLhS4NixY9bvv/9u3zbF9+DaKleWOqCdqlmzpgwYMEDuuOMOyZMnD78jRYSgFdAh5uyDEbTOXZ8FCxZYw4cPt+8wb1mWs4tI6xwjcOpGG74Q5pWLex1TBBqCAAI5Fjhx4oSlS+o1UPl2A9QVH9y7Kse0njmA/vFRdxFs3749G06dUXWClme+DexULQkJCfyF4Tw1X7lypfXqq6/KlClT2GrWQ98Xgepq7ty5pVq1anLFFVfYj9q1a9ufueYrUMIcBwEEciqwfft2a/Xq1bJq1Sr7oV9rqEpLS8vpoXm9xwRy5colN910kx2wmjRpwnvL89SfoOWhbwyCln/F3rJli/XGG2/I+++/L8nJyf69iGchcB6BuLg40eUUNWrUkOrVq9vLD+vUqSMFChTgFxOjBgEEgiJw/Phxa8OGDfYs1V9//SV//vmnfW3Vnj17gnI+DuodAf2j4u23324HrJo1a/J77CKlJ2h553uDGa0s1nrPnj3W22+/Le+9957s3bs3i6/m6QicXyAiIkIqVap0ctbLNwNWsWJFiYyM5BcXgwcBBPwS0OuNN2/efHJ2SmeodHt1/TeW/vlFyJP8FChUqJD07t1bHn30USlbtiy/p/x0I2j5CeWGpzGjlb0qpqam2lvDjxw50v4FxgcCwRLInz//yZmvqlWrSpUqVeTyyy+XypUre37npmCZc1wETBDQGaqNGzfa94PUh15TpbNU+khKSjKhC7TRUAH9PfTII4/IPffcw0qMbNSQoJUNNFNfQtDKeeV044xRo0bJ9OnTuY4r55wcwU+BqKgo0fuR6CyYPnQJoi5F1K91FiwiIoK/LvppydMQcLLAwYMH7RkqDVC65M/3tQar9PR0JzedtrlMQDe40NmrW2+9VaKiovgdk836ErSyCWfiywhagavapk2brDFjxog+Dh06FLgDcyQEsiigyzl0xuvMAKYbc8TGxvLLMYuePB2BYAvoLn/bt28/LUxpoNJlf1xDFWx9jn8hgbx580rXrl3tLdpr1arF748ADBeCVgAQTTkEQSvwlTpy5Ij14YcfyltvvSWbNm0K/Ak4IgLZFIiMjNR19FKhQgV71ksfp36tPw+YCcsmLi9D4AICet2U3sh3y5YtJx9bt249+fWOHTskIyMDQwQcI6C/Dx588EHp27evFCtWjIAVwMoQtAKI6fRDEbSCVyH9xTpnzhx7hotlhcFz5siBE8iTJ49uPX9yOaLeF0x/RviWJ7IkMXDWHMl9Ar4lfjoTlZCQIBqs9Gt96HbpXDflvpq7sUe+5YE333wzNxgOUoEJWkGCdeJhCVqhqYrep0QD1wcffGD/AuYDARMFYmNjT86EaejSnx/6KF26tGgo09kytqg3sbK0+WICx44ds5f2aXjauXOn/dCf5b4ZKp2dIkhdTJH/71SBIkWK2Btb6OxV1apVmb0KcqEIWkEGdtLhCVqhrUZ6ero1d+5ce7fCmTNnimVZoW0AZ0MgyAL58uWzw5dvNuzMzzo7poEsT548/DIPci04vH8Cvpko3yzUmZ91Rorrbv2z5FlmCeg9HPv06SN33XUX1++GsHQErRBih/tUBK3wVWDdunWW3o/r448/5pd4+MrAmcMgkCtXLilevPjJGTENY5dcconEx8effBQrVkyvC7D/mw08wlAkg0+ZlJRk7d+/377X4b59++TAgQOi/+37N9+slH7WjSb4g5fBxabpWRbQW4bceeedcv/990u9evX4g1eWBXP+AoJWzg2NOQJBK/ylSklJsb744gvRDTR0tosbSoa/JrTAWQIxMTFStGhRO3j5Apn+t4Yw37/5/lv/LS4uTvLly8cbCGeVMVut0XsWHjly5GRQ8oUlX3DSzxqkfKFK/zslJSVb5+JFCLhZoGHDhnLvvffKbbfdpj8j+fkYxmITtMKIH+pTE7RCLX7h8+m1XBMnTrQ30NDlKnwggED2BXQZY+HChU97REdHawg769/1eWf+Pw1xLHHMvn9ycrKlS+70kZqaagcg33+f+vli/y/7LeCVCHhbQH+udenSxd49sE6dOoQrhwwHgpZDChGKZhC0QqGc9XPojoU//fSTPcv15Zdf2m9S+EAAgdAL6AYguhuj77Muu8mdO7du+qE37Dz5uWDBgqLb5+tsWkRExMnPek8zXSqpb3h8HzpDp/emOfPDd44z/913Ln96rzewPXbs2FlPPXHixDk3azh+/LgkJyfbz9cldIcPHz75WWfXdTZJtx0/evToyc++c6SlpUliYqL4PvvOceox/Wkzz0EAgcAJ6M+htm3b2rNX7du3549FgaMN2JEIWgGjdP6BCFrOr9Hhw4etzz//XMaNGye//PKL8xtMCxFAAAEEEEAgpAKXXXaZfe1Vz5499f6IzF6FVD9rJyNoZc3L6GcTtMwq3++//25NmDBBPvvsM3t7YT4QQAABBBBAwJsCui27XnPVrVs3ady4MTecN2QYELQMKVQgmknQCoRi6I+hSwsXLVokU6ZMEb2mSy8G5wMBBBBAAAEE3C2gy47btGkjd999t3Ts2FGXITN7ZVjJCVqGFSwnzSVo5UTPGa/VXQtnzZol48ePl6+++kr0Ogk+EEAAAQQQQMAdAnrdZ6NGjeyNLfSeV/Hx8YQrg0tL0DK4eFltOkErq2LOfr7eeHPGjBl26NLNNLg/jLPrResQQAABBBA4n0D16tXtcNWjRw+pVKkS4colQ4Wg5ZJC+tMNgpY/SmY+559//rGmT59uLy/UZYaELjPrSKsRQAABBLwjUKlSJTtc6dLAGjVqEK5cWHqClguLer4uEbS8UWxClzfqTC8RQAABBMwTqFixotx00012wLrmmmsIV+aVMEstJmhlicvsJxO0zK5fdlq/detWS+/NxUxXdvR4DQIIIIAAAjkXqFChgnTo0IFwlXNK445A0DKuZNlvMEEr+3ZueOWGDRusyZMny7Rp02TFihVu6BJ9QAABBBBAwJECVapUkc6dO0vXrl2lTp06zFw5skrBbxRBK/jGjjkDQcsxpQh7Q3R54ffffy+6mcYPP/wgaWlpYW8TDUAAAQQQQMBkAd+GFro0sH79+oQrk4sZoLYTtAIEacJhCFomVCn0bTxw4ICluxZq6NJlhseOHQt9IzgjAggggAAChglERkZKw4YN7SWBnTp1krJlyxKuDKthsJtL0Aq2sIOOT9ByUDEc2hS9T9fChQvt0KXLDHfv3u3QltIsBBBAAAEEQi8QExMjLVu2tMOVXndVuHBhwlXoy2DMGQlaxpQq5w0laOXc0EtHSE9Pt0PXzJkz7cdff/3lpe7TVwQQQAABBGyB8uXLS7t27aR9+/Z2yIqOjiZcMTb8EiBo+cXkjicRtNxRx3D1YsuWLdaPP/4os2fPFr2+iyWG4aoE50UAAQQQCKaALgmsU6eOHaz0eqt69epJREQE4SqY6C49NkHLpYU9V7cIWh4qdpC7mpycbP3yyy926NLrutatWxfkM3J4BBBAAAEEgicQHx8vLVq0OBmuihQpQrAKHrdnjkzQ8kypRQhaHip2iLu6Zs0a69tvv5XvvvtOFi1aJMePHw9xCzgdAggggAAC/gvorNWVV14pbdu2tZcF1q9fXyIjIwlX/hPyTD8ECFp+ILnlKQQtt1TS2f04dbZLZ7z0nl2WZTm70bQOAQQQQMD1ApUqVZLWrVvbj1atWknRokUJVq6veng7SNAKr39Iz07QCik3J/ufwJ49e6yff/7ZXmaoM17bt2/HBgEEEEAAgaAL5M+f395+3ReuuLdV0Mk5wRkCBC0PDQmCloeK7eCurl692po1a5boY/78+ZKUlOTg1tI0BBBAAAFTBPLkySONGjWyg1WbNm3s5YBRUVHMWplSQBe2k6DlwqKer0sELQ8V25Cu6hbyv//+uz3bpVvJL1iwQI4cOWJI62kmAggggEA4BaKioqR27dp2sGrSpIk0a9ZM4uLiCFbhLArnPk2AoOWhAUHQ8lCxDe0qwcvQwtFsBBBAIAQCBKsQIHOKgAoQtALK6eyDEbScXR9ad7bAiRMnrGXLlole4zVv3jzRLeVZashIQQABBLwhoEsBr7rqKmnevLn90GWBsbGxzFh5o/yu6CVByxVl9K8TBC3/nHiWcwV0xmvt2rV24NKlhvrYsmWLcxtMyxBAAAEE/BYoWLCgHax0GWDTpk3tzzExMQQrvwV5otMECFpOq0gQ20PQCiIuhw6bwM6dO+2bJ2vo+u233+TXX3+VtLS0sLWHEyOAAAII+Ceg261rmNL7WWmwqlevnkRERBCs/OPjWQYIELQMKFKgmkjQCpQkx3GywJEjR6wlS5bYN07WAKZLD9lgw8kVo20IIOAFgZiYGDtQNW7c2A5XugywWLFihCovFN/DfSRoeaj4BC0PFZuuniZw5qyXznylpqaihAACCCAQBIHIyEipWrWqHax8jwYNGki+fPkIVkHw5pDOFSBoObc2AW8ZQSvgpBzQUIG0tDRr3bp19lJD37JDvfYrMzPT0B7RbAQQQCB8AiVLljwtVOkywCJFihCqwlcSzuwQAYKWQwoRimYQtEKhzDlMFTh06JCl13ctX75cVq5cKStWrLA32rAsy9Qu0W4EEEAg4AJlypSROnXq2NdT6Q2BdfOKEiVKEKoCLh2aA2ZkZFirV6+2l9nrHyDXr18vu3btsnf49a38iIuL090epWLFinL55ZdLtWrV7OWfxYsXp+4XKRNBKzTj2BFnIWg5ogw0wiABvd5r1apV9szXX3/9JX/++acdxI4fP25QL2gqAgggkD2BM2eqdPlfyZIleXOdPU7HvColJcWaMWOGTJ48WebOnSsHDhzIctty5colNWrUkLZt28pdd92lN45mXJxDkaCV5aFl7gsIWubWjpY7R0B/Qelf/3TGS2e+9LFmzRpJTk52TiNpCQIIIJAFAb1fVfXq1aVu3bonH7Vr15aCBQvy5jkLjk5/6tatW63XXntNxo8fL4cPHw5oc3W8PProo3boypMnD+Pmf7oErYAOM2cfjKDl7PrQOrMFdMONU2e+dAZMAxizX2bXldYj4DYBnaXSmQgNVrpRhX6tj+joaN4cu63Y/+vPjh07rMGDB8uECROCfvuTcuXKyTPPPCO9e/eWyMhIz48pgpZLv6nO1S2CloeKTVcdIXDixAlL17v7lh36ghjXfjmiPDQCAVcLFC5c2A5Tp4YqvbaqQIECnn/z6+rCn9I53fjp7bffliFDhsjRo0dD2m2dHX3nnXd0G39PjzeCVkiHXXhPRtAKrz9nR8AncPDgQUvDl+50qBcf//333/bXGsAyMjKAQgABBPwS0Otkypcvb2+lrpsU6EO/rlmzplxyySWefoPrF6CLn7Rt2zbrjjvusHfWDdeHbvP/7LPPis6mRUVFeXI8ErTCNfrCcF6CVhjQOSUCWRDQGbDt27fbm25oENu8ebP9tV4TFuq/Rmah2TwVAQSCLKDXUOluf74ZqkqVKtlfM0MVZHhDDz9z5kyre/fucvDgQUf0oHXr1jJp0iSJj4/3XNgiaDliCIamEQSt0DhzFgSCIaB/ndRliJs2bZKNGzee9lm34eUDAQTMFsibN69ogLr00kvtR+XKle3PVapUsWetuN7F7PqGqvXjxo2zevXqFfRrsbLaH90S/vvvv9ex7KmwRdDK6kgx+PkELYOLR9MRuICALkXU2a9THzoTpo9A7yxFIRBAIPsCGqZKly5tB6pTZ6f0vzVMeXV5VfZFeeWpAm+88YbVv39/x97/sWzZsvZ28pdeeqlnwhZBy0PfowQtDxWbriLwP4H9+/dbW7dulX/++efkw/ff27Ztc8zSEgqGgBsEChYsKLrrWoUKFezg5Hvov+nNXrmxrxuq7Mw+jB8/3rr77rsdG7J8avpHhYULF0qpUqU8EbYIWs78fmzClHAAACAASURBVAlKqwhaQWHloAgYLXD06FFLQ9ipYUwDmF4rpo/du3c7bgmK0eA03lgBvbC/ePHi9rVS+pd5X6DSUKVfa6gqUqSIJ948GltElzb8+++/t9q3by/p6elG9FB3JNSwFRsb6/rvF4KWEUMyMI0kaAXGkaMg4DUBXZqYkJAgu3btEt9nXaZ46r9pILMsy2s09NclAvny5dO/sIveY+rUz/rXd9+/aZjKnTu3698YuqSknumG3iNLN0XZv3+/UX3W68g++OAD138/EbSMGpY5ayxBK2d+vBoBBM4vkJSUZO+YuGfPHnsWTD/v27fv5H/7vtZ/Z/MORlIoBKKjo3WLczsoFStWzH7o1/pvvq99M1QFCxZ0/Ru+UJhzjtAKZGRkWC1atJD58+eH9sQBOpveQPmuu+5y9fceQStAg8WEwxC0TKgSbUTA/QKJiYmWBq5Tw5gGsQMHDtjXjOnD97XvsylLYtxfvfD0UJftFSlSRIoWLWp/PvVr/bf4+Hi9/skOUBqk9GtuzBueWnHW0Am888471oMPPhi6Ewb4TPp9rPeSLFasmGvDFkErwIPGyYcjaDm5OrQNAQQuJHDkyBFLQ5fv4QtjR44cse8xprsr6tfHjh2z/1sf+rXv3zMzMwEOo4DeWLdQoUISFxenAUh00wh96Nen/rt+fWaY0v8uXLiwa9+IhbEsnNpgAd3oSG9OrT8TTf7o06ePjBkzxrXf3wQtk0dnFttO0MoiGE9HAAHXCBw7dszyhS/9rKFMlzCeOHHCDmP6OTEx8eS/HTp0yN4E5Mx/0+f5lj4mJyfL8ePHbSMNdabOukVFRdmBRz90+/GYmBj769jYWNEb5RYuXNj+rP99rn/Lnz+/Xrt02vPOEahc+0bKNd8kdMQogX79+lmjRo0yqs3namxERISsWbNGb3fgyp8RBC3jh6j/HSBo+W/FMxFAAIHsCujmIfrajIwMe2ZNPzSQaTA710dqaqqkpKSc93S+2Th9Q3K+D70eSTd0ONeHBicNUPqhgUqDlX6wQ152K8zrEAivwJ49eyy9XcD5fqaEt3VZP3v37t1l/PjxBK2s0znyFTpLmatPnz7WmDFjHNnAYDWKoBUsWY6LAAIIIIAAAgiERuCZZ56xXnrppdCcLARn0T/+bNy4Ue8/57qwxYxWCAaQU05B0HJKJWgHAggggAACCCCQdQHdaVDv2bZjx46sv9jBrxg6dKgMGTKEoOXgGvnbNGa0/JXieQgggAACCCCAAAKOEfjhhx+s66+/3jHtCVRDLr30Ulm/fr1ERES4KmwxoxWoEWLAcZjRMqBINBEBBBBAAAEEEDiPgJsvffn999+lTp06BC3DRz8zWoYXkOYjgAACCCCAAAJeFKhcubK1adMmV3b99ddfl/79+xO0DK8uQcvwAtJ8BBBAAAEEEEDAawLbtm2zypUr59put2/fXr755huCluEVJmgZXkCajwACCCCAAAIIeE3gyy+/tG6++WbXdtuNl7hwjZZrh+vZHXPjAPZQ+egqAggggAACCHhYYPjw4dbAgQNdLaA3k4+Li3PNrBZBy9XD9fTOEbQ8VGy6igACCCCAAAKuEujVq5f1wQcfuKpPZ3Zm2bJl0qBBA4KWwVVm6aDBxaPpCCCAAAIIIICAFwU6dOhgff31167u+nfffSdt27YlaBlcZYKWwcWj6QgggAACCCCAgBcFWrRoYc2dO9fVXZ88ebJ07dqVoGVwlQlaBhePpiOAAAIIIIAAAl4UuPrqq62lS5e6uuu6NLJXr14ELYOrTNAyuHg0HQEEEEAAAQQQ8KJA06ZNrYULF7q66xMnTpRu3boRtAyuMkHL4OLRdAQQQAABBBBAwIsCbdu2tfQaJjd/6DVoHTp0IGgZXGSClsHFo+kIIIAAAggggIAXBW6//XZr0qRJru76zz//LM2aNSNoGVxlgpbBxaPpCCCAAAIIIICAFwUGDRpkvfzyy67u+vbt26Vs2bIELYOrTNAyuHg0HQEEEEAAAQQQ8KLAJ598YvXo0cO1XY+NjZVjx45JREQEQcvgKhO0DC4eTUcAAQQQQAABBLwosHz5cqt+/fqu7XqDBg1k2bJlrglZWqhSpUpZCQkJrq3ZuTpG0PJUueksAggggAACCCBgvkB6eroVHx8vhw8fNr8z5+jBgAEDZMSIEQQtw6tL0DK8gDQfAQQQQAABBBDwokD79u2tb775xpVd1x0V27ZtS9AyvLqeDVpxcXGiFxkWLFjQVYPY8PFI8xFAAAEEEEAAAb8E3n33XeuBBx7w67kmPSl//vyyZ88eiY2Ndc171KNHj1ply5aVI0eOmFSKHLfVs0FL5Tp27CjTp0931YWGOR4RHAABBBBAAAEEEDBA4MCBA1apUqXk+PHjBrTW/ybefffdMm7cONeErMzMTOu2226TKVOm+I/gkmd6OmhpDV9//XXp37+/awazS8Yl3UAAAQQQQAABBC4qcOutt1pffPHFRZ9n0hNmzZolbdq0cc170xEjRlh6zZkXPzwftKKiomTOnDly7bXXumZAe3Eg02cEEEAAAQQQ8J7AokWLrMaNG7um4zVq1JBVq1ZJZGSkK96Xan2aNWsmaWlprqlRVjri+aClWCVKlJDffvtNSpcu7YpBnZUBwHMRQAABBBBAAAGTBa699lpr/vz5JnfhZNs///xzue2221zxfnT37t1WvXr1xGtbup86EAla/9PQv4bozFa+fPlcMbhd8dOGTiCAAAIIIIAAAhcRmDdvntWiRQuxLMtoq1q1asmKFSskKirK+PeiKSkpVsuWLWXx4sVG1ySnjSdonSLYtWtXmTRpEptj5HRU8XoEEEAAAQQQQCCEAt26dbMmTpwYwjMG9lS5cuWSuXPnSvPmzY0PWbr5Rffu3cXkegSqugStMyRfeOEFGTx4sPGDPFADhOMggAACCCCAAAJOF9i1a5dVvXp1OXTokNObes723XvvvfLhhx+64v3nc889Z/373/82sg6BbjRB6wxR/YuCJvA777zTFYM90AOG4yGAAAIIIIAAAk4UmDFjhtWhQwfjlhBeeuml9l4BcXFxxr/3nDx5sr2Vu+nLOAM1vgla55CMjo6Wn376SRo3bmz8gA/UQOE4CCCAAAIIIICA0wUeffRRa+TIkU5v5sn26XtOvY6pTp06xr/nXLhwodW6dWtJTU01xj/YDSVonUc4Li5Ofv75Z1cM/GAPIo6PAAIIIIAAAgg4QSA9Pd3q0qWLTJ8+3QnNuWAbIiMj7b0BunTpYnzIWr16tb2N+8GDBx3vHsoGErQuoK13G//ll1+kYsWKxn8DhHJQcS4EEEAAAQQQQCBcAklJSVabNm1k0aJF4WqCX+d977335P777zf+Pea2bdusJk2ayPbt2/3qt5eeRNC6SLV13ezChQv1XlvGfyN4aWDTVwQQQAABBBDwrsCxY8esTp06yY8//ug4BJ3Jevvtt10Rsvbu3Wtdc801sm7dOsc5O6FBBC0/qnDllVfa99hyw0WKfnSXpyCAAAIIIIAAAsYLpKamWj169BC9CbBTPmJiYuTTTz+Vm2++2fg/4B8+fNi+f9nKlSudwuu4dhC0/CyJ3tD4+++/l4IFCxr/jeFnl3kaAggggAACCCBgvMDo0aOtRx55RE6cOBHWvlx++eUyefJkqVWrlvHvJRMTE6127drJ/Pnzw2rq9JMTtLJQIcJWFrB4KgIIIIAAAggg4BCBX3/91erdu7esWrUq5C3SpYL333+/vPrqqxIbG+uKkHXjjTfam8bxcWEBglYWR4he7KczWwUKFDD+GyWLXefpCCCAAAIIIICAsQJpaWnWm2++KXoz3SNHjoSkHw0bNpS33npL6tev74r3jbrRiIasefPmhcTP9JMQtLJRwaZNm8p3331H2MqGHS9BAAEEEEAAAQTCKXD06FHrww8/lFdeeUV2794dlKboKqinnnpK2rdvLxEREa4JWdqfuXPnBsXMjQclaGWzqs2bN5evv/6aa7ay6cfLEEAAAQQQQACBcAro7Izeb2v8+PEye/ZsycjIyFFzihUrJnfccYfcddddctVVV7kiXPlAjhw5Yt10001ck5XFEULQyiLYqU/X3Qh1GWGxYsVc9c2UAxJeigACCCCAAAIIGCdw4MABS5fD6WzNr7/+KuvXr5fDhw+ftx8RERFSrlw5qVatmlx77bWiu+/Vr19foqKiXPeeUG1044ulS5caV9dwN5iglcMK6DeY3qOhbNmyrvvGyiENL0cAAQQQQAABBIwV2L17t6VLCxMTEyU5OVly5cqlt/rRS0ekfPnyEhMT4/r3fgkJCdb1118vq1evNraO4Ww4QSsA+hUqVJBZs2bJZZdd5vpvuABwcQgEEEAAAQQQQAABhwts3rzZatOmjWzatMnhLXVu8whaAapNqVKl7A0yateuTdgKkCmHQQABBBBAAAEEEAi9wIoVK+zlgsHaLCT0PQrPGQlaAXTPnz+/fSO6du3aEbYC6MqhEEAAAQQQQAABBEIj8OOPP1qdO3eWo0ePhuaELj4LQSvAxY2KipK3335b+vbtS9gKsC2HQwABBBBAAAEEEAiewIcffmj17dtX0tLSgncSDx2ZoBWkYg8cOFCGDRvmmnsnBImJwyKAAAIIIIAAAgiEWSAzM9PSGznrg4/ACRC0Amd51pHuueceGT16tOTNm5fZrSA6c2gEEEAAAQQQQACB7AmkpqZavXv3lgkTJmTvALzqvAIErSAPjiZNmsi0adOkRIkShK0gW3N4BBBAAAEEEEAAAf8F9u3bZ1+P9fPPP/v/Ip7ptwBBy2+q7D+xTJkyonceb9CgAWEr+4y8EgEEEEAAAQQQQCBAAitXrrRuvvlm+eeffwJ0RA5zpgBBK0RjIl++fDJ27Fjp3r07YStE5pwGAQQQQAABBBBA4GyBzz//3OrZs6d9I2Y+gidA0Aqe7VlH1juKP/nkk/Lyyy9LZGQkgSuE9pwKAQQQQAABBBDwuoBv04uhQ4eKZVle5wh6/wlaQSc++wQ33nijjBs3TooWLUrYCoM/p0QAAQQQQAABBLwmsH//fqt79+7y3Xffea3rYesvQStM9GXLlrVvbtyoUSPCVphqwGkRQAABBBBAAAEvCCxfvtzq0qWLbNmyxQvddUwfCVphLEXevHll+PDh8q9//YuwFcY6cGoEEEAAAQQQQMCtAqNHj7YeeeQROXHihFu76Nh+EbQcUJo777zTvt9WgQIFCFwOqAdNQAABBBBAAAEETBc4duyYdd9998mkSZNM74qx7SdoOaR01apVk08//VTq1q1L2HJITWgGAggggAACCCBgosCKFSss/UP+2rVrTWy+a9pM0HJQKXPnzi2DBg2SIUOGsCuhg+pCUxBAAAEEEEAAARMEdFfBUaNGycCBA+X48eMmNNnVbSRoObC8rVu3lk8++URKly7N7JYD60OTEEAAAQQQQAABpwns2bPHvjfWt99+67SmebY9BC2Hlr5YsWLy4Ycfyk033UTYcmiNaBYCCCCAAAIIIOAEgR9++MHq0aOH7N692wnNoQ3/EyBoOXgo6A2OH3roIXtnwtjYWAKXg2tF0xBAAAEEEEAAgVAL6IYXTz75pLz33nvcgDjU+H6cj6DlB1K4n1KxYkX56KOPpHnz5oStcBeD8yOAAAIIIIAAAg4Q+OWXX6x77rlHNmzY4IDW0IRzCRC0DBkXOrulW3S+8cYbzG4ZUjOaiQACCCCAAAIIBFogJSXFev755+U///mPZGRkBPrwHC+AAgStAGKG4lDVq1eXjz/+WK666ipmt0IBzjkQQAABBBBAAAGHCCxdutS+Fott2x1SkIs0g6BlRp1Oa2VUVJToetzBgwdLdHQ0gcvAGtJkBBBAAAEEEEDAX4Hk5GTr3//+t7z22muSnp7u78t4XpgFCFphLkBOTl+5cmUZPXq0tG7dmrCVE0heiwACCCCAAAIIOFRg/vz5lr5hZxbLoQW6QLMIWubV7LQW67Vbd911l33tVnx8PIHL8HrSfAQQQAABBBBAQAUOHTpk6Y2Hx44dy46Chg4JgpahhTuz2SVKlLC3ge/RowdhyyU1pRsIIIAAAggg4E2Br7/+2nrggQdk586d3gRwSa8JWi4ppK8bHTp0kJEjR0rFihUJXC6rLd1BAAEEEEAAAXcLbNq0yerXr5/MnDnT3R31SO8IWi4sdHR0tL1ZxlNPPcVmGS6sL11CAAEEEEAAAXcJHD9+3Hr33XflmWeekaSkJHd1zsO9IWi5uPi6WcaoUaPkxhtvZHbLxXWmawgggAACCCBgrsDs2bOthx9+mM0uzC3heVtO0HJhUc/sUvv27eXNN99kOaEHak0XEUAAAQQQQMAMgR07dlhPP/20jB8/3owG08osCxC0skxm5gtiYmJEd6554oknJDY2lhkuM8tIqxFAAAEEEEDAcIGkpCRrxIgR8uqrr0pycrLhvaH5FxIgaHlsfJQuXVqGDBkivXv3lsjISAKXx+pPdxFAAAEEEEAgPAKZmZnW1KlT7evot27dGp5GcNaQChC0QsrtnJPVr1/fvvfWNddcQ9hyTlloCQIIIIAAAgi4UGDp0qXWY489JosWLXJh7+jS+QQIWh4fG3r9lm6YUalSJQKXx8cC3UcAAQQQQACBwAps377dGjRokEyYMIGbDgeW1oijEbSMKFNwG6nbwetuN3pBZpEiRQhcweXm6AgggAACCCDgcoH9+/dbw4YNk7fffltSU1Nd3lu6x4wWY+CiAgUKFJD+/fvbm2bExMQQuC4qxhMQQAABBBBAAIH/L6AbXehOz6+88oocPnwYGo8LMKPl8QFwru77Nsy49957JXfu3AQuxggCCCCAAAIIIHABgYyMDGvatGkyYMAA+eeff7BCwBYgaDEQzitQrVo1efnll6Vjx44SERFB4GKsIIAAAggggAACpwjoToLTp0+XZ555hhsOMzLOEiBoMSguKlCrVi159tlnpXPnzgSui2rxBAQQQAABBBDwgsCsWbPsGw4vX77cC92lj9kQIGhlA82rL7n66qvtv9h06NCB2S2vDgL6jQACCCCAgMcFNGDp+6Fff/3V4xJ0/2ICBK2LCfH/zxJo1KiRvUMhgYvBgQACCCCAAAJeEViwYIE1ePBgmTdvnle6TD9zKODZoBUfHy/NmzcXvUM3H9kTaNasmQwZMkRatWrFDFf2CHkVAggggAACCDhcQGewhg4dKgsWLHB4S53bPL38RAPq/v37ndvIILTMs0GrVKlSsmPHDvtmvbpDTFpaWhB4vXHIunXr2jNcXMPljXrTSwQQQAABBLwgoAFLZ7CWLFnihe4GpY+RkZH2df7PPfeclClTRhISEoJyHqce1NNBKyEhwZ6JmTdvnnXbbbfJnj17nFonI9p1xRVXyBNPPCF33nkn28IbUTEaiQACCCCAAAKnCug27TNnzhSdwWKTi5yNjaJFi8pnn30m1113nf1+u1SpUhZBK2emxrxaZ7R8QUsbvX37dktnZJYuXWpMH5za0EqVKkm/fv3k/vvvl3z58rGs0KmFol0IIIAAAgggYAucOHHC0lAwbNgwtmkPwJjQ1U56X7FKlSqdfB9I0AoArCmHODNoabtTUlKsBx98UD766CNTuuHodpYrV04eeeQRue+++6RQoUIELkdXi8YhgAACCCDgPYHDhw9bY8eOlTfffFO2bdvmPYAg9Piee+6Rd999V6Kjo09770fQCgK2Uw95rqDla+u7775r/etf/5Ljx487tflGtatAgQJy7733yqOPPnraXzaM6gSNRQABBBBAAAHXCGzevNkaOXKkfPjhh3Ls2DHX9CucHcmTJ4+88cYb8tBDD53zj+sErXBWJ8TnvlDQ0qb89ttv1u233y4bNmwIccvce7qIiAhp166dHbjatGnDDJd7S03PEEAAAQQQcKTA8uXL7YClywTT09Md2UYTG1W+fHmZNGmSNGrU6Lzv7whaJlY2m22+WNDSwx49etReSjhhwoRsnoWXnU+gXr16duBi4wzGCAIIIIAAAggEU8C3wcUrr7wiixYtCuapPHnsTp06yfvvvy+FCxe+4B/RCVoeGh7+BC0fxyeffGI99NBDkpiY6CGh0HS1ZMmSoltfaugqUqQIs1yhYecsCCCAAAIIuF5A/2CuSwN1Ods///zj+v6GuoP58uUTDa//+te//Hr/RtAKdYXCeL6sBC1t5tq1a+0t4P/4448wttq9p9bruO644w55/PHHpWrVqn59w7pXg54hgAACCCCAQHYFtmzZYr333nsyZswYOXToUHYPw+suIFCtWjX5/PPPpVatWn6/ZyNoeWhIZTVoKU1ycrLVv39/0W9ePoIjoDe2u+WWW+SBBx6QFi1aSEREhN/fwMFpEUdFAAEEEEAAAacLZGZmWnPmzLHfo02fPl0yMjKc3mRj26crkf773/9KTExMlt6jEbSMLXnWG56doOU7y9SpUy29R9T+/fuzfmJe4bdAlSpV7GWFPXr0kGLFimXpm9nvk/BEBBBAAAEEEDBWYN++fdbHH39sz16xgVlwy1ikSBE7yHbt2jVb78kIWsGtj6OOnpOgpR3Zs2ePpSHgq6++clS/3NgY3S60Y8eOduhq1aoVs1xuLDJ9QgABBBBAIAsCunughqvx48frfVCz8Eqemh2B6667zt4Kv0yZMtkKWXpOglZ25A19TU6Dlq/bulHGww8/zD0YQjQOdJZL78nVq1cvZrlCZM5pEEAAAQQQcIKA3lxYrwt66623ZPXq1U5okuvbEB0dLcOGDZN+/frl+A/dBC3XD5f/38FABS09ol502bNnT5k3b56HBMPb1bx580qHDh2Y5QpvGTg7AggggAACQRfwzV7p7XaSk5ODfj5O8H8CDRs2lE8++SRgm5QRtDw0sgIZtJRNL8IcNWqUDBw4UI4fP+4hyfB39fLLL5d77rlHevfuLfHx8dme0g5/T2gBAggggAACCKjAkSNHLL0B7jvvvMOOzyEeErlz55ZBgwbJ4MGDJSoqKmDvqwhaIS5kOE8X6KDl68vq1autu+++W1auXBnO7nny3DExMdKlSxdR/+bNm0tkZGTAfjh4EpROI4AAAgggEEIBvbHw3LlzZdy4cTJ16lRmr0Jo7ztVrVq1bP86deoE/D0UQSsMBQ3XKYMVtLQ/aWlp1ttvvy3PPPOMJCUlhauLnj5v6dKlRe9UrjNd9erVC/gPC0/j0nkEEEAAAQQCKPDXX3/Z117pG/wtW7YE8Mgcyl8BncXSWxgNHTpU8ubNG5T3TQQtf6vhgucFM2j5eDZu3Gj17dtXfvrpJxeImduF6tWr27Ncuk18yZIlg/LDw1wdWo4AAggggEDoBQ4cOGDprJWGq19++SX0DeCMJwUaN24sY8eOlRo1agT1PRJBy0ODLhRBSzn12i3devSxxx6TgwcPekjYeV3VmyHrTZC7d+9uz3blz58/qD9QnCdAixBAAAEEEAifQEpKijVr1ix7S/Yvv/xSVwCFrzGcWW84LEOGDJEnnngioNdinY+WoOWhQReqoOUj3bVrl/XII4/Ya475CL9AwYIF7Xtz6TVd7dq1C8kPmPD3mhYggAACCCAQWgG97mrRokV2uNLNLY4ePRraBnC2cwq0bdvWvvlw+fLlQ/ZHZ4KWhwZjqIOWj3bKlCl24Nq9e7eHtJ3d1XLlysldd91lP6pXrx6yHzjOVqF1CCCAAAIIZF/gzz//tHQ7dn1s3749+wfilQEVKFasmPz3v/+Vbt26hfz9DkEroKV09sHCFbRU5dChQ5Zumfnuu+9KRkaGs6E81rqaNWtK586d7UfNmjVD/kPIY9x0FwEEEEDARQK687Ku3NHHn3/+6aKemd+ViIgI+zY4L7/8cthuhUPQMn8c+d2DcAYtXyNXrlxpPfTQQ6JT6nw4T6BSpUrSvn17e3nhNddcQ+hyXoloEQIIIIBAmAXWrFljTZkyRSZPnix///13mFvD6c8lULduXdHdsBs3bhzW9zIELQ+NTycELeX2bZYxYMAA2bt3r4cqYFZXK1SoIB06dLBDV5MmTSQiIiKsP6zM0qO1CCCAAAJuEvCFK92Sfe3atW7qmqv6UrhwYXnuuefk4YcfdsS16AQtVw2vC3fGKUHL10pdTqjfDPoXB5YTOnsgli9f/uRGGoQuZ9eK1iGAAAIIBEbAF64+++wzWb9+fWAOylGCIpArVy77uvP//Oc/Urx4ccf8YZigFZRyO/OgTgtaPqUVK1bYywkXL17sTDhadZpA2bJl5ZZbbmGmi3GBAAIIIOA6AV+4mjhxomzcuNF1/XNjh+rUqWP/0b5JkyaOCVg+Z4KWG0fcefrk1KClzdWtUD/55BN59tlnJSEhwUNVMburpUuXtreKv/HGG6V169bcp8vsctJ6BBBAwHMCiYmJ1uzZs2XmzJn2g/cg5gyB4sWLy9ChQ6VXr16OWCZ4LjmCljnjKcctdXLQ8nUuKSnJevPNN+Wll16SY8eO5bjPHCB0Avny5ZOmTZvagUvv11WtWjXH/WUpdBqcCQEEEEDAqQJbtmyxfvzxR5kxY4ZoyEpNTXVqU2nXOQTy5Mkj999/vx2yChUq5Oj3GgQtDw1hE4KWrxw7duyw9Bvo/fff180zPFQl93TVt4PhTTfdJM2aNZM8efI4+oehe+TpCQIIIIDAqQLp6enW77//bgerb775Rn777TeADBXQnZFHjhwplStXNuI9BUHL0IGWnWabFLR8/Vu+fLnVv39/mT9/fna6zGscIqC7AOlMlz50J8OSJUsa8QPSIXw0AwEEEEAgiwL79++35syZczJcHTp0KItH4OlOErjyyivljTfekGuvvdao9w8ELSeNoiC3xcSg5SOZMmWKNXDgQNm8eXOQlTh8sAUiIyOlUaNG9nVden1X7dq1jfqhGWwfjo8AAgggkHUBvXXMqlWr5Ntvv7WvtVqyZAk7XaX02QAAIABJREFUGmed0XGv0A249IbD3bp1M/I2MwQtxw2p4DXI5KClKqmpqdZ7771nX7+1b9++4EFx5JAKlChRQlq1anXyUb58eYJXSCvAyRBAAAEzBbZu3Wr99NNP4nvs2bPHzI7Q6rMEdCXMk08+Kf369ZPY2Fhj3xcQtDw0uE0PWr5S6Q5Bb731lgwbNkyOHDnioQp6o6t6bZdvmWHLli0lPj7e2B+w3qgYvUQAAQRCI3D06FFr6dKl9gYW+uBaq9C4h/IsMTEx8sgjj4iuYipSpIjxv/8JWqEcPWE+l1uClo9R11+PGDFCRo0aJSkpKWHW5fTBEIiIiJC6devqvTHsHQ1vuOEGKViwoPE/eINhxTERQAABtwkkJydbv/zyix2qFi5cKBqy0tPT3dZN+iMiuXPnlp49e8pzzz0npUuXds3veYKWh4a324KWr3Tbt2+3XnjhBfnwww/5Aezy8RwVFaXXdJ2c8WI3Q5cXnO4hgICnBHy7A/pmrDRcsfW6u4dArly5pHPnzvZlIVWqVHFNwPJVjaDl7vF7Wu/cGrR8nfz777+twYMHy7Rp08SyLA9V1rtdLVSokO5AZM926axX/fr1JW/evK77Qe3dCtNzBBBws8Dx48et5cuX27NV+tAdhrkkwM0VP71vuimWBqw6deq49vc2Qcs741ncHrR8pVy1apW9pHDixIncg8tD41u7qksPatWqdXKpIdd4eWwA0F0EEHC0gO8aKw1VuiRQHyz9d3TJgtI4/cPoiy++KC1atHBtwGJGq08fa8yYMUEZQE49qFeCls9/9erV1quvviqffvopW7w6dVCGoF26uYbvGi/9XLNmTdf/YA8BK6dAAAEELiqwc+dO+xorX7BauXIlfwC9qJp7n6AbXemlHo0aNfLM72FmtNw7ns/qmdeClg9gzZo11vDhwwlcHhrrF+pqyZIlTy411CWHutlGZGSkZ37oMwwQQACBYAhkZGRYf//9tz1L5VsKuGXLlmCcimMaJqABS2ewGjZs6LnftQQtwwZrTprr1aB16gyX/iVl6tSp/EUtJwPJZa+Ni4uzb6DcoEED+6HXeZUqVcpzvwxcVla6gwACQRbQ2Sq9vmrZsmWinxcvXsz1VUE2N+3weg2W7iJ41VVXefZ3KkHLtFGbg/Z6PWidOsOlF19OnjyZJYU5GE9ufmmZMmXswOULXvrZDffzcHPN6BsCCARP4MCBA6eFKg1XO3fuDN4JObKxArqLYPv27WXIkCH6O/T/tXcf4FEV3f/ATyopJIQSeighFOlVkCIdBSlSpQpIB6lSLKAg6E9ARJAmAlIEpKl0pQi8AoL03lsIISSQkIQU0ub/P+N7eUPfbO7u3vLd59lnQ9g7d+ZzZpM5mblzTZtgKQFEoqXbrpzxiiPRetzs2rVrYvr06bRgwQKKj4/POCiOMJUALzmsUqXKoycvO0TyZaougMZCwBQCsbGx4vjx4/JmwMqTlwRiN19ThN/qRvJmVB07dqTRo0dTuXLlTJ9gIdHCZhhWf5iMduCdO3fEjBkzaO7cuRQVFWW05qE9NhJwcXGhUqVKPTbrxTseenp64heMjcxRLAQgoK4A3xD41KlTj5b/8UzV+fPnsdpDXWZDl+bt7U29e/emESNGUOHChfH774loY0bL0N3/8cZhRuvFwea/4i1cuJCmTZtGN2/eNFHPQFPVEuDkq3DhwlS6dGk581WmTBn59SuvvIINN9RCRjkQgIBVAnxN1dmzZ+nMmTNypoq/5iQrKSnJqvJwkLkFcuXKRYMGDaLBgwdTrly5kGA9pzsg0TLR5wSJlmXB5hso/vzzz8Q7FfIvIjwgkFkBHx8fvuP9YwlYxYoVyd/fH7+cMouL4yEAgccEoqOjxaVLlx5LqHgp4N27dyEFgUwL8B8Thw8fTn369CFvb2/8DnuJKBKtTHc5/RSARCtjseKtajdt2kTffvst7dq1K2MH490QsECgSJEi8gbLZcuWpQoVKvC6dipevDjfeBm/vCzww1sgYGaB5ORkmVDxrNSJEyfkKz+vX79uZha03UYCr776qkyw2rVrh99RGTBGopUBLL2/FYmW9RE8ceKEvI6Lb36cmJhofUE4EgIvEciSJQuVLFlSPnkWjK8DU/6dLVs2JGDoQRAwmcD9+/fFxYsX6cKFC/L6KX5V/v3w4UOTaaC59hRwdXWlNm3a0LBhw6hmzZr4/WMFPhItK9D0eggSrcxHLjw8XCxatIhmzZpFISEhmS8QJUAgAwLZs2enwMBAuQSRr/9SvuZkzNXVFb8EM2CJt0JAawLKNVRXr16Vy/546Tp/zTf9xY5/WouWsevD95fs3r273OCiSJEi+N2SiXAj0coEnt4ORaKlXsT4Oq5Vq1YRz3LxRcV4QMCRAjwLxksOlZkvfuXkq1ixYrhI2ZGBwbkh8ITA3bt3xeXLlx/NTikzU7wEELNT6C6OFuDfG0OHDqVu3bpR1qxZkWCpEBAkWiog6qUIJFq2idR//vMfMXPmTFq/fj0lJyfb5iQoFQJWCvj6+vJfJKlo0aKPXvlr5d++vr74ZWqlLQ6DwJMCMTExgmeg+DopflWeyr9jY2OBBgFNCTg7O9Mbb7xBQ4YMka/Ozs74naBihJBoqYip9aKQaNk2Qrdv3xZLliyhefPm4WJk21KjdBUFlOWIfENm/hnByxGVJ8+M+fj44Jeuit4oSt8CvJqBl43zkj7lGRoaSrdv38YyP32H1nS19/Pzo3fffVfOYBUrVgw/523UA5Bo2QhWi8Ui0bJPVFJSUuRuhZxwbdu2jdLS0uxzYpwFAioLODk5ESdgPPvFPz/4WbBgQcqbNy8FBATI/+N/Y4tfleFRnEME4uLiBN9DMSwsTN5LkZOnW7duESdS/MqzU/w9PCCgZ4E6depQ//79qW3btuTh4YEEy8bBRKJlY2AtFY9Ey/7RuHnzpliwYAHNmTOHIiIi7F8BnBECdhDw8PCQSZgyK5Z+dkz5mhMzd3d3/FK3QzxwiqcFIiMjRfqZJ+Xr9K+cYGHTCfQeIwrwvRw7depEAwcOpIoVK+LnsB2DjETLjtiOPhUSLcdFIDExUaxdu1bOcu3du9dxFcGZIeAgARcXF8qTJ4+cDcudOzdv0vHo6e/vzzdvfux7OXPmJBcXFwwIHBQvLZ+W73HIN9+9d++evAkvP/kPWfxU/s2v4eHhcgbqzp07WFmg5YCibjYTqFSpkpy96ty5M5aB20z5xQUj0XIQvCNOi0TLEepPn/PcuXPixx9/pKVLl8olKnhAAAJPC/CyxfTJGCdenIwpSRr/m/+ftyHmDT/4yV/7+fkhOdNRh4qKihIxMTGkPKOjox8lS5xIcbKkJFDpEyvMPOkoyKiqXQX4ultOrHr27ElVq1bFz0O76j99MiRaDg6APU+PRMue2i8/V3JystiyZQvxfbn4FTsWvtwM74CAJQJ8kbeSfKV/5e9zMpY+OVP+n//P29ublzfytsbk5uYmX7Hc8XHxpKQk8eDBA0pKSqK4uLhHr/fv338sWUqfOKX/v/Tf56QKDwhAIPMCvHNg/fr16b333pM3GPb09ESClXlWVUpAoqUKoz4KQaKl3TiFhYWJZcuWyaTr3Llz2q0oagYBEwrw9Q2urq4yeeMlkMorJ2w8wOEkjWfglFf+i7LyUJK3J9mUMp/8vlK2JcypqakyuXnykZKSQs/aRlxJjpT3R0VFyWuSOBHiTXs48VFelbKVsp5XpiX1xHsgAAHbCBQqVEjOXPXo0YM3LUJyZRvmTJWKRCtTfPo6GImWPuK1b98+ubRw9erVzxxE6aMVqCUEIAABCEAAAmoL8OZDb7/9tkywGjVqhGtZ1QZWuTwkWiqDark4JFpajs7TdUtISBDbt28nnunimyHzX6PxgAAEIAABCEDAXAI8c/7aa69R+/btqUuXLny9KmavdNIFkGjpJFBqVBOJlhqKjimDtybeuHGjTLp27tyJLYgdEwacFQIQgAAEIGA3gdKlS8vkim8sjJsK241d1RMh0VKVU9uFIdHSdnwsrd2NGzfEypUr5fVcFy9etPQwvA8CEIAABCAAAY0LFChQQN5MmBOsOnXqYOZK4/F6WfWQaL1MyED/j0TLQMH8b1MOHDggli9fLq/n4nvF4AEBCEAAAhCAgL4EeCOd1q1bU9euXalevXq47kpf4XthbZFoGSiYL2sKEq2XCen3//kGnvv376c1a9bIpAv359JvLFFzCEAAAhAwvoCXlxc1aNBAzly1a9eOby+B2SsDhh2JlgGD+rwmIdEyR7DTJ12rVq3CTJc5wo5WQgACEICAxgXSJ1e8PDBr1qxIrjQes8xWD4lWZgV1dDwSLR0FS6WqpqSkiL///lvOdCHpUgkVxUAAAhCAAAQsFPD09KSGDRvKmSskVxaiGehtSLQMFMyXNQWJ1suEjP3/ycnJgncsXLt2LW3YsIHCw8ON3WC0DgIQgAAEIOAAAb6ZebNmzeSSwKZNm5KXlxdmrhwQBy2cEomWFqJgpzog0bITtA5Ow8sLjx07RrxlPM90nT9/Xge1RhUhAAEIQAAC2hTw9/enN998U85cNWnShDw8PJBcaTNUdq0VEi27cjv2ZEi0HOuv5bNfuXJF3qeLlxjyphpCCC1XF3WDAAQgAAEIOFwgMDCQmjdvLpOrmjVrYrdAh0dEexVAoqW9mNisRki0bEZrqIKDg4PF1q1b5WzXtm3bKCkpyVDtQ2MgAAEIQAAC1gooNxHu0KEDlSlTBrNW1kKa5DgkWiYJNDcTiZaJgq1SUyMjIwUnW5s3b6bff/+dIiIiVCoZxUAAAhCAAAS0L+Dj40ONGzeW11zxM3/+/EiutB82zdQQiZZmQmH7iiDRsr2xkc+gXNe1Y8cOOdvFuxmmpaUZucloGwQgAAEImFCAlwQ2atRILgvE9VYm7AAqNhmJloqYWi8KiZbWI6Sv+oWHh4vdu3fLpIuf9+/f11cDUFsIQAACEIAAEW9cQbVr15bJVcuWLal06dKYtULPUEUAiZYqjPooBImWPuKkx1omJSWJv/76i/jaru3bt9PJkyexoYYeA4k6QwACEDCJQFBQkFwSyDsF8n2ucPNgkwTezs1EomVncEeeDomWI/XNdW5ltouXGfK1XcHBweYCQGshAAEIQEBTAlmzZqV69epRixYtZIIVGBiIWStNRciYlUGiZcy4PrNVSLRMFGyNNZW3j+eki5+8uUZ0dLTGaojqQAACEICAkQRcXV2pQoUKcjkgP+vWrUvu7u5IrowUZB20BYmWDoKkVhWRaKkliXIyI8DLDHkjDV5iuHPnTjp06BClpKRkpkgcCwEIQAACJhdwdnamsmXLymWAPGP1+uuvYzmgyfuEFpqPREsLUbBTHZBo2Qkap8mQQFxcnOCbJO/du5f27dtHfK3Xw4cPM1QG3gwBCEAAAuYTUHYH5Bmr+vXrk7+/P2aszNcNNN1iJFqaDo+6lUOipa4nSrONABIv27iiVAhAAAJ6F0ifWDVo0IBy5cqFxErvQTV4/ZFoGTzA6ZuHRMtEwTZQU2NjYwXPdO3Zs0c+jxw5ghkvA8UXTYEABCDwLAEXFxcqX768XALIm1jwa86cOZFYobvoSgCJlq7ClbnKItHKnB+O1oZAcnKyOHHixKOlhnwvr4iICG1UDrWAAAQgAAGrBHhXQN68gu9nVatWLfmaI0cOJFZWaeIgrQgg0dJKJOxQDyRadkDGKRwiwLsa8jVePNvFs19Hjx7FfbwcEgmcFAIQgIBlAvny5XuUVFWpUoWqV6+OXQEto8O7dCSAREtHwcpsVZFoZVYQx+tFICIiQu5syEnXwYMHZQIWGxurl+qjnhCAAAQMJeDh4UGVKlWSyVTNmjXljFWBAgUwW2WoKKMxzxJAomWifoFEy0TBRlOfEkg/68WJ1+HDh3GtF/oJBCAAARsI8KYVnEzxTBU/q1atSp6enkisbGCNIrUtgERL2/FRtXZItFTlRGE6F+D7eZ08eVJe68WJFz/PnTuHJYc6jyuqDwEI2FeAlwAqCRW/coKFTSvsGwOcTbsCSLS0GxvVa4ZES3VSFGgwgbt37wqe6Tp27Ji8zotfr1y5guTLYHFGcyAAAesEChUqRBUrVpTLAPlZrVo1LAG0jhJHmUQAiZZJAs3NRKJlomCjqaoJxMTEyF0Oz549S2fOnJEzX1h2qBovCoIABDQq8ORM1auvvkp58+bF8j+NxgvV0qYAEi1txsUmtUKiZRNWFGpCgcTERHHq1Ck548VPTsROnz5NMTExJtRAkyEAAT0LeHl5UenSpeXW6spMFd+/ysfHB0mVngOLumtCAImWJsJgn0og0bKPM85iXoFbt24JZeZLeeUliAkJCeZFQcshAAFNCLi6uhIv/eOkqkyZMvKVr6kqVaoUubq6IqnSRJRQCaMJINEyWkRf0B4kWiYKNpqqGQHedOPixYtyxotnwZTXa9eu4dovzUQJFYGAsQQCAgKobNmyVK5cOfnKT06sPDw8kFAZK9Sqt+b27dsiNDSU4uLiKDExkZycnMjX15e8vb2paNGi/Io+lAF1JFoZwNL7W5Fo6T2CqL+RBB4+fCguXbokr/26evWqvP6Lv75w4QI9ePDASE1FWyAAARsIuLm5ESdUygwVb6nOX/Oyv2zZsmEwbANzoxUZHh4udu/eTbt27aJDhw4R/1HwRUvgOeniPvfKK69QnTp1qH79+sTX7rm5uaG/PadzINEy2qcGM1omiiiaalQBZQli+gSMv8YsmFEjjnZB4PkCfn5+VKxYMVISKV72x1/zLBVmqNBzMirw4MEDsW7dOlq2bBn9+eeflJaWltEiHnt/zpw5qWPHjtStWzeqUaMGEq4nNJFoZap76etgzGjpK16oLQSeFIiKihKXL1+WW86nf+Wvb9++DTAIQECnAv7+/jKZCgoKks/0X/v7+2PwqtO4aqna0dHRYu7cuTRlyhSKjIy0SdV46/+PP/6Y2rVrR87Ozui3/+74LZdimunRt29fcurbt6+YP3++mdqN7d1NFW001mwCcXFxjyVh6ROxW7duUUpKitlI0F4IaEaAl1zxHzvTJ1FKMsWvfn5+GJRqJlrGqghfJ/ztt9/SxIkTKTY21i6N401W5syZQ9WrVzd9v0aiZZcup42TYEZLG3FALSDgCIHIyEjByw/TP/mvbDwThuvCHBERnNNIAny9VK5cuWQyxcv60j/5flRFihShrFmzmn7QaaSY66EtBw4cEL169ZLXANv74ezsTDyzMXXqVFPfKgCJlr17ngPPh0TLgfg4NQQ0LhAaGipu3LhByjMkJISCg4NlIsZf37lzh1JTUzXeClQPAuoL8GxUnjx5ZBJVoEAB+eQNAQoXLiwTKH7l/3NxcUEipT4/SrRCIC0tTcycOZNGjx5NSUlJVpSg3iElS5akVatWUcWKFU35+UCipV5f0nxJSLQ0HyJUEAKaFuBZMWUWjGfGlK+VV7527P79+5puAyoHgfQCWbJkoRw5cjyaieLZJ/5dqbzyzBQnVe7u7qYcJKK36E8gISFBdO3alXjDC608PD096aeffqK2bdua7nOEREsrvdAO9UCiZQdknAICJheIj48XUVFRciaME7AXfc2zZJnd8crk3Gj+MwQ8PDwoe/bsjxKmF33NCRUu2kc3MopAbGysaNOmDW3fvl1zTXJxcaFZs2bRgAEDTJVsIdHSXFe0XYWQaNnOFiVDAAIZF+B7iUVERFBYWBjdvXuX7t27J3fDUl6f93XGz4Qj9CrAW5vz9tH85Jknfipfp/8eXx+VN29eyp07N7Y812uwUe9MCfC27Y0aNaIDBw5kqhxbHzx79mwaNGiQaZItJFq27lEaKh+JloaCgapAAAJWCaSmpgpOwJQkLDo6Wt5gk5csKl/zzlr8PX7y95TvK9+Li4uz6tw4KGMC3t7e5OvryxfCy1dOmrJly/bo38/6Pr8nfTLl6upqmgFZxnTxbgj8T4B3FmzVqhVt3bpV8yy8ScbKlSvpnXfeMcVnG4mW5rukehVEoqWeJUqCAAT0K8DJGidfnHDxheK8vJFf+d+Wfo9bHx8fTw8fPpQQnMTxZiFCiEfXqfGW+sp2yomJiZSQkOAQNL4+gpfT8YOTG1dXV/k1JzW80QMv6eFEiB/u7u7ECRI/+JX/zUvveFe9rFmzPvY95b3p36d8jxMqbA7hkHDjpCYUGDRokOCZIr08+NrI/fv3U5UqVQyfbCHR0kuvVKGeSLRUQEQREIAABFQW4OvaOBF73kPZ7ZETouc9OJHy8vIy/KBFZXoUBwHdC6xZs0a0b99ed+3g+8cdOXLE8PeQQ6Klu65pfYWRaFlvhyMhAAEIQAACEICAlgRu3bolypQpo9vdXrt3705Lliwx9B+IkGhp6RNj47og0bIxMIqHAAQgAAEIQAACdhLo2LGj+Pnnn+10NvVPw0uXd+7cSQ0aNDBssmXaRGvAgAFi7ty56vcaDZfIuzGFh4cbtjNrmB5VgwAEIAABCEAAAqoJ7Ny5UzRs2FC18hxVUNmyZen48eN87aghx6f+/v5yd10zPQYMGEBOQ4cOFTNmzDBTu+VF0LGxsYbsyKYKJBoLAQhAAAIQgICpBWrXri327t1rCAPehbBTp06GHJ96e3sLs+10O2zYMHIaNWqUmDp1qiE6qKWN4J2mUlJSDNmRLTXA+yAAAQhAAAIQgICeBfbs2SPq1q2r5yY8VvfSpUvTqVOnDLlTqbOzs0hLSzNMrCxpyJgxY8hp7NixYtKkSZa831Dv4a2GfXx8kGwZKqpoDAQgAAEIQAACZhFo3bq1+PXXXw3V3G3btlGTJk0MNT6Njo4WfKsLsz3GjRtHThMmTBCfffaZ2dpOFy5coJIlSxqqI5suiGgwBCAAAQhAAAKmFLh3757gzc2Ue/gZBaFbt260bNkyQ41Pz549K3i2zmwPnshymjp1qhg1apTZ2k5//vmnoXd3MV1A0WAIQAACEIAABEwjMHv2bDFo0CDDtZdvfH7nzh2+Mbphkq0dO3aIRo0aGS5WL2vQtGnTyGnRokXivffee9l7Dff/P/74I/Xs2dMwndhwAUKDIAABCEAAAhCAwHMEmjVrJrZs2WJIn82bN9Nbb71lmDHqggULRO/evQ0Zqxc1avHixeS0YcMG0bJlS9M1/oMPPqBp06YZphObLoBoMAQgAAEIQAACphRITk4WOXPmpJiYGEO2f+TIkfT1118bZoxqxh3OuWNywuy0f/9+UbNmTUN21Bc1qkmTJrRt2zbDdGLTBRANhgAEIAABCEDAlAKHDh0S1apVM2zbuW2HDh0yzBi1fv36YteuXYaN1/MadvDgQXK6ePGiKFGihOkanydPHl4Da5hObLoAosEQgAAEIAABCJhSYPHixaJHjx6GbTtfp8W7Yzs7O+t+nJqWlib8/f3p3r17ho3X8xp25coVcoqMjBQ5cuQwXeO5wefPn6dSpUrpvhObMnhoNAQgAAEIQAACphT46KOPxP/93/8Zuu03b96kgIAA3Y9Rz5w5I8qUKWPoWD2vcdHR0SQD6OvrK4y6zvVFkZ0/fz717dtX953YlL0XjYYABCAAAQhAwJQCHTt2FD///LOh2757926qV6+e7seoc+bMEQMHDjR0rJ7VOD8/P7p//76TDGD58uXFyZMnTYfQuXNnWrFihe47sekChwZDAAIQgAAEIGBagaZNm4qtW7cauv0bNmygli1b6n6Maoak+FkdsXLlynT06NF/E61WrVqJ9evXG7rDPi/bDA8PJ3d3d913ZNMFDw2GAAQgAAEIQMCUArVr1xZ79+41dNuXL19OXbp00fX4NCkpSfCeCFFRUYaO1bMa165dO1q7du2/idbw4cPF9OnTTYfADd65cyc1bNhQ1x3ZlIFDoyEAAQhAAAIQMKVA9erVBe/oZuTHwoULqVevXroen/7xxx/ijTfeMHKYntu2UaNG0dSpU/9NtGbOnCmGDBliSghu98yZM3XdkU0ZODQaAhCAAAQgAAFTCphhu/DVq1dThw4ddD0+HThwoJgzZ44p+yi3e+DAgf8mWtu2bRN8XykzPnLnzk0hISFYPmjG4KPNEIAABCAAAQjoTqBly5aCr2Ey8oOvQWvatKluE62HDx+KggULUkREhJHD9Ny28X3D6tev/2+iFR4eLjjhMOuDr09r1aqVbjuzWeOGdkMAAhCAAAQgYD6BXr16CV5aZ+TH4cOHqWrVqrodm65du1bwdUpmfdy9e5dy5cr1b6LFj3z58onbt2+b0qNVq1a0fv163XZmUwYNjYYABCAAAQhAwJQCkydPFmPGjDF02/keTNmyZdPt2PStt94SmzdvNnSMnte4gIAAunnzpozdowC++eab4vfffzcliIuLC128eJGKFSum2w5tysCh0RCAAAQgAAEImE7gt99+E2+//bZh250/f34KDQ3V7Zj06tWronjx4pSammrYGL2oYc2bN6dNmzY9nmiNGTNGTJ482ZQg3Ojhw4fT9OnTddupTRs4NBwCEIAABCAAAVMJ3Lx5U/CsgVEfLVq0oI0bN+p2TPr++++LWbNmGTU8L23XJ598Ql988cXjidbq1atFhw4dXnqwUd/g6+tLwcHB5Ofnp9uObdTYoF0QgAAEIAABCEAgvUBQUJC4fPmyIVH4lkvDhw/X5Xg0MjJSFCpUiB48eGDI2FjSqHXr1lHbtm0fT7RCQ0MFT1Wa+fHFF1/QJ598osuObea4oe0QgAAEIAABCJhLoF+/fuL77783ZKNPnDhBFSpU0OV4dPz48WL8+PGGjIuljeI9L/Lly/d4osUHBwYGiqtXr1pajuHe5+fnR9z+HDly6LJzGy4gaBAEIAABCEAAAhB4hsD27dtF48aNDWfD1zZduHCBnJ2ddTcWjYqKEoGBgRQVFWW4uFjaoJIlS3L8HsXusSC+++67YunSpZaWZcj3ffbZZzTUbpxEAAAgAElEQVRhwgTddW5DBgONggAEIAABCEAAAs8QSE1NFUWKFOHd3QzlM3HiRBo3bpwux6GffPKJ4NVhZn707t2bFixY8OxEa/78+aJv375m9iEfHx+5A6Ey5WdqDDQeAhCAAAQgAAEIaFRg7NixYtKkSRqtXcar5erqSnzdWZEiRXSXaPElSDybExsbm/GGG+iIxYsXU48ePZ6daJ0/f16UKlXKQM21rinvvfceLVq0SHed3LrW4igIQAACEIAABCCgP4G7d+/KWS2jbLzQvXt3WrJkiS7Hn927dxdLlizRXydSucZ8CVJgYOCzEy0+V7FixcSVK1dUPq2+inN2dqa///6bqlevrsvOri9t1BYCEIAABCAAAQhYJzB06FAxY8YM6w7W0FE89jxz5gy98soruht7Hj58WLz66quUlpamIVH7V4Unq86fP/9Y/J4Kptn3vlfCUqNGDdq3bx+5uLjorsPbv2vhjBCAAAQgAAEIQMD+AjyrxQPcu3fv2v/kKp6xf//+NG/ePN2NOVNSUsRrr71Ghw4dUlFDn0WNGDGCvvnmmxcnWlu2bBHNmjXTZwtVrvXMmTNpyJAhuuv0KjOgOAhAAAIQgAAEIKBZgXnz5glOVPT6yJkzJ8+EkL+/v+7GnNOmTRMffPCBXulVrffOnTupYcOGL060EhISBAc8Pj5e1ZPrsTBvb286efIkL6fUXcfXozfqDAEIQAACEIAABDIqwDsQNmzYkHbv3p3RQzXx/pUrV1KnTp10N9a8du2aKFeunGGukctMZ/D19aWIiAjKkiXLixMtPkmLFi3Exo0bM3M+wxzbpEkT+v3333V5PwPDBAENgQAEIAABCEAAAi8QCAsLExUrVqSwsDBdOfFu3/Pnz9ddksXJLY+ReRYHD6K2bdvSunXrnorjMwO7dOlS8e6778LtvwJ8keXQoUN19yFAACEAAQhAAAIQgIBZBPgmxnz5S3Jysi6aXKVKFfrrr7/Iy8tLd2PMr7/+WowcOVIXzvao5KpVq+idd96xLNGKiYkRefLkoYSEBHvUTfPnyJIlC/3zzz9UoUIF3X0QNI+LCkIAAhCAAAQgAAGVBJYvXy66deum+R3wihUrRnv37tXlfVtPnTolqlWrRomJiSpFTd/F8KVGd+7coaxZs1qWaHFz27ZtK9atW6fvlqtYe16DevDgQV3+1UFFBhQFAQhAAAIQgAAENC0wY8YMMWzYMBJCaLKeAQEBtGvXLgoKCtLdH/AfPHggt3I/e/asJm0dUalOnTrRypUrnxnL5wZ47dq1ol27do6or2bP2aVLF1q+fLnuPhSaBUXFIAABCEAAAhCAgA0Eli1bJt577z3NLSMsXbo0bd26lQoXLqzL8SRuTPx0Z+V9LVq0aJGxRCs+Pl7kzZuXYmJibND99Vvk/PnzqW/fvrr8cOhXHTWHAAQgAAEIQAACGRPYunWr6Nq1K927dy9jB9ro3W+88QatWLGCcubMqctx5OzZs8WgQYNspKPPYrNnzy43YHlyt0GlNS8MdN++fQUnFnj8T8DDw0NeuFitWjVdfkgQSwhAAAIQgAAEIGAWgZs3b4qOHTvSvn37HNZkFxcXGjt2LH366afk4uKiy/HjgQMHRN26denhw4cOc9Tiid9//32aNWvWc2P6wmAfP35cbpWJx+MC+fLlk9drFSpUSJcfFsQTAhCAAAQgAAEImEUgOTlZzJ49WyY69l6pVblyZZo7dy5Vr15dt2PGW7duyeuybt26ZZYuY3E7jx07RpUqVbIu0eKzVK1aVRw+fNjiE5rljZUqVZIzW8/aYcQsBmgnBCAAAQhAAAIQ0ItAaGio+Oyzz2jJkiWUlJRk02oXLVpUzmL16NFDt7NYDBQbGytq165NJ06csKmXHguvWbMm7d+//4UJ9Euz6x9++EH06dNHj+23eZ3btGlDa9as0fUHyOZIOAEEIAABCEAAAhDQkEBwcLCYNm0aLVu2jCIjI1WtGc9gDRkyhDp37kzu7u4vHWerenKVC0tJSRGtW7cm3uwBj6cFFi9ezIl05hIt3sYxf/78dp9q1UtA+/fvT/PmzdP1B0kv1qgnBCAAAQhAAAIQUEsgMTFRbNmyhfhms7zdenh4eIaLdnZ2pvLly1PTpk2Jd6cuW7asYcaEgwcPFt99912GTcxwgJ+fn1xK6e3tnblEi7GGDx8upk+fbgY3q9o4ceJEGjdunGE+WFYh4CAIQAACEIAABCCgU4G0tDRx+vRpOnToEF24cIEuXrwod5OLjY2lhIQE2SoeXGfNmpUCAwOpRIkSxFu116pVi/z9/Q03Bvzss8/EhAkTdBpN21d7zJgxNHny5JfG/aVv4KreuHFDBAUFae5eBLZntOwMTk5OxLsz9unTxyJPy0rFuyAAAQhAAAIQgAAEIGBfgblz54oBAwbY96Q6Opu7uztdu3aNChQo8NJx/0vfoLS7S5cuYvny5TpisG9Veep44cKF1LNnT4tN7VtDnA0CEIAABCAAAQhAAALPF1i4cKHcmyEtLQ1MzxHo1asXj/ktGu9b9CY+z4kTJ+RW70IIwD9HgGe25syZQwMGDLDYFZgQgAAEIAABCEAAAhBwtACSrJdHgMf6vMS0TJkyFo31LXqTctrGjRuL7du3v7wWJn4HB4Dv1TBw4MAM2ZqYDE2HAAQgAAEIQAACEHCgwIIFC0Tfvn0xk/WSGLRs2ZI2bNhg8Rjf4jfyeffs2SPvCo3HiwV4GSFfs9W7d+8M+cIVAhCAAAQgAAEIQAAC9hT4/vvvBe+ijVVrL1c/ePBghm4+neFEALNaLw8Cv4NntmbNmkWDBg3KsLFlZ8C7IAABCEAAAhCAAAQgYL0A3y+3X79+mMmygDCjs1kyH7Cg3MfecuDAAVGjRo2MHmbK93OyNW/ePOrXr1+GnU0JhkZDAAIQgAAEIAABCNhFgHcXHDhwIGayLNDmMf2xY8eoYsWKGRrTZ+jNSj1atGghcJdoC6Ly35mtTz/9lCZMmGCVtWVnwbsgAAEIQAACEIAABCBgmcC3334rhg8fjiTLMi7q0KEDrV69OsNj+QwfwPU5efKk3IEQWz9aGJ3/fy+ynj170vfff0/u7u5WmVt+JrwTAhCAAAQgAAEIQAACTwskJyeLwYMHyxVXeFgm4OLiQqdOneIbVGd4DJ/hA5Qq4b5algUn/buaNm3K2TD5+PhY7Z7xs+IICEAAAhCAAAQgAAGzC8TExIj27dvTH3/8YXaKDLW/d+/etGDBAqvG7lYdxLULCQkRJUuWpLi4uAxV1uxvLl++PG3evJkCAgKstje7IdoPAQhAAAIQgAAEIGC5QGhoqGjevDkdPXrU8oPwTp4coYsXL1K+fPmsGrdbdZDiPn78eDF+/HiEIYMCBQoUkMlWRi+oy+Bp8HYIQAACEIAABCAAAZMLnD59WjRr1oyCg4NNLpHx5k+dOpVGjRpldb5k9YFc1bi4OFGqVCm6efNmxmtu8iOyZ89Ov/76K9WrVy9TMTA5I5oPAQhAAAIQgAAEIPAcgZ07d4q2bdvS/fv3YZRBgaCgIDpz5gxlyZLF6rG61QcqdV2xYoXo3LlzBquOt7OAq6srTZo0iT788MNMxwGiEIAABCAAAQhAAAIQUAT4RsS88UVSUhJQrBDYsGEDtWzZMlNj9EwdzHVOS0sTjRs3pp07d1rRBBzCApyozp8/n7JmzZrpeEAUAhCAAAQgAAEIQMC8AgkJCWLAgAG0ePFi8yJksuW8gd3WrVszPS7PdAHcjosXLwre5CExMTGTzTLv4RUqVKB169ZRUFCQKjExryRaDgEIQAACEIAABMwpcOnSJdGmTRu5HTke1gl4eXnR6dOnKTAwMNNj8kwXoDRh4sSJYty4cda1CEdJAV9fX/nXhzZt2qgWF9BCAAIQgAAEIAABCBhfYNOmTaJbt24UFRVl/MbasIXffPMNjRgxQpWxuCqFcFv5BmhVq1alEydO2LDpxi/aycmJRo8eTV9++SW5uLioFh/jy6GFEIAABCAAAQhAwHwCfBnPlClT6OOPP+ZLeswHoGKLeYXZ4cOHyc3NTZUxuCqFKO3bt2+fqFOnDoKsQsB5G85ly5ZRzpw5VY2RClVDERCAAAQgAAEIQAACGhC4e/eu6Nq1K/3+++8aqI2+q8Cb1B08eJCqVKmi2thbtYIU2uHDh4vp06frW1ojtQ8ICKAlS5ZQgwYNVI+TRpqIakAAAhCAAAQgAAEIWCHAW7d3796dQkJCrDgahzwpwJdATZw4UdUxt6qFcYUTExNFtWrVcBGeSv2XlxLy1pw8Jezh4aF6vFSqJoqBAAQgAAEIQAACELCDQFJSkvjiiy84KcAqMpW8K1euTH///Xem7pn1rKrYZOB+9OhRUaNGDezbr1LwuZiyZcvS8uXLqUKFCjaJmYpVRVEQgAAEIAABCEAAAjYQOHPmjFwqeOzYMRuUbs4iPTw86NChQ1SuXDnVx9iqF6iEaNKkSWLs2LHmjJiNWs0dYfz48TRq1ChslGEjYxQLAQhAAAIQgAAEtCbAG1788MMPNHz4cIqPj9da9XRdnxkzZtDQoUNtkhPZpFDWTklJkRtj8DQcHuoK8E3UFi1aRPny5bNZ/NStMUqDAAQgAAEIQAACELBGIDQ0VPTo0YO2bdtmzeE45gUCjRo1kq7Ozs42GVPbpFClPdevXxe85jEyMhJBVlnA39+f+C8bb7/9tk1jqHK1URwEIAABCEAAAhCAgIUC69atE/369aO7d+9aeATeZqlA3rx55RJMW05c2HyQzjdPa9GiBQkhLG033pcBgebNm9O8efOoYMGCNo9lBqqFt0IAAhCAAAQgAAEIWCkQFhYm+FIRvtUPHuoLODs7yy3xmzRpYtPxs00LV1hGjhwpvv76a/WVUKIU8PPzo8mTJ1OfPn1sNvUJaghAAAIQgAAEIAAB2wrwtVicXI0YMYLu3btn25OZuPTPP/+cPv30U5vnQTY/AccwOTlZ1K9fn/bu3WvikNq+6a+//jrNnz+fSpUqZZe42r5FOAMEIAABCEAAAhAwh8CVK1fkMsEdO3aYo8EOaiXnJNu3bydXV1ebj5dtfgLFMDg4WFSpUoUiIiIcxGqO03p5ecmdCXlXGjc3N7vF1xy6aCUEIAABCEAAAhBQV4AnJKZNm0YTJkyghIQEdQtHaY8JFChQgI4ePUp58uSxyxjZLidRWrh3717RoEED3F/LDp2+QoUKcrOMV1991a4xtkPTcAoIQAACEIAABCBgCIHjx4+L3r170+HDhw3RHi03gm+TtGfPHqpevbrdxsZ2O5ECP3fuXDFgwAAtx8EwdXN1daVhw4bxGlTy9fW1e6wNA4mGQAACEIAABCAAARUFoqOjBc9gzZw5k2+JpGLJKOp5Aj/99BN17drVruNhu55MaXj//v0F75SHh30EePtK/jDzX0xcXFwcEnP7tBRngQAEIAABCEAAAtoVUDa7GDNmDIWFhWm3ogar2ejRo2nKlCl2HwPb/YQct6SkJPHGG2/Qrl27DBZGbTeHr5Hjv5zUqlXLIXHXtg5qBwEIQAACEIAABGwncOjQITFkyBD6+++/bXcSlPyUAOccmzdvtsvmF0+e3GED7vDwcFGjRg26evUquoQdBfi+Ad27d6cvv/zSpjdos2OTcCoIQAACEIAABCCgWYHQ0FDx4Ycfynti4b6y9g1T6dKlaf/+/XwrJIfkPA45qUJ8+fJlUbNmTQoPD7evOs5G3t7eNHLkSProo4/Iw8PDof0A4YAABCAAAQhAAAJGE+AVXHPmzJHXysfExBiteZpvT758+eTsYZEiRRw2znXYiZXo/PPPP/IeW3FxcZoPmBErWLx4cfrmm2+oRYsWDu8LRvRFmyAAAQhAAAIQMJ/A9u3bxdChQ+ns2bPma7wGWuzj4yN3GKxcubJDx7cOPbkShw0bNojWrVtTamqqBkJjzio0atSIvvrqK6pataom+oQ5o4BWQwACEIAABCCgZwG+DouXCe7cuVPPzdB13d3c3Gjjxo305ptvOnxM6/AKKJGcN2+e6N+/v64Dq/fKOzk5Ubt27eiLL76gEiVKaKZv6N0V9YcABCAAAQhAwNgCFy5cEGPHjqW1a9fiOiwHh5qXaw4cOFAT41hNVEKJxyeffCJ4kI+HYwX4LwG8Ffy4ceMof/78muojjpXB2SEAAQhAAAIQgMD/BG7duiU+//xzWrhwIe6HpYGOwZu9ffzxx5oZu2qmIkpsPvjgAzFt2jQNhApV8PLyosGDBxNPgWfPnl1zfQURggAEIAABCEAAAo4QiImJkRtd8ARBbGysI6qAcz4h8PHHH/Ou2poar2qqMuzFN3Lr27cvLViwAB1IIwI5cuQgvtEb3/vBy8tLc31GI0yoBgQgAAEIQAACBhd4+PChWLx4sVz1g12ztRPsQYMG0ezZszU3RtVchThkKSkpolOnTrRmzRrtRBA1oYCAAPmDhe/DlSVLFk32HYQJAhCAAAQgAAEIqC3ACdaPP/5IkyZNopCQELWLR3mZEOjZs6dcuuns7Ky5sanmKqQ4c4fmnQi3bNmSCXocaguBQoUK0ZgxY6hXr164B5ctgFEmBCAAAQhAAAKaEEhISBA8iJ88eTLdvHlTE3VCJf4n0KFDB1qxYgW5urpqMqfRZKXSJ1sMuH79evQpDQrkzp2bRowYIa/j8vb21nRf0iAfqgQBCEAAAhCAgEYFEhMTxZIlS4g3urh165ZGa2nuarVv356WL19O7u7umh2DarZi6ZOtd955h3777Tdz9yYNt97f35+30ZRJV7Zs2TTfpzRMiapBAAIQgAAEIOBAgQcPHgjeJ2DKlCkUGhrqwJrg1C8S4IkYTrLc3Nw0Pe7UdOUU4KSkJNGxY0f65Zdf0Os0LJArVy7iixGHDRuGXQo1HCdUDQIQgAAEIACBxwViY2PlEsGvvvqKwsLCwKNhAc4Jli1bpvkkiwl1kWhxRTnZ6ty5s7wRHB7aFuBdCjnZev/99ylHjhy66WPaVkXtIAABCEAAAhBQWyAyMlJ89913NGPGDIqMjFS7eJSnskCPHj3kxhcuLi66GF/qopJKjJKTkwUD81QhHtoXyJo1K7333nsy6QoMDNRVX9O+LmoIAQhAAAIQgIC1AleuXBHffvst8U6CDx48sLYYHGdHgf79+/MW7rpJsphGd4Nfvs/WyJEj6ZtvvrFjaHGqzAg4OztTs2bN6KOPPqJatWrprs9lpu04FgIQgAAEIAAB7QgcOXJEJlgrV67k2wlpp2KoyQsFeLfryZMn624MqbsKK1H46quvxIcffohuqTOBKlWqyBsfd+nSRbNbceqMFNWFAAQgAAEIQOAFAqmpqWLz5s00c+ZM2rFjB6x0JODk5CQ3Jhk1apQucxZdVlrpH7Nnzxa8tXhaWpqOugyqygKBgYEy4erTpw+2hkeXgAAEIAABCEBAdQHeon3VqlVyg4tz586pXj4KtK2Ai4sLzZ8/n+/bqtt8RbcVV0K7YsUKed1WUlKSbaON0m0iwDsV8tbw/MybN6/u+6NNkFAoBCAAAQhAAAIWC4SFhYk5c+YQP+/evWvxcXijdgS8vLyIk+QWLVroemyo68or3WHv3r3i7bffxodJO5+PDNfE3d2dWrVqRX379qWGDRuSs7OzIfpmhiFwAAQgAAEIQAACVgkcPnxY8AwIb/2dkJBgVRk4yPECOXPmlPfPrVOnju7HgrpvgNIdLl68KN566y26dOmS43sIapApgZIlS1LPnj3lssKcOXMapo9mCgUHQwACEIAABCDwlEBMTIzgjS149urEiRMQ0rlAUFAQbdmyhUqUKGGI8Z8hGqH0qYiICDmztW/fPp13M1SfBTw8PKh9+/Y0fPhwqly5sqH6KiIMAQhAAAIQgID1AmfPnhXz5s2jRYsWYXt26xk1dWTNmjVp/fr15O/vb5gxn2EaovSUhIQEec0Wr+vEwzgCvFshLyvs2rUrNs8wTljREghAAAIQgIDFAry5xYYNG+QGCdg90GI2XbyR/7C+dOlS8vT0NFRuYqjGKD2Jt/Hk/fa//vprXXQuVNJyAd48g5cV9uvXj4KCggzZfy3XwDshAAEIQAACxhe4dOmS+P777+XNhe/du2f8Bpuohbx9+/jx42ncuHGGvD7f0APVn376SfB1Prgg0nifWL4JcuPGjXnLT2rZsiUvMzR0XzZeBNEiCEAAAhCAwPMFeIUSz14tXLhQzl7hVj7G6y0+Pj5yFqt169aGHcMZtmFKdzx27Ji8buvGjRvG66FokRTIli2bTLbeffdd7FiIPgEBCEAAAhDQsQDvHMiD7xUrVmA3aR3H8WVVL1asmNxZsFy5cobORQzdOCXIvEkGr/3cvXv3y+KO/9e5AO9Y2LFjR+revTvfFNkU/VvnIUP1IQABCEDA5AIhISFi7dq1cmOLkydPmlzD+M2vW7curVmzhnLnzm34cZrhG6h014cPH4r333+ffvjhB+P3YLSQ1/nK2S2e5WrTpg020ECfgAAEIAABCGhI4MGDB+KXX36RS8f+/PNPLA3UUGxsVRW+Hot3kp4yZQq5urqaIgcxRSPTd5ilS5eK/v37U3x8vK36EcrVmICnpyc1b94cN0PWWFxQHQhAAAIQMJ+AclNhvvdVbGys+QBM2mK+HosnOzp27Giq3MNUjVX69okTJ0S7du1wc2MTftgDAwOpW7du1LlzZypZsqQp+78Jw44mQwACEICAAwUuXLgg+Jornr26du2aA2uCUztCoFy5csRLQ8047jLtQJPvJN67d29avXq1I/oczqkBgdKlS8sbInfq1IlKlSpl2s+CBkKBKkAAAhCAgMEErl+/LnizA74WZ9++fQZrHZpjqQDf/5RvLJ01a1ZTjrNM2ej0neP7778XgwcPpqSkJEv7DN5nQAEl6cJMlwGDiyZBAAIQgIBdBNInV/v37ychhF3Oi5NoTyBLliw0efJkGjZsmKlzDVM3XumW//zzj+AB9uXLl7XXU1EjuwsoSVeXLl2oRIkS+IzYPQI4IQQgAAEI6EXgxo0b4tdff5UzV0iu9BI129azVKlSxNfgVapUyfRjKNMDKF2NlxIOGjSIli1bZtveh9J1JaAkXTz1Xbx4cXxedBU9VBYCEIAABGwhEBwcLHcMRHJlC119l8nXwc+dO9e0SwWfjB4Gjk+I8K6EnHBhJxx9f9DVrj1vSVq9enV5TVerVq0oKCgInx21kVEeBCAAAQhoVuDy5cvymive1ODgwYNYFqjZSDmmYjly5JC7CrZt2xbjo3QhAMYz+uO1a9cELxvjKXA8IPAsAd69kLeMb9GiBdWrV4/c3NzwWUJXgQAEIAABwwikpqaKY8eO0caNG2nTpk105MgRw7QNDVFXoEaNGsS7SgYGBmIs9AQtQJ7T15KSksSECRPkhXwpKSnq9kiUZigBf3//R0lXkyZNMF1uqOiiMRCAAATMI8A3Ef7jjz9kYsXPiIgI8zQeLc2wgLu7O40fP55Gjx5tmhsQZxQJidZLxA4ePCi6d+9O58+fz6gt3m9CAQ8PD6pdu7ZMvNq0aUOFChXCZ8yE/QBNhgAEIKAXgTt37ojff/9dJlZbtmyhuLg4vVQd9XSgQNmyZWnJkiVUpUoVjHNeEAfgWNBJExISBGfsU6dOpbS0NAuOwFsg8K8Ab6bByws58apVqxY5OzvjM4fOAQEIQAACDhU4ffq04MSKlwVip0CHhkJ3J3d2dqb333+fpkyZQh4eHhjTvCSCAMpAF9+1a5fo2bMnXb9+PQNH4a0Q+FegYMGCxEsL+dmwYUPy9/fH5w+dAwIQgAAEbC4QEREhdu7cSdu2bZPPkJAQm58TJzCeQIkSJWjx4sVUs2ZNjF8sDC+gLIRS3sbbwI8aNYrmz5+PHXcyaIe3/0+A/yJUqVIlmXQ1btyYf2jhL0PoIBCAAAQgoIrAw4cPxb59+2j79u0yseJNLbAiRxVaUxbCY5bBgwfTl19+Sd7e3sgdMtALgJUBrPRv/euvv0SfPn1w7ZaVfjjscQEvLy+ZbDVq1Eg+K1eujGWG6CQQgAAEIGCxwJUrV8SOHTuIn7yhRUxMjMXH4o0QeJ5AmTJlaMGCBfTaa68hZ7CimwDNCjTlEL5266uvvqL/+7//o6SkpEyUhEMh8LhAnjx56PXXX5dJ11tvvcXLDvFZRSeBAAQgAIFHArwccNeuXTKx4s0sgoODoQMB1QTc3NxoxIgRxDtw41os61kxeLPe7tGRR48eFb1796ajR4+qUBqKgMDjAjxlX6FCBXldFydfvKthjhw58NlFR4EABCBgIoHIyEixd+9e+s9//kN8vdWJEyewHNBE8bdnU1977TU5i1WmTBmMNTIJD8BMAiqHJycni+nTp8vMH1ujqoSKYp4pwIlXuXLlqG7dujLxqlOnDuXJkwefZfQXCEAAAgYS4G3X//rrL5lY7dmzh06dOoXEykDx1WJTfH196YsvvqCBAweSi4sLxhUqBAmIKiCmLyIkJER89NFHtGzZMpVLRnEQeL5AYGCg3D6eZ7t4g42iRYvis40OAwEIQEBHArdv35aJFc9a8UYWvEpGCKGjFqCqehbg29DMmTMH9/9UOYgYjKkMqhS3ceNGMWTIELp27ZqNzoBiIfB8gXz58smki6/x4gSsbNmy+Kyjw0AAAhDQkMCtW7fkzoB8jRUnV2fPntVQ7VAVswgEBQXRrFmz6M0338Q4wQZBB6oNUJUi4+LiBE/Bfv3119gsw4bOKPrlAgUKFJBLDF999VWqXr263NXQ09MTn/+X0+EdEIAABDItwJtn8RbrBw8elE9OrHAvq0yzooBMCHh6ehKvwBo9ejQ2u8iE48sOxUDrZUIq/P+5c+cE33+A/2qFBwS0IMC7CVWsWFEmXUryVbJkSfw80EJwUAcIQED3AhcvXhRKUsWvx48fp+TkZN23Cw0whgAvE5wxY9N4ajgAABVRSURBVAYVK1YMv/dtHFIA2xg4ffHbt2+XywnPnTtnx7PiVBCwTIAvguVNNnjJIS83rFGjBuXOnRs/Iyzjw7sgAAGTCkRHR4uTJ0/K66p4pooTq4iICJNqoNlaFihRogR988031Lx5c/xut1OgAG0naOU0iYmJ4ttvv5W7usTGxtr57DgdBCwXcHJyouLFi8tZL2Xmq3z58lhiYDkh3gkBCBhMgH+H8+5/nEz9888/8vXixYvYtMJgcTZac7Jnz06fffaZ3E3Q3d0dY387BhjYdsROfyq+0eDEiRNp9uzZlJqa6qBa4LQQyJiAq6sr8V/E+E7xpUuXpipVqmDmK2OEeDcEIKATAWWm6siRI3KjijNnzhB/nZiYqJMWoJpmF+DbwXTp0kXuFYDbwDimNyDRcoz7o7P+888/gu+8zcsN8ICAXgWKFi0qr/mqVKnSo9eAgAD8fNFrQFFvCJhMgG/NwptV8LVUyuvVq1dNpoDmGkmAdx2eNm0aVahQAb+LHRhY4DsQP/2p+fotTrh4SQIeEDCCgJ+fn5z54lkv5VmqVClydXXFzx0jBBhtgIBOBXhbdZ6ZUp6HDx+msLAwnbYG1YbA4wKvvPIKTZgwgTp06IDftRroHAiCBoKgVCE1NVX89NNP9OGHH9Lt27c1VDNUBQLqCLi7uxPfs0NZesivfLPlsmXL4tovdYhRCgQg8F8BTqiUJX/KK89YxcXFwQgChhPg27h8+umn1KtXL/xBU0PRRaKloWAoVXnw4IHgm8d9+eWXFBMTo8EaokoQUFeAt5sPCAiQ132lT8L4a9zvS11rlAYBIwkkJyeL4OBgef1U+qSKd/eNj483UlPRFgg8UyBr1qw0aNAgGjt2LPn4+GBcr7F+goBoLCDpq3P79m3x+eef08KFC3HDYw3HCVWznQAnYLz5BidgypOXH/JuiF5eXvj5ZTt6lAwBTQnEx8eLy5cv0/nz52VCpTx5x7+kpCRN1RWVgYA9BLJkyUL9+vWTCRZuxWIPcevOgYGKdW52PerGjRuCt4NftGgRpaSk2PXcOBkEtCrA29XyskN+KjNh/DUnYdmyZcPPNq0GDvWCwHMEeOv0W7duEW9CocxQ8df8vH79OqWlpcEOAqYX4N1/O3XqROPHj8cNh3XQGzAY0UGQlCqeO3dO8HLC5cuX4xeOjuKGqtpfIH0Slj4Z4xsy+/n54eee/UOCM0JACijJ1JOJFJIpdBAIvFiAt2pv27YtTZo0iUqWLInfYzrpMAiUTgKVvprHjh0T48aNo02bNumw9qgyBBwr4O/vLzfk4C3pCxUqJK8N49ciRYrIr5GIOTY+OLu+BfjeUzdv3pQzUHztFH/Nr9euXSNe+hceHq7vBqL2ELCzgJOTE7399tvEl5KUK1cO43Y7+2f2dAhYZgUdePzff/8tb3q8ZcsWB9YCp4aAsQSyZcsmEy5OvNInYvx14cKFKX/+/NjRyVghR2ssFEhJSRG8I+6NGzdk8qQkUvxvfnJSdf/+fQtLw9sgAIEXCXCC1aJFC7mTYNWqVTFe12l3QeB0Grj01eabHnPCxTNcQggDtAhNgIB2BXh9PCdbyixY7ty5ibfVzZMnj/w+v+bLl49y5MiBn6/aDSNq9oRAVFSUTKLu3LlDfJ0UzzzxK/9bSaxCQ0MpOTkZdhCAgA0FlBksTrAqVaqE3yM2tLZH0QigPZTtdI6TJ0+KqVOn4houO3njNBB4kQDvCJUjRw6ZfHHixdeNKV+nf+XZM3d3d/wsRneyiUBkZKTgBImTqPSvUVFRj74XEhKCW4nYRB+FQsByAb4Gq1mzZvJmw1WqVMHvBMvpNP1OBFLT4bGucidOnBB8seS6deuwaYZ1hDgKAnYT4L9e8qwYJ2U5c+Z89Kp8zdeUPev/PDw88PPbblFy/Il4E4nIyEi6d++efCpf371797F/p/8/npXCKgfHxw41gMCLBFxcXKhDhw5ym/YyZcrg57rBugsCarCApm/O+fPn5QzXsmXLcJ8RA8cZTTOngLe3t0zMnnz6+PjI2TN+5RtZ8is//fz8Hv2bv49NP+zbb3iTiNjYWHrw4AHxK1/LxK/P+p6STKVPovg4PCAAAeMI8KqH7t2706hRo/i2JBiPGye0j7UEgTVoYNM3KyQkREyfPp3mz58vf6njAQEIQIAFeOMPJRn7b/L1KDHz8PCQCZvyPl7WwgkbX6Pm5eVFPEjg93h6evLSR+LEj/+P38Pv5bL5wQmes7OzZn/X8NI6rmd0dLRcAcA/I/l+hXFxcfIPVAkJCbwlufyav8f/x+/h9/Ix/OBlePweToZiYmJkEqUkVPyqvA+9DgIQgICvry8NGDCAhg0bxsvKNfuzEZFSRwABVsdRF6XwgGLOnDk0c+ZMbLGri4ihkhAwnoCSrD3ZMk7cOIF78pE+aXvy/5Tk6Mnvx8fH08OHD58qS0mSjKeKFkEAAloXyJs3Lw0dOlQmWVhRoPVoqVc/JFrqWeqmpPj4ePHjjz8Sz3LxfU3wgAAEIAABCEAAAhBQX6BEiRI0YsQIuUzQ09MT4271iTVdIgKu6fDYtnKpqanizz//pBkzZuDmx7alRukQgAAEIAABCJhIoFatWnIGq02bNrj3ooni/mRTkWiZOPjpm37s2DExd+5cWrp0qbzWAA8IQAACEIAABCAAAcsF+HrVVq1a0QcffEA1atTAGNtyOsO+E53AsKG1rmFhYWEy4Zo1a5bcMhgPCEAAAhCAAAQgAIHnC/DmP7w0cOTIkXwze4yt0VkeCaAzoDM8UyAuLk6sXLmSOOk6cuQIlCAAAQhAAAIQgAAE0glUqVJFbm7RqVMn3nkVY2r0jqcE0CnQKV4qcPjwYcFbwy9fvlxub4wHBCAAAQhAAAIQMKMA75DasmVL6tu3LzVu3BjjaDN2ggy0GR0kA1hmf+v9+/fFqlWr6LvvvqPTp0+bnQPthwAEIAABCEDAJALFixenXr16Ue/evSlXrlwYP5sk7pltJjpKZgVNejzPcvFuhT///DMlJyebVAHNhgAEIAABCEDAqAIuLi7UtGlTuXtgw4YNNX3zdaPGQO/tQqKl9wg6uP63b98WS5Yskddy3bhxw8G1wekhAAEIQAACEIBA5gTy5ctH7777Lg0aNAibW2SO0vRHI9EyfRdQB0C5Jxdfy/XLL79QamqqOgWjFAhAAAIQgAAEIGBjAWdnZ2rQoIG89qp169bk5uaGMbKNzc1QPDqRGaJs5zZeunRJ/Pjjj/KeXCEhIXY+O04HAQhAAAIQgAAELBMICAiQs1c9e/akoKAgjIstY8O7LBRAh7IQCm/LuADPcu3fv5+WLVtGK1asoAcPHmS8EBwBAQhAAAIQgAAEVBTw8PCgFi1aULdu3eQ1WJi9UhEXRT0mgEQLHcIuAtHR0eK3336TSdfOnTtJCGGX8+IkEIAABCAAAQhAgAX4vle8NJDve+Xr64sxMLqFzQXQyWxOjBM8KRAcHCx4huuHH36gK1euAAgCEIAABCAAAQjYRKBgwYLUpUsXuS178eLFMe61iTIKfZ4AOhz6hsME0i8tXLlyJcXGxjqsLjgxBCAAAQhAAALGEPD09KTmzZvL2Stsy26MmOq1FUi09Bo5g9U7Pj5ebNq0SW6gsXXrVuxaaLD4ojkQgAAEIAABWwrwroGvvfaa3Niic+fO5OPjgzGuLcFRtkUC6IQWMeFN9hS4fv26WL16NfHz8OHD9jw1zgUBCEAAAhCAgI4EqlWrRh06dJDPwoULY1yro9iZoarokGaIso7byEkXb6KxZs0a2rdvn45bgqpDAAIQgAAEIKCGQOnSpal9+/Zy5qpkyZIYy6qBijJsIoDOaRNWFGoLgWvXron169cj6bIFLsqEAAQgAAEIaFhASa54x8BSpUph/KrhWKFq/xNAR0Vv0KXA1atX5fJCvqbr7NmzumwDKg0BCEAAAhCAwPMFlOTqnXfeodKlS2PMis6iOwF0Wt2FDBV+UuD06dOClxauWrWKzp8/DyAIQAACEIAABHQqULRoUXkzYd7UomrVqhin6jSOqPa/AujA6AmGEjh+/Lic6fr111/p3LlzhmobGgMBCEAAAhAwogDPXLVu3VpuaFGhQgWMTY0YZJO2CZ3ZpIE3Q7N5eeGGDRuIt43fs2cPJScnm6HZaCMEIAABCEBA0wIuLi5Uo0YNOXPVsmVLLAvUdLRQucwIINHKjB6O1Y3AvXv3xM6dO2njxo3EyVd0dLRu6o6KQgACEIAABPQu4OXlRQ0aNJDJVatWrShv3rwYg+o9qKj/SwXQyV9KhDcYTSA5OVkcOHBA7l7ISwxv3rxptCaiPRCAAAQgAAGHC+TOnZveeOMNuRV7kyZNyMPDA+NOh0cFFbCnADq8PbVxLk0K8GYavLyQZ7v2799PQghN1hOVggAEIAABCGhdgK+34lmr5s2bU61atcjZ2RljTa0HDfWzmQA6v81oUbAeBYKDg4WyvPA///kPJSQk6LEZqDMEIAABCEDALgKenp5Ut25dea0VJ1gBAQEYW9pFHifRgwA+DHqIEuroEIGEhASxd+9e2rFjh3wePXoUs10OiQROCgEIQAACWhIIDAykRo0ayVmrxo0bk6enJ8aTWgoQ6qIZAXwwNBMKVETrAnfu3BG8eyEnXZs3b6Zbt25pvcqoHwQgAAEIQCDTAv7+/lSvXj2ZXDVr1gyzVpkWRQFmEUCiZZZIo52qC1y5ckUuM+Tru3jmKzExUfVzoEAIQAACEICAvQVcXV35flZyxoqXA1aqVIlcXFwwZrR3IHA+3QvgQ6P7EKIBWhCIj48X+/btwzJDLQQDdYAABCAAgQwLKMsBedaKdwrMli0bxogZVsQBEHhcAB8i9AgI2ECAN9XYvn077dq1i3bv3k0hISE2OAuKhAAEIAABCFgnEBAQIJcD1q9fX15nhU0srHPEURB4kQASLfQPCNhB4NatW49mvHiZ4dmzZ+1wVpwCAhCAAAQg8K9Avnz5qHbt2vI6K952vWzZshgDonNAwMYC+JDZGBjFQ+BZAqGhoXJHQ37ykkPsaIh+AgEIQAACagrwUkBOqDi54psFFy1aFGM+NYFRFgQsEMCHzgIkvAUCthYICwsTfN8uJF62lkb5EIAABIwpoFxjxckVLwksXLgwxnjGDDVapSMBfAh1FCxU1TwCvJU8J1785C3lz5w5Q6mpqeYBQEshAAEIQOC5Ai4uLrz0j15//XV5s2B+zZ07N8Z06DMQ0JgAPpQaCwiqA4FnCcTGxorjx4/TkSNH5FJDTsDu3LkDLAhAAAIQMIGAn58fVa1aVS4FrFKlilwOmCNHDozhTBB7NFHfAviQ6jt+qL2JBXiDDSXx4iWH/DXu5WXiDoGmQwAChhDge1iVKFFCJlNKYlW6dGlydnbGmM0QEUYjzCSAD62Zoo22GlogOTlZXLhwQc54KYkXdjc0dMjROAhAwAACvBugMkulJFZeXl4YnxkgtmgCBPBBRh+AgIEFeHfDgwcP0oEDB+STlx9GR0cbuMVoGgQgAAHtCmTLlo0qVapENWrUkM/q1avztusYi2k3ZKgZBDIlgA93pvhwMAT0J6AsOeSlhsrz9u3b+msIagwBCEBAwwLZs2cnXvLHs1XK85VXXiEXFxeMvTQcN1QNAmoK4MOupibKgoBOBSIjIwXvbJg++Tp37hwJIXTaIlQbAhCAgP0ElOV/SkJVpkwZKlasGMZY9gsBzgQBTQrgh4Amw4JKQcDxAtHR0eLkyZOPki++3uvUqVOUlJTk+MqhBhCAAAQcIMDbqhcuXPixmSpeAoit1R0QDJwSAjoQQKKlgyChihDQikBcXJxMvvjJM2D85AQMSw+1EiHUAwIQUEuAZ6l4ZoqX//Fr+fLl5dPb2xtjJ7WQUQ4EDC6AHxYGDzCaBwF7CERFRYkrV648SryUBOzatWtYfmiPAOAcEICA1QLKtVTpk6py5cpR3rx5MUayWhUHQgACLIAfIugHEICAzQSel4BdvXrVZudEwRCAAASeJfCshKps2bLY9Q/dBQIQsJkAEi2b0aJgCEDgeQJ3796Vm2/wssPz58/TpUuX6PLly8QzYMnJyYCDAAQgYJWAm5sbFS1alIoXLy6fpUqVerT0L2fOnBjzWKWKgyAAAWsF8EPHWjkcBwEIqC7AN10ODg4mnvF68smJWWJiournRIEQgIC+BFxdXalQoUIUGBj42JOvpSpZsiS5ublhbKOvkKK2EDCsAH4YGTa0aBgEjCXwvCSME7CLFy9SSkqKsRqM1kDA5ALKZhRPJlR8LZWnpyfGLybvH2g+BPQggB9UeogS6ggBCLxQ4OHDh+L69ety+SHPiN24cePRK3/NuyKmpqZCEQIQ0IgAb5POiRRvlV6kSBE5Q8VP/nexYsXk8j93d3eMUTQSL1QDAhCwTgA/xKxzw1EQgICOBJKSkkRERIRMuNIvSQwNDZXf4xmx2NhYHbUIVYWAtgXc3d2pYMGCMpnKnz//Y0v8+Hs8S+Xl5YUxiLbDiNpBAAKZFMAPuUwC4nAIQMAYArdv35bXhymzYfx1SEgI3blzh5SEDNeIGSPWaEXmBDw9PWUCxc+8efNSgQIF5ExU+lkpbI2eOWMcDQEIGEMAiZYx4ohWQAACdhCIj48XPAOmJF7pX6OiouTsGH8vLCwM9w+zQzxwCnUFPDw85OwTJ1C8Fbry9ZOv/P/Ozs4YP6jLj9IgAAEDCuAHpQGDiiZBAAKOFYiLixNKwsXJFz/Dw8Pl7Ni9e/cePSMjI+XXSUlJjq0wzm5IAV6+lzNnzkfPHDlyUK5cuSh37tzyqcxKKa/e3t4YExiyJ6BREICAowTwQ9VR8jgvBCAAgf8K8EwZz4ilfyqzY09+X/k3Zs3M1X14tolnmZ71TD8Llf7/eVmfi4sLfs+bq6ugtRCAgIYE8ANYQ8FAVSAAAQhYKpCQkCB4Aw9+cvKlfP3gwYOnvsf/x99P/z7l/ffv37f0lHifFQJ+fn7k4+Pz2JOTIf5e1qxZH31f+Z7yXv6/9N/DduZW4OMQCEAAAg4WQKLl4ADg9BCAAAQcLRAdHS04EePNPvg1OTmZ4uLi5JLG+Ph4evjwofy/hIQE+TV/j/+P38P3L+OkjbfPj4mJkdemKckbJ3ZPPpRynvw+n5PP/eQjLS2NoqOjn0mULVs2vlboqf/jJMXNze2p7/MmDjwz9OSDExp+cFLk5OREvr6+PBMkkyC+Oa5SnpeXF2XJkoXv4STL4a/5e7xEz9vbW56T38v/x8f6+vrid6yjOzfODwEIQMCBAv8PHKfv8WqlH6wAAAAASUVORK5CYII=", - "created": 1714545483871, - "lastRetrieved": 1715236891767 - } - } -} \ No newline at end of file diff --git a/docs/src/assets/img/enterprise/enterprise-arch.png b/docs/src/assets/img/enterprise/enterprise-arch.png deleted file mode 100644 index a7f37c7f246..00000000000 Binary files a/docs/src/assets/img/enterprise/enterprise-arch.png and /dev/null differ diff --git a/docs/src/assets/img/enterprise/lakefs-enterprise-architecture.png b/docs/src/assets/img/enterprise/lakefs-enterprise-architecture.png deleted file mode 100644 index ce1163fae9b..00000000000 Binary files a/docs/src/assets/img/enterprise/lakefs-enterprise-architecture.png and /dev/null differ diff --git a/docs/src/assets/img/experiment_branch_model.png b/docs/src/assets/img/experiment_branch_model.png deleted file mode 100644 index 72707573079..00000000000 Binary files a/docs/src/assets/img/experiment_branch_model.png and /dev/null differ diff --git a/docs/src/assets/img/flare_existing_ticket.png b/docs/src/assets/img/flare_existing_ticket.png deleted file mode 100644 index cbead4ac7e3..00000000000 Binary files a/docs/src/assets/img/flare_existing_ticket.png and /dev/null differ diff --git a/docs/src/assets/img/flare_new_ticket.png b/docs/src/assets/img/flare_new_ticket.png deleted file mode 100644 index 55a52b201d7..00000000000 Binary files a/docs/src/assets/img/flare_new_ticket.png and /dev/null differ diff --git a/docs/src/assets/img/gc-sample-commits.png b/docs/src/assets/img/gc-sample-commits.png deleted file mode 100644 index 14a3019500e..00000000000 Binary files a/docs/src/assets/img/gc-sample-commits.png and /dev/null differ diff --git a/docs/src/assets/img/gc_rules_from_ui.png b/docs/src/assets/img/gc_rules_from_ui.png deleted file mode 100644 index 8a60f1ab9c0..00000000000 Binary files a/docs/src/assets/img/gc_rules_from_ui.png and /dev/null differ diff --git a/docs/src/assets/img/glue_export_hook_result_log.png b/docs/src/assets/img/glue_export_hook_result_log.png deleted file mode 100644 index fa7e7d7e0d5..00000000000 Binary files a/docs/src/assets/img/glue_export_hook_result_log.png and /dev/null differ diff --git a/docs/src/assets/img/grafana.png b/docs/src/assets/img/grafana.png deleted file mode 100644 index 7d8f4164a6a..00000000000 Binary files a/docs/src/assets/img/grafana.png and /dev/null differ diff --git a/docs/src/assets/img/graveler1.png b/docs/src/assets/img/graveler1.png deleted file mode 100644 index 96e913972a3..00000000000 Binary files a/docs/src/assets/img/graveler1.png and /dev/null differ diff --git a/docs/src/assets/img/graveler2.png b/docs/src/assets/img/graveler2.png deleted file mode 100644 index a7e7ed6694a..00000000000 Binary files a/docs/src/assets/img/graveler2.png and /dev/null differ diff --git a/docs/src/assets/img/image-modalities.png b/docs/src/assets/img/image-modalities.png deleted file mode 100644 index 5329e98c387..00000000000 Binary files a/docs/src/assets/img/image-modalities.png and /dev/null differ diff --git a/docs/src/assets/img/iso-env-commit.png b/docs/src/assets/img/iso-env-commit.png deleted file mode 100644 index 14c7f0d0548..00000000000 Binary files a/docs/src/assets/img/iso-env-commit.png and /dev/null differ diff --git a/docs/src/assets/img/iso-env-create-repo.png b/docs/src/assets/img/iso-env-create-repo.png deleted file mode 100644 index 332c338df72..00000000000 Binary files a/docs/src/assets/img/iso-env-create-repo.png and /dev/null differ diff --git a/docs/src/assets/img/iso-env-df-counts.png b/docs/src/assets/img/iso-env-df-counts.png deleted file mode 100644 index e0d528da28e..00000000000 Binary files a/docs/src/assets/img/iso-env-df-counts.png and /dev/null differ diff --git a/docs/src/assets/img/iso-env-ex-repo.png b/docs/src/assets/img/iso-env-ex-repo.png deleted file mode 100644 index 4bc70051478..00000000000 Binary files a/docs/src/assets/img/iso-env-ex-repo.png and /dev/null differ diff --git a/docs/src/assets/img/iso-env-example-repo.png b/docs/src/assets/img/iso-env-example-repo.png deleted file mode 100644 index 69d2bd46084..00000000000 Binary files a/docs/src/assets/img/iso-env-example-repo.png and /dev/null differ diff --git a/docs/src/assets/img/iso-env-objects.png b/docs/src/assets/img/iso-env-objects.png deleted file mode 100644 index e6dac980c3b..00000000000 Binary files a/docs/src/assets/img/iso-env-objects.png and /dev/null differ diff --git a/docs/src/assets/img/iso-env-two-branches.png b/docs/src/assets/img/iso-env-two-branches.png deleted file mode 100644 index ec35c467cfe..00000000000 Binary files a/docs/src/assets/img/iso-env-two-branches.png and /dev/null differ diff --git a/docs/src/assets/img/iso-env-upload-object.png b/docs/src/assets/img/iso-env-upload-object.png deleted file mode 100644 index a52efed25bc..00000000000 Binary files a/docs/src/assets/img/iso-env-upload-object.png and /dev/null differ diff --git a/docs/src/assets/img/iso_env_dev_test_branching.png b/docs/src/assets/img/iso_env_dev_test_branching.png deleted file mode 100644 index 4f3ece156cf..00000000000 Binary files a/docs/src/assets/img/iso_env_dev_test_branching.png and /dev/null differ diff --git a/docs/src/assets/img/iso_env_myrepo.png b/docs/src/assets/img/iso_env_myrepo.png deleted file mode 100644 index d15d79570c6..00000000000 Binary files a/docs/src/assets/img/iso_env_myrepo.png and /dev/null differ diff --git a/docs/src/assets/img/iso_env_sampledata.png b/docs/src/assets/img/iso_env_sampledata.png deleted file mode 100644 index 4dac1d15048..00000000000 Binary files a/docs/src/assets/img/iso_env_sampledata.png and /dev/null differ diff --git a/docs/src/assets/img/iso_env_testenv_branch.png b/docs/src/assets/img/iso_env_testenv_branch.png deleted file mode 100644 index 47877e1cade..00000000000 Binary files a/docs/src/assets/img/iso_env_testenv_branch.png and /dev/null differ diff --git a/docs/src/assets/img/job_branching_model.png b/docs/src/assets/img/job_branching_model.png deleted file mode 100644 index 31ea3d45dfe..00000000000 Binary files a/docs/src/assets/img/job_branching_model.png and /dev/null differ diff --git a/docs/src/assets/img/lakeFSArchitecture.excalidraw b/docs/src/assets/img/lakeFSArchitecture.excalidraw deleted file mode 100644 index 36bc1a59caf..00000000000 --- a/docs/src/assets/img/lakeFSArchitecture.excalidraw +++ /dev/null @@ -1,2205 +0,0 @@ -{ - "type": "excalidraw", - "version": 2, - "source": "https://excalidraw.com", - "elements": [ - { - "id": "fKdWdkNM9XYc-7n1H_JyG", - "type": "rectangle", - "x": 358.7510170252085, - "y": 3361.6559190850235, - "width": 389.40315290385337, - "height": 461.69072919178734, - "angle": 0, - "strokeColor": "#1e1e1e", - "backgroundColor": "transparent", - "fillStyle": "hachure", - "strokeWidth": 1, - "strokeStyle": "solid", - "roughness": 1, - "opacity": 100, - "groupIds": [], - "frameId": null, - "index": "aV", - "roundness": { - "type": 3 - }, - "seed": 1911862587, - "version": 901, - "versionNonce": 1470497424, - "isDeleted": false, - "boundElements": [ - { - "id": "94vLrbjNaZ-Is-8OTvFrb", - "type": "arrow" - }, - { - "id": "GyPIp862EuIWsednp_LJE", - "type": "arrow" - }, - { - "id": "FoG-M0XjPajxjfIcaEGnO", - "type": "arrow" - } - ], - "updated": 1731847128060, - "link": null, - "locked": false - }, - { - "id": "rc8yXewY6HEPU-FwSwn3-", - "type": "rectangle", - "x": 882.1160590331633, - "y": 3401.0912156421628, - "width": 181.98388158898558, - "height": 93.00907374489543, - "angle": 0, - "strokeColor": "#1e1e1e", - "backgroundColor": "transparent", - "fillStyle": "hachure", - "strokeWidth": 1, - "strokeStyle": "solid", - "roughness": 1, - "opacity": 100, - "groupIds": [], - "frameId": null, - "index": "aVG", - "roundness": { - "type": 3 - }, - "seed": 1701992539, - "version": 383, - "versionNonce": 1428039067, - "isDeleted": false, - "boundElements": [ - { - "id": "HCNSYE_W_xRA4UTqgTuuu", - "type": "arrow" - }, - { - "id": "GyPIp862EuIWsednp_LJE", - "type": "arrow" - } - ], - "updated": 1722538040803, - "link": null, - "locked": false - }, - { - "id": "iw67kxGsUMx8mEWqnsFSX", - "type": "text", - "x": 408.4219476901487, - "y": 3312.2646968477534, - "width": 290.91986206173897, - "height": 35, - "angle": 0, - "strokeColor": "#1e1e1e", - "backgroundColor": "transparent", - "fillStyle": "hachure", - "strokeWidth": 1, - "strokeStyle": "solid", - "roughness": 1, - "opacity": 100, - "groupIds": [], - "frameId": null, - "index": "aW", - "roundness": null, - "seed": 1345709877, - "version": 488, - "versionNonce": 1720203920, - "isDeleted": false, - "boundElements": [], - "updated": 1731847128061, - "link": null, - "locked": false, - "text": "Applications / Clients", - "fontSize": 28, - "fontFamily": 1, - "textAlign": "left", - "verticalAlign": "top", - "containerId": null, - "originalText": "Applications / Clients", - "autoResize": true, - "lineHeight": 1.25 - }, - { - "id": "C1-kKCZJAGayLq8AFHcP_", - "type": "text", - "x": 1267.0388624342286, - "y": 3282.233183635602, - "width": 179.22793579101562, - "height": 35, - "angle": 0, - "strokeColor": "#1e1e1e", - "backgroundColor": "transparent", - "fillStyle": "hachure", - "strokeWidth": 1, - "strokeStyle": "solid", - "roughness": 1, - "opacity": 100, - "groupIds": [], - "frameId": null, - "index": "aWG", - "roundness": null, - "seed": 413344987, - "version": 188, - "versionNonce": 1377980475, - "isDeleted": false, - "boundElements": [], - "updated": 1722537743081, - "link": null, - "locked": false, - "text": "Object Store", - "fontSize": 28, - "fontFamily": 1, - "textAlign": "left", - "verticalAlign": "top", - "containerId": null, - "originalText": "Object Store", - "autoResize": true, - "lineHeight": 1.25 - }, - { - "id": "9OomwBL5b71Vw2A8hnvQG", - "type": "text", - "x": 1224.8463054463277, - "y": 3587.374912933678, - "width": 165.03779590129852, - "height": 52.303226761469986, - "angle": 0, - "strokeColor": "#1e1e1e", - "backgroundColor": "transparent", - "fillStyle": "hachure", - "strokeWidth": 1, - "strokeStyle": "solid", - "roughness": 1, - "opacity": 100, - "groupIds": [], - "frameId": null, - "index": "aWV", - "roundness": null, - "seed": 386188827, - "version": 524, - "versionNonce": 1295073589, - "isDeleted": false, - "boundElements": [], - "updated": 1722540974228, - "link": null, - "locked": false, - "text": "lakeFS Managed\nBucket/s*", - "fontSize": 20.921290704587996, - "fontFamily": 1, - "textAlign": "center", - "verticalAlign": "top", - "containerId": null, - "originalText": "lakeFS Managed\nBucket/s*", - "autoResize": true, - "lineHeight": 1.25 - }, - { - "id": "9amrjmm6vzKNvV1txfde1", - "type": "text", - "x": 1236.8717429018543, - "y": 3529.01430153436, - "width": 61.157129574892735, - "height": 30.444620954311894, - "angle": 0, - "strokeColor": "#258c81", - "backgroundColor": "transparent", - "fillStyle": "hachure", - "strokeWidth": 1, - "strokeStyle": "solid", - "roughness": 1, - "opacity": 100, - "groupIds": [], - "frameId": null, - "index": "aWd", - "roundness": null, - "seed": 235752443, - "version": 564, - "versionNonce": 615590805, - "isDeleted": false, - "boundElements": [ - { - "id": "FoG-M0XjPajxjfIcaEGnO", - "type": "arrow" - } - ], - "updated": 1722537938459, - "link": null, - "locked": false, - "text": "Metadata\nFiles", - "fontSize": 12.177848381724752, - "fontFamily": 1, - "textAlign": "center", - "verticalAlign": "top", - "containerId": null, - "originalText": "Metadata\nFiles", - "autoResize": true, - "lineHeight": 1.25 - }, - { - "id": "ToMIIJgI6tA6N828WY6rq", - "type": "text", - "x": 1318.8706249429092, - "y": 3530.2828956536414, - "width": 32.62775346636772, - "height": 30.44462095431188, - "angle": 0, - "strokeColor": "#1971c2", - "backgroundColor": "transparent", - "fillStyle": "hachure", - "strokeWidth": 1, - "strokeStyle": "solid", - "roughness": 1, - "opacity": 100, - "groupIds": [], - "frameId": null, - "index": "aWh", - "roundness": null, - "seed": 785567637, - "version": 675, - "versionNonce": 904819125, - "isDeleted": false, - "boundElements": [], - "updated": 1722538759880, - "link": null, - "locked": false, - "text": "Data\nFiles", - "fontSize": 12.177848381724752, - "fontFamily": 1, - "textAlign": "center", - "verticalAlign": "top", - "containerId": null, - "originalText": "Data\nFiles", - "autoResize": true, - "lineHeight": 1.25 - }, - { - "id": "SSwnkbraAHrWf4k26Yw0H", - "type": "text", - "x": 1250.5732655789477, - "y": 3827.328135003164, - "width": 105.2199496626854, - "height": 50, - "angle": 0, - "strokeColor": "#1e1e1e", - "backgroundColor": "transparent", - "fillStyle": "hachure", - "strokeWidth": 1, - "strokeStyle": "solid", - "roughness": 1, - "opacity": 100, - "groupIds": [], - "frameId": null, - "index": "aWl", - "roundness": null, - "seed": 1034420533, - "version": 503, - "versionNonce": 518870299, - "isDeleted": false, - "boundElements": [], - "updated": 1722538174899, - "link": null, - "locked": false, - "text": "Unmanaged\nBucket/s", - "fontSize": 20, - "fontFamily": 1, - "textAlign": "center", - "verticalAlign": "top", - "containerId": null, - "originalText": "Unmanaged\nBucket/s", - "autoResize": true, - "lineHeight": 1.25 - }, - { - "id": "xluZVa0RqMjTBXzbb4Q1-", - "type": "image", - "x": 419.965696581165, - "y": 3384.0780312077163, - "width": 81.20410969829025, - "height": 41.95545667744996, - "angle": 0, - "strokeColor": "transparent", - "backgroundColor": "transparent", - "fillStyle": "hachure", - "strokeWidth": 1, - "strokeStyle": "solid", - "roughness": 1, - "opacity": 100, - "groupIds": [], - "frameId": null, - "index": "aX", - "roundness": null, - "seed": 1509193627, - "version": 614, - "versionNonce": 1019373712, - "isDeleted": false, - "boundElements": [], - "updated": 1731847128061, - "link": null, - "locked": false, - "status": "saved", - "fileId": "0e322a8749f5fd6440745c039816dc9c40aad84a", - "scale": [ - 1, - 1 - ], - "crop": null - }, - { - "id": "HkpOPASwk5EvC4_E-VpJp", - "type": "image", - "x": 552.1739989997923, - "y": 3347.066295811333, - "width": 126.30894192327354, - "height": 126.30894192327354, - "angle": 0, - "strokeColor": "transparent", - "backgroundColor": "transparent", - "fillStyle": "hachure", - "strokeWidth": 1, - "strokeStyle": "solid", - "roughness": 1, - "opacity": 100, - "groupIds": [], - "frameId": null, - "index": "aY", - "roundness": null, - "seed": 198202651, - "version": 1290, - "versionNonce": 1736890000, - "isDeleted": false, - "boundElements": [ - { - "id": "GyPIp862EuIWsednp_LJE", - "type": "arrow" - }, - { - "id": "FoG-M0XjPajxjfIcaEGnO", - "type": "arrow" - } - ], - "updated": 1731847128061, - "link": null, - "locked": false, - "status": "saved", - "fileId": "97a54ef0c7419b7b3fb8526c7386b19214357d1d", - "scale": [ - 1, - 1 - ], - "crop": null - }, - { - "id": "4YsWiagkSZ8dcCTLG9cME", - "type": "image", - "x": 403.4820510628298, - "y": 3752.6177834090313, - "width": 115.98831381729387, - "height": 52.91966817914034, - "angle": 0, - "strokeColor": "transparent", - "backgroundColor": "transparent", - "fillStyle": "hachure", - "strokeWidth": 1, - "strokeStyle": "solid", - "roughness": 1, - "opacity": 100, - "groupIds": [], - "frameId": null, - "index": "aa", - "roundness": null, - "seed": 134767253, - "version": 762, - "versionNonce": 1536001168, - "isDeleted": false, - "boundElements": [], - "updated": 1731847128061, - "link": null, - "locked": false, - "status": "saved", - "fileId": "bc3358bef265f112f724f733549d4cd7de1dee8a", - "scale": [ - 1, - 1 - ], - "crop": null - }, - { - "id": "kcyl4yj8L_MmIInlnhzHu", - "type": "image", - "x": 548.9271827941639, - "y": 3738.8980800186364, - "width": 148.48822663420256, - "height": 66.81970198539115, - "angle": 0, - "strokeColor": "transparent", - "backgroundColor": "transparent", - "fillStyle": "hachure", - "strokeWidth": 1, - "strokeStyle": "solid", - "roughness": 1, - "opacity": 100, - "groupIds": [], - "frameId": null, - "index": "ab", - "roundness": null, - "seed": 218255285, - "version": 664, - "versionNonce": 915305104, - "isDeleted": false, - "boundElements": [], - "updated": 1731847128061, - "link": null, - "locked": false, - "status": "saved", - "fileId": "ec273749eb4f3f53fb9f9368bfa3b7c3af3d1c37", - "scale": [ - 1, - 1 - ], - "crop": null - }, - { - "id": "XC4ZfmwenvusZshR_P-vg", - "type": "image", - "x": 924.799911833121, - "y": 3408.648705162707, - "width": 97.38623046777609, - "height": 76.28588053309127, - "angle": 0, - "strokeColor": "transparent", - "backgroundColor": "transparent", - "fillStyle": "hachure", - "strokeWidth": 1, - "strokeStyle": "solid", - "roughness": 1, - "opacity": 100, - "groupIds": [], - "frameId": null, - "index": "ac", - "roundness": null, - "seed": 111869403, - "version": 393, - "versionNonce": 204275739, - "isDeleted": false, - "boundElements": [], - "updated": 1722538040803, - "link": null, - "locked": false, - "status": "saved", - "fileId": "57c766831721e9fb1cd3ac887423f3539a447a55", - "scale": [ - 1, - 1 - ], - "crop": null - }, - { - "id": "PLXjmnHvBPwOF5s_2M80N", - "type": "image", - "x": 1195.0597551231497, - "y": 3273.658229707978, - "width": 57.78143547920078, - "height": 57.78143547920078, - "angle": 0, - "strokeColor": "transparent", - "backgroundColor": "transparent", - "fillStyle": "hachure", - "strokeWidth": 1, - "strokeStyle": "solid", - "roughness": 1, - "opacity": 100, - "groupIds": [], - "frameId": null, - "index": "ad", - "roundness": null, - "seed": 1661221877, - "version": 242, - "versionNonce": 1515296795, - "isDeleted": false, - "boundElements": [], - "updated": 1722537740595, - "link": null, - "locked": false, - "status": "saved", - "fileId": "14425b5cfc24549457fe531a77b482c2336c0d1d", - "scale": [ - 1, - 1 - ], - "crop": null - }, - { - "type": "ellipse", - "version": 413, - "versionNonce": 973815451, - "index": "am", - "isDeleted": false, - "id": "UgXMbNZ2cISgBrh6ismcD", - "fillStyle": "solid", - "strokeWidth": 4, - "strokeStyle": "solid", - "roughness": 0, - "opacity": 100, - "angle": 0, - "x": 1214.1092737197202, - "y": 3426.8532767163338, - "strokeColor": "#1e1e1e", - "backgroundColor": "transparent", - "width": 185.48977829962644, - "height": 39.201122455943676, - "seed": 1418848981, - "groupIds": [], - "frameId": null, - "roundness": { - "type": 2 - }, - "boundElements": [], - "updated": 1722536698420, - "link": null, - "locked": false - }, - { - "type": "ellipse", - "version": 530, - "versionNonce": 106559931, - "index": "amG", - "isDeleted": false, - "id": "_hfeDSwLW7xKar-modPKg", - "fillStyle": "solid", - "strokeWidth": 4, - "strokeStyle": "solid", - "roughness": 0, - "opacity": 100, - "angle": 0, - "x": 1237.1477084934322, - "y": 3716.930821703292, - "strokeColor": "#1e1e1e", - "backgroundColor": "transparent", - "width": 127.96422399257345, - "height": 27.043760905302562, - "seed": 1436675061, - "groupIds": [], - "frameId": null, - "roundness": { - "type": 2 - }, - "boundElements": [], - "updated": 1722538174899, - "link": null, - "locked": false - }, - { - "type": "line", - "version": 469, - "versionNonce": 776064149, - "index": "an", - "isDeleted": false, - "id": "cwJIg6NqVo2NMUoXhDnjW", - "fillStyle": "solid", - "strokeWidth": 4, - "strokeStyle": "solid", - "roughness": 0, - "opacity": 100, - "angle": 0, - "x": 1400.4484126719815, - "y": 3445.719602817568, - "strokeColor": "#1e1e1e", - "backgroundColor": "#12b886", - "width": 27.435039617214706, - "height": 131.1158512677214, - "seed": 219662389, - "groupIds": [], - "frameId": null, - "roundness": null, - "boundElements": [], - "updated": 1722536698420, - "link": null, - "locked": false, - "startBinding": null, - "endBinding": null, - "lastCommittedPoint": null, - "startArrowhead": null, - "endArrowhead": null, - "points": [ - [ - 0, - 0 - ], - [ - -27.435039617214706, - 131.1158512677214 - ] - ] - }, - { - "type": "line", - "version": 586, - "versionNonce": 1846086235, - "index": "anG", - "isDeleted": false, - "id": "2z_yZfH_SMtR9BrRtmG8E", - "fillStyle": "solid", - "strokeWidth": 4, - "strokeStyle": "solid", - "roughness": 0, - "opacity": 100, - "angle": 0, - "x": 1365.6978827081718, - "y": 3729.9461738227797, - "strokeColor": "#1e1e1e", - "backgroundColor": "#12b886", - "width": 18.926668558261248, - "height": 90.45316844089105, - "seed": 1052424667, - "groupIds": [], - "frameId": null, - "roundness": null, - "boundElements": [], - "updated": 1722538174899, - "link": null, - "locked": false, - "startBinding": null, - "endBinding": null, - "lastCommittedPoint": null, - "startArrowhead": null, - "endArrowhead": null, - "points": [ - [ - 0, - 0 - ], - [ - -18.926668558261248, - 90.45316844089105 - ] - ] - }, - { - "type": "line", - "version": 673, - "versionNonce": 687780667, - "index": "ao", - "isDeleted": false, - "id": "H_XtdgYlVr7iUFJpqCbWp", - "fillStyle": "solid", - "strokeWidth": 4, - "strokeStyle": "solid", - "roughness": 0, - "opacity": 100, - "angle": 0, - "x": 1212.980854385111, - "y": 3446.065940141501, - "strokeColor": "#1e1e1e", - "backgroundColor": "#12b886", - "width": 27.435039617214724, - "height": 131.11585126772144, - "seed": 1740306837, - "groupIds": [], - "frameId": null, - "roundness": null, - "boundElements": [], - "updated": 1722536698420, - "link": null, - "locked": false, - "startBinding": null, - "endBinding": null, - "lastCommittedPoint": null, - "startArrowhead": null, - "endArrowhead": null, - "points": [ - [ - 0, - 0 - ], - [ - 27.435039617214724, - 131.11585126772144 - ] - ] - }, - { - "type": "line", - "version": 790, - "versionNonce": 2060257019, - "index": "aoG", - "isDeleted": false, - "id": "CFRTG3kjWCUrlOVzJ7Vpo", - "fillStyle": "solid", - "strokeWidth": 4, - "strokeStyle": "solid", - "roughness": 0, - "opacity": 100, - "angle": 0, - "x": 1236.3692434706413, - "y": 3730.185102281819, - "strokeColor": "#1e1e1e", - "backgroundColor": "#12b886", - "width": 18.92666855826126, - "height": 90.45316844089108, - "seed": 717923669, - "groupIds": [], - "frameId": null, - "roundness": null, - "boundElements": [], - "updated": 1722538174899, - "link": null, - "locked": false, - "startBinding": null, - "endBinding": null, - "lastCommittedPoint": null, - "startArrowhead": null, - "endArrowhead": null, - "points": [ - [ - 0, - 0 - ], - [ - 18.92666855826126, - 90.45316844089108 - ] - ] - }, - { - "type": "line", - "version": 648, - "versionNonce": 1910862325, - "index": "ap", - "isDeleted": false, - "id": "akl7vry0vw3MofnYpEndn", - "fillStyle": "solid", - "strokeWidth": 4, - "strokeStyle": "solid", - "roughness": 0, - "opacity": 100, - "angle": 0, - "x": 1241.0102979672567, - "y": 3576.4837884948356, - "strokeColor": "#1e1e1e", - "backgroundColor": "#12b886", - "width": 132.9629216786985, - "height": 9.835979999683579, - "seed": 1571880693, - "groupIds": [], - "frameId": null, - "roundness": { - "type": 2 - }, - "boundElements": [], - "updated": 1722536698420, - "link": null, - "locked": false, - "startBinding": null, - "endBinding": null, - "lastCommittedPoint": null, - "startArrowhead": null, - "endArrowhead": null, - "points": [ - [ - 0, - 0 - ], - [ - 64.33734309428377, - 9.835979999683579 - ], - [ - 132.9629216786985, - 1.3938745221653432 - ] - ] - }, - { - "type": "line", - "version": 767, - "versionNonce": 321417115, - "index": "apG", - "isDeleted": false, - "id": "dZYE85DV9lUebPHuRCjgl", - "fillStyle": "solid", - "strokeWidth": 4, - "strokeStyle": "solid", - "roughness": 0, - "opacity": 100, - "angle": 0, - "x": 1255.70597474399, - "y": 3820.156737982185, - "strokeColor": "#1e1e1e", - "backgroundColor": "#12b886", - "width": 91.72741079519767, - "height": 6.785568236718933, - "seed": 949798523, - "groupIds": [], - "frameId": null, - "roundness": { - "type": 2 - }, - "boundElements": [], - "updated": 1722538174899, - "link": null, - "locked": false, - "startBinding": null, - "endBinding": null, - "lastCommittedPoint": null, - "startArrowhead": null, - "endArrowhead": null, - "points": [ - [ - 0, - 0 - ], - [ - 44.384538373350125, - 6.785568236718933 - ], - [ - 91.72741079519767, - 0.961595152072412 - ] - ] - }, - { - "type": "line", - "version": 1251, - "versionNonce": 517641179, - "index": "aq", - "isDeleted": false, - "id": "Fr7P_CVOlfsTYH98ZGC7W", - "fillStyle": "solid", - "strokeWidth": 4, - "strokeStyle": "solid", - "roughness": 0, - "opacity": 100, - "angle": 0, - "x": 1401.550970267136, - "y": 3447.863697266036, - "strokeColor": "#1e1e1e", - "backgroundColor": "#12b886", - "width": 204.20793772300001, - "height": 73.92223842015714, - "seed": 629102677, - "groupIds": [], - "frameId": null, - "roundness": { - "type": 2 - }, - "boundElements": [], - "updated": 1722536698420, - "link": null, - "locked": false, - "startBinding": null, - "endBinding": null, - "lastCommittedPoint": null, - "startArrowhead": null, - "endArrowhead": null, - "points": [ - [ - 0, - 0 - ], - [ - 8.41304386281733, - -6.992816983523688 - ], - [ - -8.914834167083862, - -46.345262208693256 - ], - [ - -56.84501538608395, - -71.12383284278236 - ], - [ - -123.82021026334682, - -73.92223842015714 - ], - [ - -171.6030768976081, - -53.21233210229683 - ], - [ - -195.7948938601827, - -6.2553848968735215 - ], - [ - -188.10231038835357, - -0.4688874539394121 - ] - ] - }, - { - "type": "line", - "version": 1368, - "versionNonce": 692962363, - "index": "aqV", - "isDeleted": false, - "id": "nya0fBWtyDxdIUTsvDnGM", - "fillStyle": "solid", - "strokeWidth": 4, - "strokeStyle": "solid", - "roughness": 0, - "opacity": 100, - "angle": 0, - "x": 1366.458506438301, - "y": 3731.4253247753554, - "strokeColor": "#1e1e1e", - "backgroundColor": "#12b886", - "width": 140.87736005396957, - "height": 50.996890297369326, - "seed": 1096102581, - "groupIds": [], - "frameId": null, - "roundness": { - "type": 2 - }, - "boundElements": [], - "updated": 1722538174899, - "link": null, - "locked": false, - "startBinding": null, - "endBinding": null, - "lastCommittedPoint": null, - "startArrowhead": null, - "endArrowhead": null, - "points": [ - [ - 0, - 0 - ], - [ - 5.803924287309746, - -4.824149379127804 - ], - [ - -6.150095421272407, - -31.972303641918348 - ], - [ - -39.21579047863243, - -49.066348348330976 - ], - [ - -85.42010921675873, - -50.996890297369326 - ], - [ - -118.38417605130402, - -36.709703611302615 - ], - [ - -135.07343576665983, - -4.315415552496223 - ], - [ - -129.76653700655336, - -0.32347237531487866 - ] - ] - }, - { - "id": "rV6rckVoN-g4RRvph38Hu", - "type": "image", - "x": 451.890835890738, - "y": 3695.0442749081635, - "width": 167.7464959390759, - "height": 46.59624887196553, - "angle": 0, - "strokeColor": "transparent", - "backgroundColor": "transparent", - "fillStyle": "hachure", - "strokeWidth": 1, - "strokeStyle": "solid", - "roughness": 1, - "opacity": 100, - "groupIds": [], - "frameId": null, - "index": "as", - "roundness": null, - "seed": 2014252859, - "version": 851, - "versionNonce": 524394640, - "isDeleted": false, - "boundElements": [], - "updated": 1731847128061, - "link": null, - "locked": false, - "status": "saved", - "fileId": "00b5aa438f1425e928c19864c99e6812ef49bd10", - "scale": [ - 1, - 1 - ], - "crop": null - }, - { - "type": "line", - "version": 688, - "versionNonce": 122856315, - "index": "au", - "isDeleted": false, - "id": "Vz387B1b2vmibhxvnqQSH", - "fillStyle": "solid", - "strokeWidth": 1, - "strokeStyle": "solid", - "roughness": 0, - "opacity": 100, - "angle": 0, - "x": 1272.6330163883117, - "y": 3476.5593270274376, - "strokeColor": "#1e1e1e", - "backgroundColor": "#2ce5b4", - "width": 28.98577851804393, - "height": 42.9811349199005, - "seed": 1643133019, - "groupIds": [ - "KDDtU5RMPJKd3ckJPcy7u" - ], - "frameId": null, - "roundness": null, - "boundElements": [], - "updated": 1722536755118, - "link": null, - "locked": false, - "startBinding": null, - "endBinding": null, - "lastCommittedPoint": null, - "startArrowhead": null, - "endArrowhead": null, - "points": [ - [ - 0, - 0 - ], - [ - 8.907146199098388, - 15.427629767282772 - ], - [ - 8.907146199098388, - 42.9811349199005 - ], - [ - -20.07863231894554, - 42.9811349199005 - ], - [ - -20.07863231894554, - 1.3633462798771523 - ], - [ - 0, - 0 - ] - ] - }, - { - "type": "line", - "version": 572, - "versionNonce": 633764891, - "index": "av", - "isDeleted": false, - "id": "LmVPBMi0EdUrxG5bIS9xR", - "fillStyle": "solid", - "strokeWidth": 1, - "strokeStyle": "solid", - "roughness": 0, - "opacity": 100, - "angle": 0, - "x": 1281.2718300799863, - "y": 3490.260528414957, - "strokeColor": "#1e1e1e", - "backgroundColor": "#2ce5b4", - "width": 13.070403643350538, - "height": 13.168462466172253, - "seed": 94270715, - "groupIds": [ - "KDDtU5RMPJKd3ckJPcy7u" - ], - "frameId": null, - "roundness": null, - "boundElements": [], - "updated": 1722536755118, - "link": null, - "locked": false, - "startBinding": null, - "endBinding": null, - "lastCommittedPoint": null, - "startArrowhead": null, - "endArrowhead": null, - "points": [ - [ - 0, - 0 - ], - [ - -13.070403643350538, - 0 - ], - [ - -9.54192475998025, - -13.168462466172253 - ] - ] - }, - { - "type": "line", - "version": 797, - "versionNonce": 882216149, - "index": "aw", - "isDeleted": false, - "id": "ev_I2v8T0dl-snNInpQe2", - "fillStyle": "solid", - "strokeWidth": 1, - "strokeStyle": "solid", - "roughness": 0, - "opacity": 100, - "angle": 0, - "x": 1340.3672103751042, - "y": 3477.9419639990383, - "strokeColor": "#1971c2", - "backgroundColor": "#a5d8ff", - "width": 28.98577851804393, - "height": 42.9811349199005, - "seed": 2016632891, - "groupIds": [ - "dRFmKGMiTbRgGwfpJBDTA" - ], - "frameId": null, - "roundness": null, - "boundElements": [], - "updated": 1722538773231, - "link": null, - "locked": false, - "startBinding": null, - "endBinding": null, - "lastCommittedPoint": null, - "startArrowhead": null, - "endArrowhead": null, - "points": [ - [ - 0, - 0 - ], - [ - 8.907146199098388, - 15.427629767282772 - ], - [ - 8.907146199098388, - 42.9811349199005 - ], - [ - -20.07863231894554, - 42.9811349199005 - ], - [ - -20.07863231894554, - 1.3633462798771523 - ], - [ - 0, - 0 - ] - ] - }, - { - "type": "line", - "version": 681, - "versionNonce": 854988539, - "index": "ax", - "isDeleted": false, - "id": "nURCUYMNMyP0_7-yyrBkJ", - "fillStyle": "solid", - "strokeWidth": 1, - "strokeStyle": "solid", - "roughness": 0, - "opacity": 100, - "angle": 0, - "x": 1349.0060240667788, - "y": 3491.643165386558, - "strokeColor": "#1971c2", - "backgroundColor": "#a5d8ff", - "width": 13.070403643350538, - "height": 13.168462466172253, - "seed": 1600001269, - "groupIds": [ - "dRFmKGMiTbRgGwfpJBDTA" - ], - "frameId": null, - "roundness": null, - "boundElements": [], - "updated": 1722538773231, - "link": null, - "locked": false, - "startBinding": null, - "endBinding": null, - "lastCommittedPoint": null, - "startArrowhead": null, - "endArrowhead": null, - "points": [ - [ - 0, - 0 - ], - [ - -13.070403643350538, - 0 - ], - [ - -9.54192475998025, - -13.168462466172253 - ] - ] - }, - { - "type": "line", - "version": 885, - "versionNonce": 376624187, - "index": "axG", - "isDeleted": false, - "id": "XYysRAd24zX_Q2p2eGnra", - "fillStyle": "solid", - "strokeWidth": 1, - "strokeStyle": "solid", - "roughness": 0, - "opacity": 100, - "angle": 0, - "x": 1331.0303939180938, - "y": 3759.3131073009517, - "strokeColor": "#1971c2", - "backgroundColor": "#a5d8ff", - "width": 28.98577851804393, - "height": 42.9811349199005, - "seed": 998622907, - "groupIds": [ - "irGlI1gUH6Ec0F0oKCLIA" - ], - "frameId": null, - "roundness": null, - "boundElements": [], - "updated": 1722538776295, - "link": null, - "locked": false, - "startBinding": null, - "endBinding": null, - "lastCommittedPoint": null, - "startArrowhead": null, - "endArrowhead": null, - "points": [ - [ - 0, - 0 - ], - [ - 8.907146199098388, - 15.427629767282772 - ], - [ - 8.907146199098388, - 42.9811349199005 - ], - [ - -20.07863231894554, - 42.9811349199005 - ], - [ - -20.07863231894554, - 1.3633462798771523 - ], - [ - 0, - 0 - ] - ] - }, - { - "type": "line", - "version": 769, - "versionNonce": 1577050357, - "index": "axV", - "isDeleted": false, - "id": "d48yd9wY4bhWwtyxNljv4", - "fillStyle": "solid", - "strokeWidth": 1, - "strokeStyle": "solid", - "roughness": 0, - "opacity": 100, - "angle": 0, - "x": 1339.6692076097684, - "y": 3773.0143086884714, - "strokeColor": "#1971c2", - "backgroundColor": "#a5d8ff", - "width": 13.070403643350538, - "height": 13.168462466172253, - "seed": 2108380789, - "groupIds": [ - "irGlI1gUH6Ec0F0oKCLIA" - ], - "frameId": null, - "roundness": null, - "boundElements": [], - "updated": 1722538776295, - "link": null, - "locked": false, - "startBinding": null, - "endBinding": null, - "lastCommittedPoint": null, - "startArrowhead": null, - "endArrowhead": null, - "points": [ - [ - 0, - 0 - ], - [ - -13.070403643350538, - 0 - ], - [ - -9.54192475998025, - -13.168462466172253 - ] - ] - }, - { - "type": "line", - "version": 914, - "versionNonce": 1797428443, - "index": "axd", - "isDeleted": false, - "id": "O0Ik_-buSPvejH_LvCcMc", - "fillStyle": "solid", - "strokeWidth": 1, - "strokeStyle": "solid", - "roughness": 0, - "opacity": 100, - "angle": 0, - "x": 1287.1445715076575, - "y": 3759.4733474492523, - "strokeColor": "#1971c2", - "backgroundColor": "#a5d8ff", - "width": 28.98577851804393, - "height": 42.9811349199005, - "seed": 392454165, - "groupIds": [ - "hhRkWUwlJ4OviPrDNswcV" - ], - "frameId": null, - "roundness": null, - "boundElements": [], - "updated": 1722538776295, - "link": null, - "locked": false, - "startBinding": null, - "endBinding": null, - "lastCommittedPoint": null, - "startArrowhead": null, - "endArrowhead": null, - "points": [ - [ - 0, - 0 - ], - [ - 8.907146199098388, - 15.427629767282772 - ], - [ - 8.907146199098388, - 42.9811349199005 - ], - [ - -20.07863231894554, - 42.9811349199005 - ], - [ - -20.07863231894554, - 1.3633462798771523 - ], - [ - 0, - 0 - ] - ] - }, - { - "type": "line", - "version": 798, - "versionNonce": 1034025557, - "index": "axl", - "isDeleted": false, - "id": "1ITqAjtgxj2u9TJWayiE8", - "fillStyle": "solid", - "strokeWidth": 1, - "strokeStyle": "solid", - "roughness": 0, - "opacity": 100, - "angle": 0, - "x": 1295.783385199332, - "y": 3773.174548836772, - "strokeColor": "#1971c2", - "backgroundColor": "#a5d8ff", - "width": 13.070403643350538, - "height": 13.168462466172253, - "seed": 1201739707, - "groupIds": [ - "hhRkWUwlJ4OviPrDNswcV" - ], - "frameId": null, - "roundness": null, - "boundElements": [], - "updated": 1722538776295, - "link": null, - "locked": false, - "startBinding": null, - "endBinding": null, - "lastCommittedPoint": null, - "startArrowhead": null, - "endArrowhead": null, - "points": [ - [ - 0, - 0 - ], - [ - -13.070403643350538, - 0 - ], - [ - -9.54192475998025, - -13.168462466172253 - ] - ] - }, - { - "id": "HCNSYE_W_xRA4UTqgTuuu", - "type": "arrow", - "x": 1063.9421887202243, - "y": 3447.669888493214, - "width": 185.72806155786225, - "height": 53.8549954573391, - "angle": 0, - "strokeColor": "#258c81", - "backgroundColor": "#ffffff", - "fillStyle": "hachure", - "strokeWidth": 1, - "strokeStyle": "solid", - "roughness": 1, - "opacity": 100, - "groupIds": [], - "frameId": null, - "index": "b00", - "roundness": { - "type": 2 - }, - "seed": 1298328277, - "version": 228, - "versionNonce": 1686590101, - "isDeleted": false, - "boundElements": [ - { - "type": "text", - "id": "9JxM9dyoRp9meqG8llmiS" - } - ], - "updated": 1722538052045, - "link": null, - "locked": false, - "points": [ - [ - 0, - 0 - ], - [ - 67.67232637227676, - 37.36154794061849 - ], - [ - 185.72806155786225, - 53.8549954573391 - ] - ], - "lastCommittedPoint": null, - "startBinding": { - "elementId": "rc8yXewY6HEPU-FwSwn3-", - "focus": -0.5176202515159919, - "gap": 1 - }, - "endBinding": null, - "startArrowhead": "arrow", - "endArrowhead": "arrow" - }, - { - "id": "9JxM9dyoRp9meqG8llmiS", - "type": "text", - "x": 1091.4385315145344, - "y": 3475.0314364338324, - "width": 80.35196715593338, - "height": 20, - "angle": 0, - "strokeColor": "#258c81", - "backgroundColor": "#ffffff", - "fillStyle": "hachure", - "strokeWidth": 1, - "strokeStyle": "solid", - "roughness": 0, - "opacity": 100, - "groupIds": [], - "frameId": null, - "index": "b00V", - "roundness": null, - "seed": 364298389, - "version": 13, - "versionNonce": 145362939, - "isDeleted": false, - "boundElements": [], - "updated": 1722538051132, - "link": null, - "locked": false, - "text": "Metadata", - "fontSize": 16, - "fontFamily": 1, - "textAlign": "center", - "verticalAlign": "middle", - "containerId": "HCNSYE_W_xRA4UTqgTuuu", - "originalText": "Metadata", - "autoResize": true, - "lineHeight": 1.25 - }, - { - "id": "GyPIp862EuIWsednp_LJE", - "type": "arrow", - "x": 749.1541699290619, - "y": 3449.289653386231, - "width": 130.59118001605634, - "height": 0.2223057387436711, - "angle": 0, - "strokeColor": "#1e1e1e", - "backgroundColor": "#ffffff", - "fillStyle": "hachure", - "strokeWidth": 1, - "strokeStyle": "solid", - "roughness": 0, - "opacity": 100, - "groupIds": [], - "frameId": null, - "index": "b0G", - "roundness": { - "type": 2 - }, - "seed": 52134741, - "version": 1003, - "versionNonce": 846712464, - "isDeleted": false, - "boundElements": [], - "updated": 1731847150799, - "link": null, - "locked": false, - "points": [ - [ - 0, - 0 - ], - [ - 130.59118001605634, - 0.2223057387436711 - ] - ], - "lastCommittedPoint": null, - "startBinding": { - "elementId": "fKdWdkNM9XYc-7n1H_JyG", - "focus": -0.6209306908899385, - "gap": 1, - "fixedPoint": null - }, - "endBinding": { - "elementId": "rc8yXewY6HEPU-FwSwn3-", - "focus": -0.04447413942394212, - "gap": 2.3707090880450323, - "fixedPoint": null - }, - "startArrowhead": "arrow", - "endArrowhead": "arrow" - }, - { - "id": "94vLrbjNaZ-Is-8OTvFrb", - "type": "arrow", - "x": 752.8003605164386, - "y": 3749.072631682589, - "width": 471.93596538921497, - "height": 2.3734459621564383, - "angle": 0, - "strokeColor": "#1971c2", - "backgroundColor": "#ffffff", - "fillStyle": "hachure", - "strokeWidth": 1, - "strokeStyle": "solid", - "roughness": 0, - "opacity": 100, - "groupIds": [], - "frameId": null, - "index": "b0H", - "roundness": { - "type": 2 - }, - "seed": 382577883, - "version": 1016, - "versionNonce": 1653985904, - "isDeleted": false, - "boundElements": [ - { - "type": "text", - "id": "K2M3nmYuNkeXvtPaSRB-X" - } - ], - "updated": 1731847156943, - "link": null, - "locked": false, - "points": [ - [ - 0, - 0 - ], - [ - 471.93596538921497, - 2.3734459621564383 - ] - ], - "lastCommittedPoint": null, - "startBinding": { - "elementId": "fKdWdkNM9XYc-7n1H_JyG", - "focus": 0.6710626336478095, - "gap": 4.646190587376623, - "fixedPoint": null - }, - "endBinding": null, - "startArrowhead": "arrow", - "endArrowhead": "arrow" - }, - { - "id": "K2M3nmYuNkeXvtPaSRB-X", - "type": "text", - "x": 940.0115674424673, - "y": 3697.1162259565835, - "width": 42.895988285541534, - "height": 20, - "angle": 0, - "strokeColor": "#1971c2", - "backgroundColor": "#ffffff", - "fillStyle": "hachure", - "strokeWidth": 1, - "strokeStyle": "solid", - "roughness": 0, - "opacity": 100, - "groupIds": [], - "frameId": null, - "index": "b0HG", - "roundness": null, - "seed": 1105348949, - "version": 7, - "versionNonce": 2025606677, - "isDeleted": false, - "boundElements": [], - "updated": 1722538767196, - "link": null, - "locked": false, - "text": "Data", - "fontSize": 16, - "fontFamily": 1, - "textAlign": "center", - "verticalAlign": "middle", - "containerId": "94vLrbjNaZ-Is-8OTvFrb", - "originalText": "Data", - "autoResize": true, - "lineHeight": 1.25 - }, - { - "id": "FoG-M0XjPajxjfIcaEGnO", - "type": "arrow", - "x": 751.3083437605845, - "y": 3557.286409892364, - "width": 476.85489131014253, - "height": 1.0651492733136365, - "angle": 0, - "strokeColor": "#1971c2", - "backgroundColor": "#ffffff", - "fillStyle": "hachure", - "strokeWidth": 1, - "strokeStyle": "solid", - "roughness": 0, - "opacity": 100, - "groupIds": [], - "frameId": null, - "index": "b0HV", - "roundness": { - "type": 2 - }, - "seed": 915786645, - "version": 1343, - "versionNonce": 958418064, - "isDeleted": false, - "boundElements": [ - { - "type": "text", - "id": "e1j3hXwZh4R5fHWNy3zFH" - } - ], - "updated": 1731847128060, - "link": null, - "locked": false, - "points": [ - [ - 0, - 0 - ], - [ - 476.85489131014253, - 1.0651492733136365 - ] - ], - "lastCommittedPoint": null, - "startBinding": { - "elementId": "fKdWdkNM9XYc-7n1H_JyG", - "focus": -0.1541714895390519, - "gap": 3.1541738315226464 - }, - "endBinding": { - "elementId": "9amrjmm6vzKNvV1txfde1", - "focus": -0.9221739442877142, - "gap": 8.708507831127235 - }, - "startArrowhead": "arrow", - "endArrowhead": "arrow" - }, - { - "id": "e1j3hXwZh4R5fHWNy3zFH", - "type": "text", - "x": 944.103324640474, - "y": 3548.844679102245, - "width": 42.895988285541534, - "height": 20, - "angle": 0, - "strokeColor": "#1971c2", - "backgroundColor": "#ffffff", - "fillStyle": "hachure", - "strokeWidth": 1, - "strokeStyle": "solid", - "roughness": 0, - "opacity": 100, - "groupIds": [], - "frameId": null, - "index": "b0Hl", - "roundness": null, - "seed": 696045493, - "version": 47, - "versionNonce": 942598901, - "isDeleted": false, - "boundElements": [], - "updated": 1722538756147, - "link": null, - "locked": false, - "text": "Data", - "fontSize": 16, - "fontFamily": 1, - "textAlign": "center", - "verticalAlign": "middle", - "containerId": "FoG-M0XjPajxjfIcaEGnO", - "originalText": "Data", - "autoResize": true, - "lineHeight": 1.25 - }, - { - "id": "WdkrYra56assCyd-YXdgZ", - "type": "image", - "x": 446.1287137782343, - "y": 3557.9775185064696, - "width": 217.4295667190742, - "height": 57.98121779175312, - "angle": 0, - "strokeColor": "transparent", - "backgroundColor": "#ffffff", - "fillStyle": "hachure", - "strokeWidth": 1, - "strokeStyle": "solid", - "roughness": 0, - "opacity": 100, - "groupIds": [], - "frameId": null, - "index": "b0O", - "roundness": null, - "seed": 66171035, - "version": 569, - "versionNonce": 626986640, - "isDeleted": false, - "boundElements": [], - "updated": 1731847128061, - "link": null, - "locked": false, - "status": "saved", - "fileId": "052b11aa8b22d6eabf95831f5c83abbbdebc45ef", - "scale": [ - 1, - 1 - ], - "crop": null - }, - { - "id": "sFbdpiCJ6bbj4yMSWgtQQ", - "type": "image", - "x": 403.06042421214914, - "y": 3630.0467361993547, - "width": 113.06387301869914, - "height": 43.812250794745914, - "angle": 0, - "strokeColor": "transparent", - "backgroundColor": "#ffffff", - "fillStyle": "hachure", - "strokeWidth": 1, - "strokeStyle": "solid", - "roughness": 0, - "opacity": 100, - "groupIds": [], - "frameId": null, - "index": "b0P", - "roundness": null, - "seed": 1476771035, - "version": 501, - "versionNonce": 564051088, - "isDeleted": false, - "boundElements": [], - "updated": 1731847128061, - "link": null, - "locked": false, - "status": "saved", - "fileId": "733eb5ed9a01ba64388cba865a5ff133b3a04561", - "scale": [ - 1, - 1 - ], - "crop": null - }, - { - "id": "z5AUyrD2Xi7HOoCOe7774", - "type": "image", - "x": 594.2253081303182, - "y": 3633.2216686746606, - "width": 94.972116571869, - "height": 34.955015127146225, - "angle": 0, - "strokeColor": "transparent", - "backgroundColor": "#ffffff", - "fillStyle": "hachure", - "strokeWidth": 1, - "strokeStyle": "solid", - "roughness": 0, - "opacity": 100, - "groupIds": [], - "frameId": null, - "index": "b0Q", - "roundness": null, - "seed": 849362939, - "version": 519, - "versionNonce": 364423824, - "isDeleted": false, - "boundElements": [], - "updated": 1731847128061, - "link": null, - "locked": false, - "status": "saved", - "fileId": "8a405086d877b8b98996d7386da4ece965e92454", - "scale": [ - 1, - 1 - ], - "crop": null - }, - { - "id": "9OvAOafyzEx2eTcf6a6sZ", - "type": "text", - "x": 1185.3806807731926, - "y": 3331.483415371421, - "width": 275.1998291015625, - "height": 20, - "angle": 0, - "strokeColor": "#1e1e1e", - "backgroundColor": "#ffffff", - "fillStyle": "hachure", - "strokeWidth": 1, - "strokeStyle": "solid", - "roughness": 0, - "opacity": 100, - "groupIds": [], - "frameId": null, - "index": "b0R", - "roundness": null, - "seed": 1762599413, - "version": 57, - "versionNonce": 1717000277, - "isDeleted": false, - "boundElements": [], - "updated": 1722538651923, - "link": null, - "locked": false, - "text": "S3 / Azure Blob / GCS / MinIO ...", - "fontSize": 16, - "fontFamily": 1, - "textAlign": "center", - "verticalAlign": "top", - "containerId": null, - "originalText": "S3 / Azure Blob / GCS / MinIO ...", - "autoResize": true, - "lineHeight": 1.25 - }, - { - "id": "Fhakw2nF56ggm_i2A1Hlz", - "type": "text", - "x": 367.03081660045905, - "y": 3856.102039602422, - "width": 595.9036865234375, - "height": 20, - "angle": 0, - "strokeColor": "#1e1e1e", - "backgroundColor": "#a5d8ff", - "fillStyle": "hachure", - "strokeWidth": 1, - "strokeStyle": "solid", - "roughness": 0, - "opacity": 100, - "groupIds": [], - "frameId": null, - "index": "b0S", - "roundness": null, - "seed": 1798373467, - "version": 792, - "versionNonce": 622779504, - "isDeleted": false, - "boundElements": [], - "updated": 1731847183579, - "link": null, - "locked": false, - "text": "* All Data & Metadata is always stored within your Account and Network", - "fontSize": 16, - "fontFamily": 1, - "textAlign": "center", - "verticalAlign": "top", - "containerId": null, - "originalText": "* All Data & Metadata is always stored within your Account and Network", - "autoResize": true, - "lineHeight": 1.25 - }, - { - "id": "o8X_Fx326X8JiZIkuuFA9", - "type": "image", - "x": 484.73042132190164, - "y": 3441.4926633490163, - "width": 119.0231773445256, - "height": 47.53260544515676, - "angle": 0, - "strokeColor": "transparent", - "backgroundColor": "#1e6b61", - "fillStyle": "solid", - "strokeWidth": 4, - "strokeStyle": "solid", - "roughness": 2, - "opacity": 100, - "groupIds": [], - "frameId": null, - "index": "b0U", - "roundness": null, - "seed": 865759344, - "version": 847, - "versionNonce": 207935632, - "isDeleted": false, - "boundElements": null, - "updated": 1731847128061, - "link": null, - "locked": false, - "status": "saved", - "fileId": "b001d66de9fa144d4d413562a3a62181d0d4450e", - "scale": [ - 1, - 1 - ], - "crop": null - }, - { - "id": "JaEdbiO1wbDmtQyyd6isX", - "type": "image", - "x": 369.14936862099376, - "y": 3505.4835047322053, - "width": 176.6006152010927, - "height": 44.388175607862905, - "angle": 0, - "strokeColor": "transparent", - "backgroundColor": "#1e6b61", - "fillStyle": "solid", - "strokeWidth": 4, - "strokeStyle": "solid", - "roughness": 2, - "opacity": 100, - "groupIds": [], - "frameId": null, - "index": "b0W", - "roundness": null, - "seed": 585527920, - "version": 961, - "versionNonce": 2036024976, - "isDeleted": false, - "boundElements": null, - "updated": 1731847128061, - "link": null, - "locked": false, - "status": "saved", - "fileId": "f6104a267b941b1e71e4188461fabc63c1406c02", - "scale": [ - 1, - 1 - ], - "crop": { - "x": 14.061882697898454, - "y": 17.14293450507074, - "width": 1181.0609396595476, - "height": 296.85706549492926, - "naturalWidth": 1208, - "naturalHeight": 314 - } - }, - { - "id": "TXSTOQI5F5qlrOUNCuuHb", - "type": "image", - "x": 559.6305978501075, - "y": 3496.5944271721455, - "width": 170.64923206272238, - "height": 60.146860481123454, - "angle": 0, - "strokeColor": "transparent", - "backgroundColor": "#1e6b61", - "fillStyle": "solid", - "strokeWidth": 4, - "strokeStyle": "solid", - "roughness": 2, - "opacity": 100, - "groupIds": [], - "frameId": null, - "index": "b0X", - "roundness": null, - "seed": 208157808, - "version": 490, - "versionNonce": 1143701616, - "isDeleted": false, - "boundElements": null, - "updated": 1731847139613, - "link": null, - "locked": false, - "status": "saved", - "fileId": "0909b69b3afd8b5bbaf69e31cbd2868cc931bde5", - "scale": [ - 1, - 1 - ], - "crop": null - } - ], - "appState": { - "gridSize": 20, - "gridStep": 5, - "gridModeEnabled": false, - "viewBackgroundColor": "#ffffff" - }, - "files": { - "0e322a8749f5fd6440745c039816dc9c40aad84a": { - "mimeType": "image/png", - "id": "0e322a8749f5fd6440745c039816dc9c40aad84a", - "dataURL": "data:image/png;base64,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", - "created": 1722534560073, - "lastRetrieved": 1722534560073 - }, - "97a54ef0c7419b7b3fb8526c7386b19214357d1d": { - "mimeType": "image/png", - "id": "97a54ef0c7419b7b3fb8526c7386b19214357d1d", - "dataURL": "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAgAAAAIACAYAAAD0eNT6AAAAAXNSR0IArs4c6QAAIABJREFUeF7t3QnYfd9c9/GvJEoKmTLGk1kkqWSMkJKhTJUHyZhHJZJShpShpB4pQoZ6QsiTIaVkaFAhKUNJhIpCZqGB9vtv35zf/bvv+3zXOvucvddZ73Vd/6vht4e1X2vf53zO3ms4U1gUUEABBRRQoDuBM3V3xV6wAgoooIACCoQBwJtAAQUUUECBDgUMAB02upesgAIKKKCAAcB7QAEFFFBAgQ4FDAAdNrqXrIACCiiggAHAe0ABBRRQQIEOBQwAHTa6l6yAAgoooIABwHtAAQUUUECBDgUMAB02upesgAIKKKCAAcB7QAEFFFBAgQ4FDAAdNrqXrIACCiiggAHAe0ABBRRQQIEOBQwAHTa6l6yAAgoooIABwHtAAQUUUECBDgUMAB02upesgAIKKKCAAcB7QAEFFFBAgQ4FDAAdNrqXrIACCiiggAHAe0ABBRRQQIEOBQwAHTa6l6yAAgoooIABwHtAAQUUUECBDgUMAB02upesgAIKKKCAAcB7QAEFFFBAgQ4FDAAdNrqXrIACCiiggAHAe0ABBRRQQIEOBQwAHTa6l6yAAgoooIABwHtAAQUUUECBDgUMAB02upesgAIKKKCAAcB7QAEFFFBAgQ4FDAAdNrqXrIACCiiggAHAe0ABBRRQQIEOBQwAHTa6l6yAAgoooIABwHtAAQUUUECBDgUMAB02upesgAIKKKCAAcB7QAEFFFBAgQ4FDAAdNrqXrIACCiiggAHAe0ABBRRQQIEOBQwAHTa6l6yAAgoooIABwHtAAQUUUECBDgUMAB02upesgAIKKKCAAcB7QAEFFFBAgQ4FDAAdNrqXrIACCiiggAHAe0ABBRRQQIEOBQwAHTa6l6yAAgoooIABwHtAAQUUUECBDgUMAB02upesgAIKKKCAAcB7QAEFFFBAgQ4FDAAdNrqXrIACCiiggAHAe0ABBRRQQIEOBQwAHTa6l6yAAgoooIABwHtAAQUUUECBDgUMAB02upesgAIKKKCAAcB7QAEFFFBAgQ4FDAAdNrqXrIACCiiggAHAe0ABBRRQQIEOBQwAHTa6l6yAAgoooIABwHtAAQUUUECBDgUMAB02upesgAIKKKCAAcB7QAEFFFBAgQ4FDAAdNrqXrIACCiiggAHAe0ABBRRQQIEOBQwAHTa6l6yAAgoooIABwHtAAQUUUECBDgUMAB02upesgAIKKKCAAcB7QAEFFFBAgQ4FDAAdNrqXrIACCiiggAHAe0ABBRRQQIEOBQwAHTa6l6yAAgoooIABwHtAAQUUUECBDgUMAB02upesgAIKKKCAAcB7QAEFFFBAgQ4FDAAdNrqXrIACCiiggAHAe0ABBRRQQIEOBQwAHTa6l6yAAgoooIABwHtAAQUUUECBDgUMAB02upesgAIKKKCAAcB7QAEFFFBAgQ4FDAAdNrqXrIACCiiggAHAe0ABBRRQQIEOBQwAHTa6l6yAAgoooIABwHtAAQUUUECBDgUMAB02upesgAIKKKCAAcB7QAEFFFBAgQ4FDAAdNrqXrIACCiiggAHAe0ABBRRQQIEOBQwAHTa6l6yAAgoooIABwHtAAQUUUECBDgUMAB02upesgAIKKKCAAcB7QAEFFFBAgQ4FDAAdNrqXrIACCiiggAHAe0ABBRRQQIEOBQwAHTa6l6yAAgoooIABwHtAAQUUUECBDgUMAB02upesgAIKKKCAAcB7QAEFFFBAgQ4FDAAdNrqXrIACCiiggAHAe0ABBRRQQIEOBQwAHTa6l6yAAgoooIABwHtAAQUUUECBDgUMAB02upesgAIKKKCAAcB7QAEFFFBAgQ4FDAAdNrqXrIACCiiggAHAe0ABBRRQQIEOBQwAHTa6l6yAAgoooIABwHtAAQUUUECBDgUMAB02upesgAIKKKCAAcB7QAEFFFBAgQ4FDAAdNrqXrIACCiiggAHAe0ABBRRQQIEOBQwAHTa6l6yAAgoooIABwHtAAQUUUECBDgUMAB02upesgAIKKKCAAcB7QAEFFFBAgQ4FDAAdNrqXrIACCiiggAHAe0ABBRRQQIEOBQwAHTa6l6yAAgoooIABwHtAAQUUUECBDgUMAB02upesgAIKKKCAAcB7QAEFFFBAgQ4FDAAdNrqXrIACCiiggAHAe0ABBRRQQIEOBQwAHTa6l6yAAgoooIABwHtAAQUUUECBDgUMAB02upesgAIKKKCAAcB7QAEFFFBAgQ4FDAAdNrqXrIACCiiggAHAe0ABBRRQQIEOBQwAHTa6l6yAAgoooIABwHtAAQUUUECBDgUMAB02upesgAIKKKCAAcB7QAEFFFBAgQ4FDAAdNrqXrIAC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", - "created": 1722534694523, - "lastRetrieved": 1722534694523 - }, - "bc3358bef265f112f724f733549d4cd7de1dee8a": { - "mimeType": "image/png", - "id": "bc3358bef265f112f724f733549d4cd7de1dee8a", - "dataURL": "data:image/png;base64,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", - "created": 1722534760628, - "lastRetrieved": 1722534760628 - }, - "ec273749eb4f3f53fb9f9368bfa3b7c3af3d1c37": { - "mimeType": "image/png", - "id": "ec273749eb4f3f53fb9f9368bfa3b7c3af3d1c37", - "dataURL": "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAABaAAAAKICAYAAACG+F0dAAAAAXNSR0IArs4c6QAAIABJREFUeF7s3Ql4VNX9//HvuXcyEyBsAkkAV9xQWhWhWq1WUFwAcQ9V6q5FEbVCabVSmxl/WrQ/qq1YFVqX1rXEurGIog1W/62t0LqBe1EEQhJAdjIzuff8Obdz+aVWhWTunUwm7/s8eVAy99xzXufe5OEzZ75HCQcCCCCAAAIIIIAAAggggAACCCCAAAIIIIAAAiEIqBDapEkEEEAAAQQQQAABBBBAAAEEEEAAAQQQQAABBIQAmpsAAQQQQAABBBBAAAEEEEAAAQQQQAABBBBAIBQBAuhQWGkUAQQQQAABBBBAAAEEEEAAAQQQQAABBBBAgACaewABBBBAAAEEEEAAAQQQQAABBBBAAAEEEEAgFAEC6FBYaRQBBBBAAAEEEEAAAQQQQAABBBBAAAEEEECAAJp7AAEEEEAAAQQQQAABBBBAAAEEEEAAAQQQQCAUAQLoUFhpFAEEEEAAAQQQQAABBBBAAAEEEEAAAQQQQIAAmnsAAQQQQAABBBBAAAEEEEAAAQQQQAABBBBAIBQBAuhQWGkUAQQQQAABBBBAAAEEEEAAAQQQQAABBBBAgACaewABBBBAAAEEEEAAAQQQQAABBBBAAAEEEEAgFAEC6FBYaRQBBBBAAAEEEEAAAQQQQAABBBBAAAEEEECAAJp7AAEEEEAAAQQQQAABBBBAAAEEEEAAAQQQQCAUAQLoUFhpFAEEEEAAAQQQQAABBBBAAAEEEEAAAQQQQIAAmnsAAQQQQAABBBBAAAEEEEAAAQQQQAABBBBAIBQBAuhQWGkUAQQQQAABBBBAAAEEEEAAAQQQQAABBBBAgACaewABBBBAAAEEEEAAAQQQQAABBBBAAAEEEEAgFAEC6FBYaRQBBBBAAAEEEEAAAQQQQAABBBBAAAEEEECAAJp7AAEEEEAAAQQQQAABBBBAAAEEEEAAAQQQQCAUAQLoUFhpFAEEEEAAAQQQQAABBBBAAAEEEEAAAQQQQIAAmnsAAQQQQAABBBBAAAEEEEAAAQQQQAABBBBAIBQBAuhQWGkUAQQQQAABBBBAAAEEEEAAAQQQQAABBBBAgACaewABBBBAAAEEEEAAAQQQQAABBBBAAAEEEEAgFAEC6FBYaRQBBBBAAAEEEEAAAQQQQAABBBBAAAEEEECAAJp7AAEEEEAAAQQQQAABBBBAAAEEEEAAAQQQQCAUAQLoUFhpFAEEEEAAAQQQQAABBBBAAAEEEEAAAQQQQIAAmnsAAQQQQAABBBBAAAEEEEAAAQQQQAABBBBAIBQBAuhQWGkUAQQQQAABBBBAAAEEEEAAAQQQQAABBBBAgACaewABBBBAAAEEEEAAAQQQQAABBBBAAAEEEEAgFAEC6FBYaRQBBBBAAAEEEEAAAQQQQAABBBBAAAEEEECAAJp7AAEEEEAAAQQQQAABBBBAAAEEEEAAAQQQQCAUAQLoUFhpFAEEEEAAAQQQQAABBBBAAAEEEEAAAQQQQIAAmnsAAQQQQAABBBBAAAEEEEAAAQQQQAABBBBAIBQBAuhQWGkUAQQQQAABBBBAAAEEEEAAAQQQQAABBBBAgACaewABBBBAAAEEEEAAAQQQQAABBBBAAAEEEEAgFAEC6FBYaRQBBBBAAAEEEEAAAQQQQAABBBBAAAEEEECAAJp7AAEEEEAAAQQQQAABBBBAAAEEEEAAAQQQQCAUAQLoUFhpFAEEEEAAAQQQQAABBBBAAAEEEEAAAQQQQIAAmnsAAQQQQAABBBBAAAEEEEAAAQQQQAABBBBAIBQBAuhQWGkUAQQQQAABBBBAAAEEEEAAAQQQQAABBBBAgACaewABBBBAAAEEEEAAAQQQQAABBBBAAAEEEEAgFAEC6FBYaRQBBBBAAAEEEEAAAQQQQAABBBBAAAEEEECAAJp7AAEEEEAAAQQQQAABBBBAAAEEEEAAAQQQQCAUAQLoUFhpFAEEEEAAAQQQQAABBBBAAAEEEEAAAQQQQIAAmnsAAQQQQAABBBBAAAEEEEAAAQQQQAABBBBAIBQBAuhQWGkUAQQQQAABBBBAAAEEEEAAAQQQQAABBBBAgACaewABBBBAAAEEEEAAAQQQQAABBBBAAAEEEEAgFAEC6FBYaRQBBBBAAAEEEEAAAQQQQAABBBBAAAEEEECAAJp7AAEEEEAAAQQQQAABBBBAAAEEEEAAAQQQQCAUAQLoUFhpFAEEEEAAAQQQQAABBBBAAAEEEEAAAQQQQIAAmnsAAQQQQAABBBBAAAEEEEAAAQQQQAABBBBAIBQBAuhQWGkUAQQQQAABBBBAAAEEEEAAAQQQQAABBBBAgACaewABBBBAAAEEEEAAAQQQQAAB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ToE7pB3DeC1xxJ+Oh9y4iyEGY8V7uJkhCjvFYojIEJDxagRkCMwQmk1YDYTTgAC91bIshNFItt3O39Zk9ymC4cMmkgAJkAAJkAAJkAAJkAAJkAAJkAAJFBsBCtDF1uNsLwnkgIBt28HKyspQ48aNg2VlZaHdu3eHQqFQEItlWYHq6mr1isXat+A1WFNTgz+ZUB0qdIX5PFEzbNuOYDXb2fuWSElJSdh8pv4QiYTLysoieFX/hMPhhg0b1tbU1NRWVVWFt2/fHu7WrVutZVn7y0p0bH5OAiRAAiRAAiRAAiRAAiRAAiRAAiRAAiSwjwAFaI4EEiABEiABEiABEiABEiABEiABEiABEiABEiABEiABTwhQgPYEKwslARIgARIgARIgARIgARIgARIgARIgARIgARIgARKgAM0xQAIkQAIkQAIkQAIkQAIkQAIkQAIkQAIkQAIkQAIk4AkBCtCeYGWhJEACJEACJEACJEACJEACJEACJEACJEACJEACJEACFKA5BkiABEiABEiABEiABEiABEiABEiABEiABEiABEiABDwhQAHaE6wslARIgARIgARIgARIgARIgARIgARIgARIgARIgARIgAI0xwAJkAAJkAAJkAAJkAAJkAAJkAAJkAAJkAAJkAAJkIAnBChAe4KVhZIACZAACZAACZAACZAACZAACZAACZAACZAACZAACVCA5hggARIgARIgARIgARIgARIgARIgARIgARIgARIgARLwhAAFaE+wslASIAESIAESIAESIAESIAESIAESIAESIAESIAESIAEK0BwDJEACJEACJEACJEACJEACJEACJEACJEACJEACJEACnhCgAO0JVhZKAiRAAiRAAiRAAiRAAiRAAiRAAiRAAiRAAiRAAiRAAZpjgARIgARIgARIgARIgARIgARIgARIgARIgARIgARIwBMCFKA9wcpCSYAESIAESIAESIAESIAESIAESIAESIAESIAESIAEKEBzDJAACZAACZAACZAACZAACZAACZAACZAACZAACZAACXhCgAK0J1hZKAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAVojgESIAESIAESIAESIAESIAESIAESIAESIAESIAESIAFPCFCA9gQrCyUBEiABEiABEiABEiABEiABEiABEiABEiABEiABEqAAzTFAAiRAAiRAAiRAAiRAAiRAAiRAAiRAAiRAAiRAAiTgCQEK0J5gZaEkQAIkQAIkQAIkQAIkQAIkQAIkQAIkQAIkQAIkQAIUoDkGSIAESIAESIAESIAESIAESIAESIAESIAESIAESIAEPCFAAdoTrCyUBEiABEiABEiABEiABEiABEiABEiABEiABEiABEiAAjTHAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQgCcEKEB7gpWFkgAJkAAJkAAJkAAJkAAJkAAJkAAJkAAJkAAJkAAJUIDmGCABEiABEiABEiABEiABEiABEiABEiABEiABEiABEvCEAAVoT7CyUBIgARIgARIgARIgARIgARIgARIgARIgARIgARIgAQrQHAMkQAIkQAIkQAIkQAIkQAIkQAIkQAIkQAIkQAIkQAKeEKAA7QlWFkoCJEACJEACJEACJEACJEACJEACJEACJEACJEACJEABmmOABEiABEiABEiABEiABEiABEiABEiABEiABEiABEjAEwIUoD3BykJJgARIgARIgARIgARIgARIgARIgARIgARIgARIgAQoQHMMkAAJkAAJkAAJkAAJkAAJkAAJkAAJkAAJkAAJkAAJeEKAArQnWFkoCZAACZAACZAACZAACZAACZAACZAACZAACZAACZAABWiOARIgARIgARIgARIgARIgARIgARIgARIgARIgARIgAU8IUID2BCsLJQESIAESIAESIAESIAESIAESIAESIAESIAESIAESoADNMUACJEACJEACJEACJEACJEACJEACJEACJEACJEACJOAJAQrQnmBloSRAAiRAAiRAAiRAAiRAAiRAAiRAAiRAAiRAAiRAAhSgOQZIgARIgARIgARIgARIgARIgARIgARIgARIgARIgAQ8IUAB2hOsLJQESIAESIAESIAESIAEAmjAjAAAAjhJREFUSIAESIAESIAESIAESIAESIACNMcACZAACZAACZAACZAACZAACZAACZAACZAACZAACZCAJwQoQHuClYWSAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAlQgOYYIAESIAESIAESIAESIAESIAESIAESIAESIAESIAES8IQABWhPsLJQEiABEiABEiABEiABEiABEiABEiABEiABEiABEiABCtAcAyRAAiRAAiRAAiRAAiRAAiRAAiRAAiRAAiRAAiRAAp4QoADtCVYWSgIkQAIkQAIkQAIkQAIkQAIkQAIkQAIkQAIkQAIkQAGaY4AESIAESIAESIAESIAESIAESIAESIAESIAESIAESMATAhSgPcHKQkmABEiABEiABEiABEiABEiABEiABEiABEiABEiABChAcwyQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAl4QoACtCdYWSgJkAAJkAAJkAAJkAAJkAAJkAAJkAAJkAAJkAAJkAAFaI4BEiABEiABEiABEiABEiABEiABEiABEiABEiABEiABTwhQgPYEKwslARIgARIgARIgARIgARIgARIgARIgARIgARIgARKgAM0xQAIkQAIkQAIkQAIkQAIkQAIkQAIkQAIkQAIkQAIk4AkBCtCeYGWhJEACJEACJEACJEACJEACJEACJEACJEACJEACJEACFKA5BkiABEiABEiABEiABEiABEiABEiABEiABEiABEiABDwh8P8B3H1ZQb8aMK8AAAAASUVORK5CYII=", - "created": 1722534903542, - "lastRetrieved": 1722534903542 - }, - "57c766831721e9fb1cd3ac887423f3539a447a55": { - "mimeType": "image/png", - "id": "57c766831721e9fb1cd3ac887423f3539a447a55", - "dataURL": "data:image/png;base64,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", - "created": 1722535141187, - "lastRetrieved": 1722535141187 - }, - "14425b5cfc24549457fe531a77b482c2336c0d1d": { - "mimeType": "image/png", - "id": "14425b5cfc24549457fe531a77b482c2336c0d1d", - "dataURL": "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAMgAAADICAYAAACtWK6eAAAAAXNSR0IArs4c6QAAIABJREFUeF7t3QncdV9VF/BlaZaWaalBmvOsWSIOWY4UKqKCOIDgAJKSY5qZOSKKSs6i4IyKCBipmBpGWhqaQ5ql5oTmWJkR5ZRlWff7d5/X8+x3n3v2OfcM995nr8/nfJ7/+79n2Gftvc5ew2+t9SLRqHGgcWCQAy/SeNM40DgwzIEmIG11NA4c4cBtFBDv/BIR8Sd6f/9YRDheLCL+SEQ4x/F/esf/Tf/9exHxW+n4nYj4/bbCrpcD1yAgFvafj4hXSH/vHREvn46Xi4iXiYg/ExEvHREvFRF/KgnBUrP620lYfjMiXhAR/7V3+PevR8SvRMQvp7//Y6kHt/usz4FLERCL+7Uj4rUi4jUi4tXS8cpJKC7lPcwoQSIsvxQRP5sdv5h2qfVnvj2higPntrCoOK8bEfeJiL8UEW+QjntVvc3ln0R9+5mI+Lfp+NH099cu/9Uu8w32FpC/EBF/LSLePCLeLCL+ckS8+GWyctVR/6eI+FcR8X0R8b0R8W8i4n+t+sR283s4sLWA/LmIuF9E/PWIeJuIeNU2D7M4QDh+6PBx+WcR8R3pvzkRGi3MgbUFxP3fKCLeJSIeGBFvvPD4h27HEP4vyUD+bxHxwnT8RkQ4eKF4oBwWm+N/R4RF5ug8U8bPq/VHk4er83Z1HrCXjIg/mYz/P91zCPzZiOAg8EFwzdrk/Z572Imfc+D3syPCOzdagANrCIh7sh8eHhHvHhGvssA4+7f4nxHx8+n4DxHxC8no/dWI+I8R8Z/PSP3AC4LDs8bL9ooR8UqJJ3bPV48IauaSxDVNWJ55UFm/OSKa1+wE7i4pIL6a73NYrB+QDOsThnXPpb7y/y4ifiwifiIifjIifioJwTXFHv548sxxTjg4Jt4wIl5zAXe0XdGO8kUH1fZfRsT/O3VSbtv1SwjI6x2+Uh+ZhGOugU3F+eGI+P6kT/vvn7vlQTjqm52YWsqB8VeSa3vuGv3xg9r3xQdh/Lr08Zl7n1t13SkCwuP0SQc35INncIxA+KL984Ox/i+ScDSvzDgj2TRvmRwcnB2vM37JXWcIZH76wT56ckT87ozrb9UlcwSEHv0ZEfGIiZwSGLPdf1tEfE9EsCUancYB9sw7HD4w75w8g9S1WhLdf9zBJvqq5Jiove5WnTdFQHhyPiwiPi0ibP81xHBmLD497RJNB67h2rxzzMkDDrbaeyWPYa26K77y/ilAOe/JV3xVrYDYNZ6atvYxdvCiPOvgufnStFNck0E99u7n8jtozkMPDo0PTG72sXFRtT7u4Kb+gltu993FpxoBeYuDsfhNCfx3jNFAebwlX5ZcrWOT0n7fhgOM+486eAMfUhEYttPbTXi/GlUwjH5LOI7pthCrTzgI0JMiArK10XlygEHPqfKwkeF958G9/m4poHqeb7LhqI7tIDBSmDUUCRZx/vyDkH1KQqhuOOz2qBM4wG38xOQ2HrrNdyejn7p8q2lIQER+BeledoA7UKaPSqC5W83AC3158JkPPjhbPuuIdkAr+NgLfb/Fhj0kIN94JL7xtQcb4zHNTbvYHOx5I1F7rnf5NSX6GwkQuecYd312SUAYdWDVJRL/+PgGWdh1zpZ+uOxLqOC/WLixIO7bLv3AS7pfSUC4c0tBQAGlRzfhuKTprR6rlOV/nUCV+UVslh+pvtOVnZgLCN0UVBoCtU8y2oDnpIs2uk4OPCh5LPO3+9Tk/brOtx55q1xA6KJAgjl9Yoqg30om3ZKXthak+8r579MzKlzDV8uiXECgRiFqc3rHlIxztYxoL3YPB76+IAzUq60S3c5uGnIBEfuAss3pXQ+FFL7l7EbfBrQ0BwBJ4bn69NMzUcNLj22X+9UKyFNS3GOXQbaHbsIB9cOUI8qBqE1Aeuwf2kFEVO+bStBsMlvtIZtzACriIwpPbQJSISBOYbwDLiqG0Oi6OPDeBy/l0wZeqQlIpYA47d+nBB1bcaPr4MD7pqQp+T4lagIyQUCcKiYCESpdttHlcgAIFTICFP4YNQGZKCBOlxn4hYdUTfGRFjy8PCFhT35FKgoxNvomIDMEpLtEDSrYLADGWw+NHltpZ/C7zNDHJo9kTbKcITcBOUFAuksx8fEp97wJyhlIQjYERev+bkR80EjyW7NBMg7UxkGgOtXSHSPGu9pL4ibN2zXGrXV/N7eKgn9IKuTwoiOPg8FT6UTRuj61HaRiBwGBl0T1lan+7NjUKuOv7CXVS3Fl/260DQfME7et3HL5HjX0XYdSrrxZskNVxmwCkjhQu4MQEBgthct4Ph5Zw/V0ji+TBCy57SaiFSubwLzKU9X3VRvrPQ7exbeuqDXQ3dYuL2vwa1I1E4Z7E5Ae06cKSHcpUONnVqpd/TlWTV2eu13lnx7yTp7f8ksqReDmaYpoCNreP8WllCidQuZBkQ01zvrFrZuAZFycKyDdbd4q5QoogzmHVGNn3zwvZTGqH9v6XNzNSXWufJQIhR2CbVFbGK5/NwXB2YifO2AjNgFZWEC62zHsFAFQ3V0H2bmkbJDuSbLb/FU4QlX321S3V18R/OwKV4Oa681Y65Yt8V5VfILBJtQfZYiagKwkIN1tfenowVJ27S5LELcxVaxrf6DxpX/DhonDXGLlRg14NCCVnOQgAF37A3beEkR1UuFSNXdlfGrKvjYBWVlA+re3AN7zsBPIJaEanPIFHFowKgByLTvUAXbo58f4BIlRyZyTwEHvrlkkcxcnLJNUZS2n+x2mLPiuTbV4BL4olLAG/fdUHJxT5NtnOESagGwoIP1HURu0YHv71KNwqN7WGoumu6edqGvBRpXrWrDxqhE0B3e0HYkdRJi69mv9Fmx0/64FG3VS33X917Vi24N0xOX4+MepwecpLvUmIDsJSP+xFp0SMxp5yj+xu6z1Rd1jwa75TEKr45aK7Jwb3OZLBmSbgJyBgOQLiOqlWARBYZBq+qk5j6/ybSc9GDkrHD9wSIf9wZV7DjYBOUMBKQmBXUaTy9ePCC3eOgP2ta9QcOwKbCdOCPk2/jp48NgUW1ITkAsRkKFFYbdhBNtxugNCtTtElNk3azgE5i5ULurOgQDr5NBtixdOt95fnGFMzx3L2HVNQC5cQMYm2O9AeZ0XiXOAwHA/8zB1B8Oaod0/Xiz1Q2eQO+xiXd90Br7/tti1jusf3Kn9g8dMr5TukC+zpveshie15zQBuQUCUrsY2nl3c6AJSBOQJhdHONAEpAlIE5AmIPVr4FSwYv2T2pmXwIG2g7Qd5BLW6W5jbALSBGS3xXcJD24C0gTkEtbpbmNsAtIEZLfFdwkPbgLSBOQS1uluY2wCspOA3Cv1nRBxhkB94W5LoD34GAeagOwgIG+S8hXAO5B8C6hUnVXV9wXdBt1otD8HmoDsICCql+i3PUQSfOSgExSQ7h861HT6hQvCL+2/rJcbQROQHQREY0gdcqcQwN+PpgPs+3siQm5Eo3U50ARkBwH5olT+8pSppZapmvKlp9ykXTvKgSYgOwiIXG0L+70SjHx0lgZOADVXAKFf6Gzuvdp1ZQ40AdlBQLpHysmQh84e8VfC01RSL0pOdqN1ONAEZEcByaf0lVKVQIUb1P6VXitJaYgUJ3DNbSoit44YDN+1CcgZCUg+TVSx+6TCDYo2qCwoF12rMGmqKpaXerhvvYiu+XlNQGYKCLVI3GJrkgarJJAKiq1m7/rcf2Yq9td/UusP0uPGUJ/0T01FqtefovaEvTggl18BCVUgm4AkDtQmTCnh+ToR8YK9Zq89d3UOPDoivrzwlLaDVOwgTlHa8sFN1Vl9oe7xALXHIBlKxfqagFQKiNOUz9eBqDXq3GMZr/NMmoHavrlq1T2tCcgEAXHqc5NHidrV6LI5oJj4M1LdsKE3aQIyUUCcrjPUB6ZS+5e9RG7n6F8ytV/72xWv3wRkhoB0l+hDof+2EpqNzp8DnDIaHH32oWOxMq011ATkBAFxKbg678cTUs3ZGqa3c7blAMF4wOGRj42I+058dBOQCgHh3lXv9hgx3J9+6KP+BYeWxD88cRLa6etwQDfchx4Anh+Z+h6OPaU0z01AKgTk7SLi3RPkfIzJfpcAZVf5hh1K+NeM79rPAdN5/4Pq+76pGv7Y+3K4PPKQf/Og1if9JqtqA4XAhN+ftukvjIhXH+N4+h2w8NuSoOiZp9J5o3U4oBEo+0JagQ5etWTX/zupt2PDYmVcmyogLrdtY+jHTuzLpwegtmEE5jsOrmKZhpfSFqB2sW15nnkADXqHg0r7zqlT7pTn6234EakDbnddE5AFBKS7BZuEbvvhqZHllMlxriYyBMbxvNTauQnMMBcJBAP7rXtpAvqbTCXt3B53QE5/S6GFdhOQBQWku9XLHBb7o5J9MicJqrsPPZgax35xmEgtnW+j0EAxazenZ6PjTVMqgP8/h/DQzi39WRGNIZ42AVlBQLpbSnay3TP2bPnaJZ9KhEbRhn7vvp9NgUp56pdOdgW9GAlD14eR/QAbJQ/mVLJLPy05TGqKXjQBWVFA+reWXvuQiHhYUgdAqZckdbS6/n4g2r/c6wNo15F9qDLKnkJkgctlkUcP5/QK6XjliHC8SgrWLd1P8dcOnYKfHRFfl/qmT+FBE5CNBCQXlnc8qEzvGhH3P8RJqGRbkAQrfn0HYdEx9jfS8VsR8Tvp+N2I4EBwCHpaUK6lhtgVu56F1BuL3s5I93+JdCiIBwXr0GDUwT7TD3Er+omEtmZXqC02RSi6MXqPr0mI7f64xbfs5DI+7XgE+rcjAg95JbvDORwv4ibdcfEFNuZ4sU6ZdItNOu39UuEG7mOMbzSNAwrrcW7I8lTK1a45hcz7a6QCGm+WjH8q3tK7mUzQ70tjNM6fujSbcmsBySeR6vUGB8PxLdLBIKWPLz1RUxbPuZ3rS62Inp3BYpO3MVUgvJMd0IfpgYd72dFPcajM5RGBUW5WbhE10C5+1rS3gJSYA2mqvM8bJeFhsPq60eevmah1zz8E+n4yHeIUP5L6qc9RmfDK/CqE8T7JHjwnHlLN/mHKMVKMY+47rromzlFAhl6YXi9a7MvXP14xIhxLeH1WZXaqaq9CC+/SzyVHA2eDg3eOHbQE4YWI+kcllXaJe655D44W0KQvPjdo0iUJyLEJ8h4vm7xCvEa+lC+XDv+fV43R3B0MUoa2Y6pgMd550bqDIdo/OAR+PTsIxa9uoFJ4r7+VIuRDGYK1C50Q29E4N/rGOLWIo8KzuoODglcOBOkUjyUniljN5yf+1Y51tfOuRUBOYRDHAe8MHb3zWPnLg0XtcfDk+Atb5it/bsFLQi6B7ZPSR2EKP7wP20aBcN4wHii72Rz7AA/t7l1ch235NgO57sfG6NlfdhDEz0gu+ynvs+i5TUAWZefmNzN/4k1ycaYY3VAK/yR5lwjHmv1Z7CjsSYhwbn4Cc6yCZp+JduaPS7Wdd6mL1gRk8zW92AOVYaWz80rVkDTpp6bDTrEXCZiqkgmKz4NZQ/KLqI56x2xKTUA2ZfciD/P1/dCD7fTpEcHjN0bSDCSxqVyyy1d4YIDWnrwVbS3krozhzKi1T04p3nPUvzE+FX9vAjKLbbtdxPkg2g3zdowspn+UhIg6de4kP/6jkx3FHjxGdr/3TPi81d+rCcjqLF7sAXR4+Kp7j9zxWclYF0+5NOKB/JiUQnHMG2YHoXKp07YqNQFZlb2L3Nwcybn5vBGEAc8T1Quc/dJJcPhJCeh67F2+OgkKPN0q1ARkFbYudlNfUfYDPX2ILI7HH+yRz9qgd4r4h36T4jriI2uStcmY/5yEiB56Fvc0IOwq42kCsuYUn3ZvBjh16Zi98eMpDx0IcG36q8muoQaJB8kmZTSvTdDRdgo5RkMkZwif5mDUjo5/SwHh3gOTXkXS156lje8vQi0D8C2PPFfuhpzyLTw6hFUA0Rx2BDslvmFxrk3WqSqQ/+BIpB7CWZyFqrkYbSEgoB4qMJpsTOXLfk6CakOoysFo9IccAIcRxJMKUCIfmQ9KmYJb8U1/mE8oPAwyF0J4K2QBaL4mPxLOSgTiI2d/MQfFFgLylOTnLr2Qr59ILjSnv4Tn4pNsTli1vtRyPN584B4yJUHVoXy3IhgrC27I/fpuh3jGN201mGSPiO1AKZdIdil10N+TaQsBsTVD4daQL5GsNJFT/nt5ELZwC+PaiUFuoQ1FxuWUUyEACLckxf/U2xoi4+J1Ws2TVHgwcCStxO5VIjUMaCyAoyfRFgIiDfSYgVXzAl4YNOFaS5qaB73k/+YAM+SG2DkWN0JHmE9dkbk4RvBSgIVbEo+aOIigYYkklmk3fpKNtoWA2D3AHORsnEK2TIC8a2zeI4rMTVsiwgHgt7VzA6JZ+SUp0mPELjLP8F5bEtgNIXn4wEPtMkrmzraRthAQY5d34Qvo0DF3yMgaYy5w255Au7HxzfndV9oHxILMifpCn9565zAOuxnIeS2BwMBUbU2g/rQUzYBKxNOnXO4s2kpA8sEpGPC2vQqBNQIjb+FeKStv1sue4UVgI2wtsYWc2F2EY2ubwzgkmLEFJZ3lpB+MwGQp0YyX6Qd34LPCHz4yCuzlxEsqL8VuOJn2EpB8oBYK5r5JqiRoW+8vGlskNeRzJ7/h+V5APeCx8qHIicryVht7q/pjEL2WrptT59aFJFabOSeVMS3G2SrNCdMlnPC9Aw4hOzGv12Q1tVZATBZX7JZEQFQZFJwi/demWoGPyOco0SM2jnP0xyAbUIQ+Bwv2A4MCmXYYO3pOe46dCm4HK9Us5o2Tpz+JagXkQxJ4bNLN28mDHBBbsAhL+Rwi5EPerC1Y+q2HeNQ7FR70JQkY2P30fgkCkp/KUCdkyhXtQepEf+XAg72XGEo11QqIyaT2nFPCTfVLntmJeK79A2dFTj+WVM01U2CPsYMTpbSAqCa8VCLVHVERqVTU4pw+7bBWPnEnvuMvz5adLCfVY+wy1fytFRAP8sJevNFpHHhwCnLldxFog23aAnhYegMZfYKy+qbnBAcFVZwTOAwERE7AjO4DH7UHMdo5PziDctL64ZNrBzVFQBhe3HirJ6nUDv4CzxPcYkuVOnSpSALztBdxhyq3kxOBVchvCDMnz730tVYUbiiIt8U72qFLuTGE1y5S5R2cIiDdS/FeQFXu4anYgrFrPkNnLi2Yc4JAtQi3hGv0x8CdawylgtvULuDSIeJEYbAr5p2TAOd3r8nQkXs/Y8Awl44sgDhKcwTETQVm1GFSar9RHQd4flQQLFW3F+TaMxNQXsdjCq8Bcl9TNeXjB9RvKAD1lveyXRXPswPifZ983O0iIExHaa6AuCkg2N9PHoO9GDD2fuf0+9DuISnqGBhw7Xewc9HX81pVID0WEbDpGHGrWmy8czmB5k+JyI89a+rv4jniOjnJ71ezeDUB6W7M8yJXQMXupnaV2c32EKzKCy7g1+svmb8wNuHZ7z6QItClYKWgLKGuJSoLuyMnni8esMlButoHj5wHps97lfNeXMe41EgepFN2kPymoOkAd76ISxVhXohHu99mCNdUrQuv9AZyOYxhiUVtLYm0w5blNFXYln7doV1kNOZUKyDsDV4OX7sxAqwTqHHs5eYbG+PWv4PplxJ8/L+96lb5skqEWlItEivzrqeoa2vMjYAs+0+HgD7xaEEDDO5utQLC383g+sxUWqa2tioPhiaSEoG06LqNRAhKeSwCcqWI9VY8Yj/CVOV0qmEt4s7uyKnW4F/r/YccCXZ3O0mRpgiIqClSLlKJek3sa4kRrzwLOwWjuBRvi70Cb1Uq27On54p3h2u2BHU51TV7zGX8gJRvX7tuljxPdRQdrvISpzCGsIaLCYgbESzuPxFJbrypRPXi1pStZpfZOtFm6njnng8SzhUOPt4n76v49F7eP7kbMjRzWiq4J/Ku0F1OPGIAqHsV6mBvsbtyErhlyN9Fc3aQ/k1cL5CkRpL0xrlkcCALdinIXdv8XkGzue9Qug5Pnlv4QaD17y35oAn3klbQaQP9y5aEhxyDrVgrpYj9hFeYfaoCc99cuNqHHgRlcQHp3xD2hioBdnBqq2c+eAYkbBBh4WP3bzvPWfayG5gymWwfVvhtr8xItqMPESHJaWmAoUJuyhflpGqN6ox94OPsFT/xQju63Ts31q0zpsOqAtLdnM8fcwiKYg3+vRTZVfit2TD+8kw45KtrccYRcC4CZHcV+8izJXmthkrWLMWnofuYE9ipnPAORF2i1pJUC51f8plj9xqyCVXOv0toT1WxxgYDVckYfZdkszCU1iS6LUNMuirdn8C8IEX9ufL0wHPIVVDtwkHoxG0cridgbANOBPzx1ZU8RG0g7A6RY9gj7wfG0PU+tHN6R9lt3IdSZnPiOeJR2ZqMlQ1Q6l2IB2vUI8OjHObhvfHYR4J2sDXxHBLcnAAr7wp0ri0g/UFYZPdNtYzo5lIzpzbQ3JqZazzPu4teb02fktoibP3coefhwSl269z3UFMLTCovkpEnhN1z/y0FJH8hXxcCQ1C6I9cN5zLhXK+zS/FoVSfsLPgikt5qAr0LPnL0VnbcPSAoambl1Su5vamZN2hPASmNhetT0pDt11/GbCnSO8r5Mz2BW7uEe9piuNzpg/7+LQaQPcNHgoDwnm1N1FyB0pyoxTcQ6uckIENMstOQbOUt/X3VVECO77pULmdrZk953qRstik3rjiXOsOrdEof84rHVJ+yRzXGbnDs4lKOi4/XjUqSlyAgxzhOeCTsqNro0OvOV0A0t38woksJPdWzWXkiLxD9lhFaqvWlqobqGnuRIB3UbU3zz7XGyIUP1Cgvfy+yVkrFrbV1Y4vcoUsXkCkM5oVioBEWnhWeqP7hd4Zb/+DJ4tEyqTxcbAgqAa8PDxiB4BHrvGNdhBi4U63dnID59vDcTOHTbTjXuv/NwodCAFMg81YKyJYTL1KuAmFOvtwnFVPe8iWu/FlaSLBz+0QFhRdrArLy5JdyoX/phJrEKw/3Vt7+6Yd03Idmbw7ydKOgxm1SsbZcBZDLefu07zrSz2LLsbVn/QEHSl2z7O437LMmIOssF7ixvL6UUvwPWedx7a4zODBUI4CX7w7KugnIDM5WXALukrug124PwAXOfSkAJteaF48TwleRb191D0BF7k34tdtOQ44Ugdw7sJsmIOssE56t3JUqyayE7D1lBL529Gjp0FAJtSRoKE8cJmkJcKf03dcd6HFSO6ax84wTlmwpQOXDDh+Sry88VLD6jgu4CcjYtMz7nbs3D8hpUSY4thQJaj1poFRo7TNUQuf7P6UpKJiQlGpo2LUJLOW9F8pKHAItguPcqZfVBGSdKRU3ycFwS9U2JnigEiU38py3MVbVMu0oU9OgIZ15fmoaIM0ZW+kagViI5FMhKlKLBSxz0oRHt+V7qAnIUtN28z4Cinnu8xIJSVQZLmSZcUuTwKY2F1PSgO0ae1TXvPGVn8mIoUr20AaAnZsJiK+MLxSdT/RSLjpDkZROmYyZfNjlMnpyDm1RHV2u9lyyc8iplltzjKghP5C+7MYBNaDKOeN9DGJCZfvQCTsJWM8e/RNvLOKZDJX/8czCtcCxd5wYW+wg9G497XLiKVBRgsHor0y7ayk456ua6+RfdTD+PmDmZLpsKDrf3VI7N2qSHPhSJ2C5NwptfMxAym13HwIy1PkqH/4lC4i5KJX7kXJxp7/6FgKiNCnY+hjBN6nOaGdRR8p/M5b2qoAxNt5jv8stkHfdp1MqhrzdkSQrWZOPPsAmnl05YHOujcUTB3YUHymYMbGcMRoSEDZSqVjF2P3y39kDTyhctMQOMlR5xYfkzprbQkBKySm1jDJQ/ntR6MfulFxTO9b+eeINiu31CXpVrv5UYsv4yNyVzJNy3sHYiyVrRh5ECKi7pU62tVH/IQFRFFpx6FNpqPDDEgKiH4ssyz4x/Nl5d2gLAbGtK7VS6gM+hYF7JhtNGadzS/WX+PBL3ZvG7q1+lSBjTnLtfWHnCEd3LzXNnpcvivSjGrsgM8fokgWEyvvI7OVUPJE+samAeJiJpAb4IsjZmEuMzaPVuOfeeOHrwKYF7/rELmC4T1UZh+r6auVWqvE09VUEL5Unyklso1RkrX/eJQuIltFiOH3i9qXObi4g/Wf6it4vpZ4C9E0JMPG3Q8WeOw0tOu9e02+jez/R6VKTlyULHtjZqXCe1SeCbG6O5YxfsoDYgfMqO3cVbthCxRpbzHBD9HXFzHRM1dClVO3kksB+Q7qz+IXuXLU01DeQ2qrG8VI0hEt60Ijxf6kCoixTqXDdXVUfcwGx5dh6clLfqdTNdKkJ6t+HUSr/XKU7wkInBIngerwUN/BQSqd4UMkrM8THUs6C7EWuyJIrd+58+JLyhuXrwViNeYguVUAUXhdayOmu4to5Q9gHJRVGkE8Et1EdB/BV8Tpfqj7ZPaZEwUv2h3hHqcd63ciGz9J914epT2wcts61CYi6yFp55HRXEetcQES9RV9vuLqSWjBlYk+drGu4Xv8PcIY+Tf36i+hCl/ZJv79S/41TeaY1Rd6wkzZxrM3Fpe4gXO73zxgmRQHG6wYeLRcQ15Sy4fz/PXs7nDr5e1w/1LDlBhhuZGCliPypkJWhR5bShKF8j7W3uEQBYd9yPMiV6RPo+8Nz5pQEZKgZ4wtT4bE7QK49Vt0FPXNIz51ihyh+nRfO09qOy3xpKu14R5vLpBJLJSzWOQcKeU5L8R08xdsbVBIQoDjV00sVDRlywHKi442Oc4CzAaZH0eg+1UapXaOPR96qwOSWGmWeOh/PzwsWpGLOQH1DdIk7SCkX3fu9WkImjAqIEwRLYGlKvQh5knQNhfycmj9w6iRe2vWCbVylfZIZxxlS01Wr1AkKZo3Xacn6vnRvLRBysphAMq5FQGwIPgSEoU/6zqjYeReVdpDupCEUbve7YJWGOYB5jcocAAp8SuEnyU6fXcG0ofjE0l7FoQIGY30AYu8qAAAI+ElEQVQUL20HEa4ArclpMB36mIDYPcCBc7xK/+airW4OvXlbu9geW+eKMzO08+QpdpwYz9gOzINVKrDAeBZUXSKfnLHqIyd20yfeTJH0Y4XuLk1AJIX56OQ06Dg5JiBu4neZcGO51IoUULk0buQua/SHHABDLyU5qeoH0j9G8EHSQ3O6q47s2I0Gfje/pYY+NVVYLklAhC6sTaVn+wQtLv5T/FiNCUh3o8ekxotj7dTsKLK0YFpE3se+kDPn9KIuE2gDk8npywe+Zvl52tiV4ClsEe0M7uRPz+CKOA3ISmkdQDLo3XeMLklAhtTdo1XmawUEkwDtvnokG63PTAk3X5tKq1wCwHDG+qq6hHrl/S2mPvmYMBZ/ZeQu5kjALs8vcRkvmeocpa61Y4MT15LEVap67yOXl+Us3e9SBAQg03rMk9h8wHlrB9fnFAHBIA8C6FKhQ6X0WjKBPDqitba027azDLU/AzPPYfElnvqa2ylyW8a5vIq+ggKINfgsNof5E48pzb8gmgzQklcrH9uQgMi1WCIUYBwl/kxNmNJ2ogSVuqtYdf6CUwWkux5YTm4zWHcekRwTGsEvoX7ZbPLR7+T/jl14wb9bSIztHKXMVcu9WFMZ5MOTEAyxgftSHopdAQ4sJ67lrsjcjaSg7MQpeSaXkJPO2aTlRCntexSEO1dAOp7eOwkKT1du/NSsZzuJXASuNzaLnUaG3DXuMOyyEoZKoQVu1jEyV3YcRRXGqGuT3VU1kVJQ08oOiE9xiFq6BAFRD/lZhRe6Kzmq9NKnCkh3T+Vk4FhMnu3vFAJpgWJV5YSRSPq5IU8tFHbKmJa41gK1cPOKi9QiKlQpMSp/rq8hgapRy6aOuTY207/vUF7F1GdPPb828cy6xNcc8Ol5kvagGo7SUgLSPcT9GJO2chCFpXoIqp9lZ2G/WGTUCam31BYG1pJR5TGenfI7Vzj3bE7y7aEXanZOPIYbspvkqOs5Y2Nz8PDUVkXpP8NYuKrFdLYicy71usbeGmrWSVOR+zTK76UFpM8kBj03JGERB8i9OEsyVJCSUekAnqOD0+v9fzaOw0LoWqUJfo0yp2KAjGZYKw4LVcEFBsFA2GiqhfhAOKii9H7H0KJ+xMHL8rSKZ3an8MgQkjmVUrp7SMj66ErYy9DQqG/GPaV49oTXvHGqnBVASNrFGEkhpn2UHBviSuzfUVpTQPIvDdXLZIIvQFSWBj464AVPsOsQFPEEniAH16votB2LAFFpHNQiByPbAueY4B5d8h0ItIDVVKeFHVuNJ/k6Y3Eq7FPdkk4uqMv+W4p8KNbsoGtOjL2GzBkoVCnAqhwRIauirQQkHwxmQqnyItjqTPIUt3HVy13gSQKCwI1zdjclRn148FMNLfYBIWaod/1BOmfIpaikc6dQD3TqVU6qebJfqtEeewlIPnDqmK8nTAyDtTvmeMbmMvVcroOU9nVvNI8DPhI8VKU6bMISsIPVdC4CUhqwsSnzwwD0RaRzO+i84NnXSoxPyVYKUDeaxgF2H/ukFOfhGaW1TCqYfs4Ccow1VDQwDQhUhyBY95fwMJIdp1ZznDY9N89my6i9RL3hOJD/wYnA66aDkX9/QwH+4C48NXbTUsDvlDFd87XsQR2z8lxz7wxMe5/kAZ3Eg0sVkJqXZKhR0ejiDt4lfnHC1T/o6Z0R3v9LuNgCvjgOBnxnzNPhHfR7hqODh0wMh5FNMPwdg6ObNJCMUh0wXzxdpGoN0xqeXOs51rG8m/cbeMHZ+TPXLCCXshiOQUh4YoARLz1IuvZcKOEDBVAiOSDQ6LOoCcgsti16kTmAklakukSQtfryje1Giw7qgm4GPAtdUCJxEB7S2V67JiDnsRLEL3heSpB2IxSIe9QFVZbciqvHhIO9J4xwUsvrJiBbTeX4c0Tc5X2o7lciCGjAu6XaII+P6HzPsG6pVRDlJYKa4O49uURVE5DzWgQAjYRkyI2tRjGb5Dbn//NWycYcMsghI5RmLRVnmDzbTUAms2z1CwRM4YTyur7dgyGb7SQnfx1Xf5PlHyDOASpScuV6Gm+jniZTKugfHWUTkOUncYk7EhJFqoEcS8TolFrAtTkHlrLEGLe+B5UJuHIo2cvOIXNwMeHwgk1Atp7m+uexRbh5oQmG6KmpNplA2LWSeBYXriJ2Q4FfNofiFouoVX1GNgE572XFFpGncQxKLjdGjokd59oIZF0OTQmV270rRAKE+CoqZxOQ819SIv2qw7A7jpF4CaBjTUnTc39riAe1uuSqHEspkHEq1+gkV+4xZjQBOfel8gfjo2aAcD9uoF5y9xZgKdpl++rSyS+NvKeiEQJ/pTTZ/vuIkIuDzA4C1jCnCUgNl87nHBmaDNUxNDNwpNq/FtElxE3YFu+RyheN1TTwEVA+dJOOZ01Azmfx146Eq/OJyWMzdo14iVJAT56RqTh27yV+l50pJdvuKI1hjAA4AQ/VJdiEmoBswuZVHkIVoUrV5PpDIYOCs2UUS9uzGao1J+sR9oxbtiYpTiYgm0TppEn5HKdyvgnIqRzc93qLS5VEZYBq88FB8Rn0OkrpIAWmvzbBmklWEuEGvMz7cxx7Ple2kkQ1xfUWf48mIIuzdJcbUk8UfJvaaNXXWElT9aF0rlI1BMjv1OAjFIDcb2BB9adkSE6twKk0j/KoVdVH1uJ6E5C1OLvPfSVgffJAu4XaETHqwVl+OtUfE4TrJ4X53WJXJKI7FNyAI5MaTTAkp80lqGYtGfw9VVDnjuHOdU1ATmbhWd5AHr8CBapdTv1y7/FCBOE5h5jH4xNYc48xFJ/ZBORspmKVgfiSq5qoKJ2GPedGKmVyHMh3OcsWGU1Azm3JrDceAEgG8gNTWaX1nnT8zqLe2mDoYMVtu7sadWy4TUD2Wib7PlcFGFUutZOWxTiUpLXEKBVp4wToDu0vLoaagFzMVK06UM063zgZ2ACCDG3RenD7UgeqfDCKSnAfM+zzg0Cc9S7RdpBV19bV35ynii0jliHy7S/8U+fZ8ldJpKuktoNc5bS2l1qKA01AluJku89VcqAJyFVOa3uppTjw/wEv/ZNB+2EDKAAAAABJRU5ErkJggg==", - "created": 1722535283692, - "lastRetrieved": 1722535283692 - }, - "00b5aa438f1425e928c19864c99e6812ef49bd10": { - "mimeType": "image/png", - "id": "00b5aa438f1425e928c19864c99e6812ef49bd10", - "dataURL": "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAABMgAAAFUCAYAAADRUgCQAAAAAXNSR0IArs4c6QAAIABJREFUeF7svQd8nMWd/z+z++xqVa3iIlcZ27hibGxsig3GdDC9hg4JCRyp9w+Xu0vC/3J3ueRSLneXHCEBkhBKwDamGALEFGNww71hW0YuclGzZXWttjw7P38mHmejSNpdbdFK+uzr9bwkrZ5nnpn3zPPMzGe+3+9IwQ8JkAAJkAAJkAAJkAAJkAAJkAAJkAAJkAAJ9GMCsh+XnUUnARIgARIgARIgARIgARIgARIgARIgARIgAUGBjI2ABEiABEiABEiABEiABEiABEiABEiABEigXxOgQNavq5+FJwESIAESIAESIAESIAESIAESIAESIAESoEDGNkACJEACJEACJEACJEACJEACJEACJEACJNCvCVAg69fVz8KTAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAlQIGMbIAESIAESIAESIAESIAESIAESIAESIAES6NcEKJD16+pn4UmABEiABEiABEiABEiABEiABEiABEiABCiQsQ2QAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAn0awIUyPp19bPwJEACJEACJEACJEACJEACJEACJEACJEACFMjYBkiABEiABEiABEiABEiABEiABEiABEiABPo1AQpk/br6WXgSIAESIAESIAESIAESIAESIAESIAESIAEKZGwDJEACJEACJEACJEACJEACJEACJEACJEAC/ZoABbJ+Xf0sPAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAUytgESIAESIAESIAESIAESIAESIAESIAESIIF+TYACWb+ufhaeBEiABEiABEiABEiABEiABEiABEiABEiAAhnbAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQQL8mQIGsX1c/C08CJEACJEACJEACJEACJEACJEACJEACJECBjG2ABEiABEiABEiABEiABEiABEiABEiABEigXxOgQNavq5+FJwESIAESIAESIAESIAESIAESIAESIAESoEDGNkACJEACJEACJEACJEACJEACJEACJEACJNCvCVAg69fVz8KTAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAlQIGMbIAESIAESIAESIAESIAESIAESIAESIAES6NcEKJD16+pn4UmABEiABEiABEiABEiABEiABEiABEiABCiQsQ2QAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAn0awIUyPp19bPwJEACJEACJEACJEACJEACJEACJEACJEACFMjYBkiABEiABEiABEiABEiABEiABEiABEiABPo1AQpk/br6WXgSIAESIAESIAESIAESIAESIAESIAESIAEKZGwDJEACJEACJEACJEACJEACJEACJEACJEAC/ZoABbJ+Xf0sPAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAUytgESIAESIAESIAESIAESIAESIAESIAESIIF+TYACWb+ufhaeBEiABEiABEiABEiABEiABEiABEiABEiAAhnbAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmQQL8mQIGsX1c/C08CJEACJEACJEACJEACJEACJEACJEACJECBjG2ABEiABEiABEiABEiABEiABEiABEiABEigXxOgQNavq5+FJwESIAESIAESIAESIAESIAESIAESIAESoEDGNkACJEACJEACJEACJEACJEACJEACJEACJNCvCVAg69fVz8KTAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAlQIGMbIAESIAESIAESIAESIAESIAESIAESIAES6NcEKJD16+pPv8IrpQbatj0vGAwGbNvWGfT7/SIYDAr8bY72f+M8fBfNx7IsfZrT6Tx14Dv87Xa7hfnd/B/nZmRkOIUQm6WUB6K5B88hARIgARIgARIgARIgARIgARIgARLoPQQokPWeuurzOVVKQYT64MRxIQqrlBI+n0+0tbXpw+v16gO/t7a26p/4fyAQOCWghUIhgQPXmo+UUpjD4XBoAQyHy+XSgpjH4xGZmZn6yM7Ohhh26m/8P+zzRSnl032+IlhAEiABEiABEiABEiABEiABEiABEuhnBCiQ9bMK78niKqWklFIrV4FAYLNt2w0Qs2AVBkHLtu2sjIyMWbW1tVoAa25uFk1NTfpobGzUR319vWhoaNA/8X1LS8sp0cwIZeEiWbgwZizCIHpBBIMwBkEsLy9PHwUFBSI/P1//PmDAAH3gd5yTk5MDC7PPHA7HEcuyUA5tcQahDaKbw+HIdjgcs8LL2JOseW8SIAESIAESIAESIAESIAESIAESIIHoCVAgi54Vz0wAAdu29waDwcLm5uZ8iFxG6DJiWF1d3SkRDAKYsRgzVmTGkgw/4XppLMggjoWLbciqsSILF8kgZhmhzFiQGbHMWJEZC7KsrKy/EtAgnuXm5mqxLFxEw3cQ0dxud6XD4RhGkSwBDYVJkAAJkAAJkAAJkAAJkAAJkAAJkEAKCVAgSyHs/nQrpVT28ePH4TIptm3b1nreeef9d0ZGxldg8QVx68iRI/o4dOiQqKioEEePHhU1NTX69+rqagErMohm0cYVSxZbiGYQwwoLC8XgwYPFoEGD9M9hw4aJ4cOHnzrwfwhoDofjs4yMjPGfffZZHr7DIaVsTFb+mC4JkAAJkAAJkAAJkAAJkAAJkAAJkED8BCiQxc+QKXRAQCl1SAgxAv+C2PXZZ5+JvXv3qpqaGgkx7NixY/p7WIlBCIOlGNwqcRgRDRZisArDJzymmLkdLMPCPx2d09m5ka4zVmdwoWwfpwyiGazIcMANE8JYUVGRFs9GjRolzjjjDC2iwWUTH+2PyQ8JkAAJkAAJkAAJkAAJkAAJkAAJkEDaEuDEPW2rpndlLBAIPBoIBGzECaurq2vNzc39V5/PN6SyslJbie3Zs0eUlpaKgwcPaisxnAchLDxemBG48NMckShEK5J1pVF1JqyFXxMe6P+k6KVjj8FNEy6ZRiAbP368mDhxohgzZowoKSnR3zc0NDxSUFDggSVaTk6Ox+12/0xK6YtUNv6fBEiABEiABEiABEiABEiABEiABEggNQQokKWGc5+/i1JKwfrr8OHD4sCBA2LXrl1i//792koMx/Hjx/UBYQwWY7AOg/tkNOIU4HVlHdYVXCNy4fqORLL2u12GpxUew6yzPJwM0H9q10u4VEIUg/UYDrhiQjQbO3asOO2007SFGS3K+vzjwAKSAAmQAAmQAAmQAAmQAAmQAAn0MgIUyHpZhaVDdpVSVjAYPOb3++tOBs0PNTQ0jKmqqtKWYtu2bRO7d+/WB0QzuE+anSqN0BRJ8IrWMiwSj2QIZOFpmvub74xgZqzLIJCNHj1aTJs2TbteTpgwQQwcOPBgZmZmyGwGkJGRUeB0OkdLKesjlYf/JwESIAESIAESIAESIAESIAESIAESSDwBCmSJZ9onU8TOjCfDaYVgLYbdJiGIlZeX6/hi+AnrMQTYR3wxYzGG3SUhjuEDESmSMNYZvHiu7SrN8P+1z1tHQli0lYtrIZJhd0u4Vg4cOFDHJRs6dKgO7D9ixAhtTTZu3DhRXFysY5kJIRzABIM5KaWK9l48jwRIgARIgARIgARIgARIgARIgARIID4CFMji49dvrg4EAm9YlnUNRKTDhw+rqqoqWVZWJrZv3y7Wr1+PAPxaIIMg1tEnHrHJiGv42V2BLRqRLJECWWf3y83N1cH8EadsypQpYubMmdoFc+DAgWrkyJH6eQwGgx9ZlnURRbJ+83ixoCRAAiRAAiRAAiRAAiRAAiRAAj1MgAJZD1dAOt4e1mJGnDlpOfa8EOLOrVu36kD7n376qdi3b59AAP6amppTu1HClRJxxdp/YhHHYjk3UeySYZ0WnjeTPn5iR0y4VsKqDLtfwqoMwfwnT56sRTPEKps0aRKs7l53Op23SSn9J4XBU3WSqHIzHRIgARIgARIgARIgARIgARIgARIggT8ToEDGltAhgUAg8P22trbC5ubmouzs7Nu2b9+utm/fLrds2SJwIAB/Q0OD8Pl8Ea26YhGgekIgS3YT6Kz8RjCDRRmsyaZOnap/nn766WrKlCnS7/e/lpOTU+nxeJqcTuc/hguXyc4z0ycBEiABEiABEiABEiABEiABEiCB/kSAAll/qu0Yyurz+Q43NTUNhxC2atUqsWPHDh1rDFZjiC9mdqIMhUJ/sztktG6QsQhnMWQ9plPD8xCrONeV8BVpd07zf8Qpg0UZrMmwA+aQIUPEmDFjxHnnnSfOOussiGUiJycHZfrfE0H8vxFT4XgyCZAACZAACZAACZAACZAACZAACZBAVAQokEWFqe+fdOjQocwRI0a0trS0eOvr6+E66SkvL5e7du0Sa9eu1TtSQhxraWkREMXCP93dcbKnBbL2glh3BDJw6Ch2WbQCWThHy7JEZmamDuR/zjnniDPPPFNblSGYf1FRUaioqMihlLrM5XK91/dbJEtIAiRAAiRAAiRAAiRAAiRAAiRAAqkjQIEsdazT8k5KqQLEhRdCNDY2Nqrq6mq5efNmgXhjO3fu1K6U2JWysbFRdBZjrH3BYhG+ohWlYkkT+Yl0fvh9O8tDtHmLVLHhAmJXYhrOczqdWiSDNRmEMohjZ5xxhhbMxo8fr0aPHi0DgcBZLperQkpZE+ne/D8JkAAJkAAJkAAJkAAJkAAJkAAJkEBkAhTIIjPq02cEAoHtlmWdceTIEXXo0CG5Z88ebTEGkQwulbW1tTGXP5I4FZ5gtCJUtOcZcQw/I1lxmXN6UiDrSsxzuVxaKEPQ/jlz5ojp06fr+GQTJkyQHo8Hl54PYVNK+WnMlcQLSIAESIAESIAESIAESIAESIAESIAEThGgQNbPG4PX611RXl5+IWKMLV++XGzcuFFUV1eLuro6bTGGIPzmE69LYjJRtxflYhHpYs1XpLQj/b/9/To7H/HJsOtlVlaWFsoQmwxxyc4//3wtmBUVFSGpZ6WU98VaBp5PAiRAAiRAAiRAAiRAAiRAAiRAAiTwFwIUyPphawgGgyvb2tpajhw5Ejx69Oj5O3fuzN+0aZNYt26dKC0tFW1tbcK27b8h05EIhZOiDcqfTNSpFsgSVe5oLeNwHna7RNB+uFtCIBs/fjy+O5Kbm7vf4XDcm5mZuT+ZjJk2CZAACZAACZAACZAACZAACZAACfRVAhTI+mrNhpVLKSWllMp8pZRSiCu2evVqsXLlSgFxDMH4m5qatNUYgvC3D8TfGaaO4mt1R6yKViiKtrq6suKK9l6RzovWUixSOtGWCdZkcK0cPny4tiaDSHbJJZeI2bNnw9JvnMfj2XtSuPur+o42fZ5HAiRAAiRAAiRAAiRAAiRAAiRAAv2VAAWyflLztm0vdDgct8FlEmIYLMXWrFmjXSrLyspEVVVVxMD2HaFKlECGtKMVnKKpsq5Eqa6C5oennYg0El0upJednS0GDBigY5Kdd955erdLHLAw83g8tZZlDYyGEc8hARIgARIgARIgARIgARIgARIgARL4MwEKZH28JSilsoQQo/1+/395vd4rEV/s7bff1vHGIIxVVlaKlpYW4ff7NYlY3CXDhabwa1MldHVVde3z1j5/5tqOyhvJ4qurtBPdnDqK+4adLi3LEvn5+aK4uFjMmDFDXHTRRWLq1KlwuzwWDAbPz8vLq5dSHk10fpgeCZAACZAACZAACZAACZAACZAACfRFAhTI+mKt/lno0m52zc3NU7Ozs7dVVFQIBOLfuXOnWLFihVi/fr04fvy4dqnUSqn8c1NIR4EsljyZ6uyuQNaZ6BfeTDpKO1Z20Ta78Hppb/lmgviPHTtWzJw5U8yaNUu7W+Kn3+9/NyMj43UhxG+klG3R3o/nkQAJkAAJkAAJkAAJkAAJkAAJkEB/JECBrA/XulJqYTAYzKuqqrpyw4YNYtmyZdp6rKGhQVuNBYNBHWusO+JYd7B1JzZZpPt0JGh1ZHUVLmB15mLZ/vtYuUTjutmV1V0kka2j/OE7xCbLzMzULpcI4D9//nxxwQUX6O+EEJaU0m4fhy4SV/6fBEiABEiABEiABEiABEiABEiABPoTAQpkfbi2vV6v2r9/v7YWW7t2rf65efNmLYq1t8pKpFtkR0g7Sj/ee3Zl7RUp7c7+H+m6rppLNNZnuD4aUa+z+3SVPwTvhzXZ+eefL84991wxZcoUMWLEiDLLsppdLtdZfbips2gkQAIkQAIkQAIkQAIkQAIkQAIkEBcBCmRx4Uvvi3fv3q0++ugj8cEHH4iPP/5Y1NbWYrfDmNwoE1HCWC2xwkWkztwru5NmIsoSTRqxWpKhjJGs3qIRzFwul97l8rTTThPTpk0TV199tbjiiisQ1L8lIyMjJ5q88xwSIAESIAESIAESIAESIAESIAES6I8EKJD1sVoPBAI/sizrW3v27BHvvPOOthzbunWrDshvAvGnssjxCFmdWZ1BCIJbIQ78jgNB6xG8HnG5cJ05UFYIUDhgOWfbtj7gXoojEAhoLvhpXE7j5RONQGZEQCMAxiOQmTKaNAoKCsTIkSO1Jdm8efPE5MmTdQB/fGzbvseyrOfjLSOvJwESIAESIAESIAESIAESIAESIIG+RIACWR+qzdbW1lv8fv/tZWVltyDeGMSxTZs2acuxtrY2LRK1d+8z4ko8GDoTwWIRx8Lzhd8hdLUXu4wAlpWVJXJzc2EZpX8i1hYsp4xYZs4zZTLiGEQwHLCiwwEmra2toqmpScdkw98Qy4yghushqpkj/Pt4eMVybUfCWUfuseFlRfnBZvTo0eKMM84Ql112mRbKRowYgdOecLvdj8SSB55LAiRAAiRAAiRAAiRAAiRAAiRAAn2dAAWyXl7DJvh6MBh8zul03g1rMbhUQiD77LPPxKFDh3rEcqw7WCEGQeSCAAYrqLy8PJGTk6PFHnyHA0IYvjPfZ2dnq8GDB0uIZLAiM8IafoaLRhCVjOWYEcmqq6uV1+uVEMdwNDc3a8Es/GhsbBR1dXUCP/E90ki3T0dCJMo/YMAAUVxcrAP3n3feedjhUk2fPl3atv2yZVm3MnB/utUk80MCJEACJEACJEACJEACJEACJNBTBCiQ9RT5BN43GAwudzqdF23cuBExxyTijn344YendqrsLI5XArMQc1JG1DFWYrB6gjgG4WvgwIFizJgx2uIJAs/gwYP1d4WFhVo0g1B20mpMFRcXy3379n2+tra21GQC6XT0gTCGD1wp8/Lyho4fP/7lY8eOaQHR6/VqSzLs8AmLO3xfU1MjDh8+LLDRAX7iO5wXblWG9AzfVG98gHt3ZaVnmA4dOlSMGzdO3HXXXeLSSy8VCOavlFrjcDjOp0gWc9PlBSRAAiRAAiRAAiRAAiRAAiRAAn2QAAWyXlypRtw4fPiwf+/evS7sUglxbPfu3WLfvn1/Ze3UEyJZZ7G48D1ELliG5efna/ELos2QIUP03xDC8F24FRmEM2NBBssoI4KFQqG/dzqd/xNrNSqlRgsh9pvrIJrBUgxulsaazAhmEMaMaIafx48f1+JZdXW1qK+v18IaLMsgnJlPPLthxlqWrs5HPsCuqKhIXHjhhWLu3Lni7LPPFhMnToTF3Ta32z0tkfdjWiRAAiRAAiRAAiRAAiRAAiRAAiTQGwlQIOuNtfZnqyW3lNIfCoX2btiwYQxcKiGOQSSDaNM++DuKGS6SdSXgdDemWPh1HcU6Qx5g1YQDAhgEsZKSEjFhwgQt2iCQPIScnJwcr8PhaDPWZeGikxAiz+FwWMmotlAo1CaEaDWswizDnD6fLw8CGlxWsQHCrl27xPbt27UQWVlZqYU1iGzmmnCxLDyvscRlw3Wxnt8RF6QB5uANxp/73OfEVVddBc7l2dnZo5VSGVJKXzKYMk0SIAESIAESIAESIAESIAESIAES6A0EKJD1hlrqII9KqS8IIZ7+9NNPxfLly8Xbb78t8HtVVZUOQN9OVNJ/xiKQdWRxFskqqjMxB+KMsWIaNWqUDh6PXRbh+ocDwo2xIJNStrnd7mullO+lsmq6cjVUSuXatl3mdDoHw3oMB6zHysvLVUVFhYRAduTIkVMH/gfBrCORLBbBK5ZzI7EyVnvDhg0Tc+bM0dZk5557rpg0aRLy+S2n0/mTSGnw/yRAAiRAAiRAAiRAAiRAAiRAAiTQVwlQIOtlNauUcvj9/u8Eg8EzKysrb0GssRUrVmiRDEINRJloxK1IYld3sIQLOgiYjwNB9eFKiThiEMamT58uzjrrLG05hr8DgcBrDodjl8fjcbhcLodlWWullK905/7JvKatrW280+l8xLbtNliKBQKB7Pz8/K8cOHBAVVdXS2yIANfWHTt2iNLSUi2iIV4ZxEoT+yx8F9FIYmW04lgs9WhEMoiU06ZNEzfffLO44oorsLHB+9nZ2XdJKauTyZBpkwAJkAAJkAAJkAAJkAAJkAAJkEC6EqBAlq410y5f4RZOSimFwPGrVq3SlmPbtm3Trn7YZbEzwaSr782too1T1pULpkkDccQQYH/s2LH6gMXYsGHD1LRp0yR+h0XZyc9tUsrF4cXtLYHjbdv+scPh+AeUGbHJYDm2detWVV5ejo0DRFlZmTh48KAO8A9RrTO3y66aYGdx3MKviVZMwzXGmg91cOWVV4qLLrpI/7Rte1pGRsa23sK+lzy2zCYJkAAJkAAJkAAJkAAJkAAJkEAvIUCBrJdUFLIZDAbXK6WKKyoqRnzyySfacuzNN9/UwgwslYyFUjQWZEivfZyweAQyxAszuyYimP5pp52mA8HPnj1bzJw5EztSqpEjR8rq6uozXS5XHXahlFI6PB7PUSmltxdVw6msIg6cEKLY6/WGYC3W0tKSMXLkyLIDBw5oS7INGzaILVu26FhljY2NOvg/rMkglkX7iaaOohHR2t8Pu4HCmg9uljfccIOYMmVKTVZWFqz4BkWbN55HAiRAAiRAAiRAAiRAAiRAAiRAAn2FAAWyXlSTLS0th+vq6oZv3rxZvP7661qAgaUShJfOXCtTVTy4UWJ3yTFjxogzzjhDjB8/XgffHzp0aBBxxoqLiy2v1zs3KytrVarylOr7KKU8Qghvc3NzELtcVlZWWrAeKy8v1yIZAvvDogy7YkYrRoaXIdLmCTi3s3TbX+t2u8WgQYN0fV1zzTVaKIPra15eHt8JqW44vB8JkAAJkAAJkAAJkAAJkAAJkECPE+BkuMerIHIGlFIDhRCZR48eXV9WVjbkgw8+EM8884x24cMnljhUke8W/Rlmd0RYjiHGGOKKnXfeeeKyyy6DRRJcKkullBOjT7FvnamUWuLz+W6sr6+X77//vkC8uE2bNuldMP1+v7Ymg6DVWWyyjmi0F7pitTBrL6Ll5uZqN0sc1157LWLGjcvLywvl5+fv71u1wdKQAAmQAAmQAAmQAAmQAAmQAAmQQOcEKJD1gtYRCAT+zbKsx+Cut3TpUu1aibhjsESKJf5UIouK+8Kt0sQZmzFjhnalxK6IsEoqKChA3mR/jWllyo14ceCO3UURyB/1BvdL1OXOnTv1bpcQy+L5RONi2Vk7gSUZ6hDWY9dff7269tprpWVZmwoKCmbGkydeSwIkQAIkQAIkQAIkQAIkQAIkQAK9iQAFsl5QW7W1tV9XSv3PsmXLxPPPPy/Wr1+vY1oh7liqrccgikFUQZyx/Px87Up59tlni3POOUfMmTMHwfc3KaV+ZllWnsPh+LWUMtQLECcti0qpB2zbdoRCIX9zc/Odx48fvxLulhA5165dq+PHmR0vjUUZMhOr8Nm+HUTbLsx9EDMOwfrnz5+P2GRVJSUlfwqFQv/u8Xj2Jg0OEyYBEiABEiABEiABEiABEiABEiCBNCFAgSxNKqJ9NsIskCZUV1dvXrlyZSZc9OBeCdfKznZFjFYYCb9fLGIMgutjh8px48ZpYQzxxiZOnKimTp0qnU5nlcfjGdNbg+4nuyn4/f7/ObFBwdcRhwzWZHC1RBw5WJQhsL+JTRaNy2Usdda+rjuKU2bETsQiu/HGG7WrrNPpbLQsa4KUsirZbJg+CZAACZAACZAACZAACZAACZAACfQkAQpkPUk/wr3hnoeA75999pn14osvilWrVonS0lJRW1vb6ZXxCGRItLMg74gz5vF4EHRfi2Nwqbzwwgt1IP7Ro0cbd0qXlDKQxkh7NGtKKaeU0rZtu6mpqSkHgtjq1au1SIbYZBA+YRnY2toa0YIs0QKZy+WC9Z8WPG+//XZdt1OnTgWv4VLKih4Fx5uTAAmQAAmQAAmQAAmQAAmQAAmQQJIJUCBLMuB4kg+FQgoxqyCgLF68WO+ECHc8xK2K9dORC15HabQXyMx1eXl5WghDrKrzzz9fiyfDhg1rKiwsbMzOzs5xOp35seapP55vLAP9fn+t1+ttq6qqCh04cKBo48aNmXCdxQ6l2PUS3LEzafgnGvEzmnM64g4BFMeIESPE3LlztUB26aWXqpKSErwjiqWU1f2xvlhmEiABEiABEiABEiABEiABEiCB/kGAAlka1nMgEJgjhMhqampa9s477+jdD9977z0tnBjRpDNLr86K0x2BDNdYliUyMjLEqFGjTsUZg3hy+umnIy+POZ3O76chwrTOUvuNC44ePfp8WVnZXbAQXL58udi6deupuGSmnqMVvuK1LMOulthkAS6W99xzj3afLSwsxH4LfFekdati5kiABEiABEiABEiABEiABEiABOIhwElvPPSSdK1t2586HI7J27ZtU7/97W8lgvNXVFSIpqamv3GBjFZA6Uhgab/7YUfiCgSTiRMnanFswYIF6txzz5UQzFwu1zeFEOtdLtfHScLQb5Jta2v7Y0ZGxtWwEMSxbt068cYbb+i4ZO2tyAyUroSw9v+LRTSDq2V2draYMmWKuPPOO8Xs2bOxEYM9YMAAC/fur7uS9pvGyIKSAAmQAAmQAAmQAAmQAAmQQD8lQIEsDSu+sbHxk4ouLD1UAAAgAElEQVSKitlwrfz9738vVq5cKbDDIQLztzfkCRfITgoYHZYoWpHECGkQwQoKCrRbJayJcFx99dWwJrtSCNHscrlWpSG6XpklpdQUIUR2a2sr6l3ArXbJkiViy5YtoqqqSgujqPtwq8FIFmXh/28vhEYDaeTIkeKSSy4RF110EXa2VMOHD18upXzP6XT+MJrreQ4JkAAJkAAJkAAJkAAJkAAJkAAJ9CYCFMjSsLb279+/ZtWqVefCrRJudwjebmJSdSZ2RCOARXOOwTF48GC9SyV2NZw/f76YNm2agDWZECJTShl7ELQ05JxuWcKmDBDBDhw4oLZv3y4RwB/Wg6h/r9erRbKOPpHqNRpLwfaCGqzI0AYuv/xy8cADD+i2YNv28263+55048b8kAAJkAAJkAAJkAAJkAAJkAAJkEC8BCiQxUswgdd7vd47PR7PC9jR8KWXXtLiyMGDB0VdXd2pu3QmhkQSSUwCkSyPYDlWVFQkJk2apK2H5s2bh8Dtz44ZM+a+BBaVSXVCQCk1XAhxGJZkGzduFG+//bb+uX//ft0ObNvucKfRSPUa3j46aivtBTKHw6FFWQTsv/fee3XQ/sLCwucKCwvvZeWRAAmQAAmQAAmQAAmQAAmQAAmQQF8jQIEsjWq0pqbmdiHES++++64WyBCcHztWwr0yFR8IIhDH5syZo3eqhFslhDK32/3YiRhUDMafikoQQrS2tp57YufIX1VUVIwtLS3NgRUhxNLS0lL8T4tkyf4YwQybMaA9wJJs9uzZb48dO/bbQog9UsrWZOeB6ZMACZAACZAACZAACZAACZAACZBAqghQIEsV6Sjus2PHjmubm5uXvv766+KPf/yjjkWVqo/T6dQxx8aNGyeuvfZaccEFF6izzz5bZmZmfkNK+b8Mzp6qmvjLfZqbm7cKIc784IMP1JtvvikRvH/v3r2ipaWl0+D9ic6liUN32WWXic9//vNiwoQJEGxnud3uDYm+F9MjARIgARIgARIgARIgARIgARIggZ4iQIGsp8ifvK8RnpRSGdXV1RtfeumlKUuXLhW7du0SlZWVf5O7aF0pIxWrvUuex+MRM2bM0JZj11xzjZo3b55saGi4JT8/fwnFsUg0k/P/tra2S71eb67X631l/fr12qJw8eLFOnB/Z66WichJeBvDrpaZmZni4osvFg8//LC2JGtoaDitoKDgQCLuxTRIgARIgARIgARIgARIgARIgARIIB0IUCBLg1oIBoN7a2pqXAcPHhz51FNPieXLl4uamhrR3NzcqUCGf4TvahhrMYxAZlmWGDBggBg6dKiAldAFF1ygdy/Mysqa53K5Poo1XZ6feAKhUEghUD9EsldeeUV8+umnory8XAfuT8anfbwyxCODeHrLLbfomHRTp05tzsrKGiil9CXj/kyTBEiABEiABEiABEiABEiABEiABFJNgAJZqomH3c9YZnm9XoVA7GvXrhWvvfaaQJB+n8+n3eiMCNbecix8Z8JoxLLOgrhjt0LEmZo+fbq4/vrrddyxIUOGIPZZSWZm5sEexMNbnySArS3RRvbt26d3tvzggw8Edjg9duxYtxhFskJs37Zwk5EjR4pZs2ZpEfWhhx7CV1lCiDYppepWJngRCZAACZAACZAACZAACZAACZAACaQRAQpkPVgZwWDwTafTuaC6ulrHHEMgdlgJHThw4JQwliyBDFZB2LFy2LBheodC7Fh5zjnnIAaZCoVC57vd7rU9iIa3bkdAKXWOEGIthFRYGKK97NmzR4tkfr8/Jl6xCmRog/n5+WLUqFHi0ksvRSwyNWXKFGnbdptlWZkx3ZwnkwAJkAAJkAAJkAAJkAAJkAAJkEAaEqBA1oOV4vf7F/p8vtsgiD3zzDMCsccgljU1NXXqPtmZ5VhHVj/tXTDbx5aCpdiUKVPErbfeKq666iqRm5tbn5WVdbdlWX/sQSy8dQcElFITfT7fMofDMdJYkWF3S1gb1tXV/c0VnVkMdgS3o7YTfh7aEWKR5ebmirlz5+pg/ZMnTxYjRoyozsrKKmaMOjZZEiABEiABEiABEiABEiABEiCB3k6AAlkP1mBTU9PCI0eO3AaroEWLFon3339fu1YGAoEucxUuaMQahwzXYsdKiB1wmYPgcdlll6lzzz1XKqU2ORyOmRQ8erBRdHFrpdQYIcTKioqKodu3b9dulu+88462OMTOluFtobsCWXuLRWQH3yE9iGRnnnkmNnEQc+bMETNnzmwrKCj4kpTyObaZ9GwzzBUJkAAJkAAJkAAJkAAJkAAJkEB0BCiQRccpKWdVVVU9t2HDhrvhLgdrIIgeXVl9hWcikptcZxnGdXCtRFD+O++8U8cdmzhxIgSzM4UQASnl7qQUlokmhIBSqsjv91e3tbU54ZL7wgsviM2bN4sjR46IYDB46h7dEcgitT245Y4YMQJB+rVIhrYzZMgQ2+FwfFFK+buEFJCJkAAJkAAJkAAJkAAJkAAJkAAJkEAPEKBA1gPQW1tbZ2dkZHxSVlZmL1261Pnqq69qK6CKiooOc9OR2NFdgQwix5gxY7TIcdNNN4mLL75YDRs2TOLTAyh4y24SQOB+WB5++OGH4qOPPhIff/yx3vU0XCSL1bqwIwEW34VblWHH04EDB4obbrhB3HHHHbodnbAe+9cTouv3ulkUXkYCJEACJEACJEACJEACJEACJEACPU6AokgPVEFLS8tVlmW9tWbNGm0B9PLLL4vW1lbtXtndT2eCWfvvLcsS8+fP1wcCrk+bNk243W6nlDLU3XvzutQSMO6Mtm1rkeztt98Wv//978XRo0d1O8Lup+HCVqy56yrOHQRWpH/jjTeKBx54QG/skJmZ+b3c3Nx/jfU+PJ8ESIAESIAESIAESIAESIAESIAE0oUABbIU14RS6gYhxKurV69WK1eulH/605+09Y9t26eEje5kqSOBLPw7CBtZWVmioKBA3HbbbeK6667Tu1fW1dWdWVhYuL079+Q1PUdAKeUSQvixi+WKFSvEa6+9JrZu3SpKS0v1rpaxuFi2L0UkY0JYlJ133nliwYIF4vLLL4fb5XeHDRv2Hz1Hg3cmARIgARIgARIgARIgARIgARIggfgIUCCLj1/UVxurH7jGHT16VC1dulQi9ti2bdvEvn37uh17rL0w1pn1DwKsDx8+XLtX3nfffdi1cndubu4Sj8fzpJTyYNQF4YlpQWDRokXOm2+++QdtbW2TDh06dC1EVoitCNqPgP34dOZiGWkn1I4C9YcXGv8fO3asOOuss7Sr5UUXXbR8+PDhHwshfiyl/PPN+SEBEiABEiABEiABEiABEiABEiCBXkSAAlkKK8u27Rfr6+s/h3hjCxcuFBDIDh8+LBoaGpKSCyOE4GdOTo44++yzIWZoq59p06YtyszMvD0pN2aiKSPg9/u/6HK5nkSg/sWLF2uXXbhawl3XuFomIzOFhYU6YP8tt9wivvCFL4hhw4bhNsVSyupk3I9pkgAJkAAJkAAJkAAJkAAJkAAJkEAyCVAgSybdk2mHxYyqKy0tzYcr3KJFi8R7772nrX2SKWTAtRLWYwisjl0HsXMlrH8GDRq0xLKsW1JQfN4iyQSCweBrTqfz+t/97nfi6aefFmVlZeL48eN/FbA/0VlALDu47CJQ/yOPPCLOPBOboIohUsqaRN+L6ZEACZAACZAACZAACZAACZAACZBAsglQIEs24ZPph0KhVaFQ6HxYjcENbvXq1WL37t1xBeZH0pFiTTmdTjFkyBAxfvx4LZAh/lh+fr7weDwvOZ3OO1JUfN4myQRCodDWjz766Ey4WWJXS1iUIWB/PJ+u2haEV7fbLa688kpx1113iUsuuQSxz4YUFxdTIIsHOq8lARIgARIgARIgARIgARIgARLoEQIUyFKAXSmV4/f7V3i93hmw8HnuuefEwYMHtWtltNZj0e5S2V7UgIgxadIkcf755+vA/JdffvlWKeUhh8NxrbFsSwEC3iLJBJRSuw4cODBx165d2jrxjTfe0FZkncUhC89OtG2rfREgvmIXy6uuukrvaunxeIaMGzeOAlmS65rJkwAJkAAJkAAJkAAJkAAJkAAJJJ4ABbLEM/2bFP1+/08bGhq+uX79erFkyRLx5ptvivr6er3bYDQCRldZjGTlk52dLS699FIdTP2yyy5DrChd5xTHUlDxKbyFUuof6+rqflBdXe1AfDu0s/LyctHU1BR3G+usGLAimzhxot7R8u677xZ79uzJfuihh1rZtlJY8bwVCZAACZAACZAACZAACZAACZBAQghQIEsIxo4TUUoVnojL9ERTU9PkLVu2nLFs2TKxYsUKsW7dOu1aGb6bYLxCWUc5QIyoQYMG6UDqiD02ffp04XA4nFLKUBKLzaRTTCB8h9SGhgb1+uuvy1dffVUg1h0sFWGlmIz2hfaL4PywUPzc5z4nbr311kXZ2dlNlmU9SJEsxY2AtyMBEiABEiABEiABEiABEiABEoiLAAWyuPB1fXFra+vIzMzMg5WVlXrHyhdffFHs3btX71xp2/YpgSxcvOjM3a2zO4WLbDgnPK2SkhItXlx//fXqjjvukAMGDMApvU4gS4bYkow0k9iUokq6ra1tXEZGxmerVq1SH374ocQmECtXrtRtzbSLSDHrOrpRZ20SFmS5ubli5MiR4uabbxZf/epX9d8ul2uxw+G4LapM8yQSIAESIAESIAESIAESIAESIAESSAMCFMiSWAmtra0jMjMzD8G18uWXXxbYZRAub7Aeg2DRkViRCIHMpDtr1ixx4YUXiptuukmMGDHinpKSkueTWNykJq2U+pYQ4keBQMAOBoNa9IFllDk6spACBxwQchAvCwd2X3Q6ndKJP/rgp7a2doTb7T4ES8XFixfrA+0NvPBJpECGtLBDalFRkY5Bht0si4uLRUFBwWan0zmjD+JlkUiABEiABEiABEiABEiABEiABPooAQpkSazYgwcPDnM6nUcQMB3uldhhsK2tLaJYEavrZWfnm+DpiD2Wk5Nz16BBg/6QxOImLelgMHiv0+n8fX19vWpqapKI31ZXV6fFxpaWFi0ABQKBU5ZSRhSDeIMjJydHWzYVFhbqA7/Dmk4p9ZbD4ViQtIz3QMItLS1Ds7KyKrZv3y4Qi+yFF17QwfobGxs7FcgiiWZdibbGiuyKK67QccgQk2z06NGb3W43BbIeqH/ekgRIgARIgARIgARIgARIgARIoHsEKJB1j1vEq1paWm6or68fWFZW9hRECsQdg2gRHg+qK2GiO5ZkxooKogU+ECweeOABMXv2bIhBd+Xk5KS1QKaUyrZt+xq/3++vra0VOHw+X97s2bOfKS0tVQ0NDRLf1dTUCLitQviBWOb1ek8Jj8YyDwZi2MEzIyND5OfnaysnxMsaOnSo/h1HKBRaU1pa+q8jRozIwt8nhTSHbdulGRkZOyJWchqeoJQaJoQ4AgHxpZde0gLZ/v37RUVFRZcCGf7ZWZyySG0RjM0uqQjYP3369M0ej4cCWRq2j1RmSSmV7/f7r7Bt29/a2qo3JTE/8TuEbfyEdaM5usqfMfo0zzZ+ou1lZmbqn3jew393Op1eKeU7qSxzX7yXUmqgbdsX27YdQD2h3sKscfG727KshX3Rbb0v1ifLRAIk0DEB8w4LBAKXhUKhnHDre9PfOJ1On2VZb/F9F38rUkqNsW17hm3btmEd1re43W73EillMP47MQUSIAESiI0ABbLYeEV9diAQUBBzXnjhBbVw4UKJ2GMQLSBCdDdgerig1lnsMXxvLKbuv/9+8YUvfEGMGTMGFlYPuN3uZ6IuQApObD/AUEoVCyEqcesDBw6Iffv26WPXrl3q+PHjsqGh4ZTVGCzxMLmG5ZhxuTTimMm6ca3ExNlMnrFxgeEDwWzcuHH6ACOIZzhPCPETKSVcOnvdByKjEOKrtbW1l65fv/4SWC+uWbNGbNmypVO33q4KGcm6DNfCSm/KlClaJFuwYIGYN2/ehpycnFkcQPa65hNThiPVr1JqghBiNxKFpSesGCFohz/HEMwwMMYzHO46HZ4RtMFwQcYI3+ZZzsvLEzjMc42de09+6qWUBR0VKlLeYwLRx08+YWk7WwjxiSkm3rvGZT2s6L+QUn6tj6Ng8UiABDoh0NveqZ3lVyl1rVLqdSmlxJgS/RPGkhjnhI2775RSvsjGEB2BLlj/nRDil0gFrDEGQBgUwxl1EN0dEntWb2vLiS09UyMBEgCBHnn59FX04S/VsrKywKeffmpBoMBx7NixuHYTbG/F05lbJTpyCD0QfO644w7sYLl70KBBdwohDkspj6Ybe6XUd9ra2hbU19fbDQ0NmaFQaCY2Mdi9e7f47LPPRFlZmd7UANZimGRDGEMnakTGaMVGwwt8jNXJ4MGDxfDhw7Vb4Pjx4wU2NRgxYoTIyso6kpubuzc/P39AVlbW9N7YWZ4QY79XUVHxLx9++KFYunSpdvHtLO5dZ20ikuWYuQ4DGgTqB0fsZnnzzTf7srOzvyGl/FW6tTfmJ7EEgsHg+6FQyI1nE5ac4YfP58txOp3TjTu0cY3G3xDLmpub/8pFOhqBDG0NApnH4xEQwuAuDQtRI5LhJ/7G9x6Px2/b9uqsrCwLlmU4srKyZEZGxjaPx/NIb3yuE1t7f5uaUursYDD4VHNzc7MRMr1e7wCn0zkVf+P9G25BhnowuyX7/f4VhYWFzpMbdQywLOtCKWV9svOc6PT9fr9m4PV6m8OtHPH+hAV4X/igHwyP0Ym/jQhgQhOgn3Q6nXkOh+NcKaW3L5Q7njIopfICgcDKYDDYYKzWzQId0u0rbSOcEYRwMw4wv+MdjMNY7Z4UjvY7nc574+HbE9fatv1/SqnpTU1NCn1YXV2dHQqFpvv9/gEI4WEWcMAA/Q4WYU4uxrS63e51RUVFlsfjyXG5XGexP+m6BoPB4N1Kqa81Nzf7wBYhU3w+3/BQKDQG4wETKgXtCazRj5+wQF+Tm5trIyQKDvT5lmVlOxyOpHso+Hy+7/p8vqvb2tps9HvhYVx6oq32x3uacDlm3IcxXHZ2dq7L5bpHSrm9J5j4/f5zhRBPtLW1NeOdYbwgzPu/L/YDyeJsxiGoXzz36FPwjLvd7lyHw9Hjc28KZAmuedu2f+FwOB5YsWJFNnauXLVqldi2bZueDEb6RGOtEykNDGLOOOMMMXfuXHH55ZcjSP+GgoKCWZGu64n/K6U+L4T4DcSvTz/9VB8QxmA9BjdKfG/ijOElFG4pFq0w1r5c4UH7zSQbHW9BQYF2u4RgduaZZ2qLqMmTJ4uBAwcedzgcRT3BJ557trS0fN/n831nx44d4sknn9SulrEy60wga99O8ZIDvyFDhogHH3xQwHIRf59wVb3DsqyX4ikHr00PAp0N/v1+f5vP58uAiH3kyBFRXV19ygUav0MUw7sPg0sjNuD39tafxvW8IwvbcHHbWJMZi7LwybwZRGFwjU520KBBuk3iwOYRxsUaCwiZmZn/ccJ147vt6fbHSY4ps1JqiBCiCpOB8vJysXPnzlNWvEePHtXvYiMIhAsqmDRicQGWuFOnThVjx47VvIUQeVLKpnRnGp4/Y8WM8sIt3bjxm8lbrO/Q9Hh6/zYXZmBqnh9jZW2sMNEnGqE50s7X6V6/iaoDpVQWjGHxXkOIB7QRvNsgloXvFJ2o+/V0Ou3ftUYUw7jJCEUmpqvL5drudDrP7Ok8x3r/YDD4oVJqHjwV4OWBRVmEpKiqqtLPvhlzGhaYwA0cOFCPDTFGnDZtmu5fLMs65nQ6B8V6//5yPhgLIT6E4Ii+BQvfe/bs0f0LxvpYfDEbb+HdhLaGhRewRn+CBWzMa9CHo+0Zy7JEvXs68GZ5EIskhw4d0mMaGDggj+j/wsPkpKL++kqfEysrlNuE08B4Dv0RxhWjRo3S4zshRNEJq/Xj+CVR7SDSeFApNRzGJmjHaBdoH2gX+BttIx4PsVj59IXzzbOOPgVjDjzvMLbAIoSUstHhcAxIZv1GYkiBLBKhGP6vlNLmwnhglixZIv7whz/APVAPpPDwdPWJ1lonUnYw0IU4dtttt4mzzz5bTJo0aUN2dnZaCWRKqRwhRBM4YRJy8OBBsWHDBrF582YBQQeT7fDNDEyZO7Oai8Qkmv/jRYyHFJPqs846Sx/gd9ppp2mrMnTKgUDgK263+/Fo0uvpc2zb/r7D4fgOBiM///nPxdNPP60H8uHWd5Hy2FGb7KgO8J2xJPnyl78svvSlL2mh0bbt+yzLejbSffj/3kFAnRypQSzAgACrZ5hIQARDO4OwjecZk0c8w/gdE0icn+oP3oOwEMWBQTWeYRzofNE28R06YQy08GxjQG7b9uuWZd2Q6rymw/1M3VZVVanDhw9LLFZs2rRJ91+YzGCCAIGsow/4jR49Wk9i8M48KZKp0047TZ602E37cUZraytc+4vRlk9Y3moG6JfQd5s4lxB1+8pkxYQfCBeVMfmH9R+ei7ANbdTAgQOlserAe94c6DNt295rWda4dGjDychDMBj8ndPpvB/vOggmhw4dUtXV1dJMnDGGMQJZX7McQL9+ctdvvbqP303do42YRUVMbPAOwN8dxYU82U5udDqdH2DSk4x6ijXNYDB4j9PpfBaTXPRTiA+MsScWBfC+M4s77dNFWfBs4B2HMSLi++K9h0UXCGWBQOB5t9t9T6z56cvno2+B+IW+paKiQvctMBrATwiSRmhuz8CIkeALQRJ9C7wUSkpK1NChQ2UoFILV4phEsQuFQohZ6gkXP9AHYOEPIh76ARMnLZX9QCrvlSiWiUrHCGRmkzWM3U4//XQIZWrw4MES7yEhRPmJ8EGjE3XP9ukEg8GlTqfzWvT/eN+jHR87dkxijIsxLzwizCJwqsXTZJU5VemGi+EQQPEOhSCOcTvesyfnkW95PJ5r4fEopbRTlTfcJ+0HrqmEEe+9/H7/A21tbb9FR/vaa69pkQwvVzxYeHDaW950Fkcsmnx05nKJAcx1110nvva1r2lxZ9CgQRtcLldaCGRKqSlCiIJgMJjZ2Ni4DBMwWNghPpYZcMLUGh1UpBXZSIJiJGu8jurCDO7Mg4qVCqxaYRA0c+ZMTKZ/OmDAgJeFEG4p5cfR1FNPnRMMBr94IpTb/Q0NDbOeeuop1+9//3stZuAFH+1AvrPwD+Gx3sI3RcAg+uGHH9ZWZJMmTYIYd5/b7aZA1lONIAH3PWlRMzgQCGzw+/0uCCV4p2FgW1paqn+HIIbnFgKKcT0yrpZmBT4BWYkpCfMsG3fqk+6VpyZy6Igh6sDqCW315Krkco/H880TMQixPOmQUn4U00178clerxeboIiNGzeKt99+WwtjGABiUmB2Cu5IXDeTaKz2YxCLBQYMcC644AI9oRk7dqxvyJAh5wghmqWUe9MJkVIqVwiBOHm/rKmpmYXJMfokLNSgXRuXUuNa05cGv+HulcY6xgxWjRgWLpiZjW4gMOOAwIxnKDc3d39WVhZEZT1TOTmITeu+Mdo2aNv2jx0Oxz/gOcAYBW0DVi8YqxjLMdM2kGZfsx4wbcRY3RurUWO9Gx7b1Vgeop1ALApvI0VFRaq4uNjMNfAuyBBCHJJSHoi2LhJ5nlJqqBCiorq6Wq1du1a+//77WhTDZNe870yM2/b3BQOU21g74DmAUDZ//nxsToTn4Z3s7Oyb+rtLcjurXIUFNPQtK1eu1OMGWOsZF35jTR7O2rQ5vIOM+Ir3DSz2rrzySj0uLyws3Jmbm4s5RVwfpRTElQFtbW0fHzlyJBdWbR9//LEW8CCMGfdPM4/ra895XPCSfLFpB8bSGYIYxhgYt6EtQDiFx09GRsYaIcQVsFhPZJZgzOH1et/yer0X4B0BYRfjBLRhxBjH2Ah9gLEsNP1AIvPQl9MK9+hCHWPBGu9WaBdYhMBzjvcr+pVAIDDb7XavTyUPCmQJoK2UcgohvuXz+Wbs37//FsR7eu+99wTiP5lV984sb8ztY10l6EggQwPDCwTWY9/+9rfV8OHDEWR0t8PhmJSAYsaVhFLqjEAg8JHT6SzAitHKlSvVli1b5IoVK/TqHThBFIv2E49AFula5AGDQLCcMGGCtsibNWuWmjlzpoQrEVZSfT7f1y3LqrQsa3G0eU7VeeGDk5aWlpqXXnpp0OLFi09NeqPl3JFAFt5Ow0VGM5iGe+U999yjJ8dSyvtycnIokKWq4hN0n7CdvP65ra3t0pycnIsxOMBzi8nhyY0z9EDBuFVGK7omKItxJYNBN9ypEacRK9LohDHgwrON46QLBzrkrzscjgrLsl5Olgl/XAVJwMXBYPBaKeXoioqKn2PQt3z5cr24g8kiBn+xfvAewOrfnDlztEiGdyfeBT6f70mPx/NQrOkl83yfz3em2+3eCgsSiGIQQLChCayZIQTH2icnM689lTbGFBA+YR2EiQmeDwjLEJSxumvinRoBGvUfCoW+hudGSrmkp/Id731bW1t/npmZ+dXdu3erPXv2yNWrVwscWBjAQhM/f00AC7PGygOiEdoILHZNG4FrVH5+viopKUEMSCykbHG5XC9alvWUlLIuVTxt2/5mMBgs8Hq939m6dav405/+pN93WOSBJUgsH2M5j4kcRJtzzz1Xb1TkcrnecLvdayzL+nGqLR5iyX+yz/X7/feHQqHCmpqa/8K7FWN99C8YQ0BciPWDdxEWs7ARFPqVKVOm1AwbNuyHQojleI/Hmp453+/3/8Llcn0F4xoI4Xj/I59YJII4xn6gu2STcx36GizCQTg577zz9HOH371e79ezsrJ+noi7KqUyQqHQ3wcCgUswBkb7hTi2bt06PV/FWAmCKT+JJ4BFCIwzIHyec845uo7xe1ZW1tOZmZlfTOVYnAJZAuoXD5MQog0qMjrcp556Sr9csWpiHqJY3QOjEXHCs47zMUDBQOTWW28V3/nOd6r+ELUAACAASURBVBB099qMjAys3H+YgGJ2OwmlFFww1gQCgYGwGMMqElaTsEKDiQgmYrBOiGWS3R0+sXR0ZjXdWEXArBcPKl7EWCkEZ9u237Ms67JUPrCxVkJra+ux999/vwjtEqtiEDUiufvGeg9zPurkhhtuEDfddJO46KKLIDTcV1BQQIGsu0BTfF27Vd/3hBCXYAUVg0ZYxeKAcGLcKk0AY+N6FsvzleKinbpd+IokBloQw7BihUkdnnGsSOL5xuQOIoAQAv6ht0kpl/ZUnpN5X7/f/5LL5bodVhQQ0T/55BNdx7CQwTs51o+xsICggonj9ddfr60riouLqwoKCm6RUq6KNc1En2/auW3bG/fv3z8DFnMY+GIQDNcqE2stlv4o0XlMl/TMbqVmBd+40mOlF3WMZwSDWbhBmd2gT8af+5OU8sp0KUes+YBbGHbPfu+99+QHH3ygLV5gSQbLWLhZ9YZ3Xaxl7u755p0aHmg53HIXgjnaCd6vEDiwMIEJLt69cGuWUlbjl1SMo4wr+fLly9WyZcvk2rVr9XOPeo11XGTKDVcglA+eBhj/wNsACzCJjpPV3fpJ9XWmHv1+/y6XyzXx1VdfVUuWLJEQGCCOYdwQq7hgFmBNX33hhReKu+++WwuSPp/vKx6Pp9uhT+rq6v61trb2/0dbeOedd/T8BNZt3ZmXpJp1f7ufsXY2Y7cZM2YgzraOt11QUHD36NGjX4iXSVhMVoVxENrFyy+/LCCoY0EYVqbGyynee/H6vyZgnnMT5xJjCrxX586dq266CYa5cpmU8opU9BXIGQWyBLRQI5BBWYb1GOI9YUUKA+3wQXYsok53BDWYIMMiAp3017/+9VMddAKK2O0kbNuu9fv9oWPHjg2E6o5VWAg1sEhBZ9mdSZhuuCd3f452oBpu7RRLYYwPPAZ5GNxh8INO2cSdyM7OflhK+etY0kzluScGD8c2bdpUBMuI119/XVtIxDo4iSW/l156qbjiiiv0Kl9RUdF9Q4YMoUAWC8AePre1tfXVtra2sxobG0sQfwMTQ4iqcC3CASsyE6y2h7OakNubWEyY7MPaARM3POdmso/vCgoKmrOzs+1AIDApOzsbsar6xEcpdV9TU9PvampqJEQixMzEogUmBtFamXYEwkwc4WZ18cUXa4Hs2muvhRB5r5TyuXSA19jYWFNfXz8I/RHei5i8oa3DtYqfrgmYxSNMUtAvwooMFkMmmDbcI4YMGeItKCiozsnJKXQ6naeZYMrpztYMvMvLyxVEY3gCoI1gIS+ajZbSvXypzJ9xyYSoYUQyiGPmgLA6ZMiQitzc3GB2dvZBl8t1QbInPo2NjYGjR49aEEJgOYZNoTDpjUcMN5vCwNvgkksu0QupmNTl5eUdsiyr2rKstAhxksq6t2373yoqKr67d+9e+dZbbwkcMBhA3xIPaxMzEVbJ2DH96quvhsvrw8OGDYt5DN7a2jrcsqxPEVNwzZo1efD4gTiGvqC784VUMu7P9zL1g74G1kWXXXYZjuPDhw+3cnJyBsT7HrFt+2h9ff1AtAW0iaVLl+o5q4k11p/Zp7LssFrHwgoMLvC8o749Hs9Wl8s1PRX5oEAWJ2W4V1ZWVma4XK6WN998U2BQhc4AprkdxdGKVvhq794WSQjCYASTOnTOECjuuOOOHhXIlFKI4RPCih0Glx999JF49913T5mnoqPEZCRSuWLlFSm9WKvbKNpYEUWcHQhjMPuECxGEMlieBIPBq1wu1zuxpp2K8/1+/7Hy8vIiTHx/+9vf6jrAaqn5RMu3s4kwvg9njvYH1ypYMY4YMeK+oUOHUiBLRUXHeQ+8x+AOcuzYsTU1NTXnYlUdQraZQEDsN4MDs1tPnLdMi8tN+4eFjLGOwXOOdylcLyGIYzCO576+vn50fn7+YTR5vNvSogBxZEIp9dXjx4//HO4kEAIwaYQomogYK+AKF3UMaPBOePTRRzExvk9KmRbvg5qaGoX2jX4J4iAWtOKdvMVRFb3qUtMnntyAQcdkglgGSxoIZRCYUefY5Q/PDayEhBDH0t3dLHzM8uKLL54STvFMdLRpUK+qtB7KLNqKETWMGy6sq2ChC+sPjKMgmKHdOByO1xwOx43JzOqBAwcCO3futDBWxy7zsIaOdxMZIwRikQWLAvPmzdNhJvDuy8nJqXS5XMOSWaZ0S1sphfi3T0JwevXVV7XLonFXjDeOo3n3oM3AcggLLyUlJY/MmDHjiVg5eL3eUR6PpxzeLLAQwrwNYml33D9jvTfPTwwBvFPw3GFh/s4779QeAHgGjfVmd++CeSvGvi+88IIeB6P9wgU7lk3OuntvXvcXAhhbwNIY44n77rtPj8lLSkrqsrOzC1PBiQJZnJSDwWCr0+nM/Pjjj7UZMVwIYUnWVacbjfVTrAIZLJ3g/ocVFXQcWMmK9yURDxrbtg86HI6RZWVlqrS0VAdCxUQMbgoQzKL9RCPgRHNOtPfrTAgyIpAJEAm/d6jaEMs8Hs8XBwwYsFpKuTOe+yTj2mAwuLKlpWUO3KZ++tOf6lVTCB3hgfbNfWMRFztjjsCZEBQwQBw9enRCTJ6TwYVp/oVAMBi82ul0/hEDAJiRw5USMZngdobJIdpLPKu+vZE1LB4wacPqJESySZMm6RiE6KyVUoccDof2v+zNH6XUI/v27Xv8ueee04NAiKKxxuHpqvwmJib6JcTEnD9/vrRt+wbLsl7vKW5KKQSTb9i8ebN67bXXdAxMTJBoHRR/jWAwC/EDlkEQP/DsTJkyRU2dOlUiVIHD4SiQUtbHf6fkpBAKhd6UUi6AW/mvf/1r8dJLL50KyB9L35ic3PWdVLEQgUkthFS0E7hiQ0zF5EdK+U8ZGRk/SlZp161bF/jwww8tYxmYyOceQiAm7OgvEAcYPydOnHg0Ly9vjJSyOVllSqd0fT7fVLfbvQ3j/nfeeUc+//zzYv/+/XoH2O56i3RUPrxn0H7mz5+vHnvsMeyye6eU8sVYWFRUVIzKzMwsx9xk4cKF2vsHrnOxutrGck+em3gCmPvCWAGL8piXzZo1K665r8/nU42NjWrTpk3yl7/8pQ47gXFRvEJ64kveP1LEXBN9AzYfhLYxe/bsuoKCAgpkvaH6vV5vZXNzczE6XLhWYoKJhykaF5WORIbOhLFIohomIwhcCRX9nHPO0YPSnhLIlFKTvV7ve21tbUNhlYD4VzBVRRDM9rEeujvwDOeRbIEsvB1iEgALE6wOIlbRvHnz1O233y4x6BNCfE5KuTBd2q0xM/Z6vX84cuRI3hNPPLEAu1nChx6DlUhtqrNydCXewhwWE6N7770Xqv+zgwYNul9KqdKFCfPxl1gvwWDweuw+h+3u9+zZo1atWiXXr1+vhZLwXfz646oZLEbxTMMqBlaiEMKxSgnLspEjR1Z4PJ7/D3EVpZQHe2ObUkq5hRDPb9iw4db/+q//0iKRibGUqPLgPYF+CZPfb3/723oyU1RUhEU5WCv2iAVeKBTaJKU8C5a0v/rVr7T7HCZvyXQ7TxTPdE8HljTGEhOCGIQyWAjh2YHL2dChQyGOPex0Oj+SUqadq3IwGFx47Nix2+Bq+8wzz4hXXnlF95XxWr2ke72lOn9mF0yMo+B+aRYhEEdowoQJf8jLy0Ns198lKl/h7lZvvvlmYOHChRasmiDcJNKlGu87lA39Bd55CNx/yy23IP7ioUAgMN/j8aTVLr6J4mvSgcu+3+8fXltb+x+I22e8aTAfSrTVOdoOQspgkfrRRx9VkydPlqFQ6CGn0/lktOXau3fvqEAgUA4Xe1iPIfxIovMZbV54XvcJ4JlDaCETiwwhhuKZ+9bX19cdOHAgH+3hN7/5jTZ4Cd+lsvs55ZXdIYBxBUKdYCHlmmuuQYzr48XFxUXdSSvWa2hBFiuxdudXVFRU7tu3rxgi0KJFi3Qck45cK+O8TYeXG6ECPyHcwA/7wQcf1IPS3NzcpK7EdVYepdQ5wWBwaVVV1WCYqKLjwcoMJl9wO8XHiGLdFWiQRnuRJqyTTgbqv0kT284iMCtEyRtvvBF+0nqHpnhezMnIuBkcLlq0aPLhw4c/ffzxx7VbQXd2qOuIe3uBE64TcKu5++671f33349By9tOp/OanpoQJ4NpX0jT5/PdrZR6NhAIyB07dqhPP/1Uwt0MQraJtdAXyhlvGWAVgIDkMN03uyXBIgp/27a9w+VynSOlbI33Pqm8HjEzbdt+64RQcfGyZcvUD3/4Q4lBIGLLJXKV35QJouI3vvENLTAiTk9PCmRer3d5W1vbReiXfv7zn2thMFX9dSrrOB3uBfHDuCljTILf8dwEg8FNlmVdKaU8mg75NHnwer0Ly8rKboPFAFzDMMFPpICSTmVNp7xgHIX3AgT0Sy65ROL96nA4/mBZ1l3xxhIy5QwGg3c4nc65L7zwwsNPPvmkA2PTRFs1mXuZDSwQfxEbFmGM6HQ6v19QUPBYOnFPdF7glgYxDN40b731loQICWv0ZFjemN11wfaf/umftKVqXl5eTOPvDRs2jPL7/eWwFIUlMfrA/mYpn+g20BPpGQEFojTEsS9+8Yt43rqtbVRVVdVt3LgxH21iyZIlek7PT88RwFwf820I4rDM/fznP+8rKSn5rW3b71qW9Woyc9btRpTMTPWmtDds2HDk3XffHYaHyWwPn4r8hwtEUNBh2o3A6I888oiOAVVXV5dfWFjYkIq8hN9DKXWPEOJZDC6xMmM6SQgyHcW2iSSSdfb/nhbIDHOzcoHB0MUXX9yWlZWVCR6JGtglqv7ee++9Wfv3718HK0e88KNxc23PPhq334EDB2rh8P7779erpwjgLISw0j3+TKI495Z0fD7fC7Zt34kdKhGPBa7hn332mZ40YLUsGgvY3lLWePKJNo8BmNlVB7EQsGqNnydN+WuklEPS7XnvqsxKKWwf1wR3EizsfP/739ex5jCRSUa9431w11136YD9YGdZVo9ZkB0/fnx5bW3tRYg/9OSTT+oNKPhJDgH0kZjIIiYMxDGMSxAC4qRIOlRKWZVOz01ra+vC1atX34YwBNi5DIsFtCxMTtsITxVtBONXtBEsQqCNIESIEOJDKeX8eMdTSqkbAoHAYpfLZcFqFMI4Qk7gfZcMQQT9BfoNiMHoJ+AaNGnSpG+OHTv2Z/GWJfm1Edsdwp/fY8eOKYwn4E0DYwFYoZsdrmNLNfLZpk+GdSo2JIOrLhZnHQ5H1HPajz/+eFRzc3P5s88+q+cpGBcnoz1ELg3PiIcAnjXEO0X9w4PqW9/6FvqdqNtB+3vv37+/btmyZfloxwjQj/ik/PQsAfQPOFC/X/nKV/QYIhQK/djpdP5jMnPW7UaUzEyle9pKKfTe79XX1/s++ugj94svvqhXSyoqKrQPe6o+eDFAdDIBcmF++PDDD2vXPyHEICll9MG+EpBpn893phBiKwLCQyDDKix2rqmuru7UpS+SQIZsmXKaLPa0OGbygQkAYhVh9y4M6CBQjho1KpSXl/errKysLycAacKSWLVq1ayqqqp1iDeEQQwGiJE+kbh35B4L1xoo/V/4whf0riOI40SBLBLp1P3f7/dPd7lcmw8cOBDaunWrAxY0cDNDEFIEp03Gam/qSpe8O5lJD6yhEPsELmMmeP/IkSOV0+l0JO/uiU3ZCGRY7YcLPAQy7FCKyUEyJggwj8ckEQIZ+iiPx9NjAtmhQ4eWl5eXX4TA/LAc4OpwYttWR6mhT4DbGVzp0AZgITRp0iR/VlYWYgfB1TctPk1NTQvff//92+BeifchQkIwHlFqqgbv1+LiYu3CDhEdBwKxY9Irpfyh0+n8dndzopT6khDi1wjvAVH8F7/4hY6tmezQAYhXi1Ac2MV3wYIFwdNPP90uLi7OSDcvg+5yNde1tLS82traumD79u0uGApgPAErTOMxEm/6HV1v3PfRB3/ta1/T8d7QXmKxHIJAdvz48fLf/e53ekyMuUp3Q74ko4xMMzoCaAsIiYFwGAjk/m//9m9xCWQ7d+6sW7x4cT48n9APYNGYn54lAA85zLex0IrnHe6Wfr//PzMyMv45mTmjQNYNukYggxCEgTZEB6zAo8ONZ4LRXpBA1qIRkGB+iAEoJiEQJjDIaG5uHpybm5syF4aWlpahXq93itfrfRfuK4hBAOsEWI6FD0Q6s0qKtmOKVRzrLFYZ2EZ7z66aCFyw8HKG/zsEMriSlJSUPF9QUPAVIUSLlDLYjSaW8Es2b948q6GhYR2CkSIgN0zfo2lb4RmJxoIMLzK0R5g5I1D/SWsBWpAlvEZjS1ApNdjn8+VmZGSUYaV369atEm0BcRbgcgv3OlgPxfP+ii1Hvets8242O13COgCDc7i1YzLncrna3G63th5N909NTU3OoEGDmrAyCoHsBz/4gRaKEvE+7KjsmPiCE8SRm2++Ge7/PSaQ7dmzZ/mOHTsuwuAXVmSHDh1K9+rq9fkzlmQYo8BKCM8LXGHQLjIyMo45nc5B6VDIhoaGhW+++eZtCEOAyTLei8mwqEyHsqZjHsymHliAwLv1qquu0u+NYDD4hNvtfqS7ebZt+0sOh+PX6OOeeuopLZAh5EciduvtKk8oD8aGWEyBVRysyRBMvLGxseikO2Btd8uUDtcppVxCiIzKyspXa2pqLjVeI7DKNXFuk5lPvFcgjH35y1/WjBH/1rKsqOe077777qiGhoZy7O6O8TD6gmT1gcnkwLSFtvJHXDqEGPrxj3+MkENRt4P2/LZs2VL39NNP52NuH084GtZL4gjgWccYHBZkCNeBzeCCwSAFssQhTlxKJwZN36utrf0XDLDRKcAUEw9SPJ+OxLFo0zMrVdjy+O/+7u+wk9QeIcQsKeWfg36l4IP4AxDC/vjHP6qlS5dKWKag0+logBle1lhEmu6KYyh++7hnBkmiOkR0zmYXUdQDVjP8fv/UjIyMHSnAH/EWpaWls1paWtbBqg+TYgRjx6e7/Dvjho4K5s7oqCCQwWqAFmQRqydpJxgXCNu2gw6Hw3no0CG1efNmCRciBCovLS3VG2ckI/ZU0grVwwnjmYHlKBYiYB0A61EIwYMHD15lWdbcHs5exNsbgQwTAgwCf/SjH2lrmWR9YFEKThDIbr/9drwfekwg27Fjx/KNGzdehD4bfTesvvlJDQHEZoIoBjc6xO1EzJhRo0btz87OHpOaHHR9Fwhkr7zyym0/+9nP9HgOFrVcMEhtzWDBEeNZWAOhjVx99dVq0qRJ2P32dsuyFnUnN0Ygg2gDgez//u//tPtfKjZfQF8BF3N4deD9h/KMGzcOsVl3O53OSd0pT7pcEwgE/t2yrO8iNAP6EbijYVyBd2oq2KKtQEiFQIZwB+iPYxXIGhsby00gdiOapgtf5iN6AnjO0L/EK5AppSZu3Lhxw+OPP56NNo13BuNQRl8PyToTzzo+sCCDSzUFsmSRjjPdYDD4uNPpfGTt2rXq6aefluvWrdO74US7XXS4yBMu2sQj1GBlFhM0rMped911q0ePHr0gFduph8cfaG5uVphk4aXyhz/8QbvwwcQ6UrmiFWiiPa999XZ1XbzWbOH3ysnJ0VuXYwIIlRtiWXNz8+Tc3NxdcTa5hFy+d+/eWbZtr3vjjTcEYqzAisx8usu2s4yBxec//3ktkCE2hMPhoAVZQmoxtkTM86mUutnn8z139OjRTAxmX375Ze0GAYGEu7TFxtScjQ7b7MCGOCiwdJg9e/Zej8fzomVZz0gp0zayqxHI8I6GWP6Tn/wkqQIZxERYDWGCeMcdd/SoQLZly5bln3zyyUUQx7ApRbwLW91rPf3zKiyewMIYY5V58+bpY+7cufUDBw78H4fD8a6UcnVPkqmvr1+4ePHi22CBgBidsDiiQJbaGsFYBNYCsEKH1RV2gsQCREZGxuX5+fnvdic3RiDDeNQIZBBDUrU5B6zIUB4sEmB8CAu5kpIS7IT8tBDiZSnl9u6UqyeuCVtw+z+Hw/Hl+vp6tXLlSonYtlu3bhU1NTUpCTNj3iUQxr761a9qSzK4s8Yag6y2tlZbkCHvcLuNNF/pCea8Z2QCGI9hYf6BBx4QP/zhD7tlQRYIBC60LOuPmzZtyvnv//5vPZdtampiHMrI+JN+Bqxx0Tfcfffd2oIMLpawIHO5XHSxTDr9GG4AS6k9e/ao1atXS7xY4aOMjjc8mGtX1mAdCWSd3T5a4QIrVFBUsWPOtGnT/nnGjBn/GUOR4jrVtu0fOhyOGbt27bocq0dYmceB1ddI7gmxWs1F4+IXV2HiuBiDOgz+sVX59ddfrwd2QojJw4YNSwuB7ODBg7AoXAf3V7jWLV++/FRpOxsUxFo/JkGs5EAcg1AI8cDtdlMgi6NtxXNpMBi8OxQK/fb48eMuWA0iNgjcn/HegqjPGDvdp4tBGTahgLXDFVdcoSdAsI7x+XxXejyeP3U/5eReaQQyLOxAIPvpT3/abwSyzZs3L1+zZo0WyLAxBQWy5La1jlKHhRBiU2JXU1hbo4/wer3/mJOT8+PU5+Yvd4RAtmjRottgUYnxC8Z1FMh6pkYwloLVFVznICqdddZZW7OyslpOCKlzYs2Rbdtfdzgc/wNLaVgL/fKXv0xqkP6O8oe+AsIY2joEPywYwJrS7/ffk5GR8XysZerJ84PB4OtOp/O6I0eOqB07dkjEHcOGXGbjg0jj/kTkHTyxEIv+9u///u+1pwJ4xhLfDTHIWltbyxEiB4YO2L2bz3siaie1aWCegraAsRgsjL797W93KwaZbdtYqPk6xsn/+7//KzBXQoggbtSS2vrs6G4IbYKFBhODDItstm3/wrKsryUzd932001mptIt7faWUphgQmB45ZVXdCyD8A4hGgEsGuErGjHICBgwLYapMSzIzjzzzMcmT578/VQxDAaDf3Q6nVeboMd4uWDiFY1ZancEmGi4JLrs0dQX7onzEGMFgyAEi3Q4HKPnzJlTng47dVVWVs46UU/rEHvn+eef1/HhzKcrgQznxLqqhlgAsBTBlryIyZadnU2BLNGNMsr0fD7fD5xO5z9jC3MEJUenD/cSBGiPtV6jvGW/Og0r2dgkBTv0wSLm1ltvhXv1BYWFhSvTFUR/Fsg2bdr0VwIZNpDhJ7UETL9vYtJBKMvLy/vK0KFDH09tTv76bhDIFi5ceEogg/UAJ8w9UyN4r2JzByz+/sM//IMWUmGFFYsAEp7zQCCwyLKsW7GoDYEMMRdRv6kQc0w+MMHDgbEhdvmGABgMBm/KyMh4tWcod++ugUCgtaWlJROLbCaOKX4Hz1SNKTBhRhgT9LuPPvooxEeVnZ2N5hH1nHbDhg2jfD5fOcZFEPkQEobPe/faRE9ehXcFrNTHjx8vbrnlFvHII4/E5Gpr8m7b9k8cDsejFMh6sjb/9t7GfRYeG2YXy1GjRq2WUsa8WBJryaJ+mcSacF8737bt7Q6H4wyY4kIYwwsV24DDRal9pxBJ+In0f8MuWmEGaiqECAwiJk2a9NjEiRNTIpAppf79ROix78JV680339SulcaiLpqYRtGWr31bikaETHT7i6bOcA5Wx7Gr5Y033qjuvvtuiVWNWDrtROfbpHfs2LFZLpdrHeJOYdceCCXRCGTdGfBAIENHBbEAmxfk5eVRIEtWxUZIt6qq6vvV1dXfgTsZrIVgQQbLsWgE7B7Kcq+7LVaz4d6BwP14B8OSDFZl6fDcdwSTAtlfLMgokPXc4zZx4kRtAQLrS+x4LIS4/MSgt1tudIkoBQWyRFBMTBoYS8GtBuMpbDwFd0uErcjIyOjWnMW27accDse9r732mhvjVOxaCJe6VO7abAJNQ9RBHzF37ly9mIrxkhDCIaVUiaGX3FSOHj3avHv37mxYXSEOMzYoS/UO2BBLzQ6hDz30kBZHYu1v9+7dOyoQCJTD+g3zF4SdSKVgmtxa6j+p47lC/WMDDHjuYCOgWFxtKZCld1tBX4AwUmZ8DcOLIUOGvCOlvCrZOe9WZ5PsTKVj+m1tbRtbWlpmwI3wV7/6lQ5ImS7mlwh2C+uFa665Bi+Kx8aNG5cqgexfTgiE34N1CuJaLVq0SFvUxfLprkgWLiJ2R8QJz2O8eQjPC1Yz0HkjwCz84dGJFxcXNzscjtxYuCT63IaGhlkZGRnr4FqEOByor3g/nQmVGPCh/HD5hStBYWEhBbJ4Ycd4/ckdps7YvXv3V9evX/8AYs9t3rxZuxFEI/bGeLt+fTp4wjJg4MCB2r0a8ciwY1lBQcFZLpfLL6XcmU6AKJBRIEuH9ggLkJEjR+q+4v7771clJSWyvr6+oKCgoL4n8keBrCeod31PWJFhd3a8UzH5LS4ujnnOEm7Bv2LFisA777xjIQYrRLJoYwcnkgxcATEuxPgIBxZTAoHAOdgJWUq5LZH3SmRaXq8XglLWkSNHNi9btswDIwGzCzbuE+84PJa8YsIMrxlYn9544431I0aMmCClrIkljYqKilFut7sci8YvvviigHcF3OloRRYLxZ491wjpcMXG4iQMRXDEKpaiFLQg69m67OzuEECxmIaFNOgcF154YW1BQcHAVHhmxdzZpCfC5OeqsrJy/f79+8+GJQaEIFiP4UWaDi9T+N8jrsGCBQvQ2T42ZsyYVAlk/7h///7/xAoMXE4x6IDrVqyfeCbsiRS34ungw/MBgQirg3hhY4V85syZ5XC3TMUD3Rl7CGRZWVnrPvzwQ/HEE08I7GYZT3lxn46s2ZEmyg+hABMfuNEUFRVRIIv1oYjz/OPHjw/ARHPTpk3i2WefVe+++67E7lKweOUn8QTMNuOIBYmVzAULFqh58+Zh97Uyy7JOT/wdu58iBTIKZN1vPYm7EqIy3CZgHXTvvfdqdymXy+VAH9IT1jQUyBJXt4lKCa50CMCOtgHXROxoeVKMwRw4Zour0tLSwJYtWyyEBEGYiaNHj6Z8B2e45GNDJ1jXQ/ibSoVHAQAAIABJREFUOXOmmjZtGna2POZ0Ogf15Dixq3qrr69/wrKsh7HYhgPW6JWVlSkJym/yZeYKCGWC8SXE09zc3LsnTpz4Qqxtrq6ubnR+fv5+eAU9++yz2ooMFsXYnIOf3kHAbIABoRTxqfCuKCoqetKyrIdiLQEFsliJJf98jKtRx7C0hVs6rIjHjh1bl5OTU5j8uwtBgSwC5UAgMNeyrK+WlZVdtnz58gLEH0NwX7gVhr+0T3bacddZZzG2uhKCEMsA6ioGmiUlJY+NHj066QKZUmp4KBT6eM2aNadhB5uNGzfquA6tra1RM+iOMNaeQ2chB+IVf8ILEY0IF36O2akLO+ygA1+wYEGbZVlfl1I+2VODHwhkubm567Dq9/jjj4slS5boIp6cjJz6PerKCxPIwtPA9RgAQhyESAbhdvDgwRTIYgEbx7mmffl8vj/t3bv3cojWqGu8s+BWma4uBOb5af8z/DnG74l8ruPA3OGlcLXExAcWvdikAgsW2dnZm3Jzc2cm+l7xpEeBjAJZPO0nUdfiWUdfCfEDLvlYVJowYcIbLpfrup7oJymQJapmE5cO3CxhLYSxFFzp5s+f/wcpZaXT6Xy0O3c5fvx4oLKy0oIF/eLFi3VgeQgiqexXTLtH7GDs8o2xO6zjsrKyvJmZmd+UUj7RnbIl6xqlVEYwGFx4+PDhSVu3bh2PRVZYXSGcSqr7ZPSxmDDDSujBBx8UV111FcY0D+fn5/861vJXVVVlDxw48LqDBw/e+dFHH12zdOlSHYds3759ulzpOlaKtZx98Xw8QzgQe6ykpETPfe+66y41duxYHYeuO/0HBbL0aSmmfmFsATd7uKQ//PDD2to2Ly+vzu12UyBLh+rCLjMul+tZuFYidgEEhvLy8g5XGboj+LQvY3fia6GTxWQMnezIkSMfGzVqVFIFMqVUYTAYPBwKhTIRgwA7fiAOwfHjx7vcFS8Sn0j/76w9GGboPGGOaSz7orXwi0YAw727yl94vSEPMKM//fTTdbB6BBbESqjT6XxQSvmbnmjXLS0t2oIMggkEspdffllzSsTAMJwffodAhvYIkQwrpMXFxRTIUlDpYVuw7zwxoJ1k3AYQdBSDvkTVdzKKgnaD58Y8w+HPE/KNwSqOaGIbJiN/0aRpzP0xYIMwjvfx2LFj148ZM2Z2NNen6hwKZBTIUtXWIt0HzzwEZbjiYzEFYSKklBsdDsfZka5N9P8pkCWaaPzpmU1Q4CXx5S9/WccX+n/svQecFdX5/z/n1u2NbcAKKx1ERFSCBbGiESsidkUsMRbUJGr+ydd8U/wmMbFGjTEq9oKKXWOXKGhA1CiKNAFB2JWF7e3W8+c94fi73uzunXvvzNxlmXm99kXZmTNznnNmznM+z+f5PG63e7XP5xuRSutUoady83PPPSdffPFFAcN6+fLlpvhByTwP/YI9SYox8x6ghyqXFRUVT/p8vlOTacvKc/EpgsFgfVtbWxFMK/x99kL4+1u3brXy1l22TQAKv5pUK6qbwhgKBAJXZGVl/SXVh9m6desfv/3222tJF0WCBC0yNNUykX6bah92tesIrACewCgisHLQQQfJqVOnQviZoWnaM6mwSx2ArPfMIvwCxpggghrf4447TpByH41GI26322PH0zoMsgRW3rp161k+n+9hRM3RbuIjSp56Vxu1VAGe2EcwCtbEXkMuPmAEkaiqqqrrqqqqrAbIyjRN2wIdGao1ZdERPMXx6AlwMQIwGQFscC7UZpqXiE01P0Qb+WFDzbOoceLv/KhNdnegZKJ7JxqbWPZLbm6uDpJBC+UHsX4p5bVutzsjpewVQAaTCICM6KlRADHRhyh+XFm4cPjY7DAn+/fv7wBkiYxo0u+j0ehnnZ2dewJW33TTTXpBEdJIkmF2mvQo3zXD+8oc4U/17vL+qn+r/+Pd3QEk6+83h4rk8u7CgENUmb/z/wrwU+81f6qU90Tvstl9jG0PJ57UalJoAMlg+GqadpYQIuk0ECue0wHI7AHI4tmQVoxlsm3azfhI9Hy8+7ECvKTRZWdnN3q93uJE15r9ezsBst44N2LtGc/cNdvWybbHRumyyy7TmYYFBQUrCgoKRifbxo71RNTU1OwWDAa/hkUGIEJWSOy6kkq7qV5DMBH9JBgSgMQAPnl5eewvDvR6ve+n2q6Z1wEqAorxAxsdlhX6y/jUdh3Kh6AAFoAiANnEiRO/HDJkyJh0n2G7rtqfPB7P1RAfkIuhmBFarexvlCaZ8jUy6Veoftop64PdM32ob2Ws7wi4jObr1KlT9UwV9sDRaPTi3NzcpJmEqn+ZAMh6+zpg19grxpgaY/aQBQUFulwJBBPe+UAgMKmwsHBxKuzAVPvhAGQ9WE5KSZWEV55++mm5YMECwUK6evXq7zExzP5gxjInunNY4h+ZjwOMBcCIgQMHWg6QtbS0lOXk5Gwh0sJiQlVEFpNkKcnxfU0ErqkNMx9HwCfolkTdoGDyMuFssLEGvGQzjd4SUS4WPqj0FBAALEh1zBIBZGpcFJOE56SSIxW60EzIzc291u/3ZxQgY8wocw5ApgCFVO0R29/YNhgHADIF2joAWaqf5+Sv6+zsXLZ69eqxOLEwyNBMJBKaKeYV7yMpEUR+AI5wanhfeX8R6WYzwHzhHMAxBZrFM8iYXx0dHfp7zZ/8kBrDO15bW6v/8K7zbzY7meovI0ZfAMR559nwH3744bK4uJhI/Fi/3/9F8qNq7hUOQGYPQKaioKp6nbmjmHxrionJxra3sEl5z/kG8L6ceOKJehodaTO5ubmfulwuHVm267ALIIvd6BEU6G0H31q+nyrwYOeGvDtbwLSCjY9Psfvuu6+oqqpKCSCj/fr6+kHFxcVfL126VNfOxYdFHgTZFLv7SmBXifYTUAQoIyMkGAxOysnJWZzJuRGJROpcLlfpqlWr5Pz58wXZM7DttmzZooNjdtqKgHN1dbUOhOBb8mdZWdmqwsLCkenaiMB1JBK5pL29fRD7BPZ4/MC6X7dunYZ2Kz4UoCDvRSa/ndzbLjCX75QKWKZr41SuV6AJ6yfPwTqB/1hVVaXPBfZ/I0eO1Ksb4l+63e7T/H7/vFTuxTV2AmTKv6VvrAF8B3a1Q42v2i/zjlPgjoAZRUwIiiDOjx9dXFwc8Xq9E/x+v61FTByArJtZGQ6HT3O73Y+zONx7772ChZRFFBH6ZIAdmo9n2BhhUsU/lgIgugJpMgGQRaPRLUTg3nzzTV3cMllx/mRsqM6FLcaHEmeJtAz6Df1y0KBBcsCAAQhiw9Ag5DFRCDEUh2fTpk16QQUq+EERX7Vqlc6mSaW8t1GATI0dz8piToQDNkl5efm1eXl5GQXIYEAqgCx+sU/Uv+5+Hz+fFUCGwweDxgHIrF/6pJS7a5q2Z2Nj4x3vvvvublRkotLuF198YTtYxHxQjE4cFxY9NgEsfIMGDdI1I1j8+DcgGeC2z+drd7vdz2ia5uvKWi6XK6Bp2tltbW2ypaVFAI4BdgOMEe3l24xzqwoR4NDyjitWa7ogcCojiCP34x//WA9esMgHg8HRfr9/RSptmXmNA5DZA5DxHQQMxrHnfWDDkYl5yNxRTEzeB8Bl/uT7r9jV6u+ZeD6+FzjHAGSwhPg+lJaWLvR6vZPNnPeJ2rILIGNDhC/Dd5HvH5ukTNi9O3uwCYc5w/dT/TA/1BzhT7uft6KiQg8AI9kwYcKEFXvssUfKAJmUsp+mafe3tbUN/+STT0Yh1o/0BIBZJnQ6mf8EVfCXYMTAligpKbluu/g8BV6eSDRvzf69lHJEJBIZGQgE7q2rqyvHh8BnJNiGfexmjvHtBDTHh4Zlh97UwIEDAUI2CyF+kk7/Y9koUsr7otFoXiAQKN2yZcth9Jt9A3sGgm/4HLHglN3vAP1k7wIZgT8Vkz6d/vd0LfuXgQMH6uuX3Ucso4jvJc/AtxL/EVIEwMno0aP1wGM0Gn3c5XK9KYSYm85z2g2QqfRxfATWAjsB53TsZMa1seCYAkCxAYEyQE/29xS8Ki8vjwoh5gshbhdCvGfGvZNpwwHIurEWtOJNmzbJZcuWib/97W96aqX6QHZn4J6AL6OD0hNI0V37CJgqMMIOBtndd9/tPfHEE4Nz587VNdlI22tpaem2i7HPHQuMdbfAdAUo0jgbTqJrpCxBRSf/HMdpR1rl1W63+8Ydm4FR0Wj0XZfLVYajB8i5ceNGwWKHEwS7hghRMsCl0fGLBURxghETpZIjkc8hQ4ZcW1BQkFGADAbZHXfc8V2KpRUpN2wMcWLoMw6fA5AlM3tSOzcYDP7Y6/X+FYBo3rx5eqVdmJM4U3YvvMqhBQDbc889dc0QQGwqkOHoAJrBroRGHXMcJYR4vafeh8PhC91u99/VObzbOIp8l9EMWbNmjaypqRFEfQHNcGyxgQKCU7Ns6lfBmGNDx/uPXorP5xuQm5tbYydFvKundwAyewAypS+EswcIzIYjE5uqHWuivrFlgwsTgvWaHwBmmNUEkvhJlgWe+tvx/StZM1grkCOAETB48OCFWVlZfQ4gw+fgu8dmj8pcVF9jXvSWQwGpfFfVt5V0fdYRKhaqNcXuedyvXz893QaAZMqUKSv23XfflAEyZeuOjo7fNjU1XYc/iLYWQSXWT9YTu9dMNokwYgiknHzyyfKYY44RrB8Iju94f1Oq2pnKvJJSXrO91tINfBsADvkhe4b1NFbGIJW2k70G4BAfn28C2Rg/+MEP5B577KELsZtpl9g1ua2tbZ+cnJylBNkUK53v5g4/Q0YiEUTgM/It5/1D7oeAYHNzsw5kW3Ww36IyJICF3amWsewxn88nKysrBd9JlYnAu7Fj33ep2+3+qxlzwU6ADHuyPwTwg0TBHj6TWQ9WzaGe2mWMFYNOZV2wNrI3YH0kaIamHABZJp5P38tn6sa9/b6tra0SQAVAgVQlFtFEE9hKgKwn4AywSIn0o0FmlUi/WkRCodCXX3zxxagHH3xQB8ewTU8aR/HPboRBF+uAqRQtgDEYSWg2DB8+fG1ubu40j8dT6PV6PV6vd1HsnCIKFgqFiiORSFZWVtaCbdu2yRUrVggAMnQniIYRDVIaAwrYUpuJdOan6h9AAQABH7+zzjoL5+fakpKSjAJksIoAyJRIvxn9jbeVEumHOcOmp6KiwtEgS2dCGbi2o6PjfJfLdS9syYcfflh79NFHv0tFtGMzw4KvIn3Q4NEKARhj7uPcEvFraWk5QEoZ5b1Q4NgOplkYYW4D3WSTTxsRzo1lwEgphxUVFT2C48gPFbYQYCYKnKnUS94DnEs2wueffz5Rsc/8fn/A4/FkVLTfAcjsAciY94w7ejlEiXH47HgXu3qP2PAr6QHWajZXpCMDjikGJkEjmOCxacp2PS+bBdjgsMh4X/bcc8+FOTk5fRIgYwNApPykk07SK/EBntpl50TfWJWGC8uQeaJkKpgnBB74rjJfmCcACLH+U6K20/k97AKE+ql4evTRR6+YPHly2gBZOBy+w+12Xwr4B4uMyoz4/KTW4RvaDZIpMAggiE0za0dlZeW/hBCfeTyeH6Vjv2SubW1tvVLTtFtYP8kOwV8GmLFTlF/tGfAlYJLsv//+2vTp0+X48ePJFJnh8Xgs2zRLKfPC4fC49vb2iGLaBoPBSG5u7g/z8/N/S2AhUwAZ/t3tt9+uz1PmLcCdVQdMrd///vc6MJ1BgEwWFhaKTZs2HS6lbMPHxK/a8adbCGGaTp+dAJliTbE/pPgIeyUrwU6r5kg67fKO79g3yLy8PALbo3JycopU9gnj7PP5Mppm7gBk3Yzwt99+K2FhoE/Ax4jomZ1OTKJ0t9jHhkkFcMSiOmjQoOuqq6stE+lHlyASiZQi2Hnvvfdqixcv1hfPVD/U8amW8YANv2eRpI98qIm4EmXLyspanZWVZaiSUSgUOsTj8bzDwrZy5Up9TIkW4ggRJTM7aq4AMj6CpIvg6PAR3HfffX9SWVl5SzoflVSvbWpq2i8/P38JjD/o8gBk8YfR+d3VmKm2aIMPG+wxPvowaMrLyx2ALNWBM3hdY2Pj+W1tbfcS7WVsEZtVWjIGm0jrNKJ7RPUAsUl9JoUSkAwWGRHgHYAYDk00rRt1c3EwGNzL6/X+GyeDzT9sGFKseccB8QHK2OQRBbbrwImD+cD3ivcfNumOyGdG110HILMHIMP5veSSS3QGISnGACGZPljrVFolIAAgB+xLxSJjU/zRRx/p7w8gSKKgoFn9wSlmI7wDAGGtX1hQUNBnATLYGTNnztRTsPFvetuh5gnfU8AyWIf4wHxTAVIJtKlKhnYUgIE5MmLECAWUrDjssMPSBsiweSgU+tDj8ewL8LBs2TK96BRrKKy5VH3aVMeSzSIgOmsogBDBRf50u93vZmVlTUm13WSvW79+/WV1dXW3AxjCHOObwBjbaY/YKnaA5viR+P8Uu/F4PBkpdiOlPFPTtEeStaeZ5y9evFjedNNNgsrkAGS8m1YdMJ9vueUWecQRRyjCnlW36rHdcDh8pNfrfdPqm9sJkLHe4TOz5v3kJz8B/LW6e729/V65R8yoo94bRywUCr3i8Xh++O9//1sjtfKFF17QN1V8iIwCCGb0KxmAjMgawBEsst133/26IUOGWAaQhcPh9s7OzmwcJKoh4kwTWUoV/e4JIFNaRmy0+YAQiUefwePxpEyvbmlp+XLhwoWjWPj5wSlKVH0z2fFUABkODxtknGE2yLAJNE07SQjxXLJtpns+AFlOTs4StPSY188+++x/NWlkfvcEjqkG+fCju4Zjw3iVlpb2yo9fujbtTdfX1tZeuWnTpltUqgjvpx2HYo4BggGKAQYw5ohs8n/bNev/IIT4hR3PEnsPKWVNZ2dnJZu6f/zjHzpIxiZIgfl26Kgo25A6w0YY2wCY5+fnZ3TddQAyewAynF80tVib+/Xr92FBQUFGmYPdvYNSyos1TbuLYBEBFHRFYYXDxCSoZMfGWKWYsSkjHfmYY45ZWFhY2CcBMthQ+AQU77n88ssBTjP6PTD6bY5EIm1NTU05VCxHf1ZpXLJRt5pRA3DEt5PsgdNOO23F0UcfnTZAFptWF41GJRqWFC9iDWXu8z7YLcjOxpn5QVAVhiG6a/i/fr//HrfbfZHRsUrlPClltaZp61gjqX6Nr4huL+Nt56HSkGFZEmwjzY+9TSAQ+L/s7Oz/sfNZetO9pJT7rVu3bsm1116r2QGQEeB55JFH8OMqKisrt/QmW1jxLJkAyADDr7zyytYZM2bkW9Enp830LLBTLMzpdTG5q7dt2/Z0TU3NyTCk0PLBYVTpCbSUioaW0SdIBBZ1B2DAUECbAR2yYcOGXTds2DDLALJAINDe2tqavWDBAu22227TN53pVMmLt2csMEjaBVF32GNUt5o4caLcbbfdvtMfMGrX2PMCgcD62trawaQJ3HXXXTqtXlWnUeNrBCjq6d6xABmaS6TXXHnllTh2srS0lHeunxCiPpXnT/WarVu36gAZdHmYfwC/HPQ1GTDWyP1hCwGOAWpSlamkpMQByIwYLoVzcPI1Tfuxpml3PvHEE/KFF14QRHxhSlp9KEeWlCFVep13taysbFFRUVEoPz9/uRDiUrs1t9T9gsHgYr5V27Zt25PvFMyAJUuWfCe6a4d9sJFKpwIgY4NXVVWFholtmjLx/XQAMvsBstLS0o/y8/P3tXrOpdK+lHJ6KBT6WUdHR+u2bduOhCUE+IEMAd8RNszpromJngswGUAdUWjSDk855ZSF/fr167MAGf0EIJszZ85OA5CFw+FXgsFgVkNDQ/GmTZvG8z0FSGG9IUBqNhM/ds7ASuc7ukOuYsVxxx2XNkAW5xcuamlpyVqzZs0E5j5+IUEVVegl0fw16/esF/i9sArZPE+aNInMELnPPvsgRn6Dy+W6TggRMut+cSL1yMrIpUuXCrIsAGFg0uEf23nAvAZAJiMG/3HcuHHhIUOGLJRSPr5dx/M7DVI7n6k33CsUCh28YcOGf/785z+3DSBDrqOiomL3/v37r+8NNrDyGRyAzErr7pxtOwDZjnGTUlZFo9FzNm3adObixYvHwC4iggKNXB3xAFZ3lSVTARy6Y+b0VL1SPRf6Puh3kNI2atSo60aMGGEZQNbR0dHe0NCQDdByyy236KlL6ZR8jrVVPFgGrR4RQ1KTLrnkErnXXnvhJNzndrsvSPV1k1ICJvx169at8oYbbhAwqYgU4gR0NW496aV19wzqGv5EV4K0Kmi0Z5xxhp5y1tTUVFJUVNSQah9SuQ6AzOPxLMHxe+CBB3ShTyNzi3slawMAshkzZiA2q7P+CgsLHYAslUEzcI2UkqqPgW+++UY+9dRT4oknntCrOVKK3cpDiYwiRE6EG8YgTBlYZJqmZQkhqDrJHMsYELTj/kdqmvY6FS/Z8LP5UelBMGPsSCEDQGSjg7NPEGOPPfaYLYS4P1O2cQAyByDr7ttAcSJ+995778k333xTECBEh9VqcW7WGIJh/FxxxRXaueeeu7CsrMwByKz8iCfRduy3KhgM7uv1ej/kO3rffffpfjJZBFYCKbDSAY3Q2z3vvPNWnHjiiaYBZKpvLS0tY/Py8pYhGwJDDv0tGMikINt9AJJRuRHf/uyzz4Z9LAmsNDc39yssLDQ1uBoOh8+CbQ1AQOAUBinvPEFkq4HxWLviU8CgI6BMVgy6vQT+i4qK6nNzc6k8mnF/wu55EHs/ByCz1voOQGatfXfG1h2AbMeodXR0HJyVlfXP5cuXa4899pielgO1uCthynggJRVALNFkSeYebEphJrBJ3XPPPa8bM2aMZQBZW1tbe11dXTZAy8033/wdgKiYSMksqN2BYzsWwu8ihocccoi88MILqYB3sxDip4ls14Pzr2/WpZQ/jEQir9x99906UAS7BA2WZJ69p2eIBZSIhkGZv+qqq3SAjDSBTABkNTU1+7lcriWI0UKbRoOtO8A3kX27AxLVuAGQnX766XqqDLoRubm5DkCWyKgp/l4BZEqcn2+X1fopjD8bFuY1oBgVS8eMGaNXqWS+a5rWXwhRm2KXTL1MSlmuadrYtra2+5uamgbxfecdgB2A4DQi1FYf2ApgnDL1pFkTzIhGo9e43e4/W33vrtp3ADIHIOtu3oXD4WnRaLQyHA7fCzMIwB0WARpEVqYlq28KAaWrr75au/DCC98pLy8/zE4QubGxcd68efNm3nDDDTooQnqp2ULt9JPv5s7IIFNzJhQKTfV4PK8RiAFQASCDbYRunVUHgBGVzWAoX3DBBStOPvlk0wCymH5N9ng87zL2ZJCwRrBW8B7YfQAW8S4AkrHGEmgkwDJw4MDFLpdrkpnvRSgUWhgMBg+EDPDQQw/pex+CxkqM3o6+814AjgGQA4qhRTh58mQ5YcIEguLosO3ye1UHILN2JjoAmbX23Rlb3+U/OmrQtmzZcpDX630P5hiplTCkSB2EYt3VEQuCZBogA3TBcUCzYO+9975u3LhxlgFkLS0t7bW1tdkALLfeeqsu2KqOZO0Qz0yKZ5DRL4RKoVqPGjXqzjFjxlxm1ksGSkYRBoA+IqGkkpgNkNEftFVgwgGQoaWAHlEmALINGzbsJ6Vcgr4GOhs4tWYCZIyLag+9EKJ/gGRUJPP7/Q5AZtbEjWvniy++8A0aNChAugub2fnz5+ubWbPmclePjSPLBo8qR7ybsKL4t8vlusnr9f5R07R6q8T4UzUjG4pIJBKqqalxf/DBB/o7T6RcaZJZmR6kBFkBi9Gk4psmhHje7/efmGp/0rnOAcgcgKyn+SOlHLpdDHsNhYpgpd5///16AAkWptXfFYABUohIPezXr9/VQogb05nryVzrAGTGrCWl9G/XlvRv2LBh/pdffnkEvjJsKwIOVh0AZDBx8XMvuuiiFTNmzDAdINsRbMpub29/ZMuWLceiT0uGAf1TqYZWzv+ubEewkWq4pJaSIcKfOTk5G3Nycgala+tQKHSUy+Wa19LSko0fAchJkQLYY3ZX8SSwBhiIz0+BJwAy+hoIBEa53e7m3NzcmnT7u7Nf7wBk1o6gA5BZa9+dsXUHIPsPbde7Zs2aAxsaGt6BWs3GicqVRtMKkgWGepooqbTF5hQqNmltkyZN+s12J+LXVk3G5ubm9s2bN+sAGRpkiJmaecT2n9QtnAIWzIEDB/5h5MiRpol9A5ABFgEUAZIhSqycn0ROUDJjBEAGYESKJQAZbL9MAGRfffXVfsFgcAkRX5wgoqM99bO7tMp4EDN+7Pk9umvnnXee3l9EVl0ulwOQmfmSxLSFY5ubmxuACckmBYDfSlFtxhc9GMAegDHGFzHyHVUqr3O73ZaB82aYMBKJyHXr1mkUYYFJyZ9WV4PCZmz8cfgvvvhiHVTMycl5Nj8/PyOlixyAzAHIEr1LUsqTotHoM7BJ+LbAqEGw2yogmXeEH9giAGSkWVL5U9O0k4UQzyR6XjN+7wBkyVmxrq7uxW+//fZY9GhhGZKamKwcg9E7AqAAkKHL9aMf/WjFKaecYjpApp4lHA4/1tnZObOurs7NeqrSjFk3rJr/3dmB4Ar+FL4wAXCAo+0yKpGKigqPlBK/KmzUhvHnhcPhk91u99P48FS9JrhGwMiKyu6JnhEfmfWRqp3omY4bNy5SVlbm1jStYHvWSEui63eF3zsAmbWj7ABk1tp3Z2x9lwfIOjs7h/j9/q9gi82dO1e+/vrrgnQlhGqNHskAJkbaTNbJIGefqnHHHXecvOaaa4TP57scnS0rWByNjY06QAao9Je//MVSgGz48OG6jhUb8YqKij8MHz7cVICMPuDcsQnA+bcCIFOluxVARp8yAZB9/vnn+3V0dCxBVJd+U32UoyuQrKf5lwggAxCEJo/QMiwytCQ0TXMAMiMvfgrnAJB1dHQEYI+hsQWwb2UqFEAYYtpUlTr33HN1RmRxcfGbLpefO+qMAAAgAElEQVQLra9erxESjUZXCyGGkWr59NNP68L9gGRdpdKnMBw9XkJVqFmzZukAWWlp6bPl5eUOQGa2kRO09/HHH7/zwQcOQGbE7M3NzX/cuHHjtbwjKnBoh2bfT3/6U51Bhv5oJBKZ7vF4/rvkspEOJHmOA5AlZ7DW1tYXW1tbj2V+UBkbIAl/wgoQCYAMvwKA7OKLL7YMIIuvbMl6SoolQUV8JphkVLS3+yC9lBR99YMWWzAYfMbv95+cyrMgM6Jp2isrV66Un332mcAvBCTj/bbSf4h/VvxjAECC/DCr8SvIOsjLy7vE7XbflUrf+uo1DkBm7cg6AJm19t0ZW9/lATKYRFu2bKHEs5g7d66uzYTAdTKCo6kCZEaAiERsJiYdjgPRVthWF154oRwxYgTjWiGEMF2pG4CspqZGZ5DFA2Sp2iH2xYltAzAJVhwAWXl5ueUAmdl6I/QrFiADMMoUg2zJkiX7NTU1LXn88cc1Usxii0/EzrF05yS6Gf369fsOIGMMHYDM/KUh1pF/9dVXJRsUVZLdig2K6gEpEAA9VCidMmXKcxUVFU15eXmzzNREMd9a/2lRPWM4HF4QiUSmvP/++/KNN94QpBzHpopbdX8F+B999NFadXX1s9XV1Q5AZpWxu2nXAciMG7y9vf22xsbGOaSaUdgFQNmOzTPssUsuuUQbMWIEIMB0v9/vAGTGh822MwOBwIuhUOhYUvJuv/12PRWRapZWgKh2MsiUAcPhMAWhZi9fvly+8sorggAUwZRkgudmDYbyqyZMmKCvvVREzs/Pn9uvX7/zjd4jvmJlTU2NfO211wSZFLzjSpTfCj+4u2dEn3PkyJF68QUCR/vtt99dxcXF+Tk5OQ95vd43jPZtVzjPAcisHWUHILPWvjtj67s8QBYIBBo//fTTwqVLl+oOIKkEpCgls0jEA0PJMsC6mzjxGlHqvHjQjJQn6OekIv74xz/WdRo0TSsTQmw1e1KSYglAhnhpfIql2QCZqo5HVGnAgAF/GD16tKkMMpViCdhHNc74MTdjHFWEDAYZABl9ygSDbNGiRfvV1NQsQYRVASndzQ0joGx316K3BsMIMXKKEsACcAAys9/C/7QXiURujkQiJQ8++OC5f//733UHt6mpKalvl9EnUylQVGM88sgjdeDa4/GMHD169KqdARyL7SdaM+3t7aTRnAx7lEpssAPQbrNic6fuTcVPNjZEysePH//sHnvs4QBkRiegSec5AJlxQwaDwds6Ozvn8F2566679JRkfKN01gcjd7/00kv1VOSxY8c6AJkRg2XonFAo9KKU8lh8ZnxBmOmwq6wAUdEgoxo4DLILL7zQEg2yuDVCFXT6jaZpv/rnP/8pFy1aJPAVYZVZ1c9EewEyRRDtZx0ZP378V9XV1W95PJ4it9t9lhAilGgqRCKR/9M0rbK2tnY2oBiSG6+++qpOCiCLxs6DfQvZL6SN0h/SK8eMGbPL70m7GwMHILN2djoAmbX23Rlb3yU/RrEbura2toYnn3yyCDFOdKiIDiW7wMcCQ4lS0JKdJEZAMtLaiDDBtLr88sv1KmktLS1lBQUFpgNkiPR/++23OkB2yy236JtydXQHkKUKNCmRfqrkDRky5A977bVX2gCZGnuYgzBHcOpIEYgX6TdjHGmDsYFCrlIs7RbpV/198sknR7a3t6+45557dLYMDlH8uKl/p7MBohQ7oBipZKeccorSkXFSLJN98Xs4X41pJBKpFUJU/OlPf9KoyEoVMb5d6Yxfd7dVJdgZU8aWqlptbW17FxcX/9vErtnWVCQSucrlct3M5u7BBx/URfvRX6Fyl1UH7wZ6bWwGDjvssGf3339/ByCzytjdtOsAZMYNHgqFbotEInPwie688079PeH9gKFqxTdGPRlBvosuukh/V0KhkMMgMz5ktp4ZDod1gAztMQo24UtZVe0U/5bvJwyq8847b8X06dMt0yCLN2IgELjW5XL9kbUCnxGNYtZaglF2H/iS/fv317U/eUcIWMHCAs3jWboLVsX4DF+6XK5RBIYA+8gmYN8D8G0l87wrO9EPWKIE2wiCI9Kfl5e3S+5JjcwjByAzYqXUz3EAstRt11ev3GU/RoFA4M/hcPhnVGeCVUNFQ0CDZEt7dwWkpAoIdTXJjABknIOY51FHHaUvmkSY6urqSgYPHtxg9sRta2tr37p1q55ieeONN+rAkuqv2QAZaaM4AqQkjR8//g8HHXRQ2gAZ9giHw8GWlhYv444AMQ7C5s2bv+f0mwGQcS8in6TAoquCaD0sErsZZICB9fX1kdtuu82Ng4dz19zc3C1AtsPRSmnqoCVBGunZZ5+tnXjiiXq6pcMgS8mUPV4kpXy+o6Pj+MbGRj29BRaUlVXmENEtKirSWYGzZ8/Wi4KEQqG9fT7fTgmQSSldaDR+9tlna956662haBGyWYgFjs0eNdiVgMeHHnoo6fDPTp061QHIzDZygvYcgMy4wQHIhBBzWBsByEiz5HtDGp0dABlsISfF0vh42X0mDDJSLAGOkNsAOAJosYKFC9towIABeire2WefveK4446zDSALh8Onu93ux9grkGbJDwGVVatWGS7kZdbYEHAFEMPHwr8iGI7kQUlJSdjtdm9xu90Du7tXJBKZ29TUdB79oKAPzDEVLLUTHCNdlvFEa+zAAw/U10OAPnxlBfSZZa++1I4DkFk7mg5AZq19d8bWd1mArK2t7Z6GhoYLVDUzBCphXyQTHY0Hr7pzGlMBzJJNVwQgg9VBGt/EiRMlVGUrFpuOjo72hoaGbJwhALLY1MRkneZYu3TVX4AlKOVUtZk6deodRx111G86OztzsrOzN6T6skUikc2BQKA/YAJRTyjmVLEzm16uUtKIfJIaAEAGuADoZydAJqUs0jStoaamRrvhhhs0xNwbGhq6ZBolms9GQEMYcnvssYcOBqIpUVBQUCmE+DbV8XKu69oC0Wj0pW3btk2D9XTvvffq48rm1aqDeQuj89RTT9VmzpzZPnDgQKpn7S+EWG7VPe1od8OGDau/+OKLYXzPECqmUplVB98CUuFJKTnvvPNenTZt2hmaprULIQJW3bOrdp0qlo5Iv5H5FolEdICMtYMUSyoVUswCllCya72R+6lz0B/70Y9+pBd46ejomE7F12SuT/VcR6Q/Ocu1t7e/GAgEjqUiNgAqFcEBx6wAyAjQVFdX66DKzJkzVxx99NG2AWTKKi0tLe/X19fvj2g/YDGZB2gVWw0Yx46K8ivxKQHJAJhOP/10XccrOzt7i9frrYgfRSmlV9O0/O1+792rVq2awXix3vH8+AxWsc67mk0w0QkUETjFR0QWhiD4tm3bBpSVldXsbHINyb0x6Z3tAGTp2S/R1Q5AlshCu97vdzmATErp1zTtRk3TLnv77bflggULBIsF7AGOZMCsRICCmk7JtBl7DX836ogSWWKhOeGEE/SoEpswKwCyQCDQ3tLSko0zRIolOgY4zOh3GX3WruzSFfiiwKUJEybIq666SlDBJzbKlMpiGggEVmzevHkk0T90mxCWBRyzwqlTzgA6C1deeaUuXO/1er9wuVw/EEK02fG5iUQiUdhiGzZsEDfffLNGKjH9ZazixysRAJbo9/QHcAwNPFhGgwYNmj5s2DBbNjd22LI33SMcDr+0YcOGabAfAceosmVleiAC83xfiFpPmjTpnsGDB1/Um+yR6rM0NDSsrq2tHUZ6EEAj37NkvrvJ3FelwrPJu/7667UDDjiAzcn+Pp/vX8m0k+65DkDmAGRG5hAAmaZpOkBGERAY1wBk6C8lu9YbuZ8657LLLtO1VMeMGeMwyJIxnM3nNjc3v1hfX69XseTbyZ8cyej3Gn1kgqXMBwChY489dsWhhx5qO0AWiUQ+dblc4/AdqeqKD8z6C+vYTpAJm8HCAmgiDRnZg4kTJ6Jv+21xcXFlvE0DgcBYn8+3jEAwex2yJtChpR/JyskYHa+uzmP9gzkG+xzWG0XFCH7TD03TRgohVqXTfl+/1gHIrB1hByCz1r47Y+u7IkA2RNO0rzZt2iSfffZZvYLZV199paedcaQCZsUPfDwbKpk2jYJu8fcEjGHhARhDRPvkk0+2BCALh8Pt7e3t2VDM//rXv+olsGFjmbXQxvafPrGoEilDp4C+sbnMzs7+g8fj2SKEuNXoSyel3F/TtGObm5sv/vDDD0t4fnQYEFxVz26208+zEymrqqrSNcimTZu2oKio6DghhG1qqKFQaOvXX3/d78svv9SdWFJjrSxTvt9+++liq6eddhoA2blVVVUPGR0j5zzjFgAg++KLL6YB7JMugbOeTOVd43f6z5mMK6nOpG+PHj36ofLy8nOTbaM3nh8MBrd0dnaWsXGAUfrhhx/qjAArUk74tvFNI03of/7nf3TdlWg0+ozH4zlTCNFpl30cgMwByIzMNVIsAchIsWStR4MMxkkgELAUIKOKJSAZ676TYmlkpDJzzpYtW1785ptvjmXtefTRR3Vf0KqjpKREX4PIkjjssMNWTJo0yXaATEp5TjgcLg+FQn9evny5tmTJEo2q4IBkBB3N8oGN2FCtJfiWgGOkKU6dOrV96NChN4fD4X96vd43VQA5GAzOa2pqmomvi8/Lnof3GH/BbJ+3u2fneXNycnR/GD+CQNvo0aPJqHjf5/O97HK57hJCmC4JY8SWO8s5DkBm7Ug5AJm19t0ZW9/lALKGhobq7OzsddCMYdMQCSLlTG0uk01tTASO2TUpeG40GmDwEJmhEpQVDDL0rOjTu+++K+fOnSsQaF2/fr3uNHOku+B2xVJCvBNxVqKHCFzTx6ysrFVZWVkjjdqXalw+n+82nDhYY2+//bYGaIQeAxHPRCBmot939RykvZIWAHBJ2sg+++zz04qKipuNPrMZ5wUCga3//ve/+zFOpJBRkh0AwKoDRw0QhTkIiFJRUeEAZBYYOxQKvfTRRx9NYy4D7jC+MDmtOgDdd6Rv8515qLCwsE8AZFJKNlrL33nnHXnnnXcK3g9YMlZudtBWIuX68MMPl/3792cNLhZCWJcfGzcpHIDMAciMfCeoYhkOh+eQxq1SLK0U6Vdr7NVXX63NmTNHVlVViUgkcprH45ln5HnTPcdJsUzOgl999dWLn3766bGsPzBw0bOy6qAyNhq7rEN77733irFjx9oKkMVmK+ADsz589NFH8qWXXhJosCE1AkPLDB84GRsi2g9IRtYIoNMhhxxCcOf6wsLC62ino6OD1JhJixYtku+8845g30NQTTHe0vXXjT4rvjByKTDeGEPkN9DjjUaj97jd7j7BRjdqi1TPcwCyVC1n7DoHIDNmp13prF0GIFML3LJlyyqys7NrAceoxIjgZjw9OlWQLBUQxazJpiI0aAXB3iGFJ1Flm1TujaZVc3Nz6bZt21ajO8GG8rPPPvve5tzootuVvbqyPWmVaFAAkp100km6oOewYcM+Kyoq2qurPnSVetnY2HhhXV3d3wEUoJjzJ+MOWJRovLtiBBpxhHhuHAJYb+hEjB49+tqSkpI/pWL3VK9pb2/fumDBgn4wx/75z3/q0U6zN/+x40iKL44aQGZBQcG5xcXFDkCW6uD1cF0gEHjpgw8+mPbyyy/rgsFEhxFItuogjWPOnDna2LFjiQQ/5Pf7+wRAtuM9Llq5cmUDQtOkCVGZ10qWJalCaCzxjmDPxsbG4uLiYgcgs2ryxrTriPQbNzIAWXt7+xzeB1IsYQnxjTG6vhu/03/OhF1JsOoXv/iF/pObm3uPEMK2zbMDkCU3Yp988slzb7zxxgmIvccCRMm1YuxswBR8KAJv1dXVK6qqqmwFyGKfEh84Eokc6na7nyEwBYNOMcm6kq4w1sPUzlK+KbIWMJIBngYMGPDL6urq39NiIBCQBLDR2kVDUFVqtiINtqceIJcCeDd9+nRdqgF9Qa/XKzZv3pwzYMAA6yJ7qZm1V17lAGTWDosDkFlr352x9V0GINuxEZKwLJ599ln58ssvC9hERL26WixSAbt6ugbnT/3eqsUJXQJEoEmv/NnPfqZHbIQQy7Yv5OPMnJwtLS1l7e3tWx555BGN6m+AjKoqYjLOs1Ebk6rIDxUSWVjRL4CFAZMM1hz6FJqmlQkhtqp+RqPR94QQB0F9R0MFJ3/p0qUaRRmgx6O/wKHYYzvmR7dmUs+aCEyLbQCADKcARhWOy+DBg68tKCiwFSBraWnZ+uSTT/Z7+umn9X7DmLMifUzNb6pXUowA2r/H4zk3Ly/PAcjMfPl2tAVAtmDBgmnz58/X0wIZW8XiNPN2RH75QVCXNGHSnoQQD/t8vnPMvE+m21q/fr28//779e/ZRx99ZHrRjtj+oefGewJABivWAcjsG30HIDNu69bW1lvr6uquwE967LHHdJ1Dq9jHrKusl/gw11xzjXbhhRe+279//ynGnzb9Mx2AzJgNGxoajvf7/c8TaGT9ASRCh8vsQkexTzNixAi9QjvBt5KSkhUlJSUZA8jUczU2Nl7jcrluIPDIu4EdKPISWyHcmEXTP6t///56yiJMMoTvWacJKvPu8lysawTSlCh/+nc03gJ+O+OHLwwLkKBQXl6eSEVD2Phd+96ZDkBm7Zg6AJm19t0ZW99lADIp5fDm5uYVtbW1LiKhLOwbN25MaTHrDiTpjhHF/+P48YODaUTQs6d79ATmUAKaSBIaHkOHDiXHf+n2HP/9zJycAGSapm2BvQK1HjZefX29mbf4rq3YlEvsRyRKUbXR8gGIGTBggBw8eLB477339srPz89rbm5uGTdu3Nzm5uZ9ob2z4eUHphtAmao8pG7SFahnlN3WU6cRJMVZIWqGIHdpaem1OTk5tgBkUspBmqYVNjQ0vHfXXXcVsvlHK44UGQXQpsqM66rPAJiMz8UXX8zmRnfWwuHwuT6fzwHILHgzAMhef/31aYDUzGt0FM3evDI/+J7gaJNeCUAGIL296uL/53a7/2hBtzLWZG1trZw3b57OBuCnqanJsmeh0ivfBAAy9FiampocBpll1v5+ww5AZszQUkpfS0vL4ytXrpzO+wBLiECYFcVseCK+NXxnSBnjOzNr1qyF5eXlk409rTlnOQDZ9+0opcwKh8MTNU0L47PCqo1EIoVlZWWvPPPMM/K9994TMPFXrlypzwsrAr/KdwZUgcEMQJadnb3C7/dnHCALBoPnulyuH69du3bv999/3wf7GHts2LChyyJI5szSrlshiIW/iU88c+ZMPXhMNgngHXsdGH74f1YE0brrF0FTfsj4QIwfgGzcuHFf5OfnB30+3wQr7dEX23YAMmtHNVMA2VVXXdUxffr0ieFwWGd67OSHx+PxfGRXETqrbbXLAGTRaLRm+fLllURUiPbg9BFNMdPh6wpUAdDB8UNklB+KAcBoSuRMdMeuSsS6YqEkisQiCXg0evTopbm5uaYCZFLKMinlFkRKEf287777vutTMgwyI5O7q/7CkiMqNXjwYB0EpEokZa9xCNT527Zt06Oa/AnFnB/Ehvk3zxgLvCXzzInsr5x9ACOYbaS7wr7BYcnOzr7W7/fbApCFQqEbPR7PTwFOSIUFIIM92VM6sZG+dTVmXKfmOdp3VCBjLCKRyAUej+c+I+PsnJOcBTo7O1968cUXp91zzz06G5LvihWps8xh3i/m8eWXXx4tLy+/Ughxe1+L/tbX18Mq1jc4pKNYBfgzyny3CGIAkLHha2lpcQCy5KZ/ymc7AFli00kpKSv3sKZpJ8A8RqeVFO4VK1Yk9FsSt971GWykWcMR8WYNOeOMMxaWlZX1WYAM3Si+qYA++fn5vdIPl1IO0DRNr16FjwQzinUG7a33339fwMYn4Ihmo1UHQTdshUD/rFmz5A9/+EMRjUa/cbvdu1l1TyPtxq5/9fX1jU1NTYVvvPGGfP755wUBKwKzZgesjDwXawuAFEFkglmMEXsd9hxWF9eIf76ioiJ0aCkeoCG9QSZFfX39Af369fugr/kPRsYm3XMcgCxdC/Z8vZ0AmaroigQPerRIB/WhY54Q4rS+0J9euTCbadhQKHQ0OhaRSOTI1157Le/555/XU+2IenWn2ZNMGl3ss8YDDPwbhw/6MwvXoEGD9HvHVk6M72uyzLH483nxAGMAyaAzT548+V8lJSX7m7kgAZDBIGPRZVN58803fyfU3126qnKyuhvbWMAq0bk40wCBipUHAAloBkhD/wE9iXbCFFNsMf6PHzPSCxPND/Xxwzk499xz9R80NLZrpl7rdrttAcja2tqu7+zs/OWyZct0ABONDPreHVuuJ5sn6i/jAZBSWlqqg2OzZs1aV1JScnlnZ+fn2dnZX5v5Pjtt/ccCAGRPPfXUtNtvv13XFWGTYsbcjrUv48r3C2ebKrKzZ88Ol5aWes38lvSW8WxtbZVE22HEwsqzctPHt4DNAgDZqaeeyjfKAchsmggOQNa9odV7LaUs1TStbt26dfLpp58WaBex1qvgkhVDxbeGoAo+0uzZs/neLCwpKemTAJkK8CGFwXqZnZ39hJTSa4VdU22TtSQajeZ5PJ6jCCQTMECeAfAH0AW/ArAM0MXsdSf2mal8CPue6pXYa/To0dPD4XCb1+t9PdW+mX1dZ2fnMc3NzXkNDQ3znnjiCT2VkYwFWMj4w8kEYNN9NuylgvH4nwB1pH3aXbFSVZ9HGw15kQMPPPDjysrK3+Tk5HwghKhLt5+74vUOQGbtqNsNkLFfhRlL1s2xxx5reoDbWmv9d+us4W63WxYXF4vGxsZXPB5PB/t0lV0khMhzu93ThBARu58t1fv1eYAsEolc6nK57oBBBNX4ySef1MEcnL2uFvbuUutSWeSYGLwAiLQDkAEgACghmG6VoDaTFECONB4ilDNnzpSlpaW/FEL8IdVJEn9da2trRW5ubi32e/HFF+Vf/vIXQUVIbAqLJVUmUqrPp1IveRnpP88FGKZE+FNtN9V+8ByMAboLjAGb4Px8gvLar4QQv0v1eZK5rrGx8fra2tpfQvsnBZYUmUSsxWTajz2X/hLlpb/oj5100kmfFBYWOhT6VA1q4DoAskcffXTan//8Z622tlaP7ps9vrxLMDVVZdzTTz89XFxc3Ks2cgZMZeiUYDAo0XKjcMvdd9/9XUUyQxcneRKRfTZ8AGRokXV0dDgAWZI2TPV0ByDr2XKRSGRdOBz2rF+/vopNPusGWlPoS1nls/BErCGwwdEXpSDI1KlTFxYXF/dJgEyBGOgPwiQluJSKf5nqO9DddTyD8p0AvggyIsnA2AOSkaIHKMYPwAu/s+rA91KsQnwogr0HH3wwgdBeuWeRUro0TYuQVfHWW2/JF154QQBMASyazezuyebsOdDyI92SwDFZAwB1ZmbK9HR/xo35DRsUYBNwjLTPwYMHv1RYWHicVfNlV2jXAcisHWU7ATKVOs4+kXUAH9vKQIO1lvuPRMIOgEwnqiCVAFBPgJ3AF9gHf9c0zSeECFn9PGa13ysXG7M6RzudnZ2XdHR03Alri+gOPyzs3TkkRrSnEjFq1POzUB1zzDF65AvWAP+eO3eu/gxWCZrybCyOaAdRKY0I5Q720plCiMfMtK2U8ldLly79zW233aaz4tauXas7VakCS2Y+mxnPYHSc45+bceaDt//+++uRgalTp270eDxogtl21NbW/t+qVat+QToxzBg2/1Y54QCUbGyUQ3TIIYd8kpub6wBkFo52R0fHSw888MC03//+9zrbyYrqcjjb1dXVesoGG5QTTjghXFhY2CcBMimlRKcFQOCmm27SGTNWHTgMvCuHHnqodv7558PCcAAyq4wd164DkHVtaMUeC4VCkjX87bff1oExBL5hDVm1dqinYQ0h3QQQhG/NAQccsDA/P7/PAWT0l77inxE0HTVqlO4XWm1fI68XzwCYw1oCqELQBV9ZgWRWAqTxz6dkG9hAUnCK6pUE4VRldiP9ycQ5Usrzvvzyy7m33nqr7nNRBMwqXz8T/Ut0TzbJMNcoEoD+7jnnnKNVVFRw2Usul8sByBIZsIffOwBZGsYzcKmdABmPozT62K8DKvWGNcCAmbo9hf6wtgGQE/Qh4MV3gMJ6rHOQhdavX581bNiwkBAims697Lq2zwNk9fX1F2/cuPEu2GOIzP7rX/9KOhc/FbBFafegMYMeGIsGCDHshAcffPC7ajJWvBSK1oiw9qxZs/SyypFI5My8vDyzAbL/3a5x9Ws0e9A5gFre0NCQcYAsVWAr9qVLpw0+EEpfCNvvueeeNW63Gz0Py48dkczLNU279f7775ePPfaYwElTwrFWPADOPht+HCJAwfHjx3+SlZXlAGRWGHtHm+3t7S/ee++9x/72t7/9LkJs9rdEpUlMnjxZO/LIIxGU79MAGQA/oMAf//hHXa/QbHuq6cCGAVYx3wgKWgSDQQcgs/BdiW06UwBZv379lhYUFJiqBWqWyVgzIpHIP91u90Gff/659umnn2offPCB7itRyAjmkFXvguoDIBGyEPhLrCF77LHHwpycnD4JkCmJCFItibLznbXavonmivJx8VH5gUHGjyoqxZ92sZAUiEgWBJsrWLakpHu93jqv11ueqC+Z/H04HL6gra3tHqpG4hPDSEYCwepU1Ez2Wd1bbY4ZM4rP8B6jHZednf2Ox+M5rC9KM9hpdwcgs9badgNkCiRT+3Vre2d964pFRn/YE6JBqLTBkWnZZ5995OTJk0VOTk5LaWnpTlGQoM8CZFJKdygUOmPLli2HLV68eNbf/vY3PZqDw2cllVE5GjAvRo4cqTt8KsWOSBLP8cADD+gMBXQBEj1LT5pkiVhwsJdIV4CpkJ2dfWZZWZnZANn/NTc3/4JI2UsvvaQ988wzuk4FR7LpXukAUl29+kZBze7OM3p9/L1xdqGSwho877zz9ChxeXn5TUKIn1n/idLFdAdqmvbNV199JR9++GGB/keI9DMAACAASURBVBigJVT7+PmSSO9OPW9PzjttQOVHiBVHdsyYMWhWfeJUKbJutKWUQzo7O5+766679vzf//1fPUJtxQaLuUzkByCHn8MPPzxcUFDQZxlkfLsoOnL99dfr64QVNmVWUPSAjQPfZfQnwmEyV4sbrZsx3295y5YteWVlZS2kAMGYu/HGG3X2r1UHwSEqmDGHTj/9dKKL7kxFEO0EyNgoUk2azX1paem6/Pz8qyKRSJ5Vdu6p3Vg/g7WZf8MUCwQCIZ/Pd0p+fv4M0uYIIlKoQgmwd7VumP38ivXOphq9TtaQ3XbbbWFWVlafBMiU/RSDwGx7ptNe7DePv6t/W/UtjH9WtclCkoLUIxiFZGGMGDECn2IfIYRMp39WXyulPLCzs3NeMBgcyLeVbBHeJWQQrGB5W90fI+0zZvxACoAdzbceX3D48OGyrKwM0p9wwDEjluz5HAcgS9+GCdbIP7tcrp+xnyUrimCp0rC28s5qH2blPexsW/VHrW+AZTCBCYAhLTJ+/Pj66urq2VlZWSVer/cVIcS3dj5fMvfqkwBZjNisJD1g/vz58pFHHhGkInWXXtndJI11DIyAOEoHi8VdCTEPHz780ZKSkkNCodBABKDRQUOzC5ZCoqickefqbsAnTJjwXUXLAQMGnDBkyJAXkpkcic6VUo5pbW19w+v1DlBC8PTLTs2DRM9o5PdGgKLuxO3j/x8HYfjw4ehwyYsuukgAHtnhIKg5//7772fvscce7W+++aauPUZRCjZCVs0zIv9ECahSBBuGNIjy8vJP3G63wyAzMvlSOEdK+XNN0/7wpz/9SfvNb36jg59WHABkbFYBP3F6Dz300HBeXl6fBcgIWuAU/e53v9OBfqsElgHIxo8frwNkl19+uQOQWTF5u2nTboDskksu0YFB1oUdOpQ29rbrW7FmsSYArKORBBhMQGX9+vWCirhUq6QCNLpTiQJ46XaGtTd2DUEWgjWkuLh4odfr7dMAWbq264vX4z8TYCTAjD7b1KlT5Q9+8AMRCASOy8rKemln6HM4HH7Q7XafQ8o+mmRIXMAoAySDSdbXDsaMd3j06NF6JsGBBx4op06dKvALo9HolW63+7a+1udM9McByKy1eiYYZNb2qHe0DlCGJhlkEdIs0SXkB12ycDh8xPZ1/q3e8aT//RR9DiBTQEEkEvlizZo1Y0j7QxQfcXw2kt0xm3pCcRUIkggg4/ek1zEZAAxIrQSk8vl8P8nNzb2X8tT/+Mc/CmApLFq0SFu+fHnCUtDpAGQIbAPWwGA77rjj1peXlwe9Xu9oM6P3nZ2dQ/x+v2/BggVfPvbYY3paBkw9O/Uq0n25jABk3KMnBhZtACjAGgAcZeyrq6tnVFVVrRNCfJzuMxq5PhwOLw6Hw9kffvjhnsx5KP6Mh1XgGH1mrjPPpk+frmve4dxmZ2evc7vdQ4w8s3NOchaQUu4TjUYXdHR05FHBEjDHSoAMLT2YHQBkBx98cJ8GyNjAEPUnbVUxja1gTvCOoLcEQHbFFVcAQjgMsuReg5TPthMgg32JzAGbRlLp8A2smE9GjKFYY6TKsTajLwUARpCOFDDWbIJb/B/A2Y4qhkaaTusc1hBSDQHFWENgVLKx9vv9y1wu17i0Gk/y4sbGxnnz5s2becMNN+gFhwimJsuET/KWzukxFgBoAUTmvcFv3gGQMQaPeL3eC4QQOwW6JKVEb9bf0tLyxdatW70wMgmK4+/D0uyumvjOOhkYM2QDkGIga4XvXVZW1m9zc3Of9/l8tvi+O6vtknluByBLxlrJn+sAZMnbzOgVSp8MJtkOXW7d/3W5XBNyc3M/MdqO3ef1OYAMA4bD4Q3BYHA3IjfPPfecLjRrBIxK1vjxaXiqgqQSqAQk4+/hcPiXXq/399FodNuHH35YAmiBeDogGZHc2CO+zUSgnLq2q/PUwkWaJ6mWOB0ej8eS9BYi0FRMRHOBTSZpfekcRvvd3T1igcVUNiXJpliqSpqkA5x00kk6ezAUCo0ZMGDAl+nYIZlrg8FgoK2tzQdrjHkPe5KKrV05+bH9SxWE5TqYESqVGAaZ1+uVPp+Pik7OYYEFQqHQYR6P5y02b3feeactABnRHqjRfR0gY/PCtwvQEdDAqo0MABmRNJhFV155Je+nA5BZ8K501aSdABmbRjQoYcOQZsAakamDuawE2AHU8TtUlUIY3zDJAIWU1lQqa2YqfcNnAhzjfcBxnj17NoGmDq/Xm5NKe+lc4wBk6VgvvWvxJfguwjJgrWHzBCMJoedoNHqz2+3+aXp3sP9qCl4QnKSAFanL+Mf88P4lClra/7TJ31H5kOxxSIUlMIzuGOPW2dl5YXZ29r3Jt+pc0Z0FHIDM2rnhAGTW2VftMUnDJnuC78SMGTP0CreapuUJIdqsu3vqLfdJgKy1tbWuqampFJAAQXzSBoiYmh0NjAdxcIBJSWJxZ/Nz8MEHbygqKhqshicaja7YsGHDSMC6hx9+WE/n4bm6YiYZZa2ptrsClHA+lT4UoA0skKKiov7RaBQtoa2pT5v/vrKjo0OiaQM4Q6VOGBjpsMjSAci6AnySdfiTBchUWVsYA+iojBgxgs3GGL/fbwtAhuZec3NzR11dnffRRx/VtS8YA3LoE2mPxdvaqO2ZXzAUJ06cqPf5k08+ybv66qvbHL0JM9+s77flAGTW2JYqlqSVKQ0yADI2Mcl+N4w8nQLIWCeuuuoqByAzYjSTzrETIKMyFUK1VKnK9AFABvgFKGZE+9Su54V1DUuVDTb6dAceeKBH07RIJtYQByCza9T/333wNZSoM0ALmyfFHMvKymry+XxF9j9V+neMkXlBjLqJoDjBF7IsWGf6AjtRVWOl4Ax+L7qau+2227KCggJbmZ/pj9bO0YIDkFk7Tg5AZq19aZ1vBqmVgOhXX301wRCZnZ2t6xRaf/fk79ArHyr5bnz/ilWrVm35/PPPyxSbCW0ZNjtmA2Sxd2WRByQh+kXlSICyQYMGfZOdnb0b56kFMxAIyDVr1uggEqL2sBasSpFS+h5EZ4nuoOcwbdo0EYlEGjweT0m6do69vqOjY4EQYsqbb74pX3rpJYHQIdWwrI6U9QTmGAV6zLADVTpw9GHrHX300d9UVlauD4VCZ2ZnZ28wo/1EbWwvL/716tWrB8Eao6ooKZYwArrb5Md/j1IBAtjcTJo0Sc8nB4D1+/0Vw4YN25LoWZ3fp24BByBL3XY9XRkLkMEgo+qrA5CZY+tdVaSf7yMgGX9m2v/j+47/w5xWvlAq33xzZsT/awWHmcAdMhCkcgcCgaKhQ4c2mX0fI+05AJkRK5l7Du/FoEGDdKYYqXmALfirFRUVb/t8viaPxzPd3Dva21pTUxNC1EsDgcDusMjQhsU3Rrg/nQCyvb3o+m581/fee29d5xgfkE2v2+2+IysriyrqzmGyBRyAzGSDxjXnAGTW2pfWIVUgNUGF4p///Od6phWavA5AZrHtpZTDwuHw+S6Xq2HhwoX/+9prr+WgPwa9mWhNsmBJsgwiqIOkCrBQXHrppXpOflZWVovb7f5eOVM2YiyMd9xxh3zqqacE1cMAMqxyVnHOWchgNKHxgTZWXl5ec3Z29lkej+dFM4ZFgX/BYPDB2trac0htfeONN/Q0UqLVpHZY1b9kx9WM/sa2wf156XHseNn5GTVq1B3l5eW2OQlSyoOllPPffffdUoAxHLGPP/5YB157msfp2I4+I8x61FFHaWeccYZKKa2orKx0ADKzJ1lMew5AZo1xHYDMqWJpzcxyWu3OAqwfyEAcd9xx2gUXXKADJI2NjUUlJSUOQNaHpw2+A34p2Q3oz+255566/AdAy4QJE2S/fv2+YxRkgklotumllKXhcPiVb775Zj/8MljK+GkwyWB1Whm4N7svtKcYf2QP8O4ybgTgc3JyfimE+H1fGDMr7JZumw5Alq4Fe77eAcista9qXckq/OIXv9CDYqTVOwCZxbaXUk7TNO0lqsTMnz9fo1okVWRgaFlVOSYWYFARsMMPP1yeffbZgkkQCoX29fl8H8V2PRQKHV1bWzti8eLFt0G3JpIESBZ/dAdeJJsOx/lEsQHJ0EQjUsvC1q9fv/kej2eGmYtZIBAY5fP5vsTupI8+/vjj2qZNmzSqhybjBBgBJxPZB3vGVyA1G6TjGRTNHEeB0taI9BcWFv49Nzf3RxZPeb15KeXhkUjkOfK4sTcpxVQhY94DTHZ1dGW7WIaDEbuxucHBJY/8oosu0rV2WltbK/Lz8x2AzMKBdwAya4zrAGQOQGbNzHJa7c4CRI5hXh9//PHyggsuEAQVGxsbbdXji302h0Fmz1zFHwUYhSkGAx3mPeyjAQMGyP79+4toNPoLl8v1JyFExJ4nsv4ukUjkBpfLdQ0pzo888oh8+eWXxbJly75jKlv/BObdgUwZdBXx+Qi477nnnrKqqkoHNc3cT5j3xH2jJQcgs3YcHYDMWvvGto5Y/zXXXKMTLCDveDyeXpnN2CsfKpVh6uzs/KHL5XqFtL6XXnpJ12AiTYYIjVWlyhV7iIgK+fcwtNBPyM7OPrikpGRVXl7et131ZeXKlRObm5sXU9mGSoNLly5NCSDrDtTo6p6AGUR5QGz5E2q01+udJYR4MBV7d3WNlHKCpmkftbS0yIULFwoYZIwHgA0sPiMpS0ZZTUYAsliQzAjolowd1NhTnWy33XbTUwwByEgXkFI+5Ha7z02mvVTPDQaDsCbv/eqrr3R9iwceeECPTAIKJ6rYGq9zp57BiP4dlcYGDBigF38477zz5KBBg0RbW1v/vLy82lT74lyX2AIOQJbYRqmc4QBkDkCWyrxxrkneAmrtBiBBrPf4448HIPn1kCFDbtc0rYF9dvKtpn+FA5Clb0MjLVCwAv8B1v3UqVP1oCKSJPzfdp/l1263+zdG2tmZzpFS5rW1teXm5ua2ffLJJy1kWJDhgu9P5dj4Yl29sW8qawAfl7GDOXbkkUfK3XffXYRCoQk+n6/XVqPrjfZM9pkcgCxZiyV3vgOQJWevdM4mGIb+LngE336fz9crsahe+VDJGl5K6W9vbz+6vr7+uaeffvq7ijFUUgQkMMIcShVAYbEnokJq3fnnn68dfvjhpBXukZ+fv7y7ftTW1k7SNO0DNNIAyV5++eVku5x0yigg3sCBA/WqmghqUm0RVpmmaZOFEAuTfoBuLpBSnhONRh/csGEDov0COjm6C4CVajxiL02WERd/WyMphFxjZA5wnpF5oJ5ZFWWgIMOOKn9ERj/weDwHmGXPntqRUnpbW1tnb9269W84XPxA3W9tbTU873tqvyewknlEWgTziChidnb2IUKIf9rR7135HpkAyFjEmN9TpkwJ5+XleTdu3Jh51XETJ0FVVRUb8o7YKpaOBpl5Bt5VNcjMs2Dfaol1E38EcIQAy+TJk/GhftqvX7+bM9lTByCzx/qMPz7zqFGjdBYSLDICzKTabP8OX+vz+W7qS+yxeKtu2bIlumnTJoFfjM9GAJn1prcfFBvhW07lObJRALfJnHG5XEcIId7q7c+/sz+fA5BZO4IOQGatfWNbByCbM2eODpARKPP7/b0Si+qVD5XsMBH955o33nhD3n///YK0RSoqJiOCaQQY6eq5qMhAmgDaY+ho7Lbbbs2apo0XQqzrrh/t7e37Z2dnv7948WLtvvvu01MRYfx0lxLXVTtGmVbqWs7HKUUg78ILL9RBDQCOYDB4UE5OzqJkbZ7o/GAw+KXb7R5FJVFAMrTgYDmhiwWrL/a54gGsZMbCTIDMqE1VaiVpAkTRzjzzTD0KOmTIkIjP5/PYQTMHHNM0Lcicef3113U9O+b9l19++T37Jhqn7n6fKOUS54iPGxTZ3Xbb7ZqBAwf+OdV7OdcZt4DdANnIkSP1qryMNxsZ2JLJpEsb71lmz6ytrZXNzc1iwYIF2i233KKnhhthvKby1E4VywK3ECKaiu3SvcbOKpbpPmtfvB4WCpU9cZDZZBOsI8UuEAhck5WVldE1xAHI7JlxzAHSLCsrK3XfGT8UoKy6uloOGzZM8H3s7Oyc4na7qWL5qT1PZc9dYop11SxZsqQS33jRokW6cD++nFVrTjq9wxdEM46UaPTiKKpBxsSoUaPYd5GF8lA67TvXGrOAA5AZs1OqZzkAWaqWS/461v8rrrhC3z86AFny9jN0RUwpZbl+/XqdqfSXv/xF+/rrr00pZW4EMGHBABxjE7n33nuvq6ioOFoIsaqnDnR0dOzudrv/v3Xr1h02f/78oQBkmzdv1sX6jR5Gni2+LRwTVTWK5yV6W1JSsndxcfG/IU9BtDJ6/0TnRSKR60KhUOW2bdsuQZNMMZw2btxoeT/VsyWTgpqoP/w+1uY4+VDNjzzySFIM9aocXq/3Vq/Xe5WRttI9RwFkq1ev1gHIe+65R59DTU1N3wEYRllz8c/S09wCZOU49thj9c0NoMl2oPDXhYWFfS4tIt0xsuJ6OwEyvhewTgF/ifajFcDGpi8epOED3lMF9vnnn9e/UUbZx8nawwHIHIAs2TnTF85XG21SKmDcH3zwwawfLaWlpQ9JKZ/1er0ZZaE4AJk9s0zJU7CWELAFeGHDhC89fvx4wDI5btw4PXjfW8Wb07VUU1PTcL/fv+r999/XJWEIJNfX1+v+W6p+W7rP1N31+Hww/tCJQ3MWiZahQ4cGSktLLxFCzLUjIGxV33amdh2AzNrRcgAya+0b2zrBETTIIFk4GmQW2F19lCORyH11dXWzqQ4DCPPQQw8lBcD09Gg9AQUATfwANAEUsGgUFBT8taio6FKj3d20adOjCxcuPOPZZ5/Vqw6uWtUjrva9ZlMByGiATS+0aJyR008/Hbr06xUVFU25ubkzjT53ovNiF0zYfXV1dXLRokXi7bff1jXJYDlR3RKGXyI2Sqr9jAXJzHI4Yp8FG+6oXKkXZcCJsFOkdOnSpd7hw4cHqRiqCiKo1ErV91T73ZO+G1p2VGw9+eSTtXPPPVdH/7ef/+vtFFkHIEv0YpjwezsBMuYBQDAgGQsa6RUKIDWhK72qCb5DMFthjiGeHP8umfmwDkDmAGRmzqfe3pZaT9hk8w0hqIJeK8yxQYMGrc3JyRnaG/rgAGSZGYXYqoj4pSrlsrKyMlhcXPyo3+8v8ng8/yeE+F7Bq8w8rTl3DYVC+3s8nvdhLr/55psCkIxAMlkWPenHmnN3462wX+C9BdRmXGCOjRs3Tubk5Ei/3+92wDHjtkz3TAcgS9eCPV/vAGTW2le1Dhu1qqpK++Uvf6kzyCCa9NZAyE6dYhmNRucLIaYvWbJEr1z53nvv6QAMTIBkj2TS+mgbkACRcthj55xzjh75CoVCj/p8vrOM3ru+vn7eunXrZiLWyfO/++67Ri9N+rzY/rHgUUUCkIPqiwj25+Tk6HPB7AUvFAod7vF43qypqZFff/21ANB56623dDAQNlkigCzpjpp0Qay9ugKM0E0BGOUFz8nJuaCsrGyhEGKlSbfvtpnY8VmxYoWcO3euLvYKwMoGX4Fi8eBYukAjD0QbACUg/ggrUxEV8CQcDt/g9Xp/bnXfnfY1vjGHeTyetyh6ceedd2q/+93vUvreGbWlqtJK1VJ+cJj74sH7wreIzYkqKGJVPx2AzAHIrJpbvbVd1g7S6Vg3+aHad3V1NRUL691ud7/e8NwOQJaZUWBN4Qc2GUL9zBPAUzTqSOfD196u2XuUEOL1zDyh+Xd98skn3SeffDKVLX8KMLZ8+XKdRUYQGdF+1qFUA5xmPa1ifLLPIRgK63PYsGFywIABor29fWBubu5ms+7ltJPYAg5AlthG6ZzhAGTpWM/YtXzn0W3nG/+rX/1Kz8Dim+8AZMbsl9RZra2t/25ubt4L0OWRRx7RPvroI23r1q16Hn+yh1GATC0aaPEQUUGU/+ijjw5UVVVlJQsudXR0zKuvr5/J4nj//ffrVGtYVbEaXcn2o7vz4wEfnA4cVRwQ2G977bWX9Hg87/l8vilm3VO1Ew6HT3S73c9CH0eLDEBTMclqa2t18X70F6yqNppuf2LBJYRKYdUAjM6aNUu3YVtb29F5eXmvpXsfo9e3tbVtbGlpGfD666+7SM+F8YIdY+0X61yZBY4R6SXVjqIEzPvJkydvKS4urkh23hvtp3Pef1vAboDMGQPzLeAAZA5AZv6s6p0tsvbga8AcI4jIJhuRb340TUNHM5opPbp4izkAWebnED4GlcFhGJCdQRouqX0DBw6EtcQ+aqcO6sdbOBwOP97e3n5aTU2NXqwLmRgAM6WBmckRwdclkA5YiYwI+wTe461btxaUlZW1ZPLZdsV7OwCZtaPuAGTW2pfWCbKDncAUvuyyy7QDDjiAAm8OQGam6SmZjK03b968cM2aNaNhJD3zzDM6KwmgJR4cSDYSEw8oxP4beiADygDDICLNbsSIEYGCgoKsZPsYDoefCoVCM6hg88ADD+gRJBbKrnQIzAA51PPRFhMVNhApctCmidbBBtI07TG3231msn1JdH4kErkiHA5f29DQ0NnU1LQ7Wj/8/Otf/9KjZ0TNFPPPTHCnO+AzEUOsu/4QTcNm2OuEE07oqK6ubtM07WSv12sd/W/Hw0gpC8mS3bRp05dr1qypQHuMOYP+Xjyoig1jfcme3gEjc4t5D/KPkzR79mxdl6q6unpLTk5ORaKxd35vngUcgMw8W2aqJQcgcwCyTM09O+/LmkHEePjw4XowkUIfEydObBk0aFBdfn5+kdvtLust4Bh2cQAyO2dH1/fCF4G1DJusurpaD8iR6cDcwT/tawCZlPK2UCh0QigUGkzQmEwAfDq0yYxIkFgxYsofBAyjCBUgJUHRYcOG1ft8PuFyuQYKITqsuLfTZvcWcAAya2eHA5BZa19aLyws1EExvilkr40cOTLg8XiyhRCm6Z+b2YudMhoTDodnud3u+9GyevXVVzUqj1ER8ttvv/0v2xhlhsVe2BVgoNohPRGQhAX7/PPPlxMmTBAAZm63O2lbbpfnulRKeQcMqhdeeEF77bXX9Go2AB5dsalS6Ut3k0UJ9tMXwB4iu2PHjpWjRo0SoVDoLq/X+xMhRKcZky2eYbRDl0zXIsMR+Pzzz/XCCoCD2AJ9MoBOUp7S7XN3Y0m/FGhkFCDimr322us76v9ee+31cv/+/Y81w0ZG2qDwgcvl+i3VKpnz0PFJr8RmHPGAmJF+qfsmsrNKy2WeXHzxxXLkyJHorrV4PB49/8E57LGAA5DZY2cr7+IAZA5AZuX8ynTb+BYwgVQhG5hjMK1hBOXk5NxRWlp6eaafsav7OwBZ7xoVpVlHAJe5A8haVFR0ksfjea4vsNbjtHr1YDnB4scee0zXJcMnTqZwl1mjB0BZWlrK5lUX0Z42bZoeFNY07UdCiL+bdR+nneQs4ABkydkr2bMdgCxZixk/H3+AoAfMYIAx9pGA7pFIZF+fz9drtSWTBnWMm8SaM6WU5aFQaL7L5ToIQOnvf/+7nrIHSEDEJRlQQIEKRhlmSoNp4sSJemoiIvfbRct/nZOT0+B2u/+STI9jKnCe2tnZ+QS0asCxRx99VAf7AIiMHMn2N7ZNHFnAPSiPiHCiKTVlyhRZUVHBvNhdCLHeyDMke04kErm6oaEhEAwGD5VSnrhu3ToN0IfoGX/yb0Syjdog2fsbPT/WtjDuYFDhqJFaSWnyfv36vZ6Xl3eU0fbSOU9KuXswGHxa07QJiPIzT0hXpXJlR0dH0vO+p2fpak4xRyjFTmolehRut/tav9/f5Ha7706nX861yVnAAciSs1dvPNsByByArDfOS7OeCWeYtEpS49CqJJ1y6NChoaysrCvz8vJW5Ofnv23WvcxsxwHIzLRm+m2pbA00T8nUOPXUU+WUKVPwTa8UQtyW/h16RwtqL9Da2nptXV3d6LVr156rqr4jG2P3sb0qOUxPnT12xBFHyKFDh15SUFBQkJub+7oQgor3zpEBCzgAmbVGdwAy6+wLzgAjmGAZjGCAd03T3srNzT1LCFFr3Z3Ta3lnBMgIZSyDjqyqVsJEgm3UnUB5IjDACECmoqJEVU488UQdKOFH07R+Qoj6dIYBRhXVbFauXCnuvfde7Z133tFLPgN8JDoSMX8SXU+/qEyI1gDOLKguP+vXry8YNWqUpToDUsqfapp2Y3Nzs54eyw8RtLVr1+psQPTkSL1ENJv0S5U+a2S8EvU7md9jY6LhCAuCfJ9xxhl6dM3tdi/2+XyTkmkr1XNDodARHo/nDeY6WhWPPfaYXvEIu6C5l+48iH2ueIAMR5WUSpD/gw8+WB5++OF8N9w70mP4e6+kx6Zq6958nQOQ9ebRMfZsDkDmAGTGZsrOcRbrBWsEEWL0o5BuYK2EdUIqxdChQ2X//v17vX6UA5D1vvnGvCItB7CVjRX+V//+/deWlZX1isqnZlusoaGBdMvnKDiGn0emAH4wPrLVB+8xgtlsZCk+NWXKFD2rpKqqqm9W5rHaoCa37wBkJhs0rjkHIDPHvmr/qAp7KU1JZKkgliDTAyEnGo3+yu12/86cu1rTys4IkA3t6OhYA4MGIAmBfgQtrQQIML3SRSCycumll+pAQXFxMfYbIISoSWd4pJSkqTV9/fXX8qGHHhIw41avXq1t2bIlnWYNXQtAhu0AyRDjJHUUZhxRX5fLZen8kFL6hBDBUChU4/F4KkmtpNrl5s2bxZo1a7SVK1fqgBl/J/0SoMyKqpeJWHj8fvDgwTp7ClCUP8vLy1vdbne+ISObcFIoFDqwo6Nj4euvv66n4lLQARARsDAZwNCIJlvs4zI/cFJhTF588cW64xQMBg8uKSl5z4RuOU0kaQEHIEvSYL3wdAcgcwCyXjgt03okv9+vB9moiA3TGJ2RESNGyH79+gl+p2man7U+rZtYfLEDkFls4BSax19RmRvMKUCbAw888MsJEyaMK5TsdgAAIABJREFUSaG5Xn9JIBCY4fP5niL4iYQGexwyZPi31Qd7HPYA++23H7rE8tBDDxVkTfQ13Ter7WhV+w5AZpVl/9OuA5CZa1+YqKRqI0sEngALGJAsPz9/c15e3kC1/zf3rua2ZikAYu6j6ppRHKSWyQcffFCgXwXryOzoSleACZGVYcOG6RFRGEQgoeFw+FCv17vAjH5KKSs7OjpqAD9YGPkh7dJM4C/+OWM1q5TuAHR2KjQecMABcty4cYJUiWg0+qTb7T7VjH7GtxGnw0CVgG8ABqnKCPC5ceNG7ZtvvtGjaKReApjxd8pgm1X1sieADLsAHvJiAxziPEAT9Xq9wi4dDCY9ff3www/l/PnzBYUNYFACGCZ7JAuQEb1Fp47I7TnnnKNvftrb2yfk5uZ+kuy9nfPTt4ADkKVvw0y34ABkDkCW6TmYzv0JmhAdVrqUFRUVyA3o+iL4Dwirw7Dm/zVNmySEWJzO/ey61g6AjPVX+RTYC6Yd/+6NB742AUkY6rD3yWjA56CIFD9KK9YsP6wnG+CDDR06VPc/TjvtNO3II49Up+8nhFjaG+2XyjNJKY+PRqPzW1tbxcqVK92kWM6fP18vZoWEDGNh1UEa1AknnKCnP5EtEIlE+peXl9fa5eda1a++0q4DkFk7knYCZIp1zf6aNYDgkhXkD2st9v3W8QtUph3+AXtHMq/ATdRPZWVlo9vt3uxyufaw89lSvddOBZCFw2EJa2bp0qXa7bffrmswsWDHV/BL1Rhc1x2AMGTIkO8YRAcccEDD4MGDV2maNkcIsSSd+8VeW1NT80OPx/MKINnDDz+sg2S8NLEOSDyY09W/k2EUqT7TDtohAIHQ2RFEBSiDMSeEeGN7FPjXmqYttTIKLKUcGI1GXwyFQs2MKQ5BR0eH1+VyHYDG3AcffKCnFgKS4aB1pVGWbN+7GrtYm7IJoHoS0cuLLrpIB8p8Pt+/fD7f/maNe6J2AMjQGoMteccdd+igMP1XzlJXfY6fx7F96g4Q7Or/mfcg/wBkhx566LfV1dUbhRBnCCFWJ3pu5/fmW8AByMy3qd0tOgCZA5DZPefMvB9+ggqcsC4SHR40aJDu5BMxzsrKejsnJyc3Kyvrz0KI+Wbe28q27ALIiKyThgob6thjj9WBRjP8FjNto8AxfCyCkYBhyH4QsEQ8nmAlrH6C0wBnsRInZj6Haos5h50AXs877zwdxIHVHwqF9vH5fB9bcc9MthkIBP4cjUZ/RibJnXfeqadbKtkVq+YK9r366qv1QDCVZwOBwNCsrKy1mbSDc+//ZwEHILN2NtgJkKkgE+nMrAHst60Ev620nNo38o0m2ANjHLCddQ4/wefz1WRlZX2Zk5NTnJOTM4Fn2VlA914PkMUasrGxUQKOkZ8/b948nXbMpOppwYhlSRlZWOKBBdLLGHBSB4hcoc9VXl7+XllZ2cFmT7rtqaNnZWVlPUzU6JFHHtFT6QBGAEPU0RWAF/t/yTKE4s8H+SVnmCgwaXW8uPSdks/RaHSuy+Wiko11Yaw4o0op3ZqmhdElAzCcO3euXv1SRS9jx3fHi5fSsMS3o9oiyrujKIM8/fTTBRsAKOdWv+Cx7be1tUkKN7z11ls6cMqciAVNjQJksed1BYbFzgXmPR88+o72B858//7976usrLwgJQM7F5liAQcgM8WMGW3EAcgcgCyjEzDNm+MjAPAAVsA4YW0oLS2VlZWVuj8Zm5Jl9TqZZle+d7ldABlRdYJuaNkC9gD09Db2gJJuwM9QwUqC0bD78T9Wr14t169fLwjWAZjV1dXpPplVB74Jm0qKBZ1yyim61APZHJqm9TmALKaA1y+3bt16/R//+Eft2Wef1W2PjY3sY1IZB9gsv/vd77Q5c+Zwj3eEENOFEI2ptOVcY74FHIDMfJvGtmgnQMb+ivRlyCgXXnihDkqbSfSx1lLfb53vkfo+A5Dxg48Qs6e+Xwgx285nMutevR4g2wFU/A8L4dq1a0+Ebvzmm2/q7DFS7RItFukCKIBjgEOUKWciT5o0qbmjo+PAkpKSz80aBNWOlHKApmlj165de8e77747HEBo4cKFerQu3aM7YC0eVFITHSYZ1E8AkjPPPJO0Qpmdnc18yRFCJK4ekOYDxzgJYruYXxTtLezB+OOQGYlYGgVHu5ojigILYwyHjIhl//7976qsrHxN07SXhBCRNLuY8PJIJHKjy+UaunLlyhPRHEOPYtGiRTpgmmjeJ2x8B1syfvzVdXy8cZjoN9pjAKWRSOQ5r9d7kpG2nXOssYADkFljVztbdQAyByCzc76ZfS/WBkAdCrecffbZOrMegf5QKHSF1+v9WgjxvNn3tKM9uwEyqoajZ5udnX1EKBTKtaOPqdwDkAwWGRs4gnV+v39cWVnZ9cuWLdNF5JE6+eyzz3QpjGQ1UZN9HgKU+OIEb8866yz0UYcVFRV9tTMBsUb6rPrT1NQkr7/+eh0gI3uG6u5m+H5dPQP+3k033cRm/R+5ubmnCCGsQzyNGME553sWcAAyayeE3QAZLCv0uebMmdM5c+bMY7Zu3WqbprUVloRQwQH4p378fj+YwXohxKdW3NPqNncKgKyjo+OlYDA4DbFKmFUsykSsqOCX6OgunUxd1x3jit/zO9hUCNcjzn7MMcfArOoUQmQnum86v9+2bdvidevWTUR34Mknn9RFOmHKmUnBTGQXXl6AQTQfcOKwAY6xXQAZN4pGoytDoVDe119/PeCpp57S3n33XT29dtu2bemYt8tr4+1BX4n00m8AwqlTp2L/i0tKSu42/ebdNNje3v5hZ2fnvoBiMCZhkZHiQOqpWUd3wGlZWZmutYbWBwyy3Xff/VshRKVZ93XaSc0CDkCWmt1601UOQOYAZL1pPib7LESIVQCNytf4RgTSOjo69szPzzc9cJjs86V6vt0AGRkJsHUKCgp2Cj9c2VVKeZimaW+R8vf555/rwWoCuQBmgGRWMsnQIoO5iOzDrFmzqLL4Lb6qy+Xqk75JLEAGgwwWn5UA2a233qrNmDHjloKCgp+k+h4511ljAQcgs8auqlU7ATLAJPaY7LGuvPLK1hkzZuzU4Ji1I5O51nv1wqyiKPX19S9u3rz5WDSYHnzwQR0w6gnYMmrOnkAixaRCW2P27Nm6Ewjam5+fb7nNwuHw4mAwOBGR/ttuu01PtWRh7AkYSQR4xdskkf2UyB76IugSHHTQQTpt0k6ALBwOt27XYsj9+OOPtRtvvFEXKm1sbNSjmakcydiI3GmlO3fmmWfK8ePHM+6kl/49lXunck1dXd3impqaiW+88Yb2wAMP6A6oGrdEfUk0vt09j5r3aFDAnCONYe+9946Ulpb+JzzgHBm1gAOQZdT8ptzcAch2PYCsqxR+UybTf/Q8zGrKUDuqL2iMwCzGNyBVMC8vb0JRUdEyOyUYDD2wwZMcgMygoXacFo1Gn41Go8evX7/e9eqrr+oMd4AymE5WHQqcHTt2rPaTn/xE14YFrO2rlRYzAZCdcsopt+bn519l1Rg67aZmAQcgS81uRq9yADKjltp1zrMc7EnHlKFQ6AiPx/MGUSlAIpVitn79+nSa/d613QEJgEEwqFiIAchwAhGhtWMhjkQij0ej0bGbNm0aq1JKAYmIIHWnN0WnknGUEwEoMOdIL4TOTn70qFGjAp2dnUNyc3M3m2b8BA01NDS0rl27NhcKPwAR4vzQ/FOtmpQIVOJxlF1IL4U1BjC63377fTF06NCxdvV7x1hmrVix4sNFixaNRXsM3T3eA3UkGr9Un5WUYjbwVGklQkvVTt6DHem1qTbrXGeSBRyAzCRDZrAZByDbNQAyIsSsowBJbOxJO0hmjTYyRWmPwBlsegrZGGHVG2nXyDn4SAQQx4wZox1//PHyiCOOEKRe2uEjGXm+ZM9xADLjFotNaWxpaZEwyWC6P/roo3oRIeZkqn5aT0+hNIFhkV155ZW6/h06sR6Pp1fvZYxb9vtnOgBZqpbre9c5AJm1Y+oAZNbad2dsvVcvKk1NTRMLCgoWU73woYce0gEyVTnHqLHjgQQjIAlt49SisUGK3bnnnkuJ6Rf8fn+T2+0+x+i9Uzkv1vFob2+XAIOklKJBhVB9vINttD9Gn0W1R0ltUkpJsRs/fvymqqqqaXblEUspf6Bp2u7r169/4L333vMz7rCoAIjSAYYS2Uqxp6C/AhCdf/75OoOqoqJiRWFh4WijNkznPCllQSQSmS6lvPizzz77wd13361HZUmthEWY6pEolXgHKKenlVKggX5TtXPAgAFP+ny+Fo/H44jzp2p8E69zADITjZmhphyAbNcAyADHEOFFkB2NLkAysw9ACHSJCJ5R8Q7/yGodKNUHRNMJqCDYjw4Za8aBBx4IYHGmy+Wq83q9b5jdXyvbcwCy1KxLle3m5mb50UcfCVL0lAxGqkz/RE+BL0MA8/LLL9cDmIBlfTWA5wBkiWbDrvN7ByCzdqwdgMxa++6MrfdKgEyBRK2tre9u2bJlMqmVjz/+uJ5iR2Qq1WoPsWkOiSK5sGamT5+uV8vhx+12j/b7/SusFgONbR+n4/9n7z3grKju/v+Z2/Zur7SlVxUQEAERhKCoqCAqICr2FjUxUZP88jxP8uT3/J80zS9FTGKJRoldQMUCYgGRIgiIIH0FpNeF7bu3zj1/3hPGXDf37q0zWzjzeu2LsjNn5nzOmTnnfM7n+/kSUgo5tHbtWuXIkSPfIshihYgaHTJWXcM7LpN4zDrJXDlt2jRdRZWXlzerpKTEsiwUXq/3bxkZGd+lvVHQQRAy+W8qm2c0AigRQo1z8bNgRxLp/i233CIuvPBCNRgMHnY6nSRQMP0QQvRTFKUMlSTJKNiR/fLLL3Vfj0j9PhIBnEh7U6HwfkSWKIz5ydZK+zscjhJVVU+Y3e9NB7aN3EASZK2/ISVBdnoQZEYKd3xGMBeHSEp3tkJIiKNHj+oZBRkvyICNiswscqLx2wdJhi9Unz599HBLPMmYM3i93o+ys7MvbU3jhiTIkvu2app2r81me3LTpk3i2WefVVGSoSKrqalJrsA4rmKeQlgv8xTmqvn5+S1yLRNHVZo8RRJkqSLYdq6XBJm5bSkJMnPxbY2lt7hBxZhQaZq2JxAIdCd7IQQZHgeE2BmEQKIkgNE4sVRETPhQEKGguv/++/VU3KWlpWRosiyddDAYfEXTtAG7du0a9Ne//lWvOzvE7BTHW4/Gnifx4pWTk6NPdiGIIEgIsQyFQi9lZGTcbFUHr6ys/LPH4/kBxBgEERMuJv2BQOAbgrBxO0Zr11jtHY4n57J4pe5I98kyVVJSMlAIEXC73V9ZUX8hREkoFCp/55139KydCxYs0LOY8myRFlfJKiQb18XIOjJgwIBvJp78XVGU7idT9O6zou7yHrERkARZbIxa+hmSIDs9CDIU6Pfdd5++iC8qKtq6d+/ey7Ozs/PT1T/J7lxcXDyqQ4cOT0OMkciF+RJqYwzUrToYO9hYw46CMfPiiy8my2WgsLDwNlVVX7HqOVK9jyTIkkcwGAxOq6qqmosVBvN1oj7IMm/WAdnM/JR3izlqu3btWtxaJh11lwRZOlBsG2VIgszcdpQEmbn4tsbSW+SgomlaRSAQKCRcAAUVHkzbt2/XM1eGExpmhBsSCsHOL+b0M2bM0EMMmQAGAoFhLpdrnRWNXFdXt/rIkSMjkKoz4SDEDvVQssq58GeOpaIje6GhICK8FPl6KBR61W63z7Ci7txj586df96zZ88PmOzzQ7ICyKFwT4t4ia94n5k2Ziectp8+fboeLsKOuMvlsuwdgRwmeeeuXbv0kGKydmLMT9bORJVw8RKiBj4Qo+zKko2Mfg9JyP8pitJDVdW98eIozzMXAUmQmYuvFaVLguz0IMhI6sMmG3OI4uLidbm5ucPS3b8CgcAlDofjQ4zRSV7EXIExk3GDMSDdirVIz2+MxZAWWBPg1zpx4kTdwzQYDH7H6XQuS3e9zShPEmTJo+rz+QYGg8FNkLTM19ncY/5u1sE8lfcKguzyyy8njNmyeZpZdYpUriTIrES7Zd9LEmTmto8kyMzFtzWW3iIHlWAwWFtdXZ1DWN3DDz+sD7goiMIne9EUREYjJEoQGNcx8LIjhbfB6NGjtw0dOrS/VQ0rhMhUFMV++PDh5V9++eUQFFQoibZt25aWR2isKqPQcJz4PZkb7733Xj2stGvXrlphYaGevdCKUAkhRBdFUerWrFnzxxUrVtyBco6JPqGljY90E2R4qdD27PqTeh1ykFBTKw2HGxoaOmdmZh5YvXq18sgjj+i7sISVhofLxNuvIxFqTWHWoUMHnRBkwjl27NhPzjnnnAvT0ulkIWlFQBJkaYWzWQqTBJkkyNLd8bxe73yPxzORZD5PPPGEntQoXZtq8T4rynssCgh5e+ihhxhLRF5enlpXV9chNzf3WLzlNNd5kiBLHnkIMiHEJhTvWILgmRueVCj5kiNfSeZK5ivM08m23bNnzxa5lkm13pIgSxXBtnO9JMjMbUtJkJmLb2ssvUUOKjU1NbXr16/PgSB48803dQ8mJnuRFGP8X7LhhOENZhjOQhBdc801uoqqR48eZV26dDnTqoYNBoM32+32FyAGX3vtNT20kr+HK+dSeZamCDJCJPDewi/l1ltvFRdddJGKgshms1nSRwz1FPUjpJJJPtkrqTv+W9EIssYkX7L4MOFCNcju91VXXSWGDBmiapq2xuFwkDDAtCOceMTs9tNPPxWrVq1SaX9Uk3juNVYBxEuSRcIsmuoSM2mUc+zK9ujRY3nnzp3HmlZpWXDSCEiCLGnoWsyFkiCTBFm6O6PP5/u5qqq/JpEPJAWJbVCgoyxLdrxI9BmZQzGPQImMD9m4ceP0uZTD4chVVbXOik22RJ85/HxJkCWPHgSZqqqbFi5cqBNkb7/9th7qa9aRn5+vb2ZCkN18881K3759LZmnmlWfaOVKgsxqxFvu/SRBZm7bSILMXHxbY+ktalAJBoOThBDDjh079l/vvPOOC4Jow4YN+kAbLVQgWSVRY4UNEztUNIRF3HDDDfoELycnpywrK8sygqy2tvY6t9v9GpPbv//97zpBZiQliLeeiZjVhxNmZO0kvA713PXXX4+HyP/LyMioVFX1EbM7tjFxhiDCSwVi7MUXX9TbnrDKSFm5IpF9TZFl4bg0vpbwStLTExYCQYR6rKio6E2bzTbV7LpTfjAYvEEIccaBAwf+hwkm4QlgYGQkC3+GSMrJeBZA0foFu/4o5Wh7snYy4czKylqelZUlCTIrGj/Be1hNkNFvwn8SfNxWd7oRlhbPO5Vs5SRBJgmyZPtOpOvCxs+7a2pqnl6/fr2uPmZzEfW5x+P5lj1BOu8dqSzICzYaCdO/6667UGbPLCwsrMnOzv4fs++dSvmSIEsePYMgQ7kIQfbWW28p+/aZZ13K5m2/fv10xTt97Mwzz2xRa5nkkfz2lZIgSxeSrb8cSZCZ24aSIDMX39ZYeosaVPx+/+NOp/N7TPDwHmMXCv8lzOkjLVji8WWK5xwajtAA1EOYs48fP16MHDkSBdFRh8PR0aqG3bNnz8RgMDifHeDXX39dJ0nCyaFUF22RlHZGUgKydqIgghiEJAkEAh1zcnKOmr3ra5QfCoWWVFRUjJs7d64eUkuYIRL9purclCKuqXYPJ5lcLhdkmO6XAjF4xRVX6NnGNE27xuFwvGVF2/t8vnkul+tqsnbiOccEM1pSBuN5Uu0LRjkQo8OGDdM91yZNmiSGDRtG1s6NTqdzsBV1l/dIDAGrCTLDgJsNBMjUtn6QCARCgQ2ZdL1jjTGTBJkkyNL9HoVvMtF/V61aJWbPnq0yppAR2cyMgo3rwreCcQX/0ssvv1yMGzdO7d+/v1ZSUmKZXUMy+EqCLBnU/nmNEWL57rvv6vM3s0Ms8YslkRZz1XvuuUfp379/i1rLJI+kJMjShV1bK0cSZOa2qCTIzMW3NZbeogaVysrKxyorK3/IpI7shahpIDPCzdkNkFNVVIWXwyIQkgSChNBKdj4VRSlC0VRYWFhlZsMaE9tgMBisqKjwLF68OAcFEQbtZWVl+q3jJfliPWckgoxFb0FBgb7je/fdd+v1J9TSyuyFgUDgc6/Xey7hIU8++aROEBEaEp61M1rdItUpVt8I/z0T+TPPPBO/OZ0gPP/8879UFOVcvOBUVfXHwjQdv6+qqppz4sSJawktnTVrloL3HM8YyXPPuF+qi3fKp9+jmqTepzz3eA+yFEVxqqpqXo72dIB2mpZhJUFGH2EhwreRbwRKw7ZKkvE+Mc6Q/Q9CAeVuJOVqOrqdJMgkQZaOfhSpjJqamuLMzMwBgUBg6SuvvKJnFGSjDTUP/dsK037jufD0xLKBUMuJEyeKPn361Dqdzr9lZGT81Kz6p1KuJMiSR88w6WdjF4Js0aJFyqFDh5IvMMaVRjItFGRkih0wYECLWsukq+JSQZYuJFt/OZIgM7cNJUFmLr6tsfQWMagIIWyAt2fPnr9u2LDhPhRUkGSbN29OGzkUToiFkwsoqPCfIsTu9ttv183p+/bta6k5O0RcfX292Ldvn0r2QiYXkEXpSNUei1xjAcxOL/5bmJ2OGjUqkJ2d7fR4PN2ysrLMM5EIe1vq6+t37du3rxchldQfoohdcNQc0dot/GULJ8niIY7CCTLUYmRBIrRy2LBhVf369Ss0WzUXRnJBwmm7du16c8OGDdfQ7oTX4j3WVKgs18dTz6Y+SJBjEB59+vTRd2BRTkKS2u32FvFNaI0fUyue2UqCjG8jfkIscvGo44dkFqn2PStwSvQewWBQTwSD3yWhaXgfmqUikwSZJMgS7Z+JnC+EGKgoyqavvvpKz2r5xhtvKJj3V1VV6cSvVYfb7dbJ9fPOOw9fT33jsbi4+Jni4uLvWvUMidxHEmSJoPXtc4UQA2pqajajgGcOwxwuXd65kZ4qnCAjqdTAgQPb5LxFEmTJ98m2dqUkyMxtUUmQmYtvayy9RQwqXq+3X0ZGRtnevXt176158+bp/ksQRLHUQImC3rg8QuzwMsDwE7NPCDJFUXbabLa+iZad7Pl+v1+w2wYh+PTTT+sTDAgiFm2pHk0RLfyupKTECCvV696jR4+HTyqnfpbqfeO5XghB+GpReXn5h2vXru28fPlyXZoPDo2PWP0g1u8bE2qcjxoGMvTWW2/VQys7d+5cVQhbatERCATGOByOZSgF8VxDOQcxevz4cf0JGrddokRgU9UgpBhSmIxjTDAJsRRCbLbZbGdbVH15myQQsJIgg0Tt37+/HnaNNyEh6JA7VqpQkoAoqUtqa2t1AuHDDz/UM8jie8n31wwyUBJkpxdBdvHFFzPOrsvNzR2WVOdM4iIhxDhFUT7YunWr66WXXtLnFCT8wbLC6oMNODag2IS58sor2YT5vdPpbHEqMkmQJdcz/H7/yGAw2LOiouKVxx9/XCdlmcNVVlYmV2AcV0GQ9ezZU/cgY/4iFWRxgBbjFDZMZ86cyUb5zNzc3IdSL1GWkE4EJEGWTjT/vSxJkJmLb2ssvVkJMkOp8/XXX3coKSk5gjR79uzZ+iKFzIU+n+9bGSrTtVgJN50mxA5yBBURO5ylpaVLMzMzmVyaeoSrlOrq6gRhlUxiDQURWTsbL0QTIYFiPTzqECYZqIauu+465eqrrybc7lhxcfEtqqp+EOv6dPw+EAj8h8PheGTXrl3Kq6++qpNju3fv1v23Ih3J1D8aQQg5BkE0dOhQ5cYbbxSTJk3Ccy6UkZFhT0fdmirDaPv9+/cPysvL+xJijPozsayuro66yx+JIIulEIz2HCzSCadl8TZ+/HjafmFGRsYVVqnnzMa4rZbfHAQZxDkE6tixY0Nut/uPiqJktDV8bTbbD/nuMPb85je/0UPSJEGWnlbG35IwOxazJMDJy5MEWXqQbboUIcTEo0ePvrR169YCwvYJf8O0nyNdc6l46sGeE7YNfENmzJghRo0apYZCoUftdvuPTj2LqqqqiKcsM8+RBFn86DbOvs2VS5cuFY8++qhK9lQ2+Zi/m3UQ+cDclW+K9CBLD8qSIEsPjmaVIgkys5D9Z7mSIDMX39ZYerMSZKc65WyPx5Ozfv36KwgxIwvO2rVrvyGHjIlcsuRItMkg6ggIok6dOik33XSTMnXqVN2LKhAIXOF2uxda0Zh+v/9Bn8834sSJEze89tprenp2dnmN8J7wZ4/ktZXKMxIqxaQVggjvtUmTJkFGfulyuYakUm4i19bV1T0QCoVmknGLpAzvvfeerpxramKVKCEU6XzIQRRUqGLY1Z42bRpk2W02m63G4XDMS6QOyZ4bCoXm1dTU5G7atGm8YWobnrUzWrmRVGWJJLCg7rQ95CCKycmTJxOeQL8f6nK51idbH3mdNQhYTZANGDBA3zzgPRk7dmwwJyfHaU1Nrb0LYe4QZPhe/vrXv1ZQM0uCLD1tIAmyZlGQ6aSTx+PZWFNTczZJb1CS8eeRI0dMJS8a9xrmWij1mWuwGTdy5EgxfPhwksHMtdlsx+x2+/3p6WmplSIJssTw0zTtPxRFGVxfX38D30vmcU888YROwmKPYabSWGaxTKyt4jlbEmTxoNR850iCzFzsJUFmLr6tsfRmI8jCsy5hxo53ARlwtm7dqpt7hi/6w/8eL1EWKxyNCVvnzp11X50ZM2YoU6ZM0UkTTdOuczgcc6xoTK/XO/ekb8O0jRs36pNXCCJCfcJ9QhqTH7HqFS+BxATD2NX/zne+I4YOHUpfyFJV1WNF3bnH/v37v3vs2LG/QYpSdyZY1NfMiZURWsmu9p133ol5MBN2wj6yVVVtMLvu4f2eEGKMlCGG8YiJlLUz3v4e73PT7zHmJ2sn9affnzrGqqq6PN5y5HnNg4AkyMzBPZwg+9WvfiUVZGmEWRJk1hNkRvNpmrbXZrN1KyvphCY/AAAgAElEQVQrE59++qmKQp2xNh3+pvF2EcYwNmYYdyDcUf2QGAZ/Q7vdvt9ut3eLtywzz5MEWWLohkKht1VVnUwEAEml+DHM+c2cw/GUkDnYotCX2Ojr27dvs61lEkMtsbOlB1lieLXlsyVBZm7rSoLMXHxbY+nNOqiEQqGdFRUVvSHEnnnmGZ0gQz2FWbJxRCOIYoUIxCKSCK3EmB4V0anMlStUVR1jZSOeOHFidllZ2XTDe4tsU4YxdDRiJFa9YhFk/B7zXMzpIUcIL8WHqqioyLK+UF5enltSUlIDIcRkHQXVunXrFCZaZh+EVuK71qNHDz37EeFjTNwrKiryi4uLLcncGAwGKysrKwsI43ruuef0sFqwqKn599unmyAjGyETS/ykLrvsst1jx47tZTbmsvz0ISAJsvRhGV6SJMi+NgdYRVEkQdZ8BFkYUSY2bdqkkxhsRuJ1yWZcpAzhZnUE5h2MP1hZEGoLWdatW7c9OTk5Pc26ZyLlSoIsPrROZki90OFwfIyfHaGU+I1hE7FmzRp9DhdpHhNfyfGfxQbniBEj9OzbkK29evWybP4a/1OmfqYkyFLHsK2UIAkyc1tSEmTm4tsaS2+2QUUI4fL7/Tu2bNnSbf369XrmMDLfoCZLxJw+FpEUiUhD8s+k/ZprrtHD6/r06SO6du36qqqqN1rRiEIIN+b0+/bte+aDDz64Yu7cuQpG7RhDxyL+Un0+8CK0EuNcwh0wzyXcjniMVMuO9/r9+/dnlpaWNpCplNBSY9cR/610HdGIQrwrBg8erGfWwnft3HPPPZ6ZmSlsNlsvVVXr0nX/psqpr6+v2L59eyH9fs6cOXpIMf3eyNrZFMkZiwBt6r5G25NRjJDafv367e6FkYc8Wg0CkiAzp6kkQSYJsnT3LMaZ+++/X/d5tNqkv3FdfD7f4draWrF58+ZO+F3iE8Wcg3HHqsMI72dzik055h5sUGFzEQqFfma32x+26lki3ac5CLIf/OAHqKE6+ny+3Oase7z39nq94qRH7fkZGRkvkvEXUoy+xN/xj2VzOzz7eLzlJnoeHqqox/hhLtO1a1fL5q+JPmsq50uCLBX02ta1kiAztz2biyB76KGHGqZMmdLd5/MVmFvDllk6lj+nDrW2trYiLy/P+kxCUaBplkFFCNElGAwuDgQC/fB8wRiZ8DrDuyCRZmyKIItENjFJYxeT7IUYxt5xxx2qzWbzZ2dnZ1hlUO7xeC5wu93LqS/KOSas7OaSmMDsA3KQnTd2cSdNmiTGjRunCiHetdlsk82+t1G+3++/68CBA89gHAw5iDk9E6t07WZH6hNGaCXqMbLyoRrEV+lkcoh7XS7X36you9/vH+J0OrtXVFS8vHjx4myIQXb08Z0z6h6PQpBnTZRIpd/n5+frIcU33nijnk2soKDgKJNzK+ou75EeBCRBlh4cG5ciCTJJkKW7Z7UkguzUmDH+5NxjEWMuYy8/qPfN9otqjCvhcYzDqNfxfkXJb7PZfpyTk/OndLdBIuVZRZAxDkMKUncM5tmwbMkHUQ0kjcIblh+y/e7YsUOUlZWpbHKiTEQBbyXZiuqfOQwKMgjoDh06NMtaxux2kwSZ2Qi3nvIlQWZuW1lJkLEOx9KJaB42SfABl4eCOOozh8NxlaqqkTP1WQxSswwqgUDg/zgcjv+HYgoPJn4OHz6spyCP17sg2dAzOib+SxBE1157LWqin2ZlZVW73e6nzcbeIOAOHz7c32azbcF7C+UcYYYQJOkiiMLr0Zhwof54NhBeiYoqPz//KbfbfZ/Z5GDjrEfz5s0TH374oYpqkJ1sVIPxtn1T9fuGilbVb5FI1Bv1GLvXhHfQ9r179+aeP7fb7b81u+0pX9O0mTab7QEjpBj1HMbgTDjTnbG0sdLM6XTqIS34rV199dViwoQJqsfjuTYrK+t1K+ou75EeBCRBlh4cJUHWrhbFx/vvv6/84Q9/0EPuzDpkiGXzK8hOEWSda2trX/Z6vd9555139HkX4XGVlZWWqH6M/oXNAePx8OHDdQUQSUC6du16X5cuXZ4yqw/GU65VBBn2HhA8EIRsVvHvlngwJyFpEsQXc3PmKsxdDh48qBNiJHvAEgXlPwRaIpEfqda3tLRUx47+wzzWSouQVJ89keslQZYIWm37XEmQmdu+VhNkKKf69++v3H777bqS2grlrbkIJl4661TWptgvMA6eGgunqKr6rWR5ZvMT0Z68WQiykzK6H9bX1z+GPBuCiMkaCiJ2p+JVxiRDkNEhaYDx48frHZKJ2e7du7NGjRplmTG9z+f7sqamxrlmzZqzUM6hICLUzqzDwAkFEXVn5/aOO+7QCTLCLD0ez3lZWVlrzLp/eLmapj1VVVV1Tm1t7YiXX35ZzxjXOGtnos/RODKU/hOpb/ACEk1IJi1CKzHnJzO52+2eZFVoZV1d3e/q6up+it8aSRnw3OOjGGkHP5n+HY04ZDFC29PnCWvhp2PHjue5XC5L2j3RNpXnR0dAEmTm9A6pIJMEWbp7VktTkFG/QCDwR4fD8SPmXmzMsUFFeBym/WZs0DWFabdu3fQFAoruiy66aH+PHj3q/X7/8Pbt21sX9xn2gFYRZMxFUNENGTJE9wLl3y3xgCBjTk5kAyQYfQSSjB8IM7zG+H0yG5up1Je5EbYgd999t06QseGdk5PTLGuZVOoRz7WSIIsHpdPjHEmQmdvOVhJkrMchhkgUOHbsWF1JZvX4ay6a8ZVuRHbBzZA4kOg+m822q6Cg4ESnTp3UoqIie2Zm5gcZGRk/i6/E9J7VLIPK4cOHv7dz587HX3/9dT20kgx+DLLRBtpIvkuxCIRIv8e3AGk73luQJAMHDmT3tKCoqCh95ldR2sdgQDVNE6TERj0EMYipKUan0YjBSAQQt0jUi4rshX369NHrjKkpIYYoqhRFGaOq6or0dqvIpXk8nqUHDx4cu2XLFgWCjBBDQkvTyZxHC1FkQspkinqz48jkVAjxjs1mu8qKunOPAwcO/Gbbtm0/W7BggUJiBvq90Y7xJqNo3K9j+ZVx36ysLKVdu3bKvffeq+A/duaZZ1rqOWcVvqfDfSRBZk4rS4JMEmTp7lktkSATQjhVVQ0cPXq0Yv/+/YVsUmHxgIIwkQ3KdGBFiAkTYqwO8INl47K2tjazZ8+e3nSUn2gZVhBkPBOLI1R0zL8It+TfLe0w5iPGvBx1GD8oxZiv8XcWdEZSKauen/kOeKH+f/DBB/UQSzY+MzIymmUtY3a9JUFmNsKtp3xJkJnbVlYSZMY4wLqcMZCxIF5xkLkoWF8633REHBCGrNMhDdn0INqJDbSCgoLXcnNzb7D+yRTF0kFFCJGjKEotO1Bz584Vc+bMUSGIkGw3daRKkBkTEkBH1m/4TzE5UVU1T1XVWivAD4VCvj179ri2b9+ue28RYsmuXFMT02gEWSLPS+ejroSV4tfAhHTAgAGzXS6XpYHP1dXVK9esWXM+WRshx1BSpZs1j0SQMRHnpWMSjnKOyVX79u31vm+FdNPj8XR3u917CEtgMWIQo4QVN0V2Nu73jesWiySmbD46hJXyobnlllv03frMzMyQ3W53qKoqEulH8tzmR0ASZOa0gSTIJEGW7p7VEgkyo44+n6/S4/EU4EPGRiVG6zt37rQ0TM6YlxH6TzbxCy64QEycOFFlQ0cIsc5msw1Ld5s0VZ5VBJmVdWpr92IuS/9gk+/HP/6x3m/IyG632y1dy1iFqyTIrEK65d9HEmTmtpHVBJm5tWl9pTMfYK1OlBtiHlR1cDaIWUjqU1NTMyk/P3+BlTWzdFBZsmSJY8yYMYHVq1fr2ftmz56tS7e9Xm/C7GlT5vyniA8dR0CHpUW+R7YbCBJUVJ06dTridruHqqr6T5bC5EMI0VvTtPUrVqzIJaxy8eLF+qQUj4dIyrl4yI9IjxyJVGFCgXIO9RBmgBAmhYWF7zocDkuM+YUQuUKIOV6v97IXXnjhmx1riFHqHsuYPpmmMXDgT+qOOT3ea5dccsnKoqIiT2Zm5sXJlJvMNQ0NDV3dbve+lStXKs8//7wyb948XTkHMRrrCO8HjclS49qm1Id8cAwjW/4844wz9rvd7jNUVbUsrDhWHeXv40dAEmTxY5XImZIgkwRZIv0lnnNbMkEWCoXe9Pv9BXv37r2Q+QgbVvPnz486H4mnvomew3jGD5t3GNUT+o+6ndDLdu3arXA6nWMSLTOV8yVBlgp61lzLXJ4FFIsmFGQjR44Uubm5JGG3dC1jTW0V1kfi17/+tT5nRFjAvNEspQnqjZkzZ+LPOzM3N/chq+oo7xMfApIgiw+nZM+SBFmyyKXnunAlGZwF8wI2QhD0jBgxQk8oqGnaNQ6H4y0rhC3UypJBxaiMz+d7eNeuXf/JZAz/i48//liXayf7wW+KJDO8qBhQmXzht4UpKiQZ/gWhUOhBu93+WHqatulSAoHA+ZqmLWxoaMjHcw3vKTL/7Nu3L+qObboIMnbcUE+hIMKc/c4771TBPDMzk0wR71hRf5/PN9Xlcr0OIQgpijkwAz3mr0Y7JdsHjOePprbi/wmpZKcRgsxms3UaMGDAEateMJ7vs88+y+vYsWM17c5Eh137eH07kiXIIIaJ6yasmIQELDyQrHo8nmlZWVlvWNHu8h7pR0ASZOnHlBIlQSYJsnT3rJZKkDVOmIPlwfz588Wrr76qGsmS0q3sbgpbQxWEwh1f2PPPP5+d4xVZWVmSIEt3p2zl5RGKhLqAOd2dd94pRowYoYZCoT/Y7fb/08qrFvHxJUHWFls1uTpJgiw53OK9ShJk8SJlzXmsfeEu2AxB3AF/0atXL/iLB1wu15+teArTCTJjMhYMBl+22+0zXnnlFfHaa6+pGzdu1DPhRJuIxUsQNXUeEy+UYxihEl4H0GedddZRl8s1PRgM7s/MzNxtBciBQOBXmqb9N+Gks2bN0hVUmJxa4flBiB1p1OlgkydPRrY40eVy1TmdzmVWkUSHDx++MBgMfkxSAsIL2amGEIuXJIrVRtFCD7mOPnDrrbfqJBFmiMFg8Iy8vLyvYpWZ6u/DsfV4PGvmzZs3nFAWEjLgQZdM3SNtkkYjFvE4KSoqUnr27MlEEuXgVyfVkvfk5OSUWaWaTBVDef2/IyAJMnN6hSTIJEGW7p7VUgkyo55CCLvP57u0urp6cllZ2b3MS9jEYm4Wj7o5nXgxT+natau+kTljxgw2Mj8pLCy8MJ33iFWWVJDFQqj5f19YWPjNhieWER07dvyx0+n8U/M/mTlPIAkyc3BtjaVKgszcVpMEmbn4JlM6AicSzI0bN065//77lX79+qEu97hcrqxkykv0GtMJMh5ICDG3urp62tGjR3Vzevy3IAkMBVG0h27KgJxropFjTLaMCRcSvdGjR+sGsKSGbt++/XG73d4uUaCSPV8IMToQCKzYunWrPvlERUR4JVk7kyFJEnkOwwSX0IUrr7xS72Tt2rWzpM2N5wwGg7VVVVWBZcuW6YbAhNcyAU/XEc2jDQUVBBHp1FGOkZSBybfP5zvD7XabTpBRv2AwuKympqZPRUVFJ4hRyMH9+/frYcXJKubiJcmQqOLtwk4rxOhFF1201uFwjEgX7rKc5kFAEmTm4C4JMkmQpbtntXSCzKiv1+v9wYkTJ/68YsUK5aOPPtLnJ4RzRbN/SDdOxlyOkAoIENLez5gxw19aWupzuVzXORyOhWbcs3GZkiCzAuXk78Hchzk8Gcjx0iUixOVyneNyuTYkX2rLvlISZC27fax8OkmQmYu2JMjMxTeZ0vnmI/bAg4woKNazgwYNqszPzy9KprxEr7GELBFCLPn666/Hbd68WSHEEAUR5vTJkgTRyDGDPDDiV5HsY8g/dOhQyBG/y+VSnU6nK1GQkj1fCNFVUZR9ECKEk77xxht6SnVM+skCFH7EUsxFI4IiPZtBLOLVgJ/HtGnT9MydZPtBVKWqaijZOiV6HQvP3bt366o5MlceOnRIqaqqSrSYb85vjFM0XHipIEd5sSDHLrroIq2goMCuKEo/VVV3JP0ACVwYCAS27d69+0zIUcJKUdARWopqMprqLdF3IhKJDDnIQgNiFOUkC7UzzjhjraqqkiBLoP1a4qmSIDOnVSRBJgmydPes1kKQaZr2fUVR/ko2beZn+MN+9dVXOkmWzgzTsfA1sjlCkLGpNWLECOZJU/Ly8ubFujYdv5cEWTpQNKcM+gbRACjib7vtNp0kw8Q5EAic63K5vjDnrs1fqiTImr8NWsoTSILM3JaQBJm5+CZbOt9+bLGIhDtlk1XZvn37tkGQkbkyGAwuXbly5VCyNmII+8UXX+gKqlSOcGKAvwMi/gSkTO3bt69uyk5I5bBhw3SCoLy8vFP79u0t9Z5qaGjokpmZuX/btm06KWgQRIRXNlaPxauWMzCLh0ih3vhOQRJOmDABT6qDNputm1UEmRBi4OHDhzetWrVKeeutt5T3339fJ8dSmXQ3RZAZmECOEVp70UUX6eopMCgtLf1TXl7ej1Ppc/FeK4Rwa5r2gaZpYyFGydq5dOlSZcOGDd+ErphFkFGuEVpJ3WHdUdEVFBS8oKrqrfHWQZ7XMhGQBJk57SIJMkmQpbtntRaCjHr7/f5XnE7nDZ9++qmyfPlyBTUZWaYrKystD7dkQ4sfVEJut3tKSUmJJMjS3TlbWXn4qbZv314nxSBPIcgcDked2+0epqpqWSurTtyPKwmyuKFq8ydKgszcJpYEmbn4Jls6a1q8tPGSR+zDBlppaelORVGGqKpan2y58VxnuoJM07THbDbbD1FPoaKBLMJ7zJDvQ2rEQ/Y0roxBihmpwhlASfeMSgqTV8IJ2W3Kzc3dmpmZucbv9/9nTk7O0XhASfUcw39q7969hUVFRRWYshNeh0E99TYIosYkSfh9oxFBjbGKpDwDEwg4wirJ2omSrmvXrmsyMzMvUFU1kGr9mrreqDsZKzMyMhYuWrRIfPTRRyqTboMgiidrZyzFXDTFHf8PUQopRMZO/Ld4sWw227MOh+MuM+tulK1p2g9tNttjhFNCDOI99vXXXysYIBuee7HaN5ai0LhXJKKYUFKIYT4mo0aNeiEnJ6fa7Xb/0CrPOSswPl3v0RwEGQQ739OxY8cGc3JynG0Re0mQSYIs3f26NRFkmqZ9V1GUwcePH/8e49aCBQt0O4g9e/bofqnJzNGSxZOsVVhioH4uLi6eUlpaKgmyZMFsI9ex8X322Wfrc9krr7yyavTo0XMCgcDTLpdrXRupYsRqSIKsLbduYnWTBFlieCV6tiTIEkXMuvOJCkT0gj/p97//fT1RSygU+rPdbn/AzKcwnSATQsxUFOWBzz77TFfRQJBBFhw8eFCX8GMGm6iiyIhLBTAGTnaWOnXqBCGmZ7VhIEVBdooo+rvdbr/bTBAjla1p2qxAIJDz5ZdfTkM9Rt1XrlwZNWtlJAKQ/zMmpokQJniPQRLdcMMNukE9IaYej+eGrKys16zAQQhxc0NDwz/q6+ttkENkbqTdjxw5ErH+scgwnrmxwi4aHqjHCCtlp5FdaBRULperxm63n6+q6lYr6l9dXT1D07SX2YF/++23dZKMnXhUk+leaITjQgiC2+3W0+ISXkn99+zZk3nhhRd6JTlmRcubf4/mIMjILEefkgRZetqX3bCBAwfqiVMeeughBvrCwsLC5OPOE3ysY8eO5bRr164W8gNfyD/84Q/6mGzWwfgMwYqilzEpLy/P0jD/8Hp98cUXS1atWjUOny3UUviimnW0FoKscVZL7B/effddfWOLeRsbW+ket5rCfPjw4XpiJWwhOnbsOKVHjx6WEWRz5syZ/rvf/U63AMEaw2yfWLP6Xlsp19gIJ4ED4TXMawYOHLi1b9++A9pKHZuqhyTITodWjq+O4QTZmjVrvvGJjO/qxM9iHf3iiy8iNujZqVOnPYmX0Lqu0DTtCZvNdt/atWuVxx57THnvvfeU+vp61NWtqyJt8Gkx68dX/sYbb1QeeOABpX///nAJjzidzv8ys7qmE2S1tbXtc3JyHBUVFVuPHz+ev2nTJt2Hix+8mQi5oxMaSjLjT2PhH06e8HeDHINRZOKNSgzFDIbkeFaEQqE7s7OzP23Xrp0NzzGXy1WhquoRM0GMVLbf7xeQfxBEL730kk4QoSCKd6IZS2EUrT6QgqinIInoTFOnTt1SWlp6maIoNaqq1liBQzAYfLGmpuYmFmB8YFHOQYainoqmgDOeKxo+8eIBQUQ/YFHPJHvkyJFeh8NRqqpqpRV1F0J08ng8X2/evNmNcnDRokW6/1ykuifzPJFwMDAzkjKQsRP1GEpKj8dTkpeXdyKZe8lrWh4CQohLFUX5oLa2Vjz++OPqr371q5TD1aPVEsIVIscgyMaMGdOmFWSQJdgAgClJZCAK4v1eJ9JTWgpBRh0hyH7/+9+fNgTZ+vXrl6xcuXIc32QIMjZtzDogyH7wgx/oaqiioqJ1+fn5w8y6V7rK9fl8Z3k8nq5er/cDMDI2eNjEtIosAjfMeG+66SbmMZYRZNXV1bMhyCCMy8vL9bmpVXVOV/u1tXIYg5jrMw4RWkNoZV5e3vbc3Nyz2lpdI9UnnCBjfIqV2CwVTPLy8pRHH32UTeWZubm5D6VSlrw2/QgYBNl//dd/KRBk9Aciksw6TjeCDGscRVFWrlu37pyZM2fqBBnvmyTIzOph8ZeL8AVuAwUZBBlzhEAg8EhGRkbrJsgMCLxeb5Xf78/HpB2iCAUZfzIJYacOkgyFDT+GqozJCaDAHBJCyUAJCYByjI85Cw1IMgghwivxHvP5fJcUFBQsih96c848cuRIYM+ePQ4mmBjfElZqhoIo/OkhT2BaMbMzCKKhQ4d+np+fP9ycWkYu1efz/WPLli23GuQQyjnM6eMlvyKV2lhlxjmNy4Mcw3/r0ksv1XefMenv3r27z2az8eEz/Tj1gfVgdowhP+0OIbxjx464FtpNhdzy8LF+D1mMcpLQWnZae/fuDe7t8vLyjpteeXkDyxAQQvxCCPFLiI1f/vKX+rfTjINBiYXJpEmTlDFjxpANuE0TZLy3BkEGuW8WKUDyFPwxUZD98Ic/hIhrFgUZYzC+kI888oiya9euuL5RyfQzxmf8pFCQQd7n5uY2m4Jsw4YNS1avXq0ryPBDNZMgo40ffPBBve4FBQXrcnJyWjxBRvt6vd7eGRkZO1GO0T+wh4BMTWSDL5l+YlyD+hsV2S233ML4bSlB9tZbb01nccQ8le+BYYmQSn3ktckhYPgKs+HJZidzGua2drv9K5fLdUZypbauq2pqagTfZ6IQ+F7X1NSY8p1mrCexE+Tw1KlTZ5605ZAEWQvrKhBk+/fvX/qLX/xCJ8joD6l6eUdba7HWIMHZrFmzlHbt2p0WCrJTa8qVX3755fmPP/64vnmIvYCZJGQL62It9nHYKKFPsmnW5giycAl/KBSqCYVCJzRN63iSAXRDkCFnZzLCn4SiMQh4vV59gQI5BvFBCnB+IMX4kEOEQJLl5uYCHPJPm6qqeZqmXel0Olc0R0uTkMDr9Za43e7KjRs3nli9erWdCSY7salkbmyKMAoPwaQTQR5eddVV+sQcFVleXt56p9M51Ao8hBBkCM0/qRp84qOPPpr25JNP6uQQk81Ew2ijPW9Toab0CbJdTJ06VQ8txXtMVVXVqvBCgyArKyvTVXPPPvus3q/jGcSihZnGq5zjvNGjR+uTSBbehNVmZ2cPUlV1kxVtL+9hHQJCiO97vd6/oCD73//9X9N2lZk0s1jle0LfOv/884PZ2dlt1oOM8QdiGwUZBBljkBkKEjZ18AjkPb3vvvv4NlpKkDFOKYpSi6qX8em3v/2tsnPnTr2uZijmsD9gwwYlFWHfWVlZzUaQbdq0acnatWvHsXlD8hRIH7MOvsE/+clP9Hrn5uauy8rKahUE2amFwoV1dXUfs7nFQoE/169fb5qqMrwNDIIMM/YuXbpM6dOnjyUhlijI3nvvvenMW3j/mbc0zjZuVl+R5X4bAcgxNnvbtWunK8fwweSbSVTIqf6pT+3aOm4oxf/4xz/qJDV9kvVRur/RzB1ZY4E1Y8HVV18tCbIW2LEgyA4dOrSUTVFC3+kPZmyOso7k3WP8evrppzFE71lYWNjmQyyNdeLGjRsrZs2aVcjcCD9OVGTyaF4EWItwEBWHLcmpDMZtR0HWGF5N0+4RQjzFy8hCBBIBppa/oyBjYmIoyACHDzgqMv5ERcbPqTDM92w228Tmbb5/3l3TtB/YbLY/83fUQ6jH8KHC38VsFpoJBcoEVEMoPkiFzcJECPEbu93+31bg4/P5+rtcri3U97XXXtMJIhh41GPpWmg29iKjXgaJhOySncaLL75YTJ48WQ2FQkscDsdFZtc9nIA7fPiwQJrLx5XFNgNYPJPsaOqwSN5r4RMkfm+QyJgak5iAXdasrKwf5eTkPGp23WX51iJg9LX6+vo3n3/++WuY0PKO8c1M1ztm1IjvLn0JNSaZYIcMGRLMyspqswRZXV2d7rsEQYaiinfXDAUJ32UUeRBkfKe9Xm+zEGRsRKGY+81vfqNs377dNMUc/kH0IYgifpxOZ7MRZF999dWSrVu3juPbjDfovn370v4CG1YQhLj/6Ec/0uvsdrvXkXEv7TczscCGhoZHjh8//h8oyTDs/+ijj/QNH8MSw6xbQ4Rgxo5fXadOnSxTkNXV1c1esWLF9Dlz5ujzNmwxZHiNWa3cdLlEi7AIYvyZMGGCGDVqlMrmOKxY8zxR89y1vr5eQFIwp9y8ebOueE03QcY4z+YyG+qE702YMEESZM3T3E3eFYKsvLx8KQpXsgwbFkXpflTIMdaSqHhRFJaUlJwWBJmBY1lZWeW8efMKGO+wgmLMk0fzIkCfhCtCQYb4p814kEWC1VjkCSHuOJmJoIiFHQsR/gz/Ma6F/BXNr6kAACAASURBVAn/ASj+rShKpt1u/5VVCqFYXSQYDN4thHh69+7dClk7X375ZT00AXIsHpIkVvnRfm9k8sSLDYJo/PjxYurUqRBE99vt9sfNxsco3+fzzT1+/Pg0djdYfKCiMkuFEY4FBBE/hFaStZPFZ4cOHV7Mysq6JVlME70uEAj8X4/HU7B69eqHmGCvXr1an2DH8jGKN/lCtOfhXUBJiSqF+Gx2W1mQBoPB3zqdzp8nWg95futAwOv1zp89e/ZEzERZ5LOznG4yh0EJYgw1JovWM844I+h2u9skQaZp2kybzfbAwoULxe9+9zsVwghFWbqUr+G9ioXIhAkTdOIEtWtdXZ2lBFl5eXluSUlJjdfr1QnBhx9+WNmyZYu+SZXucYrvG6Hfd999tx5iSbiUoijNRpAdOHBgyd69e8ehinr11Vd1IjTdB99kNvNQXbLbSYICp9O5zul0tiqCLBgMkuDoTlR2JNphTOe9ILSH9yLdC3WjHZjDQB7zbpDFsmvXrpYoyDwez+xNmzZNJ/yWxRGqOeYv8rAGAcNOhc1v5jPGN5KFekFBwfNut7vMbrc/bM3TtIy78I1ms9noj6wn0r0RxjhP5AX2HGSIGzNmzMysrCwZYtkyusA3TwFBVl1dvZSwR5K+scbAKzHdBwneevXqpXsY//d//zfq59OKINu7d2/l0qVLC4j8YixARSaP5kOAOWTjLJYIgdpEFstosJpN2jRHc/p8vhmVlZUvE7qBgojdecPHwqzJJPVkMk5oJRNyzNmZXBYVFV2VnZ39DgIr7LrMxiMUCq1WVXXEJ598It5++2111apV+i6ssWiP5T9mPF/jrJ2N/z9SPYxMpoSCQRLh/VJXVzc+Nzf3Y7PrbfTj2tra4x6Pp/iVV17R1XOElhJWG05aNLX5GQmfaGGXjclBPhYQGBjYTp48mY/JNkVRRqmqallmPLNxluV/GwGfzzd/4cKFE1944QV9Zxm5fTrVDob/y9ixY5V77rlH9yLr0qVL0OVytUmCDHQ9Hs8vt23b9os//elPejiZWcrffv366UpPCDLwraqqspQgO+lfZ2PzxGazPfbxxx8TwqOyU8pkO519SGfC7HaF+qKkgiBj4t2cBFllZeWSysrKcZA9hNKxiZHugwUnNhC07f333y/Gjh3LZtVOu93eN933MrM8IURxKBTaaLPZSlevXi0+//xzFWKRhRnqw3T3FaMuZCtEBU9YXXZ29pQOHTpYQpCdTFAwe//+/dM3btyok6cLFiyIyx7BzDY4ncpmEYRKDKKGaAA2Z0jW0LlzZ+ZRUxwOhyX9oCVhHgwGBWsJCBH6IwR1ugkyCEnUemCNavOcc86Z6Xa7JUHWkjqCorApMdbr9S4l3Bbihn5BGHi6D9ZTrCfIXM7cz+l0nlYE2fHjxyu3bNlSsHz5cl3kwjvHYeYaPt1t2JbKYx1M+DcbrQhg8Cbt2LHjnpqamnPz8/MrzKzraSVXNgvIU95bPq/X61m7dm0m4ZVMIll0xOM/lepz8UFjEoHPC52H7COKopSoqmpZ9sJQKCTwtGEQJ7QSgghykI9KUyqpWN5bsQgyru/Ro4deZ/xtxo8f/2G3bt3I2olKIZgqtvFcL4R449ChQ1NQI6Camzt3rp61M1J4ZLTyYmX3jISDkeGJiSThlQxqgwYNOuJ2uzvF89zynNaLQCAQmL9q1aqJhF4wkH/xxRdpDeM2El5A4rCrDAlbWFgYdDgcbZYg8/l80w4ePDj3+eef1zMcfv7552n1jjSUvpCNeI+hLOrTp4/lBFnYt+Q/TmbbfYTMZZj+onxOp6eJoaSivoTuUF/GquYkyLxe75JAIDCOcQoilDY2Mmen62vAQh8ikPqSxbJfv36ZiqI4VFVtdWYmQohsRVGCmqZ5GdPJSg127KqjWk3nwoH3g7bAZ4SQXDb8VFWdUlhYaAkxEgwGZ1dXV08nodIzzzyjoARHRZquDNTp6l9tqRxDNcZ4g2qM94YIAFSEJN3q1KnTepvNNvTzzz93Dhs2LNCW6h5PXYQQENMKG85svjLOG/Yz8Vwfzzn4OLOpTgQGmxh9+vSZ6XK5JEEWD3gWngNBpqrqUuYmiC/4PhkK6HSSNyTVYZPC8Ay12+09MzMz27wHmdGUdXV1lceOHSMaSN9E451DSZxudb2FXadV34oxgnGB+QDfqEsvvbSqXbt2hVZUShJkaUBZCJFB8idUHMgyn3vuOV19AEFkRohO40dmIsHuD9myxo8f7+vcuXOGqqqWEmTHjh0TEILsakAQ4pVghCdEIn8iKcUS/cgbXi9MpmCWkQT37dv3vaKiIks96YQQ769Zs2YCvjaffPKJvtjEdy3eI9kwS0IrS0tL9XZnUQFRWFJSUuZ0Os+M997yvNaJQDAYnL9jx46JDN6EP9H3UHWk62DHhu8KA9JNN93U0Llz54DL5dLsdntxuu7R0srx+XzXNjQ0zEEBbHhU8R1L1wIZpS/KIsIMv/e97wVGjhzZkJeXl6+qaoGqqtVW4yGE+OHBgwcfe/3113XDeibe6fTbgCgiuzQhUhBFI0aM8Njt9kybzdZsIZa8N0KIMUuXLs37+9//rofR0cbpVEOhgmGhyaKTcaljx46tfp7l8/kC1dXVvuXLl2fTV1iwE5bL/CYdod1GGAV95s4772Q807p37666XK6rTnq3zbfi3dA07Tm/338731HICDIHfvXVV8rRo0fTrtqxoj4t/R54X6G2xBICdQBE+oABAwjl5/9qCgoKqnJzc7u3xWiTeNvG7/cHysvLHfgAElrHNxpiOh2hv8b8GWKScGbUY2BfVFQ00263S4Is3kay6DwhxChN0z6FwCfkluiBTZs26Zta6Vhn0h/Y1OJdxBsVwQWZLL1e72lFkPn9/n319fX527ZtywNj3jk2D6VZv0UdvdFtGCdIGMH3ibnz2WefXZmXl1dkxdO0+ombFSDFuseOHTsyunfv7mWyze7q3/72t7QuVqPd31AoseOGgogMhiUlJT/p1KnTH2M9c7p+f9J3bIDL5crYuHHjOj7aEITLli3TPyaRiJ/GZvTJkkM8f7g5PQswFvRZWVmLXC7XJemqX1PlCCEKGhoaegshnliwYMEIJjCE7LDgwjQ9kSNRHDgf1SDKuUmTJok77rhDZRfWyqydidRPnpteBILB4IdVVVWXoORA8WSoFmN53sV6CuObwrtkhGwXFhaOHz16tB6u3JYXK8Fg8Hq73f4qi2JMyV966SV9hxYVcDpIANRTKPEgTq644orZF1100fWx2sPM3wshrj5y5MiL27ZtyyF0DqKVjZ10Kaow+iV0hw2M733ve/hCTlNV9Q0z6xTje/1N5ruysjJB+ARjFSQzGxqJbtA0vhfvDpM5sieTgdHwXMvKymrV8yzjnT948OBQl8u1jvAeyCP+ZJxPRwIiFmYs1BnT8Ku79tprPykqKrrQqr4S5ov7gqIoNzOPgySHCMQMG0IiHd8Aq+rTEu/D+2GoaJm74XWEeolwSsz4UcLzvQg342/L402sNgrrk4J5JRvvZN/Fh8xQb8Yqo6nf0xaEV+I/dscdd+jEdEZGhjczM/NHqqo+mUrZ8lpzEPD7/Q84nc6Z9APIG/ye8YRMR6QSYxcbFBigY4mAiox3VFGUXqqq7janRi2r1PDvDQkymFsjejA20tK1Wdqyat1yn8YYJ1Dj33///TqB36FDh3qXy0UmdtOPVj1xMx2dGDcIf5n279+vv0x4BcA4M2lMdcIdq34MbkwwYPqZkLOgxZw9NzfXMnN2QlYyMjLGoULAtwPvHj7Y7MhHyjhJnaL9f6z6hv+eMpAC88JQf9hl1FSqqs5wOByvJlJWsud6PJ5xbrd7CV5rLC4Jr2S3mR2dRHwi4iHHIoVrMqHEqwVi9Mwzz/xHdnZ2hd1u/3Gy9ZHXtR4EhBDX+/1+vZ+/+OKL4t1339V9pJg8p/LdMRYwkBrTp0/XJ0l2u/3qzp07v9160EnuSU96EJ0lhHg3IyOjNwQZ7/TatWuVnTt3pmXHHnIMj0DMp/v27Tuvd+/eU5J70vRdVVNTMzczM3Ma4RqQrJBFmLKnsiNNH0Ith/fYlVdeqX+f+vbtu61Tp07Xqaq6KX1Pn3xJJ06cECh9UUMxduHlwqZGKu8OahjGIDYtGI9HjhwpunbtCinXJuZZHo9nvNvtXgRhBIHEhhh/Z7xP5aC/sDBDBc9YTgbLwYMHr8jOzh6TSrmJXmvM5zRN+/3Ro0d/gjoDkow+QiKUdKorE322tnA+ix1U7yQp4VsIMcPf+RPVCuHm9ANN09612+3Xqqqa2C5jWwCpUR2EEG5N0173+/0T33rrLfHxxx+rLNgZk1I9+F7h98Y8cuLEieLKK69UA4HAepfLNfR0JiZTxdXM6wOBwPl2u/3dHTt2FPNdQpBAf8DSJdUDH+szzzxTj8TBy5l+oWnaJ3a7/ZrTzc+4srKyoKCgoHLTpk1i1apVKr5vjAes7xIVP6TaLqfz9Ww2snkCQXbllVeK3r17q8Fg8BdOp/PXVuDSJiZuVgAV7R4ej+e5+vr6orVr115FyAZkCRNGQ8kRD/kR7/M3Vl+x44rSA3N2PmjdunXb7fV6x2ZlZR2It8xUzhNCXFNZWfnssWPHCgmrxJ8ExUW6PRIaP6PhW8HHnPBCzCSJl8/KyhpHjL4Vg3soFHrP5/Pl7d27dzQDFTs6+AI0luHG0/7xEIbhbc/Ehp0dTIwJrUSpUFtb27d9+/Y7rah7Kn1GXps6AkYbBwKBy0KhUO7WrVvn4EVG6m8IDkKEElV1GMRYfn6+TjzzXkGQMVlqaGi4Ojs7u80TZLQMJJnL5eq2cePGeStWrMhks4NdWiZG7NImQqAYigmUnSwM8QiEyGewz8nJmZeXl9fsBJkQYriiKEXr169/n/B4dkqN1OaoZhKtL7vQTLQ7deqkT2xQNqOYs9lsf87Pz38g9d6fnhIwv0Z9ic8IGxtGdkYj43Qi9Ta81ghLNsyuUfUOHjxY1TTtuw6H45n0PHXzliKEKFEUZWR5efn/bNiwYRjeh7wfmNqzKWQQjPFiZ3xzUFYyEeabc+211+p/LykpWeF0Oi0lyEA3XLWDbcSyZct0QoLFEcpS+gc/KAmkouxf/dEI1+P9N7KK83fj30biCt4RiDCIGXxlIMdQjBUUFOBzd5nT6SyBAFBVtaF5e3vLuTsexxUVFc8fPXr0esOsn40bVK/GNzred85oJ77RtIWRMRZSum/fvpMURaljDt1yai+fpDECQogzjh079unXX39djAKazbyysrJvkoIlogA3wipZTxDqTD8gIuncc88tO+uss36kKArJ1yzzsm4prS2EcJwMb/75ye/W/8ecmvk1f+LDCRnJeIcIJNWIjZZS35byHMyljPUt4h/UjKxvhw8fLsaMGcN86haHw/GiVetcSZAl2TOMBiovLz9y9OjRDiwuCNngQxVpYZHIAHZqovatJ2tMjvFLJhkoiMiWdd555x1r165dZ6uM6U89438eOnToYcghdpP5k4VkvHVNEnr9BWLByeB+++23s2MvevbsaelOPeapkGGQEmStRDnHIsvwsonUXtHq25SZfyQs8fVhB5bddrLh8fdAIDDE5XJ9mSym8rrWiYAQwu7z+YIQ80yWWMzRD1GSJXLwTjEgscCHwEHNgf8EJLymadMcDkezhcYlUo90nVtZWam/34sWLRKLFy9W8YAhzCXRRTGKCMgiJp1MPiEc8doJBoMfOJ1Okom0iMPv9wt2Sz/77DMV1Qz+UvhuJFJfvmMQrCx66UOnlEC6ylfTtFkOh+OOFlHZfxIhembn7du3i82bN6t8xwkZxN8FgjkRBTAEKEoY2hWSZ/To0WLQoEGoMe5wuVyzWkqd0/UcHo9nkaqq41kwgBsEMn8Hu0SMjCFSWKjznYFEZRJ84YUX4jtG++jm7Ol65kTLEUJcpCjK4urqap0ApH7GGM97wf9LJcG3UaXdeP/xWSwqKvrmByKGcYSNF+YuEGOcx3hzKoSLgnJbYxKLRPtVsud7PJ6fud3u3zAOQUoT+ssP43yi32gWoYzzbGBccMEFYty4cSrfr7aidE0W49Z0ndfrrVBVtXDNmjVi5cqVKhtbbFgwdiXyDWaTgm8wqmc28OgPfINPqsa+LCwsHNKaMEn3swYCgQscDsdyvvVYT0COMbdmbkTmeJT2VVVVpq93012vllweUXHMlxH+8I2iXw4ZMkT/0+PxXJuVlfW6lc8vCbIU0D5pmvjh7t27L2GgghzCxwX/qUgRFfGSRtEUR+FlMsAxKUcCi18HHahz586Hc3JySlOoTkKXol5xOBwLWZSzA8+OFgtIK4wM2XFmQCdU6d5779UnXKeyhGkJVSKFkzVNE+wo0+7/+Mc/FBI08LE0JivJEmSN+054vzGIND4cLLhRkA0ePPjZbt263ZVCVeSlrRgBI4MuEyMWcUyU+BMVEAs4yHpjp4tFv5FVlokRPyxq+JawqCE8zAhzIjwuOzt7WWZm5ndaMTwpPfquXbvys7KyqubPn68n3uAbx2TJMMVlIsr7bpApBqaoJggxZPHH4tAgszEa5buVm5vbIsddSCMWYHzT6EOoZuhX9CH6kqEMNr5J4fWlD1FfPKTY9SO5A/UtKSnx5OTkZKXUECZd7Pf7hzudzjXsCLPoZJeYSTBjuEGA0L7hu8ThPkq0s9HGkIAsONntxFMpFAr93G63/9akR28RxXq9XgFpZJDzjP+oWozddcJ0DTWDgRtzF4gx3g9IFEgTiFTGcgx4q6qqctu3b9+isn3W1dWt3rFjxwgWRrwfbIKWl5fr74bx/hvf1hbRMGl8CGM+Ev4n772hROLvtKmRUZs2RREGIca3Dx9CSDG+C/xfcXFxg9Pp1I2N5JE4AhUVFXv37NnTjfeOTenwd67xN9oY62kbY0yCDGH+zNqBzRqIaZSa7du3X5H408grmhMBRBqapoWYl7BJwfgFaRM+Zod/n3hW4301+gNENe8nfYHvL9/itpBUJp3tomnabJvNNp15AUQZ5BiZZSGnjZBLvv/GGBDvWj+dz9haywqfF9An+TaxwUqyFpI7ESVWUFAwOzc3t1n8elvkRL01NHYgEPi1w+H4OZJnCCJIMsILE8leGG89GyuMUE8RhsAuPQRRly5dtufk5BxzuVyWLGbr6uo6ZGdnHzl8+LD48MMP1aeeekr3RGBRwaQ4kiIqEtFD/ZsihKLhg18FH3S8bS677LLDHTp0CKmqioTMkjTgQohehw8f3kX8Pz8Qo6SDh4iIlLGTeqTjo2mELrAImzZtmj7J6dChw3OFhYV3xtuX5HltDwEhRAefz7ehvLz8+PHjx/t+/fXXGQzkKB0II4MACF/wG4tU1E0sYhiQIHFY5PNTWFhYVlBQIFwu11qHw3FL20MsvhpVVFTkCyG2Hjt2zHHkyJH2kOCQ4obMHkKccCsWJsYikR0wJp3sgoErAzxkY/v27Q+1a9euKjs72+52u1tkltny8nJUHNsPHDjgPnToUBHjGX2IetOHjOxpfOON8Djqa4TIUV/6D32JHcDs7OwdGRkZ9RkZGefEh7i1ZwkhBgWDwYV+v7/i+PHj/ffv32/jvWEso94oonhvCK01yEEjnJIxmHrTttSVn5KSku14jpWUlKCwut+qMABrUfvX3fx+f9mJEyeCx44dKzhy5EgpuEEegR0LB94PY0w0cGOBDmnC+0GondFf2rdvf7ygoMCXmZl5ZktTEvn9/tlVVVWDjh8/LioqKnKCwWBX45tK3+AbYGTzTMc431ztGem+BhlmfN+MP9lYMX4gOxlLTvqf1mqati8rK8sGYc7/8X3gT9qdv2dmZnqbUxnYkrBN5lk8Hs/i2tra0urq6jN5z/he8Z1msY6PIt9oxiMjBJg2Mr7RjPV8r1h8slFTWlpaW1xcXJWRkTElOzv782SeR17TfAgQPeD1evdUV1c7Tpw40ZF5CX2BPoHND99g1qN8owzyhv7A+8iGKJsT9AUikXr06MGGxd6SkpJQfn6+rjiQx79C7kOh0Acej6cr84ETJ06wiaZ5PJ4+lZWVbiNRDWOAsSmUiAL9dMXZCO81vlHMqdhgcbvdBwsLC2vYUCksLLS7XK4FbrebcF/LD0mQJQE5Xhy1tbWz/H7/JMz7nn32WV2Gb/iXJFFk1EvCFWXGrh3kGGw/4Rzf/e53Wazo7WjVhLy2trZdZmbmMdQq7FpQf3ZUjaMpgiySsipekszYCYNZxvyZEMOsrKwb+vTp81o6MW+qLI/H8x232/3J8uXLxdtvv62H5qDWiZZ2OxElWVP3pRxCEpjk4DmHCTQhPTab7ZWMjIwbraq/vE/LRkAIsePEiRN9mByxWGWyxK4ig7qhJGPRYyh+2D1kodq3b19x7rnn8h1ZparqKKOWVn1TWjKqJ6Opf6Ioyu/5xqEiwZicxQiYGt5LjVUUhhE17yjKPEVRMJ3W5eEtHVMhxKOapj3IootJN/3I6ENMtg2CDMKeyTaKETYtUPKiHqNPKYryuaqq+Ju1+PqeesZfKoryCzZ9vv76axWyh3eHBSeLDIMgY5eTdwdyjHqj5uXdwTw2PESppbdxqu9beP2EEDMURXmZBTu76/QZyEU2jQxfMkP1ziSY/oHfDeQY/eVk1ryak9+dCaqqfpbqc6X7+sbtKISgc38WCoW6Y9rP4oh3wlDvtEWCLFx1Eq5Gghhzu92ioKCAcQP1/g2qqs6N1QZt/d2IVf9kf9/ondNDxEkOtn37dtUgyRiTjHUIJJlBVPKtgpTmfSOkGYJEUZT5qqpemezzyOtaBgJCiAGY6bMuNTbw2NSCJGOTgjmKkX2Rd9bYpGBegsqb8DVIVEVRzlVV9Qv5fn67XaPh4ff7N9bV1Z3NGGDMA5kbGWqyltE7Wu5TGASZsRaBHGNzWVGUq1VV/ZbncXP1SUmQJdF/hBAXKIqynNAbwlH4kw9SvDL7xgRSpEeIFGppTFQY4PDewuvk7LPPpg0zVFX1J1GVhC4JM7B1Hj582P+3v/1N9z1C4hseWtlU/aIRRvEQSXzYGeghBjGnP5W1867s7OxnE6pICifX1dWVeb3efqjGCK2EHGMQihX3Hy10lkeJtz+g0EA1Rv0Jr+zQoYOXvuhyudalUCV5aRtCIBgMXm6329+jSizaDIVT+MAdLms2dv+ZIPl8vg8zMjImy+xh3+4QvO82m+0jp9PZjW883zqwNVQjTD4NTI0EIsag7/V6q7Ozsx/w+Xwr3W73jtbQ1VBWBQKBT5xOZyHftfDJnxGyEV5fYweQcEOPx7PP6XT+0ul0vqmqamUrqS/clsBQ32az/Q2Sg/fGIAONb3t4eLKh5mXTAtLM5/P98Z133vmP6dOnWxbm31KwPZmoqJvdbl/gdDoHQsKDGxtGxjfHGOMM1eEpYkVflAUCgZDT6TxPVdVWo2DxeDzdbTbbcpfL1bWltEFzPofX673L6XRWOhyON5trIdOc9bf63mAcCoXu0zRtlNPpvJHvk5E8Inyc53tlbNwYYc18o/m/QCBwi6qqx5xO5wdWP7+8X/oR8Pl8A2w222cOhyOHbzD9gW+wYQMRbotgGKHzHWb88vv9u1RVfdjpdC5QVfVI+p+ubZbo9XovycjI+LBt1s76Wvn9/hMn1eM/CYVCy91u9y7rn+Df7ygJsgRbIRAIlAUCAfuuXbt6z5s3TzepxYODnZt4j6bIkvAyGhMnRkgU/lN33XWXnr3xZJjDDS6XazYT/Hjvn8p59fX1n1VXV2evW7duIMoxvBBQFxjm9LEIn6aIsFhEETse+LsQWjllyhQ9hCkUCn3fbrc/kUqdErn2wIED63bv3j0Ugmzu3Lm6yiAVYjSevsDCgsGMuhuhlYMGDQrm5uZ2U1X1cCLPL89t+wgIIQbDuzJZjvc4SWrYFEXZo6pqRbzXnE7nCSG6K4pSmCCmQFSvqmqrIMbC21MI0UdRlJwk6lutquru1to3hBDnBgKBREkuh9Pp3GBlgpyWhq8QorOiKO0DgUDc8xAW7fD4qqpua2n1ifU8QogeiqIUcB7vCHVJ5F2JVX5L+v2pdvqmno2ezX5ShSQ36JqhwYQQeYFAoO8p9V7cT0B7qqq6Ie4L5ImtAgEhRD9FUbIS+Q6dercrVVVNLKtTq0DE/IdkMxFrt9NhHDATzVP9kAy6O828T6JlS4IsQcQwMiZ8CdNmCCIURPwbxj7aEY34iUc1FV4mEmnUY3iPXXPNNXpolNXZC48dO9awc+fOzCVLlujea4SioKYIJ4niqS/1aiocIRJxRLjS1KlT9aydAwYM2NKxY8eBxOGrqprogibBVv/X6Z999tnnS5cuPRfvOZRzhF3FIvaSvtmpCyHHCOmBGL3//vt1XyOUdE6nU76/qYIrr5cISAQkAhIBiYBEQCIgEZAISAQkAhIBiQAqA4lCYgj4/X5BBgtCC19++WVdQYSUtalUy/EQRrHIIlREGCpeccUVeohdr169nu7Vq9c9iT198mcHg8FZdrv9NtLcUncIsk8++eRbWTuNOkQit+L1GTOeMLwMI26ekMpbb71VT0dcXFy8NScnZ0DyNYr/SiFE/5MeQlu44sMPP1Sef/55XTWIATrhJGYRZAYGmBpjroo5/x133KEbauoxQULof8RfE3mmREAiIBGQCEgEJAISAYmAREAiIBGQCEgEJAKREJAEWZz9IhAIjHY4HJlHjhz56I033lBQEJEanmxGhgFinEUlfJphhgxBdNttt+mhlZmZmbPy8vLuSLiwJC/w+/1P2u32eyHFXnnlFQWD/n379un+NI1JrfBbxDKtjUWc8XsMRTEXJSX1jBkzSBn+ntvt3udyue5LsjoJXebxeHq43e7dkIMQZC+99JKezY66x/Iea3yjxvU1fh8JJyODFIqxSy+9lHYXl19+uWq329c4HI7zEqqEPFkisfyv8AAAIABJREFUIBGQCEgEJAISAYmAREAiIBGQCEgEJAISgagISIIszs7h9/u/cjqdfVeuXClefPFFFRUVWb7CCaI4i0r4NIwUe/furSuIIIjOPfdcSLnZDofj+oQLS/KC8vLyJ+vq6u794IMPdOXchg0b/i1rZyTyJxZBxuNE8+EyslzgNUbGSgiySZMm4cdlWdZOVFqBQOC5qqqq2yAHFy9erCxYsEDPYkfd4qlfOOSRwmqj1d9QzpGxdPr06Xr9i4uL5+Xm5k5JshnlZRIBiYBEQCIgEZAISAQkAhIBiYBEQCIgEZAIREBAEmRxdou6urp1J06cGIop/xNPPKGsXr066XSuiYbkkRYdYgiC7IILLgh27dp1rKIomCFvjfPxUz5t48aNj+7cufPB999/XyeJSOnOkQxJFO/DGBnhhgwZojz44IPK+eefrxvzE1cYbxmpnBeWtVNs2LBBPPfcc+pnn32moCSrra39puh4jPaNk5siAw08jXNJedu1a9dvQisx6ff5fJPcbveCVOolr5UISAQkAhIBiYBEQCIgEZAISAQkAhIBiYBE4NsIWEI0tAXQ9+7du279+vVD8d6aP3++smtX8llI4yXISB9P5kpC7G688UZl1KhRGPMHCgsLXVZgigG+pmmeYDBYtXnz5tw5c+a4CSvdtm2bUlFRYZr3llG3nJwcnSCCGLv77ruVQYMGiaysLPgxy/ptbW3tiePHjxcRUjpr1ixly5YtesbSeLN2Nm6nRAiynj176sb848ePV0aOHLmiX79+F8NJqqrqt6L95T0kAhIBiYBEQCIgEZAISAQkAhIBiYBEQCJwuiBgGdHQWgFdsmSJ48ILLwyuWbNm/RtvvDFk0aJFujF/ZWWlqVWCSMnMzMRvSxk+fLhy++236xksc3NzgxkZGXp+dLMPCDJFUYKQYRBEjz76qB5aWVdXp6f8jhZeGC8BGOu80tJSBd81snZeccUVgR49elDvElVVT1hQ9wxVVX1Hjx4VGPITXvn666/rvmvJes41Vd9w4sz4O6GVeM6RtbNjx44fFxcXjze73rJ8iYBEQCIgEZAISAQkAhIBiYBEQCIgEZAInI4ISIIsRqvX1NTcmpub+4+FCxcqzzzzjEKIZU1NDaFupveXdu3aEVKpm/JPmDBBV5IJIVbabLbRpt/81A2EEGLNmjU6QfSPf/xDN6cPhUJNem/FIr6MZ492nt1uV1DPnXXWWcrVV1+t+48VFxf/3z59+vzKqnoHg8FFdrt9/KZNm5T33ntPrz9htakQo/ESZBCj7du319v9lltu0ZWDNpttudvtJrRWHhIBiYBEQCIgEZAISAQkAhIBiYBEQCIgEZAIpBkBSZBFANTwntI07UeVlZWDDx48eAvZC2fPnq18+eWXuoIIkijaEY0IiZWxMZw4wn+LEDsURJBjkEWZmZmv2e32G4znS3Nf+FZxQohbA4FAfnV19WPz5s1TCC0lc+fhw4cTNqan4ER8ujCnLygo0JVzN998s3LJJZdAED1cUFDwMzPrHF621+ud5/f7r0Y598ILLyjLly9XysvLFa/Xa+ojgFNJSYly3nnn6ab8V111ldKtW7eZdrv9a7vd/hdTby4LlwhIBCQCEgGJgERAIiARkAhIBCQCEgGJwGmKgCTIojS8pmmv2Wy2644dO0ZonViyZImKgmj//v0pe2/FIosgiCBJMGX/7ne/q5MkHLW1tSV5eXmmhxdyL6/XWy6EKFm3bp14+eWXVQgisnaGm9Mn885EqnvjzI6QYwMHDtRDC6k7oYbBYHCm0+l8KJl7JnPNkSNH5h08ePBqiME33nhDDy3FdwxyNNIRKTtltPtGa39IUZRzEKNkraT+I0eOJKzWsqydyWAlr5EISAQkAhIBiYBEQCIgEZAISAQkAhIBiUBrR0ASZFFakNDC+vp6paysTPnd736nq6eqq6v10Mpo3luJdIamSLLCwkLl7LPP1gmSSy655LOxY8de5fP5CjMyMnapqhpM5D7JnltdXb37wIEDPcja+NRTTylr166NSQzGIv54lsZEUiRVHcb8hFaStfOcc86p6t69ez9FUUJWeI8ZeG3cuHHOmjVrrv3oo490/zWI0ViEV/jvm/Jna1yOcS6hpSRlGDRokPLTn/5UJ8cItbQyKUGy/UVeJxGQCEgEJAISAYmAREAiIBGQCEgEJAISgdaMgCTIorSex+MR27dv14mh559/Xlm/fr1OjsXy30qlM0AWQZL06NFDmThxonLppZcq/fr1W9K3b9+LUik3kWs1TfuJzWb7/YEDBxQyVuK99f777yt79uxJpJiEyCTjZNRTZK6EHCRrJ/5rnTt3rigoKChOy83jKMTj8VzgdruXQwy+9NJLyrJly3RjfshRMwiycCItLy9P95mDGCO0tH///jphJgmyOBpOniIRkAhIBCQCEgGJgERAIiARkAhIBCQCEoEUEJAEWSPwhBAdFEURFRUVR/EdI8Tu448/Vnbv3v2N71g6FGSR2gxyzO12K0OGDFHuvvtuZdKkSfx7SU5OjuUEGV5rr732moKCKp1ZO5vyYcOcnvDC888/X7nrrrvAYbfL5aq02+3nptDH4760qqqqMD8/v4LMlStWrFD/8pe/6Mb8ZOyMFloZd+GnTmwqFLNLly6639z48eP10FKHwzEgIyNjqxWec4nWQ54vEZAISAQkAhIBiYBEQCIgEZAISAQkAhKBtoSAJMgatWYwGPzIbrdfjHrslVde0dVTEEQVFRXfnGkWQQY5ZhBEN9xwg3LxxRdDzKxyOByjrOp0x48f/6GmaY9BDM6dO1c3pydrZ7rM6aMRZPx/UVGRrpojtPLaa6/FqN8S7y2DgBJCOBVF8dPmKOfefvttPcQ2ne0dKQzVIEZJxHDTTTfp7T5gwACa/HxVVT+zqu3lfSQCEgGJgERAIiARkAhIBCQCEgGJgERAInC6IiAJskYt39DQ8GZNTc01KKieffZZnSAjtJKfeDy2EulI4dku+Xt+fr4yZswYPXvhZZddRubK+xRFOaaq6puJlJvMuUKITEVRHj127NiALVu2XLB48WJl4cKFujk9R1NZO6PdL1I2z0gEGeb0JCZAQYVyjKyV55xzjnL06NGcjh071idTn0Sv0TTtd16vN7+ysvKeWbNm6QTZpk2bFJI0xHs0rhvXxUOuoZzDa4xkBNQfklDTtEV2u/16K33X4q2nPE8iIBGQCEgEJAISAYmAREAiIBGQCEgEJAJtDQFJkDVq0SNHjry2Y8eO6zDlnz9/vrJmzZqkCaLwopsi1yCIXC4XflvKddddpyuICLMsKiqypH3CFFQCM/rZs2frYaUbN25UDh48+G99PlpdGhN+xoXhJFGkEEOUc6WlpXrmyttuu01ceumlanZ2NpfnqKpqCUHm8/k8VVVVbrzm8JxbtWqVTo41NDSk/Z1vTBxCjp133nl6UobJkyfjO7dWUZQxqqr60n5zWaBEQCIgEZAISAQkAhIBiYBEQCIgEZAISAQkAv/OdUhM/olAIBA43+FwrNy/f3/wnXfecaAcQ0XWVPbCeLFryneLMjCnLy4uhhhR7rvvPp0ga9eunaXm7MFgMOTxeNQtW7Yof/3rX3WCrLKyUvF4PAkRZJwMIRbNayvS/xcUFCjnnnuuMnr0aN2cv1evXv/H4XD8xUqCqLKysnrbtm15mPMTWgs5GAwGv6WcS4eCMLwM/g452qdPH50YRTnXu3fvr0tLS3vH27fkeRIBiYBEQCIgEZAISAQkAhIBiYBEQCIgEZAIpI6AJQql1B/T/BJqamouyM7OXr5ixQpdQYU5/dGjR3X/rUSPpkILI4XcoZYivA6CCGP+gQMHVrvdbofD4chJ9N7Jni+EECtXrtSVU2+99ZYeWonvGCRRskc8IZb4b3Xv3l255pprlMsvv1wZNmwYmSwfsNvtf072volcp2naX2022/f37t2rLFiwQG/3devW6co52iqa+s24R+P2jEWihf/e6XQqnTp1UoYOHapcf/31uoIsNzd3V25ubp9E6iDPlQhIBCQCEgGJgERAIiARkAhIBCQCEgGJgEQgNQQkQXYKv3379g232+1r3nvvPT17IyGW+G4l671FsbH8pwwFEeoxFESQY3iQBYPBM/Py8sqsyF7o9/uHqqrq9nq9n6KcInPn559/rivnqHskkiuVLhdOEEGO5eTk6Ib099xzjzJlyhRCTWtcLtfNqqq+k8p94r3W6/X+yWazPfTFF18ozz33nB5WW1VV9S3lXDQSrDFJ1lSGSuPc8HPwHkM5BzE2ffp0ZdCgQUsURTmoqurN8T6/PE8iIBGQCEgEJAISAYmAREAiIBGQCEgEJAISgdQROK0JsnAC6vjx4y8uX778pnfeeUdBSfXVV1/p6MYiuZpqgljkEqGVhYWFhBTq2QsnTZokevTooQaDwVFOp3NV6s0bu4RAIPClw+EYtH37dvH3v/9dxZj/0KFDSnV1dUp1jweXrKwsEhEoI0eO1Mkxsldqmva6w+G4NvaTp+eMI0eOPHz8+PH/hBCdN2+e8umnn+qqOUM5F6n9I5nxh/eVWO3O7yEHaXvqPX78eGXChAkkabAka2d6kJOlSAQkAhIBiYBEQCIgEZAISAQkAhIBiYBEoO0gcFoTZDRjKBSa09DQkO/1ei/905/+JBYuXKju2bNH99/iiEV2xCKCmiLZIIjOOOMMXUU0depUPXOlpmmv2u32u60yp29oaFhx9OjR0Zs3b9azdi5atEjP2BkIBEzr5QZBhM8aGTshxkaNGiXOOuus8YqiVKmqut60m58qWAjRQVGU1w4dOtR92bJlPQmthBwrKyuLO1tpPIqxSPWAGM3NzVW6du2q3HHHHXr9zz77bEs958zGV5YvEZAISAQkAhIBiYBEQCIgEZAISAQkAhKB1oTAaUuQGeqxQCBQs3fv3lwIopdfflkPrUQ9BUlkHLFM9pNtcEIr8d268sordZKsd+/e76qqOjnZ8pK5rry8fOnatWvHUm9IIszpjdDSprJVRiL+IimrIimwUE9hzI9yDgUVSQl69Ogh2rVrZ0umDslcI4TooSjK7p07dyovvfSSgnJu9+7dSnl5edzFxZPNM1JhhFainDvnnHOUadOmibFjx6qQpWo0aVrcTyRPlAhIBCQCEgGJgERAIiARkAhIBCQCEgGJgEQgGQROW4IMsEKh0BqPxzMcY34Iog8++EDPXNnYmD5egixetRnnZWRkQAopt956q3LDDTcoJSUlSnZ29suqqt6UTEMmek0wGJxmt9vnYk7/+uuvK4SWQhYRXtmYGIzXiD5W6CHlcg4KKjI3QhDhvfWd73wHLzLhdDotI8gqKyt7FBQU7P7kk0+UZ555Rm/7urq6bxGjsTCN1t5N9QN+R2glpCChlZCjxcXFUzMyMt6MdT/5e4mAREAiIBGQCEgEJAISAYmAREAiIBGQCEgEzEHgtCXINE170maz3Xv48GFdOfbGG298oyBKxpi/qeZpTJiQvbB379569sJp06YRYrfJ7Xbvcbvdk60w5udZa2pqrrLZbG/ht0bWTjI4krGzoaEh4Z4WrqRqHHbYWGVlkIMo5yCIIMd69+5dlpGR4bPb7YMTvnmSF1RUVFyxf//+BdSbHzJXElaqaVqSJf7rsmgEmc1mU2j7Ll266J5zhNWSoEAIcb3D4Zid8o1lARIBiYBEQCIgEZAISAQkAhIBiYBEQCIgEZAIJIXAaUuQeb3eP54Mr/zR9u3blSeffFIhg2O6CJLGLRFOEkGSEE5HtkoIoquvvho1laXm7Jqm3VNZWTn40KFD93388ce6OT0KumSPSCRYuOosnDRDOZefn6/cdtttyuTJk3WD/rq6uuL8/PwKK8hBIcS0hoaGvKysrGefeuop8eGHH6pksERJl64jGkEGOUZYbf/+/ZW7775buf766yHkDtrt9omqqn6ZrvvLciQCEgGJgERAIiARkAhIBCQCEgGJgERAIiARSAyB05Ygq6io+M3Bgwd/BjFEeOHixYt17614slYmG1pH07jdbj2cEuUY4XUjRowgvNDSdhBCCNRib775pvjggw90goisnY3rFc1jK7Eu9q+zXS6X0qlTJ109d/PNN+vkIF5kiqL0PRlaujPZcuO5ziDfNE3bo2la97KyMvHkk0/qWTvxHauvr4+r7eO5V7RzMOaHEBw3bpxyySWXKMOHDycTxAiz657KM8trJQISAYmAREAiIBGQCEgEJAISAYmAREAicDogYCkx0xIAbWho6OxyuVaVl5dnLVu2rPi9995TPv/8c2XLli0JPV4kkiyW9xS/Ly0t1Qmi6667Tjfox4fMKnP2sMQEAq+1uXPn6t5b+/fvV06cOPFv9U83QZadna37jo0aNUq55pprlMGDB7+UmZn5S0VR9qqq6k+oAZI4WQjxW4/H89MdO3bYSUbwwgsvKMuWLVP8/n/eOh5yNInb6pdADtL2qOYmTZqk9OvXr6F79+5dVFX9Z7pUeUgEJAISAYmAREAiIBGQCEgEJAISAYmAREAi0GwInHYEmcfj6eF2u3dDiEEQ8XP06NGIBFG8rRJvtkfCK8877zxl9OjRuoIIoignJ8cygoz6aJrm27p1qwvPrbfffltZvny5UltbG9GcPlLoZDgmiRJKhFaiGsOYf/DgwUqHDh0eczqdD8aLc6rnaZr2Um1t7Y2oxvhZs2aNsmPHDl05GIkgS4UgDA8rpd2LioogxZQZM2bo3mM5OTmenJycrFTrJK+XCEgEJAISAYmAREAiIBGQCEgEJAL/f3v3Hlxlfedx/PfkyTkniQm5kARiAggBw9XKRShyURDl5o0qBawdoVo6tbO709bp7mw7OzvTTru7dndWt3WsN+o4CotWtAVEuQiKgIAiF4FwkVsIgUASyO0k5/Lbfn/1YWNMyDnJk5MceGfmDCjn/J7n93oOf/CZ7/f7QwABBDoucM0FZKWlpX1TUlJOrFu37vLpjVJB5Axnjzb0kUdwpYBM1pM/l9ZKabGbNWuWmjFjhpoyZYpUFd2XmZn5544/xrZXkOqxcDh8LhAIZL/33ntK9i/VU/v27fvaqZ3Oaq2dSun8eaRWsk5ycrLq27ev+s53vqMWLVqkcnNzlW3bT9u2/Q9t333H3+H3+3/i8/n+U4JROZRATu48d+6cqqiouLx4pKd1RnI3Te1s21bDhw837ZWLFy+W00ITv/3tb4diMXMtknvlPQgggAACCCCAAAIIIIAAAghc6wLXREDmBBFa63uqq6t77dmz53mpHPvoo4/UZ599ZsKxlsKeSCvD2qo0SkxMvNxa+a1vfcu02WVmZlYkJibOTklJ2RaLL2E4HP6LZVl3V1ZWqhdeeMFUzh07dswERK2d2nmlgCzScEz2JsPp+/fvb9orZfba9OnT3/J6vT6fz/emZVkvxGL/VVVV36+rq3tOnrmcWLpy5UpzKENDQ4Prl2/eaisHE8ydO9fMnJPKwerq6qx+/frRWum6PAsigAACCCCAAAIIIIAAAggg0D6BayIgExqt9Y+UUr+rqalRL730kl6xYoVVXFysysrKWp095UZAJuGYtFFKS6G0Vk6bNk1aK0t9Pt+9lmV90r7HFv2nGhsbX7106dJDEoo9//zzpoJKBvUHg8FWF2stIIsmHJP2Qtm/01Y6ffp0NWzYsMvfu86uotJae8Lh8L9fuHBh+L59++6UmWtycueOHTuiR4zwE05AJr/K3DU5ufKxxx5TEo7KCZYXL17MysjIICCL0JO3IYAAAggggAACCCCAAAIIINDZAld9QOYEMOFw+OiZM2cGHD161LTYycmVcnqhVBBFE/hc6YG0NKQ/JSXFVI9JW+X8+fPNUP7evXtvSUxMnNDZD7fp+jU1NUsOHjy4cOPGjWrNmjWmeq6+vv6K4VhbLm1VzsniUj2Vk5Nj9i7zt4YMGSLtljH73mmtZc5XrbRTvvLKK2r58uXq+PHjpr0ykvuXPVzp8IUrPUNprZTKOdnzggUL9P33329Jq6lSqqdlWf/f2xnLLwLXQgABBBBAAAEEEEAAAQQQQACBrwnELKjoSvtQKPSsUuoHMpRdhtKvXbtWbd26VdXW1prbaisIivTemwYpEgxJ9dDAgQNN9dhtt91mqsd69Ogh88h2JyQk3Bzpuh15n9b65sbGxk8vXLgQWLdunVcG8+/du1dJUOjMXWu+vlvBkaxTUFCgBg8ebFoM77//fp2TkyOHdsbse1daWprSs2fPWnney5YtUytWrJAKLuX3+822Iwm/IvVwHOX9UjknYdj48ePV5MmTzcmVAwYM+NcePXr8VilVZ1mW7shz5bMIIIAAAggggAACCCCAAAIIIOCeQMyCCvduOfqVAoHAcq31XAlI5HXgwAF1+vRpJcP5WwqHog3MmgYoTuCSnZ1tKsfuuOMONXPmTHOCYV5eXrVt29WJiYn5nd1a6OyrtrZ2TEpKyo5du3aZuWNSRVVVVWXCwWj2GUmQ1NRS3i8vOanz9ttvNw4SFCUkJCRblvW3dKqTf8rLy9PC4XDKxYsXy1atWmVOrty8ebMJx1qau9ZWS63cbiSD/GUdCUjl5Mo5c+aYuWsjRoyQQxr+0efz/Ucnb5vlEUAAAQQQQAABBBBAAAEEEEAgSoGrPiDz+/0/9fl8v5XTGqW18rXXXjPtdXV1dV8LSaKtFHKsnc9J1ZBUiElLYWFhoWmtmzhxopo0aZKSwEwplSCVQ7EKx+SCZ8+evSkUCu2WcEgG00trqYRD0YRjsk40AZm8V07tlAo6GUwvLwnJ6urqRhYUFHwW5Xe0XW/XWueHQqESaXNctmyZXrVqlbVz5051+PDhqCvnmha8tXaYQ9P/L3PnevXqpQYNGmTmjskrPz9f5r393OPx/LpdG+JDCCCAAAIIIIAAAggggAACCCDQaQJXfUBWXV39eEVFxe83bdqkVq9ebaqIpHqqtZAokuCoaWDiBEcSini9XtNSOXbsWDVmzBg1evRoE5J4PJ4dPp9ve0JCws8sy6rrtKfZbOFQKPREVVXV9Tt37vzxq6++qj755BO1f//+y+FYtIFgpCGZBIW5ubmqT58+prVyzpw5euDAgZbf75+WnJy8Phb7D4fD2+vr62+RUztffPFFUz138uRJOUGyXeGg3HMk3w15n4SDN998s2mrnTp1qlTOVSckJPzB6/W+Y1nWhljsn2sggAACCCCAAAIIIIAAAggggEDkAld9QFZbW/t4VVXV77ds2aLWrVun1q9fr86fP28qyOQEx6ahR6QBiBMsya8yhD89Pd0EQnl5eeaUQgnGZO6WhCRa6yOWZU2wLOtc5I/FnXdKqdqJEydMBdXrr79uyXD6ioqKqAKylsaFteUkYeHw4cNNe6WcWinztyzLWmlZ1sOWZV10Z3dXXiUYDK47fvz4HZ9//rmpHJTTKyUsa6m10s37kb1nZGSoO++8U2aumflzRUVF1ZZl9XDzOqyFAAIIIIAAAggggAACCCCAAALuCVz1AVljY+PjWuvff/HFFyYck6Dk4MGDpppITrDs6I/MGZMwTEKxcePGSRiihwwZYklrX3V1dXZaWpq0VZZ39DqRfr5p++apU6e0HEwgg/llBpcERE64Jb+2VUHW2iz9SAKyWbNmqYULF5rZWwUFBeuTk5OnRboHN97X0NCwZtOmTdNlKL8YSFDmDOZ3Y/3W1pC2UglK582bpxYtWmR+n5KSkmlZVlVnXpe1EUAAAQQQQAABBBBAAAEEEECg/QJXfUAWCoV+mJCQ8MyFCxdUcXGxGdBfUlKizpw5o8rLy01oVFNTY9ouJTALBAJmRlXTEx6lKsjj8ZjB63IyoVM1JkPYJSCTVsK/nlBo5o4VFRXJ8P8hPp/vYPsfS8c+GQgENiQmJk7ZuHGjObFT2ks//fRTVV9f/7VZYm21TUZTQSbvTU1NVb1791b33nuvCchk9lZaWtqfPR7PfR3bVWSfDgaDs2zbXiWVcxIMLl26VMnv5VlLxWBn/TiHEsjzHzVqlJKAUA5nSEtLk+/OVf/3rLNcWRcBBBBAAAEEEEAAAQQQQACBWAhcE/9wD4VCvwqFQvP9fn+wvr7eEwgEBkhgJi2Hx44dM2GZDO6/dOnS5aDMOeFS5mlJMCaVQTKAPzMz0wxgl1BM5o3J8H0Jymzb3p+UlGR7PJ4M27alpfJoLB5g82torb1+v/8DrfU4aS2UUzuleqqsrKxDAVFbg+rlPqRqrqCgwLQVzp49Wy1YsEDmcRXbtr3Btu3HY+FRW1s7S2u9SqrGZO6YzF5z2mmd6zcP/dqqiIvkvmXvEqTKaZ0SDkp7aVFRUYXP5+sZy0MZIrlX3oMAAggggAACCCCAAAIIIIAAAl8VuOoDsubhhNY6UylVIQwyi0yCsaqqKnXx4kVTYeVUkTnVRhKmONVjUjkmQZnMHJNgTIIyGcyvlHrJsqxHu8OXKxAI/CYYDP6TVMq98cYb6k9/+pOpmJO9dWT+VlsBmfy5WNxyyy2memrSpEl64sSJlvyIS6xCovLy8ikVFRUb3nzzTdNSu2HDhlZPK3WelxsBmVTOSXg6Z84c9dBDD5l22/Pnz+fn5OSUdofvBfeAAAIIIIAAAggggAACCCCAAAKtC1z1AVnzrWut08Lh8GOhUMgvlUUSiDkvaauUEMn51fmsVJFJhZAEZU67pYRl8vJ4PF7btp+KVQB0pS+z1vr6QCCw7siRI0M2b95s5q1JSCThX0dCoOazylqaXSY2UmEn4dijjz6qRo4cKe2of+/1ev8nVn8BGxsbX6yqquq1efPm2S+99JKpnJP2yubBYFthX3vuV1pJpcV2/vz5asaMGZsLCgqW1tXVLc3IyKhsz3p8BgEEEEAAAQQQQAABBBBAAAEEYidwzQVksaON7ZW01tmhUKg4GAxmydwxaa/cvXu3OnTokCuHEbS1G5k7NmjQIAmXCAQVAAAT6klEQVTI9KJFiyyprnOqx9r6rFt/Lqd27tmzR8lgftl/aWmpaZuVn5YCwrbmrzW9ryu9V/5MKuekvVJO7Rw2bNizOTk5P3RrX6yDAAIIIIAAAggggAACCCCAAAKdK0BA1rm+MVtda52nlGRCpaa18sknn1QyZ01ObuxI9VikG5C5Y1OmTFH33XefHFyw+MYbb/yjZVmBSD/vxvtOnz6t161bp1avXm1e1dXVl5dtLeCKJCRr67RPqTB84IEH1OLFi82pnenp6c8lJyf/wI09sQYCCCCAAAIIIIAAAggggAACCHS+AAFZ5xvH5Arnzp3rnZSUdEZaKt955x21fPlyczpnZ57cKBtz2k7vuusuNXfuXBOS+Xy+hdnZ2S/HZONKSUvs4YSEhIFr167VK1eutLZs2aL27t0bUeVcW+GX7KG190gwJnPH+vbtawbzy+wxabX0+XxPejyen8Vq/1wHAQQQQAABBBBAAAEEEEAAAQQ6JkBA1jG/bvHpQCAwraqqKrusrGzpa6+9pmT+2Mcff6yckzijucmWKqquNIPMGU7/4IMPqoULF6qbbrpJBQKBx7xe74vRXLe979Va96mrq/ugvr7+BjmQQE6t3L9/v6qsrDSz5CL5aetUy5YCMvl/Mo9OTjIdP368koBw5syZ4dTU1Kds2/5Jd5hJF8neeQ8CCCCAAAIIIIAAAggggAACCChFQHYVfAvC4bCWQfwrVqzQy5Yts2Q4fVlZmQmImoc/st2Otlw2DdH69++vxo4da2Zv3XPPPapnz55fBAKBu30+34FY0Gqt/1hWVvbI9u3b1Zo1a8zBBKdPnzbhYKT7bM/Qfqmck3Dwm9/8ppJwcNSoUWro0KF+n8+XTDgWiyfPNRBAAAEEEEAAAQQQQAABBBBwT4CAzD3LmK/kBDElJSUNhw4d8kprpQynl4DIqZ5qKSDraEgma0p7obzGjRun5s2bZ0KyoqKiY+np6RMsyzoTCwyt9dhQKLRm27ZtmW+//bbatm2bOZjAGcwf6T1E0mbZfK309HSZtaamTZumFi1apPr166ezsrLkXAL+TkUKz/sQQAABBBBAAAEEEEAAAQQQ6CYC/GO+mzyIaG/DCce01mt37do1TU6u3Lhxo9q6dauqqqr6ynJuVZE1DZKSk5NlGL0JiBYvXqxHjRpleTyeQz6fryjavbTn/Q0NDYNt2z4gg/hXrVqllixZYk7sPHv2bLtaSyO5h6aVcwMGDDAnV06dOlXPnTvXkllkSqlMy7K+ih/JwrwHAQQQQAABBBBAAAEEEEAAAQS6VICArEv5O3bxYDD4im3bD0tA9PLLL6udO3ea1sr6+vqvLdzWnK1I7qTpGllZWaqwsFDNmjVLPfHEE9JuGNPvUkNDw3Cv17t337590lqqnn32WROOhcPhiFsrI9lz0/fI/h0DqZyTEzulrdTn890xcODADdGux/sRQAABBBBAAAEEEEAAAQQQQKB7CMQ01OgeW7467iIYDH7ftu3nZCC9tFYuW7ZMFRcXq7q6uq8Np3cjHBM1Zx35taioyIRjt912m5o9e7aybTum36VLly4V1dTUHJR9S+Xcpk2blFSTSUDWmT9SOSezx6Ry7uGHH1a333678vv9M3r27PluZ16XtRFAAAEEEEAAAQQQQAABBBBAoPMEYhpqdN42rq2VtdZ2KBRaVl5e/uCHH36o3nvvPbVy5UpTPdb8pz0D6FvTdE5ulJBIhtN/73vfU2PGjNGFhYUxnb3l9/t/VFVV1bu4uPgXTz/9tPrss8/UqVOn2t1aGc0MsuzsbJk3ZkLBRx55REmrpVJqtmVZq6+tbyG7RQABBBBAAAEEEEAAAQQQQODqESAgi7NnKeGY1nqDZVmTt2/frl955RVLTnA8cOCAqaBqOidLthZJ+BPJexwmp7Vy8uTJasGCBXr06NFWIBD4sdfr/e/Opmwyd02fPHlSQkH9/PPPW0ePHlW1tbUdrh6LxGHYsGHqzjvvVFOmTFGjR4/em5+f/yul1IexOpigs41ZHwEEEEAAAQQQQAABBBBAAIFrUYCALM6eutbao5RqlJMqP/jgA/XMM8+Y1koZzB8IBDotIHOCt0GDBqmJEydKQKQfeughy7btv7Ms63edzdgkHFt/6tSpqbt27VJyMMEbb7xhZo9prTt8C1cKyDwej0pMTDQtpd/97nfNgP5evXq9m56ePqPDF2YBBBBAAAEEEEAAAQQQQAABBBDoUgECsi7lj/7iUkHm9/uD0lYpc7feeustVVpaatoLW5q/FUlVVCR3Ydu2CYjGjx+v5s2bZ2Zwpaam/jIvL+9fIvm8G+8JBoN/tm37no8//tjse/PmzWr37t2tVs65EZrJfYthjx49VF5enrrrrrtMQDZ06FDl9XrXejyeu9zYG2sggAACCCCAAAIIIIAAAggggEDXCRCQdZ191FeurKzMyMjIqNyzZ49+8803LQnIPvnkExMQtfbjVkCWkpKicnNzTTC2cOFCNWHCBAnlfunz+WIWkNXW1v6lsbHx7nfffdec2il7dyrnnP07oVjzVtOosb/8gKwj4WB+fr7MWzPtlRIQZmZmmr87TmVbe9fncwgggAACCCCAAAIIIIAAAggg0PUCBGRd/wwivoPGxsa6urq65K1bt5rWSqmkkoBIqsei/Yk2QCooKFBTp041pzZOnjy5oV+/fivD4fDrPp/vf6O9dnvff+zYsbdOnDhxn1TPvf322+rw4cPmxE6ncs6tirGm9ydVc3IowYgRI8yplePGjVPDhw9XPp+PvzvtfZB8DgEEEEAAAQQQQAABBBBAAIFuJsA/8rvZA7nS7VRUVJSUlJTkb9iwQT333HNq//79l4fwy+eiCYgiDchk9pZUj910001q/vz55vTKwsLCsxkZGb2/vFf5DnV8ANgVNl5dXZ2bkpLy87179979/vvvD9i4caPasmWLKi8vj+gQgvY8YvGRV3p6uurbt6+69dZbzamVRUVFOiMjI6andrbn/vkMAggggAACCCCAAAIIIIAAAghELkBAFrlVl7yzaQtfcXHxyY0bN/aRgEwG9J85c6bTAiJnszJ7S05ulMH8DzzwgB43bpwVDAYDHo/HGwsQrXWPYDC4PzEx0QSDL7zwgmmtlEMK5ORK+XHaSKMNCa90/7JmQkKCGjx4sJo5c6YM59eTJ0+2xCMYDE7zeDzrY7F/roEAAggggAACCCCAAAIIIIAAAp0vQEDW+cYdvoLf7/+pUurXO3bs8Cxbtsz68MMP1fHjx9WlS5e+dmplhy/25QI+n09lZGSo/v37m3BMhvPPmjVLwqFefr+/Picnp/XBZ27dhFKyx55paWnn9+zZo6Ry7NVXX1UHDx5U9fX1ci+mas7NgKxp5dj1119vTqucPXu2Ob3Stu0fZ2Vl/cGyrHoXt8hSCCCAAAIIIIAAAggggAACCCDQxQIEZF38ACK5fGVl5S+DweAvnOH027dvV3V1dSoQCHzt422FRU1bK1sa4O/8eU5OjmmrHDt2rBnMP3jw4PqsrKzkpKSkZMuy/JHcd0ffo7XOaGhoyAoEAkeXLl1qTu2U19mzZ83ssZZaSqNpM23p/mQgv7SVFhYWmn1La+XIkSNDffr0Cdq2/UOv17uko/vi8wgggAACCCCAAAIIIIAAAggg0L0ECMi61/P4yt1orW2l1M+kemz9+vV6w4YN1ooVK9SBAwdarRxrGpDJYk0Do+aBWPP/lnAoKSlJZWdnqxtvvNFUjclQ/iFDhvh79+4907KsjbHk0l/e/I4dO/SSJUusjz76SH3xxReqpqbmK1VjTe+pvQGZs3dpoZQDCb7xjW+oGTNmmKH86enpR3r06DEolnvnWggggAACCCCAAAIIIIAAAgggEDsBArLYWUd9Ja21RynVeOjQIb18+XLTWrl7925TQeXGT9OATH4vbZV5eXlq0qRJJhwbOXKkzs7O/lVGRsan2dnZb7lxzWjWqK+vrykvL79OTut86qmn1K5du5Tf7zfVY01/Wqqai/QQAmcd2XuvXr3UoEGD1PTp09WYMWPU0KFDVWJi4r+lpqaWJyUl/Vc09857EUAAAQQQQAABBBBAAAEEEEAgfgQIyLrxswoGg+//tWrr9s8//1xJi6Gc3Hj48GF1/vx5M38rHA63++6dIfQSDKWlpanMzEwlM7ektVDaCqW9sn///qGsrKzELy/S6adVNt9MTU1NTWlpqQnIZDi/hINNW0udarErtYq2BuQEgsnJyWbvvXv3VgMHDrx8IMHAgQN1bm7u5dMqmx6W0G50PogAAggggAACCCCAAAIIIIAAAt1SgICsWz6Wv92UtBjKSY3Hjh1Tq1evVtu2bVMSlpWWlpqgqCMBmayfmJhoBvEPGTJEjRgxwlRNDR8+XKrIdEFBgfluSELUVUSXLl2qKSkpuW7v3r1q5cqVpoLsxIkTqrranfMBJBjLz8837ZSjRo2SijlVVFSkevbsaarpgsHgBI/Hs6Wr9s91EUAAAQQQQAABBBBAAAEEEEAgNgJdFn7EZnvxfRUJyBoaGlR5ebnat2+fOnLkiAnLJCCT/1dRUWFOspQQTVoPZWi/U1km4ZlTJeYMnpf5YlIxJaFYenq6+TU3N9dUjUlrobz69OljKqqUUvmWZZV2paC0WFZWVl5XUlJi9n/06FFzeqfsvaqqyuxd5pHJiZaNjY1m/02H9zv7l6H7EnilpqaaajmZMyYvaamUeWPO3uXETmkxDYfDv7Ft+5+7cu9cGwEEEEAAAQQQQAABBBBAAAEEYidAQBY766iu5LT0hUKh04FAoLK6ujpUW1s7pLKy0iMzyCQokrBMhtbLf0tYJmGRBGUSFklQJsGYVIlJOHTdddeprKwsJadTSiB2ww03mHBIAiEJyVJTU/empKQkJCUlpXk8nrmWZW2P6oY74c3BYHBHMBhMrq+v13V1db2rq6uzT58+rSQwk/1LNdnJkycvB4VSVSeBohOSyd69Xq/ZuwSCUi3Wt29f1a9fPxMESkupHEggQZllWQeTk5Mrk5OTb5Wt0FLZCQ+UJRFAAAEEEEAAAQQQQAABBBDopgIEZN30wbR0W6FQ6EJCQkKWVIxJKFZWVmaqyZxKMicgknBMQiIJyBISEkxIJJVjUjUlVWMSFEkwJuGQVItJpVVXtlK2tNfmAZXWekIgEFitte4hFWSyd3mJg1NFJ+GYhINO66kTEErlnIRkEg7KrDF5SSgoe5cQTSm12bKsSQRjcfSXgVtFAAEEEEAAAQQQQAABBBBAwEUBAjIXMTt7Ka31/EAgcJ1UiUkYJi+ZxyX/LS8JhiQYk5f8XsIx+XFaLKXVUMIiaTNMSUkxoZFUl3m93kTbtv/Q2fff0fUDgcCUxsbGwtraWqkoM/uXsFCCMae9svkJl7J3Z/+yZ3nJ/sVBXh6PJ8nj8bxsWVZNR++PzyOAAAIIIIAAAggggAACCCCAQHwKEJDF53PjrhFAAAEEEEAAAQQQQAABBBBAAAEEXBIgIHMJkmUQQAABBBBAAAEEEEAAAQQQQAABBOJTgIAsPp8bd40AAggggAACCCCAAAIIIIAAAggg4JIAAZlLkCyDAAIIIIAAAggggAACCCCAAAIIIBCfAgRk8fncuGsEEEAAAQQQQAABBBBAAAEEEEAAAZcECMhcgmQZBBBAAAEEEEAAAQQQQAABBBBAAIH4FCAgi8/nxl0jgAACCCCAAAIIIIAAAggggAACCLgkQEDmEiTLIIAAAggggAACCCCAAAIIIIAAAgjEpwABWXw+N+4aAQQQQAABBBBAAAEEEEAAAQQQQMAlAQIylyBZBgEEEEAAAQQQQAABBBBAAAEEEEAgPgUIyOLzuXHXCCCAAAIIIIAAAggggAACCCCAAAIuCRCQuQTJMggggAACCCCAAAIIIIAAAggggAAC8SlAQBafz427RgABBBBAAAEEEEAAAQQQQAABBBBwSYCAzCVIlkEAAQQQQAABBBBAAAEEEEAAAQQQiE8BArL4fG7cNQIIIIAAAggggAACCCCAAAIIIICASwIEZC5BsgwCCCCAAAIIIIAAAggggAACCCCAQHwKEJDF53PjrhFAAAEEEEAAAQQQQAABBBBAAAEEXBIgIHMJkmUQQAABBBBAAAEEEEAAAQQQQAABBOJTgIAsPp8bd40AAggggAACCCCAAAIIIIAAAggg4JIAAZlLkCyDAAIIIIAAAggggAACCCCAAAIIIBCfAgRk8fncuGsEEEAAAQQQQAABBBBAAAEEEEAAAZcECMhcgmQZBBBAAAEEEEAAAQQQQAABBBBAAIH4FCAgi8/nxl0jgAACCCCAAAIIIIAAAggggAACCLgkQEDmEiTLIIAAAggggAACCCCAAAIIIIAAAgjEpwABWXw+N+4aAQQQQAABBBBAAAEEEEAAAQQQQMAlAQIylyBZBgEEEEAAAQQQQAABBBBAAAEEEEAgPgUIyOLzuXHXCCCAAAIIIIAAAggggAACCCCAAAIuCRCQuQTJMggggAACCCCAAAIIIIAAAggggAAC8SlAQBafz427RgABBBBAAAEEEEAAAQQQQAABBBBwSYCAzCVIlkEAAQQQQAABBBBAAAEEEEAAAQQQiE8BArL4fG7cNQIIIIAAAggggAACCCCAAAIIIICASwIEZC5BsgwCCCCAAAIIIIAAAggggAACCCCAQHwKEJDF53PjrhFAAAEEEEAAAQQQQAABBBBAAAEEXBIgIHMJkmUQQAABBBBAAAEEEEAAAQQQQAABBOJTgIAsPp8bd40AAggggAACCCCAAAIIIIAAAggg4JLA/wFb+sYcW8JjpAAAAABJRU5ErkJggg==", - "created": 1722536352800, - "lastRetrieved": 1722536352800 - }, - "052b11aa8b22d6eabf95831f5c83abbbdebc45ef": { - "mimeType": "image/png", - "id": "052b11aa8b22d6eabf95831f5c83abbbdebc45ef", - "dataURL": "data:image/png;base64,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", - "created": 1722538330971, - "lastRetrieved": 1722538330971 - }, - "733eb5ed9a01ba64388cba865a5ff133b3a04561": { - "mimeType": "image/png", - "id": "733eb5ed9a01ba64388cba865a5ff133b3a04561", - "dataURL": "data:image/png;base64,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", - "created": 1722538387275, - "lastRetrieved": 1722538387275 - }, - "8a405086d877b8b98996d7386da4ece965e92454": { - "mimeType": "image/png", - "id": "8a405086d877b8b98996d7386da4ece965e92454", - "dataURL": "data:image/png;base64,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", - "created": 1722538515722, - "lastRetrieved": 1722538515722 - }, - "b001d66de9fa144d4d413562a3a62181d0d4450e": { - "mimeType": "image/png", - "id": "b001d66de9fa144d4d413562a3a62181d0d4450e", - "dataURL": "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAABNoAAAHwCAYAAABwhAK9AAAAAXNSR0IArs4c6QAAIABJREFUeF7snQm4jtX6/9dpEoWMlQybSH6oiJSKXCSFilRHw0lJVJo1J42nTpNGpVJySMoxnAaOyCE/kgyVkkhHSqNMSYN//a/PfX7L2Tli7/2+63mf93m+67reaxv2fobPWvt51vqu733ff/j1119/dWoiIAIiIAIiIAIiIAIiIAIiIAIiIAIiIAIiIAIZEfiDhLaM+OmHRUAEREAEREAEREAEREAEREAEREAEREAERMAISGjTQBABERABERABERABERABERABERABERABERCBLBCQ0JYFiDqECIiACIiACIiACIiACIiACIiACIiACIiACEho0xgQAREQAREQAREQAREQAREQAREQAREQAREQgSwQkNCWBYg6hAiIgAiIgAiIgAiIgAiIgAiIgAiIgAiIgAhIaNMYEAEREAEREAEREAEREAEREAEREAEREAEREIEsEJDQlgWIOoQIiIAIiIAIiIAIiIAIiIAIiIAIiIAIiIAISGjTGBABERABERABERABERABERABERABERABERCBLBCQ0JYFiDqECIiACIiACIiACIiACIiACIiACIiACIiACEho0xgQAREQAREQAREQAREQAREQAREQAREQAREQgSwQkNCWBYg6hAiIgAiIgAiIgAiIgAiIgAiIgAiIgAiIgAhIaNMYEAEREAEREAEREAEREAEREAEREAEREAEREIEsEJDQlgWIOoQIiIAIiIAIiIAIiIAIiIAIiIAIiIAIiIAISGjTGBABERABERABERABERABERABERABERABERCBLBCQ0JYFiDqECIiACIiACIiACIiACIiACIiACIiACIiACEho0xgQAREQAREQAREQAREQAREQAREQAREQAREQgSwQkNCWBYg6hAiIgAiIgAiIgAiIgAiIgAiIgAiIgAiIgAhIaNMYEAEREAEREAEREAEREAEREAEREAEREAEREIEsEJDQlgWIOoQIiIAIiIAIiIAIiIAIiIAIiIAIiIAIiIAISGjTGBABERABERABERABERABERABERABERABERCBLBCQ0JYFiDqECIiACIiACIiACIiACIiACIiACIiACIiACEho0xgQAREQAREQAREQAREQAREQAREQAREQAREQgSwQkNCWBYg6hAiIgAiIgAiIgAiIgAiIgAiIgAiIgAiIgAhIaNMYEIEEEPj555+d//z444+Ozw8//OA2btxof+b/vv/+e/fdd9+53Xff3ZUvX97tsMMObuedd3alSpXa/ClTpoz9/4477pgAKroFERABERABERABERABERABERABEYiWgIS2aHnrbCIQhAAi2tq1a92aNWvc6tWr3apVq9xXX31lH/7Mv61cudL99NNPbtddd3UNGjQwcQ1hrUKFCq5SpUquatWqrnr16q5GjRr2PWoiIAIiIAIiIAIiIAIiIAIiIAIiIALFIyChrXi89N0ikDMC33zzzWYBzYtn69atM4ENpxp/9q61DRs2uF9++eU3n//3//6f44NbDScb7Q9/+IM52/ggriG48UF8K1eunDnfcLjx4e985f8Q5fwxcgZEJxYBERABERABERABERABERABERCBmBGQ0BazDtHliMDvEVi4cKFbsGCBfd577z0LCcWhRlgoAtqvv/76mx/d8u/bI4vo5ttOO+3kdtllFxPT+FSrVs2cbrVq1TI3XOPGjV3ZsmW3d0j9vwiIgAiIgAiIgAiIgAiIgAiIgAikioCEtlR1t242HwisX7/effrpp27FihW/+fBvmzZtso93p/EV5xqiWnGFtW2xwOGG88273fyf+coHVxvCG5+6deu6OnXquL322sv+XU0EREAEREAEREAEREAEREAEREAE0kpAQltae173HQsCCGU0X8AAd9oXX3zh5s6d6+bNm+c++OADK2rAxwtqub5wnG98cLyVLl3aFRQUuJYtW7qGDRua4EbuN19kQUUVct1bOr8IiIAIiIAIiIAIiIAIiIAIiECUBCS0RUlb5xKBLQjgXiO3GqLa/PnzTVj7+uuv/8u5houNlk3XWiad4XO7EWKKmMZXxLW9997bHXTQQa5Jkyb2VQ63TCjrZ0VABERABERABERABERABERABPKNgIS2fOsxXW9eE/ChnhQw8JVAly9f7qZOner4unHjRsu7FhdBrTiwfZEFKpkisrVp08YcbnvssYcVUVBOt+LQ1PeKgAiIgAiIgAiIgAiIgAiIgAjkIwEJbfnYa7rmvCVACCgVQnGwTZo0yb3zzjsmrm2Zcy0fb9C73LzDjdBSiie0bdvWhLdGjRrl423pmkVABERABERABERABERABERABESgyAQktBUZlb5RBEpGABHt+++/t9xrFDRYsmSJmz17tlu2bJnlXiM/W9IaohuC26677mqOthYtWrjmzZtb8QQqmOJ6I9RUTQREQAREQAREQAREQAREQAREQASSREBCW5J6U/cSSwKIaStXrjQHG59Vq1ZZeCh51+JS4CAEOO9wo3Ip7jZEt2OOOca1b9/eBDflbwtBXccUAREQAREQAREQAREQAREQARHIJQEJbbmkr3MnmgB52BDVFixY4ObMmWOVRAkTjVMF0ag6oHD+trp167oDDjjAqpQ2aNDABDe526LqCZ1HBERABERABERABERABERABEQgJAEJbSHp6tipJkCI6LvvvusGDx5slUWT7mDbXmfjcKMhuu22224msp199tkmuJUqVcr+XU0EREAEREAEREAEREAEREAEREAE8pmAhLZ87j1deywJILDhYps1a5YJbbjYyMOW5DDR4nQEghsONkJJydd21FFHudatW7u99trLlS9fvjiH0veKgAiIgAiIgAiIgAiIgAiIgAiIQKwISGiLVXfoYvKZwM8//+z4kIdt2LBh7uuvv3YbNmzI51sKeu1ecCtbtqw799xzXdOmTS13GyKc3G1B0evgIiACIiACIiACIiACIiACIiACgQhIaAsEVodNDwGqiiKwLVq0yL366qtuypQpJrB54S09JIp3pwhtfCiUULp0aXfggQe6E044wdWpU8cENzUREAEREAEREAEREAEREAEREAERyDcCEtryrcd0vbEigMj23XffuRUrVpjA9ve//919//33VlX0119/jdW1xvliENxwth1yyCHuyCOPdM2aNbMw0jJlysT5snVtIiACIiACIiACIiACIiACIiACIvAbAhLaNCBEoIQEvMiGk41QUb5SURQnG/nY1IpHgJBRPghuRx99tGvXrp1VJ1UTAREQAREQAREQAREQAREQAREQgXwhIKEtX3pK1xkrAohpONcoejB16lT3z3/+0/6O+CYnW2ZdRRgpTrZjjjnGtW3b1kJJVSQhM6b6aREQAREQAREQAREQAREQAREQgWgISGiLhrPOkjAC69evdytXrnQDBw5077//vlUV3bRpk0S2LPTzDjvs4HbaaSfL21a/fn3Xu3dv16RJkywcWYcQAREQAREQAREQAREQAREQAREQgbAEJLSF5aujJ4yAL3Awe/ZsN23aNPtQ+EBOtux2NDnbvNh21FFHuQ4dOriGDRtaWKmaCIiACIiACIiACIiACIiACIiACMSVgIS2uPaMriuWBAgPpfjBnXfe6ebMmWNFDxDf1LJPALFtxx13tDDSpk2buosvvtgVFBRk/0Q6ogiIgAiIgAiIgAiIgAiIgAiIgAhkiYCEtiyB1GHSQQBxjZxs//jHPxzho3Kyhe13xDYKJOy2226Ws61Vq1bu4IMPtn9TEwEREAEREAEREAEREAEREAEREIG4EZDQFrce0fXElgCi2pAhQ9yzzz5r1UVxs6lFQ8CLbVQj7du3r0JIo8Gus4iACIiACIiACIiACIiACIiACBSTgIS2YgLTt6eTwL/+9S8LFR05cqQVQUB046MWDQEKJCC2lStXzp177rnugAMOsEIJaiIgAiIgAiIgAiIgAiIgAiIgAiIQJwIS2uLUG7qW2BFATKOi6MyZM93QoUPdJ598Yjna1HJDgBDSWrVqua5du7rjjjvOxDfyuKmJgAiIgAiIgAiIgAiIgAiIgAiIQBwISGiLQy/oGmJLYO3atW7ZsmVu7Nix7p///KeJbip+kLvuohIp4hrFEQghrVq1qqtQoULuLkhnFgEREAEREAEREAEREAEREAEREIFCBCS0aTiIwO8QQFBDZJs4caJ76aWX3Jo1axQuGpPRgrh22mmnuZYtW7oGDRrE5Kp0GSIgAiIgAiIgAiIgAiIgAiIgAmknIKEt7SNA979VAohsuNlmzJjhHnnkEQsXpfjBr7/+KmIxILDrrrtaJdLzzjvPnXzyyTG4Il2CCIiACIiACIiACIiACIiACIiACDgnoU2jQAS2QgCRjbxs48ePd++++65VGZXIFp+hQl42Qkhbt27tevXq5apUqaJKpPHpHl2JCIiACIiACIiACIiACIiACKSWgIS21Ha9bnxbBD777DN36623uvfee89ENlUYjd94QWyrWLGiO/PMM90RRxzhCgoK4neRuiIREAEREAEREAEREAEREAEREIFUEZDQlqru1s0WhcCKFSvcggUL3AMPPODWrVtnIls+utn+8Ic/uB122ME+hRv3wueXX37Jy/vy98L9ET5avXp117t3b9eiRQtVIS3KANf3iIAIiIAIiIAIiIAIiIAIiIAIBCMgoS0YWh04Hwkgqk2fPt1NmDDBzZo1y23YsCEfb8OuGSFql112cVTq5M++IbBt2rTJBMR8d+rhaiNfW48ePVy3bt1cmTJlTGxTEwEREAEREAEREAEREAEREAEREIFcEJDQlgvqOmdsCSA8DRw40L3yyivu+++/twII+dAQnBDUEJn4ID7VqFHDVa1a1ZUrV+434tOPP/5o94Zbj1x0q1evNkHRC2+IcHz8vcfZzefFxHr16llRhMMOO8xVrlw5H7pM1ygCIiACIiACIiACIiACIiACIpBAAhLaEtipuqWSEaDSKNVF+/Tp4z7++ONYh4wiMBX+eHGtZs2armnTpu7ggw92++23n9t9991NdNtaI/fcxo0bHfnoCJflw30vXrzYrVmzxv4P95v/cIw4im6IjNwn90xhhLp16zr+TU0EREAEREAEREAEREAEREAEREAEoiYgoS1q4jpfbAksWrTIzZ071z399NMmNMVZWPLCGgITghrutWrVqpmDrVKlSvapUKHCNnOW4WBDXERQQ2D0H1xuq1atcl999ZWDydKlS+17cMLFMV8dgiM8YHHJJZdYrjbuX2JbbH/VdGEiIAIiIAIiIAIiIAIiIAIikFgCEtoS27W6seISePHFF93IkSPN2RXH3Gw+PJS8a7jUmjVr5po3b+4OOuggE9jIT5btNn/+fDdv3jw3adIkE94IJ0Wci6Pgxv23b9/edezY0TVs2PB3nXzZZqTjiYAIiIAIiIAIiIAIiIAIiIAIiIAnIKFNY0EE/o/Afffd58aNG2fOLcSkuDQfIkqFTQS1Vq1ambiGY81/SpUqFcTB5XO4ff31127ZsmVu5syZbuHCheZ+I49bnEJJESDJR9e1a1fXvXt3V758+bh0oa5DBERABERABERABERABERABEQgJQQktKWko3Wbv09g/fr1Fip55513mnurcE6yXHJDYNthhx2sciif+vXruzZt2piLrU6dOpFfGkUT3nnnHTdt2jT3+uuvbw4nhVccBDdfgbRx48auf//+JkoqfDTyYaITioAIiIAIiIAIiIAIiIAIiECqCUhoS3X36+YhgFNrzpw5bsiQISa4xUE04roQicg9RhVNkvzXqlXL8rBtq8BByB7F5Ue1UkJIly9f7kaPHm3uNsJJcbflunlhsmLFiu7+++83XiHCaXN9nzq/CIiACIiACIiACIiACIiACIhAfAlIaItv3+jKIiKAO2vEiBGW+B93W64bgtFOO+3kSpcubcJahw4d7IPAFgfhiGqlhI7OmjXLkdduyZIlltMuDk5A2BEyev7551sV0lw4/3I9fnR+ERABERABERABERABERABERCB3BGQ0JY79jpzTAiMGjXKDR48eHMoZK4vC5ENQY0QyN69e292ZsUpDJJiCLjb1q1b5wYOHOjeeOON2DjbyGVH5VHEyXbt2uW6O3V+ERABERABERABERABERABERCBFBGQ0Jaiztat/pYAoZA4swgZHTt2rAlFCEi5arixyMWGkw2hiHxsfMXJFieRzfOBFQynT5/uJk+ebOG38Mx1zjYKQyC2devWzfXp0ydX3anzioAIiIAIiIAIiIAIiIAIiIAIpJCAhLYUdrpu+d8ECBNduXKlGzRokIVB5jLPmM8vVrZsWdesWTPXs2dPK36QD41QUnLb3XDDDe7DDz/MuWDpc9u1bNnS/eUvfzGEcRQq86FvdY0iIAIiIAIiIAIiIAIiIAIiIALFIyChrXi89N0JIrBixQqroPnXv/7Vffvttzl1s+HCwsnWqlUr1759e9egQQNXoUKFvKDtw0gnTpxoOdsoLrFx48acFZXwomVBQYEJbZUqVbK8bWoiIAIiIAIiIAIiIAIiIAIiIAIiEJqAhLbQhHX82BJ455133NChQ938+fPN3UbIYy4awlC5cuUsef+pp57qmjdvnovLyOiciG1UI33rrbfcAw88YDxxCOaygisC29VXX23OwBo1amR0f/phERABERABERABERABERABERABESgKAQltRaGk70kkAaqN3nbbbZZXjPDHXIhCO+ywg4U1NmrUyPKJ1a5d21WuXDkveVMcYfny5W748OFWHMGLbbm6GVxsHTt2tFx3iJhqIiACIiACIiACIiACIiACIiACIhCagIS20IR1/NgRwH2Fe41Qx/vuu89t2LAhZ/nZCBnddddd3RlnnOH+9Kc/OS+8xQ5aES9o7dq1VhRhzJgx7u2333Y//vhjzpyCFJHYd999Xffu3S0cV00EREAEREAEREAEREAEREAEREAEQhOQ0BaasI4fOwK+2ui4cePcU0895XBi5cLNBhhcV8cee6y5rpo2bZr3Sfs920mTJrnBgwdvFjFzwRcBk+qj55xzjoltaiIgAiIgAiIgAiIgAiIgAiIgAiIQmoCEttCEdfzYEUBYI2H/6NGjHYIQYaNRN/KyETK61157uQEDBlgOsapVq0Z9GcHOR967Rx991C1evNhCc3MhtO28884Ox+Af//hHd8EFFwS7Vx1YBERABERABERABERABERABERABDwBCW0aC6kjsHr1ajdjxgw3atQot3TpUvfTTz9FzmCnnXYyEYgqo/3793eIQghvSWmfffaZmzlzphWboEgC4bpRNx+GS562G2+8MerT63wiIAIiIAIiIAIiIAIiIAIiIAIpJCChLYWdnvZb/vzzz9348ePd2LFj3Zo1axzhjlG30qVLW6XR008/3fKzJa1RCGHlypVuyJAhjqITMI66qiuuQT6HHHKIu/76612FChVcmTJlkoZa9yMCIiACIiACIiACIiACIiACIhAjAhLaYtQZupRoCKxYsWKzAJSryphly5Z1Xbt2dUcccUSiK2I+/fTTjg9FEXIhaCK01apVy/Xr18/VrVs3UeG50fy26CwiIAIiIAIiIAIiIAIiIAIiIALFISChrTi09L2JIEB+tnvuuce99957VgghyrBG77LaY489LGS0QYMGiRZ/JkyY4B5++GFHNVJY56JVrlzZ9ezZ07Vo0cIVFBTk4hJ0ThEQAREQAREQAREQAREQAREQgZQQkNCWko7Wbf6HAAn6b7jhBgttxGkVZUgjQhv52fbcc0+ryrn33nsnumsoivDKK6+4KVOmWJhuLlrFihVd586dXfv27U3YVBMBERABERABERABERABERABERCBUAQktIUiq+PGlsDChQvd5Zdfbi6rTZs2RVoRk4IHu+yyi9t///3dHXfckWg3GwOAMN1Fixa5e++913399dc5GRO4BwnR7dKli2vSpElOrkEnFQEREAEREAEREAEREAEREAERSAcBCW3p6GfdZSECuKzI2YXQ9uuvv0YqtOFmIyH/YYcd5q644gpHWGOSGznwVq1aZVU/CdWFd9SNohONGze2whOHHnpo1KfX+URABERABERABERABERABERABFJEQEJbijpbt+osH9u8efPcVVdd5datWxe58IObjUIInTp1cj169HDly5dPdLfAm/BcQnWpPkqYbtRi2+677+6qV6/uevfu7Vq3bp1o3ro5ERABERABERABERABERABERCB3BKQ0JZb/jp7xARIyD9nzhw3YMAAE9qibqVKlXJVqlRx3bp1s1BGRLc0tFtuucVNnDjRKo9GWXwCtjgI4YyDsF27dmnArXsUAREQAREQAREQAREQAREQARHIEQEJbTkCr9NGTwCBZ/Xq1W727Nnu7rvvzonQtuuuu1pC/q5du7o2bdqYCJSGNmjQIPfCCy+4jRs3up9++inSW4b5brvt5i699FLXsWPHSM+tk4mACIiACIiACIiACIiACIiACKSLgIS2dPV3qu8Woe2LL75wM2bMcAg/5A+LupUuXdrys1EFs3nz5qkR2oYNG+b44Cj84YcfIsWOixBB86KLLnInnnhipOfWyURABERABERABERABERABERABNJFQEJbuvo71XeL0LZs2TI3ffp098wzz7jvvvsuch4IPu3btzdnVcOGDR1uqzQ03GxPPvmkMcfVFmXbeeedHQLn+eef70499dQoT61ziYAIiIAIiIAIiIAIiIAIiIAIpIyAhLaUdXiabxehbenSpW7atGlu+PDhORPacFV16NDB1a9f3yECpaG9+OKL5mj7/PPPzdUWZZPQFiVtnUsEREAEREAEREAEREAEREAE0k1AQlu6+z9Vd++FtqlTp7pnn302J0IbucJOOeUUE9oKCgpSI7RNmDDBjR492n344Yduw4YNkY47L7RdeOGF7uSTT4703DqZCIiACIiACIiACIiACIiACIhAughIaEtXf6f6bhHaEHoQ2p577rmcCm2Ej9apUydVQtvzzz9vjsJcCG2E7F5wwQUS2lL9BNDNi4AIiIAIiIAIiIAIiIAIiEB4AhLawjPWGWJCIC5CW7du3czRliah7eWXX3ajRo1yH3/8ceRC2y677GI52iS0xeQXUZchAiIgAiIgAiIgAiIgAiIgAgkmIKEtwZ2rW/stgbiEjp5wwgmpy9GG0DZy5Ei3fPnynAhtONr69u3runbtql8LERABERABERABERABERABERABEQhGQEJbMLQ6cNwIILQh9FAMYejQoW79+vWRX2Jaq46OGTPGmH/77beRF0MoVaqUg/tFF13kKEShJgIiIAIiIAIiIAIiIAIiIAIiIAKhCEhoC0VWx40dAYS2L774ws2YMcMNGjQoJ0IbIYwtWrRwnTt3tq8IQGloVHl95plnzM32ww8/RHrLEtoixa2TiYAIiIAIiIAIiIAIiIAIiECqCUhoS3X3p+vmEdpWr17tZs2a5e699163bt26yAHsuuuulpuNPG1t27Z1ZcuWjfwacnHCxx57zHK0IbL9+OOPkV4CzBE0L7nkEhM41URABERABERABERABERABERABEQgFAEJbaHI6rixJEC46FtvveVuvvnmnAhtuKv22GMPd8opp5jYlhah7b777nNjx451P/30k/v5558jHRu4CHfffXd3xRVXOKq9qomACIiACIiACIiACIiACIiACIhAKAIS2kKR1XFjSQCRZ+7cue7aa681oe3XX3+N9Dp33nlnE33atWvn+vTp4ypUqBDp+aM+GS5CmCNsvvbaa46///LLL5FeBryrV6/uevfu7Vq3bh3puXUyERABERABERABERABERABERCBdBGQ0Jau/tbdOufmz5/v+vXr59auXRu56LPjjjs6QhmbNm3q+vfv7ypXrpzoPiFUdOPGjcYb7rlo5cqVcwceeKA744wzXPPmzXNxCTqnCIiACIiACIiACIiACIiACIhASghIaEtJR+s2/0Ng4cKF7vLLLzehbdOmTZG62nbYYQe30047uWrVqrkHHnjAviK+JbV9/vnnbunSpe7OO+90/DkXDdcgDsKOHTu6Aw44IBeXoHOKgAiIgAiIgAiIgAiIgAiIgAikhICEtpR0tG7zPwQWL17sbrjhBrdy5UpLzB9lKOMf/vAHxwfx56677rLCCOXLl09s9yBqTp061Y0bN84KUeSiVapUyZ122mnuiCOOcPXq1cvFJeicIiACIiACIiACIiACIiACIiACKSEgoS0lHa3b/A+BZcuWmci1aNEi9/3331vesCgbQhvhjIQytmjRwjVq1CjK00d6rsmTJ7snnnjCRM0NGzZEem5OBmvCcy+++GJzs9WoUSPya9AJRUAEREAEREAEREAEREAEREAE0kNAQlt6+lp3+n8EVqxY4YYMGeKmT5/uvvvuOwsfjbqVKVPG1a9f35144omuc+fOUZ8++PkQL3ELjho1yg0bNszytFFxNOqG0Fa3bl3LEVe7du3E58SLmq/OJwIiIAIiIAIiIAIiIAIiIAIi8FsCEto0IlJHgFxhY8eOtXBG8rRRFTPqtssuu7jSpUubyEa+uKQ1nIKrVq0yN9urr75qIlvUFV5hitB28MEHuwEDBli4LgKnmgiIgAiIgAiIgAiIgAiIgAiIgAiEIiChLRRZHTe2BMgVNmPGDPfCCy+4Dz/8MCdOKwogUBShcePGJgIRSlq2bNnYMivuheEanDlzphs6dKj75ptvIg/P9SIbnNu2beuuu+46q/a68847F/dW9P0iIAIiIAIiIAIiIAIiIAIiIAIiUGQCEtqKjErfmBQCuK0oiICrjRxiP/zwQ05uDbcVifqvvfZaC29MUv6wOXPmuIEDBzoEN3jnws2GkImwdtJJJ7lLLrkk0dVdczKAdVIREAEREAEREAEREAEREAEREIH/IiChTYMidQQIFcXVNmbMGDf+GXMsAAAgAElEQVR8+HDLH5YLIQjwu+++u9t3331d9+7dXfv27fO+LxAtEdcmTpxofBHZyIGXC7442AjPPfvss63whJoIiIAIiIAIiIAIiIAIiIAIiIAIhCYgoS00YR0/tgRefvllqz6ai8qjHop3XXXp0sVddtllee+6IkyUIhMUQVi+fHlOwnI926SJmLH9RdKFiYAIiIAIiIAIiIAIiIAIiIAIbCYgoU2DIbUEpk2b5m677TarPJrLZP3kEatSpYrr0aOHa968uSsoKMjLPvEhuQ8++KD76KOPzClI9dFctT322MMhYB5xxBGuSZMmuboMnVcEREAEREAEREAEREAEREAERCBFBCS0paizdau/JTB37lw3aNAgt3TpUhPbchHe6K8I91XNmjVNbGvZsqUrVapUXrnbENRwsFFk4umnn3br1693v/zyS06HXOXKlV3//v1dnTp13D777JPTa9HJRUAEREAEREAEREAEREAEREAE0kFAQls6+ll3uRUCy5Yts2IIo0ePtpxtuXRfkbQfce2oo44yFxbiUPny5fOm38jNNnLkSPf888+7tWvXuh9//DFnwiVFJvjUrl3bPfLII5YHr0yZMnnDUhcqAiIgAiIgAiIgAiIgAiIgAiKQvwQktOVv3+nKMySAuEb10aeeesq9/fbbOUva72+DEFLCHY899ljXrl07E4oQiPj3ODYvTH7xxRcO0fLRRx91n3zyiYlsuRQt4UXuu0MOOcQ98MADcUSnaxIBERABERABERABERABERABEUgoAQltCe1Y3db2CVB9lJDRIUOGWIVM8rTlMtwRFxbONsQ1XG1t2rRxdevWdVTPjGODHx8cgbjZYImzDYa5DMPdZZddjGGnTp3c5ZdfHkd0uiYREAEREAEREAEREAEREAEREIGEEpDQltCO1W0VnQAVMgcPHmzJ+3Fj5bJ5sa1cuXKudevWlsifMNIaNWrk8rJ+c27canAit90777xjQtvXX39totumTZtyfp2IbPXr13ddu3Z1HTt2zPn16AJEQAREQAREQAREQAREQAREQATSQ0BCW3r6Wnf6OwSoPjpixAgLIyWJf64bYtsOO+xgrqyGDRuaWNShQ4fYhJBSXZSwWwS28ePHm4vNC5S5dLL5fiO3XZ8+fayCKyKlmgiIgAiIgAiIgAiIgAiIgAiIgAhERUBCW1SkdZ7YEliyZImbPXu2e+aZZ9yqVatic52EkZYuXdpVqVLFwkgPOuggE94ompCLcFIENiqLLlq0yFGx9c033zRhEodbLnOy+Q5DoCQ3G3nu7rzzzrwrKBGbgacLEQEREAEREAEREAEREAEREAERKDEBCW0lRqcfTAoBxKI1a9a4a6+91r3//vuxuy1yjiGuEUrao0cPV6lSpZxUJP3888/dlClTzMW2cuVKy2kXB4HNdxgiGwJks2bN3HXXXecqV64cu77UBYmACIiACIiACIiACIiACIiACCSbgIS2ZPev7q4IBMgtRvjjwIED3aRJk0xAikOuMX/phJFSSRN3W8WKFd2hhx5qYZG426pWrVqEOyz5t3z22WfmYsPBNm/ePLdixQoLE/WVReMQKurvDjES91+3bt2smETZsmVLfuP6SREQAREQAREQAREQAREQAREQAREoAQEJbSWAph9JJgGKIjz11FNWPZPCCHFrPncbAhKurc6dO1vSf4Q4wkz9xwtzxb1+3GlUDEV0RGhEgFywYIGbOXOme/31192GDRvs33NZmXVb97Tbbru54447zvLZNWjQICfhtcVlru8XAREQAREQAREQAREQAREQARFIFgEJbcnqT91NBgSooImo9Pzzz7u1a9e6OLm1/G35qqSEk/IhjJSE/7Vr13YFBQWuVq1aVqHUi25FxeFdfZ9++qnlYPOfL7/80txr/D8fmMSNC0xw/CFAXnrppe6www5zFSpUiE3xiKL2gb5PBERABERABERABERABERABEQg/wlIaMv/PtQdZIkAlTS/+uord8MNN1iIZJzdW4hLXnQjZJLPfvvtZ5+6deu63Xff3aqWFtXdhpj2zTffuA8//NDNmTPHcrDh6oNBnPKwba2ruUfuf88993Q33XSTO+CAA7I0InQYERABERABERABERABERABERABESgeAQltxeOl704wARxbVNYcOnSoe+mllyyEFAEqrs2LbV5M46v/4PDi40Wobd0DQhr37osb+CqifI2jg23Le6EIQrly5Vz79u3dKaecYs4+NREQAREQAREQAREQAREQAREQARHIBQEJbbmgrnPGlgDi0uzZs93kyZOtwiZ5yeKak2xbELcU37YHnPuOs4NvW9ePoIjQdvjhh7vu3btbGC3VR9VEQAREQAREQAREQAREQAREQAREIGoCEtqiJq7zxZ7A+vXr3QcffOCuv/56y9WGABW3vGRFgYjjjea/butn8sG59nvXz/2Rr45wWXK0UZGV3HUIcGoiIAIiIAIiIAIiIAIiIAIiIAIiECUBCW1R0ta58obA559/7gYPHuymT59uIaSIbWrxJYCDDxdbzZo1rfJomzZtTGyTsy2+faYrEwEREAEREAEREAEREAEREIEkEpDQlsRe1T1lTIBcbQsWLHAvvviimzZtmvvhhx8yPqYOEJYAYhv52sqXL+8GDBhghSEqV64c9qQ6ugiIgAiIgAiIgAiIgAiIgAiIgAgUIiChTcNBBLZCgOIAVOGcMWOGe/zxxy1XG4UR8jGENC0d7ItDlC5d2u21116uc+fO5m4jpFTOtrSMAt2nCIiACIiACIiACIiACIiACOSWgIS23PLX2WNOYMmSJW7EiBHu9ddfd+vWrXMUDVCLNwFfCGLvvfd2/fv3d9WqVXNVq1ZVzrZ4d5uuTgREQAREQAREQAREQAREQAQSQUBCWyK6UTcRisDq1avd4sWL3ejRo90bb7xhrjaJbaFoZ+e4hZ1tuNmoRNqhQwerTCpnW3YY6ygiIAIiIAIiIAIiIAIiIAIiIAJbJyChTSNDBLZBAFHtl19+cRMnTnQPPfSQhZCSr00hpPEfNt7ZVlBQ4Hr27Gk52/bZZx/n/z3+d6ArFAEREAEREAEREAEREAEREAERyDcCEtryrcd0vZETQGxbvny5mzNnjhs6dKjlbkN8k9gWeVcU64Te2YaLrUyZMu6MM85wRx99tKtQoYKcbcUiqW8WAREQAREQAREQAREQAREQAREoKgEJbUUlpe9LNQFcbORoGz58uFUi5e+EkarFnwAOtp133tnVrFnTde3a1bVo0cKKJfBvO+64Y/xvQFcoAiIgAiIgAiIgAiIgAiIgAiKQNwQktOVNV+lCc0nAh5AuWrTInG3PPvusW7NmjV2SnG257JminRuxrVSpUm633XZzF1xwgWvZsqU52xDb1ERABERABERABERABERABERABEQgWwQktGWLpI6TCgJr1651q1atckOGDHEzZ840Z9tPP/0ksS0Pet+LbdWrV3cdO3Z0rVq1smqkhJWqiYAIiIAIiIAIiIAIiIAIiIAIiEA2CEhoywZFHSM1BLyzbeHChW7WrFnuhRdecOvXrzehTc62+A8DxLaddtrJKpD269fPNW7c2O29997xv3BdoQiIgAiIgAiIgAiIgAiIgAiIQF4QkNCWF92ki4wbAQoirFixwo0dO9acbVQjlbMtbr209etBbKNAQsWKFV2nTp3M3YbwVrZs2fy4AV2lCIiACIiACIiACIiACIiACIhAbAlIaItt1+jC4k7g559/NrFt6tSpbtiwYSa2UY1ULf4EqEiK4IbYNmDAAFerVi23zz77xP/CdYUiIAIiIAIiIAIiIAIiIAIiIAKxJiChLdbdo4uLMwHCSL/77ju3dOlSN3r0aPfmm29aZVL+XS3eBBDaaKVLl7YCCSeddJI52yiQoJxt8e47XZ0IiIAIiIAIiIAIiIAIiIAIxJmAhLY4946uLS8IkKPtww8/dGPGjHHTp0+3Agk425SzLf7d551t5Gk7//zzXf369V2NGjXM7bbjjjvG/wZ0hSIgAiIgAiIgAiIgAiIgAiIgArEiIKEtVt2hi8lHAoSQUo100aJFbsqUKW7GjBmbnW0S2+Ldo4WdbTjZTj31VNehQwc52+Ldbbo6ERABERABERABERABERABEYgtAQltse0aXVi+EUBsI2fb+PHj3eTJkx0CHB/cbT53m4S3ePaqr0ZarVo1E9uaNm1qOdtKlSolZ1s8u0xXJQIiIAIiIAIiIAIiIAIiIAKxJCChLZbdoovKRwKIaoSNLl++3Nxts2bNcu+++6778ccfrSLppk2bVCwhxh2L2LbLLrtYzrYzzzzTtWrVyu21115WoVRNBERABERABERABERABERABERABIpCQEJbUSjpe0SgGAS+//57xweR7Z133rFiCeRwQ4RDdEOQk7OtGEAj/FZCSXGxVa1a1R133HGuTZs2JraVLVs2wqvQqURABERABERABERABERABERABPKVgIS2fO05XXdsCVB1lFBRL6whrhFSSrGEt956yyqV4m5TiycBH0a6++67u969e7vmzZtbgQQVR4hnf+mqREAEREAEREAEREAEREAERCBOBCS0xak3dC2J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PTTWRB8XUqFnahXQ5kDF4nj88ccTs+3jjz9OAWdJx6uQXTt5WQeMAJFGwb777psOGJmdPjGGJjoxWZz+5ptvrq688sq0LjmBMeqxAPD361//evW9730vgb/WZZ+CI1qAF198cfXb3/42sXmj8UY962qynyI5QS9whx12SPul7rdG7JmTtWz5368baMOM0ME7RpWAtaw56bukqvPUuVo6gZW7C+oat9dee6XzJEpI27EqVbU4A88666wEtIWETDvmZdTuwrlOj2uJJZZIYLwkWoz2WqAOoI3sAEYb2RpNWgJ8be96aNudtQpoy8Z57733ErPtzjvvTIctZkdktcounVxWweGU6cVmi43kL22utM/avOmmm1IJaZT2lV2XAAvgLwaCMmZghrK8vgAZAFzBxcMPP5yYvEC2YLKVXVPDujqgN7N/sSwxYwJIGZZ1y1+nTqBN4EY8WTY8RpUANeCaIblqzwO02f/+9V//NX2VTLA6UwTS3tljjz22+upXvxrM/RYszKuuuqqaOnVq0mb74x//2II7ilsYVQtk5qvycsBvjPZaoC6gTUxsPSCiRHzc3vXQtjtrJdAmowlY03HviiuuSGAbByxGOQsIGpWI7rTTTok11DfG0LAsZ136ItZ77733RmnDsAw7i+sot5JV1Pl2hRVW6F27dULPF154YepqG0y2wotpyJeX4dRh1JcsZ9ZqG/LHxOUKWaBuoO0b3/hGanAS498ZbYPD319//fXqwQcfrLDGMXxLMttyYhHYtvvuu1cbbrhhAt36ksDp6hqbMmVK9cgjjyRtNmBrjLBAUxbIjbc0grMvxWivBeoC2pQTr7rqqqkRG03eGGGBsViglUBbvnHOFgaRjo90sWQ9Q7NtLNM69p8Z7DBKXJ7DScw7gsbZ21B5s8P3gQceSNl54NuMwcPYZyF+ctACWSsQ8Eu4GsimAYI/90n7SokMdmQG2exvsYba/y4IxjHZMJSUlSgXjexm++dtxjusG2hbcskl03kRY+YWkHTg89FFUtVAr6tU46F8xmCgKgdab731KiBP6NE2szrN82effZZY69YApndmPDZzR/Gpo24BMZAv5zxgZZlllkmdimO0zwJ1AG3IJ/y81VdfPUkOBNDWvnXQ1jtqNdCWjYZO/utf/zo5XcoLSpYUtHWiSt1Xztro4khnSIleOJtjs7bAALNNBhbY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TXfK2gqyecbcYW3ppZeuDjrooJTBx6yIERYIC8zZAgG0zdlGXfwJzBUlo0cccURKmAB5gG0lB1ab5AagZ6+99qrWXXfdaoEFFij5ka2/Nvsr32P/0tpsSkSxCAGdp59+etInjREWwKbUIAXQBvAt3cxK8lMpufWHzamUNHyy8uuwLqDNfH7/+99PpcGh0VZ+XvvyCQG09WUm4znCAmGBCVlAYPbkk08mJtv9998/vVy0pLbPhG70//+lXCajyxWQjRZNMNkmY9H43VG0QABt/Z51jWwkTpSQ+rKfl0ycANvmnnvu1PEZu1jX51FkFktYPffcc4nZR5vtf//v/120bNQqxmajzaasi1B5lO72+90e69MpHb/qqqsSu7WOBinuC7tVGTnwh5TH4osvPtbbjZ+boAUCaJug4eLXarFAAG21mDk+JCwQFmijBWQ4sR/OOOOM6oEHHkid0Upr+kzWDphsnDnlSZhsWBQh+jxZq8bvj5oFAmjr94wrGwX4nHTSSdXbb7+d9vWSOmGsic2CWQxsE9xLhoxa6dibb75ZnX/++albtzmog0WUy/V0fNQFNs7Dfr/bY3067zx9QHvAPffcUwGBS4Lt7ot/Zg1iVx522GHVWmutNdbbjZ+boAXqANqA+TTa6D+GDucEJ2pEfy2AthGd+HjssMCoWyAz2ZQXPf744ynzTsOj7Uw2wdzyyy9fffe7362++c1vpmz+KDInRn39xvNPzgIBtE3Ofm3/bd2jdRs85phjqmeffTYF2X/+85+L3nYu55f8oOODaWyPHqUBYAMweL90fi2ZuMIiBGYCNrbddttq5513Tn+P83CUVtysn5WPx6/DatONGMONVltJHy93IlZaaD1al7Emy67HANrK2jeuPjkLBNA2OfvFb4cFwgIdtIAgjGbHNddckzKdmGyldWQmY6bc+ADItsgii6SyJDogkbmfjFXjd0fZAgG0jcbs33bbbdXFF1+cWG3/9E//lBgtpVktgB/dnzfccMPqxz/+cWK19Z3ZBtSghYfJd+aZZ07XxCoJagDUdHlUKnrggQdW66233mgs6njKcVmALMjPfvazBP7y+0o3Rchl5N/+9rer/fbbL5U1h682rikb1w8H0DYuc8UP12yBANpqNnh8XFggLNCsBQQEulHdeOON1e9+97vpGjIlA4LJPrEgjaO28sorV+uvv34C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iABBW4IMNJf5X4E1a9bYPffcY7t373bTRo8fPx4Yz+mnn+6CtZo1a9qgQYOsYsWKgR07jANt2rTJli1b5ioItTZeGJs6utavX9+thxeP03TDMOWYCCCAAAIIIIAAAggggAACvyxA0MYrI+EEVq5caVocXxVWqmb76aefAjNQyFayZElr2bKl9evXz8qVKxfYscM4kNZpU9fRBx54wOQexla6dGmrWrWq3Xrrrc6dDQEEEEAAAQQQQAABBBBAAAG/BAja/JJlv5EV+Oqrr2zgwIEuaAuymk0gSUlJrtvoFVdc4bqNpqamRtapKE5MFYOanvvwww/bggULnHeQwaauoVSpUpaWluaCTTWfYEMAAQQQQAABBBBAAAEEEEDALwGCNr9k2W8kBVTBtnTpUrv33ntDWTPszDPPtLPPPtu6d+/uFuhX6JYI26OPPmrTp093FYRBroknW1UQKmy7++67rX379onAzTUigAACCCCAAAIIIIAAAgiEJEDQFhI8hw1H4ODBg7Z48WJ74oknLCcnJ/CTSE5Otjp16li3bt2sTZs2LgRKhO2ll16yiRMn2rFjx9y6eEFuJUqUcEGbpgt36tQpyENzLAQQQAABBBBAAAEEEEAAgQQTIGhLsAFP5MtVJdXevXvdFMbBgwebQregN4U+F154oV111VXWrFmzhAna3nzzTXv//fftyJEjdvTo0UDZFW4qaLvrrrusc+fOgR6bgyGAAAIIIIAAAggggAACCCSWAEFbYo13Ql+tgrbs7GybN2+e64IZVtDWokUL69KlizVu3NgUAiXCNmrUKHv33Xft8OHDbs22IDdN11XloII2ubMhgAACCCCAAAIIIIAAAggg4JcAQZtfsuw3cgIK2rZu3eqCtmHDhoUStCnwadu2rausql+/fsIEbWPGjLERI0a4oE1VbUFuakAh99tvv91N2WVDAAEEEEAAAQQQQAABBBBAwC8Bgja/ZNlv5AS8oG3OnDk2fPjw0II2LcivoC09PT1hgraxY8fa22+/bYcOHQolaNOU3TvuuIOgLXI/lZwQAggggAACCCCAAAIIIBBfAgRt8TWeXM1vCCho27x5s82ePdtGjhxJ0Bbgq2XcuHH21ltvhRq09e3b166++uoAr5pDIYAAAggggAACCCCAAAIIJJoAQVuijXgCX68XtM2aNcveeecdF/oEvSXq1FEF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", - "created": 1731846113674, - "lastRetrieved": 1731846113674 - }, - "f6104a267b941b1e71e4188461fabc63c1406c02": { - "mimeType": "image/png", - "id": "f6104a267b941b1e71e4188461fabc63c1406c02", - "dataURL": "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAABLgAAAE6CAYAAAAV5esiAAAAAXNSR0IArs4c6QAAIABJREFUeF7snQn8bVPd/9fvVookSopSFxkyK3HVP4+Ekkw9KJI0aFBSiTx56kaolDKlkHm40UCkQsS9XFNyiSR0H5VIKXpIhuf+/q/3Wnvtvfbaa5+zzzlr77PPOd/18nN/v3P2XsNnfdf0Wd9has2ZG08vUkpNTSs1PaWCyX7Hv26yz09N80X2spuPfYfP3Pcpc4aaVovS99w8bEF+haaVeYrP7e/8lpXuVdFUN1+9Qhv9r3N50LapEmB03tn30/p3A+TU1JRuXTBlwKVfT+tW0SbKMu1zvjS/etWYnl6kpqZmhMvo8VPTH0rXeGp6kZqukK/FLa2plgMycCoaws9+5mPXpc45qdDCZNquce+QOn9b9qJFhJ7I9+OUW64r1L6Q26zLPk/qrmXFa4P9LPRdj11beDxrmelvm8w4Rnyz/rOf2eeoD5+VSHYqQ73W0ci9FXM7Djrn4sqD/p2ZbGpGNnqSv91c/Hq7baYPQu1z+wLEpp0JbmpqOvd35xo7yKcTblIji7nOO/+ZlQ3qwdxSjj5Db0r9n5o2EupNbGkfJsD58z1VcqUeOQAf/rXYuO0Ljzvmvuwpd0rIhr07Ir25Lq122efZzOg+UXy6pCcqrgU52UoaYeb0/JyflqIb52DOMpDKc242dyqWX7ks3vm11OTir72F1nntyk+7yXrpLGWBKTjfFETNmzi1+Dmf2b/9f/N16wK415BFVnYL+4K81JuZ3wgacpzVK6ugXRmt3Pt7h3S+SRpQZZ1Ih2ng4Q7TvK5jqA9t3ezaS538elefSwsrsi5Tr+npGAYrO0DNfGcS81gy/wb6PlQHd20y2WRy5mJrx0wmJ6bMRcm+kVGlv/PmLFufGUl9Uuz9cZU025d5M2dlsuH3nS/PugWBtThrS4JUMo66bDuqd1tPT/rjyZ9lirNiaARmn2XP5z9zBNGt36LpVEDN8prflOqVe5HZySLIeq9u31nkLEmJkOvDhxb+qeR5s4znBsEMt41WSDJ5M4uWPRV0AjNroZUNnZvuT9a4bOua/u7A2e0oQGvL96LJ7FMYW/bz0D6ibO7010/bZivvxXNT4fCQbNP9NpW1sXvbuwmxez6cTs+b6aknOX+aXrSnu2yO15+m+5ZMHvxza9lJzZ0ZQ8+ERlU6pVGndHLM6pRf1fP1TtvR4fgYmn98FP16M3UzXKiORiH528qxXWfyR1Z/d5RHwKwPydxvM003jwbr/F4xP89na0gyPxaPqiHx63ouL5WopDmFPZ/zgZ2W3KmESrC/sJWBf3Ar5p/4OEnk38/OS+BV5EzsCT6ThYyr8H/zsCoT3AAIdsykX6ULqzMnZl+mU6n9yPY3MpTuOxLstGx5dSnIYMnc4bIw2XzRQ8O8thbX60KP+2/k/tZjAYLLVqbs0GrfKiOr0unVaYvb+WUEmfueWRhMA+xi003ADcWVJ7y6TbOdvg8uo/6qRx3dPguuimYG0i2yRJe3w9WbTDupJNRWWreydS15IC3Sec7dnKa4lhBgnRarMvKjCq5pD1Y9PTmzsBVCLQGFk1WAfU2EymKctRn5KW4W3EHatS0pQC4NmycS9XHL9qnbt6GTjEdo6s2V3v057dJ1djcu4c12P4SXIS2zw4xLZroHq2yc20XNCKhPArnv9FOfzmPQTN96UfUZ3ZIX3XFb6OcOJFdG6GbttW2lqIzU4/sZun/MApARPsU+S2QvcGOAXJp2JTOdN2jzsm/kwxJLPsGUKzfdiZn882R1Bpp/8WBE1RBY9pIieyY/Cbn1yHJ0Fxz7uz+HJ3N0enDstkjlOzk0FbqjJCktfyHQdYBXfyAnW0l/pURXbsJ2qpD0hxnnprOz/krGVPq4i3/ysJV/PT/aw4Dto3SUegXm545CC0vWFHcj4spU+PBfJL10jTsSIvlV1cqcqZ8rM+kM7m2PsxHtyrV92tDZdqyasszG1B1ryYY82SvYfUMe7Txi/rxWnNaLgIaWg7RVJQSXW2rZ2pu/CLSbUr/87G97AeEeWtxNrUtq6flIX8jZmcnUqIzs8nFxyU33PSsXPullyjZkWrp2B5iiAv6awzDzbipRdh+WND2rc55oKJJcWR3877qRVp1kvYwALs42+TFR+D63KJcMXNNL3tWuf5jwV0N/vnaJBHdbm+ST1iPJJ/e3IZV0LRaZ69lsBCfz3owp8537nMve6t+z1T6tgUOI2RMY9635eT8h0dLrbvO2IU3N3imMuyc0zkOhrXyWpxkj9pnQKuZvezNZKuvD0Bi2FQrNjX6fu2O22C6zD87ys2PcENzTejzlR703ByZ/0h36QO+sOCmRUlh5A8iULibeEqD3IvY8l78gMvU0ayGVKe4BvGOZT7LYvnP72zk7ui13jmbJx3niIhP0pP9SUcsUMMw37v8D4tjDR7a9DCU9PJIyQ2c5Pbc6xJdZV7J+cc/5+nOvf+yFUYjsMNva/L6kbI+aNS+pvTsmO01rjliYwewclWxWvtwlz1CEbl86ZZm9QHZ6y8YJyjXZ51mFDD7mb/+yyf7tk0CF28208XaM2dOMP08681RgagqRWXrP7sqO7o6kf9NpI7kxcrIPXZy57UkJL4/iyOb1wBjLLSlOYVowc/o/Idqz8gjw9xnZi+H5PD1yrzFz42mElgXBbgrdUi1b7Nek2MHmCZcES6fWEu0wC6h9zgiiYU2LKdelyfRhhMbdLvhPVUaw0xGpEyOU9n5ek8susOmhIaT+lhAxOUJGC1deg8X/u6xNIZJLD9UeNb26EZ25xSC0qgc3F8lbZTNyIsH5getfvyakUiJoZmPOG840pfO310FJblrrJZHPHo7CVmfADKH89NBPfqYvnFtzTxuH6TSknVOQpV6EOnk2dHjyyS0z1s2B20BcHE3dyLE+qlZ4pSqxlZPDwgRltLn85OJgx2amqcQGasrRYMv0K/IEk9HisoRVoeiyydGdIAsv2YmaehtNLb1U23GRklDeRl9v9qycB3Z1zlJoiM6MlzVVsARLuQavrTbzc5jQzBY2U93QLJyfqd3ninmGjg8Dam71KJh6e5PsedIboDQPb3fmTLx2M+XKS7dDs+0H9wbMrMeu1o8ts5cVzsHRqXJaXd2xSemBbIvEQFiDqxzaLrvY0hfd2dXIaP54ZV7Mr1PJoa3wefGioAzBsNT1KDiVHzdtKt4Qmz2QaZ+Pn6m5S+D5V+OGsM76NNsYmtbZPVf+GWfTna5PpqxOsuvmXST6i3JVJK3M9r1w/nUOuRAWlthK30++Z97z6xcimdxxZbvH3bZU7rIuD3YmegsTfg8b/uREy8lWJ3dTb/92pTo95XiF5iVfSxfEUTKQcm+lmlmJCqBbpv5uOnvPEllWnSQ5gRvpzf8/p7hs8+E5tnb+6T0dHCXrif4+k9MwqZVB4B/E7aW63a4Wt6bWriIPY7fjQPX5Pus7Izuhw1p4Ds3WT18WfPlwe7WYV9lW3W6j7ba3W5stQmVzqH9BUHzOshiZBUHWsoTYQppSsiMjVX3Jz3qr9xndIJS8Fz47JxObHYrJWEhXKJfqjTWzFPPpdMQqK9X2YYHgStYau+6472d746yHs3OB6Y9sr+OO9VwuRdXIfrcGZY1L+qqTJZp91b0UM2cgf81151SXBCvT4OokKHoVDczbhkVKx5U/xWVLcmchCgx/S1xnp5d8FqGLwkIhTvluVUI7koTvzGeRq78/Djs3zp2PU6nztbgLmpFuGVn+WoOLTPxGZ9oN5YoqIeRdTYDsMFWU5uJBuUziO40EV3DyrGbvU1s2b4W6o2xTHJQ+ZzXoZE5k3s1oBnc5zfjeDuZaPUwSZeRXbhpKGmlZ8JB2T6fR1hUjd+X3zJ6KWlsdbGQcM4KM4Ep4d4dc6FqfsAAHTvoZp2+mPqPNwwm4jJTqdWlztbpCmlx6mkwOH2ECIVyif4CyY91KXmjsuzm5JJdrsuabLvYqK1XwcceAWSY6T4y5/k537WGSS/djTnspM+Xx62bx9s0XB9Ze828DQqquzsAtjhGrCZbccvmaoF5D3EOdq1Toap6kC4pDdPpzRL+bq2yGzXLMMKw+Y4f2AsWxHs7P14SrPp/ltr5m05LbWSfl6cecsjkfBrV3MmLRJRnL9fbtZO+11F0DStaD4uHEaiBm3FHoUBa6NSsjFIoHrioj3Izq/IE9NMazNmfzmf+c+4zZlGYEkYOdd5FSXerK25NpQFZtc/65rE3FK5X8ymNWnzzhFzrgBhe2wlVgNrX4GqkZed/tsO7KiH42+cDMEdnhL71hLlTNlOXvT9K5KpUOl8hPtGnMoqhztL2vybCU+Op0CWGraupYaIdTT3e+6yz/+cb1Rnh1m4lChyh3TnCvQV0ZccdYNkbyb+anMt1zqY1P9o6eq8k6VZEwWlyulpbOyZoiJgRWbnxrYXffsUSZMxITza6cqkoKj1OfZE+QvdnpDGHl0btkrDhk/Tk0tJ92SaFMTqps0t1zTGH3ESRCzVYhWZPSrbKfj/t3Vg//4iLXNmfD6LaxKsHVbeapBLenoeVrMZv5NjmXOuLtI51bnpOCQ3sHW6cMrZITYG7jk7nIMe+XjblKLTY5lGhC2/MYQ8s31+a94h4/mXcTxRVTA38N7c6g5C6D08c9TfL0gjW0kjpzVspaWKiS3vI0A320gutziMsIdGzZmST73NXQ8pVr7N+mnq56A03JTP8zdE1rw+uxM/oSXcRMUzGwJOY/qjKFpKSsqatVVPBPP/lLwaxt9vOcDJaIiPtxWrWO4tRd1twGh8ZBb2eOrLwCwWULcm+PrbqjC04ZU+oqKpVZa3XyJ1LsAHNjadUms4kg29i4gpWZLfrDOnQHXJx8zCat+qSUezK0Clh1Qo8MyQ9crtGSEeodev1xW7Vm/uTeSz7phFq1MGfx6OnA4BKBSftz5j8eIZafyo02l9tdpW3syU+S02jnujFb/NwpI6DzGBL6EI6J9lZqqug+Y7/rYApnHx+UZAlpdukx1kGTy5rombGYmYPEJrm6EVqdxDMoCwnpRb5mc+goLtuDUmAmtcSSUdnOm7/25oPLq7Fvx633IXYe8CYhZyykspgcIj2F5QIs/lxuH3D7y5/P3f438pDxvuUkUX7yNFV2Tc7t99Vmo5Bsh7bs1XLrcTLz5jTTNa6TluSBXDcl7bPm6blVu6gN45KMds7N+7Msa1kXUsOfFAPrWdoUb73zp9xuf7si2z/CWsJKXvdXMiNTxeczychm5bLVKCNLQkgOOqf2h4OvkWZzKWurv830hM050Ji+Dh3A0lUk1e7K5VLRF1e2FmX+jHLLmSNEIbIoeLBzSOKiXx5ncLpNCIpGdtgz65V5IRvK5oOql0bNy4Y749kG+uPFPWyXzQ3u59m4CM0wGu+cwnryVKphZU/VoTHrOnK0RJa5nNKjLiG4UvVLrxyINQgzY4Ply35xLuhpvxkamBUz6OlipOOCFD5g9E+GFuUjrwFhGuhbAXRyA1McI9mYccdQCM78ESgpO0evZG+l5lf20sHx+anL6eIXuuo5zUeobH4uXTaDp2trY91p7eo0h1dfJfz+yG1DPHNEF11Lapk9fnCl61iJbkcZN9+8JpeZpwye7gCzbFYXv9a9jFO/Wf40l1MhyWfsWotZ25m8y4Ps+RDBpVvpTIHlcpY9ZDBx98HeHNov9+DArMeV/rsbzpnEB89ugbr4u47CI+kHXr9XF/fSJ8MkV2gCz4QgJbjKJiu/E9P9RMnkE1JK8PPoRHDZ/H31uhy55jCoydRbCko/h5+yLcWgfdTZNbcRSH8J76f+7jbITr+95OMTmiHb3bC8JKVUoVvTK1ozCF0tmbT+BYKLbzzfV0lFemrfoB2ZlplIpRtUoNuq4JftPZ/3g9Pb5rvXZhniI++by2wsDJohZ/P2c9f5uJ0cYxNcRg76m/FL5YEACgnBNUPN6OpkP8M0r9idyWskwitkwmw6I9CtSf/YgdLlFkw/5gzN9LbGm8MH7b/QIaB4cOx8ouj1AOluFXqV/+DzgfOHJbZ8Scz1TIgJ8tZ495HsyFeYEDzyJnwELepc9Nn6YHtNXmU3ae6+ySVPe69BlaNH8ZkynxrJ6uBUo+ywn69proSkz3pZT8ycmGDW64tOVay2lm8qkr/0S1dHR2vAbU9RSvMEV6iXTKPdJbms//23fRkJLf0aEv0/V6PKXfNNrrnx4RBcaZnJWpkOq9wZM+zg2/X5ZduUb0PAOU/yQH689i7dcd7ob4zY+SEb3vmjST5Xb5y4HppphHOnl5EOgYnDNji5NUt9c6XvO9fPqbll4svLaoUlz2a+Z/wjlS3EdyrfoT5xOqJyLp3lpryeeWLKLc4/FfjfdVqZzHf5cdodK1uX0hk06eOy1bzgOyitslNX7SbIuIVI5dWZQELubswsYt9zGGtPP7VKZ3VCIbiN9zS4khm/pCg39/Ix3A+xafdIruZ9maaOc4Xr1LPznGIviIzFQjI3h8iOtN8SQiWobuC9mPxpLFbsotm9t0p3jb6ABupZrsmVPWzb3I3g8mvayRuJfTbvobBLW/s77oS1d6qcwztVx+keq/jjz8bp37aD9Afls0JWXKc5rbxS+SaFyskDmCO4ShSQCl71Owl9N1GtQm7l18m82r79Li+0nXeVA+w50+YE8+i+TuTg6EpwBSK0kYEbta0bvmXf94pB2dgobrbzJfqHwcrlOk75dZtNw50DfjJVh3YPHSIfxcKjMLEFIit2NEd1V6MOao5tILjKMPO1ukKmOd3ko1f57Yfg6iZzrvquX19fc8nU16fb3RkqPz771uiqmeDSNXbmK0tMVFmgO/WZS5yFlM+sFlc+D3dhyi9Svfqbs03q1ue9yp37fNl2MFdm2vhkgddzl6eE4LxgDM/zznJNmaFFxW9d6XZvkGaa0pOiyg9bWRGu7PSyrjs5dNTEKm9MOR758Vx6PAuu62VH6SqgxiC4zEyT+QNxyw1ptpfsagtCZ/rGaq0WHchn2l2JBDoy4C+37oGsTEbSz0v08oyElxNchfGWclCZra8dAXaYmUuydOegG2L22qEIxQke6QV3ePYYT4LLtDU/y3iSn5oIFiMpFrVqOhyWNYnlaIMlAp1e4zrLqo68mEZLTOQjjdiY1a+qP9oqY9bMd6b+vv+uQWbYoty4GJUfGoy7DSvHoRXIfFY06/dPxcU+6USklF1kdJw9+yK4imRHRnAZqbTmh/5amM6vjgwZWQxHz+zGE3SQ2gTkgNpZ8PAeKqlr7mnngr124l9RYM3cOqWDKbjvuOe1/FWszbiczPGL9ske3TNOYdn5P4uontcQdudT98WspFgElx6n/nbS09rqdHGbaXGZOvs+wN3L+1AXVdk/F93Ll3R2VSGoKCvJAliyp6yQiT8BJH+XfFzMsNCeTjNK58bbOSq0/8gXnM+nK8FlXy4zTwxa2QTqGjq/VfnMHWz2hrPjyaGk3wY9AFkG00wvyfQbPItk0RODA8IlbcKzRvZaAm7Hunffw+cjLlSQa7OImgc7adJ1ysqFprz+roFcPjezV7U77cT5d1mB1tzMjy6hG9JBz9m79UnL1I0vr5uumkNwuT65SjHxCa4up8O8k+pBpbdap3cjpzqZLYbmiWqllj/VD7llxGaRmpoyQYC7pUybKXOu77+TRSUjx/ySlyckk8ND0rdp1MTEIb11TG8J6yAZZuU13UU4rUgGpZENMxPlHMzbipetFd58ZevuauqZIZPHwrbfzAtmA27MNV3THhuJzc6N/uSYtaNIYuWPE+5ho6sGWB/kdjeZcL+3rfDnM39PVZC16Wnte0uf2dz+8Pa+bh+YLg+VaD9PsHUCDnRuSx5XO6WWXV745FY37Sw7hRmfD6Ymvd1Ilx32un1uZl//1rr7HOTgkVTUVDv7vIiYxbxEmTIptFfF3azfTFs7tcfmXT4/+weKvDSiIZHdyoccx7tjN+wPqyhnru8sG2EuQbODLxnkJN+7ST45Ec96ITcaHOEqkGvJfGhkPJsfk94rcZafUMypKwA7d/UyQ9T5rDdZFIoqW+HMhJN311Em2fZzbyOZOpl3CrVaV5YAS0pJRn4AiMwfl/5yRoK3FvaE3Pc0t3x/XSZ6og2N5p5cnVBy6cAPfBbsnrwE5jWPQ3OP+awMQV2ENSwodR2b5VucI10ptxUuP/AZ2bfj1O230DvFcssILV8J2dYkpNnpw2rf1T6iSoeEVz8NqGGZ9bYn2VNk66CZm92tMuup+1wZwdD5uJzVMfec38FBoLzGpfA6fi3TNaXa3BDcW5RE3e108eR/l63PpmH++pE3W8yQKLvO1VLn1Mv8njmaN3tCf2fkYJB+FZjXunVYCZSFMZmbzswfnS1M3BeKQe5CmnEhc8WwHGaNMn3cYT7vPHRTiSofWwlAKRPk81rFiJB2bbSknnnVlGDdQjEWU7lJ6lgYJgEKLRsWoXHht6Ja5/vy7ZJeefFw9nPGyXxokStDPO8rItfZSb39zi4jwaoTXG5dgtOB7d3k3+KGL7SEVJt+kg1hNzOgkPpbqAB9eLTOyS3yTnTA1FlcRszo1pR1UY6+Lp8F8H2gNwtdR4g9pCxS01Mz1FRCFnQjP3QVpxepRUnkOr/HCjVzV83AicudClLfN8k7hv13J06eNo2r0LxcVUJDrfc8TMDZrgEFyk5B/ufJ36adM/TJqqqPELdxnSL9hUXT3qAZBHziw/Rx9ozV4HIPZ1XkpMq488mtfm5uu/WjrXcnkivUXoNLFknR1bDsFFnREFquPwx/w+eEOAypQwUk16o/20OdbnNoj558rkkXO0t25n7T0tz529Y/v+lNDgBec6xGhb1xzogt1xdObqQ783inGTu/KUlKz8i+TgLWYY9RMl0npE0WQTLnJzA/4LKGpQdt5wASWLosjoZMSrZByU1+fn308XC2GWX97TfIkgtly6n3fGiKDq8frp+1KqM7iHSJvo991m1/cXXJ5p3sOzsjF7rcO7jonC3JEbq479EXVTcEDDFsRCXrY1NLVhKSu7F2oylmt9GhTi8Kd7ZhzebzMGls1307ljOTRT11dJtM7cj1CGd3aS/Kk5Fh83n2e3rznGrXJIfa5DmH1jelmg50Dv0Z0WovArIH823xb4RNkYVjkzcvdevhQb/3+zYEflbH/NMJDgVKJpuH3NzMp+47Sd19gsvVxsotnMlth+vjRw/GpH4JkWXKyWqa+dlKPk9P1YlKi/N+vjecqI7u7cGiae0Yv9x/V3990sO23iCZwOwT/iHNg2xMeT3YxWdsRnC5yPgHBH/ezLc/O8yGznndsSpu2d2DbKnXvMJtT+YvyMhBLpBRUg1/h6BrbM8CNkdvL9OpVR2XywTG0JjKpoXkMGjlWT9cdREu3565qPvcmp+7P6+6spf2vOeCKZNJZ0+Sjv/ufe4/Yc75iRaX1qTz56msF5KdjcmiQBxaPJ0S0qx8P1LFnrEzizOVudNP7vIopOFt1lqTrzu1+dpbeo/m7AXs93YdL9fmyuZXS5QX0Pa7JKlT6V6zU3e5k1AqKNkocjmbIvlXJPn87JJtaketw1wvJXKSp77LRqi7Hwg30ie28nO0ucwzbZxSjgZXEOFCCUYA8kuOvekNKan4CglalNK2eREZktKsmn75zaWBL7/ZKxk4hWNPuXV4J5nxjxfBZ8tWQ+9zX/vHzNfO5BCwAfX3XZ17q7AlyI39Uu2kpJH+4hUiMHy1T8P0IlgsUjbKYJfF08fFOfyb8e3457KqyPmTdXDCLEyzOtKHSyIWe087Ha+ib+q9Sr6VyC1X8ENlBdhenXfSGf0QXL0vWWWOjhOYvaiDfv4xyK1yw63eNmLuBBs6HrhE06IO+hOZ9paZq6yD/TJTxEz7KENDE2BJn3c1YcxpbhlyMyCteq2w5zqz4Jgxb01/0o/clwN7MFdLp5P4+1pdRh4zzY/QATjbDNgoZVkf5jfY/hbWLE6d7oL9poRQqi7/HcrSOLvO5RMyJ90U2bomNc7NaU6kRdfPoK2YdxjK6ltGGOUd27rbppKtgEMgOLl38z2aTb2ViQ2foy/sYbt2hrvClm3A/WeSbbMeXv71gnvgC0iHU0Ff+jpLXueGhO8wMml1v89rbZlaWILLlhIyr7Ab8vyzxcOFGbOZfNrxVOTODd4ZeZ3lFbh7KsiEJZFSkt3dyjjTtr8RTfc9zuGIZ+zrJtx5plHmTHPp6MuXnT2fvGrtFBM4Tc759meDMIegM/X6eFUl+7qKfOGBwARd6mjdXQ8zCbamzybr8lkyNOPmpyXPtNA6fvfNDq0ZoXtzYstNNL50WeCZqLQaR/OuXJq6alok0eia9h3ap6aO5upr2uaVaEfnNL8Kt8HhnuiuuRWeM4snCG+/3WUx8kkwt3Z58sr2oY+VfcNdV8M7HjPNufOpLzfV9lUhgq5MvquSgrn3k8iJ6YWi23SrOZQMXnvxmtY8wds2M9Qit0uC5+1CYzKH6CmyaTe7BJc9pvSHq2lm2EuTO7cVZaR8dskuDDwQ9Suhk2O5DHSKEOye990Lm0yLKysrbaHGsGSBcJukH7EblbJTQYUZNtC0vFliEY+QmaItySXAOhFb7hjw8wvWOq2GN2dXGZ5lG5ZkETTlF0ZAUg1TXtCM0+Ed3Vrps35Sr9AqVJit0od6k70KvVuIfuwTvwnBFSq46IS/TI0+04DIqsRBT7tz9iafdBEtXQRCi3xGybjqk/kDdXHJtjn5/4aGfQhM30wsZzpTBf3ilWXurZR0SQ+xLrfqPmoJo45nPgf8bG+Tbs6c7Y5lYNO+8LLtRHDxjpUDTMEgszph5w+rXLcnlcsWEG80525pTKk+0VPqlDoxW0xNgCrrB5RJeacFJfEVVtTf7fCSp+vrPGlJs341t6qIZtkz7piyzub1eAmYRbmfhcalP2l2soXPr23ZbVAafcnxWNSr6aIrc/lNrSnVJ+bcetqDc6r1lAuIkOUc8pOcwSNDAAAgAElEQVQXMlHUk3/JDa3+3IAdJrb0eDB1tr/q5/VC5JkrliyM7mEtdFvly0U5sWWd62caafZdf9pzy8zz0/6mPLwOBeeXwHg2vdHDBUZ4qal0xWrKykq0f6XmUbmJL9mBeGueLj45OWT5ddvR+Aun3d24/2Z108KR+jfMa7sYXLPdUaGfKi436TrSs6ZTWQekkpT84u7gjEmES2hlq6bBLq9Lm+l+duruTMayssr2jb48Foer70smfKXkX+T5+bqaW/a7wqVeaHAkt+rpgS/xVRMijLPDUGilDvvJyh/QDUo+oZntIUyfmHISKU+Ksu+E+sV+5voH47O0vg7Bzqzpk0768JHMie5hoxeyqunLpZDhVNnhN1kFnPHhj5l0VDqjOHzAMGW4pTtzUE6VMOkVb8tntab8mUs7mddaVQzK7JA6lUZJtK2wpJXrcN68o1OOPLMb0OSUFdp+evm7Q6RIvoRnhU4yY+U5m/es+aK7H0hm19ycmJ1R9PhY5BPQdm/gzsvh9SC7ILLPhvvfkiSmzllbu120+SSc+3fhEOlUkSKM8p+zHyncdrhzrNH7Ya6awSVF7vIlyzg/l4UNWtx+9lfDnAw4fxRk1tF8NGiV2A4UADFPp+M1PbtUdzFe5VLIPpPOnQkPHZrX7N7QrIl2DQrPAa7Wix5yyTpqtJpcucm2pr4CSp7wCVEfTn86kT2DS1juw2zchJ7Vfd2pw3MvecKae8814zNtzp0FnG25e0qsoheRzScu/p706bo481G3rWA34NJbnuLIyEiv/Mzv7jP0nOHv6WwdE4WT1IQxUNds7in4JShociazpctSdDmx5xvvjovsG63BNcu5M+s0Wea3e1kHm5a5ZJYlt4xwWM2HvDskVzHBZYJzXeHsubLDmCvsod/znZn5YwjbXfvHhTKZ0c/5Kp/2eNDHlYUlXormO5kpjB/TOqTFk6owFnZ45acT2xZXxzAn5iUDK6TJpSWmhOhKTQsTUENTa7cxahfm9CCIeSd238GZzhy685JapYSi8qTBqIKqQyB70+6khp3MEg14+Rx02wzl4m6wQ0ReHRvwvE+gfN3SmzNf1pIF0a+jHv9eZ1QluVxQXJKrWm9mT3Ua3z6VWaaBFooq6Ws7+GSWER83alj+b/e7nKzp1dKlC83smqZkY5WZJDpRwBITnoKhbnqgzBv3mG40h3H/nNBNs8u+626g7Vi1suuTWdZ/l9s72cKUdwadPVtthvafMnONnSeq5ZGTrfC5J6A55+ma5eaMJBOXjQzsrxgj7jRQ3Oi6hImtmFtB9zPT7rIRkHKkySOBoZwTtdBBr9sY9Dfh3Z7v/H22xrubcD/SU54MyuPBX89wbjELaOVIxqLuYKdbbC3zJXx0lXb7TuWLa6z1IeLfspZt+ouCm2lyBRdNx2w6Q8YSSbn9UzqPWBnLxpUrR/464BJZaYA+x7Fy+nxKSjl+tFzlSXvcTHesdpRbkc/7DzNLT2Y6VSTByr/L1l83T3eOSnLvgdTNxnXZ5FImMZ2e9+eD0FzQaf4z7ciX4Ghv5W6uEvbCuRnRB3qtbVXmFG9aE1ya6EqWMn0n6pBQqUaXJcQc2j1HLyR10a42kvez7UXSglw9zGf+4d+sUzlr8tKhmn8uwcoZB3acWBTL5tP8nO6O3dA4LhvbZr0uauHkZTG0zvprgv9Mxtdk+fvzeOjvEJZhbLPdv/t9ZsxouyBZ6/xLdw+S9E/r1SGBppMWV/f5OHxyMIiY+lsy2ORle91qsjt9Exiyncjq3AhNOsO9YHbr3ml9dclHdyULndfzez57cVREqSzwiV37UhyCY8o/9QVOgT5jaibf/rrLdqH7bzpsQv3r+6bKB3lxzwQ5rj+pXUbq2bWk7PRZoT2JhNm2+3u1UtcjOeEInPsLRJddtKYCbouygUZ77XjSn6b/M6pdpbvMRPZtselQ8Oph505T/eSpdHII7GO6+PYMiUzOybytsrup8SdTyn/l6itpR85dU2jttS9pdPKHszQ/LSMWpeRTayqSUz9OPdCkd+kZWH7t8gt5pyU/1K6yLUav+fh5h5arrrj2+UCHY3Pqi52Dli8oYWLLX4Szv7OJPO/mNKwyH5qJ8iM2izjmqqoOinxWRmi7URnikgFpSK4KuSSF6za65IU7g6SyXyG/qo90Emh3jnbXo8Da5BYX3Hr1cAAIVd2fZUIO0C3x5k832ZzcZTdbabdrcneJadd8xl+jsw2jY7fvrX3uM/m2OyZquVXEkXmnQJ8sL5M7l3BKD53eWcb3++SSmq5/jE5iVuR2Xd9u+WUxi5qUH8/dSAVTvgHUzE8m37AqdvW5wpUhW4Jtq/9dlaFmuzw03ErlVWdcNr/m58ZsTnXbmGCc63D3bBTYhIWK86dmt1qhalQBpPSZfP2LB4n0NikZUHb7kN2QmxwyOtwWhXw8I9G8dLUW7ff9kO5FGsxrWJdlzZeHrO5G6jLZKJMSx5FXKi9uv7vSG5ANDVXyebd+zq0B3oSeO7lbU2wHi277/VDzkrGdJ9eSI6b1Rp1bK53R4mwprdl2On5zplrlwppdOppnXLKvm4iXz+nd3qz/+7L5S3dRST/l9oKuDz+bmR08/uIf2jdYLP0zmFN26eE9tCex85E/FHqE0l8Xy173twn2b5f86HRhYPMNyUjxUqN7I8qGVvc3zRNumVXktmyPk42RvPmvSywWD7M+yRjeaGry1CpQpASn0Qqc1mavxrewm1J/w953pRxsR8CsT58uAujk0bmc7v4qO73v95PtQ/uOO37+b5p1z21cNtFnZWQLv0tklf9u8uuk2dSJm9LTROgc4QtzlbNTVUGv+FzebkSPkMy9Y4AUd494brssdWFySEe9U4vAZJlikpxVfP6jYhv8x/TcpC1GqnCGWSfYOc3mZ/cnZYfa0u5y5+bQ5trbd7r1LMy3FS4S89p0qQ+uvHTlJ/y880AafNwph6unnnqqT8jlNUFAEBAEBAFBQBAQBAQBQUAQEAQEAUFAEBAEBAFBIB4CngaXm3HGyfnOGE+ec1S8GkhOgoAgIAgIAoKAICAICAKCgCAgCAgCgoAgIAgIAoLAAAgkPrjIIWREYT/PE1+3L7x2gCLlVUFAEBAEBAFBQBAQBAQBQUAQEAQEAUFAEBAEBAFBIB4COYKraKeZ95diip1St959tXrGM54RrxaSkyAgCAgCgoAgIAgIAoKAICAICAKCgCAgCAgCgoAg0CcCDsEVyiHsnFQ0uPpEW14TBAQBQUAQEAQEAUFAEBAEBAFBQBAQBASBAgI333yzOu2009Qtt9yiv3vkkUf0z3LLLadmz56ttt56a0FNEOiIQAeCy488lWlziQaXSJUgIAgIAoKAICAICAKCgCAgCAgCgoAgIAj0g8A//vEPddFFF+mfBx54QD366KPqscceU48//rj697//rbPkX/5eZZVV1AEHHKDe//7391OUvDNBCHTwwVUWWl1MFCdIPqSpgoAgIAgIAoKAICAICAKCgCAgCAgCgkBfCDz11FNq/vz5+uef//ynuvfee9X999+v/vWvf2lSy/158skng2WsttpqQnD1hf7kvdTFRNEHxDiiFxPF+ILyf//3f+qhhx7S7PUKK6ygll122fiFSI6CgCAgCAgCgoAgIAgIAoKAICAICAKCQM0I3HTTTerss89Wd9xxh0JbC1PDp59+Wmtk8TvEVtUkBFdVpOS5EoLLj6g4rVwH9LcvvE6Qi4iAJbfOOusstWDBArXXXnupN7zhDRFLkKwEAUFAEBAEBAFBQBAQBAQBQUAQEAQEgWYQwF/W9ddfr8mtQZMQXIMiODnvdzBRdEHIE17igyuugPztb39Tc+bMUaeccop64QtfqB3oCcEVF2PJTRAQBAQBQUAQEAQEAUFAEBAEBAFBoBkENttsM3XVVVdFKUwIrigwTkQmFQkusLA+ucREMaZk/PGPf1SnnnqquvDCCxU2xzZChBBcMVGWvAQBQUAQEAQEAUFAEBAEBAFBQBAQBJpC4D/+4z/U3LlzoxQnBFcUGCcik6k1Z248jV8tN01PT6upKT7zTRXNU6LBFUc2/ud//kcdf/zxeuDjZI8kBFccbCUXQUAQEAQEAUFAEBAEBAFBQBAQBASB4SAgBNdwcJ/0UjMNLtfJVhCVjOwSgmtwsYHcOu6443Q0CdfBnhBcg2MrOQgCgoAgIAgIAoKAICAICAKCgCAgCAwPASG4hof9JJfcQxRFIbhiCQpmiccee6yaN2+eeuyxx3LZCsEVC2XJRxAQBAQBQUAQEAQEAUFAEBAEBAFBYBgICME1DNSlTE1wWWPEMBw2gmJmxrjgd3PVs571LEGvRwSIlkgUCcwSL774Yh0i1U9CcPUIqjwuCAgCgoAgIAgIAoKAICAICAKCgCDQKgSE4GpVd0xMZbprcOVMF40W1+0Lr50YgGI1FHLroYceUt///vd1tEQcyoeSEFyxEJd8BAFBQBAQBAQBQUAQEAQEAUFAEBAEhoGAEFzDQF3KnFpr5iwdHtHGSCyHREwUBxGX+++/X5199tn6B7KrLAnBNQjK8q4gIAgIAoKAICAICAKCgCAgCAgCgsCwERCCa9g9MJnld9fgCuAiGly9CQsO5U866SR12WWXqX//+98dXxaCqzds5WlBQBAQBAQBQUAQEAQEAUFAEBAEBIF2ISAEV7v6Y1JqIwRXzT1toyVec801BYfyoaKF4Kq5QyR7QUAQEAQEAUFAEBAEBAFBQBAQBASBWhEQgqtWeCXzEgS0iaI1PvTNFMucz99699XqGc94hoDaBQFLbs2fP189+uijlfASgqsSTPKQICAICAKCgCAgCAgCgoAgIAgIAoJASxEQgqulHTPm1Up9cNl2dvXFNT2tbr3nGiG4OggGPrYefPBBdcwxx6grr7yykuaWzU4IrjEfcdI8QUAQEAQEAUFAEBAEBAFBQBAQBMYcASG4xryDW9q8AsHlEl2iwdV7rz311FPqkUce0ZESf/CDH6jHH3+8p0yE4OoJLnl4yAhA5PLTq5wPudqVi1988cXVMsssk3uev5dYYonKeciDgoAgIAgIAoKAICAICAKCwKQhIATXpPV4O9pbSnBRvSxuolLTGDJOQXkpJU7myzvvb3/7mzrvvPO0U/lO0RLLchCCqx0DQ2pRDYHPf/7z6uc//3nX4AnVcmvfUxBcr3jFK3IVe/e7361e97rX6c9mzJiRfvec5zwn/UxMuNvXl1KjzghwOfOvf/1LYBIEakWAy4FnPetZtZYhmQsCgoAgIAi0AwEhuNrRD5NWi44ElyW5lENu8Zn44AqLyX333adOO+009cMf/lBxWOgnCcHVD2ryzrAQYOG64447tNbiOKapqakciWVJLYitZz/72er5z39+2myIsI022khtvPHGaocddhhHOKRNY4rAnXfeqfbZZx913XXXjWkLpVltQADinzXj61//ulp55ZXbUCWpgyAgCAgCgkCNCAjBVSO4knUpAl01uHjT6G1lGl23LbxWIPUQwKH88ccfr6666qqBzLWE4BLRGiUE/t//+3/q9ttvVw8//PAoVTtKXSG5XE0ENBOe+cxnav+E/Mv3Sy+9tC7rJS95iTr44IPVrFmzopQtmQgCMRG49dZb1b777qt9RkoSBOpCgLnxjW98ozruuOPU6quvXlcxkq8gIAgIAoJASxAQgqslHTFh1aigwTWtphKKyzqgFxPFvJTYaInXXHNNTw7lQ7ImBNeEjcARb+4kE1zdug7tL0wc+XeppZZSz3ve87TvLn74bLfddlM77bSTYsxLEgSGiYAQXMNEf3LKFoJrcvpaWioICAKCAAgIwSVyMAwEuhJctlKW3EKb65a7r5Yoigkwf/zjH9Wxxx6rrr76avXoo48O3IdCcA0MoWTQIAJCcPUGNhpfkF5ody2//PKa+ILwwqxx1113Veuuu25vGcrTgkAEBITgigCiZNEVASG4ukIkDwgCgoAgMFYICME1Vt05Mo2pRHBZB/PWVFEILqUdyD/00ENa1f7SSy+N5pxXCK6RGTtSUaWUEFyDi8Fzn/tcbcII4fXKV75SrbTSSmqrrbZSa621ltb6kiQI1I2AEFx1Iyz5g4AQXCIHgoAgIAhMFgJCcE1Wf7eltV0JLldzy1Z60n1wWXLrrLPOUnPmzFFPPPFEtP4UgisalJJRAwgIwRUXZA6AL3zhC9Vqq62mdtxxR/WGN7xBk19oerkO7eOWKrlNOgJCcE26BDTTfiG4msFZShEEBAFBoC0ICMHVlp6YrHpMrT1zFjESKyeenXQfXA8++KAmtoiYCNkVMwnBFRNNyatuBITgqgdhTBjx0/XSl75UzZw5U22//fbqU5/6VD2FSa4Tj4AQXBMvAo0AIARXIzBLIYKAICAItAYBIbha0xUTVRFNcNHiqiTXpBNc+Nw6+eST1cUXXxxVc8tKnRBcEzX+Rr6xQnDV24X47FpsscXUc57zHPXiF79YvfnNb1b77befJr4kCQKxEBCCKxaSkk8nBITgEvkQBAQBQWCyEBCCa7L6uy2tTQmuXkiuSfXBRbTE448/Xs2dOzeazy1fEITgasvQkHpUQUAIriooDf4M2lyQXJgpvuhFL1Irr7yyOuigg9RrX/vawTOXHCYeASG4Jl4EGgFACK5GYJZCBAFBQBBoDQJCcLWmKyaqIjkfXNaJfDeyaxIJLsgtHMrPnz8/SrTEMikTgmuixt/IN1YIrua7kCiM+OlCi2uPPfZQe++9d/OVkBLHCgEhuMaqO1vbGCG4Wts1UjFBQBAQBGpBQAiuWmCVTLsgkPPBZQku31yRv13ya9KczN93333q6KOPVvPmzVOPPfZYrUIlBFet8ErmkREQgisyoD1khzbXK17xCrXpppuqd73rXWr99dfXWl6SBIFeERCCq1fE5Pl+EBCCqx/U5B1BQBAQBEYXASG4RrfvRrnmPZsoTpIPrqeeeko98sgj6oQTTlAXXnihevzxx2vvayG4aodYCoiIgBBcEcHsIyv8c2GyuNJKK2lH9Lvuuqv45+oDx0l/RQiuSZeAZtovBFczOEspgoAgIAi0BQEhuNrSE5NVjxzB5TY95HQeLa5FExJFkeiI//jHP9R5552nncpDdjWRhOBqAmUpIxYCQnDFQnLwfCC63v72t6tDDjlELbPMMgoH9ZIEgSoICMFVBSV5ZlAEhOAaFEF5XxAQBASB0UJACK7R6q9xqa32waXND6emlJrO01rWNNEnuybBRPH+++9XZ555ppozZ46C7GoqCcHVFNJSTgwEhOCKgWKcPHBEj0bXq171KjV79my1ww47xMlYchl7BITgGvsubkUDheBqRTdIJQQBQUAQaAwBIbgag1oKchCorMEFCWaJrnEnuHAof9JJJ6nLLrtM/fvf/25UYITgahRuKWxABITgGhDAGl5fYokltJniBhtsoM4999waSpAsxw0BIbjGrUfb2R4huNrZL1IrQUAQEATqQkAIrrqQlXw7ITC1zkqbTBvFrUxPa1pNqSnn7/y3St38u7lja/5ioyVec801tTuUdzsG7QucRu++++5q2223Vcsvv7xIriDQegSE4GpnF+FsHpPFmTNnqksvvVScz7ezm1pTKyG4WtMVY10RIbjGunulcYKAICAIFBAQgkuEYhgIOBpcJk4iloqG0Fqkpo3xoo6g6JopjivBZcmt+fPnq0cffbSx/mDTt+SSS+pIaDvttJNadtllGytbChIEBkFACK5B0Kv3XeYVfHGts846OlDGqquuWm+BkvvIIiAE18h23UhVXAiukeouqawgIAgIAgMjIATXwBBKBn0goAkutIcSNa5cFtYHFxTXdEJxQXb9euG1fRTV3lfwsfXggw+q4447Tl1xxRWNam5ZcmuXXXZRe+21l2hatFdMpGYBBOoguBZffHHtS6qJ9PTTTyt+/ERQiUWLCKkx2mnGjBlaM/TVr361+vrXv67WXXfd0W6Q1L4WBCC4PvWpT6lf/vKXteQ/ipn+85//DO6Lem2L9Y337Gc/W/H7JCf2OzvvvLP63Oc+J9FeJ1kQpO2CgCAwMQgIwTUxXd2qhqYEF/ERrcaWX0NDdBmSi+3ZgruvVmxUxiFxkCVa4hlnnKEjJjbpc4vD5/Oe9zwFubXPPvs0DucjjzyiNdWeeOIJ/QPRR+Q1NuJolPGDqZMkQaAMgToIrtVWW60xLUbk//HHHy80j7HBmPATY4TLAMgvfrcBKJoMRNGPNKLJBcl14oknqpVXXrmfLOSdMUbgzjvvVEcffbS65ZZbxriV1ZrG+GZfAOn35JNPVnupw1PPfOYztcsBfvh9khN7nu9+97tCbk2yEEjbBQFBYKIQEIJrorq7NY2dWnvmJtr60FwsGo2FMNGVEVzjpMH1t7/9TRNbOJVv+pCKZgVmiR/+8IcbFwiIvPPPP19ddNFFioiRbOQ5tLMBh9TaZJNN1Pbbb69e85rXNF43KXB0EKiD4Np8883V5Zdf3koQjjjiCHX33Xeru+66S2t9Qo6T+L3p+aNXgCC51ltvPfXzn/98bC4oesVAnhcEuiHwxz/+UX3mM59RF1xwQZD87va+/z0XRmuttZY6/fTT1dprr93r6/K8ICAICAKCgCAwsggIwTWyXTfSFU+dzBcJLt/zlm3nlFpw97yxOCCxkT311FPVj370I31j22RaeumltUN51PU5eDaVOIh/7WtfU/gZs1pb3FjbH0wo+OGmFTMxNMwwnaSekgQBH4FJI7ggtCCH0fp66KGHFJpeEMP8ftppp2mi+O9//7smje3nbZEaxvQLX/hCtfrqq6t58+a1pVpSD0GgVQgIwdWq7pDKCAKCgCAgCIwwAkJwjXDnjXDVp9ZZaeNppWboJmR+uMrILZ6aUr9eOH+Em2yqjkP5448/Xl111VVRbml7AcSSWzvssINabrnlenm172c5lF9//fXq8MMPVw8//LAmt7r5GILoQqNriSWWUJtuuqk64IADtD8fSYKARWDSCK5OPf/73/9em/yi4XXddddp316YfkF4/fnPf9ZaXk2aQIfqimn5CiusoDU0zz33XBFkQUAQ8BAQgktEQhAQBAQBQUAQiIOAEFxxcJRcekOghOAymUxNodlTdIo66iaKNlriNddc06hDeetz693vfrfadttttU+OptKll16qvvrVr2qTql79ilBvHH9vueWWWptrxRVXbKraUk7LERCCq3sHQXYRxfCee+7R8w3Oq//yl79oMiwU3KN7joM9gQkycw+bjqOOOkpI68HglLfHDAEhuMasQ6U5goAgIAgIAkNDQAiuoUE/0QU7TubBIXM0byMr5kkuo9k1ygQXm9djjz1WXX311fqA2VSy0RLxufWOd7yjUbPEm266SR188MHqvvvu69sUE3l47nOfq3bddVdd/6Y0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D+IXX3yx91GsV6+e8eE477zzFMXlnW7uOvz111/twAMPNP7vY9W36pVQMYwKn1FHWeSOYH4cWQJXfoyDzqJ2Agjpp556qitqEfaljTSKzTff3BBCoipegRiF/9b7778fOvV/t912cx5JVLtSq5uABK66GVXdgu8BBBGissM2VfsMSzDc/twre/XqZZ988knoe6UErnBjUQh7E+DA5//bb7+1VatWhT5lvl8PP/xw++9//6t3vtA086MDCVzxjoMErgwELjYN/G0J5KoawcXveRDnIRqxy7dgge8JaYqsaKsVPoHvvvvOHn74YXvqqae8fCFWJYLvA75tN998c+HDyvMrkMCV5wOk03MEfvzxR3vooYecp9WSJUtCU6FCK1EreI9EkT5PejUpX1QzC9OIgN57770l9mcAUQJXBrDKNz3ooIOcwDV//vzMd66yB897pDy99dZboftSB5kToIIdHlxffvllaHEdsZJnhBdeeCHzEwmxh1IUQ8DLcFfulzxvf/31114qKSJwderUyajOuuuuu2Z4Nto8HwlI4Ip3VCRw1SJwJcWsZFpi1QqK/KY6gYubHCvEc+fODf2lWHUqsEq+5557uso6isiJ94MSxdFY8WGFkDkTRWECVg1PPPFEo3qaWrQEJHBFy1e9+yNA5BYPzPPmzQudFk2FX7xlqPLLy7jvhsHuBx98EPo8MZdncUjRW+mPkASu9FkFW+J1yYJVWL84+ltvvfWMB3QiidTiJ6KkgykAACAASURBVEDladK5WQgIu1i97bbb2iOPPGIHHHBArBcigSs+3L4FLrJ2+G7lfU8+fPGNY5RHksAVJd21+5bAVYvAlSgzK1tjuVWJHoLXlDlrG0aSaoaJ7QUXXOBFxa86ZL/73e+c8aWiuOL9oPg+GtFbb775pt133322aNEiW716te9DGKuGl1xyiUwqvZNdu0MJXDFA1iG8EEDg4kGL1JuwXkEY4fLyRlSY75c3RIJjjz3WS+UxjHrxx9xxxx29MCyFTiRwZT7KFHK49tprvcxZjo5oTNRPFNGRmV9dae1BcQv8UX00KiiSFh53k8AVH3GijPmeYeGaDB4fDd/Is846y6677jof3amPHBOQwBXvAEjgqkXgSh2K5ApOwlI85q1qFcVge25uTOQo0hQbNmzoyg2T2kbahVphEnjjjTdcRbMffvghkgsgvJnK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IgIiIAIiUBgErrzySnv88cdt1qxZoU94++23tyOPPNLuuOOO0H2pAxEQAREQAREQAREQAREQgSSBRPuWfyjDc4uKToEXVwCHf7OysqQnV0pTFUVNHxEQAREQgVIi0LlzZ/v000/tm2++CX3ZHTt2dOJWu3btQvelDkRABERABERABERABERABFIErqTUVVngcuIWhvNO/qrcRn3ypjVo0ECVnzSLREAEREAEip7Ar7/+agcccIBNmzbNfv7551DXy3friSeeaI8++miofrSzCIiACIiACIiACIiACIhAZQIugqs6KNX+Y3naolIUNY1EQAREQARKhcCAAQPslltusblz51a76JMJh80339zOOussI+VRTQREQAREQAREQAREQAREwB+BGgUuDrGWyFUucClF0d8AqCcREAEREIH8JkDFw88++8wWL14c6kSJ3sJc/uabb7b9998/VF/aWQREQAREQAREQAREQAREoDKBWgWuakUuM1MEl6aRCIiACIhAqRBo2bKlffnll/bbb79lfcn16tWzTTfd1Pr27Ws9e/a0TTbZJOu+tKMIiIAIiIAIiIAIiIAIiMDaBCpM5vkVrlupUVvVGc+znSK4NJVEQAREQASKncDKlSvtnXfesb/+9a+2YMGCUJe7/vrr26677mpPPPGE7bzzzqH60s4iIAIiIAIiIAIiIAIiIAK1CFxJS/k1AlcgdlUVvSRwaRqJgAiIgAiUAgEM5Y888kh7//337aeffgp1yY0aNXLm8ldffbXhw6UmAiIgAiIgAiIgAiIgAiLgl0BFBFcgcAXdE8nlKimWlVVEdQVil1IU/Q6CehMBERABEcgvAkRvffTRR3b00Ufbt99+a/w928Z36WabbWbnn3++nX322UpPzBak9hMBERABERABERABERCBWggkPbjKhayq2wUiV1lZZbt5CVyaUyIgAiIgAsVM4IsvvrBevXrZG2+8YcuXLw91qeutt55tv/32Nm3atFD9aGcREAEREAEREAEREAEREIGaCZSbzJfHZiF0kaZYVub8uFJbqsQlDy5NKREQAREQgWIm4FPgatq0qR166KE2cODAYkamaxMBERABERABERABERCBnBJItG+5f1ll5y0nca0lbqV6cSmCK6djpoOLgAiIgAhETGDIkCF23nnn2Zw5c0JVT+Q0t9tuO3vzzTdtxx13jPis1b0IiIAIiIAIiIAIiIAIlC6B8giu2gFUlrtURbF0p4uuXAREQASKn0AQvfXWW2/Z0qVLXVRztm3ddde1HXbYwT7++ONsu9B+IiACIiACIiACIiACIiACaRCoW+BKJCoe7oO0xbEzRto666yTRvfaRAREQAREQAQKi8BDDz1k//3vf72IUk2aNLHddtvNRowYUVgQdLYiIAIiIAIiIAIiIAIiUGAE6ha41kpYVARXgY2xTlcEREAERCBNAgsWLLATTjjBJk2aZD/99FOae1W/Wf369W3nnXe2m266ybp27RqqL+0sAiIgAiIgAiIgAiIgAiJQO4E6BS5XSTGlD/7+zvS3rUGDBmIrAiIgAiIgAkVFACP422+/3aZOnRr6uho3bmx77LGHvf3226H7UgciIAIiIAIiIAIiIAIiIAIhBa6quyNwyWRe00oEREAERKAYCRxwwAH24Ycf2o8//hj68hC3/vOf/1j37t1D96UOREAEREAEREAEREAEREAEIhC4xsmDS/NKBERABESgCAnsvffe9v7774eunAiaPffc06644go7+uiji5CULkkEREAEREAEREAEREAE8otAnSmKVU9XEVz5NYA6GxEQAREQAT8Ehg8fbueee659+umnoTts1KiRtWvXzgYNGmRbb7116P7UgQiIgAiIgAiIgAiIgAiIQO0EEu1b7l9mFjht1V4KPdhqwuwx4ioCIiACIiACRUXgoIMOsk8++cS++eab0Ne1yy672Omnn+4EMzUREAEREAEREAEREAEREIHoCWQkcHE6iuCKflB0BBEQAREQgXgJfPTRR3b88cfb7Nmzbfny5aEOvt5669kf/vAHGzBggO24446h+tLOIiACIiACIiACIiACIiAC6RHIKkVRHlzpwdVWIiACIiAChUEAn6zx48fbggULQp3wOuusY82bN7ebbrrJunXrFqov7SwCIiACIiACIiACIiACIpA+gYwFLroeK5P59AlrSxEQAREQgbwm8Ouvv9pee+1lX375pS1btizUuTZs2NC6du1qt912m22//fah+tLOIiACIiACIiACIiACIiAC6RPISuCSB1f6gLWlCIiACIhA/hL46aef7MYbb7T77rvPfvzxx9AnSnri6NGjrW3btkY0l5oIiIAIiIAIiIAIiIAIiEA8BGoVuAJTebNEufsWJ5WwsTNG6ME9nvHRUURABERABCIkMG3aNDv22GPt888/D+29Vb9+fWvSpImNHTtW0VsRjpm6FgEREAEREAEREAEREIHqCCiCS/NCBERABESgJAlQLfGWW26xBx980H755RcrK6u9knBdkBo1amRt2rSxl19+2TbbbLO6NtfvRUAEREAEREAEREAEREAEPBKQwOURproSAREQAREoHAJDhgyxvn372tSpU2316tWhTpzorS233NL69+9vXbp0sQYNGoTqTzuLgAiIgAiIgAiIgAiIgAhkRiArgUsm85lB1tYiIAIiIAL5ReC7776zXr162dChQw0frrBtk002sV122cUmTJgQtivtLwIiIAIiIAIiIAIiIAIikAWBRPuW+7ucjISttjLntVVdS/XgMhsz/W2tTmcBW7uIgAiIgAjkB4EXXnjBrrvuOpsyZYqXE9puu+3ssssus549e3rpT52IgAiIgAiIgAiIgAiIgAhkRsAJXGvkq+r8RwLRa83vVEUxM8jaWgREQAREIL8IHHLIITZ58mT7/vvvvZzYzjvvbNOnT/fSlzoRAREQAREQAREQAREQARHInECiQ3kEV1K+qkngqvzvErgyB609REAEREAE8oPAOeecY8OGDXOVE8N6b3FFTZs2td12283efvvt/LhAnYUIiIAIiIAIiIAIiIAIlCCBCoHLak1RrExGAlcJzhRdsgiIgAgUAYFXXnnFGcvPmjXLli5d6uWK9thjD7vvvvusQ4cOXvpTJyIgAiIgAiIgAiIgAiIgApkTcAJXmYvcquyzVVtXMpnPHLT2EAEREAERyD2BTp062aeffmoLFy70cjKNGze2Pffc04YPH+6lP3UiAiIgAiIgAiIgAiIgAiKQHYFEh1b7l5WVBSmIa/ttVdetBK7sYGsvERABERCB3BD47bffXJTVrbfeavPmzbMVK1aEPpH11lvPfv/739uFF15o3bt3D92fOhABERABERABERABERABEcieQKJ9yz+UJSxha6K46KzMEgn+jT+m+m8lXKDXhFmjsz8uETAbAAANzUlEQVSi9hQBERABERCBGAksW7bM+W0hQs2ZM8eWLFni5ehUTjzzzDPtoosu8tKfOhEBERABERABERABERABEcieQIrJfJkhdCXlrerM5tccRB5c2QPXniIgAiIgAvERWLlypX322Wd23nnn2dixY735btWrV89Id7zjjjts9913j++CdCQREAEREAEREAEREAEREIFqCVSqohgkKKJzJQO3qkRvlf9dApdmkwiIgAiIQCEQ+Oijj6x37942ZswYW7VqlZdTXmeddWzzzTe3AQMG2FFHHWX8XU0EREAEREAEREAEREAERCC3BMpTFInZIn4rmYJYKSuxmmguCVy5HTQdXQREQAREID0CV199tT300EP25ZdfprdDGlutv/761r59e9dvy5Yt09hDm4iACIiACIiACIiACIiACERNoCKCKzhQ9emJ5RUWE0n1SwJX1MOi/kVABESgMAkccMABtmDBAsOAnT/369cvZxeCN9ZLL71kc+fOteXLl3s5j/r161vTpk3tySeftHbt2tkGG2zgpV91IgIiIAIiIAIiIAIiIAIiEI6Aq6LouijPRlyTlJhaWbHMrFzcIsRrzPS3rEGDBuGOrL1FQAREQASKjsAOO+zgoqUaNmxoW265pWHEfu655zq/qkaNGsVyvePGjbNLL73UvvjiC/vmm28Mk3lfbZNNNrHddtvNpTwqNdEXVfUjAiIgAiIgAiIgAiIgAuEJJCO4XIDWajOrl6J1VRG4Ko4lgSs8dvUgAiIgAsVF4LfffjP8rg499FD79ttv3cWxELLpppvaNttsYwhDm222mXXp0sUOPvhg23777b0DQMgisurBBx90xvLff/+912Osu+661rx5c7vmmmtcRUY1ERABERABERABERABERCB/CHgBK7KaYmB1XxNlRQTNmH26Py5Ap2JCIiACIhAzgn8+uuvdswxx9i7775rixYtqvZ8Nt54Yyd2IW6deuqp1qxZs4ofUhqzbaREfvDBBzZq1Ch7+eWXbfbs2d6qJQbnRNXErbfe2tq2bWuDBw/O9lS1nwiIgAiIgAiIgAiIgAiIQEQEEv+vyb5lq1b/ZsvKVtoKW2mrjSpTKysOV8/q2Yb1NrENGgUvHwkbO2OEUjMiGhB1KwIiIAKFSIBUwP3228+++uorW7lyzXdIddeCSfsWW2zhKhEicl122WVGaiMRX/wgJgWNvwepgESJBX0H/8db69Zbb7Xnn3/eZs6cGRk6ItF23313l5qoJgIiIAIiIAIiIAIiIAIikH8EEl1+f0TZNs23sRXrldkvZctttS01s2VWtrrMeJkoW2VWtrC+ff3V19Zwg4bOiksm8/k3kDojERABEcglAfyuWrdubb/88kudp5FIJJyIxQ/iFf8nhbFx48buZ5999qnog0ivHXfc0f2dtEMqF9LGjx9vq1atcumQ8+fPd8IXf4+q4bt11lln2ZlnnhnVIdSvCIiACIiACIiACIiACIhACAKJ/15/Z9nRfz3Sfrf575yoRSNlEXFrxbIVtuzXpTblvQ/tqjOut3U3bmD16tezsTNGKoIrBHTtKgIiIALFRIDoLaKo+vfvn7WhO9UJidbCnD61iElqRNfq1asrIrhWrFhhZWVlrjoif46ykZrYpk0bGzhwoDVp0iTKQ6lvERABERABERABERABERCBLAkkPpo8tWzXPXYxXi6qa7xALPrxJzvv1H/blHEf2XrrNrB3vxib5eG0mwiIgAiIQLERGD58uJ133nk2ffr0SKOocsGNyo/4biHgtWvXLhenoGOKgAiIgAiIgAiIgAiIgAikQSCx+KfFZY02rr10O6kfY0eOsxN6nGVb1N/QPvi/iWl0rU1EQAREQARKgcCAAQOsT58+Lj2RRZFiaaRO7rLLLnbllVdat27diuWydB0iIAIiIAIiIAIiIAIiUJQEEmVpvo3gbXLZBVfYiOdG24SvZLJblLNBFyUCIiACGRL46aefrHfv3va///0vwz3ze3OimjHBpzLkJZdcYttuu21+n7DOTgREQAREQAREQAREQARKnEDaAhecPpryof25299t+oz35cFV4hNHly8CIiACECA98dJLL7WJE4snspfILczuMZQn9RIDfDUREAEREAEREAEREAEREIH8JpCRwLX012V24zU321U3XJ7fV6WzEwEREAERiIXAySefbEOGDLGFCxfGcrw4DrLZZpsZVRNHjRqlxZw4gOsYIiACIiACIiACIiACIuCBQEYCF9mMk8ZNsnYd2umh3wN8dSECIiAChU6gR48eNmzYMPvuu+8K/VLc+W+xxRa200472b333mu77757UVyTLkIEREAEREAEREAEREAESoFARgIXQGZMn2mtdmwpgasUZoeuUQREQARqITBp0iQ799xzbfLkybZixYqCZ9WkSRMnbl199dV2wAEHFPz16AJEQAREQAREQAREQAREoJQIZCRwLVu6zAbccK+dc9lZ1qBBg1LipGsVAREQARGoQoD0xBEjRtjcuXMLnk0QudW3b1879NBDC/56dAEiIAIiIAIiIAIiIAIiUGoEMhK4Jo6daH3PuMZef/8lRXCV2kzR9YqACIhAFQKdOnWyDz/80BYtWlSwbNZZZx1r1qyZtWzZ0i6//HLr3LlzwV6LTlwEREAEREAEREAEREAESplA4rfffiujYlRtDe+tRT8usuvPv9neemOkTfl6fCkz07WLgAiIQMkT+Oabb+y4446zjz/+uCAFrvr169sGG2zgKiSecMIJ1qtXL9tyyy1LflwFQAREQAREQAREQAREQAQKlUBiyS9LyjbYcINaz3/58uU2dPBrdtMZ/Wz1Br/Z+LljFMFVqCOu8xYBERABDwQeffRR69+/v33xxRf2ww8/2G+//WYshhRCSyQS1rRpU1cp8a233iqEU9Y5ioAIiIAIiIAIiIAIiIAI1EEgMWvmnLIWLbezmqK4Vq1aZZ/P/sIuPLWPffnJPKvfqL69+8U7AisCIiACIlDCBJYtW2Y//vijjRw50gYMGGAzZsxwlRRXr16d91S22mor23XXXe3ZZ5+1zTbbLO/PVycoAiIgAiIgAiIgAiIgAiJQN4HEPXc9VLbPXm1tvYbr2joN1rF6DRMuOmud+us40WvJkl9t8NMv2z23PGxNt2xs9eolbMLsMXX3rC1EQAREQASKnsDPP/9ss2bNsvHjx9v//d//uf/PmzfPSGH89ddf8+r6W7Ro4by2SK3cf//9ncilJgIiIAIiIAIiIAIiIAIiUBwEEk3X37Fs05Ub2Ya2nm3cbCPbqOmGtv7GG1ijTTeydddt6FJOXhs8wppsuZkl8OpKmI39bIRSFItj/HUVIiACIuCVAJ5czz33nL399tu2ePFiW7lypX311VeGEJaL6K7111/ftt56a/fTsWNH69mzpxO51ERABERABERABERABERABIqLQKJ9yz+Ula0uc0KW+//qMvtt1Worcz9m9luZrd9kfbNEwhLYqyTM3pHAVVyzQFcjAiIgAp4JzJw506ZOnWoLFiywJ554wv2flPdffvnF/SB2LV261PNRzTbccENnHk8E8kYbbWRbbLGFUe3xhhtu8H4sdSgCIiACIiACIiACIiACIpA/BBIdWu6fdAVOrDmpwCbYCVrB78rMkn8ts7EzRiqCK3/GUGciAiIgAnlP4Mknn3SeXUR3LVq0yIldRHhRxIRGpBd/5t9T24oVKyoivxCtGjZsWPHrBg0aVHwXkVq/8cYbu6qI/J8qiV27drXzzz8/79noBEVABERABERABERABERABMITSHRoVS5w1dRXedSWq46VSDiVa8Ls0eGPrB5EQAREQARKmgBpi3fffbcTtsaMGeOqMVb17UIMQ/yiIW4hYAUNISsQvIjaevPNN0uapy5eBERABERABERABERABEqZQDKCKyV6qyqMoOo72lbQlKJYylNG1y4CIiACIiACIiACIiACIiACIiACIiAC+UWg1gguorYSgbLlUhTRwhI2XhFc+TWKOhsREAEREAEREAEREAEREAEREAEREAERKGECdacoAiclTRHBa/wspSiW8JzRpYuACIiACIiACIiACIiACIiACIiACIhAXhFIT+CqcspKUcyrMdTJiIAIiIAIiIAIiIAIiIAIiIAIiIAIiEBJE5DAVdLDr4sXAREQAREQAREQAREQAREQAREQAREQgcInkCJw4SJPLmI1LUhRNHN+9EpRLPyB1xWIgAiIgAiIgAiIgAiIgAiIgAiIgAiIQLEQqLOKYuqFYjpviYRNkAdXsYy/rkMEREAEREAEREAEREAEREAEREAEREAECp5ARimK5YFciuAq+GHXBYiACIiACIiACIiACIiACIiACIiACIhA8RBIK0UxELaCy5bJfPFMAF2JCIiACIiACIiACIiACIiACIiACIiACBQ6gYwiuNzFlpmNnz260K9b5y8CIiACIiACIiACIiACIiACIiACIiACIlAkBBIdWv2xrEZz+SoXKQ+uIhl1XYYIiIAIiIAIiIAIiIAIiIAIiIAIiIAIFBGBtCO4KtIUFcFVRMOvSxEBERABERABERABERABERABERABERCBwifgBK5EMvOw1rZG4Fpt42e/U/hXrisQAREQAREQAREQAREQAREQAREQAREQAREoCgJpR3ClXu34WfLgKorR10WIgAiIgAiIgAiIgAiIgAiIgAiIgAiIQBEQ+P8AygSmdvCSETsAAAAASUVORK5CYII=", - "created": 1731846238642, - "lastRetrieved": 1731846238642 - }, - "0909b69b3afd8b5bbaf69e31cbd2868cc931bde5": { - "mimeType": "image/png", - "id": "0909b69b3afd8b5bbaf69e31cbd2868cc931bde5", - "dataURL": "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAtwAAAECCAYAAADNdQCrAAAAAXNSR0IArs4c6QAAIABJREFUeF7tnYe3LVWV9YucBREQA6hkDAQF0ZagREFpBUHFALYJtU3do3sMfP0faPMpCjZm27YVeCC0ioAo8SmKIooCKogJQQEREFFBeN/4bZzX9coTau+qE+reWWOcce9795xTu+Zee+25wl5rtZUrV66sfBkBI2AEjIARMAJGwAgYASMwEQRWM+GeCK7+UiNgBIyAETACRsAIGAEjkBAw4bYgGAEjYASMgBEwAkbACBiBCSJgwj1BcP3VRsAIGAEjYASMgBEwAkbAhNsyYASMgBEwAkbACBgBI2AEJoiACfcEwfVXGwEjYASMgBEwAkbACBgBE27LgBEwAkbACBgBI2AEjIARmCACJtwTBNdfbQSMgBEwAkbACBgBI2AETLgtA0bACBgBI2AEjIARMAJGYIIImHBPEFx/tREwAkbACBgBI2AEjIARMOG2DBgBI2AEjIARMAJGwAgYgQkiYMI9QXD91UbACBgBI2AEjIARMAJGwITbMmAEjIARMAJGwAgYASNgBCaIgAn3BMH1VxsBI2AEjIARMAJGwAgYARNuy4ARMAJGwAgYASNgBIyAEZggAibcEwTXX20EjIARMAJGwAgYASNgBEy4LQNGwAgYASNgBIyAETACRmCCCJhwTxBcf7URMAJGwAgYASNgBIyAETDhtgwYASNgBIyAETACRsAIGIEJImDCPUFw/dVGwAgYASNgBIyAETACRsCE2zJgBIyAETACRsAIGAEjYAQmiIAJ9wTB9VcbASNgBIyAETACRsAIGAETbsuAETACRsAIGAEjYASMgBGYIAIm3BMEd9Jf/cADD1T33ntvdf3111enn356ddVVV6V/8/8PPfRQq9uvscYa1brrrlttuOGG1b777lu99KUvrXbcccdq9dVXr/ibLyNgBIyAETACRsAIGIFmCJhwN8NpLt/1pz/9qfrd735XXXHFFdUHP/jB6pZbbqnuuuuu6s9//nP14IMPFo955cqV1VprrVVtsMEG1SMf+cjqMY95THXCCSdUe+21V/p/E+5iaP1BI2AEjIARMAJGYAkiYMLd40mvE+5f/epXnRBuIIFYr7/++olwb7nlltWyZctMuHssKx66ETACRsAIGAEjMDsETLhnh33rO0fCfcopp1RdE255uE24W0+Vv8AIGAEjYASMgBFYwgiYcPd48kW4V6xYUZ166qmJcJNicv/996eUElJDSq7VVlttlZQSE+4SFP0ZI2AEjIARMAJGwAg8jIAJd48lwYS7x5PnoRsBI2AEjIARMAJLBgET7h5PtQl3jyfPQzcCRsAIGAEjYASWDAIm3D2eahPuHk+eh24EjIARMAJGwAgsGQR6T7jblL+Ls9zHUncm3EtmnfpBjYARMAJGwAgYgR4j0GvCDdlu2+CFuaOZC1ffSLcJd49XnoduBIyAETACRsAILBkEekW46aAIyfzjH/+YOiqqq2Lb2YJw01Vxk002SbWn11lnnV40eDHhbjvz/rwRMAJGwAgYASNgBCaPQK8I99133526Kf7sZz+rfvzjH1c33XRTKoPX9qLJy+Me97hqt912q570pCel32n4wv/P82XCPc+z47EZASNgBIyAETACRuBhBHpFuKkz/d3vfre69NJLq6uuuqq67777KrzebS/qTuPh3m677aqDDz44Ee8nPOEJyds9z5cJ9zzPjsdmBIyAETACRsAIGIEeEu4bbrihuvjii6uzzjortTDH402Tl7YXKSWQ680226w64IAD0mvnnXeuNt5447ZfPdHPm3BPFF5/uREwAkbACBgBI2AEOkGgVx7u66+/vjrnnHOqL3/5y9Udd9yR0kkgnW0uvNsQ7o022qiio+IznvGM6vDDD08/SSuZ58uEe55nx2MzAkbACBgBI2AEjEAPPdzXXHNNdfrpp1eXX355dfvtt1e//e1vWxNuYKA6ySMe8YjqMY95TPWUpzyletnLXlY9/elPTx7veb5MuOd5djw2I2AEjIARMAJGwAj0nHDfdttt1Z133pkqlrS55OGGcD/2sY9NqSTHHHOMCfdaa1UbbLBB8vLj+V+2bFm111579aJ6Sxt58GeNgBEwAkbACBgBI9A1Ar1KKYkebhPuKnn3SatZsWJFdeqpp1YcKuXf5LVTo3zlypVF8oIRQoUWE+4i+PwhI2AEjIARMAJGwAisgoAJ919zuO3h/ptcmHBbSxgBI2AEjIARMAJGoDsETLhNuP9Omky4u1tg/iYjYASMgBEwAkbACJhwm3CbcFsPGAEjYASMgBEwAkZgggiYcJtwm3BPcIH5q42AETACRsAIGAEjYMJtwm3CbT1gBIyAETACRsAIGIEJImDCbcJtwj3BBeavNgJGwAgYASNgBIyACbcJtwm39YARMAJGwAgYASNgBCaIgAm3CbcJ9wQXmL/aCBgBI2AEjIARMAIm3CbcJtzWA0bACBgBI2AEjIARmCACJtwm3CbcE1xg/mojYASMgBEwAkbACJhwm3CbcFsPGAEjYASMgBEwAkZgggiYcJtwm3BPcIH5q42AETACRsAIGAEjYMJtwm3CbT1gBIyAEViiCDz44IPVQw89VOknMPB77rXGGmtUq6++eqWffJ7ffRkBI/AwAibcJtwm3NYGRsAIGIElhoAI9n333Vfddttt1a9//evqrrvuqh544IEiwr3WWmtVG2+8cbX55ptXj3rUo9Lv66yzjkn3EpMrP+5wBEy4TbhNuK0hjIARMAJLDAGI9Z/+9Kfq5ptvri699NLq4osvru64445EtleuXJmNBt7sDTfcsNp7772rpz/96dXOO+9cbbHFFhVE3JcRMAL2cFermXCbcFsTGAEjYASWGAIQ7nvvvbe65pprqk996lPVD3/4wwpv91/+8pcFDzf7Y9NrzTXXrNZff/1q0003rV70ohdV++23X7XNNtuYcDcF0O9b9AjYw23CbcK96Je5H9AIGAEjsCoCeLch3CtWrKhOOeWU6vbbb0//vv/++4tTSjbaaKNqs802q/bZZ5/qiCOOSF7udddd19AbASPgHO7KHu4BywCvBmHADTbYoHrkIx9ZbbnlltWyZcuqvfbaK/2/D8JYdxgBI2AE+o0AhPuee+6pvvrVr1Yf/vCHUw43//7zn/9cTLg32WSTlMNNSskrX/nKarfddjPh7reYePQdImAPtz3c9nB3uKD8VUbACBiBPiAA4f7d735XXXjhhdXHPvax6tZbb63uvvvuYsK99tprVxBu8rZ33XXX6thjj03E2x7uPkiDxzgNBEy4TbhNuKex0nwPI2AEjMAcITAJwk1EFMK9yy67mHDP0Vx7KPOBgAm3CbcJ93ysRY/CCBgBIzA1BEy4pwa1b2QEEgIm3CbcJtxWBkbACBiBJYaACfcSm3A/7swRMOE24Tbhnvky9ACMgBEwAtNFwIR7unj7bkbAhNuE24TbesAIGAEjsMQQMOFeYhPux505AibcJtwm3DNfhh6AETACRmC6CJhwTxdv380ImHCbcJtwWw8YASNgBJYYAibcS2zC/bgzR8CE24TbhHvmy9ADMAJGwAhMFwET7uni7bsZARNuE24TbusBI2AEjMASQ8CEe4lNuB935gg0JtwPPPDARAa7+uqrN24Vfs0111Snn356dfnll1e33XZbdeedd1Z//OMfW42LNuaM4RGPeET12Mc+ttp5552rY445JnXI2myzzUZ+94MPPpj+/tBDD7UaQ/3DjIdrXAt1KcwVK1ZUp556avWrX/0qdQ67//77U2velStXFo3Lrd2LYPOHjIARMAK9QcCEuzdT5YEuEgQaE27avv75z3/u7LHXWmutRHRp+7rhhhtW/HvcNS+EGzILycYI4QUu/OyCeIPJOuusk15gwmsY8TbhHicx/rsRMAJGwAgMQsCE23JhBKaLQGPC/Y1vfKP67W9/25pUQlYhkBBKiPajHvWoasstt6zWX3/9saR7ngg3JPu+++5LHmVwuffee1fBRl7qptMJWeczEGza4+Jx33jjjUcaIybcTdH1+4yAETACRiAiYMJteTAC00WgMeF+17veVX33u99tTbh5PIglRHurrbaqnvKUp1R77rln9YQnPCF5u0dd80K4pahuueWW6tprr024kM4BaVaaSe40inCTxrLddttVO+ywQ0pvIc1lo402Gvh1Jty5KPv9RsAIGAEjAAIm3JYDIzBdBBoT7r333ru6++670+hKc4P1WQj32muvXa233nopT/qtb31rtddeeyUv96i85Xkh3ODwy1/+svrWt75VnXbaaQkXcsnb4kLuNLjg+YdwH3744QmXLbbYwoR7uuvCdzMCRsAILGoETLgX9fT64eYQgcaE+2lPe1pKnYBUtiGW8nDjzd5ggw2qTTfdtHrDG95QveAFL0hpFH0g3HfccUf14x//uDr33HOrSy+9tLr99turP/zhD8Xef+EJ4QaXTTbZJKWVvOQlL6kOO+yw6olPfKIJ9xwuHg/JCBgBI9BXBEy4+zpzHndfEWhMuHfcccdELLsk3KRK4OE+7rjjqiOPPDLlLI86PDkvHm4qpJBKsnz58uqqq66qfvOb31S///3vi7GJhBuvP0YIKTcYIUcddVS1zTbbmHD3dYV53EbACBiBOUTAhHsOJ8VDWtQINCbcpDhANLsi3BBLEe5jjz02Ecu+EG4qtkC4zzjjjJS//etf/zoRbvKw23j/8XCDC2Sb16GHHlq97GUvM+Fe1EvQD2cEjIARmD4CJtzTx9x3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egkk3JcRMAJGwAgYASOwdBAw4S6YaxPuAtB69BHSSu65557UyVSNhCDiXE07beItV0rJxhtvnJoHkc89qoNpjyDyUI2AETACRsAIGIEMBEy4M8DSW024C0Dr0UeUWkLuthoKlQ4f0q3GQXi8efkyAkbACBgBI2AElhYCJtwF823CXQCaP2IEjIARMAJGwAgYgSWKgAl3wcSbcBeA5o8YASNgBIyAETACRmCJImDCXTDxJtwFoPkjRsAIGAEjYASMgBFYogiYcBdMvAl3AWj+iBEwAkbACBgBI2AEligCJtwFE2/CXQCaP2IEjIARMAJGwAgYgSWKgAl3wcSbcBeA5o8YASNgBIyAETACRmCJImDCXTDxJtwFoPkjRsAIGAEjYASMgBFYogiYcBdMvAl3AWj+iBEwAkbACBgBI2AEligCJtwFE2/CXQCaP2IEjIARMAJGwAgYgSWKgAl3wcSbcBeA5o8YASNgBIyAETACRmCJImDCXTDxJtwFoPkjRsAIGAEjYASMgBFYogiYcBdMvAl3AWj+iBEwAkbACBgBI2AEligCJtwFE2/CXQCaP2IEjIARMAJGwAgYgSWKgAl3wcSbcBeA5o8YASNgBIyAETACRmCJImDCXTDxJtwFoPkjRsAIGAEjYASMgBFYogiYcBdMvAl3AWj+iBEwAkbACBgBI2AEligCJtwFE2/CXQCaP2IEjIARMAJGwAgYgSWKgAl3wcSbcBeA5o8YASNgBIyAETACRmCJImDCXTDxJtwFoPkjRsAIGAEjYASMgBFYogiYcBdMvAl3AWj+iBEwAkbACBgBI2AEligCJtwFE2/CXQCaP2IEjIARMAJGwAgYgSWKgAl3wcSbcBeA5o8YASNgBIyAETACRmCJImDCXTDxt912W3XttddWy5cvr6666qrqN7/5TfX73/++WrlyZXqVXquttlq13nrrVZtuuml6HX744dWRRx5ZbbPNNqVf6c8ZASNgBIyAETACRsAIzBgBE+6CCbjjjjuqG2+8sTr//POriy66qLr99tur++67r3rooYdaE+5111232mSTTdLr6KOPrg499NBqq622KhilP2IEjIARMAJGwAgYASMwDwiYcBfMwt13313dcsst1be+9a3q9NNPr+68887qT3/6UyLcba+111672nDDDasdd9wxebj33HPPaosttmj7tf68ETACRsAIGAEjYASMwIwQMOEuAB5v9u9+97vqpptuqq644opqxYoV1R/+8IeCb/r7j6yxxhrVzjvvXO22227VLrvsUm233XbVxhtv3Ml3+0uMgBEwAkbACBgBI2AEpo+ACXcB5g888EDyaN9zzz0V+dx4u5VS0sbLvfrqq1frrLNO9ahHParabLPN0s9HPOIRFWkmvoyAETACRsAIGAEjYAT6iYAJd+G8PfjggymFBPLNqw3Rrg9hzTXXrNZaa60KbzcknJ++jIARMAJGwAgYASNgBPqJgAl3P+fNozYCRsAIGAEjYASMgBHoCQIm3D2ZKA/TCBgBI2AEjIARMAJGoJ8ImHD3c948aiNgBIyAETACRsAIGIGeIGDC3ZOJ8jCNgBEwAkbACBgBI2AE+omACXc/582jNgJGwAgYASNgBIyAEegJAibcPZkoD9MIGAEjYASMgBEwAkagnwhkEW5qTq9cubJV+3JgotQdtaWpMU296WOPPbY66qijUoMXyuH5MgJGwAgYASNgBIyAETACiwWBxoSbVuMi3Dw8xLv0qhPu4447rjryyCNNuEsB9eeMgBEwAkbACBgBI2AE5haBxoR7p512WiDcbch29HBvtNFGycNtwj238uGBGQEjYASMgBEwAkbACLREoDHhfsUrXlHdeuutrW4nor7aaqtVdFPcfPPNqz322KM68MADq+222y61NXdXxVYQ+8NGwAgYASNgBIyAETACc4ZAY8I9Z+P2cIyAETACRsAIGAEjYASMQC8QMOHuxTR5kEbACBgBI2AEjIARMAJ9RcCEu68z53EbASNgBIyAETACRsAI9AIBE+5eTJMHaQSMgBEwAkbACBgBI9BXBEy4+zpzHrcRMAJGwAgYASNgBIxALxAw4e7FNHmQRsAIGAEjYASMgBEwAn1FwIS7rzPncRsBI2AEjIARMAJGwAj0AgET7l5MkwdpBIyAETACRsAIGAEj0FcETLj7OnMetxEwAkbACBgBI2AEjEAvEDDh7sU0eZBGwAgYASNgBIyAETACfUXAhLuvM+dxGwEjYASMgBEwAkbACPQCARPuXkyTB2kEjIARMAJGwAgYASPQVwRMuPs6cx63ETACRsAIGAEjYASMQC8QMOHuxTR5kEbACBgBI2AEjIARMAJ9RcCEu68z53EbASNgBIyAETACRsAI9AIBE+5eTJMHaQSMgBEwAkbACBgBI9BXBEy4+zpzHrcRMAJGwAgYASNgBIxALxAw4e7FNHmQRsAIGAEjYASMgBEwAn1FwIS7rzPncRsBI2AEjIARMAJGwAj0AgET7l5MkwdpBIyAETACRsAIGAEj0FcETLj7OnMetxEwAkbACBgBI2AEjEAvEDDh7sU0eZBGwAgYASNgBIyAETACfUXAhLuvM+dxGwEjYASMgBEwAkbACPQCARPuXkyTB2kEjIARMAJGwAgYASPQVwRMuPs6cx63ETACRsAIGAEjYASMQC8QMOHuxTR5kEbACBgBI2AEjIARMAJ9RcCEu68z53EbASNgBIyAETACRsAI9AIBE+5eTJMHaQSMgBEwAkbACBgBI9BXBEy4+zpzHrcRMAJGwAgYASNgBIxALxAw4e7FNHmQRsAIGAEjYASMgBEwAn1FwIS7rzPncRsBI2AEjIARMAJGwAj0AgET7l5MkwdpBIyAETACRsAIGAEj0FcE/j+54NsfJr5DmQAAAABJRU5ErkJggg==", - "created": 1731846356834, - "lastRetrieved": 1731846356834 - } - } -} \ No newline at end of file diff --git a/docs/src/assets/img/lakeFSArchitecture.png b/docs/src/assets/img/lakeFSArchitecture.png deleted file mode 100644 index 8e86ecd1889..00000000000 Binary files a/docs/src/assets/img/lakeFSArchitecture.png and /dev/null differ diff --git a/docs/src/assets/img/lakeFS_integration.png b/docs/src/assets/img/lakeFS_integration.png deleted file mode 100644 index 55b6f7dfec6..00000000000 Binary files a/docs/src/assets/img/lakeFS_integration.png and /dev/null differ diff --git a/docs/src/assets/img/lakectl-local/axolotl.png b/docs/src/assets/img/lakectl-local/axolotl.png deleted file mode 100644 index 573ce585147..00000000000 Binary files a/docs/src/assets/img/lakectl-local/axolotl.png and /dev/null differ diff --git a/docs/src/assets/img/lakectl-local/code_repo.png b/docs/src/assets/img/lakectl-local/code_repo.png deleted file mode 100644 index f40a392a41b..00000000000 Binary files a/docs/src/assets/img/lakectl-local/code_repo.png and /dev/null differ diff --git a/docs/src/assets/img/lakectl-local/experiment-branch.png b/docs/src/assets/img/lakectl-local/experiment-branch.png deleted file mode 100644 index 1454bc3ea15..00000000000 Binary files a/docs/src/assets/img/lakectl-local/experiment-branch.png and /dev/null differ diff --git a/docs/src/assets/img/lakectl-local/lakefs-commit-git-commit-id.png b/docs/src/assets/img/lakectl-local/lakefs-commit-git-commit-id.png deleted file mode 100644 index bb26e668fef..00000000000 Binary files a/docs/src/assets/img/lakectl-local/lakefs-commit-git-commit-id.png and /dev/null differ diff --git a/docs/src/assets/img/lakectl-local/lakefs-repo-with-train-dataset.png b/docs/src/assets/img/lakectl-local/lakefs-repo-with-train-dataset.png deleted file mode 100644 index 44e7a7ce1ca..00000000000 Binary files a/docs/src/assets/img/lakectl-local/lakefs-repo-with-train-dataset.png and /dev/null differ diff --git a/docs/src/assets/img/lakectl-local/tes-and-train-dataset.png b/docs/src/assets/img/lakectl-local/tes-and-train-dataset.png deleted file mode 100644 index 0e39a30fe32..00000000000 Binary files a/docs/src/assets/img/lakectl-local/tes-and-train-dataset.png and /dev/null differ diff --git a/docs/src/assets/img/lakefs-logo-with-text.png b/docs/src/assets/img/lakefs-logo-with-text.png deleted file mode 100644 index b6a2d0ea20c..00000000000 Binary files a/docs/src/assets/img/lakefs-logo-with-text.png and /dev/null differ diff --git a/docs/src/assets/img/lakefs-release-asset.png b/docs/src/assets/img/lakefs-release-asset.png deleted file mode 100644 index 4ebf17c5bc5..00000000000 Binary files a/docs/src/assets/img/lakefs-release-asset.png and /dev/null differ diff --git a/docs/src/assets/img/lakefs_iceberg_rest_catalog.png b/docs/src/assets/img/lakefs_iceberg_rest_catalog.png deleted file mode 100644 index c52720ac338..00000000000 Binary files a/docs/src/assets/img/lakefs_iceberg_rest_catalog.png and /dev/null differ diff --git a/docs/src/assets/img/lakefs_table.png b/docs/src/assets/img/lakefs_table.png deleted file mode 100644 index 9d43a7ee0e7..00000000000 Binary files a/docs/src/assets/img/lakefs_table.png and /dev/null differ diff --git a/docs/src/assets/img/lancedb-differential-processing.png b/docs/src/assets/img/lancedb-differential-processing.png deleted file mode 100644 index 64ef73b43d5..00000000000 Binary files a/docs/src/assets/img/lancedb-differential-processing.png and /dev/null differ diff --git a/docs/src/assets/img/lancedb-drift.png b/docs/src/assets/img/lancedb-drift.png deleted file mode 100644 index 90d949b91a6..00000000000 Binary files a/docs/src/assets/img/lancedb-drift.png and /dev/null differ diff --git a/docs/src/assets/img/lancedb-repro.png b/docs/src/assets/img/lancedb-repro.png deleted file mode 100644 index ecc474826b1..00000000000 Binary files a/docs/src/assets/img/lancedb-repro.png and /dev/null differ diff --git a/docs/src/assets/img/login.png b/docs/src/assets/img/login.png deleted file mode 100644 index f552ccde331..00000000000 Binary files a/docs/src/assets/img/login.png and /dev/null differ diff --git a/docs/src/assets/img/logo_large.png b/docs/src/assets/img/logo_large.png deleted file mode 100644 index 45d7c34e719..00000000000 Binary files a/docs/src/assets/img/logo_large.png and /dev/null differ diff --git a/docs/src/assets/img/logos/MLflow-logo.png b/docs/src/assets/img/logos/MLflow-logo.png deleted file mode 100644 index beeb3f8aec7..00000000000 Binary files a/docs/src/assets/img/logos/MLflow-logo.png and /dev/null differ diff --git a/docs/src/assets/img/logos/airbyte.png b/docs/src/assets/img/logos/airbyte.png deleted file mode 100644 index e51abf09949..00000000000 Binary files a/docs/src/assets/img/logos/airbyte.png and /dev/null differ diff --git a/docs/src/assets/img/logos/airflow.png b/docs/src/assets/img/logos/airflow.png deleted file mode 100644 index 8a20330a4dc..00000000000 Binary files a/docs/src/assets/img/logos/airflow.png and /dev/null differ diff --git a/docs/src/assets/img/logos/apache_hive.png b/docs/src/assets/img/logos/apache_hive.png deleted file mode 100644 index f34db575da9..00000000000 Binary files a/docs/src/assets/img/logos/apache_hive.png and /dev/null differ diff --git a/docs/src/assets/img/logos/apache_iceberg.png b/docs/src/assets/img/logos/apache_iceberg.png deleted file mode 100644 index 6a51b96bbb2..00000000000 Binary files a/docs/src/assets/img/logos/apache_iceberg.png and /dev/null differ diff --git a/docs/src/assets/img/logos/apache_kafka.png b/docs/src/assets/img/logos/apache_kafka.png deleted file mode 100644 index ad54e4d0392..00000000000 Binary files a/docs/src/assets/img/logos/apache_kafka.png and /dev/null differ diff --git a/docs/src/assets/img/logos/apache_spark.png b/docs/src/assets/img/logos/apache_spark.png deleted file mode 100644 index 71436b4672d..00000000000 Binary files a/docs/src/assets/img/logos/apache_spark.png and /dev/null differ diff --git a/docs/src/assets/img/logos/athena.png b/docs/src/assets/img/logos/athena.png deleted file mode 100644 index 5525cda550e..00000000000 Binary files a/docs/src/assets/img/logos/athena.png and /dev/null differ diff --git a/docs/src/assets/img/logos/cli.png b/docs/src/assets/img/logos/cli.png deleted file mode 100644 index bb01402b47e..00000000000 Binary files a/docs/src/assets/img/logos/cli.png and /dev/null differ diff --git a/docs/src/assets/img/logos/cloudera.png b/docs/src/assets/img/logos/cloudera.png deleted file mode 100644 index 43d5a43dc0e..00000000000 Binary files a/docs/src/assets/img/logos/cloudera.png and /dev/null differ diff --git a/docs/src/assets/img/logos/databricks.png b/docs/src/assets/img/logos/databricks.png deleted file mode 100644 index a2d91399e62..00000000000 Binary files a/docs/src/assets/img/logos/databricks.png and /dev/null differ diff --git a/docs/src/assets/img/logos/dbt.png b/docs/src/assets/img/logos/dbt.png deleted file mode 100644 index b57bf373476..00000000000 Binary files a/docs/src/assets/img/logos/dbt.png and /dev/null differ diff --git a/docs/src/assets/img/logos/delta-lake.png b/docs/src/assets/img/logos/delta-lake.png deleted file mode 100644 index fd88bd13631..00000000000 Binary files a/docs/src/assets/img/logos/delta-lake.png and /dev/null differ diff --git a/docs/src/assets/img/logos/dremio.png b/docs/src/assets/img/logos/dremio.png deleted file mode 100644 index 4dca2f4b750..00000000000 Binary files a/docs/src/assets/img/logos/dremio.png and /dev/null differ diff --git a/docs/src/assets/img/logos/duckdb.png b/docs/src/assets/img/logos/duckdb.png deleted file mode 100644 index 6521b586d07..00000000000 Binary files a/docs/src/assets/img/logos/duckdb.png and /dev/null differ diff --git a/docs/src/assets/img/logos/git.png b/docs/src/assets/img/logos/git.png deleted file mode 100644 index 51f4ae5404f..00000000000 Binary files a/docs/src/assets/img/logos/git.png and /dev/null differ diff --git a/docs/src/assets/img/logos/glue.png b/docs/src/assets/img/logos/glue.png deleted file mode 100644 index a74437323e6..00000000000 Binary files a/docs/src/assets/img/logos/glue.png and /dev/null differ diff --git a/docs/src/assets/img/logos/huggingface.png b/docs/src/assets/img/logos/huggingface.png deleted file mode 100644 index 49e2841dd5b..00000000000 Binary files a/docs/src/assets/img/logos/huggingface.png and /dev/null differ diff --git a/docs/src/assets/img/logos/kubeflow.png b/docs/src/assets/img/logos/kubeflow.png deleted file mode 100644 index b0d8f97dfb1..00000000000 Binary files a/docs/src/assets/img/logos/kubeflow.png and /dev/null differ diff --git a/docs/src/assets/img/logos/python.png b/docs/src/assets/img/logos/python.png deleted file mode 100644 index 14997956aa1..00000000000 Binary files a/docs/src/assets/img/logos/python.png and /dev/null differ diff --git a/docs/src/assets/img/logos/r.png b/docs/src/assets/img/logos/r.png deleted file mode 100644 index 339de067448..00000000000 Binary files a/docs/src/assets/img/logos/r.png and /dev/null differ diff --git a/docs/src/assets/img/logos/red_hat_openshift_ai.png b/docs/src/assets/img/logos/red_hat_openshift_ai.png deleted file mode 100644 index c3df4c43527..00000000000 Binary files a/docs/src/assets/img/logos/red_hat_openshift_ai.png and /dev/null differ diff --git a/docs/src/assets/img/logos/sagemaker.png b/docs/src/assets/img/logos/sagemaker.png deleted file mode 100644 index 06998e349a9..00000000000 Binary files a/docs/src/assets/img/logos/sagemaker.png and /dev/null differ diff --git a/docs/src/assets/img/logos/trino_presto.png b/docs/src/assets/img/logos/trino_presto.png deleted file mode 100644 index b00bbeeef08..00000000000 Binary files a/docs/src/assets/img/logos/trino_presto.png and /dev/null differ diff --git a/docs/src/assets/img/logos/vertex_ai.png b/docs/src/assets/img/logos/vertex_ai.png deleted file mode 100644 index edd60e5fc06..00000000000 Binary files a/docs/src/assets/img/logos/vertex_ai.png and /dev/null differ diff --git a/docs/src/assets/img/mds/mds_diagram.svg b/docs/src/assets/img/mds/mds_diagram.svg deleted file mode 100644 index 3f70e8b2a49..00000000000 --- a/docs/src/assets/img/mds/mds_diagram.svg +++ /dev/null @@ -1,5 +0,0 @@ - - -DataRepositoryimages/ dog1.png dog2.png...videos/tables/mainrepo.main.system.object_metadatadevspeciespositionimages/dog1.pnggoldensittingimages/dog2.pngpoodlestandingpathrepo.dev.system.object_metadataspeciespositionimages/dog1.pnggoldensittingimages/dog2.pngpoodlesittingpathDuckDBtrinopandas.................. \ No newline at end of file diff --git a/docs/src/assets/img/metastore-S3.svg b/docs/src/assets/img/metastore-S3.svg deleted file mode 100644 index e84d6a29c0f..00000000000 --- a/docs/src/assets/img/metastore-S3.svg +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/docs/src/assets/img/metastore-lakefs-dev.svg b/docs/src/assets/img/metastore-lakefs-dev.svg deleted file mode 100644 index fc24a78d6e3..00000000000 --- a/docs/src/assets/img/metastore-lakefs-dev.svg +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/docs/src/assets/img/metastore-lakefs.svg b/docs/src/assets/img/metastore-lakefs.svg deleted file mode 100644 index 82b2e0e4a96..00000000000 --- a/docs/src/assets/img/metastore-lakefs.svg +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/docs/src/assets/img/mirroring/arch.png b/docs/src/assets/img/mirroring/arch.png deleted file mode 100644 index dc6af51efc2..00000000000 Binary files a/docs/src/assets/img/mirroring/arch.png and /dev/null differ diff --git a/docs/src/assets/img/mlflow_experiment_run.png b/docs/src/assets/img/mlflow_experiment_run.png deleted file mode 100644 index 17b24f77417..00000000000 Binary files a/docs/src/assets/img/mlflow_experiment_run.png and /dev/null differ diff --git a/docs/src/assets/img/msb/msb_create_repo_ui.png b/docs/src/assets/img/msb/msb_create_repo_ui.png deleted file mode 100644 index dd7a655daa3..00000000000 Binary files a/docs/src/assets/img/msb/msb_create_repo_ui.png and /dev/null differ diff --git a/docs/src/assets/img/msb/msb_repo_settings_ui.png b/docs/src/assets/img/msb/msb_repo_settings_ui.png deleted file mode 100644 index f154d419190..00000000000 Binary files a/docs/src/assets/img/msb/msb_repo_settings_ui.png and /dev/null differ diff --git a/docs/src/assets/img/native-integrations.png b/docs/src/assets/img/native-integrations.png deleted file mode 100644 index 52679b0837c..00000000000 Binary files a/docs/src/assets/img/native-integrations.png and /dev/null differ diff --git a/docs/src/assets/img/native-vs-gw-integrations.png b/docs/src/assets/img/native-vs-gw-integrations.png deleted file mode 100644 index 38dbbbc4d9f..00000000000 Binary files a/docs/src/assets/img/native-vs-gw-integrations.png and /dev/null differ diff --git a/docs/src/assets/img/object_added.png b/docs/src/assets/img/object_added.png deleted file mode 100644 index 6db24985e59..00000000000 Binary files a/docs/src/assets/img/object_added.png and /dev/null differ diff --git a/docs/src/assets/img/open_core.png b/docs/src/assets/img/open_core.png deleted file mode 100644 index a9097a6d9f2..00000000000 Binary files a/docs/src/assets/img/open_core.png and /dev/null differ diff --git a/docs/src/assets/img/pipeline_branching_model.png b/docs/src/assets/img/pipeline_branching_model.png deleted file mode 100644 index 3e94918cb56..00000000000 Binary files a/docs/src/assets/img/pipeline_branching_model.png and /dev/null differ diff --git a/docs/src/assets/img/promotion_workflow.png b/docs/src/assets/img/promotion_workflow.png deleted file mode 100644 index 46ae5a4a402..00000000000 Binary files a/docs/src/assets/img/promotion_workflow.png and /dev/null differ diff --git a/docs/src/assets/img/pull-request-merged.png b/docs/src/assets/img/pull-request-merged.png deleted file mode 100644 index 7308e479faa..00000000000 Binary files a/docs/src/assets/img/pull-request-merged.png and /dev/null differ diff --git a/docs/src/assets/img/pull-request-open.png b/docs/src/assets/img/pull-request-open.png deleted file mode 100644 index 4a098d47688..00000000000 Binary files a/docs/src/assets/img/pull-request-open.png and /dev/null differ diff --git a/docs/src/assets/img/pull-request-review.png b/docs/src/assets/img/pull-request-review.png deleted file mode 100644 index 847fd9c70da..00000000000 Binary files a/docs/src/assets/img/pull-request-review.png and /dev/null differ diff --git a/docs/src/assets/img/quickstart/axolotl.png b/docs/src/assets/img/quickstart/axolotl.png deleted file mode 100644 index d8265aca407..00000000000 Binary files a/docs/src/assets/img/quickstart/axolotl.png and /dev/null differ diff --git a/docs/src/assets/img/quickstart/create-quickstart-repo.png b/docs/src/assets/img/quickstart/create-quickstart-repo.png deleted file mode 100644 index c9a40dea1e8..00000000000 Binary files a/docs/src/assets/img/quickstart/create-quickstart-repo.png and /dev/null differ diff --git a/docs/src/assets/img/quickstart/duckdb-editor-02.png b/docs/src/assets/img/quickstart/duckdb-editor-02.png deleted file mode 100644 index a726c8f58a2..00000000000 Binary files a/docs/src/assets/img/quickstart/duckdb-editor-02.png and /dev/null differ diff --git a/docs/src/assets/img/quickstart/duckdb-editor-03.png b/docs/src/assets/img/quickstart/duckdb-editor-03.png deleted file mode 100644 index 101a01557ae..00000000000 Binary files a/docs/src/assets/img/quickstart/duckdb-editor-03.png and /dev/null differ diff --git a/docs/src/assets/img/quickstart/duckdb-editor-04.png b/docs/src/assets/img/quickstart/duckdb-editor-04.png deleted file mode 100644 index c3a2949d604..00000000000 Binary files a/docs/src/assets/img/quickstart/duckdb-editor-04.png and /dev/null differ diff --git a/docs/src/assets/img/quickstart/duckdb-editor-05.png b/docs/src/assets/img/quickstart/duckdb-editor-05.png deleted file mode 100644 index a323ec70cd3..00000000000 Binary files a/docs/src/assets/img/quickstart/duckdb-editor-05.png and /dev/null differ diff --git a/docs/src/assets/img/quickstart/duckdb-editor-06.png b/docs/src/assets/img/quickstart/duckdb-editor-06.png deleted file mode 100644 index 7911ca1469f..00000000000 Binary files a/docs/src/assets/img/quickstart/duckdb-editor-06.png and /dev/null differ diff --git a/docs/src/assets/img/quickstart/duckdb-main-01.png b/docs/src/assets/img/quickstart/duckdb-main-01.png deleted file mode 100644 index 78b26978566..00000000000 Binary files a/docs/src/assets/img/quickstart/duckdb-main-01.png and /dev/null differ diff --git a/docs/src/assets/img/quickstart/duckdb-main-02.png b/docs/src/assets/img/quickstart/duckdb-main-02.png deleted file mode 100644 index 2f853d8c1b7..00000000000 Binary files a/docs/src/assets/img/quickstart/duckdb-main-02.png and /dev/null differ diff --git a/docs/src/assets/img/quickstart/duckdb-main-03.png b/docs/src/assets/img/quickstart/duckdb-main-03.png deleted file mode 100644 index ef220f55a8b..00000000000 Binary files a/docs/src/assets/img/quickstart/duckdb-main-03.png and /dev/null differ diff --git a/docs/src/assets/img/quickstart/empty-repo-list.png b/docs/src/assets/img/quickstart/empty-repo-list.png deleted file mode 100644 index 762bd6b2d49..00000000000 Binary files a/docs/src/assets/img/quickstart/empty-repo-list.png and /dev/null differ diff --git a/docs/src/assets/img/quickstart/hooks-00.png b/docs/src/assets/img/quickstart/hooks-00.png deleted file mode 100644 index a7ceefaf823..00000000000 Binary files a/docs/src/assets/img/quickstart/hooks-00.png and /dev/null differ diff --git a/docs/src/assets/img/quickstart/hooks-01.png b/docs/src/assets/img/quickstart/hooks-01.png deleted file mode 100644 index 831e2b4f943..00000000000 Binary files a/docs/src/assets/img/quickstart/hooks-01.png and /dev/null differ diff --git a/docs/src/assets/img/quickstart/hooks-02.png b/docs/src/assets/img/quickstart/hooks-02.png deleted file mode 100644 index dbe505036b3..00000000000 Binary files a/docs/src/assets/img/quickstart/hooks-02.png and /dev/null differ diff --git a/docs/src/assets/img/quickstart/hooks-03.png b/docs/src/assets/img/quickstart/hooks-03.png deleted file mode 100644 index 1d42e5beaa6..00000000000 Binary files a/docs/src/assets/img/quickstart/hooks-03.png and /dev/null differ diff --git a/docs/src/assets/img/quickstart/hooks-04.png b/docs/src/assets/img/quickstart/hooks-04.png deleted file mode 100644 index 7e43657b209..00000000000 Binary files a/docs/src/assets/img/quickstart/hooks-04.png and /dev/null differ diff --git a/docs/src/assets/img/quickstart/hooks-05.png b/docs/src/assets/img/quickstart/hooks-05.png deleted file mode 100644 index a7db42737b7..00000000000 Binary files a/docs/src/assets/img/quickstart/hooks-05.png and /dev/null differ diff --git a/docs/src/assets/img/quickstart/hooks-06.png b/docs/src/assets/img/quickstart/hooks-06.png deleted file mode 100644 index e9ddfacbc25..00000000000 Binary files a/docs/src/assets/img/quickstart/hooks-06.png and /dev/null differ diff --git a/docs/src/assets/img/quickstart/hooks-07.png b/docs/src/assets/img/quickstart/hooks-07.png deleted file mode 100644 index ed64375a5c4..00000000000 Binary files a/docs/src/assets/img/quickstart/hooks-07.png and /dev/null differ diff --git a/docs/src/assets/img/quickstart/hooks-08.png b/docs/src/assets/img/quickstart/hooks-08.png deleted file mode 100644 index ae3fb52f0fa..00000000000 Binary files a/docs/src/assets/img/quickstart/hooks-08.png and /dev/null differ diff --git a/docs/src/assets/img/quickstart/lakectl-local-01.png b/docs/src/assets/img/quickstart/lakectl-local-01.png deleted file mode 100644 index 26606f25d2b..00000000000 Binary files a/docs/src/assets/img/quickstart/lakectl-local-01.png and /dev/null differ diff --git a/docs/src/assets/img/quickstart/lakectl-local-02.png b/docs/src/assets/img/quickstart/lakectl-local-02.png deleted file mode 100644 index c562be450b3..00000000000 Binary files a/docs/src/assets/img/quickstart/lakectl-local-02.png and /dev/null differ diff --git a/docs/src/assets/img/quickstart/lakefs-login-screen.png b/docs/src/assets/img/quickstart/lakefs-login-screen.png deleted file mode 100644 index 06262989cc5..00000000000 Binary files a/docs/src/assets/img/quickstart/lakefs-login-screen.png and /dev/null differ diff --git a/docs/src/assets/img/quickstart/quickstart-repo.png b/docs/src/assets/img/quickstart/quickstart-repo.png deleted file mode 100644 index e25c5e1802c..00000000000 Binary files a/docs/src/assets/img/quickstart/quickstart-repo.png and /dev/null differ diff --git a/docs/src/assets/img/quickstart/quickstart-step-01.png b/docs/src/assets/img/quickstart/quickstart-step-01.png deleted file mode 100644 index 1e8cfb9444b..00000000000 Binary files a/docs/src/assets/img/quickstart/quickstart-step-01.png and /dev/null differ diff --git a/docs/src/assets/img/quickstart/quickstart-step-02.png b/docs/src/assets/img/quickstart/quickstart-step-02.png deleted file mode 100644 index 31c44b173d7..00000000000 Binary files a/docs/src/assets/img/quickstart/quickstart-step-02.png and /dev/null differ diff --git a/docs/src/assets/img/quickstart/quickstart-step-03.png b/docs/src/assets/img/quickstart/quickstart-step-03.png deleted file mode 100644 index d48e82b5203..00000000000 Binary files a/docs/src/assets/img/quickstart/quickstart-step-03.png and /dev/null differ diff --git a/docs/src/assets/img/quickstart/quickstart-step-04.png b/docs/src/assets/img/quickstart/quickstart-step-04.png deleted file mode 100644 index aeb51993e7e..00000000000 Binary files a/docs/src/assets/img/quickstart/quickstart-step-04.png and /dev/null differ diff --git a/docs/src/assets/img/quickstart/quickstart-step-05.png b/docs/src/assets/img/quickstart/quickstart-step-05.png deleted file mode 100644 index 6953cb96ecb..00000000000 Binary files a/docs/src/assets/img/quickstart/quickstart-step-05.png and /dev/null differ diff --git a/docs/src/assets/img/quickstart/quickstart-step-06.png b/docs/src/assets/img/quickstart/quickstart-step-06.png deleted file mode 100644 index 769f598e7fe..00000000000 Binary files a/docs/src/assets/img/quickstart/quickstart-step-06.png and /dev/null differ diff --git a/docs/src/assets/img/quickstart/quickstart-step-07.png b/docs/src/assets/img/quickstart/quickstart-step-07.png deleted file mode 100644 index 4411ac026ec..00000000000 Binary files a/docs/src/assets/img/quickstart/quickstart-step-07.png and /dev/null differ diff --git a/docs/src/assets/img/quickstart/repo-contents.png b/docs/src/assets/img/quickstart/repo-contents.png deleted file mode 100644 index c40006d3d78..00000000000 Binary files a/docs/src/assets/img/quickstart/repo-contents.png and /dev/null differ diff --git a/docs/src/assets/img/quickstart/repo-list.png b/docs/src/assets/img/quickstart/repo-list.png deleted file mode 100644 index 43ef606b3a5..00000000000 Binary files a/docs/src/assets/img/quickstart/repo-list.png and /dev/null differ diff --git a/docs/src/assets/img/quickstart/user_config.png b/docs/src/assets/img/quickstart/user_config.png deleted file mode 100644 index 0645eb07d72..00000000000 Binary files a/docs/src/assets/img/quickstart/user_config.png and /dev/null differ diff --git a/docs/src/assets/img/rds_conn.png b/docs/src/assets/img/rds_conn.png deleted file mode 100644 index cb96a3ebc8a..00000000000 Binary files a/docs/src/assets/img/rds_conn.png and /dev/null differ diff --git a/docs/src/assets/img/red-hat/OpenShiftAIDemoArchitecture.png b/docs/src/assets/img/red-hat/OpenShiftAIDemoArchitecture.png deleted file mode 100644 index 946c5aabafa..00000000000 Binary files a/docs/src/assets/img/red-hat/OpenShiftAIDemoArchitecture.png and /dev/null differ diff --git a/docs/src/assets/img/red-hat/OpenShiftDeploymentArchitecture.png b/docs/src/assets/img/red-hat/OpenShiftDeploymentArchitecture.png deleted file mode 100644 index c1ae3a5badf..00000000000 Binary files a/docs/src/assets/img/red-hat/OpenShiftDeploymentArchitecture.png and /dev/null differ diff --git a/docs/src/assets/img/reference_arch1.png b/docs/src/assets/img/reference_arch1.png deleted file mode 100644 index 224450ca640..00000000000 Binary files a/docs/src/assets/img/reference_arch1.png and /dev/null differ diff --git a/docs/src/assets/img/reference_arch2.png b/docs/src/assets/img/reference_arch2.png deleted file mode 100644 index 00a910b2d06..00000000000 Binary files a/docs/src/assets/img/reference_arch2.png and /dev/null differ diff --git a/docs/src/assets/img/repo-created.png b/docs/src/assets/img/repo-created.png deleted file mode 100644 index bfe6de10a02..00000000000 Binary files a/docs/src/assets/img/repo-created.png and /dev/null differ diff --git a/docs/src/assets/img/repo_create.png b/docs/src/assets/img/repo_create.png deleted file mode 100644 index 55d315e4a0d..00000000000 Binary files a/docs/src/assets/img/repo_create.png and /dev/null differ diff --git a/docs/src/assets/img/reproduce-commit-history.png b/docs/src/assets/img/reproduce-commit-history.png deleted file mode 100644 index 61dddf0f766..00000000000 Binary files a/docs/src/assets/img/reproduce-commit-history.png and /dev/null differ diff --git a/docs/src/assets/img/rollback-commit-history.png b/docs/src/assets/img/rollback-commit-history.png deleted file mode 100644 index e27c7c68278..00000000000 Binary files a/docs/src/assets/img/rollback-commit-history.png and /dev/null differ diff --git a/docs/src/assets/img/rollback-copy-id.png b/docs/src/assets/img/rollback-copy-id.png deleted file mode 100644 index bc416ec17f6..00000000000 Binary files a/docs/src/assets/img/rollback-copy-id.png and /dev/null differ diff --git a/docs/src/assets/img/rollback-revert-commit.png b/docs/src/assets/img/rollback-revert-commit.png deleted file mode 100644 index 153d3ccb58d..00000000000 Binary files a/docs/src/assets/img/rollback-revert-commit.png and /dev/null differ diff --git a/docs/src/assets/img/route53.png b/docs/src/assets/img/route53.png deleted file mode 100644 index 702c3fdc8bc..00000000000 Binary files a/docs/src/assets/img/route53.png and /dev/null differ diff --git a/docs/src/assets/img/s3_branch.png b/docs/src/assets/img/s3_branch.png deleted file mode 100644 index 1a85a7f369a..00000000000 Binary files a/docs/src/assets/img/s3_branch.png and /dev/null differ diff --git a/docs/src/assets/img/s3gatewayvsclientdataflow.png b/docs/src/assets/img/s3gatewayvsclientdataflow.png deleted file mode 100644 index 9431c18ccb5..00000000000 Binary files a/docs/src/assets/img/s3gatewayvsclientdataflow.png and /dev/null differ diff --git a/docs/src/assets/img/scim/entra-id-provisioning-setup.png b/docs/src/assets/img/scim/entra-id-provisioning-setup.png deleted file mode 100644 index 06268da314f..00000000000 Binary files a/docs/src/assets/img/scim/entra-id-provisioning-setup.png and /dev/null differ diff --git a/docs/src/assets/img/scim/lakefs_cloud_scim_configuration.png b/docs/src/assets/img/scim/lakefs_cloud_scim_configuration.png deleted file mode 100644 index 39f97b86351..00000000000 Binary files a/docs/src/assets/img/scim/lakefs_cloud_scim_configuration.png and /dev/null differ diff --git a/docs/src/assets/img/scim/lakefs_cloud_scim_settings.png b/docs/src/assets/img/scim/lakefs_cloud_scim_settings.png deleted file mode 100644 index abd6a316789..00000000000 Binary files a/docs/src/assets/img/scim/lakefs_cloud_scim_settings.png and /dev/null differ diff --git a/docs/src/assets/img/server-components.png b/docs/src/assets/img/server-components.png deleted file mode 100644 index 6ffdc33b290..00000000000 Binary files a/docs/src/assets/img/server-components.png and /dev/null differ diff --git a/docs/src/assets/img/setup.png b/docs/src/assets/img/setup.png deleted file mode 100644 index 725a2c992aa..00000000000 Binary files a/docs/src/assets/img/setup.png and /dev/null differ diff --git a/docs/src/assets/img/setup_done.png b/docs/src/assets/img/setup_done.png deleted file mode 100644 index db7b8c661a6..00000000000 Binary files a/docs/src/assets/img/setup_done.png and /dev/null differ diff --git a/docs/src/assets/img/stream_branching_model.png b/docs/src/assets/img/stream_branching_model.png deleted file mode 100644 index efe5200cdbd..00000000000 Binary files a/docs/src/assets/img/stream_branching_model.png and /dev/null differ diff --git a/docs/src/assets/img/svix_play.png b/docs/src/assets/img/svix_play.png deleted file mode 100644 index d60fecb7fe4..00000000000 Binary files a/docs/src/assets/img/svix_play.png and /dev/null differ diff --git a/docs/src/assets/img/unity-delta-sharing-create-catalog.png b/docs/src/assets/img/unity-delta-sharing-create-catalog.png deleted file mode 100644 index b3af5a2ac8f..00000000000 Binary files a/docs/src/assets/img/unity-delta-sharing-create-catalog.png and /dev/null differ diff --git a/docs/src/assets/img/unity-delta-sharing-provider.png b/docs/src/assets/img/unity-delta-sharing-provider.png deleted file mode 100644 index a9f4d938347..00000000000 Binary files a/docs/src/assets/img/unity-delta-sharing-provider.png and /dev/null differ diff --git a/docs/src/assets/img/unity-delta-sharing-schema-per-branch.png b/docs/src/assets/img/unity-delta-sharing-schema-per-branch.png deleted file mode 100644 index 66d2533e24b..00000000000 Binary files a/docs/src/assets/img/unity-delta-sharing-schema-per-branch.png and /dev/null differ diff --git a/docs/src/assets/img/unity-delta-sharing-shares.png b/docs/src/assets/img/unity-delta-sharing-shares.png deleted file mode 100644 index 76afd5c1d15..00000000000 Binary files a/docs/src/assets/img/unity-delta-sharing-shares.png and /dev/null differ diff --git a/docs/src/assets/img/unity_export_hook_result_log.png b/docs/src/assets/img/unity_export_hook_result_log.png deleted file mode 100644 index c954195ffc2..00000000000 Binary files a/docs/src/assets/img/unity_export_hook_result_log.png and /dev/null differ diff --git a/docs/src/assets/img/unity_exported_table_columns.png b/docs/src/assets/img/unity_exported_table_columns.png deleted file mode 100644 index c31356695c0..00000000000 Binary files a/docs/src/assets/img/unity_exported_table_columns.png and /dev/null differ diff --git a/docs/src/assets/img/user_branching_model.png b/docs/src/assets/img/user_branching_model.png deleted file mode 100644 index 01cf4ff9e1c..00000000000 Binary files a/docs/src/assets/img/user_branching_model.png and /dev/null differ diff --git a/docs/src/assets/img/waving-axolotl-transparent.gif b/docs/src/assets/img/waving-axolotl-transparent.gif deleted file mode 100644 index 2e225ad2dce..00000000000 Binary files a/docs/src/assets/img/waving-axolotl-transparent.gif and /dev/null differ diff --git a/docs/src/assets/img/wrapper.png b/docs/src/assets/img/wrapper.png deleted file mode 100644 index 2ff764da0ac..00000000000 Binary files a/docs/src/assets/img/wrapper.png and /dev/null differ diff --git a/docs/src/assets/js/cookieconsent-init.js b/docs/src/assets/js/cookieconsent-init.js deleted file mode 100644 index a1afdf90de7..00000000000 --- a/docs/src/assets/js/cookieconsent-init.js +++ /dev/null @@ -1,82 +0,0 @@ -import "https://cdn.jsdelivr.net/gh/orestbida/cookieconsent@v3.0.0/dist/cookieconsent.umd.js"; - -window.addEventListener('load', function() { - CookieConsent.run({ - guiOptions: { - consentModal: { - layout: "box inline", - position: "middle center", - equalWeightButtons: false, - }, - preferencesModal: { - layout: "box", - position: "middle center", - equalWeightButtons: false, - flipButtons: false, - }, - }, - autoShow: true, - manageScriptTags: true, - revision: 1, - autoClearCookies: true, - disablePageInteraction: true, - categories: { - necessary: { - enabled: true, - readOnly: true, - }, - analytics: { - enabled: true, - readOnly: false, - }, - }, - language: { - default: "en", - translations: { - en: { - consentModal: { - title: - '
Hello fellow axolotl, it\'s cookie time!
', - description: - 'Our website uses essential cookies to ensure its proper operation and tracking cookies to understand how you interact with it. The latter will be set only after consent. Please see our privacy policy.', - acceptAllBtn: "Accept all", - showPreferencesBtn: "Settings", - revisionMessage: - "

Dear user, terms and conditions have changed since the last time you visited!", - }, - preferencesModal: { - title: "Cookie settings", - acceptAllBtn: "Accept all", - acceptNecessaryBtn: "Reject all", - savePreferencesBtn: "Save current selection", - closeIconLabel: "Close", - sections: [ - { - title: "Cookie usage", - description: - 'Our website uses essential cookies to ensure its proper operation and tracking cookies to understand how you interact with it. The latter will be set only after consent. Please see our privacy policy.', - }, - { - title: "Strictly necessary cookies", - description: - "These cookies are strictly necessary for the website to function. They are usually set to handle only your actions in response to a service request, such as setting your privacy preferences, navigating between pages, and setting your preferred version. You can set your browser to block these cookies or to alert you to their presence, but some parts of the website will not function without them. These cookies do not store any personally identifiable information.", - linkedCategory: "necessary", - }, - { - title: "Analytics & Performance cookies", - description: - "These cookies are used for analytics and performance metering purposes. They are used to collect information about how visitors use our website, which helps us improve it over time. They do not collect any information that identifies a visitor. The information collected is aggregated and anonymous.", - linkedCategory: "analytics", - }, - { - title: "More information", - description: - 'For more information about cookie usage, privacy, and how we use the data we collect, please refer to our privacy policy and terms of use.', - }, - ], - }, - }, - }, - }, - }); -}); diff --git a/docs/src/assets/js/oauth2-redirect.html b/docs/src/assets/js/oauth2-redirect.html deleted file mode 100644 index a013fc82ee5..00000000000 --- a/docs/src/assets/js/oauth2-redirect.html +++ /dev/null @@ -1,68 +0,0 @@ - - -Swagger UI: OAuth2 Redirect - - - - diff --git a/docs/src/assets/logo.png b/docs/src/assets/logo.png deleted file mode 100644 index e0e96ddf313..00000000000 Binary files a/docs/src/assets/logo.png and /dev/null differ diff --git a/docs/src/assets/logo.svg b/docs/src/assets/logo.svg deleted file mode 100644 index ca9a2317d67..00000000000 --- a/docs/src/assets/logo.svg +++ /dev/null @@ -1 +0,0 @@ -logo 10 \ No newline at end of file diff --git a/docs/src/cloud/index.md b/docs/src/cloud/index.md deleted file mode 100644 index 6ee4a717258..00000000000 --- a/docs/src/cloud/index.md +++ /dev/null @@ -1,130 +0,0 @@ ---- -title: lakeFS Cloud -description: lakeFS Cloud is a fully-managed lakeFS solution ---- - -# lakeFS Cloud - -## What is lakeFS cloud? - -[lakeFS Cloud](https://lakefs.cloud) is a single tenant, fully-managed lakeFS solution, providing high availability, auto-scaling, support and production-grade features. - -## Why did we build lakeFS cloud? - -We built lakeFS cloud for three main reasons: - -1. We wanted to provide organizations with the benefits of lakeFS without the need to manage it, saving them the investment in infrastructure and work related to installation, upgrades, uptime and scale . -1. We wanted to provide lakeFS cloud users with security that meets their needs, with SSO, SCIM, and RBAC. -1. We wanted to provide additional functionality that reduces friction and allows fast implementation of version controlled data/ML/AI pipelines throughout their data lifecycle. - -## What is the value of using lakeFS Cloud as a managed service? - -The main advantages of using lakeFS Cloud, the lakeFS managed service are: - -1. No installation required, no cloud costs and devops efforts on installing and maintaining a lakeFS installation. -1. All lakeFS services are managed and run by us, including [Managed Garbage Collection](../howto/garbage-collection/managed-gc.md). -1. lakeFS cloud is highly available and includes a commitment to an uptime SLA. -1. lakeFS cloud auto scales according to your needs. See [lakeFS cloud scalability model](#lakefs-cloud-scalability-model) for more details. -1. Upgrades are done transparently on your lakeFS cloud environment -1. The lakeFS team is committed to supporting you with an SLA for both issues and product enhancements. - -## Which security features does lakeFS Cloud provide? - -1. lakeFS Cloud is [SOC2 Type II](https://www.itgovernance.co.uk/soc-reporting) compliant. [Contact us](https://lakefs.io/contact-sales/) to get the certification. -1. lakeFS Cloud version controls your data, **without accessing it**, using pre-signed URLs! Read more [here](../security/presigned-url.md). -1. When using lakeFS Cloud, you are provided with a rich [Role-Based Access Control](../security/rbac.md) functionality that allows for fine-grained control by associating permissions with users and groups, granting them specific actions on specific resources. This ensures data security and compliance within an organization. -1. To easily manage users and groups, lakeFS Cloud provides [SSO](../security/sso.md) integration (including support for SAML, OIDC, AD FS, Okta, and Azure AD), supporting existing credentials from a trusted provider, eliminating separate logins. -1. lakeFS Cloud supports [SCIM](../howto/scim.md) for automatically provisioning and deprovisioning users and group memberships to allow organizations to maintain a single source of truth for their user database. -1. [STS Auth](../security/sts-login.md) offers temporary, secure logins using an Identity Provider, simplifying user access and enhancing security. -1. [Authentication with AWS IAM Roles](../security/external-principals-aws.md) allows authentication using AWS IAM roles instead of lakeFS credentials, removing the need to maintain static credentials for lakeFS Enterprise users running on AWS. -1. [Auditing](../reference/auditing.md) provides a detailed action log of events happening within lakeFS, including who performed which action, on which resource - and when. -1. [Private-Link](../howto/private-link.md) support to ensure network security by only allowing access to your lakeFS Cloud installation from your cloud accounts - -## What additional functionality does lakeFS Cloud provide? - -Using lakeFS cloud is not just a secure and managed way of using lakeFS OSS; it is much more than that. With lakeFS Cloud you enjoy: - -1. [lakeFS Mount](../reference/mount.md) allows users to virtually mount a remote lakeFS repository onto a local directory. Once mounted, users can access the data as if it resides on their local filesystem, using any tool, library, or framework that reads from a local filesystem. -1. [lakeFS Metadata Search](https://info.lakefs.io/metadata-search) - Allows a granular search API to filter and query versioned objects based on attached metadata. This is especially useful for machine learning environments to filter by labels and file attributes -1. [Iceberg REST Catalog](../integrations/iceberg.md) - Provides full support for managing Iceberg tables alongside other data formats in the same lakeFS repository. Built using open standards and works with any Iceberg client. -1. [lakeFS for Snowflake](https://info.lakefs.io/lakefs-for-snowflake) - Provides full integration into the Snowflake ecosystem, including full support for Iceberg managed tables. -1. [lakeFS Cross-Cloud](https://info.lakefs.io/cross-cloud) - Allows central management of repositories that span across multiple cloud providers including Azure, AWS, GCP and on-prem environments. -1. [Transactional Mirroring](../howto/mirroring.md) - allows replicating lakeFS repositories into consistent read-only copies in remote locations. - - -| Feature | OSS | Cloud | -|------------------------------------------------|-----------|-----------| -| **Format-agnostic data version control** | ✅ | ✅ | -| **Cloud-agnostic** | ✅ | ✅ | -| **Zero Clone copy for isolated environment** | ✅ | ✅ | -| **Atomic Data Promotion (via merges)** | ✅ | ✅ | -| **Data stays in one place** | ✅ | ✅ | -| **Configurable Garbage Collection** | ✅ | ✅ | -| **Data CI/CD using lakeFS hooks** | ✅ | ✅ | -| **Integrates with your data stack** | ✅ | ✅ | -| **[Role Based Access Control (RBAC)](../security/rbac.md)** | | ✅ | -| **[Single Sign On (SSO)](../security/sso.md)** | | ✅ | -| **[SCIM Support](../howto/scim.md)** | | ✅ | -| **[IAM Roles](../security/external-principals-aws.md)** | | ✅ (AWS) | -| **[Mount Capability](../reference/mount.md)** | | ✅ | -| **[Audit Logs](../reference/auditing.md)** | | ✅ | -| **[Transactional Mirroring (cross-region)](../howto/mirroring.md)** | | ✅ | -| **Managed Service (auto updates, scaling)** | | ✅ | -| **[Managed Garbage Collection](../howto/garbage-collection/managed-gc.md)** | | ✅ | -| **[SOC2 Compliant](../security/index.md#soc2-compliance)** | | ✅ | -| **Support SLA** | | ✅ | - - -## How lakeFS Cloud interacts with your infrastructure - -Treeverse hosts and manages a dedicated lakeFS instance that interfaces with data held in your object store, such as S3. - -```mermaid -flowchart TD - U[Users] --> LFC - - subgraph Your Infrastructure - IAMM[lakeFS Managed GC IAM Role] --> ObjectStore[Client's Object Store] - IAMA[lakeFS Application IAM Role] --> ObjectStore - end - - subgraph Treeverse's Infrastructure - MGC[Managed Garbage Collection] --> EMR[Elastic Map Reduce] - EMR --> IAMM - MGC --> CP - CP[Control Plane] - LFC --> CP - - subgraph Client's Tenant - LFC[lakeFS Cloud] --> DB[Refstore Database] - end - - LFC --> IAMC[lakeFS Connector IAM Role] - IAMC -->|ExternalID| IAMA - end -``` - -## Setting up lakeFS Cloud - -### AWS / Azure - -Please follow the self-service setup wizard on [lakeFS Cloud](https://lakefs.cloud). - -### GCP - -Please [contact us](mailto:support@treeverse.io) for onboarding instructions. - -## lakeFS Cloud Scalability Model - -By default, a lakeFS Cloud installation supports: - -- 1,500 read operations/second across all branches on all repositories within a region -- 1,500 write operations per second across all branches on all repositories within a region - -This limit can be increased by contacting [support](mailto:support@treeverse.io?subject=quota+increase). - -Each lakeFS branch can sustain up to a maximum of 1,000 write operations/second and 3,000 read operations per second. -This scales horizontally, so for example, with 10 concurrent branches, a repository could sustain 10k writes/second and 30k reads/second, assuming load is distributed evenly between them. - -Reading committed data (e.g. from a commit ID or tag) could be scaled up horizontally to any desired capacity, and defaults to ~5,000 reads/second. - diff --git a/docs/src/datamanagment/metadata-search.md b/docs/src/datamanagment/metadata-search.md deleted file mode 100644 index add2e94f298..00000000000 --- a/docs/src/datamanagment/metadata-search.md +++ /dev/null @@ -1,418 +0,0 @@ ---- -title: Metadata Search -description: Search objects using versioned object metadata -status: enterprise ---- - -# Metadata Search - -!!! info - Available in **lakeFS Enterprise** - -!!! note - lakeFS Metadata search is currently in private preview for [lakeFS Enterprise](../enterprise/index.md) customers. - [Contact us](https://lakefs.io/lp/metadata-search/) to get started! - -## Overview - -lakeFS Metadata Search makes large-scale data lakes easily searchable by [object metadata](../understand/glossary.md#object-metadata), -while adding the power of versioning to search. This enables reproducible queries which are essential in collaborative -and ML-driven environments where data evolves constantly and metadata is key to making informed decisions. - -With Metadata Search, you can query object metadata by both: - -* **System metadata**: Automatically captured properties such as object path, size, last modified time, and committer. -* **User-defined metadata**: Custom labels, annotations, or tags stored as lakeFS object metadata, typically added during -ingestion, processing, or curation. - -![metadata search](../assets/img/mds/mds_diagram.svg) - -To enable simple and scalable search, lakeFS exposes object metadata as versioned Iceberg tables, fully compatible with -clients like DuckDB, PyIceberg, Spark, Trino, and others - enabling fast, expressive queries across any lakeFS version. -See [How It Works](#how-it-works) for details. - -``` - -## Benefits - -* **Scalable**: Search metadata across millions or billions of objects. -* **Query Reproducibility**: Run metadata queries against specific commits or tags for consistent results. -* **No infrastructure burden**: lakeFS manages metadata collection and indexing natively: no need to build, deploy or -maintain a separate metadata tracking system. - -## Use cases - -* **Data Discovery & Exploration**: Quickly find relevant data using flexible filters (e.g., annotations, object size, timestamps). -* **Data Governance**: Audit metadata tags, detect sensitive data (like PII), and ensure objects are properly labeled with -ownership or classification to support internal policies and external compliance requirements. -* **Operational Troubleshooting**: Filter and inspect data using metadata like workflow ID or publish time to trace lineage, -debug pipeline issues, and understand how data was created or modified - all within a specific lakeFS version. - -## How it Works - -lakeFS Metadata Search is built on top of [lakeFS Iceberg support](../integrations/iceberg.md#lakefs-iceberg-rest-catalog), -using catalog-level system tables to manage and expose versioned object metadata for querying. - -Metadata Search works by enabling metadata indexing on selected repositories and branches (see -[Configuration](#configuration)). Once configured, lakeFS automatically: - -1. **Creates a metadata repository** for each selected **data repository**, following the naming convention: `-metadata`, -where `repo` is the data repository id. -2. **Creates matching branches** in the metadata repository for each configured branch in the data repository. For example, a `dev` -branch in data repository `my-repo`, will have a corresponding `dev` branch in `my-repo-metadata`. -3. **Maintains a versioned Iceberg object metadata table** on each matching branch in the metadata repository. -4. **Continuously syncs metadata** via a background processing pipeline that keeps the object metadata tables - [eventually consistent](#consistency) with changes in the corresponding data repository branches. -5. **Wraps the lakeFS Iceberg REST catalog** to translate table queries issued against data repository references (branches, -commits, or tags) and resolve them to the corresponding tables in the metadata repository. This indirection allows metadata -queries to be expressed entirely in the data repository namespace, while lakeFS handles the mapping to the underlying metadata -storage. - -### Querying Metadata - -Metadata queries are always performed through the **data repository namespace**, not the metadata repository that lakeFS -manages internally. You can query metadata by: - -* **Branch name**: `..system.object_metadata`, to search the latest metadata state on a given branch. -* **Commit ID**: `..system.object_metadata`, to retrieve the metadata snapshot at a specific commit. -* **Tag name**: `..system.object_metadata`, to retrieve the metadata snapshot at a tagged commit. - -!!! tip - Using commit IDs or tags ensures [reproducible queries](#writing-reproducible-queries) , letting you always access the - exact metadata state from an immutable point in time. - -Queries are executed through the lakeFS Iceberg REST catalog, which is fully compatible with standard engines like Trino, -DuckDB, Spark, PyIceberg, and others. - -!!! info - You can use Metadata Search even without a license for full Iceberg support in lakeFS. - The feature relies on the lakeFS-managed Iceberg REST catalog for querying object metadata, but it can work - side-by-side with any other catalog you use to manage additional Iceberg tables. - -### Object Metadata Table Schema - -Each row in the lakeFS object metadata table represents the latest metadata version for a given object on the corresponding -branch. The table contains at most one row per object, ensuring that query performance remains consistent and predictable. - -| Column name | Required| Data Type | Description | -|---------------|---------|---------------------|------------------------------------------------------------------------------------------------------------------------------------------------------| -| repository | yes | string | The name of the repository where the object is **stored**. | -| path | yes | string | The unique path identifying the object within the repository. | -| commit_id | yes | string | The **latest commit ID** where the object was added or modified. | -| size | yes | Long | The object's size in bytes. | -| last_modified | yes | Timestamp | The time the object was last modified. | -| etag | yes | string | The object’s ETag (content hash). This reflects changes to the object's content only, not its metadata. | -| user_metadata | no | Map | User-defined metadata (e.g., annotations, tags). If none exists, an empty map is stored. | -| committer | yes | string | The user who committed the object’s latest change. | -| content_type | no | string | The MIME type of the object (e.g., `application/json`, `image/png`). | - -### Consistency - -lakeFS object metadata tables are eventually consistent, which means that it may take up to a few minutes for newly committed -objects to become searchable. Metadata becomes searchable **atomically** — either all object metadata from the commit -is available, or none of it is. Commits are processed sequentially: a child commit will only be processed after its parent -has been fully ingested. - -!!! tip - To check whether the most recent state of your branch is available for metadata search queries, check if the following - query returns results: - ```sql - USE "..system"; - SELECT * FROM object_metadata - WHERE commit_id = -- Replace with the head commit ID of the branch you are looking at - LIMIT 1; - ``` - -## Getting Started - -### Configuration - -lakeFS Metadata Search runs as a separate service that integrates with your lakeFS server. - -If you are **self-hosting lakeFS Enterprise**: - -1. [Contact us](https://lakefs.io/lp/metadata-search/) to enable the feature. -2. Add the configuration below to your Helm values file. -3. Install or upgrade the Helm chart with the updated configuration. - -If you are using **lakeFS cloud**: - -[Contact us](https://lakefs.io/lp/metadata-search/) to enable the feature. We’ll request the information included in the -sample configuration below. - -The Metadata Search service requires: - -* **lakeFS server connection settings**: so the service can communicate with your lakeFS instance. -* **Metadata-specific settings**: to control how metadata is captured and which repositories and branches are searchable. - -#### Configuration Reference - -* `lakefs.endpoint` `(string : "")`- the lakeFS server endpoint -* `lakefs.access_key_id` `(string : "")`- a lakeFS access key -* `lakefs.secret_access_key` `(string : "")`- a lakeFS secret access key -* `metadata_settings.since` `(string : "")`- ISO 8601 timestamp (e.g., `2025-07-15T00:00:00+00`) that sets the earliest -point in time from which to process commits for metadata extraction. If omitted, metadata will be captured from the time -the branch was created. -* `metadata_settings.max_commits` `(int : 0)` - The maximum number of commits to process per searchable branch. - Uses 0 by default that disables the limit. -* `repositories` `(map[string]branches:string[] : {})` - A mapping of repositories and the branches in each where metadata -search should be enabled. You can specify full branch names or use branch prefixes for flexibility. Prefixes should be expressed using a trailing -asterisk, e.g., `dev-*`. - -!!! note - Metadata search is disabled by default. You must explicitly configure which repositories and branches to include. - -!!! tip - Use branch name prefixes (e.g., `feature-*`) to reduce the need for manual updates when new branches are added. - -#### Sample Configuration - -!!! example - ```yaml - lakefs: - endpoint: "https://example.lakefs.io" - access_key_id: "AKIAIOSFOLEXAMPLE" - secret_access_key: "wJalrXUtnFEMI/K7MDENG/bPxRfiCYEXAMPLEKEY" - metadata_settings: - since: "2025-07-15T00:00:00+00" - max_commits: 100 - repositories: - "example-repo-1": - branches: - - "main" - - "dev" - "example-repo-2": - branches: - - "main" - - "feature-*" - ``` - -## How to Search by Metadata - -To search by object metadata in lakeFS, query the Iceberg `object_metadata` tables that lakeFS automatically creates and -manages. These tables are always available under the data repository namespace: - -``` -..system.object_metadata -``` - -You can use any Iceberg-compatible engine, such as DuckDB, Trino, Spark, PyIceberg, or others. - -If you're using DuckDB, note the Iceberg REST Catalog [guide](../integrations/iceberg.md#relative-namespace-support) for -details on how to reference `object_metadata` tables. - -!!! requirements - Your Iceberg client must meet the [authorization requirements](../integrations/iceberg.md#authorization) of the lakeFS - Iceberg REST catalog. - To perform metadata search queries, ensure users have access to the appropriate metadata repository (see - [How it Works](#how-it-works)). - -!!! note "Metadata Key Casing with S3 Gateway" - When objects are uploaded through the S3 Gateway, user-defined metadata keys are stored in lowercase to comply with the - [S3 specification](https://docs.aws.amazon.com/AmazonS3/latest/userguide/UsingMetadata.html#UserMetadata). - For example, if an object is uploaded with metadata key `MyKey`, it will be stored as `mykey` in the `user_metadata` map. - When querying, use the lowercase version: `user_metadata['mykey']` instead of `user_metadata['MyKey']`. - -#### Authentication - -lakeFS automatically creates a dedicated service user called `mds-service-user` with a read-only policy that grants -the minimum permissions needed for metadata search queries. To use it: - -1. Create credentials for the `mds-service-user` in the lakeFS API / lakectl / WebUI. -2. Use the generated access key and secret key when initializing the Iceberg catalog (see [Search Steps](#search-steps) below). - -Using this service user ensures that metadata-search clients have least-privilege access to the Iceberg metadata tables. - -!!! note - You can also use any other lakeFS user that has read access to both the data repository and its corresponding - metadata repository. - -#### Search Steps - -1. Initialize lakeFS Iceberg catalog, and authenticate. -The following example uses PyIceberg: -```python -from pyiceberg.catalog.rest import RestCatalog - -catalog = RestCatalog(name = "my_catalog", **{ - 'prefix': 'lakefs', - 'uri': f'{lakefs_endpoint}/mds/iceberg/api', - 'oauth2-server-uri': f'{lakefs_endpoint}/mds/iceberg/api/v1/oauth/tokens', - 'credential': f'{lakefs_client_key}:{lakefs_client_secret}', -}) -``` -2. Load the object metadata table that represents the reference you would like to query. -3. Use SQL to search by system or user-defined metadata. - -Here’s an example using PyIceberg and DuckDB: - -!!! requirements - This requires duckdb to be [installed](https://duckdb.org/docs/installation/?version=stable&environment=python). - -```python -from pyiceberg.catalog import load_catalog - -# Initialize the catalog -catalog = RestCatalog(name = "my_catalog", **{ - 'prefix': 'lakefs', - 'uri': 'https://lakefs.example.com/mds/iceberg/api', - 'oauth2-server-uri': 'https://lakefs.example.com/mds/iceberg/api/iceberg/api/v1/oauth/tokens', - 'credential': f'AKIAlakefs12345EXAMPLE:abc/lakefs/1234567bPxRfiCYEXAMPLEKEY', -}) - -# `repo` is the repository name we would like to search -con = catalog.load_table('repo.main.system.object_metadata').scan().to_duckdb('object_metadata') - -query = f""" -SELECT path -FROM object_metadata -WHERE user_metadata['animal'] = 'cat' - AND last_modified > (now() - INTERVAL '20 days') -""" - -df = con.execute(query).df() -``` - -This query finds all newly added cat images (added in the past week), demonstrating how you can combine user-defined and -system metadata fields in powerful, version-aware searches. - -!!! note - This catalog initialization differs from the [classic lakeFS Iceberg catalog](../integrations/iceberg.md#catalog-initialization-example-using-pyiceberg). - Notice the additional `mds` path segment in the endpoints, which routes requests through the Metadata Search catalog. - -### Writing Reproducible Queries - -In collaborative environments or during iterative development, it's important to ensure that metadata queries return consistent, -reproducible results. To achieve this, you should query object metadata tables using commit IDs or tag names, which are -immutable references, instead of branch names. - -**Why not use Branch names?** - -Querying metadata tables using a branch name, e.g., `repo.main.system.object_metadata` return results based on -the state of the branch’s HEAD commit at the time of the query, assuming the metadata has already been ingested (within -[eventual consistency](#consistency) constraints). However, because branch heads are mutable and advance with each new -commit, the results of such queries can change over time. - -**Use commit ID or tag name for stability** - -To ensure stability and reproducibility, use lakeFS commit IDs or tag names in your queries. Each commit or tag created -on the **data repository** reference a specific, fixed snapshot of the repository state, including its metadata. -This guarantees that the same query always returns the same results, regardless of subsequent changes to the branch. - -#### Using Commit ID - -1. Identify the relevant commit ID from the data repository (e.g., `dc3117ec3a727104226c896bf7ab9350ee5da06ae052406262840e9a4a8c9ffb` -on branch `dev` in repo `my-repo`). -2. Query the object metadata table using the following pattern: -``` -..system.object_metadata -``` -Examples: -``` -my-repo.dc3117e.system.object_metadata -my-repo.dc3117ec3a727104226c896bf7ab9350ee5da06ae052406262840e9a4a8c9ffb.system.object_metadata -``` -Both table paths return the metadata for commit `dc3117ec3a727104226c896bf7ab9350ee5da06ae052406262840e9a4a8c9ffb`. - -!!! tip - For readability, prefer using the short commit SHA (e.g., `dc3117e`). - -#### Using Tag Name - -1. Identify the relevant tag from the data repository (e.g., `v0.2.1` on branch `main` in repo `my-repo`). -2. Query the object metadata table using the following pattern: -``` -..system.object_metadata -``` -Examples: -``` -my-repo.v0.2.1.system.object_metadata -``` - -!!! tip - For end-to-end reproducibility, include the **commit ID** or **tag name** directly in your queries, and version those - queries with Git. - -### Example Queries - -This section showcases how to use lakeFS Metadata Search to answer different types of questions using standard SQL. - -For simplicity and readability, the examples are written in Trino SQL. If you're using another engine (e.g., DuckDB, -Spark, or PyIceberg), you may need to adjust the syntax accordingly. - -The examples below use **branch names** as references for simplicity. However, for reproducible results, it is recommended -to use **commit IDs** or **tag names** instead. You can convert any example into a [reproducible query](#writing-reproducible-queries) -by replacing the branch reference accordingly. - -

Object Annotation and Labeling

- -
Filter by Object Labels
- -The following example returns images labeled as dogs that are not in a sitting position: -```sql -USE "repo.main.system"; - -SELECT * FROM object_metadata -WHERE path LIKE `%.jpg` - AND user_metadata['animal'] = 'dog' - AND user_metadata['position'] != 'sitting'; -``` - -
View Metadata from AI-Powered Annotators
- -Assume that any object annotated by an AI-powered tool includes the object metadata key-value pair `source: autolabel` to -indicate its origin. The following example returns all such AI-annotated objects: - -```sql -USE "repo.main.system"; - -SELECT * -FROM object_metadata -WHERE user_metadata['source'] = 'autolabel'; -``` - -

File Properties and Storage

- -
Filter by File Extension & Size
- -Find all `.png` files larger than 2MB. - -```sql -USE "repo.main.system"; - -SELECT * -FROM object_metadata -WHERE path LIKE '%.png' - AND size::INT > 2000000; -``` - -
Filter objects by addition Time
- -This example finds all objects added in the last 7 days. - -```sql -USE "repo.main.system"; - -SELECT * -FROM object_metadata -WHERE last_modified >= current_timestamp - interval '7' day; -``` - -

Audit and Governance

- -
Detect Errors in Sensitive Data Tagging
- -Assume all objects under `customers/` must have user metadata `PII=true`. -This example returns objects where `PII=false`, or PII key is missing. - -```sql -USE "repo.main.system"; - -SELECT * -FROM object_metadata -WHERE path LIKE 'customers/%' - AND ( - user_metadata['PII'] = 'false' - OR user_metadata['PII'] IS NULL - ); -``` diff --git a/docs/src/enterprise/architecture.md b/docs/src/enterprise/architecture.md deleted file mode 100644 index 63e32729c4e..00000000000 --- a/docs/src/enterprise/architecture.md +++ /dev/null @@ -1,31 +0,0 @@ ---- -title: Architecture -description: lakeFS Enterprise architecture explained! ---- - - -# Architecture - - -lakeFS Enterprise extends the open-source lakeFS foundation, delivering a complete data versioning and governance solution with seamlessly integrated enterprise features like SSO, RBAC, mounting capabilities, and more. - -![img.png](../assets/img/enterprise/lakefs-enterprise-architecture.png) - -[1] Any user request to lakeFS via Browser or Programmatic access (SDK, HTTP -API, lakectl). - -[2] A reverse proxy (e.g., NGINX, Traefik, Kubernetes Ingress, Load Balanacer) will distribute requests between lakeFS server instances, SSL termination etc. Required when using more than 1 lakeFS instance. - -[3] lakeFS Enterprise - lakeFS with additional enterprise functionality, including advanced security, SSO authentication, RBAC authorization, compliance, audit logging, and enterprise support. - -[4] The [KV Store](../understand/architecture.md) - Where metadata is stored, used by both core lakeFS and enterprise features. - -[5] SSO IdP - External identity provider (e.g. Azure AD, Okta, JumpCloud). -lakeFS Enterprise implements SAML, OAuth2, and OIDC protocols. - -For more details and pricing, please [contact sales](https://lakefs.io/contact-sales/). - - -!!! info - Setting up lakeFS enterprise with an SSO IdP (OIDC, SAML or LDAP) requires - configuring access from the IdP too. diff --git a/docs/src/enterprise/configuration.md b/docs/src/enterprise/configuration.md deleted file mode 100644 index 64a65bce56c..00000000000 --- a/docs/src/enterprise/configuration.md +++ /dev/null @@ -1,229 +0,0 @@ ---- -title: Configuration Reference -description: A configuration reference for lakeFS Enterprise ---- - -# lakeFS Enterprise Configuration Reference - -lakeFS Enterprise configuration extends lakeFS's configuration and uses the same config file. - -## lakeFS Configuration - -For a complete list of configuration options, see the [lakeFS Server Configuration](../reference/configuration.md). -The sections below provide additional configuration references that complement the main configuration guide. - -### Reference - -This reference uses `.` to denote the nesting of values. - -### database - -Configuration section for lakeFS Enterprise database options. - -#### database.redis - -* `database.redis.endpoint` `(string : "localhost:6379")` - Redis server endpoint in host:port format -* `database.redis.enable_tls` `(bool : false)` - Enable TLS for Redis connections (required for AWS MemoryDB) -* `database.redis.cluster_mode` `(bool : false)` - Enable Redis Cluster mode support -* `database.redis.username` `(string : "")` - Username for Redis authentication -* `database.redis.password` `(string : "")` - Password for Redis authentication -* `database.redis.pool_size` `(int : 10)` - Connection pool size for Redis connections -* `database.redis.min_idle_conns` `(int : 0)` - Minimum number of idle connections in the pool -* `database.redis.dial_timeout` `(duration : 5s)` - Timeout for establishing new connections -* `database.redis.read_timeout` `(duration : 3s)` - Timeout for socket reads -* `database.redis.write_timeout` `(duration : 3s)` - Timeout for socket writes -* `database.redis.database` `(int : 0)` - Database number to select (0-15 for most Redis configurations) -* `database.redis.namespace` `(string : "")` - Prefix for all keys used by the application -* `database.redis.tls_skip_verify` `(bool : false)` - Skip certificate verification (for development only) -* `database.redis.batch_size` `(int : 1000)` - Default batch size for Redis KV operations - -!!! note - If you are using Redis or a compatible service such as Amazon MemoryDB, enable **durable writes**. - This ensures data is persisted and prevents data loss in case of node restarts or failures. - -### auth - -Configuration section for SSO authentication services, like SAML or OIDC. - -* `auth.logout_redirect_url` `(string : "/auth/login")` - The URL to redirect to after logout when using SSO authentication services, like SAML or OIDC. -The configuration depends on the authentication provider: - - **For OIDC:** The logout URL of the OIDC provider (e.g., Auth0 logout endpoint). - - **For SAML:** The URL within lakeFS where the IdP should redirect after logout (e.g., `/auth/login`). - -#### auth.ui_config - -* `auth.ui_config.login_url_method` `(string : "redirect")` - Controls how lakeFS handles login when an `auth.ui_config.login_url` (SSO via OIDC or SAML) is configured. This parameter is only relevant when `auth.ui_config.login_url` is set. -**Supported values:** - * `"redirect"` - On login, users are redirected to the configured `auth.ui_config.login_url` (default). - * `"select"` - On login, login selection page is used to select between build-in lakeFS and SSO login. - -### auth.providers - -Configuration section for external identity providers used for authentication services, such as LDAP, SAML or OIDC. - -#### auth.providers.ldap - -Configuration section for LDAP - -* `auth.providers.ldap.server_endpoint` `(string : "" - required)` - The LDAP server address, e.g. `'ldaps://ldap.company.com:636'`. -* `auth.providers.ldap.bind_dn` `(string : "" - required)` - The bind string, e.g. `'uid=,ou=Users,o=,dc=,dc=com'`. -* `auth.providers.ldap.bind_password` `(string : "" - required)` - The password for the user to bind. -* `auth.providers.ldap.username_attribute` `(string : "" - required)` - The user name attribute, e.g. 'uid'. -* `auth.providers.ldap.user_base_dn` `(string : "" - required)` - The search request base dn, e.g. `'ou=Users,o=,dc=,dc=com'`. -* `auth.providers.ldap.user_filter` `(string : "" - required)` - The search request user filter, e.g. `'(objectClass=inetOrgPerson)'`. -* `auth.providers.ldap.connection_timeout_seconds` `(int : 0 - required)` - The timeout for a single connection. -* `auth.providers.ldap.request_timeout_seconds` `(int : 0 - required)` - The timeout for a single request. -* `auth.providers.ldap.default_user_group` `(string : "" - required)` - The default group for the users initially authenticated by the remote service. - -#### auth.providers.saml - -Configuration section for SAML - -* `auth.providers.saml.sp_root_url` `(string : "")` - The base lakeFS-URL, e.g. `'https://'`. -* `auth.providers.saml.sp_x509_key_path` `(string : "")` - The path to the private key, e.g `'/etc/saml_certs/rsa_saml_private.cert'`. -* `auth.providers.saml.sp_x509_cert_path` `(string : "")` - The path to the public key, '/etc/saml_certs/rsa_saml_public.pem'. -* `auth.providers.saml.sp_sign_request` `(bool : false)` Some IdP require the SLO request to be signed. -* `auth.providers.saml.sp_signature_method` `(string : "")` Optional valid signature values depending on the IdP configuration, e.g. ''. -* `auth.providers.saml.idp_metadata_url` `(string : "")` - The URL for the metadata server, e.g. `'https:///federationmetadata/2007-06/federationmetadata.xml'`. -* `auth.providers.saml.idp_metadata_file_path` `(string : "")` - The path to the Identity Provider (IdP) metadata XML file, e.g. '/etc/saml/idp-metadata.xml'. -* `auth.providers.saml.idp_skip_verify_tls_cert` `(bool : false)` - Insecure skip verification of the IdP TLS certificate, like when signed by a private CA. -* `auth.providers.saml.idp_authn_name_id_format` `(string : "")` - The format used in the NameIDPolicy for authentication requests. (e.g., "urn:oasis:names:tc:SAML:1.1:nameid-format:unspecified") -* `auth.providers.saml.idp_request_timeout` `(time duration : 10s)` The timeout for remote authentication requests. -* `auth.providers.saml.post_login_redirect_url` `(string : "")` - The URL to redirect users to after successful SAML authentication, e.g. `'http://localhost:8000/'`. - -#### auth.providers.oidc - -Configuration section for OIDC - -* `auth.providers.oidc.url` `(string : "")` - The OIDC provider url, e.g. `'https://oidc-provider-url.com/'` -* `auth.providers.oidc.client_id` `(string : "")` - The application's ID -* `auth.providers.oidc.client_secret` `(string : "")` - The application's secret -* `auth.providers.oidc.callback_base_url` `(string : "")` - A default callback address of the lakeFS server -* `auth.providers.oidc.callback_base_urls` `(string[] : [])` - If callback_base_urls is configured, check current host is whitelisted otherwise use callback_base_url (without 's'). These config keys are mutually exclusive - -!!! note - You may configure a list of URLs that the OIDC provider may redirect to. This allows lakeFS to be accessed from multiple hostnames while retaining federated auth capabilities. - If the provider redirects to a URL not in this list, the login will fail. This property and callback_base_url are mutually exclusive. - -* `auth.providers.oidc.authorize_endpoint_query_parameters` `(map[string]string : {})` - key/value parameters that are passed to a provider's authorization endpoint -* `auth.providers.oidc.logout_endpoint_query_parameters` `(string[] : [])` - The query parameters that will be used to redirect the user to the OIDC provider after logout, e.g. `["returnTo", "https:///oidc/login"]` -* `auth.providers.oidc.logout_client_id_query_parameter` `(string : "")` - The claim name that represents the client identifier in the OIDC provider -* `auth.providers.oidc.additional_scope_claims` `(string[] : [])` - Specifies optional requested permissions, other than `openid` and `profile` that are being used -* `auth.providers.oidc.post_login_redirect_url` `(string : "")` - The URL to redirect users to after successful OIDC authentication, e.g. `'http://localhost:8000/'` - -#### auth.external_aws_auth - -Configuration section for authentication to lakeFS using the AWS presigned get-caller-identity request: -[External Principals AWS Auth](../security/external-principals-aws.md) - -* `auth.external_aws_auth.enabled` `(bool : false)` - If true, external principals API will be enabled, e.g auth service and login api's -* `auth.external_aws_auth.get_caller_identity_max_age` `(time duration : 15m)` - The maximum age in seconds for the GetCallerIdentity request to be valid, the max is 15 minutes enforced by AWS, smaller TTL can be set -* `auth.external_aws_auth.valid_sts_hosts` `(string[] : [])` - The default are all the valid AWS STS hosts (`sts.amazonaws.com`, `sts.us-east-2.amazonaws.com` etc.) -* `auth.external_aws_auth.required_headers` `(map[string]string : {})` - Headers that must be present by the client when doing login request. For security reasons it is recommended to set `X-LakeFS-Server-ID: `, lakeFS clients assume that's the default -* `auth.external_aws_auth.optional_headers` `(map[string]string : {})` - Optional headers that can be present by the client when doing login request -* `auth.external_aws_auth.http_client.timeout` `(time duration : 10s)` - The timeout for the HTTP client used to communicate with AWS STS -* `auth.external_aws_auth.http_client.skip_verify` `(bool : false)` - Skip SSL verification with AWS STS - -## auth.prefetched_cache - -Configuration section for the prefetched cache. -The prefetched cache is used to cache entries from the auth KV store in memory to reduce the number of calls to the KV store. -!!! note - When prefetched cache is enabled, the auth catch used to cache responses from the auth service is disabled. - -* `auth.prefetched_cache.enabled` `(bool : false)` - Enable the prefetched cache -* `auth.prefetched_cache.interval` `(duration : 30s)` - The interval at which to refresh the cache -* `auth.prefetched_cache.ttl` `(duration : 1m)` - The time to live for each cache entry -* `auth.prefetched_cache.size` `(int : 10000)` - The maximum number of entries in the cache -* `auth.prefetched_cache.eviction_jitter` `(duration : 3s)` - The maximum random jitter to add to the eviction interval to prevent thundering herds -* `auth.prefetched_cache.negative_cache_size` `(int : 40000)` - The maximum number of missing entries the cache will remember - -### backpressure - -Configuration section for backpressure settings. -When enabled, backpressure will limit the number of requests each server will handle concurrently through s3 gateway - -* `backpressure.enabled` `(bool : false)` - Enable backpressure -* `backpressure.upload_part_max_concurrent` `(int : 0)` - The maximum number of concurrent upload part requests. 0 means no limit - -### blockstores - -!!! info - The `blockstores` configuration is required for [multi-storage backend](../howto/multiple-storage-backends.md) setups and replaces the previous `blockstore` configuration. - -* `blockstores.signing.secret_key` `(string : required)` - A random generated string that is used for HMAC signing when using get/link physical address -* `blockstores.stores` `([{id: string, type: string, ...}] : required)` - Defines multiple storage backends used in a multi-storage backend setup. Each storage backend must have a unique id and a valid configuration. - -#### Common Fields for All Stores - -* `blockstores.stores[].id` `(string : required)` - Unique identifier for the storage backend. -* `blockstores.stores[].backward_compatible` `(bool : false)` - Optional. Defaults to false. Used to migrate from a single to a multi-storage backend setup. -* `blockstores.stores[].description` `(string : )` - A human-readable description of the storage backend. -* `blockstores.stores[].type` `(string : required)` - `(one of ["local", "s3", "gs", "azure", "mem"] : required)`. Block adapter to use. This controls where the underlying data will be stored. - -=== "`blockstores.stores.local`" - - * `blockstores.stores[].local.path` `(string: "~/lakefs/data")` - When using the local Block Adapter, which directory to store files in - * `blockstores.stores[].local.import_enabled` `(bool: false)` - Enable import for local Block Adapter, relevant only if you are using shared location - * `blockstores.stores[].local.import_hidden` `(bool: false)` - When enabled import will scan and import any file or folder that starts with a dot character. - * `blockstores.stores[].local.allowed_external_prefixes` `([]string: [])` - List of absolute path prefixes used to match any access for external location (ex: /var/data/). Empty list mean no access to external location. - -=== "`blockstores.stores.s3`" - - * `blockstores.stores[].s3.region` `(string : "us-east-1")` - Default region for lakeFS to use when interacting with S3. - * `blockstores.stores[].s3.profile` `(string : )` - If specified, will be used as a [named credentials profile](https://docs.aws.amazon.com/cli/latest/userguide/cli-configure-files.html#cli-configure-files-using-profiles) - * `blockstores.stores[].credentials_file` `(string : )` - If specified, will be used as a [credentials file](https://docs.aws.amazon.com/cli/latest/userguide/cli-configure-files.html) - * `blockstores.stores[].credentials.access_key_id` `(string : )` - If specified, will be used as a static set of credential - * `blockstores.stores[].credentials.secret_access_key` `(string : )` - If specified, will be used as a static set of credential - * `blockstores.stores[].s3.credentials.session_token` `(string : )` - If specified, will be used as a static session token - * `blockstores.stores[].s3.endpoint` `(string : )` - If specified, custom endpoint for the AWS S3 API (https://s3_compatible_service_endpoint:port) - * `blockstores.stores[].s3.force_path_style` `(bool : false)` - When true, use path-style S3 URLs (https:/// instead of https://.) - * `blockstores.stores[].s3.discover_bucket_region` `(bool : true)` - (Can be turned off if the underlying S3 bucket doesn't support the GetBucketRegion API). - * `blockstores.stores[].s3.skip_verify_certificate_test_only` `(bool : false)` - Skip certificate verification while connecting to the storage endpoint. Should be used only for testing. - * `blockstores.stores[].s3.server_side_encryption` `(string : )` - Server side encryption format used (Example on AWS using SSE-KMS while passing "aws:kms") - * `blockstores.stores[].s3.server_side_encryption_kms_key_id` `(string : )` - Server side encryption KMS key ID - * `blockstores.stores[].s3.pre_signed_expiry` `(time duration : "15m")` - Expiry of pre-signed URL. - * `blockstores.stores[].s3.pre_signed_endpoint` `(string : )` - Custom endpoint for pre-signed URLs. - * `blockstores.stores[].s3.disable_pre_signed` `(bool : false)` - Disable use of pre-signed URL. - * `blockstores.stores[].s3.disable_pre_signed_ui` `(bool : true)` - Disable use of pre-signed URL in the UI. - * `blockstores.stores[].s3.disable_pre_signed_multipart` `(bool : )` - Disable use of pre-signed multipart upload **experimental**, enabled on S3 block adapter with presign support. - * `blockstores.stores[].s3.client_log_request` `(bool : false)` - Set SDK logging bit to log requests - * `blockstores.stores[].s3.client_log_retries` `(bool : false)` - Set SDK logging bit to log retries - -=== "`blockstores.azure`" - - * `blockstores.stores[].azure.storage_account` `(string : )` - If specified, will be used as the Azure storage account - * `blockstores.stores[].azure.storage_access_key` `(string : )` - If specified, will be used as the Azure storage access key - * `blockstores.stores[].azure.pre_signed_expiry` `(time duration : "15m")` - Expiry of pre-signed URL. - * `blockstores.stores[].azure.disable_pre_signed` `(bool : false)` - Disable use of pre-signed URL. - * `blockstores.stores[].azure.disable_pre_signed_ui` `(bool : true)` - Disable use of pre-signed URL in the UI. - * `blockstores.stores[].azure.domain` `(string : blob.core.windows.net)` - Enables support of different Azure cloud domains. Current supported domains (in Beta stage): [`blob.core.chinacloudapi.cn`, `blob.core.usgovcloudapi.net`] - -=== "`blockstores.gs`" - - * `blockstores.stores[].gs.credentials_file` `(string : )` - If specified will be used as a file path of the JSON file that contains your Google service account key - * `blockstores.stores[].gs.credentials_json` `(string : )` - If specified will be used as JSON string that contains your Google service account key (when credentials_file is not set) - * `blockstores.stores[].gs.pre_signed_expiry` `(time duration : "15m")` - Expiry of pre-signed URL. - * `blockstores.stores[].gs.disable_pre_signed` `(bool : false)` - Disable use of pre-signed URL. - * `blockstores.stores[].gs.disable_pre_signed_ui` `(bool : true)` - Disable use of pre-signed URL in the UI. - * `blockstores.stores[].gs.server_side_encryption_customer_supplied` `(string : )` - Server side encryption with AES key in hex format, exclusive with key ID below - * `blockstores.stores[].gs.server_side_encryption_kms_key_id` `(string : )` - Server side encryption KMS key ID, exclusive with above - -### features - -* `features.local_rbac` `(bool: true)` - Backward compatibility if you use an external RBAC service (such as legacy fluffy). If `false` lakeFS will expect to use `auth.api` and all fluffy related configuration for RBAC. - -### iceberg_catalog - -Configuration section for the Iceberg REST Catalog - -* `iceberg_catalog.token_duration` `(duration : 1h)` - Authenticated token duration - -### Using Environment Variables - -All the configuration variables can be set or overridden using environment variables. -To set an environment variable, prepend `LAKEFS_` to its name, convert it to upper case, and replace `.` with `_`: - -For example, `auth.logout_redirect_url` becomes `LAKEFS_AUTH_LOGOUT_REDIRECT_URL`, `auth.external.aws_auth.enabled` becomes `LAKEFS_AUTH_EXTERNAL_AWS_AUTH_ENABLED`, etc. - -To set a value for a `map[string]string` type field, use the syntax `key1=value1,key2=value2,...`. diff --git a/docs/src/enterprise/getstarted/install.md b/docs/src/enterprise/getstarted/install.md deleted file mode 100644 index 9d7bac5d0f0..00000000000 --- a/docs/src/enterprise/getstarted/install.md +++ /dev/null @@ -1,587 +0,0 @@ ---- -title: Install -description: lakeFS Enterprise Installation Guide ---- - -# Install - -For production deployments of lakeFS Enterprise, follow this guide. - -## lakeFS Enterprise Architecture - -We recommend reviewing the [lakeFS Enterprise architecture][lakefs-enterprise-architecture] to understand the components you will be deploying. -!!! note - Fluffy service is deprecated in chart version 1.5.0 and later. - For more information, see the [Upgrade Guide][lakefs-enterprise-upgrade]. - -## Deploy lakeFS Enterprise on Kubernetes - -The guide is using the [lakeFS Helm Chart](https://github.com/treeverse/charts/tree/master/charts/lakefs) to deploy a fully functional lakeFS Enterprise. - -The guide includes example configurations, follow the steps below and adjust the example configurations according to: - -* The platform you run on: among the platform [supported by lakeFS](../../howto/deploy/index.md#deployment-and-setup-details) -* Type of KV store you use -* Your SSO IdP and protocol - ---- - -### Prerequisites - -1. You have a Kubernetes cluster running in one of the platforms [supported by lakeFS](../../howto/deploy/index.md#deployment-and-setup-details). -1. [Helm](https://helm.sh/docs/intro/install/) is installed -1. Access to download *treeverse/lakefs-enterprise* from [Docker Hub](https://hub.docker.com/u/treeverse). [Contact us](https://lakefs.io/contact-sales/) to gain access to lakeFS Enterprise features. -1. A KV Database. The available options are dependent in your [deployment platform](../../howto/deploy/index.md#deployment-and-setup-details). -1. A method to route traffic into lakeFS from outside of the cluster (via Ingress or Service). - -#### Optional - -Access to configure your SSO IdP [supported by lakeFS Enterprise][lakefs-sso-enterprise-spec]. - -!!! info - You can install lakeFS Enterprise without configuring SSO and still benefit from all other lakeFS Enterprise features. - ---- - -### lakeFS Enterprise License - -**Using lakeFS Enterprise requires a valid license.** This license is a JSON Web Token (JWT) that provides access to the -lakeFS Enterprise server and paid features. A license is tied to a specific installation via an installation ID, and to -a specific organization via an organization ID. - -#### Licensed Features -The following lakeFS Enterprise features must be included in the lakeFS Enterprise license in order to be available: - -##### Authentication & Authorization - -- [SSO (Single Sign-On)](../../security/sso.md) -- [RBAC (Role-Based Access Control)](../../security/rbac.md) -- [SCIM (System for Cross-domain Identity Management)](../../howto/scim.md) -- [IAM (Identity and Access Management) Role Authentication](../../security/external-principals-aws.md) - -##### Advanced Functionality - -- [Mount](../../reference/mount.md) -- [Iceberg Catalog](../../integrations/iceberg.md) -- [Metadata Search](../../datamanagment/metadata-search.md) -- [MSB (Multiple Storage Backends)](../../howto/multiple-storage-backends.md) -- [Transactional Mirroring](../../howto/mirroring.md) -- [Sparkless GC (Garbage Collection)](../../howto/garbage-collection/standalone-gc.md) - -!!! warning - Without a license for these features, they will be disabled, and any attempt to access them will result in a 'feature not licensed' error. - -#### License Configuration in lakeFS Enterprise - -1. Contact Support for a License -📧 Email: [support@treeverse.io](mailto:support@treeverse.io) - -2. Receive Your License Token -You will receive a license token that contains: - - Organization ID - - Installation ID - - Issue date - - Expiry date - - Enabled features - - Feature limitations - -3. Configure lakeFS Enterprise Server - 1. Save the license token to a file. - 2. Provide the file path in the lakeFS Enterprise configuration file: - ```yaml - license: - path: "/path/to/your/license.txt" - ``` - - !!! tip - Instead of configuring the license token path via the lakeFS Enterprise configuration file, you can set it via the environment variable: `LAKEFS_LICENSE_PATH`. - -??? tip "Reading a Currently Installed License Token via API" - **Request:** - ```bash - GET https://your-lakefs-server/api/v1/license - ``` - - **Response:** - ```json - { - "token": "eyJhbGciOiJSUzI1NiIs..." - } - ``` - - The returned token can be decoded using any JWT decoding tool to view the license information. - -#### License Monitoring & Updates -##### Updating Your License - -1. Replace the content of your license file with the new license token. -2. lakeFS Enterprise will automatically detect and reload the new license within 1 minute. - -!!! warning - You cannot change the file path itself to point to a new file while the server is running. - -##### Automatic Monitoring - -- Validation and Expiry Check: Occurs periodically to verify license validity and expiry. -- File Monitoring: The server checks periodically to detect license file changes so that when the license token gets updated in the file, there is no need to restart the server and the license updates automatically. - -#### Troubleshooting -##### Server Won't Start -``` -Error: no valid license found for this lakeFS Enterprise Server -``` -Solution: Ensure you have configured the `license.path` in the lakeFS Enterprise configuration file or environment variables. - ---- - -##### License Signature Verification Failed -``` -Error: token signature did not match any known public key: token signature is invalid: crypto/rsa -``` -Solutions: - 1. Re-download your license token from the original source. - 2. Verify the license file contains only the license token with no extra characters or line breaks. - 3. Contact [support@treeverse.io](mailto:support@treeverse.io) to get a valid license token. - ---- - -##### License Has Expired -``` -Error: license has expired. Please contact support immediately: invalid license found -``` -``` -Error: license expired: invalid expiry date -``` -Solutions: - 1. If recently renewed, ensure you've updated the license file with the new token. - 2. Contact [support@treeverse.io](mailto:support@treeverse.io) immediately for license renewal. - ---- - -##### License File Not Found -``` -Error: open /path/to/license/file/you/provided: no such file or directory -``` -Solutions: - 1. Verify the exact path and filename in your `license.path` configuration. - 2. Check for typos in filename. - 3. Check that license file wasn't moved or removed after configuration. - 4. Check that the license file exists at the specified location. - 5. Ensure the file extension is included. - 6. Use absolute paths instead of relative paths. - ---- - -##### License File Permission Denied -``` -Error: open /path/to/license/file/you/provided: permission denied -``` -Solutions: - 1. Check file permissions and set appropriate permissions. - 2. Ensure lakeFS Enterprise process has permission to read the file and access parent directories. - ---- - -##### Installation ID Mismatch -``` -Error: license belongs to installation ID X (current installation ID: Y) -``` -Solutions: - 1. Check if you have the correct license file for this specific installation. - 2. Check that your installation ID didn't change. - 3. Contact [support@treeverse.io](mailto:support@treeverse.io) to get a correct new license. - ---- - -##### Malformed or Empty License Token -``` -Error: parsing token: token is malformed: token contains an invalid number of segments -``` -``` -Error: license has invalid expiry (no license?): invalid license found -``` -Solutions: - 1. Verify the license file contains the complete license token. - 2. Remove any extra whitespace, newlines, or characters from the license file. - 3. Re-copy the license token from the original source. - 4. Ensure the file contains only the license token and nothing else. - ---- - -##### Feature Not Available -``` -Error: feature not licensed - to enable, contact support@treeverse.io -``` -Solution: Your current license doesn't include this feature. Contact [support@treeverse.io](mailto:support@treeverse.io) to upgrade your license. - -!!! tip "Need Help?" - If you encounter an issue not covered here, contact our support team at [support@treeverse.io](mailto:support@treeverse.io). ---- - -### Add the lakeFS Helm Chart - -* Add the lakeFS Helm repository with `helm repo add lakefs https://charts.lakefs.io` -* The chart contains a values.yaml file you can customize to suit your needs as you follow this guide. Use `helm show values lakefs/lakefs` to see the default values. -* Configure `image.privateRegistry.secretToken` with the Docker Hub token you received. - ---- - -### License Configuration - -!!! note - You can proceed without this step at the moment. However, licensing enforcement will be introduced soon. - Contact [support](mailto:support@treeverse.io) to receive your installation license. - -lakeFS Enterprise requires a valid license to work. -In the helm chart the license is provided as a JWT token either from an existing secret or explicitly. -The following demonstrates how to configure the license in the `values` file: - -=== "License with token provided in secrets" - - ```yaml - enterprise: - enabled: true - - secrets: - licenseContents: - ``` - -=== "License with token provided from existing secret" - - ```yaml - enterprise: - enabled: true - - # Name of existing secret to use - existingSecret: - - secretKeys: - # Use to fetch license token from an existing secret: - licenseContentsKey: - ``` - - -### Authentication Configuration - -Authentication in lakeFS Enterprise is handled directly by the lakeFS Enterprise service. This section explains the configurations required for setting up SSO. - -See [SSO for lakeFS Enterprise][lakefs-sso-enterprise-spec] for the supported identity providers and protocols. - -The examples below include example configuration for each of the supported SSO protocols. Note the IdP-specific details you'll need to replace with your IdP details. - -=== "OpenID Connect" - - The following `values` file will run lakeFS Enterprise with OIDC integration. - - !!! tip - The full OIDC configurations explained [here][lakefs-sso-enterprise-spec-oidc]. - - ```yaml - enterprise: - enabled: true - auth: - oidc: - enabled: true - # secret given by the OIDC provider (e.g auth0, Okta, etc) - client_secret: - - image: - privateRegistry: - enabled: true - secretToken: - - lakefsConfig: | - logging: - level: "INFO" - blockstore: - type: s3 - auth: - logout_redirect_url: https://oidc-provider-url.com/logout/example - oidc: - # the claim that's provided by the OIDC provider (e.g Okta) that will be used as the username according to OIDC provider claims provided after successful authentication - friendly_name_claim_name: "" - default_initial_groups: ["Developers", "Admins"] - # if true then the value of friendly_name_claim_name will be refreshed during each login to maintain the latest value - # and the the claim value (i.e user name) will be stored in the lakeFS database - persist_friendly_name: true - providers: - oidc: - post_login_redirect_url: / - url: https://oidc-provider-url.com/ - client_id: - callback_base_url: https:// - # the claim name that represents the client identifier in the OIDC provider (e.g Okta) - logout_client_id_query_parameter: client_id - # the query parameters that will be used to redirect the user to the OIDC provider after logout - logout_endpoint_query_parameters: - - returnTo - - https:///oidc/login - - ingress: - enabled: true - ingressClassName: - hosts: - - host: - paths: - - / - ``` - -=== "SAML (With Azure AD)" - - The following `values` file will run lakeFS Enterprise with SAML using Azure AD as the IdP. - - You can use this example configuration to configure Active Directory Federation Services (AD FS) with SAML. - - !!! tip - The full SAML configurations explained [here][lakefs-sso-enterprise-spec-saml]. - - #### Azure App Configuration - - 1. Create an Enterprise Application with SAML toolkit - see [Azure quickstart](https://learn.microsoft.com/en-us/entra/identity/enterprise-apps/add-application-portal) - 1. Add users: **App > Users and groups**: Attach users and roles from their existing AD users - list - only attached users will be able to login to lakeFS. - 1. Configure SAML: App > Single sign-on > SAML: - 1. Entity ID: Add 2 ID's, lakefs-url + lakefs-url/saml/metadata (e.g. https://lakefs.acme.com and https://lakefs.acme.com/saml/metadata) - 1. Reply URL: lakefs-url/saml (e.g. https://lakefs.acme.com/saml) - 1. Sign on URL: lakefs-url/sso/login-saml (e.g. https://lakefs.acme.com/sso/login-saml) - 1. Relay State (Optional, controls where to redirect after login): / - - #### SAML Configuration - - 1. Configure SAML application in your IdP (i.e Azure AD) and replace the required parameters into the `values.yaml` below. - 2. To generate certificates keypair use: `openssl req -x509 -newkey rsa:2048 -keyout myservice.key -out myservice.cert -days 365 -nodes -subj "/CN=lakefs.acme.com"` - - ```yaml - enterprise: - enabled: true - auth: - saml: - enabled: true - createCertificateSecret: true # NEW: Auto-creates secret - certificate: - # certificate and private key for the SAML service provider to sign outgoing SAML requests - samlRsaPublicCert: | # RENAMED: from saml_rsa_public_cert - -----BEGIN CERTIFICATE----- - ... - -----END CERTIFICATE----- - samlRsaPrivateKey: | # RENAMED: from saml_rsa_private_key - -----BEGIN PRIVATE KEY----- - ... - -----END PRIVATE KEY----- - - secrets: - authEncryptSecretKey: "some random secret string" - - image: - privateRegistry: - enabled: true - secretToken: - - lakefsConfig: | - logging: - level: "DEBUG" - blockstore: - type: local - auth: - logout_redirect_url: https:// - cookie_auth_verification: - auth_source: saml - # claim name to use for friendly name in lakeFS UI - friendly_name_claim_name: displayName - external_user_id_claim_name: samName - default_initial_groups: - - "Developers" - providers: - saml: - post_login_redirect_url: https:// - sp_root_url: https:// - sp_sign_request: false - sp_signature_method: "http://www.w3.org/2001/04/xmldsig-more#rsa-sha256" - idp_metadata_url: "https:///federationmetadata/2007-06/federationmetadata.xml" - # the default id format urn:oasis:names:tc:SAML:1.1:nameid-format:unspecified - # idp_authn_name_id_format: "urn:oasis:names:tc:SAML:1.1:nameid-format:unspecified" - idp_skip_verify_tls_cert: true - - ingress: - enabled: true - ingressClassName: - annotations: {} - hosts: - - host: - paths: - - / - ``` - -=== "LDAP" - - The following `values` file will run lakeFS Enterprise with LDAP. - - !!! tip - The full LDAP configurations explained [here][lakefs-sso-enterprise-spec-ldap]. - - ```yaml - enterprise: - enabled: true - auth: - ldap: - enabled: true - bindPassword: - - image: - privateRegistry: - enabled: true - secretToken: - - lakefsConfig: | - logging: - level: "INFO" - blockstore: - type: local - auth: - ui_config: - login_url: /auth/login - logout_url: /logout - login_cookie_names: - - internal_auth_session - providers: - ldap: - server_endpoint: 'ldaps://ldap.company.com:636' - bind_dn: uid=,ou=Users,o=,dc=,dc=com - username_attribute: uid - user_base_dn: ou=Users,o=,dc=,dc=com - user_filter: (objectClass=inetOrgPerson) - connection_timeout_seconds: 15 - request_timeout_seconds: 17 - # RBAC group for first time users - default_user_group: "Developers" - - ingress: - enabled: true - ingressClassName: - hosts: - - host: - paths: - - / - - ``` - -See [additional examples on GitHub](https://github.com/treeverse/charts/tree/master/examples/lakefs/enterprise) we provide for each authentication method (oidc, saml, ldap, rbac, external AWS IAM). - ---- - -### Database Configuration - -In this section, you will learn how to configure lakeFS Enterprise to work with the KV Database you created (see [prerequisites](#prerequisites)). - -Notes: - -* By default, the lakeFS Helm chart comes with `useDevPostgres: false`, you can change it to `useDevPostgres: true` for dev use. This setup is useful when you want to run a setup with multiple replicas or want to prevent data loss between containers restarts. -* See [lakeFS database configuration](../../reference/configuration.md#database). - -The database configuration can be set directly via `lakefsConfig`, via K8S Secret Kind, or via environment variables. - -=== "Postgres via environment variables" - - This example uses Postgres as KV Database configured via environment variables. - - ```yaml - extraEnvVars: - - name: LAKEFS_DATABASE_TYPE - value: postgres - - name: LAKEFS_DATABASE_POSTGRES_CONNECTION_STRING - value: '' - ``` - -=== "Via lakefsConfig" - - This example uses DynamoDB as KV Database. - - ```yaml - lakefsConfig: | - database: - type: dynamodb - dynamodb: - table_name: - aws_profile: - aws_region: - ``` - -=== "Postgres via shared Secret kind" - - This example uses Postgres as KV Database. The chart will create a `kind: Secret` holding the database connection string. - - ```yaml - secrets: - authEncryptSecretKey: shared-key-hello - databaseConnectionString: - - lakefsConfig: | - database: - type: postgres - ``` - ---- - -### Install the lakeFS Helm Chart - -After populating your values.yaml file with the relevant configuration, in the desired K8S namespace run `helm install lakefs lakefs/lakefs -f values.yaml` - ---- - -### Access the lakeFS UI - -In your browser, go to the Ingress host to access lakeFS UI. - -## Log Collection - -The recommended practice for collecting logs would be sending them to the container std (default configuration) -and letting an external service to collect them to a sink. An example for logs collector would be [fluentbit](https://fluentbit.io/) -that can collect container logs, format them and ship them to a target like S3. - -There are 2 kinds of logs: -- Regular logs like an API error or some event description used for debugging -- Audit logs that describe user actions (i.e create branch) - -The distinction between regular logs and audit_logs is in the boolean field `log_audit`, learn more in the [auditing reference](../../reference/auditing.md). - -## Advanced Deployment Configurations - -The following example demonstrates a scenario where you need to configure an HTTP proxy for lakeFS, TLS certificates for the Ingress and extending the K8S manifests without forking the Helm chart. - -```yaml -ingress: - enabled: true - ingressClassName: - # configure TLS certificate for the Ingress - tls: - - hosts: - - lakefs.acme.com - secretName: somesecret - hosts: - - host: lakefs.acme.com - paths: - - / - -# configure proxy for lakeFS -extraEnvVars: - - name: HTTP_PROXY - value: 'http://my.company.proxy:8081' - - name: HTTPS_PROXY - value: 'http://my.company.proxy:8081' - -# advanced: extra manifests to extend the K8S resources -extraManifests: - - apiVersion: v1 - kind: ConfigMap - metadata: - name: '{% raw %}{{ .Values.lakefs.name }}{% endraw %}-extra-config' - data: - config.yaml: my-data -``` - -[lakefs-sso-enterprise-spec]: ../../security/sso.md#sso-for-lakefs-enterprise -[lakefs-sso-enterprise-spec-oidc]: ../../security/sso.md#openid-connect -[lakefs-sso-enterprise-spec-saml]: ../../security/sso.md#active-directory-federation-services-ad-fs-using-saml -[lakefs-sso-enterprise-spec-ldap]: ../../security/sso.md#ldap -[lakefs-enterprise-architecture]: ../../understand/architecture.md -[lakefs-enterprise-upgrade]: ../../enterprise/upgrade.md \ No newline at end of file diff --git a/docs/src/enterprise/getstarted/migrate-from-oss.md b/docs/src/enterprise/getstarted/migrate-from-oss.md deleted file mode 100644 index 5d63a34f620..00000000000 --- a/docs/src/enterprise/getstarted/migrate-from-oss.md +++ /dev/null @@ -1,32 +0,0 @@ ---- -title: Migrate from lakeFS OSS -description: How to migrate from lakeFS OSS to lakeFS Enterprise ---- - -# Migrate From lakeFS Open-Source to lakeFS Enterprise - -To migrate from lakeFS Open Source to lakeFS Enterprise, follow the steps below: - -1. Make sure you have the lakeFS Enterprise Docker token. if not, [contact us](https://lakefs.io/contact-sales/) to gain access to lakeFS Enterprise. You will be granted a token that enables downloading *dockerhub/lakefs-enterprise* from [Docker Hub](https://hub.docker.com/u/treeverse). -1. Update the lakeFS Docker image to the enterprise version. Replace `treeverse/lakefs` with `treeverse/lakefs-enterprise` in your configuration. The enterprise image can be pulled using your lakeFS Enterprise token. -1. Sanity Test (Optional): Install a new test lakeFS Enterprise before moving your current production setup. Test the setup > login > Create repository etc. Once everything seems to work, delete and cleanup the test setup and we will move to the migration process. -1. Make sure to configure the lakeFS enterprise properly, see [Enterprise installation guide][lakefs-enterprise-install] - 1. Update your existing lakeFS configuration for enterprise (i.e `values.yaml` file for your deployment if using helm) -1. DB Migration: We are going to use the same database for lakeFS Enterprise, so we need to migrate the database schema. -1. Make sure to SSH / exec into the lakeFS server (old pre-upgrade version); the point is to use the same lakeFS configuration file when running a migration. - 1. If upgrading `lakefs` version do this or skip to the next step: Install the new lakeFS binary, if not use the existing one (the one you are running). - 1. Run the command: `LAKEFS_AUTH_UI_CONFIG_RBAC=internal lakefs migrate up` (use the **new binary** if upgrading lakeFS version). - 1. You should expect to see a log message saying Migration completed successfully. - 1. During this short DB migration process, please make sure not to make any policy / RBAC related changes. -1. Once the migration completed - Upgrade your helm release with the modified `values.yaml` and the new version and run `helm ugprade`. -1. Login to the new lakeFS pod: Execute the following command, make sure you have proper credentials, or discard to get new ones: - - ```shell - lakefs setup --user-name --access-key-id --secret-access-key --no-check - ``` -!!! warning - Please note that the newly set-up lakeFS instance remains inaccessible to users until full setup completion, due to the absence of established credentials within the system. - - -[lakefs-enterprise-install]: install.md -[lakefs-enterprise-install-prerequisites]: install.md#prerequisites diff --git a/docs/src/enterprise/getstarted/quickstart.md b/docs/src/enterprise/getstarted/quickstart.md deleted file mode 100644 index 1ff5fa57ea4..00000000000 --- a/docs/src/enterprise/getstarted/quickstart.md +++ /dev/null @@ -1,261 +0,0 @@ ---- -title: Quickstart -description: Quickstart guides for lakeFS Enterprise ---- - -# Quickstart - -Follow these quickstarts to try out lakeFS Enterprise. - -!!! warning - lakeFS Enterprise Quickstarts are not suitable for production use-cases. See the [installation guide](install.md) to set up a production-grade lakeFS Enterprise installation - -## lakeFS Enterprise Sample - -The lakeFS Enterprise Sample is the quickest way to experience the value of lakeFS Enterprise features in a containerized environment. This Docker-based setup is ideal if you want -to easily interact with lakeFS without the hassle of integration and experiment with lakeFS without writing code. - -By running the [lakeFS Enterprise Sample](https://github.com/treeverse/lakeFS-samples/tree/main/02_lakefs_enterprise), you will be getting a ready-to-use environment including -the following containers: - -* lakeFS Enterprise (includes additional features) -* Postgres: used by lakeFS as a KV store -* MinIO container: used as the storage connected to lakeFS -* Jupyter notebooks setup: Pre-populated with [notebooks](https://github.com/treeverse/lakeFS-samples/blob/main/00_notebooks/00_index.ipynb) that demonstrate lakeFS Enterprise' capabilities -* Apache Spark: this is useful for interacting with data you'll manage with lakeFS - -Checkout the [RBAC demo](https://github.com/treeverse/lakeFS-samples/blob/main/00_notebooks/rbac-demo.ipynb) notebook to see lakeFS Enterprise [Role-Based Access Control](../../security/access-control-lists.md) capabilities in action. - -## Docker Quickstart - -### Prerequisites - -!!! note - In order to use lakeFS enterprise you must have: - - - Access token to download binaries from Docker hub - - License to run lakeFS Enterprise - - [Contact us](https://lakefs.io/contact-sales/) to gain access for both. - -1. You have installed [Docker Compose](https://docs.docker.com/compose/install/) version `2.23.1` or higher on your machine. -2. Access to download *treeverse/lakefs-enterprise* from [Docker Hub](https://hub.docker.com/u/treeverse). -3. With the token you've been granted, login locally to Docker Hub with `docker login -u externallakefs -p `. - -
-The quickstart docker-compose file below creates a lakeFS server that's connected to a [local blockstore](../../howto/deploy/onprem.md#local-blockstore) and spin up the following containers: - -* lakeFS Enterprise -* Postgres: used by lakeFS as a KV store - -You can choose from the following options: - -1. Recommended: A fully functional lakeFS Enterprise setup without SSO support -2. Advanced: A fully functional lakeFS Enterprise setup including SSO support with OIDC integration configured - - !!! info - If you can postpone the evaluation of the SSO integration, we suggest starting without it to speed up overall testing. The SSO integration requires additional configurations and is best addressed later. - -=== "Recommended (SSO Disabled)" - 1. Create a `docker-compose.yaml` file with the following content - 2. Run `docker compose up` in the same directory as the `docker-compose.yaml` file. - 3. In your browser, go to to access lakeFS UI. - - ```yaml - version: "3" - services: - lakefs: - image: "treeverse/lakefs-enterprise:latest" - command: "RUN" - ports: - - "8000:8000" - depends_on: - - "postgres" - environment: - - LAKEFS_LISTEN_ADDRESS=0.0.0.0:8000 - - LAKEFS_LOGGING_LEVEL=DEBUG - - LAKEFS_AUTH_ENCRYPT_SECRET_KEY=random_secret - - LAKEFS_AUTH_UI_CONFIG_RBAC=internal - - LAKEFS_DATABASE_TYPE=postgres - - LAKEFS_DATABASE_POSTGRES_CONNECTION_STRING=postgres://lakefs:lakefs@postgres:5432/postgres?sslmode=disable - - LAKEFS_BLOCKSTORE_TYPE=local - - LAKEFS_BLOCKSTORE_LOCAL_PATH=/home/lakefs - - LAKEFS_BLOCKSTORE_LOCAL_IMPORT_ENABLED=true - - LAKEFS_AUTH_POST_LOGIN_REDIRECT_URL=http://localhost:8000/ - - LAKEFS_FEATURES_LOCAL_RBAC=true - - LAKEFS_LICENSE_CONTENTS= # for production use, we recommend using LAKEFS_LICENSE_PATH instead - configs: - - source: lakefs.yaml - target: /etc/lakefs/config.yaml - postgres: - image: "postgres:11" - ports: - - "5433:5432" - environment: - POSTGRES_USER: lakefs - POSTGRES_PASSWORD: lakefs - - configs: - lakefs.yaml: - content: | - auth: - ui_config: - login_cookie_names: - - internal_auth_session - ``` - -=== "Advanced (SSO Enabled)" - This setup uses OIDC as the SSO authentication method, thus requiring a valid OIDC configuration. - - 1. Create a `docker-compose.yaml` with the content below. - 2. Create a `.env` file with the configurations below in the same directory as the `docker-compose.yaml`, docker compose will automatically use that. - 3. Run `docker compose up` in the same directory as the `docker-compose.yaml` file. - 4. Validate the OIDC configuration: - * In your browser, go to to access lakeFS UI - * Complete the Setup process, and login with your Admin credentials - * Logout and try to login again, you will be redirected to the OIDC login page. - - `.env` - - ``` - LAKEFS_AUTH_PROVIDERS_OIDC_CLIENT_ID= - LAKEFS_AUTH_PROVIDERS_OIDC_CLIENT_SECRET= - # The name of the query parameter that is used to pass the client ID to the logout endpoint of the SSO provider, i.e client_id - LAKEFS_AUTH_PROVIDERS_OIDC_LOGOUT_CLIENT_ID_QUERY_PARAMETER= - LAKEFS_AUTH_PROVIDERS_OIDC_URL=https://my-sso.com/ - LAKEFS_AUTH_LOGOUT_REDIRECT_URL=https://my-sso.com/logout - # Optional: display a friendly name in the lakeFS UI by specifying which claim from the provider to show (i.e name, nickname, email etc) - LAKEFS_AUTH_OIDC_FRIENDLY_NAME_CLAIM_NAME= - LAKEFS_LICENSE_CONTENTS= # for production use, we recommend using LAKEFS_LICENSE_PATH instead - ``` - - `docker-compose.yaml` - - ```yaml - version: "3" - services: - lakefs: - image: "treeverse/lakefs-enterprise:latest" - command: "RUN" - ports: - - "8080:8080" - depends_on: - - "postgres" - environment: - - LAKEFS_LISTEN_ADDRESS=0.0.0.0:8000 - - LAKEFS_LOGGING_LEVEL=DEBUG - - LAKEFS_LOGGING_AUDIT_LOG_LEVEL=INFO - - LAKEFS_AUTH_ENCRYPT_SECRET_KEY=shared-secret-key - - LAKEFS_AUTH_LOGOUT_REDIRECT_URL=${LAKEFS_AUTH_LOGOUT_REDIRECT_URL} - - LAKEFS_AUTH_UI_CONFIG_LOGIN_URL=http://localhost:8000/oidc/login - - LAKEFS_AUTH_UI_CONFIG_LOGOUT_URL=http://localhost:8000/oidc/logout - - LAKEFS_AUTH_UI_CONFIG_RBAC=internal - - LAKEFS_AUTH_OIDC_FRIENDLY_NAME_CLAIM_NAME=${LAKEFS_AUTH_OIDC_FRIENDLY_NAME_CLAIM_NAME} - - LAKEFS_AUTH_PROVIDERS_OIDC_ENABLED=true - - LAKEFS_AUTH_PROVIDERS_OIDC_POST_LOGIN_REDIRECT_URL=http://localhost:8000/ - - LAKEFS_AUTH_PROVIDERS_OIDC_URL=${LAKEFS_AUTH_PROVIDERS_OIDC_URL} - - LAKEFS_AUTH_PROVIDERS_OIDC_CLIENT_ID=${LAKEFS_AUTH_PROVIDERS_OIDC_CLIENT_ID} - - LAKEFS_AUTH_PROVIDERS_OIDC_CLIENT_SECRET=${LAKEFS_AUTH_PROVIDERS_OIDC_CLIENT_SECRET} - - LAKEFS_AUTH_PROVIDERS_OIDC_CALLBACK_BASE_URL=http://localhost:8000 - - LAKEFS_AUTH_PROVIDERS_OIDC_LOGOUT_CLIENT_ID_QUERY_PARAMETER=${LAKEFS_AUTH_OIDC_LOGOUT_CLIENT_ID_QUERY_PARAMETER} - - LAKEFS_LICENSE_CONTENTS=${LAKEFS_LICENSE_CONTENTS} # for production use, we recommend using LAKEFS_LICENSE_PATH instead - - LAKEFS_AUTH_PROVIDERS_OIDC_LOGOUT_CLIENT_ID_QUERY_PARAMETER=${LAKEFS_AUTH_PROVIDERS_OIDC_LOGOUT_CLIENT_ID_QUERY_PARAMETER} - - LAKEFS_DATABASE_TYPE=postgres - - LAKEFS_DATABASE_POSTGRES_CONNECTION_STRING=postgres://lakefs:lakefs@postgres:5432/postgres?sslmode=disable - - LAKEFS_BLOCKSTORE_TYPE=local - - LAKEFS_BLOCKSTORE_LOCAL_PATH=/tmp/lakefs/data - - LAKEFS_BLOCKSTORE_LOCAL_IMPORT_ENABLED=true - - LAKEFS_FEATURES_LOCAL_RBAC=true - entrypoint: ["/app/wait-for", "postgres:5432", "--", "/app/lakefs", "run"] - configs: - - source: lakefs.yaml - target: /etc/lakefs/config.yaml - postgres: - image: "postgres:11" - ports: - - "5433:5432" - environment: - POSTGRES_USER: lakefs - POSTGRES_PASSWORD: lakefs - - #This tweak is unfortunate but also necessary. logout_endpoint_query_parameters is a list - #of strings which isn't parsed nicely as env vars. - configs: - lakefs.yaml: - content: | - auth: - ui_config: - login_cookie_names: - - internal_auth_session - - oidc_auth_session - oidc: - # friendly_name_claim_name: "name" - default_initial_groups: - - Admins - providers: - oidc: - logout_endpoint_query_parameters: - - returnTo - - http://localhost:8000/oidc/login - ``` - -## Kubernetes Helm Chart Quickstart - -In order to use lakeFS Enterprise, we provided out of the box setup, see [lakeFS Helm chart configuration](https://github.com/treeverse/charts/tree/master/charts/lakefs). - -The values below create a fully functional lakeFS Enterprise setup without SSO support. The created setup is connected to a [local blockstore](../../howto/deploy/onprem.md#local-blockstore), and spins up the following pods: - -* lakeFS Enterprise -* Postgres: used by lakeFS as a KV store - - -!!! info - If you can postpone the evaluation of the SSO integration, we suggest starting without it to speed up overall testing. The SSO integration requires additional configurations and is best addressed later. To - try lakeFS Enterprise SSO capability on a Kubernetes cluster, check out the [production deployment guide](install.md). - -### Prerequisites - -1. You have a Kubernetes cluster running in one of the platforms [supported by lakeFS](../../howto/deploy/index.md#deployment-and-setup-details). -2. [Helm](https://helm.sh/docs/intro/install/) is installed -3. Access to download *treeverse/lakefs-enterprise* from [Docker Hub](https://hub.docker.com/u/treeverse). -4. lakeFS Enterprise license - [Contact us](https://lakefs.io/contact-sales/) to gain access to lakeFS Enterprise. - -### Instructions - -1. Add the lakeFS Helm repository with `helm repo add lakefs https://charts.lakefs.io` -1. Create a `values.yaml` file with the following content and make sure to replace `` with the Docker Hub token you received, `` and ``. -1. In the desired K8S namespace run `helm install lakefs lakefs/lakefs -f values.yaml` -1. In your browser, go to the Ingress host to access lakeFS UI. - -```yaml -enterprise: - enabled: true - -image: - privateRegistry: - enabled: true - secretToken: - -lakefsConfig: | - logging: - level: "DEBUG" - blockstore: - type: local - auth: - ui_config: - rbac: internal - -ingress: - enabled: true - ingressClassName: - annotations: {} - hosts: - - host: - paths: - - / - -# useDevPostgres is false by default and will override any other db configuration, -# set false or remove for configuring your own db -useDevPostgres: true -``` \ No newline at end of file diff --git a/docs/src/enterprise/index.md b/docs/src/enterprise/index.md deleted file mode 100644 index 82198c45ad9..00000000000 --- a/docs/src/enterprise/index.md +++ /dev/null @@ -1,88 +0,0 @@ ---- -title: lakeFS Enterprise Features -description: lakeFS Enterprise is an enterprise-ready lakeFS solution providing additional features including RBAC, SSO and Support SLA. ---- - -# lakeFS Enterprise Features - -!!! info "Changelog" - For the latest updates and changes to lakeFS Enterprise features, see the [changelog](https://changelog.lakefs.io/changelog/). - -## What is lakeFS Enterprise? - -lakeFS Enterprise is a commercially-supported version of lakeFS, offering additional features and functionalities that meet the needs of organizations from a production-grade system. - -## Why did we build lakeFS Enterprise? - -lakeFS Enterprise was built for organizations that require the support, security standards and features required of a production-grade system. - -## What is the value of using lakeFS Enterprise? - -1. Support: the lakeFS team is committed to supporting you under an SLA for both issues and product enhancements. -2. Security: Full support for a suite of security features and additional lakeFS functionality. -3. Advanced Functionality for AI, ML and Data engineering use cases. See [Features](#lakefs-enterprise-features) below. - -## What security features does lakeFS Enterprise provide? - -With lakeFS Enterprise you’ll receive access to the security package containing the following features: - -1. A rich [Role-Based Access Control](../security/rbac.md) permission system that allows for fine-grained control by associating permissions with users and groups, granting them specific actions on specific resources. This ensures data security and compliance within an organization. -1. To easily manage users and groups, lakeFS Enterprise provides SSO integration (including support for SAML, OIDC, ADFS, Okta, and Azure AD), supporting existing credentials from a trusted provider, eliminating separate logins. -3. lakeFS Enterprise supports [SCIM](../howto/scim.md) for automatically provisioning and de-provisioning users and group memberships, allowing organizations to maintain a single source of truth for their user database. -1. [STS Auth](../security/sts-login.md) offers temporary, secure logins using an Identity Provider, simplifying user access and enhancing security. -1. [Authentication with AWS IAM Roles](../security/external-principals-aws.md) allows authentication using AWS IAM roles instead of lakeFS credentials, removing the need to maintain static credentials for lakeFS Enterprise users running on AWS. -1. [Auditing](../reference/auditing.md) provides a detailed action log of events happening within lakeFS, including who performed which action, on which resource - and when. - -## What additional functionality does lakeFS Enterprise provide? - -1. [lakeFS Mount](../reference/mount.md) - allows users to virtually mount a remote lakeFS repository onto a local directory. Once mounted, users can access the data as if it resides on their local filesystem, using any tool, library, or framework that reads from a local filesystem. -1. [Iceberg REST Catalog](../integrations/iceberg.md) - Provides full support for managing Iceberg tables alongside other data formats in the same lakeFS repository. Built using open standards and works with any Iceberg client. -1. [lakeFS for Snowflake](https://info.lakefs.io/lakefs-for-snowflake) - Provides full integration into the Snowflake ecosystem, including full support for Iceberg managed tables. -1. [Transactional Mirroring](../howto/mirroring.md) - Allows replicating lakeFS repositories into consistent read-only copies in remote locations. -1. [Multiple Storage Backends](../howto/multiple-storage-backends.md) - Allows managing data stored across multiple storage locations: on-prem, hybrid, or multi-cloud. -1. [Metadata Search](../datamanagment/metadata-search.md) - Enables powerful object search using object metadata, from system metadata (like path and size) to user-defined metadata. -1. [Async Commit & Merge](#async-commit-and-merge) - Non-blocking commit and merge operations for large repositories, improving responsiveness of the UI and CLI. - - -| Feature | OSS | Enterprise | -|------------------------------------------------|-----------|-----------| -| **Format-agnostic data version control** | ✅ | ✅ | -| **Cloud-agnostic** | ✅ | ✅ | -| **Zero Clone copy for isolated environment** | ✅ | ✅ | -| **Atomic Data Promotion (via merges)** | ✅ | ✅ | -| **Data stays in one place** | ✅ | ✅ | -| **Configurable Garbage Collection** | ✅ | ✅ | -| **Data CI/CD using lakeFS hooks** | ✅ | ✅ | -| **Integrates with your data stack** | ✅ | ✅ | -| **[Role Based Access Control (RBAC)](../security/rbac.md)** | | ✅ | -| **[Single Sign On (SSO)](../security/sso.md)** | | ✅ | -| **[SCIM Support](../howto/scim.md)** | | ✅ | -| **[IAM Roles](../security/external-principals-aws.md)** | | ✅ (AWS) | -| **[Mount Capability](../reference/mount.md)** | | ✅ | -| **[Iceberg REST Catalog](../integrations/iceberg.md)** | | ✅ | -| **[Metadata Search](../datamanagment/metadata-search.md)** | | ✅ | -| **[Audit Logs](../reference/auditing.md)** | | ✅ | -| **[Transactional Mirroring (cross-region)](../howto/mirroring.md)** | | ✅ | -| **[Async Commit & Merge](#async-commit-and-merge)** | | ✅ | -| **Support SLA** | | ✅ | - -## Async Commit and Merge {#async-commit-and-merge} - -lakeFS Enterprise provides asynchronous commit and merge operations for improved scalability when working with large repositories. - -**Atomicity guarantees are unchanged**: Async operations are still fully atomic. The only difference is that the API returns immediately while the operation executes in the background. - -### How it works - -- Operations return immediately with a task ID -- Progress can be monitored by polling the task status -- The UI and `lakectl` use async operations by default and handle polling automatically - -### Benefits - -- **Non-blocking**: UI and CLI remain responsive during long-running operations -- **Scalability**: Handle large commits and merges without timeout issues -- **Visibility**: Track operation progress in real-time - -!!! tip - You can learn more about the [lakeFS Enterprise architecture](./architecture.md), or follow the examples in the [Quickstart guide](./getstarted/quickstart.md). diff --git a/docs/src/enterprise/troubleshooting.md b/docs/src/enterprise/troubleshooting.md deleted file mode 100644 index a8d04138874..00000000000 --- a/docs/src/enterprise/troubleshooting.md +++ /dev/null @@ -1,128 +0,0 @@ ---- -title: Troubleshooting lakeFS Enterprise -description: Guidance on troubleshooting a lakeFS Enterprise deployment ---- - -# Troubleshooting lakeFS Enterprise - -A lakeFS Enterprise deployment includes various configuration components that must be set up correctly, especially during initial setup. To help troubleshoot configuration and deployment issues, lakeFS includes the `flare` command. - -## The `flare` command - -#### Synopsis - -The `lakeFS` binary include the flare command - -```bash -lakefs flare [flags] -``` - -#### Flags - -```bash ---env-var-filename the name of the file environment variables will be written to (default: lakefs-env.txt) ---include-env-vars should environment variables be collected by flare (default: true) --o, --output Output path relative to the current path --p, --package Package generated artifacts into a .zip file (default: false) ---stdout Output to stdout instead of files (default: false) ---zip-filename The name of the zip file created when the -p option is used (default: lakefs-flare.zip) -``` - -#### Example Usage - -```shell -# This will run flare with output set to stdout, which is redirected into a file -$ ./lakefs flare --stdout > lakefs.flare -``` - -## What Information Does the `flare` Command Collect? - -### Configuration - -lakeFS Enterprise allow configuration to be supplied in multiple ways: configuration file, environment variables, and command flags. The `flare` command collects the fully resolved final configuration used by the lakeFS process. - -### Environment Variables - -When troubleshooting, it's important to get a view of the environment in which lakeFS is running. This is especially true for container-based deployment environments, like Kubernetes, where env vars are used extensively. The `flare` command collects environment variables with the following prefixes: - -- `LAKEFS_` -- `HTTP_` -- `HOSTNAME` - -### Sanitization and Secret Redaction - -Both configuration and env var include sensitive secrets. The `flare` command has a multi-step process for redacting secrets from what it collects. The `flare` command is able to detect the following types of secrets: - -- AWS static credentials -- Azure storage keys -- Basic HTTP auth username/password -- JWTs -- Bearer auth headers -- GitHub tokens -- Certificate private keys - -Aside from the specific secret type listed above, `flare` also has the ability to detect and redact generic high-entropy strings, which are likely to be secrets. - -Redacted secrets are replaced by a `SHA512` hash of the value without exposing the actual values. - - -## Usage - Collect and Send Flare - -The following script is intended to be run locally and assumes that lakeFS Enterprise is deployed to a Kubernetes cluster, since this is the recommended setup. -Running this script requires that `kubectl` be installed on the machine it is being run from and that `kubectl` is configured with the correct context and credentials to access the cluster. Aside from running the `flare` command on lakeFS Enterprise, this script also fetches the logs from all running pods of lakeFS. - -### Step 1 - Set Script Variables - -At the top of the script you'll find the `Variables` block. It is important to change these values according to how lakeFS is deployed in your cluster. - -`NAMESPACE` - The K8s namespace where lakeFS is deployed -`LAKEFS_DEPLOYMENT` - The name of the lakeFS K8s deployment -`LAKEFS_LOGS_OUTPUT_FILE` - The name of the local file where lakeFS logs will be saved -`LAKEFS_FLARE_FILE` - The name of the local file where the lakeFS `flare` result will be saved - -### Step 2 - Execute the Script - -```shell -#!/bin/bash - -RED='\033[0;31m' -NC='\033[0m' - -# Variables -NAMESPACE=lakefs-prod -LAKEFS_DEPLOYMENT=lakefs-server -LAKEFS_LOGS_OUTPUT_FILE=lakefs.log -LAKEFS_FLARE_FILE=lakefs.flare - -# Find kubectl -KUBECTLCMD=$(which kubectl) -if [ -z "$KUBECTLCMD" ] -then - echo -e "${RED}Couldn't find kubectl in path${NC}" - exit 1 -fi - -$KUBECTLCMD get pods -o name -n $NAMESPACE | grep pod/$LAKEFS_DEPLOYMENT | xargs -I {} $KUBECTLCMD logs -n $NAMESPACE --all-containers=true --prefix --ignore-errors --timestamps {} > $LAKEFS_LOGS_OUTPUT_FILE - -$KUBECTLCMD exec deployment/$LAKEFS_DEPLOYMENT -- ./lakefs flare --stdout > $LAKEFS_FLARE_FILE -``` - -### Step 3 - Inspect the Output Files - -After executing the script you should have two files: lakeFS logs and lakeFS flare output. Before sharing these files, please review them to make sure all secrets were correctly redacted and that all the collected information is shareable. - -### Step 4 - Zip Output Files and Attach to Support Ticket - -Once you're done inspecting the files, you can zip them into a single file and attach it to a Support Ticket in the [support portal](https://support.lakefs.io/). - -#### New Ticket - -When filing a new ticket, you can attach the zip file using the file upload input at the bottom of the new ticket form. - -![new ticket](../assets/img/flare_new_ticket.png) - -#### Existing Ticket - -To add a file to an existing ticket, click the ticket subject in the [support portal](https://support.lakefs.io/). On the ticket details attach a file as a new response. You can also add text to the response, if you'd like to add further details. - -![existing ticket](../assets/img/flare_existing_ticket.png) diff --git a/docs/src/enterprise/upgrade.md b/docs/src/enterprise/upgrade.md deleted file mode 100644 index f61e7eb425a..00000000000 --- a/docs/src/enterprise/upgrade.md +++ /dev/null @@ -1,912 +0,0 @@ ---- -title: Upgrade -description: How to upgrade lakeFS Enterprise ---- - -# Upgrade - -For upgrading from lakeFS enterprise to a newer version see [lakefs migration](../howto/deploy/upgrade.md). - - -## Migrate From Fluffy to lakeFS Enterprise - -The new lakeFS Enterprise integrates all enterprise features directly into a single binary, eliminating the need for the separate Fluffy service. This simplifies deployment, configuration, and maintenance. - -## Prerequisites - -1. You're using lakeFS enterprise binary or the image in Dockerhub treeverse/lakefs-enterprise with fluffy. -1. Your lakeFS-Enterprise version is >= 1.63.0 -1. You possess a lakeFS Enterprise license. - -!!! note - [Contact us](https://lakefs.io/contact-sales/) to gain access to lakeFS Enterprise. You will be granted a token that enables downloading *dockerhub/lakeFS-Enterprise* - from [Docker Hub](https://hub.docker.com/u/treeverse), and a license to run lakeFS Enterprise. - - -To migrate from fluffy to lakeFS Enterprise, follow the steps below: - -1. Sanity Test (Optional): Install a new test lakeFS Enterprise before moving your current production setup. **Make sure to include your lakeFS Enterprise license in the configuration before setup**. Test the setup → login → create repository, etc. Once everything seems to work, delete and cleanup the test setup and we will move to the migration process. -1. Update configuration: Unlike lakeFS + Fluffy, lakeFS Enterprise uses only one configuration file. See [Configuration Changes](#configuration-changes), make sure to add the license to the configuration. -1. Spin down lakeFS and fluffy, and run lakeFS Enterprise! - -!!! warning - Please note that there will be a short downtime while replacing the lakeFS instances. - -## Configuration Changes - -### Authentication configuration - -Most Fluffy `auth.*` settings migrate directly to lakeFS Enterprise with the same structure. Below are the differences between the configurations. - - -!!! note "SAML" - - === "lakeFS & Fluffy (old)" - - ```yaml - # fluffy.yaml - auth: - logout_redirect_url: https://lakefs.company.com - post_login_redirect_url: https://lakefs.company.com - saml: - enabled: true - sp_root_url: https://lakefs.company.com - sp_x509_key_path: dummy_saml_rsa.key - sp_x509_cert_path: dummy_saml_rsa.cert - sp_sign_request: true - sp_signature_method: http://www.w3.org/2001/04/xmldsig-more#rsa-sha256 - idp_metadata_url: https://my.saml-provider.com/federationmetadata/2007-06/federationmetadata.xml - # idp_authn_name_id_format: "urn:oasis:names:tc:SAML:1.1:nameid-format:unspecified" - external_user_id_claim_name: samName - # idp_metadata_file_path: - # idp_skip_verify_tls_cert: true - ``` - ```yaml - # lakefs.yaml - auth: - logout_redirect_url: https://lakefs.company.com - cookie_auth_verification: - auth_source: saml - friendly_name_claim_name: displayName - persist_friendly_name: true - external_user_id_claim_name: samName - validate_id_token_claims: - department: r_n_d - default_initial_groups: - - "Developers" - ui_config: - login_url: https://lakefs.company.com/sso/login-saml - logout_url: https://lakefs.company.com/sso/logout-saml - login_cookie_names: - - internal_auth_session - - saml_auth_session - ``` - - - === "lakeFS Enterprise (new)" - - ```yaml - # lakefs.yaml - auth: - logout_redirect_url: https://lakefs.company.com/ # optional, URL to redirect to after logout - cookie_auth_verification: - auth_source: saml - friendly_name_claim_name: displayName - default_initial_groups: ["Admins"] - external_user_id_claim_name: http://schemas.xmlsoap.org/ws/2005/05/identity/claims/name - validate_id_token_claims: - department: r_n_d - providers: - saml: - # enabled: true # This field was dropped! - sp_root_url: https://lakefs.company.com - sp_x509_key_path: dummy_saml_rsa.key - sp_x509_cert_path: dummy_saml_rsa.cert - sp_sign_request: true - sp_signature_method: http://www.w3.org/2001/04/xmldsig-more#rsa-sha256 - idp_metadata_url: https://my.saml-provider.com/federationmetadata/2007-06/federationmetadata.xml - post_login_redirect_url: / # Where to redirect after successful SAML login - # external_user_id_claim_name: # This field was moved to auth.cookie_auth_verification - ui_config: - login_url: https://lakefs.company.com/sso/login-saml - logout_url: https://lakefs.company.com/sso/logout-saml - login_cookie_names: - - internal_auth_session - - saml_auth_session - ``` - - -!!! note "OIDC + OIDC STS" - - === "lakeFS + Fluffy (old)" - - ```yaml - # fluffy.yaml - auth: - post_login_redirect_url: / - logout_redirect_url: https://oidc-provider-url.com/logout/url - oidc: - enabled: true - url: https://oidc-provider-url.com/ - client_id: - client_secret: - callback_base_url: https://lakefs.company.com - is_default_login: true - logout_client_id_query_parameter: client_id - logout_endpoint_query_parameters: - - returnTo - - https://lakefs.company.com/oidc/login - ``` - - ```yaml - # lakefs.yaml - auth: - oidc: - friendly_name_claim_name: "name" - persist_friendly_name: true - default_initial_groups: ["Developers"] - ui_config: - login_url: /oidc/login - logout_url: /oidc/logout - login_cookie_names: - - internal_auth_session - - oidc_auth_session - ``` - - === "lakeFS Enterprise (new)" - - ```yaml - # lakefs.yaml - auth: - logout_redirect_url: https://oidc-provider-url.com/logout/url # optional, URL to redirect to after logout - ui_config: - login_url: /oidc/login - logout_url: /oidc/logout - login_cookie_names: - - internal_auth_session - - oidc_auth_session - oidc: - friendly_name_claim_name: "nickname" - default_initial_groups: ["Admins"] - providers: - oidc: - # enabled: true # This field was dropped! - post_login_redirect_url: / # This field was moved here! - url: https://oidc-provider-url.com/ - client_id: - client_secret: - callback_base_url: https://lakefs.company.com - logout_client_id_query_parameter: client_id - logout_endpoint_query_parameters: - - returnTo - - http://lakefs.company.com/oidc/login - ``` - - -!!! note "LDAP" - - === "lakeFS + Fluffy (old)" - - ```yaml - # fluffy.yaml - auth: - post_login_redirect_url: / - ldap: - server_endpoint: ldaps://ldap.company.com:636 - bind_dn: uid=,ou=,o=,dc=,dc=com - bind_password: '' - username_attribute: uid - user_base_dn: ou=,o=,dc=,dc=com - user_filter: (objectClass=inetOrgPerson) - connection_timeout_seconds: 15 - request_timeout_seconds: 7 - ``` - ```yaml - # lakefs.yaml - auth: - remote_authenticator: - enabled: true - endpoint: http://:/api/v1/ldap/login - default_user_group: "Developers" # Value needs to correspond with an existing group in lakeFS - ui_config: - logout_url: /logout - login_cookie_names: - - internal_auth_session - ``` - - === "lakeFS Enterprise (new)" - - ```yaml - # lakefs.yaml - auth: - ui_config: - logout_url: /logout - login_cookie_names: - - internal_auth_session - providers: - ldap: - server_endpoint: ldaps://ldap.company.com:636 - bind_dn: uid=,ou=,o=,dc=,dc=com - bind_password: '' - username_attribute: uid - user_base_dn: ou=,o=,dc=,dc=com - user_filter: (objectClass=inetOrgPerson) - connection_timeout_seconds: 15 - request_timeout_seconds: 7 - default_user_group: "Developers" # This field moved here! - ``` - -!!! note "AWS IAM" - - === "lakeFS + Fluffy (old)" - - ```yaml - # fluffy.yaml - serve_listen: "localhost:9001" - auth: - external: - aws_auth: - enabled: true - required_headers: - X-LakeFS-Server-ID: "localhost" - ``` - ```yaml - # lakefs.yaml - auth: - authentication_api: - endpoint: http://localhost:9001/api/v1 - external_principals_enabled: true - ``` - - === "lakeFS Enterprise (new)" - - ```yaml - # lakefs.yaml - auth: - external_aws_auth: - enabled: true - required_headers: - X-LakeFS-Server-ID: "localhost" - - ``` - - -### Authorization configuration - -!!! note "RBAC" - - === "lakeFS + Fluffy (old)" - - ```yaml - # fluffy.yaml - auth: - serve_listen_address: "localhost:9000" - cache: - enabled: true - ``` - - ```yaml - # lakefs.yaml - auth: - api: - endpoint: http://localhost:9000/api/v1 - ``` - - === "lakeFS Enterprise (new)" - - ```yaml - # lakefs.yaml - auth: - # serve_disable_authentication: false # this field was dropped! - # serve_listen_address: "localhost:9000" # this field was dropped! - # api: # this field was dropped! - # endpoint: http://localhost:9000/api/v1 # this field was dropped! - cache: - enabled: true - ``` - -## Kubernetes: Migrating with Helm from Fluffy to new lakeFS Enterprise - -### Overview - -Starting with **lakeFS Helm chart version 1.5.0**, the Fluffy authentication service has been deprecated and replaced with native lakeFS Enterprise authentication. This migration consolidates authentication into the main lakeFS application, simplifying deployment and maintenance. - -#### What's Changing - -When you upgrade to lakeFS Enterprise: - -- **Fluffy Deployment Removed**: The separate Fluffy deployment, service, and associated Kubernetes resources are no longer needed -- **Simplified Architecture**: Authentication is now handled directly by lakeFS Enterprise, reducing the number of pods and services -- **Streamlined Ingress**: No more routing between Fluffy and lakeFS - all traffic goes directly to lakeFS -- **Updated values.yaml Structure**: Authentication configuration moves from `fluffy.*` to `enterprise.auth.*` and `lakefsConfig.auth.providers.*` - -#### Prerequisites - -- Current lakeFS deployment using Fluffy authentication (chart version < 1.5.0) -- Access to update Helm values -- lakeFS Enterprise Docker Hub token -- Backup of your current values.yaml - -### Step-by-Step Migration Guide - -#### Step 1: Update Helm Repository - -```bash -helm repo update lakefs -``` - -Verify you have access to chart version 1.5.0 or later: -```bash -helm search repo lakefs/lakefs --versions -``` - -#### Step 2: Review New Chart Values - -Examine all available configuration options in the new chart: -```bash -helm show values lakefs/lakefs --version 1.5.0 > new-values-reference.yaml -``` - -#### Step 3: Update Your Image Configuration - -If you're overriding the image in your values.yaml, update it to use lakeFS Enterprise: - -```yaml -image: - repository: treeverse/lakefs-enterprise - tag: 1.63.0 - privateRegistry: - enabled: true - secretToken: -``` - -**Note**: If you're not overriding the image, the chart will automatically use the correct Enterprise image. - -#### Step 3.5: License Configuration - -!!! note - You can proceed without this step at the moment. However, licensing enforcement will be introduced soon. - Contact [support](mailto:support@treeverse.io) to receive your installation license. - -lakeFS Enterprise requires a valid license to work. -In the helm chart the license is provided as a JWT token either from an existing secret or explicitly. -The following demonstrates how to configure the license in the `values` file: - -=== "License with token provided in secrets" - - ```yaml - enterprise: - enabled: true - - secrets: - licenseContents: - ``` - -=== "License with token provided from existing secret" - - ```yaml - enterprise: - enabled: true - - # Name of existing secret to use - existingSecret: - - secretKeys: - # Use to fetch license token from an existing secret: - licenseContentsKey: - ``` - -#### Step 4: Migrate Your Authentication Configuration - -Using the [configuration examples below](#configuration-examples), update your values.yaml file: -1. Remove all `fluffy.*` configuration sections -2. Add the new `enterprise.auth.*` configuration for your authentication method -3. Move authentication settings to `lakefsConfig.auth.providers.*` - -Refer to the complete examples in the [lakeFS Helm chart repository](https://github.com/treeverse/charts/tree/master/examples/lakefs/enterprise). - -#### Step 5: Validate with Dry Run - -Before applying changes, validate your configuration: -```bash -helm upgrade lakefs/lakefs \ - --version 1.5.0 \ - --namespace \ - --values \ - --dry-run -``` - -Review the output to ensure: -- No Fluffy resources are being created -- lakeFS Enterprise deployment is configured correctly -- Ingress configuration is simplified - -#### Step 6: Perform the Upgrade - -Once validated, perform the actual upgrade: -```bash -helm upgrade lakefs/lakefs \ - --version 1.5.0 \ - --namespace \ - --values -``` - -#### Step 7: Verify the Migration - -After the upgrade completes: - -1. **Check Pod Status**: - ```bash - kubectl get pods -n - # Fluffy pods should no longer exist - ``` - -2. **Verify lakeFS Health**: - ```bash - kubectl exec -n -- curl http://localhost:8000/_health - ``` - -3. **Check Logs**: - ```bash - kubectl logs -n - # Look for successful authentication provider initialization - ``` - -4. **Test Authentication**: - - Navigate to your lakeFS URL - - Verify SSO login works correctly - - Confirm RBAC permissions are preserved - -5. **Verify Fluffy Resources Removed**: - ```bash - kubectl get all -n | grep fluffy - # Should return no results - ``` - -#### Step 8: Rollback (if needed) - -If you encounter issues, rollback to the previous version: -```bash -# Find the previous revision -helm history -n - -# Rollback to previous revision -helm rollback -n -``` - -### Configuration Examples - -Below are complete configuration examples for each authentication method, showing both the old (Fluffy) and new (Enterprise) configurations: - -#### OIDC with Helm - -!!! note "OIDC with Helm" - - === "lakeFS + Fluffy (old)" - - ```yaml - ingress: - enabled: true - ingressClassName: - hosts: - # the ingress that will be created for lakeFS - - host: - paths: - - / - - fluffy: - enabled: true - image: - privateRegistry: - enabled: true - secretToken: - fluffyConfig: | - auth: - logout_redirect_url: https://oidc-provider-url.com/logout/example - oidc: - enabled: true - url: https://oidc-provider-url.com/ - client_id: - callback_base_url: https:// - # the claim name that represents the client identifier in the OIDC provider (e.g Okta) - logout_client_id_query_parameter: client_id - # the query parameters that will be used to redirect the user to the OIDC provider (e.g Okta) after logout - logout_endpoint_query_parameters: - - returnTo - - https:///oidc/login - secrets: - create: true - sso: - enabled: true - oidc: - enabled: true - # secret given by the OIDC provider (e.g auth0, Okta, etc) - client_secret: - rbac: - enabled: true - - lakefsConfig: | - database: - type: local - blockstore: - type: local - auth: - ui_config: - login_cookie_names: - - internal_auth_session - - oidc_auth_session - oidc: - friendly_name_claim_name: - default_initial_groups: ["Developers"] - ``` - - === "lakeFS Enterprise (new)" - - ```yaml - ingress: - enabled: true - ingressClassName: - hosts: - # the ingress that will be created for lakeFS - - host: - paths: - - / - - enterprise: - enabled: true - auth: - oidc: - enabled: true - # secret given by the OIDC provider (e.g auth0, Okta, etc) - client_secret: - - image: - privateRegistry: - enabled: true - secretToken: - - lakefsConfig: | - blockstore: - type: local - auth: - logout_redirect_url: https://oidc-provider-url.com/logout/example - oidc: - friendly_name_claim_name: - default_initial_groups: ["Developers"] - providers: - oidc: - post_login_redirect_url: / - url: https://oidc-provider-url.com/ - client_id: - callback_base_url: https:// - # the claim name that represents the client identifier in the OIDC provider (e.g Okta) - logout_client_id_query_parameter: client_id - # the query parameters that will be used to redirect the user to the OIDC provider (e.g Okta) after logout - logout_endpoint_query_parameters: - - returnTo - - https:///oidc/login - ``` - -#### SAML with Helm - -!!! note "SAML with Helm" - - === "lakeFS + Fluffy (old)" - - ```yaml - ingress: - enabled: true - ingressClassName: - hosts: - # the ingress that will be created for lakeFS - - host: - paths: - - / - - fluffy: - enabled: true - image: - privateRegistry: - enabled: true - secretToken: - fluffyConfig: | - auth: - # logout_redirect_url: https:// - # post_login_redirect_url: https:// - saml: - sp_sign_request: true - # depends on IDP - sp_signature_method: "http://www.w3.org/2001/04/xmldsig-more#rsa-sha256" - # url to the metadata of the IDP - idp_metadata_url: "https:///federationmetadata/2007-06/federationmetadata.xml" - # IDP SAML claims format default unspecified - # idp_authn_name_id_format: "urn:oasis:names:tc:SAML:1.1:nameid-format:unspecified" - # claim name from IDP to use as the unique user name - external_user_id_claim_name: samName - # depending on IDP setup, if CA certs are self signed and not trusted by a known CA - idp_skip_verify_tls_cert: true - rbac: - enabled: true - secrets: - create: true - sso: - enabled: true - saml: - enabled: true - createSecret: true - lakeFSServiceProviderIngress: https:// - certificate: - saml_rsa_public_cert: | - -----BEGIN CERTIFICATE----- - ... - -----END CERTIFICATE----- - saml_rsa_private_key: | - -----BEGIN PRIVATE KEY----- - ... - -----END PRIVATE KEY----- - - lakefsConfig: | - blockstore: - type: local - auth: - cookie_auth_verification: - # claim name to display user in the UI - friendly_name_claim_name: displayName - # claim name from IDP to use as the unique user name - external_user_id_claim_name: samName - default_initial_groups: - - "Developers" - ui_config: - login_cookie_names: - - internal_auth_session - - saml_auth_session - ``` - - === "lakeFS Enterprise (new)" - - ```yaml - ingress: - enabled: true - ingressClassName: - hosts: - # the ingress that will be created for lakeFS - - host: - paths: - - / - - enterprise: - enabled: true - auth: - saml: - enabled: true - createCertificateSecret: true - certificate: - samlRsaPublicCert: | - -----BEGIN CERTIFICATE----- - ... - -----END CERTIFICATE----- - samlRsaPrivateKey: | - -----BEGIN PRIVATE KEY----- - ... - -----END PRIVATE KEY----- - - image: - privateRegistry: - enabled: true - secretToken: - - lakefsConfig: | - blockstore: - type: local - auth: - logout_redirect_url: https:// - cookie_auth_verification: - auth_source: saml - # claim name to display user in the UI - friendly_name_claim_name: displayName - # claim name from IDP to use as the unique user name - external_user_id_claim_name: samName - default_initial_groups: - - "Developers" - providers: - saml: - post_login_redirect_url: https:// - sp_root_url: https:// - sp_sign_request: true - # depends on IDP - sp_signature_method: "http://www.w3.org/2001/04/xmldsig-more#rsa-sha256" - # url to the metadata of the IDP - idp_metadata_url: "https:///federationmetadata/2007-06/federationmetadata.xml" - # IDP SAML claims format default unspecified - idp_authn_name_id_format: "urn:oasis:names:tc:SAML:1.1:nameid-format:unspecified" - # depending on IDP setup, if CA certs are self signed and not trusted by a known CA - #idp_skip_verify_tls_cert: true - ``` - -#### LDAP with Helm - -!!! note "LDAP with Helm" - - === "lakeFS + Fluffy (old)" - - ```yaml - ingress: - enabled: true - ingressClassName: - hosts: - # the ingress that will be created for lakeFS - - host: - paths: - - / - - fluffy: - enabled: true - image: - privateRegistry: - enabled: true - secretToken: - fluffyConfig: | - auth: - post_login_redirect_url: / - ldap: - server_endpoint: ldaps://ldap.company.com:636 - bind_dn: uid=,ou=Users,o=,dc=,dc=com - username_attribute: uid - user_base_dn: ou=Users,o=,dc=,dc=com - user_filter: (objectClass=inetOrgPerson) - connection_timeout_seconds: 15 - request_timeout_seconds: 7 - - secrets: - create: true - - sso: - enabled: true - ldap: - enabled: true - bind_password: - rbac: - enabled: true - - lakefsConfig: | - blockstore: - type: local - auth: - remote_authenticator: - enabled: true - default_user_group: "Developers" - ui_config: - login_cookie_names: - - internal_auth_session - ``` - - === "lakeFS Enterprise (new)" - - ```yaml - ingress: - enabled: true - ingressClassName: - hosts: - # the ingress that will be created for lakeFS - - host: - paths: - - / - - enterprise: - enabled: true - auth: - ldap: - enabled: true - bindPassword: - - image: - privateRegistry: - enabled: true - secretToken: - - lakefsConfig: | - blockstore: - type: local - auth: - ui_config: - login_cookie_names: - - internal_auth_session - providers: - ldap: - server_endpoint: ldaps://ldap.company.com:636 - bind_dn: uid=,ou=Users,o=,dc=,dc=com - username_attribute: uid - user_base_dn: ou=Users,o=,dc=,dc=com - user_filter: (objectClass=inetOrgPerson) - default_user_group: "Developers" - connection_timeout_seconds: 15 - request_timeout_seconds: 7 - ``` - -#### AWS IAM with Helm - -!!! note "AWS IAM with Helm" - - === "lakeFS + Fluffy (old)" - - ```yaml - lakefsConfig: | - auth: - authentication_api: - external_principals_enabled: true - ingress: - enabled: true - ingressClassName: - hosts: - # the ingress that will be created for lakeFS - - host: - paths: - - / - - fluffy: - enabled: true - image: - repository: treeverse/fluffy - pullPolicy: IfNotPresent - privateRegistry: - enabled: true - secretToken: - fluffyConfig: | - auth: - external: - aws_auth: - enabled: true - # the maximum age in seconds for the GetCallerIdentity request - #get_caller_identity_max_age: 60 - # headers that must be present by the client when doing login request - required_headers: - # same host as the lakeFS server ingress - X-LakeFS-Server-ID: - secrets: - create: true - sso: - enabled: true - rbac: - enabled: true - ``` - - === "lakeFS Enterprise (new)" - - ```yaml - ingress: - enabled: true - ingressClassName: - hosts: - # the ingress that will be created for lakeFS - - host: - paths: - - / - - lakefsConfig: | - auth: - external_aws_auth: - enabled: true - # the maximum age in seconds for the GetCallerIdentity request - #get_caller_identity_max_age: 60 - # headers that must be present by the client when doing login request - required_headers: - # same host as the lakeFS server ingress - X-LakeFS-Server-ID: - ``` - -### Important Notes - -* Complete configuration examples for each authentication method are available in the [lakeFS Helm chart repository](https://github.com/treeverse/charts/tree/master/examples/lakefs/enterprise) -* The examples include local blockstore for quick-start - replace with S3/Azure/GCS for production deployments -* Configure the `image.privateRegistry.secretToken` with your DockerHub token for accessing enterprise images -* Update all placeholder values (marked with `<>`) with your actual configuration - -### Troubleshooting - -If you encounter issues during migration: - -1. **Authentication Failures**: Check that all authentication settings have been properly moved to the new configuration structure -2. **Image Pull Errors**: Ensure your DockerHub token has access to the lakeFS Enterprise image -3. **Ingress Issues**: Confirm that your ingress is pointing directly to lakeFS (not Fluffy) - -For additional support, consult the [lakeFS documentation](https://community.lakefs.io) or contact lakeFS support. \ No newline at end of file diff --git a/docs/src/experimental/dir_marker.png b/docs/src/experimental/dir_marker.png deleted file mode 100644 index 51429cb7c20..00000000000 Binary files a/docs/src/experimental/dir_marker.png and /dev/null differ diff --git a/docs/src/experimental/lakectl_local_posix.md b/docs/src/experimental/lakectl_local_posix.md deleted file mode 100644 index 9837e3def12..00000000000 --- a/docs/src/experimental/lakectl_local_posix.md +++ /dev/null @@ -1,304 +0,0 @@ ---- -title: lakectl local file permissions tracking -description: An experimental feature that allows tracking file ownership and permissions when using lakectl local -search: - exclude: true ---- - -# lakectl local file permission tracking - -!!! warning "Experimental" - - This experimental feature is used to: - -* Support mode preservation for files and folders managed via lakectl local **for POSIX compliant filesystems only** -* Support user and group preservation for files and folders managed via lakectl local **for POSIX compliant filesystems only** - - -!!! info - This feature is currently supported for Unix based Operating Systems only - -!!! warning - Please make sure to contact the lakeFS team before enabling any experimental features! - -## Configuration - -By default, this feature is disabled. Enabling file permission tracking is done via the configuration variable -`experimental.local.posix_permissions.enabled` which can be added to the lakectl.yaml file: - - ```yaml - credentials: - access_key_id: AKIAIOSFDNN7EXAMPLEQ - secret_access_key: wJalrXUtnFEMI/K7MDENG/bPxRfiCYEXAMPLEKEY - metastore: - glue: - catalog_id: "" - hive: - db_location_uri: file:/user/hive/warehouse/ - uri: "" - server: - endpoint_url: http://localhost:8000/api/v1 - experimental: - local: - posix_permissions: - enabled: true - ``` - -It is also possible to enable this feature via the corresponding environment variable: -`LAKECTL_EXPERIMENTAL_LOCAL_POSIX_PERMISSIONS_ENABLED` - -## Usage - -lakectl local will automatically track changes in file permissions and ownership as part of the sync with the remote server. -During the first sync with a remote path, lakectl local will need to update all the objects under this path in order to sync -the permissions with lakeFS. -When first creating the file and directory structure from an existing remote path the default permissions are set: -- `0o0666 & ~umask` mode for files -- `0o0777 & ~umask` mode for directories -- Numerical GID and UID of the current user - -!!! warning - Users with stricter umasks will change permissions on push - - -!!! warning - Please note that once a local path is synchronized with a remote path with permissions tracking enabled, you must continue to work with this remote path - with the feature enabled. - -### Changes from default behavior - -In order to support this feature, some changes needed to be made in lakectl local, and as such the behavior when the feature is enabled is a bit different from the default behavior of lakectl local. -The main differences are: -1. To support tracking of directory permissions and ownership, lakectl local will now write directory markers to the remote server, which will hold this information on the remote object. -These markers are zero sized objects with paths ending in `/` designed to indicate a directory in S3 and used to save the directory information. -2. Syncing between local and remote paths will take into account changes in file ownership and permissions. In case of change in one of these, the file will show as modified - -## Limitations / Warnings - -- All machines on which lakectl local is used with POSIX permissions must share UIDs and GIDs. -- Tracked modes will only be accessible via lakectl local and not through the UI, or any lakeFS API calls (e.g., statObject) or S3 gateway operations (e.g., getObject). -- Tracked modes are not expected to persist through an upload followed by an overwrite by a client other than lakectl local. After an overwrite, files and directories are expected to have their respective default mode -- The POSIX permissions feature and functionality is applicable only to the scope of lakectl local. Using other methods to read/write/diff on paths that were cloned with the feature enabled - will not guarantee consistent behavior compared to using the lakectl local commands. For example: performing `lakectl diff` might result in a different output than performing `lakectl local status` -- Diff (`lakectl local status`) takes into account the following attributes: -1. Client Mtime -2. File/Dir UID -3. File/Dir GID -4. File/Dir mode - -!!! note - The changes to these attributes are not visualized or reported explicitly; the file will be reported as changed. - -- Merge will fail on a conflict stemming from a change to permissions or ownership. There is no explicit reporting the root cause of the failure (the file will be reported as changed) - In case of failure to read/set/update permissions (due to user insufficient privileges, for example), lakectl local will fail with an informative message. However, there's no guarantee for atomicity of operations. -In this case, the local directory/remote path might be in an inconsistent state, and it will be up to the user to fix it. -- Unprivileged users can use non-lakectl-local commands in conjunction with lakectl local to change owners of files on remote machines in unpredictable ways, - including in some cases to set ownership to users for which they themselves cannot chown files. - -### Example - -1. Clone remote repository to local path: - ```shell - user@host /tmp/test-perm - % LAKECTL_EXPERIMENTAL_LOCAL_POSIX_PERMISSIONS_ENABLED=true lakectl local clone lakefs://quickstart/dev/ - download data/lakes.source.md ... done! [531B in 0s] - download images/quickstart-step-02-bran~ ... done! [3.09KB in 0s] - download images/quickstart-step-04-roll~ ... done! [3.22KB in 0s] - download images/quickstart-step-03-merg~ ... done! [3.43KB in 0s] - download images/quickstart-step-01-quer~ ... done! [3.69KB in 0s] - download images/axolotl.png ... done! [3.82KB in 0s] - download images/quickstart-step-00-laun~ ... done! [4.10KB in 0s] - download images/quickstart-step-05-acti~ ... done! [4.84KB in 0s] - download images/waving-axolotl-transpar~ ... done! [22.92KB in 0s] - download README.md ... done! [28.99KB in 0s] - download images/create-lakefs-branch.png ... done! [56.24KB in 0s] - download images/commit-change-02.png ... done! [64.40KB in 0s] - download images/duckdb-editor-05.png ... done! [65.49KB in 0s] - download images/merge02.png ... done! [70.17KB in 0s] - download images/duckdb-editor-03.png ... done! [75.86KB in 0s] - download images/duckdb-editor-06.png ... done! [87.92KB in 0s] - download images/duckdb-editor-04.png ... done! [90.42KB in 0s] - download images/merge01.png ... done! [92.30KB in 0s] - download images/commit-change.png ... done! [98.80KB in 0s] - download images/duckdb-editor-02.png ... done! [103.16KB in 0s] - download images/create-quickstart-repo.~ ... done! [121.72KB in 0s] - download images/hooks-05.png ... done! [139.44KB in 0s] - download images/hooks-07.png ... done! [142.94KB in 0s] - download images/hooks-06.png ... done! [146.62KB in 0s] - download images/lakefs-login-screen.png ... done! [148.67KB in 0s] - download images/hooks-02.png ... done! [151.00KB in 0s] - download images/user_config.png ... done! [166.49KB in 0s] - download images/hooks-04.png ... done! [170.31KB in 0s] - download images/hooks-01.png ... done! [172.13KB in 0s] - download images/repo-list.png ... done! [178.64KB in 0s] - download images/hooks-00.png ... done! [182.45KB in 0s] - download images/hooks-03.png ... done! [182.78KB in 0s] - download images/duckdb-main-01.png ... done! [206.85KB in 0s] - download images/duckdb-main-03.png ... done! [207.50KB in 0s] - download images/quickstart-repo.gif ... done! [213.80KB in 0s] - download images/hooks-08.png ... done! [218.91KB in 0s] - download images/repo-contents.png ... done! [232.40KB in 0s] - download images/duckdb-main-02.png ... done! [239.56KB in 0s] - download images/empty-repo-list.png ... done! [254.93KB in 0s] - download lakes.parquet ... done! [916.39KB in 1ms] - - Successfully cloned lakefs://quickstart/dev/ to /tmp/test-perm. - - Clone Summary: - - Downloaded: 40 - Uploaded: 0 - Removed: 0 - - ``` - -2. The first time we clone objects without permissions, all the files will appear as modified (note the added directory markers): - ```shell - user@host /tmp/test-perm - % LAKECTL_EXPERIMENTAL_LOCAL_POSIX_PERMISSIONS_ENABLED=true lakectl local status !10245 - - diff 'local:///tmp/test-perm' <--> 'lakefs://quickstart/8fa0d994afedbc00e0a44725e8a8d64695e638d4ba683756f5d2411eb7aa8fdf/'... - diff 'lakefs://quickstart/8fa0d994afedbc00e0a44725e8a8d64695e638d4ba683756f5d2411eb7aa8fdf/' <--> 'lakefs://quickstart/dev/'... - - ╔════════╦══════════╦═══════════════════════════════════════════╗ - ║ SOURCE ║ CHANGE ║ PATH ║ - ╠════════╬══════════╬═══════════════════════════════════════════╣ - ║ local ║ modified ║ README.md ║ - ║ local ║ added ║ data/ ║ - ║ local ║ modified ║ data/lakes.source.md ║ - ║ local ║ added ║ images/ ║ - ║ local ║ modified ║ images/axolotl.png ║ - ║ local ║ modified ║ images/commit-change-02.png ║ - ║ local ║ modified ║ images/commit-change.png ║ - ║ local ║ modified ║ images/create-lakefs-branch.png ║ - ║ local ║ modified ║ images/create-quickstart-repo.png ║ - ║ local ║ modified ║ images/duckdb-editor-02.png ║ - ║ local ║ modified ║ images/duckdb-editor-03.png ║ - ║ local ║ modified ║ images/duckdb-editor-04.png ║ - ║ local ║ modified ║ images/duckdb-editor-05.png ║ - ║ local ║ modified ║ images/duckdb-editor-06.png ║ - ║ local ║ modified ║ images/duckdb-main-01.png ║ - ║ local ║ modified ║ images/duckdb-main-02.png ║ - ║ local ║ modified ║ images/duckdb-main-03.png ║ - ║ local ║ modified ║ images/empty-repo-list.png ║ - ║ local ║ modified ║ images/hooks-00.png ║ - ║ local ║ modified ║ images/hooks-01.png ║ - ║ local ║ modified ║ images/hooks-02.png ║ - ║ local ║ modified ║ images/hooks-03.png ║ - ║ local ║ modified ║ images/hooks-04.png ║ - ║ local ║ modified ║ images/hooks-05.png ║ - ║ local ║ modified ║ images/hooks-06.png ║ - ║ local ║ modified ║ images/hooks-07.png ║ - ║ local ║ modified ║ images/hooks-08.png ║ - ║ local ║ modified ║ images/lakefs-login-screen.png ║ - ║ local ║ modified ║ images/merge01.png ║ - ║ local ║ modified ║ images/merge02.png ║ - ║ local ║ modified ║ images/quickstart-repo.gif ║ - ║ local ║ modified ║ images/quickstart-step-00-launch.png ║ - ║ local ║ modified ║ images/quickstart-step-01-query.png ║ - ║ local ║ modified ║ images/quickstart-step-02-branch.png ║ - ║ local ║ modified ║ images/quickstart-step-03-merge.png ║ - ║ local ║ modified ║ images/quickstart-step-04-rollback.png ║ - ║ local ║ modified ║ images/quickstart-step-05-actions.png ║ - ║ local ║ modified ║ images/repo-contents.png ║ - ║ local ║ modified ║ images/repo-list.png ║ - ║ local ║ modified ║ images/user_config.png ║ - ║ local ║ modified ║ images/waving-axolotl-transparent-w90.gif ║ - ║ local ║ modified ║ lakes.parquet ║ - ╚════════╩══════════╩═══════════════════════════════════════════╝ - - ``` - -3. Let's commit the changes so that the remote path will be updated with the file permissions: - - ```shell - user@host /tmp/test-perm - % LAKECTL_EXPERIMENTAL_LOCAL_POSIX_PERMISSIONS_ENABLED=true lakectl local commit -m "Add file permissions" !10246 - - Getting branch: dev - - diff 'local:///tmp/test-perm' <--> 'lakefs://quickstart/8fa0d994afedbc00e0a44725e8a8d64695e638d4ba683756f5d2411eb7aa8fdf/'... - upload data/ ... done! [0B in 15ms] - upload images/ ... done! [0B in 15ms] - upload data/lakes.source.md ... done! [531B in 11ms] - upload images/quickstart-step-02-branch~ ... done! [3.09KB in 11ms] - upload images/quickstart-step-04-rollba~ ... done! [3.22KB in 11ms] - upload images/quickstart-step-03-merge.~ ... done! [3.43KB in 12ms] - upload images/quickstart-step-01-query.~ ... done! [3.69KB in 11ms] - upload images/axolotl.png ... done! [3.82KB in 15ms] - upload images/quickstart-step-00-launch~ ... done! [4.10KB in 12ms] - upload images/quickstart-step-05-action~ ... done! [4.84KB in 11ms] - upload images/waving-axolotl-transparen~ ... done! [22.92KB in 11ms] - upload README.md ... done! [28.99KB in 15ms] - upload images/create-lakefs-branch.png ... done! [56.24KB in 15ms] - upload images/commit-change-02.png ... done! [64.40KB in 14ms] - upload images/duckdb-editor-05.png ... done! [65.49KB in 14ms] - upload images/merge02.png ... done! [70.17KB in 12ms] - upload images/duckdb-editor-03.png ... done! [75.86KB in 16ms] - upload images/duckdb-editor-06.png ... done! [87.92KB in 13ms] - upload images/duckdb-editor-04.png ... done! [90.42KB in 15ms] - upload images/merge01.png ... done! [92.30KB in 12ms] - upload images/commit-change.png ... done! [98.80KB in 15ms] - upload images/duckdb-editor-02.png ... done! [103.16KB in 12ms] - upload images/create-quickstart-repo.png ... done! [121.72KB in 15ms] - upload images/hooks-05.png ... done! [139.44KB in 15ms] - upload images/hooks-07.png ... done! [142.94KB in 11ms] - upload images/hooks-06.png ... done! [146.62KB in 13ms] - upload images/lakefs-login-screen.png ... done! [148.67KB in 12ms] - upload images/hooks-02.png ... done! [151.00KB in 13ms] - upload images/user_config.png ... done! [166.49KB in 11ms] - upload images/hooks-04.png ... done! [170.31KB in 14ms] - upload images/hooks-01.png ... done! [172.13KB in 13ms] - upload images/repo-list.png ... done! [178.64KB in 11ms] - upload images/hooks-00.png ... done! [182.45KB in 13ms] - upload images/hooks-03.png ... done! [182.78KB in 13ms] - upload images/duckdb-main-01.png ... done! [206.85KB in 13ms] - upload images/duckdb-main-03.png ... done! [207.50KB in 15ms] - upload images/quickstart-repo.gif ... done! [213.80KB in 12ms] - upload images/hooks-08.png ... done! [218.91KB in 12ms] - upload images/repo-contents.png ... done! [232.40KB in 11ms] - upload images/duckdb-main-02.png ... done! [239.56KB in 14ms] - upload images/empty-repo-list.png ... done! [254.93KB in 13ms] - upload lakes.parquet ... done! [916.39KB in 14ms] - - Sync Summary: - - Downloaded: 0 - Uploaded: 42 - Removed: 0 - - Finished syncing changes. Perform commit on branch... - Commit for branch "dev" completed. - - ID: 7f1f0984030c43ab388a649fe97c3c1564421118099ccc8c47f74645776e73f2 - Message: Add file permissions - Timestamp: 2024-07-03 16:04:07 +0300 IDT - Parents: 8fa0d994afedbc00e0a44725e8a8d64695e638d4ba683756f5d2411eb7aa8fdf - - ``` - -4. Looking at the remote repository we will notice the directory markers: -![dir_marker.png](dir_marker.png) - -5. The object metadata will contain the file/dir permissions: -![object_stats.png](object_stats.png) - -6. Updating a file's mode will result in a diff: - - ```shell - user@host /tmp/test-perm - % chmod 770 lakes.parquet !10247 - - user@host /tmp/test-perm - % LAKECTL_EXPERIMENTAL_LOCAL_POSIX_PERMISSIONS_ENABLED=true lakectl local status !10248 - - diff 'local:///tmp/test-perm' <--> 'lakefs://quickstart/7f1f0984030c43ab388a649fe97c3c1564421118099ccc8c47f74645776e73f2/'... - diff 'lakefs://quickstart/7f1f0984030c43ab388a649fe97c3c1564421118099ccc8c47f74645776e73f2/' <--> 'lakefs://quickstart/dev/'... - - ╔════════╦══════════╦═══════════════╗ - ║ SOURCE ║ CHANGE ║ PATH ║ - ╠════════╬══════════╬═══════════════╣ - ║ local ║ modified ║ lakes.parquet ║ - ╚════════╩══════════╩═══════════════╝ - - ``` \ No newline at end of file diff --git a/docs/src/experimental/object_stats.png b/docs/src/experimental/object_stats.png deleted file mode 100644 index b1961641485..00000000000 Binary files a/docs/src/experimental/object_stats.png and /dev/null differ diff --git a/docs/src/favicon.ico b/docs/src/favicon.ico deleted file mode 100644 index 9dd66cf1b65..00000000000 Binary files a/docs/src/favicon.ico and /dev/null differ diff --git a/docs/src/howto/backup-and-restore.md b/docs/src/howto/backup-and-restore.md deleted file mode 100644 index f561080e28c..00000000000 --- a/docs/src/howto/backup-and-restore.md +++ /dev/null @@ -1,205 +0,0 @@ ---- -title: Backup and Restore Repository -description: Use the lakeFS DumpRefs and RestoreRefs commands to backup and restore lakeFS repository ---- - -# Backup and Restore Repository - -This section explains how to backup and restore lakeFS repository for different use-cases: - -1. Disaster Recovery: you want to backup the repository regularly so you can restore it in case of any disaster. You'd also need to make sure to backup the repository's storage namespace to another, preferably geographically separate location. -1. Migrate Repository: you want to migrate a repository from one environment to another lakeFS environment. -1. Clone Repository: you want to clone a repository. - -!!! tip - Refer to [Python Sample Notebooks](https://github.com/treeverse/lakeFS-samples/tree/main/01_standalone_examples/backup-migrate-or-clone-repo) to backup, migrate or clone a lakeFS repository - - -## Commit Changes - -Backup process doesn't backup uncommitted data, so make sure to commit any staged writes before running the backup. But this is an optional process. - -You can manually commit the changes by using lakeFS UI or you can programmatically commit any uncommitted changes. This Python example shows how to programmatically loop through all branches in lakeFS and commit any uncommitted data but this might take a lot of time if you have many branches in the repo: - -```python -import lakefs - -repo = lakefs.Repository("example-repo") - -for branch in repo.branches(): - for diff in repo.branch(branch.id).uncommitted(): - repo.branch(branch.id).commit(message='Committed changes to backup the repository') -``` - -## Backup Repository - -### Dump Metadata - -Dump metadata/refs of the repository by using lakeFS API or CLI. - -* Example code to dump metadata by using lakeFS Python SDK (this process will create `_lakefs/refs_manifest.json` file in your storage namespace for the repository): - -```python -lakefs_sdk_client.internal_api.dump_refs("example-repo") -``` - -* Example commands to dump metadata by using [lakeFS CLI](../reference/cli.md#lakectl-refs-dump) and upload to S3 storage for the repository: - -```bash -lakectl refs-dump lakefs://example-repo > refs_manifest.json - -aws s3 cp refs_manifest.json s3://source-bucket-name/example-repo/_lakefs/refs_manifest.json -``` - -* Example commands to dump metadata by using [lakeFS CLI](../reference/cli.md#lakectl-refs-dump) and upload to Azure Blob storage for the repository: - -```bash -lakectl refs-dump lakefs://example-repo > refs_manifest.json - -az storage blob upload --file refs_manifest.json --container-name sourceContainer --name example-repo/_lakefs/refs_manifest.json --account-name source-storage-account-name --account-key -``` - -!!! warning - Shutdown lakeFS services immediately after dumping the metadata so nobody can make any changes in the source repository. - -### Copy Data to Backup Storage Location - -Copy the repository's storage namespace to another, preferably geographically separate location. Copy command depends on the type of object storage and the tool that you use. - -* Example S3 command: - -```bash -aws s3 sync s3://source-bucket-name/example-repo s3://target-bucket-name/example-repo -``` - -* Example Azure azcopy command: - -```bash -azcopy copy 'https://source-storage-account-name.blob.core.windows.net/sourceContainer/example-repo/*?source_container_SAS_token' 'https://target-storage-account-name.blob.core.windows.net/targetContainer/example-repo?target_container_SAS_token' --recursive -``` - -!!! info - You can restart lakeFS services after copying the data to backup storage location. - - -## Restore Repository - -### Create a new Bare Repository - -Create a bare lakeFS repository with a new name if you want to clone the repository or use the same repository name if you want to migrate or restore the repository. - -* Python example to create a bare lakeFS repository using S3 storage: - -```python -lakefs.Repository("target-example-repo").create(bare=True, storage_namespace="s3://target-bucket-name/example-repo", default_branch="same-default-branch-as-in-source-repo") -``` - -* Python example to create a bare lakeFS repository using Azure storage: - -```python -lakefs.Repository("target-example-repo").create(bare=True, storage_namespace="https://target-storage-account-name.blob.core.windows.net/targetContainer/example-repo", default_branch="same-default-branch-as-in-source-repo") -``` - -* [lakeFS CLI](../reference/cli.md#lakectl-repo-create-bare) command to create a bare lakeFS repository using S3 storage: - -```bash -lakectl repo create-bare lakefs://target-example-repo s3://target-bucket-name/example-repo --default-branch "same-default-branch-as-in-source-repo" -``` - -* [lakeFS CLI](../reference/cli.md#lakectl-repo-create-bare) command to create a bare lakeFS repository using Azure storage: - -``` -lakectl repo create-bare lakefs://target-example-repo https://target-storage-account-name.blob.core.windows.net/targetContainer/example-repo --default-branch "same-default-branch-as-in-source-repo" -``` - -### Restore Metadata to new Repository - -Run restore_refs to load back all commits, tags and branches. - -* Python example to restore metadata to new repository. First download metadata(refs_manifest.json) file created by metadata dump process: - -```bash -aws s3 cp s3://target-bucket-name/example-repo/_lakefs/refs_manifest.json . -``` - -```bash -azcopy copy 'https://target-storage-account-name.blob.core.windows.net/targetContainer/example-repo/_lakefs/refs_manifest.json?' . -``` - -Then read refs_manifest.json file and restore metadata to new repository: - -```python -with open('./refs_manifest.json') as file: - refs_manifest_json = json.load(file) - print(refs_manifest_json) - -target_lakefs_sdk_client.internal_api.restore_refs(target_repo_name, refs_manifest_json) -``` - -* [lakeFS CLI](../reference/cli.md#lakectl-refs-restore) command to restore metadata to new repository using S3 storage: - -```bash -aws s3 cp s3://target-bucket-name/example-repo/_lakefs/refs_manifest.json - | lakectl refs-restore lakefs://target-example-repo --manifest - -``` - -* [lakeFS CLI](../reference/cli.md#lakectl-refs-restore) command to restore metadata to new repository using Azure storage: - -```bash -az storage blob download --container-name targetContainer --name example-repo/_lakefs/refs_manifest.json --account-name target-storage-account-name --account-key | lakectl refs-restore lakefs://target-example-repo --manifest - -``` - -!!! tip - If you are running backups regularly, it is highly advised to test the restore process periodically to make sure that you are able to restore the repository in case of disaster. - - -## Python Helper Script for Backup and Restore - -For more streamlined repository backup and restore operations, you can use the `lakefs-refs.py` script available in the [lakeFS repository](https://github.com/treeverse/lakeFS/tree/master/scripts). - -### Overview - -The `lakefs-refs.py` script automates the backup and restore procedures described in this document. It handles all the necessary steps to dump and restore lakeFS repository references, making the process simpler and less error-prone for repository migration and backup purposes. - -### Prerequisites - -Install the required dependencies: - -```bash -pip install -r requirements.txt -``` - -### Usage Examples - -#### Dump Repository References - -The script provides an easy way to dump repository metadata: - -```bash -python lakefs-refs.py dump [--all] [--commit] [--rm] [--endpoint-url ] [--access-key-id ] [--secret-access-key ] -``` - -Options: - -* ``: Name of the specific repository to dump -* `--all`: Dump all repositories instead of a specific one -* `--commit`: Commit any uncommitted changes before dumping -* `--rm`: Delete repository definition after successful dump -* Authentication options (see below) - -#### Restore Repository References - -For restoring repository metadata from manifest files: - -```bash -python lakefs-refs.py restore [ ...] [--ignore-storage-id] [--endpoint-url ] [--access-key-id ] [--secret-access-key ] -``` - -Options: - -* ``: One or more manifest files to restore -* `--ignore-storage-id`: Create repository without storage_id (useful when migrating to a different storage backend) -* Authentication options (see below) - -### Authentication - -The script uses the same authentication method as `lakectl`, supporting authentication via command line parameters, environment variables (`LAKECTL_*`), or the `~/.lakectl.yaml` configuration file. diff --git a/docs/src/howto/catalog_exports.md b/docs/src/howto/catalog_exports.md deleted file mode 100644 index 125d7185f75..00000000000 --- a/docs/src/howto/catalog_exports.md +++ /dev/null @@ -1,144 +0,0 @@ ---- -title: Data Catalogs Exports -description: This section explains how lakeFS can integrate with external Data Catalogs via metastore update operations. ---- - -# Data Catalogs Export - - -## About Data Catalogs Export - -Data Catalog Export is all about integrating query engines (like Spark, AWS Athena, Presto, etc.) with lakeFS. - -Data Catalogs (such as Hive Metastore or AWS Glue) store metadata for services (such as Spark, Trino and Athena). They contain metadata such as the location of the table, information about columns, partitions and much more. - -With Data Catalog Exports, one can leverage the versioning capabilities of lakeFS in external data warehouses and query engines to access tables with branches and commits. - -At the end of this guide, you will be able to query lakeFS data from Athena, Trino and other catalog-dependent tools: - -```sql -USE main; -USE my_branch; -- any branch -USE v101; -- or tag - -SELECT * FROM users -INNER JOIN events -ON users.id = events.user_id; -- SQL stays the same, branch or tag exist as schema -``` - -## How it works - -Several well known formats exist today let you export existing tables in lakeFS into a "native" object store representation -which does not require copying the data outside of lakeFS. - -These are metadata representations and can be applied automatically through hooks. - -### Table Declaration - -After creating a lakeFS repository, configure tables as table descriptor objects on the repository on the path `_lakefs_tables/TABLE.yaml`. -Note: the Glue exporter can currently only export tables of `type: hive`. We expect to add more. - -#### Hive tables - -Hive metadata server tables are essentially just a set of objects that share a prefix, with no table metadata stored on the object store. You need to configure prefix, partitions, and schema. - -```yaml -name: animals -type: hive -path: path/to/animals/ -partition_columns: ['year'] -schema: - type: struct - fields: - - name: year - type: integer - nullable: false - metadata: {} - - name: page - type: string - nullable: false - metadata: {} - - name: site - type: string - nullable: true - metadata: - comment: a comment about this column -``` - -!!! tip - Useful types recognized by Hive include `integer`, `long`, `short`, `string`, `double`, `float`, `date`, and `timestamp`. - - -### Catalog Exporters - -Exporters are code packages accessible through [Lua integration](./hooks/lua.md#lua-library-reference). Each exporter is exposed as a Lua function under the package namespace `lakefs/catalogexport`. Call them from hooks to connect lakeFS tables to various catalogs. - -#### Currently supported exporters - -| Exporter | Description | Notes | -|:-----------------------------------------|:------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|:---------------------------------------------------------------------------------------------------------------------------------------------------------------------| -| **Symlink exporter** | Writes metadata for the table using Hive's [SymlinkTextInputFormat](https://svn.apache.org/repos/infra/websites/production/hive/content/javadocs/r2.1.1/api/org/apache/hadoop/hive/ql/io/SymlinkTextInputFormat.html) | | -| **AWS Glue Catalog (+ Athena) exporter** | Creates a table in Glue using Hive's format and updates the location to symlink files (reuses Symlink Exporter). | For Iceberg tables, see the [Glue Catalog Federation](../integrations/glue_metastore.md) integration instead | -| **Delta Lake table exporter** | Export Delta Lake tables from lakeFS to an external storage | | -| **Unity Catalog exporter** | The Unity Catalog exporter serves the purpose of registering a Delta Lake table in Unity Catalog. It operates in conjunction with the Delta Lake exporter. In this workflow, the Delta Lake exporter is utilized to export a Delta Lake table from lakeFS. Subsequently, the obtained result is passed to the Unity Catalog exporter to facilitate its registration within Unity Catalog. | See a step-by-step guide on how to integrate with [Unity Catalog Exporter](../integrations/unity-catalog.md)
Currently, only AWS S3 storage is supported | - -#### Running an Exporter - -Exporters are meant to run as [Lua hooks](./hooks/lua.md). - -Configure the actions trigger by using [events and branches](./hooks/index.md#action-file-schema). Of course, you can add additional custom filtering logic to the Lua script if needed. -The default table name when exported is `${repository_id}_${_lakefs_tables/TABLE.md(name field)}_${ref_name}_${short_commit}`. - -Example of an action that will be triggered when a `post-commit` event happens in the `export_table` branch. - -```yaml -name: Glue Table Exporter -description: export my table to glue -on: - post-commit: - branches: ["export_table"] -hooks: - - id: my_exporter - type: lua - properties: - # exporter script location - script_path: "scripts/my_export_script.lua" - args: - # table descriptor - table_source: '_lakefs_tables/my_table.yaml' -``` - -Tip: Actions can be extended to customize any desired behavior, for example validating branch names since they are part of the table name: - -```yaml -# _lakefs_actions/validate_branch_name.yaml -name: validate-lower-case-branches -on: - pre-create-branch: -hooks: - - id: check_branch_id - type: lua - properties: - script: | - regexp = require("regexp") - if not regexp.match("^[a-z0-9\\_\\-]+$", action.branch_id) then - error("branches must be lower case, invalid branch ID: " .. action.branch_id) - end -``` - -### Flow - -The following diagram demonstrates what happens when a lakeFS Action triggers runs a lua hook that calls an exporter. - -```mermaid -sequenceDiagram - note over Lua Hook: lakeFS Action trigger.
Pass Context for the export. - Lua Hook->>Exporter: export request - note over Table Registry: _lakefs_tables/TABLE.yaml - Exporter->>Table Registry: Get table descriptor - Table Registry->>Exporter: Parse table structure - Exporter->>Object Store: materialize an exported table - Exporter->>Catalog: register object store location - Query Engine-->Catalog: Query - Query Engine-->Object Store: Query -``` diff --git a/docs/src/howto/copying.md b/docs/src/howto/copying.md deleted file mode 100644 index b3824ed1050..00000000000 --- a/docs/src/howto/copying.md +++ /dev/null @@ -1,146 +0,0 @@ ---- -title: Copying data to/from lakeFS -description: Copy data from external sources to and from lakeFS ---- - -# Copying data to/from lakeFS - - -## Using DistCp - -Apache Hadoop [DistCp](https://hadoop.apache.org/docs/stable/hadoop-distcp/DistCp.html){:target="_blank"} (distributed copy) is a tool used for large inter/intra-cluster copying. You can easily use it with your lakeFS repositories. - -!!! info - In the following examples, we set AWS credentials on the command line for clarity. - In production, you should set these properties using one of Hadoop's standard ways of [Authenticating with S3](https://hadoop.apache.org/docs/stable/hadoop-aws/tools/hadoop-aws/index.html#Authenticating_with_S3). - -### Between lakeFS repositories - -You can use DistCP to copy between two different lakeFS repositories. Replace the access key pair with your lakeFS access key pair: - -```bash -hadoop distcp \ - -Dfs.s3a.path.style.access=true \ - -Dfs.s3a.access.key="AKIAIOSFODNN7EXAMPLE" \ - -Dfs.s3a.secret.key="wJalrXUtnFEMI/K7MDENG/bPxRfiCYEXAMPLEKEY" \ - -Dfs.s3a.endpoint="https://lakefs.example.com" \ - "s3a://example-repo-1/main/example-file.parquet" \ - "s3a://example-repo-2/main/example-file.parquet" -``` - -### Between S3 buckets and lakeFS - -To copy data from an S3 bucket to a lakeFS repository, use Hadoop's [per-bucket configuration](https://hadoop.apache.org/docs/stable/hadoop-aws/tools/hadoop-aws/index.html#Configuring_different_S3_buckets_with_Per-Bucket_Configuration){:target="_blank"}. -In the following examples, replace the first access key pair with your lakeFS key pair, and the second one with your AWS IAM key pair: - -#### From S3 to lakeFS - -```bash -hadoop distcp \ - -Dfs.s3a.path.style.access=true \ - -Dfs.s3a.bucket.example-repo.access.key="AKIAIOSFODNN7EXAMPLE" \ - -Dfs.s3a.bucket.example-repo.secret.key="wJalrXUtnFEMI/K7MDENG/bPxRfiCYEXAMPLEKEY" \ - -Dfs.s3a.bucket.example-repo.endpoint="https://lakefs.example.com" \ - -Dfs.s3a.bucket.example-bucket.access.key="AKIAIOSFODNN3EXAMPLE" \ - -Dfs.s3a.bucket.example-bucket.secret.key="wJalrXUtnFEMI/K3MDENG/bPxRfiCYEXAMPLEKEY" \ - "s3a://example-bucket/example-file.parquet" \ - "s3a://example-repo/main/example-file.parquet" -``` - -#### From lakeFS to S3 - -```bash -hadoop distcp \ - -Dfs.s3a.path.style.access=true \ - -Dfs.s3a.bucket.example-repo.access.key="AKIAIOSFODNN7EXAMPLE" \ - -Dfs.s3a.bucket.example-repo.secret.key="wJalrXUtnFEMI/K7MDENG/bPxRfiCYEXAMPLEKEY" \ - -Dfs.s3a.bucket.example-repo.endpoint="https://lakefs.example.com" \ - -Dfs.s3a.bucket.example-bucket.access.key="AKIAIOSFODNN3EXAMPLE" \ - -Dfs.s3a.bucket.example-bucket.secret.key="wJalrXUtnFEMI/K3MDENG/bPxRfiCYEXAMPLEKEY" \ - "s3a://example-repo/main/myfile" \ - "s3a://example-bucket/myfile" -``` - -## Using Rclone - -[Rclone](https://rclone.org/){:target="_blank"} is a command line program to sync files and directories between cloud providers. -To use it with lakeFS, create an Rclone remote as describe below and then use it as you would any other Rclone remote. - -### Creating a remote for lakeFS in Rclone - -To add the remote to Rclone, choose one of the following options: - -#### Option 1: Add an entry in your Rclone configuration file -* Find the path to your Rclone configuration file and copy it for the next step. - - ```shell - rclone config file - # output: - # Configuration file is stored at: - # /home/myuser/.config/rclone/rclone.conf - ``` - -* If your lakeFS access key is already set in an AWS profile or environment variables, run the following command, replacing the endpoint property with your lakeFS endpoint: - - ```shell - cat <> /home/myuser/.config/rclone/rclone.conf - [lakefs] - type = s3 - provider = Other - endpoint = https://lakefs.example.com - no_check_bucket = true - EOT - ``` - -* Otherwise, also include your lakeFS access key pair in the Rclone configuration file: - - ```shell - cat <> /home/myuser/.config/rclone/rclone.conf - [lakefs] - type = s3 - provider = Other - env_auth = false - access_key_id = AKIAIOSFODNN7EXAMPLE - secret_access_key = wJalrXUtnFEMI/K7MDENG/bPxRfiCYEXAMPLEKEY - endpoint = https://lakefs.example.com - no_check_bucket = true - EOT - ``` - -#### Option 2: Use the Rclone interactive config command - -Run this command and follow the instructions: - -``` -rclone config - - -Choose AWS S3 as your type of storage, and enter your lakeFS endpoint as your S3 endpoint. -You will have to choose whether you use your environment for authentication (recommended), -or enter the lakeFS access key pair into the Rclone configuration. Select "Edit advanced -config" and accept defaults for all values except `no_check_bucket`: - -If set, don't attempt to check the bucket exists or create it. - -This can be useful when trying to minimize the number of transactions -Rclone carries out, if you know the bucket exists already. - -This might also be needed if the user you're using doesn't have bucket -creation permissions. Before v1.52.0, this would have passed silently -due to a bug. - -Enter a boolean value (true or false). Press Enter for the default ("false"). -no_check_bucket> yes -``` - -### Syncing S3 and lakeFS - -```bash -rclone sync mys3remote://mybucket/path/ lakefs:example-repo/main/path -``` - -### Syncing a local directory and lakeFS - -```bash -rclone sync /home/myuser/path/ lakefs:example-repo/main/path -``` diff --git a/docs/src/howto/deploy/aws.md b/docs/src/howto/deploy/aws.md deleted file mode 100644 index a3bdb0c13aa..00000000000 --- a/docs/src/howto/deploy/aws.md +++ /dev/null @@ -1,403 +0,0 @@ ---- -title: AWS -description: How to deploy and set up a production-suitable lakeFS environment on AWS -next: ["Import data into your installation", "../import/index.md"] ---- - -# Deploy lakeFS on AWS - -!!! tip - The instructions given here are for a self-managed deployment of lakeFS on AWS.
- For a hosted lakeFS service with guaranteed SLAs, try [lakeFS Cloud](https://lakefs.cloud) - -When you deploy lakeFS on AWS these are the options available to use: - -![](../../assets/img/deploy/deploy-on-aws.excalidraw.png) - -This guide walks you through the options available and how to configure them, finishing with configuring and running lakeFS itself and creating your first repository. - -!!! info "⏰ Expected deployment time: 25 min" - -## Prerequisite skills and access - -To successfully deploy and operate lakeFS on AWS, you should be comfortable with the following topics and have the corresponding level of access. - -### AWS account administration - -- Ability to create and modify IAM roles and policies. -- Ability to create and configure S3 buckets and prefixes. -- Permissions to provision networking and compute resources in your AWS account (for example, VPC, subnets, security groups, load balancers, EC2, ECS, or EKS). - - -### Core AWS services used by lakeFS - -- **Amazon S3** – bucket layout, prefixes, encryption options, and lifecycle rules. -- **Metadata backend**, either: - - **Amazon DynamoDB** - - **PostgreSQL / Amazon RDS for PostgreSQL** - - **Amazon MemoryDB** - - For any metadata backend you choose, you should be able to perform configuration, connectivity, storage and persistence configuration, backups, and monitoring. - -### Optional: Container and orchestration skills - -Depending on the chosen deployment model: -- **Kubernetes / Amazon EKS** – understanding of Deployments, Services, Ingress, kubectl, and optionally Helm. -- **Amazon ECS or EC2 with containers** – understanding task definitions, services, container logs, and IAM roles for tasks. - -## Grant lakeFS permissions to DynamoDB - -By default, lakeFS will create the required DynamoDB table if it does not already exist. You'll have to give the IAM role used by lakeFS the following permissions: - -```json -{ - "Version": "2012-10-17", - "Statement": [ - { - "Sid": "ListAndDescribe", - "Effect": "Allow", - "Action": [ - "dynamodb:List*", - "dynamodb:DescribeReservedCapacity*", - "dynamodb:DescribeLimits", - "dynamodb:DescribeTimeToLive" - ], - "Resource": "*" - }, - { - "Sid": "kvstore", - "Effect": "Allow", - "Action": [ - "dynamodb:BatchGet*", - "dynamodb:DescribeTable", - "dynamodb:Get*", - "dynamodb:Query", - "dynamodb:Scan", - "dynamodb:BatchWrite*", - "dynamodb:CreateTable", - "dynamodb:Delete*", - "dynamodb:Update*", - "dynamodb:PutItem" - ], - "Resource": "arn:aws:dynamodb:*:*:table/kvstore" - } - ] -} -``` - -!!! tip - You can also use lakeFS with PostgreSQL instead of DynamoDB!
- See the [configuration reference](../../reference/configuration.md) for more information. - -## Run the lakeFS server - -=== "EC2" - Connect to your EC2 instance using SSH: - - 1. Create a `config.yaml` on your EC2 instance, with the following parameters: - ```yaml - --- - database: - type: "dynamodb" - - auth: - encrypt: - # replace this with a randomly-generated string. Make sure to keep it safe! - secret_key: "[ENCRYPTION_SECRET_KEY]" - - blockstore: - type: s3 - ``` - 1. [Download the binary](https://github.com/treeverse/lakeFS/releases) to run on the EC2 instance. - 1. Run the `lakefs` binary on the EC2 instance: - ```sh - lakefs --config config.yaml run - ``` - - !!! note - It's preferable to run the binary as a service using systemd or your operating system's facilities. - - !!! info "Advanced: Deploying lakeFS behind an AWS Application Load Balancer" - 1. Your security groups should allow the load balancer to access the lakeFS server. - 1. Create a target group with a listener for port 8000. - 1. Setup TLS termination using the domain names you wish to use (e.g., `lakefs.example.com` and potentially `s3.lakefs.example.com`, `*.s3.lakefs.example.com` if using [virtual-host addressing](https://docs.aws.amazon.com/AmazonS3/latest/userguide/VirtualHosting.html)). - 1. Configure the health-check to use the exposed `/_health` URL - -=== "EKS" - You can install lakeFS on Kubernetes using a [Helm chart](https://github.com/treeverse/charts/tree/master/charts/lakefs). - - To install lakeFS with Helm: - - 1. Copy the Helm values file relevant for S3: - ```yaml - secrets: - # replace this with a randomly-generated string - authEncryptSecretKey: [ENCRYPTION_SECRET_KEY] - lakefsConfig: | - database: - type: dynamodb - blockstore: - type: s3 - ``` - 1. Fill in the missing values and save the file as `conf-values.yaml`. For more configuration options, see our Helm chart [README](https://github.com/treeverse/charts/blob/master/charts/lakefs/README.md#custom-configuration). - - !!! note - The `lakefsConfig` parameter is the lakeFS configuration documented [here](../../reference/configuration.md) but without sensitive information. - Sensitive information like `databaseConnectionString` is given through separate parameters, and the chart will inject it into Kubernetes secrets. - - 1. In the directory where you created `conf-values.yaml`, run the following commands: - ```bash - # Add the lakeFS repository - helm repo add lakefs https://charts.lakefs.io - # Deploy lakeFS - helm install my-lakefs lakefs/lakefs -f conf-values.yaml - ``` - - *my-lakefs* is the [Helm Release](https://helm.sh/docs/intro/using_helm/#three-big-concepts) name. - - !!! warning - Make sure the Kubernetes nodes have access to all buckets/containers with which you intend to use with lakeFS. - If you can't provide such access, configure lakeFS with an AWS key-pair. - -### Load balancing - -To configure a load balancer to direct requests to the lakeFS servers you can use the `LoadBalancer` Service type or a Kubernetes Ingress. -By default, lakeFS operates on port 8000 and exposes a `/_health` endpoint that you can use for health checks. - -!!! tip - The NGINX Ingress Controller by default limits the client body size to 1 MiB. - - Some clients use bigger chunks to upload objects - for example, multipart upload to lakeFS using the [S3 Gateway][s3-gateway] or - a simple PUT request using the [OpenAPI Server][openapi]. - - Checkout the Nginx [documentation](https://kubernetes.github.io/ingress-nginx/user-guide/nginx-configuration/annotations/#custom-max-body-size) for increasing the limit, or an example of Nginx configuration with [MinIO](https://min.io/docs/minio/linux/integrations/setup-nginx-proxy-with-minio.html). - -## Prepare your S3 bucket - -1. Take note of the bucket name you want to use with lakeFS -2. Use the following as your bucket policy, filling in the placeholders: - -=== "Standard Permissions" - ```json - { - "Id": "lakeFSPolicy", - "Version": "2012-10-17", - "Statement": [ - { - "Sid": "lakeFSObjects", - "Action": [ - "s3:GetObject", - "s3:PutObject", - "s3:AbortMultipartUpload", - "s3:ListMultipartUploadParts" - ], - "Effect": "Allow", - "Resource": ["arn:aws:s3:::[BUCKET_NAME_AND_PREFIX]/*"], - "Principal": { - "AWS": ["arn:aws:iam::[ACCOUNT_ID]:role/[IAM_ROLE]"] - } - }, - { - "Sid": "lakeFSBucket", - "Action": [ - "s3:ListBucket", - "s3:GetBucketLocation", - "s3:ListBucketMultipartUploads" - ], - "Effect": "Allow", - "Resource": ["arn:aws:s3:::[BUCKET]"], - "Principal": { - "AWS": ["arn:aws:iam::[ACCOUNT_ID]:role/[IAM_ROLE]"] - } - } - ] - } - ``` - - * Replace `[BUCKET_NAME]`, `[ACCOUNT_ID]` and `[IAM_ROLE]` with values relevant to your environment. - * `[BUCKET_NAME_AND_PREFIX]` can be the bucket name. If you want to minimize the bucket policy permissions, use the bucket name together with a prefix (e.g. `example-bucket/a/b/c`). - This way, lakeFS will be able to create repositories only under this specific path (see: [Storage Namespace][understand-repository]). - * lakeFS will try to assume the role `[IAM_ROLE]`. - -=== "Standard Permissions (with s3express)" - - To use an S3 Express One Zone _directory bucket_, use the following policy. Note the `lakeFSDirectoryBucket` statement which is specifically required for using a directory bucket. - - ```json - { - "Id": "lakeFSPolicy", - "Version": "2012-10-17", - "Statement": [ - { - "Sid": "lakeFSObjects", - "Action": [ - "s3:GetObject", - "s3:PutObject", - "s3:AbortMultipartUpload", - "s3:ListMultipartUploadParts" - ], - "Effect": "Allow", - "Resource": ["arn:aws:s3:::[BUCKET_NAME_AND_PREFIX]/*"], - "Principal": { - "AWS": ["arn:aws:iam::[ACCOUNT_ID]:role/[IAM_ROLE]"] - } - }, - { - "Sid": "lakeFSBucket", - "Action": [ - "s3:ListBucket", - "s3:GetBucketLocation", - "s3:ListBucketMultipartUploads" - ], - "Effect": "Allow", - "Resource": ["arn:aws:s3:::[BUCKET]"], - "Principal": { - "AWS": ["arn:aws:iam::[ACCOUNT_ID]:role/[IAM_ROLE]"] - } - }, - { - "Sid": "lakeFSDirectoryBucket", - "Action": [ - "s3express:CreateSession" - ], - "Effect": "Allow", - "Resource": "arn:aws:s3express:[REGION]:[ACCOUNT_ID]:bucket/[BUCKET_NAME]" - } - ] - } - ``` - - * Replace `[BUCKET_NAME]`, `[ACCOUNT_ID]` and `[IAM_ROLE]` with values relevant to your environment. - * `[BUCKET_NAME_AND_PREFIX]` can be the bucket name. If you want to minimize the bucket policy permissions, use the bucket name together with a prefix (e.g. `example-bucket/a/b/c`). - This way, lakeFS will be able to create repositories only under this specific path (see: [Storage Namespace][understand-repository]). - * lakeFS will try to assume the role `[IAM_ROLE]`. - -=== "Minimal Permissions (Advanced)" - If required lakeFS can operate without accessing the data itself, this permission section is useful if you are using [presigned URLs mode][presigned-url] or the [lakeFS Hadoop FileSystem Spark integration][integration-hadoopfs]. - Since this FileSystem performs many operations directly on the storage, lakeFS requires less permissive permissions, resulting in increased security. - - lakeFS always requires permissions to access the `_lakefs` prefix under your storage namespace, in which metadata - is stored ([learn more][understand-commits]). - - By setting this policy **without** presign mode you'll be able to perform only metadata operations through lakeFS, meaning that you'll **not** be able - to use lakeFS to upload or download objects. Specifically you won't be able to: - - * Upload objects using the lakeFS GUI (**Works with presign mode**) - * Upload objects through Spark using the S3 gateway - * Run `lakectl fs` commands (unless using **presign mode** with `--pre-sign` flag) - * Use [Actions and Hooks](../hooks/index.md) - - ```json - { - "Id": "[POLICY_ID]", - "Version": "2012-10-17", - "Statement": [ - { - "Sid": "lakeFSObjects", - "Action": [ - "s3:GetObject", - "s3:PutObject" - ], - "Effect": "Allow", - "Resource": [ - "arn:aws:s3:::[STORAGE_NAMESPACE]/_lakefs/*" - ], - "Principal": { - "AWS": ["arn:aws:iam::[ACCOUNT_ID]:role/[IAM_ROLE]"] - } - }, - { - "Sid": "lakeFSBucket", - "Action": [ - "s3:ListBucket", - "s3:GetBucketLocation" - ], - "Effect": "Allow", - "Resource": ["arn:aws:s3:::[BUCKET]"], - "Principal": { - "AWS": ["arn:aws:iam::[ACCOUNT_ID]:role/[IAM_ROLE]"] - } - } - ] - } - ``` - - We can use [presigned URLs mode][presigned-url] without allowing access to the data from the lakeFS server directly. - We can achieve this by using [condition keys](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_condition-keys.html) such as [aws:referer](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_condition-keys.html#condition-keys-referer), [aws:SourceVpc](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_condition-keys.html#condition-keys-sourcevpc), [aws:SourceVpcArn](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_condition-keys.html#condition-keys-sourcevpcarn) and [aws:SourceIp](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_condition-keys.html#condition-keys-sourceip). - - !!! example "For example, assume the following scenario" - - lakeFS is deployed outside the company (i.e lakeFS cloud or other VPC **not** `vpc-123`) - - We don't want lakeFS to be able to access the data, so we use presign URL, we still need lakeFS role to be able to sign the URL. - - We want to allow access from the internal company VPC: `vpc-123`. - - Both lakeFS and company bucket are deployed in the same region, in that case `us-east-1`. - - ```json - { - "Sid": "allowLakeFSRoleFromCompanyOnly", - "Effect": "Allow", - "Principal": { - "AWS": "arn:aws:iam::[ACCOUNT_ID]:role/[IAM_ROLE]" - }, - "Action": [ - "s3:GetObject", - "s3:PutObject", - ], - "Resource": [ - "arn:aws:s3:::[BUCKET]/*", - ], - "Condition": { - "StringEquals": { - "aws:SourceVpcArn": "arn:aws:ec2:us-east-1:*:vpc/vpc-123" - } - } - } - ``` - -#### S3 Storage Tier Classes - -lakeFS currently supports the following S3 Storage Classes: - -1. [S3 Standard](https://aws.amazon.com/s3/storage-classes/#General_purpose) - The default AWS S3 storage tier. Fully supported. -2. [S3 Express One-Zone](https://aws.amazon.com/s3/storage-classes/express-one-zone/) - Fully supported. -3. [S3 Glacier Instant Retrival](https://aws.amazon.com/s3/storage-classes/glacier/instant-retrieval/) - Supported with limitations: currently, pre-signed URLs are not supported when using Instant Retrival. The outstanding feature request [could be tracked here](https://github.com/treeverse/lakeFS/issues/7784). - -Other storage classes are currently unsupported - either because they have not been tested with lakeFS or because they cannot be supported. - -If you need lakeFS to support a storage tier that isn't currently on the supported list, please [open an issue on GitHub](https://github.com/treeverse/lakeFS/issues). - -### Alternative: use an AWS user - -lakeFS can authenticate with your AWS account using an AWS user, using an access key and secret. To allow this, change the policy's Principal accordingly: - -```json - "Principal": { - "AWS": ["arn:aws:iam:::user/"] - } -``` - -## Create the admin user - -When you first open the lakeFS UI, you will be asked to create an initial admin user. - -1. Open `http:///` in your browser. If you haven't set up a load balancer, this will likely be `http://:8000/` -1. On first use, you'll be redirected to the setup page: - Create user -1. Follow the steps to create an initial administrator user. Save the credentials you’ve received somewhere safe, you won’t be able to see them again! - Setup Done -1. Follow the link and go to the login screen. Use the credentials from the previous step to log in. - -## Create your first repository - -1. Use the credentials from the previous step to log in -1. Click *Create Repository* and choose *Blank Repository*. - Create Repo -1. Under Storage Namespace, enter a path to your desired location on the object store. This is where data written to this repository will be stored. -1. Click *Create Repository* -1. You should now have a configured repository, ready to use! - Repo Created - -!!! success "Congratulations" - Your environment is now ready 🤩 - -[integration-hadoopfs]: ../../integrations/spark.md#lakefs-hadoop-filesystem -[presigned-url]: ../../security/presigned-url.md diff --git a/docs/src/howto/deploy/azure.md b/docs/src/howto/deploy/azure.md deleted file mode 100644 index 3931b52d05f..00000000000 --- a/docs/src/howto/deploy/azure.md +++ /dev/null @@ -1,265 +0,0 @@ ---- -title: Azure -description: How to deploy and set up a production-suitable lakeFS environment on Microsoft Azure -next: ["Import data into your installation", "../import/index.md"] ---- - -# Deploy lakeFS on Azure - -!!! tip - The instructions given here are for a self-managed deployment of lakeFS on Azure.
- For a hosted lakeFS service with guaranteed SLAs, try [lakeFS Cloud](https://lakefs.cloud) - -When you deploy lakeFS on Azure these are the options available to use: - -![](../../assets/img/deploy/deploy-on-azure.excalidraw.png) - -This guide walks you through the options available and how to configure them, finishing with configuring and running lakeFS itself and creating your first repository. - -!!! info "⏰ Expected deployment time: 25 min" - -## Object Storage - -lakeFS supports the following [Azure Storage](https://learn.microsoft.com/en-us/azure/storage/common/storage-introduction) types: - -1. [Azure Blob Storage](https://azure.microsoft.com/en-gb/products/storage/blobs) -2. [Azure Data Lake Storage Gen2](https://learn.microsoft.com/en-us/azure/storage/blobs/data-lake-storage-introduction) ([HNS](https://learn.microsoft.com/en-us/azure/storage/blobs/data-lake-storage-namespace)) - -Data Lake Storage Gen1 is not supported. - -## Authentication Method - -lakeFS supports two ways to authenticate with Azure. - -=== "Identity Based Authentication (recommended)" - - lakeFS uses environment variables to determine credentials to use for authentication. The following authentication methods are supported: - - 1. Managed Service Identity (MSI) - 1. Service Principal RBAC - 1. Azure CLI - - For deployments inside the Azure ecosystem it is recommended to use a managed identity. - - More information on authentication methods and environment variables can be found [here](https://learn.microsoft.com/en-us/azure/developer/go/azure-sdk-authentication) - - ### How to Create Service Principal for Resource Group - - It is recommended to create a resource group that consists of all the resources lakeFS should have access to. - - Using a resource group will allow dynamic removal/addition of services from the group, effectively providing/preventing access for lakeFS to these resources without requiring any changes in configuration in lakeFS or providing lakeFS with any additional credentials. - - The minimal role required for the service principal is "Storage Blob Data Contributor" - - The following Azure CLI command creates a service principal for a resource group called "lakeFS" with permission to access (read/write/delete) - Blob Storage resources in the resource group and with an expiry of 5 years - - ``` shell - az ad sp create-for-rbac \ - --role "Storage Blob Data Contributor" \ - --scopes /subscriptions/XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX/resourceGroups/lakeFS --years 5 - - Creating 'Storage Blob Data Contributor' role assignment under scope '/subscriptions/947382ea-681a-4541-99ab-b718960c6289/resourceGroups/lakeFS' - The output includes credentials that you must protect. Be sure that you do not include these credentials in your code or check the credentials into your source control. For more information, see https://aka.ms/azadsp-cli - { - "appId": "XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX", - "displayName": "azure-cli-2023-01-30-06-18-30", - "password": "XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX", - "tenant": "XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX" - } - ``` - - The command output should be used to populate the following environment variables: - - ``` - AZURE_CLIENT_ID = $appId - AZURE_TENANT_ID = $tenant - AZURE_CLIENT_SECRET = $password - ``` - - !!! danger - Service Principal credentials have an expiry date and lakeFS will lose access to resources unless credentials are renewed on time. - - !!! info - It is possible to provide both account based credentials and environment variables to lakeFS. In that case - lakeFS will use - the account credentials for any access to data located in the given account, and will try to use the identity credentials for any data located outside the given account. - -=== "Storage Account Credentials" - - Storage account credentials can be set directly in the lakeFS configuration using the following parameters: - - * `blockstore.azure.storage_account` - * `blockstore.azure.storage_access_key` - - !!!warning "Limitations" - - Please note that using this authentication method limits lakeFS to the scope of the given storage account. - - Specifically, **the following operations will not work**: - - 1. Import of data from different storage accounts - 1. Copy/Read/Write of data that was imported from a different storage account - 1. Create pre-signed URL for data that was imported from a different storage account - -## K/V Store - -lakeFS stores metadata in a database for its versioning engine. -This is done via a Key-Value interface that can be implemented on any DB engine and lakeFS comes with several built-in driver implementations (You can read more about it [here](https://community.lakefs.io/understand/how/kv.html)). - -The database used doesn't _have_ to be a dedicated K/V database. - -=== "CosmosDB" - [CosmosDB](https://azure.microsoft.com/en-us/products/cosmos-db/) is a managed database service provided by Azure. - - lakeFS supports [CosmosDB For NoSQL](https://learn.microsoft.com/en-GB/azure/cosmos-db/nosql/) as a database backend. - - 1. Follow the official [Azure documentation](https://learn.microsoft.com/en-us/azure/cosmos-db/nosql/how-to-create-account?tabs=azure-cli) - on how to create a CosmosDB account for NoSQL and connect to it. - 1. Once your CosmosDB account is set up, you can create a Database for - lakeFS. For lakeFS ACID guarantees, make sure to select the [Bounded - staleness consistency](https://learn.microsoft.com/en-us/azure/cosmos-db/consistency-levels#bounded-staleness-consistency), - for single region deployments. - 1. Create a new container in the database and select type - `partitionKey` as the Partition key (case sensitive). - 1. Pass the endpoint, database name and container name to lakeFS as - described in the [configuration guide][config-reference-azure-block]. - You can either pass the CosmosDB's account read-write key to lakeFS, or - use a managed identity to authenticate to CosmosDB, as described - [earlier](#authentication-method). - -=== "PostgreSQL" - - Below we show you how to create a database on Azure Database, but you can use any PostgreSQL database as long as it's accessible by your lakeFS installation. - - If you already have a database, take note of the connection string and skip to the [next step](#4-run-the-lakefs-server) - - 1. Follow the official [Azure documentation](https://docs.microsoft.com/en-us/azure/postgresql/quickstart-create-server-database-portal){: target="_blank" } on how to create a PostgreSQL instance and connect to it. - Make sure that you're using PostgreSQL version >= 11. - 1. Once your Azure Database for PostgreSQL server is set up and the server is in the _Available_ state, take note of the endpoint and username. - ![Azure postgres Connection String](../../assets/img/azure_postgres_conn.png) - 1. Make sure your Access control roles allow you to connect to the database instance. - -## 4. Run the lakeFS server - -Now that you've chosen and configured object storage, a K/V store, and authentication—you're ready to configure and run lakeFS. There are three different ways you can run lakeFS: - -=== "Azure VM" - Connect to your VM instance using SSH: - - 1. Create a `config.yaml` on your VM, with the following parameters: - ```yaml - --- - database: - type: "postgres" - postgres: - connection_string: "[DATABASE_CONNECTION_STRING]" - - auth: - encrypt: - # replace this with a randomly-generated string. Make sure to keep it safe! - secret_key: "[ENCRYPTION_SECRET_KEY]" - - blockstore: - type: azure - azure: - ``` - 1. [Download the binary](https://github.com/treeverse/lakeFS/releases) to run on the VM. - 1. Run the `lakefs` binary: - ```sh - lakefs --config config.yaml run - ``` - - !!! note - It's preferable to run the binary as a service using systemd or your operating system's facilities. - -=== "Docker" - To support container-based environments, you can configure lakeFS using environment variables. Here is a `docker run` - command to demonstrate starting lakeFS using Docker: - - ```sh - docker run \ - --name lakefs \ - -p 8000:8000 \ - -e LAKEFS_DATABASE_TYPE="postgres" \ - -e LAKEFS_DATABASE_POSTGRES_CONNECTION_STRING="[DATABASE_CONNECTION_STRING]" \ - -e LAKEFS_AUTH_ENCRYPT_SECRET_KEY="[ENCRYPTION_SECRET_KEY]" \ - -e LAKEFS_BLOCKSTORE_TYPE="azure" \ - -e LAKEFS_BLOCKSTORE_AZURE_STORAGE_ACCOUNT="[YOUR_STORAGE_ACCOUNT]" \ - -e LAKEFS_BLOCKSTORE_AZURE_STORAGE_ACCESS_KEY="[YOUR_ACCESS_KEY]" \ - treeverse/lakefs:latest run - ``` - - See the [reference][config-envariables] for a complete list of environment variables. - -=== "Azure Kubernetes Service (AKS)" - You can install lakeFS on Kubernetes using a [Helm chart](https://github.com/treeverse/charts/tree/master/charts/lakefs). - - To install lakeFS with Helm: - - 1. Copy the Helm values file relevant for Azure Blob: - - ```yaml - secrets: - # replace this with the connection string of the database you created in a previous step: - databaseConnectionString: [DATABASE_CONNECTION_STRING] - # replace this with a randomly-generated string - authEncryptSecretKey: [ENCRYPTION_SECRET_KEY] - lakefsConfig: | - blockstore: - type: azure - azure: - # If you chose to authenticate via access key, unmark the following rows and insert the values from the previous step - # storage_account: [your storage account] - # storage_access_key: [your access key] - ``` - 1. Fill in the missing values and save the file as `conf-values.yaml`. For more configuration options, see our Helm chart [README](https://github.com/treeverse/charts/blob/master/charts/lakefs/README.md#custom-configuration){:target="_blank"}. - - !!! note - The `lakefsConfig` parameter is the lakeFS configuration documented [here](https://community.lakefs.io/reference/configuration.html) but without sensitive information. - Sensitive information like `databaseConnectionString` is given through separate parameters, and the chart will inject it into Kubernetes secrets. - - 1. In the directory where you created `conf-values.yaml`, run the following commands: - ```bash - # Add the lakeFS repository - helm repo add lakefs https://charts.lakefs.io - # Deploy lakeFS - helm install my-lakefs lakefs/lakefs -f conf-values.yaml - ``` - *my-lakefs* is the [Helm Release](https://helm.sh/docs/intro/using_helm/#three-big-concepts) name. - -### Load balancing - -To configure a load balancer to direct requests to the lakeFS servers you can use the `LoadBalancer` Service type or a Kubernetes Ingress. -By default, lakeFS operates on port `8000` and exposes a `/_health` endpoint that you can use for health checks. - -!!! info - The NGINX Ingress Controller by default limits the client body size to 1 MiB. - - Some clients use bigger chunks to upload objects - for example, multipart upload to lakeFS using the [S3-compatible Gateway][s3-gateway] or - a simple PUT request using the [OpenAPI Server][openapi]. - - Check out the Nginx [documentation](https://kubernetes.github.io/ingress-nginx/user-guide/nginx-configuration/annotations/#custom-max-body-size) for increasing the limit, or an example of Nginx configuration with [MinIO](https://min.io/docs/minio/linux/integrations/setup-nginx-proxy-with-minio.html). - -## Create the admin user - -When you first open the lakeFS UI, you will be asked to create an initial admin user. - -1. Open `http:///` in your browser. If you haven't set up a load balancer, this will likely be `http://:8000/` -1. On first use, you'll be redirected to the setup page: - Create user -1. Follow the steps to create an initial administrator user. Save the credentials you’ve received somewhere safe, you won’t be able to see them again! - Setup Done -1. Follow the link and go to the login screen. Use the credentials from the previous step to log in. - -## Create your first repository - -1. Use the credentials from the previous step to log in -1. Click _Create Repository_ and choose _Blank Repository_. - Create Repo -1. Under Storage Namespace, enter a path to your desired location on the object store. This is where data written to this repository will be stored. -1. Click _Create Repository_ -1. You should now have a configured repository, ready to use! - Repo Created - -!!! success "Congratulations" - Your environment is now ready 🤩 diff --git a/docs/src/howto/deploy/gcp.md b/docs/src/howto/deploy/gcp.md deleted file mode 100644 index 9580408732b..00000000000 --- a/docs/src/howto/deploy/gcp.md +++ /dev/null @@ -1,336 +0,0 @@ ---- -title: GCP -description: How to deploy and set up a production-suitable lakeFS environment on Google Cloud Platform (GCP). -next: ["Import data into your installation", "../import/index.md"] ---- - -# Deploy lakeFS on GCP - -!!! tip - The instructions given here are for a self-managed deployment of lakeFS on GCP.
- For a hosted lakeFS service with guaranteed SLAs, please [contact us](https://lakefs.io/contact-us/) for details of lakeFS Cloud on GCP. - -When you deploy lakeFS on GCP these are the options available to use: - -![](../../assets/img/deploy/deploy-on-gcp.excalidraw.png) - -!!! info "⏰ Expected deployment time: 25 min" - -## Create a Database - -lakeFS requires a PostgreSQL database to synchronize actions on your repositories. -We will show you how to create a database on Google Cloud SQL, but you can use any PostgreSQL database as long as it's accessible by your lakeFS installation. - -If you already have a database, take note of the connection string and skip to the [next step](#run-the-lakefs-server) - -1. Follow the official [Google documentation](https://cloud.google.com/sql/docs/postgres/quickstart#create-instance) on how to create a PostgreSQL instance. - Make sure you're using PostgreSQL version >= 11. -1. On the *Users* tab in the console, create a user. The lakeFS installation will use it to connect to your database. -1. Choose the method by which lakeFS [will connect to your database](https://cloud.google.com/sql/docs/postgres/connect-overview). Google recommends using - the [SQL Auth Proxy](https://cloud.google.com/sql/docs/postgres/sql-proxy). - -## Run the lakeFS Server - -=== "GCE Instance" - 1. Save the following configuration file as `config.yaml`: - - ```yaml - --- - database: - type: "postgres" - postgres: - connection_string: "[DATABASE_CONNECTION_STRING]" - auth: - encrypt: - # replace this with a randomly-generated string: - secret_key: "[ENCRYPTION_SECRET_KEY]" - blockstore: - type: gs - # Uncomment the following lines to give lakeFS access to your buckets using a service account: - # gs: - # credentials_json: [YOUR SERVICE ACCOUNT JSON STRING] - ``` - - 1. [Download the binary](https://github.com/treeverse/lakeFS/releases) to run on the GCE instance. - 1. Run the `lakefs` binary on the GCE machine: - ```bash - lakefs --config config.yaml run - ``` - **Note:** it is preferable to run the binary as a service using systemd or your operating system's facilities. - -=== "Docker" - To support container-based environments like Google Cloud Run, lakeFS can be configured using environment variables. Here is a `docker run` - command to demonstrate starting lakeFS using Docker: - - ```sh - docker run \ - --name lakefs \ - -p 8000:8000 \ - -e LAKEFS_DATABASE_TYPE="postgres" \ - -e LAKEFS_DATABASE_POSTGRES_CONNECTION_STRING="[DATABASE_CONNECTION_STRING]" \ - -e LAKEFS_AUTH_ENCRYPT_SECRET_KEY="[ENCRYPTION_SECRET_KEY]" \ - -e LAKEFS_BLOCKSTORE_TYPE="gs" \ - treeverse/lakefs:latest run - ``` - - See the [reference][config-envariables] for a complete list of environment variables. - -=== "GKE" - You can install lakeFS on Kubernetes using a [Helm chart](https://github.com/treeverse/charts/tree/master/charts/lakefs). - - To install lakeFS with Helm: - - 1. Copy the Helm values file relevant for Google Storage: - - ```yaml - secrets: - # replace DATABASE_CONNECTION_STRING with the connection string of the database you created in a previous step. - # e.g.: postgres://postgres:myPassword@localhost/postgres:5432 - databaseConnectionString: [DATABASE_CONNECTION_STRING] - # replace this with a randomly-generated string - authEncryptSecretKey: [ENCRYPTION_SECRET_KEY] - lakefsConfig: | - blockstore: - type: gs - # Uncomment the following lines to give lakeFS access to your buckets using a service account: - # gs: - # credentials_json: [YOUR SERVICE ACCOUNT JSON STRING] - ``` - 1. Fill in the missing values and save the file as `conf-values.yaml`. For more configuration options, see our Helm chart [README](https://github.com/treeverse/charts/blob/master/charts/lakefs/README.md#custom-configuration){:target="_blank"}. - - !!! note - The `lakefsConfig` parameter is the lakeFS configuration documented [here](https://community.lakefs.io/reference/configuration.html) but without sensitive information. - Sensitive information like `databaseConnectionString` is given through separate parameters, and the chart will inject it into Kubernetes secrets. - - 1. In the directory where you created `conf-values.yaml`, run the following commands: - - ```bash - # Add the lakeFS repository - helm repo add lakefs https://charts.lakefs.io - # Deploy lakeFS - helm install my-lakefs lakefs/lakefs -f conf-values.yaml - ``` - - *my-lakefs* is the [Helm Release](https://helm.sh/docs/intro/using_helm/#three-big-concepts) name. - -## Load balancing - -To configure a load balancer to direct requests to the lakeFS servers you can use the `LoadBalancer` Service type or a Kubernetes Ingress. -By default, lakeFS operates on port 8000 and exposes a `/_health` endpoint that you can use for health checks. - -!!! tip - The NGINX Ingress Controller by default limits the client body size to 1 MiB. - - Some clients use bigger chunks to upload objects - for example, multipart upload to lakeFS using the [S3-compatible Gateway][s3-gateway] or - a simple PUT request using the [OpenAPI Server][openapi]. - - Checkout the Nginx [documentation](https://kubernetes.github.io/ingress-nginx/user-guide/nginx-configuration/annotations/#custom-max-body-size) for increasing the limit, or an example of Nginx configuration with [MinIO](https://min.io/docs/minio/linux/integrations/setup-nginx-proxy-with-minio.html). - -## Create the admin user - -When you first open the lakeFS UI, you will be asked to create an initial admin user. - -1. Open `http:///` in your browser. If you haven't set up a load balancer, this will likely be `http://:8000/` -1. On first use, you'll be redirected to the setup page: - Create user -1. Follow the steps to create an initial administrator user. Save the credentials you’ve received somewhere safe, you won’t be able to see them again! - Setup Done -1. Follow the link and go to the login screen. Use the credentials from the previous step to log in. - -## Configure minimal permissions for your GCS bucket - -If required, lakeFS can operate without accessing the data itself. This permission model is useful if you are running a zero trust architecture, using [presigned URLs mode][presigned-url], or the [lakeFS Hadoop FileSystem Spark integration][integration-hadoopfs]. - -!!! warning "Dedicated GCP Project Recommended" - Due to the nature of VPC Service Controls which place a perimeter around the entire GCS service, it's strongly recommended to use a dedicated GCP project for your lakeFS bucket. This simplifies permission and access management significantly. - -### Architecture Overview - -This setup uses two service accounts: - -1. **Metadata Service Account (SA_OPEN)**: Accesses bucket prefixes in the form of `gs:////_lakefs/` from anywhere. -2. **Data Service Account (SA_RESTRICTED)**: Accesses all data except bucket prefixes in the form of `gs:////_lakefs/`, restricted by network using VPC Service Controls. - -lakeFS always requires permissions to access the `_lakefs` prefix under your storage namespace, where metadata is stored. - -### Limitations - -This configuration supports only presign mode. This means that you won't be able to: - -* Upload objects using the lakeFS Web UI (presign mode is configurable) -* Upload objects through lakeFS S3 Gateway -* Run `lakectl fs` commands - -### Setup Steps - -#### 1. Create Service Accounts - -Set your environment variables: - -```bash -export PROJECT_ID="[YOUR_PROJECT_ID]" -export SA_OPEN_ID="lakefs-metadata" -export SA_RESTRICTED_ID="lakefs-data" -export BUCKET="[YOUR_BUCKET_NAME]" -``` - -Create the service accounts: - -```bash -# Metadata service account (accesses _lakefs/** from anywhere) -gcloud iam service-accounts create "${SA_OPEN_ID}" \ - --project="${PROJECT_ID}" \ - --description="lakeFS metadata - RW only under /_lakefs/** (from anywhere)" \ - --display-name="lakeFS Metadata Service Account" - -# Data service account (accesses everything except _lakefs/**, network-restricted) -gcloud iam service-accounts create "${SA_RESTRICTED_ID}" \ - --project="${PROJECT_ID}" \ - --description="lakeFS data - RW everywhere except /_lakefs/** (network-restricted)" \ - --display-name="lakeFS Data Service Account" -``` - -Get the full service account emails: - -```bash -export SA_OPEN="${SA_OPEN_ID}@${PROJECT_ID}.iam.gserviceaccount.com" -export SA_RESTRICTED="${SA_RESTRICTED_ID}@${PROJECT_ID}.iam.gserviceaccount.com" -``` - -#### 2. Configure Bucket IAM Policies - -In this step, we will configure the IAM policies on the bucket level to grant the necessary permissions for the service accounts. - -Grant the metadata service account access to `gs:////_lakefs/` prefix only: - -```bash -gcloud storage buckets add-iam-policy-binding "gs://${BUCKET}" \ - --member="serviceAccount:${SA_OPEN}" \ - --role="roles/storage.objectAdmin" \ - --condition='title=lakefs-metadata-only,description=Access_only_to_lakefs_prefix,expression=resource.type == "storage.googleapis.com/Object" && resource.name.extract("/objects/{prefix}/_lakefs/") != ""' -``` - -Grant the data service account access to everything except `gs:////_lakefs/` prefix: - -```bash -# Object access (read/write) for non-_lakefs paths -gcloud storage buckets add-iam-policy-binding "gs://${BUCKET}" \ - --member="serviceAccount:${SA_RESTRICTED}" \ - --role="roles/storage.objectAdmin" \ - --condition='title=lakefs-data-only,description=Access_except_lakefs_prefix,expression=resource.type == "storage.googleapis.com/Object" && resource.name.extract("/objects/{prefix}/_lakefs/") == ""' -``` - -Create a custom IAM role for listing objects and grant it to the data service account: - -```bash -# Create custom role for listing objects only -gcloud iam roles create lakefsDataListOnly \ - --project="${PROJECT_ID}" \ - --title="lakeFS Data List Only" \ - --description="Custom role for lakeFS data service account to list objects" \ - --permissions="storage.objects.list" - -# Grant the custom role to the data service account -gcloud projects add-iam-policy-binding "${PROJECT_ID}" \ - --member="serviceAccount:${SA_RESTRICTED}" \ - --role="projects/${PROJECT_ID}/roles/lakefsDataListOnly" -``` - -#### 3. Set Up VPC Service Controls - -Create an access level that defines your allowed networks (adjust IP ranges and VPC as needed): - -```bash -# Get your organization's access policy ID -export ORG_ID="[YOUR_ORG_ID]" -export POLICY_ID=$(gcloud access-context-manager policies list \ - --organization="${ORG_ID}" \ - --format="value(name)") - -# Create an access level for your allowed networks -cat > access-level.yaml < ingress-policy.yaml < -1. Under Storage Namespace, enter a path to your desired location on the object store. This is where data written to this repository will be stored. -1. Click *Create Repository* -1. You should now have a configured repository, ready to use! - Repo Created - -!!! success "Congratulations" - Your environment is now ready 🤩 - diff --git a/docs/src/howto/deploy/index.md b/docs/src/howto/deploy/index.md deleted file mode 100644 index f39c3233f58..00000000000 --- a/docs/src/howto/deploy/index.md +++ /dev/null @@ -1,27 +0,0 @@ ---- -title: Install lakeFS -description: This section will guide you through deploying and setting up a production lakeFS environment. ---- - -# Deploy and Setup lakeFS - -!!! tip - The instructions given here are for a self-managed deployment of lakeFS.
- For a hosted lakeFS service with guaranteed SLAs, try [lakeFS Cloud](https://lakefs.cloud) - -This section will guide you through deploying lakeFS on top of an object store. You will require a database, and can optionally configure authentication using providers specific to your deployment platform. - -Which options are available depends on your deployment platform. For example, the object store available on Azure differs from that on AWS. - -![](../../assets/img/deploy/deploy-lakefs.excalidraw.png) - -## Deployment and Setup Details - -lakeFS releases include [binaries](https://github.com/treeverse/lakeFS/releases) for common operating systems, a [containerized option](https://hub.docker.com/r/treeverse/lakefs) or a [Helm chart](https://artifacthub.io/packages/helm/lakefs/lakefs). - -Check out our guides below for full deployment details: - -* [AWS](aws.md) -* [Azure](azure.md) -* [GCP](gcp.md) -* [On-premises and other cloud providers](onprem.md) diff --git a/docs/src/howto/deploy/onprem.md b/docs/src/howto/deploy/onprem.md deleted file mode 100644 index 4f41d56c28c..00000000000 --- a/docs/src/howto/deploy/onprem.md +++ /dev/null @@ -1,233 +0,0 @@ ---- -title: On-Premises -description: How to deploy and set up a production-suitable lakeFS environment on-premises (or on other cloud providers) -next: ["Import data into your installation", "../import.md"] ---- - -# On-Premises Deployment - -!!! tip - The instructions given here are for a self-managed deployment of lakeFS.
- For a hosted lakeFS service with guaranteed SLAs, try [lakeFS Cloud](https://lakefs.cloud) - -!!! info "⏰ Expected deployment time: 25 min" - -## Prerequisites - -To use lakeFS on-premises, you can either use the [local blockstore](#local-blockstore) adapter or have access to an S3-compatible object store such as [MinIO](https://min.io). - -For more information on how to set up MinIO, see the [official deployment guide](https://min.io/docs/minio/container/operations/installation.html){: target="_blank" } - -## Setting up a database - -lakeFS requires a PostgreSQL database to synchronize actions on your repositories. -This section assumes that you already have a PostgreSQL >= 11.0 database accessible. - -## Setting up a lakeFS Server - -=== "Linux" - Connect to your host using SSH: - 1. Create a `config.yaml` on your VM, with the following parameters: - ```yaml - --- - database: - type: "postgres" - postgres: - connection_string: "[DATABASE_CONNECTION_STRING]" - - auth: - encrypt: - # replace this with a randomly-generated string. Make sure to keep it safe! - secret_key: "[ENCRYPTION_SECRET_KEY]" - - blockstore: - type: s3 - s3: - force_path_style: true - endpoint: http:// - discover_bucket_region: false - credentials: - access_key_id: - secret_access_key: - ``` - !!! info - Notice that the lakeFS Blockstore type is set to `s3` - This configuration works with S3-compatible storage engines such as [MinIO](https://min.io/){: target="blank" }. - 1. [Download the binary](https://github.com/treeverse/lakeFS/releases) to the server. - 1. Run the `lakefs` binary: - ```sh - lakefs --config config.yaml run - ``` - !!! note - It's preferable to run the binary as a service using systemd or your operating system's facilities. - -=== "Docker" - - To support container-based environments, you can configure lakeFS using environment variables. Here is a `docker run` - command to demonstrate starting lakeFS using Docker: - - ```sh - docker run \ - --name lakefs \ - -p 8000:8000 \ - -e LAKEFS_DATABASE_TYPE="postgres" \ - -e LAKEFS_DATABASE_POSTGRES_CONNECTION_STRING="[DATABASE_CONNECTION_STRING]" \ - -e LAKEFS_AUTH_ENCRYPT_SECRET_KEY="[ENCRYPTION_SECRET_KEY]" \ - -e LAKEFS_BLOCKSTORE_TYPE="s3" \ - -e LAKEFS_BLOCKSTORE_S3_FORCE_PATH_STYLE="true" \ - -e LAKEFS_BLOCKSTORE_S3_ENDPOINT="http://" \ - -e LAKEFS_BLOCKSTORE_S3_DISCOVER_BUCKET_REGION="false" \ - -e LAKEFS_BLOCKSTORE_S3_CREDENTIALS_ACCESS_KEY_ID="" \ - -e LAKEFS_BLOCKSTORE_S3_CREDENTIALS_SECRET_ACCESS_KEY="" \ - treeverse/lakefs:latest run - ``` - - !!! info - Notice that the lakeFS Blockstore type is set to `s3` - This configuration works with S3-compatible storage engines such as [MinIO](https://min.io/){: target="blank" }. - - !!! tip "Local Database and Local Blockstore" - When using local database (`LAKEFS_DATABASE_TYPE=local`) and local blockstore (`LAKEFS_BLOCKSTORE_TYPE=local`), - lakeFS stores all data and metadata under `${HOME}/lakefs` in the container by default (configurable). - You can mount this location to the host using Docker volumes to persist data and metadata on host storage: - - ```sh - docker run \ - --name lakefs \ - -p 8000:8000 \ - -v /path/on/host:/home/lakefs/lakefs \ - -e LAKEFS_DATABASE_TYPE="local" \ - -e LAKEFS_BLOCKSTORE_TYPE="local" \ - -e LAKEFS_AUTH_ENCRYPT_SECRET_KEY="[ENCRYPTION_SECRET_KEY]" \ - treeverse/lakefs:latest run - ``` - - See the [reference][config-envariables] for a complete list of environment variables. - -=== "Kubernetes" - You can install lakeFS on Kubernetes using a [Helm chart](https://github.com/treeverse/charts/tree/master/charts/lakefs). - - To install lakeFS with Helm: - - 1. Copy the Helm values file relevant for S3-Compatible storage (MinIO in this example): - - ```yaml - secrets: - # replace this with the connection string of the database you created in a previous step: - databaseConnectionString: [DATABASE_CONNECTION_STRING] - # replace this with a randomly-generated string - authEncryptSecretKey: [ENCRYPTION_SECRET_KEY] - lakefsConfig: | - blockstore: - type: s3 - s3: - force_path_style: true - endpoint: http:// - discover_bucket_region: false - credentials: - access_key_id: - secret_access_key: - ``` - - !!! tip - Notice that the lakeFS Blockstore type is set to `s3` - This configuration works with S3-compatible storage engines such as [MinIO](https://min.io/) - 1. Fill in the missing values and save the file as `conf-values.yaml`. For more configuration options, see our Helm chart [README](https://github.com/treeverse/charts/blob/master/charts/lakefs/README.md#custom-configuration){:target="_blank"}. - !!! note - The `lakefsConfig` parameter is the lakeFS configuration documented [here](https://community.lakefs.io/reference/configuration.html) but without sensitive information. - Sensitive information like `databaseConnectionString` is given through separate parameters, and the chart will inject it into Kubernetes secrets. - 1. In the directory where you created `conf-values.yaml`, run the following commands: - ```bash - # Add the lakeFS repository - helm repo add lakefs https://charts.lakefs.io - # Deploy lakeFS - helm install my-lakefs lakefs/lakefs -f conf-values.yaml - ``` - - *my-lakefs* is the [Helm Release](https://helm.sh/docs/intro/using_helm/#three-big-concepts) name. - -## Load balancing - -To configure a load balancer to direct requests to the lakeFS servers you can use the `LoadBalancer` Service type or a Kubernetes Ingress. -By default, lakeFS operates on port 8000 and exposes a `/_health` endpoint that you can use for health checks. - -!!! info - The NGINX Ingress Controller by default limits the client body size to 1 MiB. - - Some clients use bigger chunks to upload objects - for example, multipart upload to lakeFS using the [S3-compatible Gateway][s3-gateway] or - a simple PUT request using the [OpenAPI Server][openapi]. - - Checkout the Nginx [documentation](https://kubernetes.github.io/ingress-nginx/user-guide/nginx-configuration/annotations/#custom-max-body-size) for increasing the limit, or an example of Nginx configuration with [MinIO](https://min.io/docs/minio/linux/integrations/setup-nginx-proxy-with-minio.html). - -## Secure connection - -Using a load balancer or cluster manager for TLS/SSL termination is recommended. It helps speed the decryption process and reduces the processing burden from lakeFS. - -In case lakeFS needs to listen and serve with HTTPS, for example for development purposes, update its config yaml with the following section: - -```yaml -tls: - enabled: true - cert_file: server.crt # provide path to your certificate file - key_file: server.key # provide path to your server private key -``` - -## Local Blockstore - -You can configure a block adapter to a POSIX compatible storage location shared by all lakeFS instances. -Using the shared storage location, both data and metadata will be stored there. - -Using the local blockstore import and allowing lakeFS access to a specific prefix, it is possible to import files from a shared location. -Import is not enabled by default, as it doesn't assume the local path is shared and there is a security concern about accessing a path outside the specified in the blockstore configuration. -Enabling is done by `blockstore.local.import_enabled` and `blockstore.local.allowed_external_prefixes` as described in the [configuration reference](../../reference/configuration.md). - -### Sample configuration using local blockstore - -```yaml -database: - type: "postgres" - postgres: - connection_string: "[DATABASE_CONNECTION_STRING]" - -auth: - encrypt: - # replace this with a randomly-generated string. Make sure to keep it safe! - secret_key: "[ENCRYPTION_SECRET_KEY]" - -blockstore: - type: local - local: - path: /shared/location/lakefs_data # location where data and metadata kept by lakeFS - import_enabled: true # required to be true to enable import files - # from `allowed_external_prefixes` locations - allowed_external_prefixes: - - /shared/location/files_to_import # location with files we can import into lakeFS, require access from lakeFS -``` - -### Limitations - -!!! warning "" - - lakeFS doesn't control the way a shared location is managed across machines - - When using lakectl or the lakeFS UI, you can currently import only directories. If you need to import a single file, use the [HTTP API](https://community.lakefs.io/reference/api.html#/import/importStart) or API Clients with `type=object` in the request body and `destination=`. - - Garbage collector (for committed and uncommitted) and lakeFS Hadoop FileSystem currently unsupported - -## Create the admin user - -When you first open the lakeFS UI, you will be asked to create an initial admin user. - -1. Open `http:///` in your browser. If you haven't set up a load balancer, this will likely be `http://:8000/` -1. On first use, you'll be redirected to the setup page: - Create user -1. Follow the steps to create an initial administrator user. Save the credentials you’ve received somewhere safe, you won’t be able to see them again! - Setup Done -1. Follow the link and go to the login screen. Use the credentials from the previous step to log in. - -## Create your first repository - -1. Use the credentials from the previous step to log in -1. Click *Create Repository* and choose *Blank Repository*. - Create Repo -1. Under Storage Namespace, enter a path to your desired location on the object store. This is where data written to this repository will be stored. -1. Click *Create Repository* -1. You should now have a configured repository, ready to use! - Repo Created - -!!! success "Congratulations" - Your environment is now ready 🤩 diff --git a/docs/src/howto/deploy/upgrade.md b/docs/src/howto/deploy/upgrade.md deleted file mode 100644 index 9aa303684bd..00000000000 --- a/docs/src/howto/deploy/upgrade.md +++ /dev/null @@ -1,135 +0,0 @@ ---- -title: Upgrade lakeFS -description: How to upgrade lakeFS to the latest version. ---- - -# Upgrading lakeFS - -!!! info - For a fully managed lakeFS service with guaranteed SLAs, try [lakeFS Cloud](https://lakefs.cloud) - -Upgrading lakeFS from a previous version usually just requires re-deploying with the latest image (or downloading the latest version if you're using the binary). -If you're upgrading, check whether the [release](https://github.com/treeverse/lakeFS/releases) requires a migration. - -## When DB migrations are required - -### lakeFS 0.103.0 or greater - -Version 0.103.0 added support for rolling KV upgrade. This means that users who already migrated to the KV ref-store (versions 0.80.0 and above) no longer have to pass through specific versions for migration. -This includes [ACL migration](../../security/access-control-lists.md) which was introduced in lakeFS version 0.98.0. -Running `lakefs migrate up` on the latest lakeFS version will perform all the necessary migrations up to that point. - -### lakeFS 0.80.0 or greater (KV Migration) - -Starting with version 0.80.2, lakeFS has transitioned from using a PostgreSQL based database implementation to a Key-Value datastore interface supporting -multiple database implementations. More information can be found [here](https://github.com/treeverse/lakeFS/blob/master/design/accepted/metadata_kv/index.md). -Users upgrading from a previous version of lakeFS must pass through the KV migration version (0.80.2) before upgrading to newer versions of lakeFS. - -!!! warning "Important" - Pre Migrate Requirements: - - * **Users using OS environment variables for database configuration must define the `connection_string` explicitly or as environment variable before proceeding with the migration.** - * **Database storage free capacity of at least twice the amount of the currently used capacity** - * It is strongly recommended to perform these additional steps: - * Commit all uncommitted data on branches - * Create a snapshot of your database - * By default, old database tables are not being deleted by the migration process, and should be removed manually after a successful migration. To enable table drop as part of the migration, set the `database.drop_tables` configuration param to `true` - -#### Migration Steps - -For each lakeFS instance currently running with the database - -1. Modify the `database` section under lakeFS configuration yaml: - - 1. Add `type` field with `"postgres"` as value - 1. Copy the current configuration parameters to a new section called `postgres` - ```yaml - --- - database: - type: "postgres" - connection_string: "postgres://localhost:5432/postgres?sslmode=disable" - max_open_connections: 20 - - postgres: - connection_string: "postgres://localhost:5432/postgres?sslmode=disable" - max_open_connections: 20 - ``` - -1. Stop all lakeFS instances -1. Using the `lakefs` binary for the new version (0.80.2), run the following: - ```bash - lakefs migrate up - ``` -1. lakeFS will run the migration process, which in the end should display the following message with no errors: - ``` - time="2022-08-10T14:46:25Z" level=info msg="KV Migration took 717.629563ms" func="pkg/logging.(*logrusEntryWrapper).Infof" file="build/pkg/logging/logger.go:246" TempDir=/tmp/kv_migrate_2913402680 - ``` -1. It is now possible to remove the old database configuration. The updated configuration should look as such: - ```yaml - --- - database: - type: "postgres" - - postgres: - connection_string: "postgres://localhost:5432/postgres?sslmode=disable" - max_open_connections: 20 - ``` -1. Deploy (or run) the new version of lakeFS. - -### lakeFS 0.30.0 or greater - -In case migration is required, you first need to stop the running lakeFS service. -Using the `lakefs` binary for the new version, run the following: - -```bash -lakefs migrate up -``` - -Deploy (or run) the new version of lakeFS. - -Note that an older version of lakeFS cannot run on a migrated database. - - -### Prior to lakeFS 0.30.0 - -!!! note - with lakeFS < 0.30.0, you should first upgrade to 0.30.0 following this guide. Then, proceed to upgrade to the newest version. - - -Starting version 0.30.0, lakeFS handles your committed metadata in a [new way](https://docs.google.com/document/d/1jzD7-jun-tdU5BGapmnMBe9ovSzBvTNjXCcVztV07A4/edit?usp=sharing){: target="_blank" }, which is more robust and has better performance. -To move your existing data, you will need to run the following upgrade commands. - -Verify lakeFS version == 0.30.0 (can skip if using Docker) - -```shell -lakefs --version -``` - -Migrate data from the previous format: - -```shell -lakefs migrate db -``` - -Or migrate using Docker image: - -```shell -docker run --rm -it -e LAKEFS_DATABASE_CONNECTION_STRING= treeverse/lakefs:rocks-migrate migrate db -``` - -Once migrated, it is possible to now use more recent lakeFS versions. Please refer to their release notes for more information on ugrading and usage). - - -If you want to start over, discarding your existing data, you need to explicitly state this in your lakeFS configuration file. -To do so, add the following to your configuration (relevant **only** for 0.30.0): - -```yaml -cataloger: - type: rocks -``` - -## Data Migration for Version v0.50.0 - -!!! warning - If you are using a version before 0.50.0, - you must first perform the [previous upgrade to that version](https://community.lakefs.io/v0.50/reference/upgrade.html#data-migration-for-version-v0500). diff --git a/docs/src/howto/export.md b/docs/src/howto/export.md deleted file mode 100644 index d663ecf0ab3..00000000000 --- a/docs/src/howto/export.md +++ /dev/null @@ -1,211 +0,0 @@ ---- -title: Export Data -description: Use the lakeFS Spark client or RClone inside Docker to export a lakeFS commit to the object store. ---- - -# Exporting Data -The export operation copies all data from a given lakeFS commit to -a designated object store location. - -For instance, the contents `lakefs://example/main` might be exported on -`s3://company-bucket/example/latest`. Clients entirely unaware of lakeFS could use that -base URL to access latest files on `main`. Clients aware of lakeFS can continue to use -the lakeFS S3 endpoint to access repository files on `s3://example/main`, as well as -other versions and uncommitted versions. - -Possible use-cases: - -1. External consumers of data don't have access to your lakeFS installation. -1. Some data pipelines in the organization are not fully migrated to lakeFS. -1. You want to experiment with lakeFS as a side-by-side installation first. -1. Create copies of your data lake in other regions (taking into account read pricing). - -## Exporting Data With Spark - -### Using spark-submit - -You can use the export main in three different modes: - -1. Export all the objects from branch `example-branch` on `example-repo` repository to S3 location `s3://example-bucket/prefix/`: - - ```shell - .... example-repo s3://example-bucket/prefix/ --branch=example-branch - ``` - - -1. Export all the objects from a commit `c805e49bafb841a0875f49cd555b397340bbd9b8` on `example-repo` repository to S3 location `s3://example-bucket/prefix/`: - - ```shell - .... example-repo s3://example-bucket/prefix/ --commit_id=c805e49bafb841a0875f49cd555b397340bbd9b8 - ``` - -1. Export only the diff between branch `example-branch` and commit `c805e49bafb841a0875f49cd555b397340bbd9b8` - on `example-repo` repository to S3 location `s3://example-bucket/prefix/`: - - ```shell - .... example-repo s3://example-bucket/prefix/ --branch=example-branch --prev_commit_id=c805e49bafb841a0875f49cd555b397340bbd9b8 - ``` - -The complete `spark-submit` command would look as follows: - -```shell -spark-submit --conf spark.hadoop.lakefs.api.url=https:///api/v1 \ - --conf spark.hadoop.lakefs.api.access_key= \ - --conf spark.hadoop.lakefs.api.secret_key= \ - --packages io.lakefs:lakefs-spark-client_2.12:0.21.0 \ - --class io.treeverse.clients.Main export-app example-repo s3://example-bucket/prefix \ - --branch=example-branch -``` - -!!! info - The command assumes that the Spark cluster has permissions to write to `s3://example-bucket/prefix`. - Otherwise, add `spark.hadoop.fs.s3a.access.key` and `spark.hadoop.fs.s3a.secret.key` with the proper credentials. - - -#### Networking - -Spark export communicates with the lakeFS server. Very large repositories -may require increasing a read timeout. If you run into timeout errors -during communication from the Spark job to lakeFS consider increasing these -timeouts: - -* Add `-c spark.hadoop.lakefs.api.read.timeout_seconds=TIMEOUT_IN_SECONDS` - (default 10) to allow lakeFS more time to respond to requests. -* Add `-c - spark.hadoop.lakefs.api.connection.timeout_seconds=TIMEOUT_IN_SECONDS` - (default 10) to wait longer for lakeFS to accept connections. - -### Using custom code (Notebook/Spark) - -Set up lakeFS Spark metadata client with the endpoint and credentials as instructed in the previous [page](../reference/spark-client.md). - -The client exposes the `Exporter` object with three export options: - -Export *all* the objects at the HEAD of a given branch. Does not include -files that were added to that branch but were not committed. - -=== "Scala" - ```scala - exportAllFromBranch(branch: String) - ``` - -Export ALL objects from a commit: - -=== "Scala" - ```scala - exportAllFromCommit(commitID: String) - ``` - -Export just the diff between a commit and the HEAD of a branch. - -This is an ideal option for continuous exports of a branch since it will change only the files -that have been changed since the previous commit. - - -=== "Scala" - ```scala - exportFrom(branch: String, prevCommitID: String) - ``` - -## Success/Failure Indications - -When the Spark export operation ends, an additional status file will be added to the root -object storage destination. -If all files were exported successfully, the file path will be of the form: `EXPORT___SUCCESS`. -For failures: the form will be`EXPORT___FAILURE`, and the file will include a log of the failed files operations. - -## Export Rounds (Spark success files) - -Some files should be exported before others, e.g., a Spark `_SUCCESS` file exported before other files under -the same prefix might send the wrong indication. - -The export operation may contain several *rounds* within the same export. -A failing round will stop the export of all the files of the next rounds. - -By default, lakeFS will use the `SparkFilter` and have 2 rounds for each export. -The first round will export any non-Spark `_SUCCESS` files. Second round will export all Spark's `_SUCCESS` files. -You may override the default behavior by passing a custom `filter` to the Exporter. - -## Example - -First configure the `Exporter` instance: - -=== "Scala" - ```scala - import io.treeverse.clients.{ApiClient, Exporter} - import org.apache.spark.sql.SparkSession - - val endpoint = "http:///api/v1" - val accessKey = "" - val secretKey = "" - - val repo = "example-repo" - - val spark = SparkSession.builder().appName("I can export").master("local").getOrCreate() - val sc = spark.sparkContext - sc.hadoopConfiguration.set("lakefs.api.url", endpoint) - sc.hadoopConfiguration.set("lakefs.api.access_key", accessKey) - sc.hadoopConfiguration.set("lakefs.api.secret_key", secretKey) - - // Add any required spark context configuration for s3 - val rootLocation = "s3://company-bucket/example/latest" - - val apiClient = new ApiClient(endpoint, accessKey, secretKey) - val exporter = new Exporter(spark, apiClient, repo, rootLocation) - ``` - -Now you can export all objects from `main` branch to `s3://company-bucket/example/latest`: - -=== "Scala" - ```scala - val branch = "main" - exporter.exportAllFromBranch(branch) - ``` - -Assuming a previous successful export on commit `f3c450d8cd0e84ac67e7bc1c5dcde9bef82d8ba7`, -you can alternatively export just the difference between `main` branch and the commit: - -=== "Scala" - ```scala - val branch = "main" - val commit = "f3c450d8cd0e84ac67e7bc1c5dcde9bef82d8ba7" - exporter.exportFrom(branch, commit) - ``` - -## Exporting Data with Docker - -This option is recommended if you don't have Spark at your tool-set. -It doesn't support distribution across machines, therefore may have a lower performance. -Using this method, you can export data from lakeFS to S3 using the export options (in a similar way to the Spark export): - -1. Export all objects from a branch `example-branch` on `example-repo` repository to S3 location `s3://destination-bucket/prefix/`: - ```shell - .... example-repo s3://destination-bucket/prefix/ --branch="example-branch" - ``` -1. Export all objects from a commit `c805e49bafb841a0875f49cd555b397340bbd9b8` on `example-repo` repository to S3 location `s3://destination-bucket/prefix/`: - ```shell - .... example-repo s3://destination-bucket/prefix/ --commit_id=c805e49bafb841a0875f49cd555b397340bbd9b8 - ``` -1. Export only the diff between branch `example-branch` and commit `c805e49bafb841a0875f49cd555b397340bbd9b8` - on `example-repo` repository to S3 location `s3://destination-bucket/prefix/`: - ```shell - .... example-repo s3://destination-bucket/prefix/ --branch="example-branch" --prev_commit_id=c805e49bafb841a0875f49cd555b397340bbd9b8 - ``` - -You will need to add the relevant environment variables. -The complete `docker run` command would look like: - -```shell -docker run \ - -e LAKEFS_ACCESS_KEY_ID=XXX -e LAKEFS_SECRET_ACCESS_KEY=YYY \ - -e LAKEFS_ENDPOINT=https:/// \ - -e AWS_ACCESS_KEY_ID=XXX -e AWS_SECRET_ACCESS_KEY=YYY \ - treeverse/lakefs-rclone-export:latest \ - example-repo \ - s3://destination-bucket/prefix/ \ - --branch="example-branch" -``` - -!!! note - This feature uses [rclone](https://rclone.org/){: target="_blank"}, - and specifically [rclone sync](https://rclone.org/commands/rclone_sync/){: target="_blank"}. This can change the destination path, therefore the s3 destination location must be designated to lakeFS export. diff --git a/docs/src/howto/garbage-collection/gc.md b/docs/src/howto/garbage-collection/gc.md deleted file mode 100644 index a0a37528bfc..00000000000 --- a/docs/src/howto/garbage-collection/gc.md +++ /dev/null @@ -1,228 +0,0 @@ ---- -title: Garbage Collection -description: Clean up expired objects using the garbage collection feature in lakeFS. ---- - -# Garbage Collection - -!!! tip - [lakeFS Cloud](https://lakefs.cloud) users enjoy a [managed garbage collection](./managed-gc.md) service, and do not need to run this Spark program. - -!!! tip - [lakeFS Enterprise](../../enterprise/index.md) users can run a [stand alone GC program](./standalone-gc.md), instead of this Spark program. - -By default, lakeFS keeps all your objects forever. This allows you to travel back in time to previous versions of your data. -However, sometimes you may want to remove the objects from the underlying storage completely. -Reasons for this include cost-reduction and privacy policies. - -The garbage collection (GC) job is a Spark program that removes the following from the underlying storage: - -1. _Committed objects_ that have been deleted (or replaced) in lakeFS, and are considered expired according to [rules you define](#garbage-collection-rules). -2. _Uncommitted objects_ that are no longer accessible - * For example, objects deleted before ever being committed. - -## Garbage collection rules - -!!! info - These rules only apply to objects that have been _committed_ at some point. - Without retention rules, only inaccessible _uncommitted_ objects will be removed by the job. - -Garbage collection rules determine for how long an object is kept in the storage after it is _deleted_ (or replaced) in lakeFS. -For every branch, the GC job retains deleted objects for the number of days defined for the branch. -In the absence of a branch-specific rule, the default rule for the repository is used. -If an object is present in more than one branch ancestry, it is removed only after the retention period has ended for -all relevant branches. - -Example GC rules for a repository: - -```json -{ - "default_retention_days": 14, - "branches": [ - {"branch_id": "main", "retention_days": 21}, - {"branch_id": "dev", "retention_days": 7} - ] -} -``` - -In the above example, objects will be retained for 14 days after deletion by default. -However, if present in the branch `main`, objects will be retained for 21 days. -Objects present _only_ in the `dev` branch will be retained for 7 days after they are deleted. - -### How to configure garbage collection rules - -To define retention rules, either use the `lakectl` command, the lakeFS web UI, or [API](../../reference/api.md#/retention/set%20garbage%20collection%20rules): - -=== "CLI" - Create a JSON file with your GC rules: - - ```bash - cat <> example_repo_gc_rules.json - { - "default_retention_days": 14, - "branches": [ - {"branch_id": "main", "retention_days": 21}, - {"branch_id": "dev", "retention_days": 7} - ] - } - EOT - ``` - - Set the GC rules using `lakectl`: - ```bash - lakectl gc set-config lakefs://example-repo -f example_repo_gc_rules.json - ``` -=== "Web UI" - From the lakeFS web UI: - - 1. Navigate to the main page of your repository. - 2. Go to _Settings_ -> _Garbage Collection_. - 3. Click _Edit policy_ and paste your GC rule into the text box as a JSON. - 4. Save your changes. - - ![GC Rules From UI](../../assets/img/gc_rules_from_ui.png) - -## How to run the garbage collection job - -To run the job, use the following `spark-submit` command (or using your preferred method of running Spark programs). - -Use the correct jar for your Spark version: - -| Spark version | Jar URL | -|---------------|--------------------------------------------------------------------------------------------------------------------| -| 3.x | `https://treeverse-clients-us-east.s3.amazonaws.com/lakefs-spark-client/0.21.0/lakefs-spark-client_2.12-assembly-0.21.0.jar` | -| 4.x | `https://treeverse-clients-us-east.s3.amazonaws.com/lakefs-spark-client/0.21.0/lakefs-spark-client_2.13-assembly-0.21.0.jar` | - -!!! note - Spark 4.x requires Java 17+. - -=== "AWS" - ```bash - spark-submit --class io.treeverse.gc.GarbageCollection \ - --packages org.apache.hadoop:hadoop-aws:2.7.7 \ - -c spark.hadoop.lakefs.api.url=https://lakefs.example.com:8000/api/v1 \ - -c spark.hadoop.lakefs.api.access_key= \ - -c spark.hadoop.lakefs.api.secret_key= \ - -c spark.hadoop.fs.s3a.access.key= \ - -c spark.hadoop.fs.s3a.secret.key= \ - https://treeverse-clients-us-east.s3.amazonaws.com/lakefs-spark-client/0.21.0/lakefs-spark-client_-assembly-0.21.0.jar \ - example-repo us-east-1 - ``` - -=== "Azure" - If you want to access your storage using the account key: - - ```bash - spark-submit --class io.treeverse.gc.GarbageCollection \ - --packages org.apache.hadoop:hadoop-aws:3.2.1 \ - -c spark.hadoop.lakefs.api.url=https://lakefs.example.com:8000/api/v1 \ - -c spark.hadoop.lakefs.api.access_key= \ - -c spark.hadoop.lakefs.api.secret_key= \ - -c spark.hadoop.fs.azure.account.key..dfs.core.windows.net= \ - https://treeverse-clients-us-east.s3.amazonaws.com/lakefs-spark-client/0.21.0/lakefs-spark-client_-assembly-0.21.0.jar \ - example-repo - ``` - - Or, if you want to access your storage using an Azure service principal: - - ```bash - spark-submit --class io.treeverse.gc.GarbageCollection \ - --packages org.apache.hadoop:hadoop-aws:3.2.1 \ - -c spark.hadoop.lakefs.api.url=https://lakefs.example.com:8000/api/v1 \ - -c spark.hadoop.lakefs.api.access_key= \ - -c spark.hadoop.lakefs.api.secret_key= \ - -c spark.hadoop.fs.azure.account.auth.type..dfs.core.windows.net=OAuth \ - -c spark.hadoop.fs.azure.account.oauth.provider.type..dfs.core.windows.net=org.apache.hadoop.fs.azurebfs.oauth2.ClientCredsTokenProvider \ - -c spark.hadoop.fs.azure.account.oauth2.client.id..dfs.core.windows.net= \ - -c spark.hadoop.fs.azure.account.oauth2.client.secret..dfs.core.windows.net= \ - -c spark.hadoop.fs.azure.account.oauth2.client.endpoint..dfs.core.windows.net=https://login.microsoftonline.com//oauth2/token \ - https://treeverse-clients-us-east.s3.amazonaws.com/lakefs-spark-client/0.21.0/lakefs-spark-client_-assembly-0.21.0.jar \ - example-repo - ``` - - !!! note - * On Azure, GC was tested only on Spark 3.3.0, but may work with other Spark and Hadoop versions. - * In case you don't have `hadoop-azure` package as part of your environment, you should add the package to your spark-submit with `--packages org.apache.hadoop:hadoop-azure:3.2.1` - * For GC to work on Azure blob, [soft delete](https://docs.microsoft.com/en-us/azure/storage/blobs/soft-delete-blob-overview) should be disabled. - - -=== "GCP" - For Garbage Collection to work with GCP, you must provide it with a service account key JSON file. - The use service account must have `Storage Object User` permissions for the repository namespace (bucket). - - ```bash - spark-submit --class io.treeverse.gc.GarbageCollection \ - -c spark.hadoop.lakefs.api.url=https://lakefs.example.com:8000/api/v1 \ - -c spark.hadoop.lakefs.api.access_key= \ - -c spark.hadoop.lakefs.api.secret_key= \ - -c spark.hadoop.google.cloud.auth.service.account.enable=true \ - -c spark.hadoop.google.cloud.auth.service.account.json.keyfile= \ - -c spark.hadoop.fs.gs.impl=com.google.cloud.hadoop.fs.gcs.GoogleHadoopFileSystem \ - -c spark.hadoop.fs.AbstractFileSystem.gs.impl=com.google.cloud.hadoop.fs.gcs.GoogleHadoopFS \ - https://treeverse-clients-us-east.s3.amazonaws.com/lakefs-spark-client/0.21.0/lakefs-spark-client_-assembly-0.21.0.jar \ - example-repo - ``` - -### Mark and Sweep stages - -You can break the job into two stages: - -* _Mark_: find objects to remove, without actually removing them. -* _Sweep_: remove the objects. - -#### Mark-only mode - -To make GC run the mark stage only, add the following to your spark-submit command: - -```properties -spark.hadoop.lakefs.gc.do_sweep=false -``` - -In mark-only mode, GC will write the keys of the expired objects under: `/_lakefs/retention/gc/unified//`. -_MARK_ID_ is generated by the job. You can find it in the driver's output: - -``` -Report for mark_id=gmc6523jatlleurvdm30 path=s3a://example-bucket/_lakefs/retention/gc/unified/gmc6523jatlleurvdm30 -``` - -#### Sweep-only mode - -To make GC run the sweep stage only, add the following properties to your spark-submit command: - -```properties -spark.hadoop.lakefs.gc.do_mark=false -spark.hadoop.lakefs.gc.mark_id= # Replace with the identifier you obtained from a previous mark-only run -``` - -## Garbage collection and shallow copy - -Shallow copy is an [Enterprise](../../enterprise/index.md) feature available through the [copy object API](../../reference/api.md#/objects/copyObject). It creates a new lakeFS entry that points to the **same physical object** in the underlying storage as the source entry, without duplicating the data. Because both the source and the shallow copy share a single physical address, garbage collection may delete the underlying object while it is still referenced by a shallow copy. - -### When does this happen? - -GC determines which physical objects to keep by scanning committed and uncommitted entries across all branches. An object is eligible for deletion when no entry references its physical address. The risk arises when: - -1. You shallow-copy an object (both source and copy now share the same physical address). -2. The **source entry** is deleted or its branch is removed. -3. GC runs and finds no remaining reference to the physical address — the shallow copy may be missed if it has not yet been committed or if the branch it lives on has been deleted. -4. GC deletes the physical object, leaving the shallow copy pointing to a missing object (`410 Gone`). - -### How to avoid data loss - -- **Commit shallow copies promptly.** Committed entries are always scanned by GC. Shallow copies that remain uncommitted (staged) are more vulnerable during the window between GC mark and sweep phases. -- **Do not delete the source entry before committing the shallow copy.** As long as either the source or the copy is committed and reachable from a branch HEAD, GC will retain the underlying object. -- **Keep branches alive while they contain shallow copies.** Deleting a branch removes its entries from GC consideration. If the branch held the only remaining reference to a shared physical address, GC will delete the object. -- **Set appropriate retention rules.** Branch retention days give you a safety buffer — even after a source entry is deleted from a branch, GC retains the object for the configured retention period. - -## Garbage collection notes - -1. In order for an object to be removed, it must not exist on the HEAD of any branch. - You should remove stale branches to prevent them from retaining old objects. - For example, consider a branch that has been merged to `main` and has become stale. - An object which is later deleted from `main` will always be present in the stale branch, preventing it from being removed. -1. lakeFS will never delete objects outside your repository's storage namespace. - In particular, objects that were imported using `lakectl import` or the UI import wizard will not be affected by GC jobs. -1. In cases where deleted objects are brought back to life while a GC job is running (for example, by reverting a commit), - the objects may or may not be deleted. -1. Garbage collection does not remove any commits: you will still be able to use commits containing removed objects, - but trying to read these objects from lakeFS will result in a `410 Gone` HTTP status. diff --git a/docs/src/howto/garbage-collection/managed-gc.md b/docs/src/howto/garbage-collection/managed-gc.md deleted file mode 100644 index 37729662693..00000000000 --- a/docs/src/howto/garbage-collection/managed-gc.md +++ /dev/null @@ -1,29 +0,0 @@ ---- -title: Managed Garbage Collection -description: Reduce the operational overhead of running garbage collection manually. -status: enterprise ---- - -# Managed Garbage Collection - -!!! info "lakeFS Cloud" - -!!! note - Managed GC is only available for [lakeFS Cloud](../../cloud/index.md). If you are using the self-managed lakeFS, garbage collection is [available to run manually](./gc.md). - -## Benefits of using managed GC - -* The quick and safe way to delete your unnecessary objects -* No operational overhead -* SLA for when your objects are deleted -* Support from the Treeverse team - -## How it works - -Similarly to the self-managed lakeFS, managed GC uses [garbage collection rules](./gc.md) to determine which objects to delete. -However, it uses our super-fast and efficient engine to detect stale objects and branches (depends on your configuration) and prioritize them for deletion. - -## Setting up - -Enable managed GC through the lakeFS Cloud onboarding setup wizard. -This will create additional cloud resources for us to use and have access to delete those objects. diff --git a/docs/src/howto/garbage-collection/standalone-gc.md b/docs/src/howto/garbage-collection/standalone-gc.md deleted file mode 100644 index cd37519937c..00000000000 --- a/docs/src/howto/garbage-collection/standalone-gc.md +++ /dev/null @@ -1,383 +0,0 @@ ---- -title: Standalone Garbage Collection -description: Run a limited version of garbage collection without any external dependencies -status: enterprise ---- - -# Standalone Garbage Collection - -!!! info - Standalone GC is only available for [lakeFS Enterprise](../../enterprise/index.md). - - -## What is Standalone GC? - -Standalone GC is a simplified version of the Spark-backed GC that runs without any external dependencies, delivered as a standalone -docker image. It supports S3 and [self-managed S3 compatible storages](#using-s3-compatible-clients) such as MinIO. - -## Limitations - -1. **No horizontal scalability**: Only a single instance of `lakefs-sgc` can operate on a given repository at a time. -2. **Mark phase only**: Standalone GC supports only the mark phase, identifying objects for deletion but not executing -the sweep stage to delete them. It functions similarly to the GC's [mark-only mode](gc.md#mark-only-mode). -3. Only supports AWS S3 and S3-compatible object storages. However, supporting Azure blob and GCS are in our roadmap. - -## Installation - -### Step 1: Obtain DockerHub token - -#### lakeFS Enterprise customers - -Contact your account manager to verify that Standalone GC is included in your license. Then use your DockerHub token for -the `externallakefs` user. - -#### New to lakeFS Enterprise - -Please [contact us](https://lakefs.io/contact-sales/) to get trial access to Standalone GC. - -### Step 2: Login to DockerHub with this token - -```bash -docker login -u -``` - -### Step 3: Download the docker image - -Download the `treeverse/lakefs-sgc` image from Docker Hub: - -```bash -docker pull treeverse/lakefs-sgc: -``` - -## Setup - -### Permissions - -To run `lakefs-sgc`, you need both AWS (or S3-compatible) storage and lakeFS user permissions as outlined below: - -#### Storage permissions - -The minimum required permissions for AWS or S3-compatible storage are: - -```json -{ - "Version": "2012-10-17", - "Statement": [ - { - "Effect": "Allow", - "Action": [ - "s3:PutObject", - "s3:GetObject" - ], - "Resource": [ - "arn:aws:s3:::some-bucket/some/prefix/*" - ] - }, - { - "Effect": "Allow", - "Action": [ - "s3:ListBucket" - ], - "Resource": [ - "arn:aws:s3:::some-bucket" - ] - }, - { - "Effect": "Allow", - "Action": [ - "s3:ListAllMyBuckets" - ], - "Resource": [ - "arn:aws:s3:::*" - ] - } - ] -} -``` - -In this example, the repository storage namespace is `s3://some-bucket/some/prefix`. - -#### lakeFS permissions - -The minimum required permissions for lakeFS are: - -```json -{ - "statement": [ - { - "action": [ - "retention:PrepareGarbageCollectionCommits", - "retention:PrepareGarbageCollectionUncommitted", - "fs:ReadConfig", - "fs:ReadRepository", - "fs:ListObjects", - "fs:ReadConfig" - ], - "effect": "allow", - "resource": "arn:lakefs:fs:::repository/" - } - ] -} -``` - -### Credentials - -Standalone GC supports S3 and S3-compatible storage backends and relies on AWS credentials for authentication. There are several ways to provide credentials: - -1. **AWS credentials file**: Follow AWS guidelines outlined in [this guide](https://docs.aws.amazon.com/cli/v1/userguide/cli-chap-configure.html). -2. **AWS profile**: Use the `aws.profile` configuration option to specify an AWS profile. -3. **Static credentials**: Provide credentials directly via configuration using `aws.s3.credentials.access_key_id`, `aws.s3.credentials.secret_access_key`, and optionally `aws.s3.credentials.session_token`. - -For details on how to pass credentials to `lakefs-sgc`, refer to the instructions in [How to Run Standalone GC](#how-to-run-standalone-gc). - -### Using S3-compatible clients - -`lakefs-sgc` leverages AWS credentials to work seamlessly with S3-compatible storage solutions, such as [MinIO](https://min.io/). -There are two ways to configure S3-compatible endpoints: - -#### Option 1: Using AWS profile with credentials file - -1. Add a profile to your `~/.aws/config` file: - ``` - [profile minio] - region = us-east-1 - endpoint_url = - s3 = - signature_version = s3v4 - ``` -1. Add an access and secret keys to your `~/.aws/credentials` file: - ``` - [minio] - aws_access_key_id = - aws_secret_access_key = - ``` -1. Run the `lakefs-sgc` docker image and pass it the `minio` profile - see [example](./standalone-gc.md#mounting-the-aws-directory) below. - -#### Option 2: Using configuration file with custom endpoint - -Alternatively, you can configure the S3-compatible endpoint directly in the configuration file: - -1. Create a config file with your S3-compatible endpoint details: - ```yaml - aws: - region: us-east-1 - s3: - endpoint: https://your-minio-endpoint.example.com - addressing_path_style: true - credentials: - access_key_id: - secret_access_key: - ``` -1. Run the docker image and pass the config file using the `--config` flag. - -### Configuration - -The following configuration keys are available: - -| Key | Description | Default value | Possible values | -|--------------------------------|---------------------------------------------------------------------------------------------------------------------------------------------------------------|--------------------|---------------------------------------------------------| -| `logging.format` | Logs output format | "text" | "text","json" | -| `logging.level` | Logs level | "info" | "error","warn",info","debug","trace" | -| `logging.output` | Where to output the logs to | "-" | "-" (stdout), "=" (stderr), or any string for file path | -| `cache_dir` | Directory to use for caching data during run | ~/.lakefs-sgc/data | string | -| `aws.region` | AWS region for S3 operations | NOT SET | string (e.g., "us-east-1") | -| `aws.profile` | AWS credentials profile to use | NOT SET | string | -| `aws.max_page_size` | Max number of items per page when listing objects in AWS | 1000 | number | -| `aws.s3.endpoint` | Custom S3-compatible endpoint URL (e.g., for MinIO) | NOT SET | URL | -| `aws.s3.addressing_path_style` | Whether or not to use [path-style](https://docs.aws.amazon.com/AmazonS3/latest/userguide/VirtualHosting.html#path-style-access) when reading objects from AWS | true | boolean | -| `aws.s3.credentials.access_key_id` | Static AWS access key ID for S3 | NOT SET | string | -| `aws.s3.credentials.secret_access_key` | Static AWS secret access key for S3 | NOT SET | string | -| `aws.s3.credentials.session_token` | AWS session token for temporary credentials | NOT SET | string | -| `lakefs.endpoint_url` | The URL to the lakeFS installation - should end with `/api/v1` | NOT SET | URL | -| `lakefs.access_key_id` | Access key to the lakeFS installation | NOT SET | string | -| `lakefs.secret_access_key` | Secret access key to the lakeFS installation | NOT SET | string | - -These keys can be provided in the following ways: -1. Config file: Create a YAML file with the keys, each `.` is a new nesting level. \ - For example, `logging.level` will be: - ```yaml - logging: - level: # info,debug... - ``` - Then, pass it to the program using the `--config path/to/config.yaml` argument. -2. Environment variables: by setting `LAKEFS_SGC_`, with uppercase letters and `.`s converted to `_`s. \ - For example `logging.level` will be: - ```bash - export LAKEFS_SGC_LOGGING_LEVEL=info - ``` - -Example (minimalistic) config file: -```yaml -logging: - level: debug -``` - -Example config file with custom S3 endpoint and static credentials: -```yaml -logging: - level: debug -aws: - region: us-east-1 - s3: - endpoint: https://my-s3-endpoint.example.com - addressing_path_style: true - credentials: - access_key_id: - secret_access_key: - session_token: -lakefs: - endpoint_url: https://your.url/api/v1 - access_key_id: - secret_access_key: -``` - -## How to Run Standalone GC? - -### Command line reference - -#### Flags -- `-c, --config`: config file to use (default is $HOME/.lakefs-sgc.yaml) - -#### Commands - -**run** - -Usage: - -`lakefs-sgc run ` - -Flags: - -- `--cache-dir`: directory to cache read files (default is `$HOME/.lakefs-sgc/data/`) -- `--parallelism`: number of parallel downloads for metadata files (default 10) -- `--presign`: use pre-signed URLs when downloading/uploading data (recommended) (default true) - - -To run standalone GC, choose the method you prefer to pass AWS credentials and invoke the commands below. - -#### Directly passing in credentials parsed from `~/.aws/credentials` - -```bash -docker run \ - -e AWS_REGION= \ - -e AWS_SESSION_TOKEN="$(grep 'aws_session_token' ~/.aws/credentials | awk -F' = ' '{print $2}')" \ - -e AWS_ACCESS_KEY_ID="$(grep 'aws_access_key_id' ~/.aws/credentials | awk -F' = ' '{print $2}')" \ - -e AWS_SECRET_ACCESS_KEY="$(grep 'aws_secret_access_key' ~/.aws/credentials | awk -F' = ' '{print $2}')" \ - -e LAKEFS_SGC_LAKEFS_ENDPOINT_URL= \ - -e LAKEFS_SGC_LAKEFS_ACCESS_KEY_ID= \ - -e LAKEFS_SGC_LAKEFS_SECRET_ACCESS_KEY= \ - -e LAKEFS_SGC_LOGGING_LEVEL=debug \ - treeverse/lakefs-sgc: run -``` - -#### Mounting the `~/.aws` directory - -When working with S3-compatible clients, it's often more convenient to mount the `~/.aws` directory and pass in the desired profile. - -First, change the permissions for `~/.aws/*` to allow the docker container to read this directory: - -```bash -chmod 644 ~/.aws/* -``` - -Then, run the docker image and mount `~/.aws` to the `lakefs-sgc` home directory on the docker container: - -```bash -docker run \ ---network=host \ --v ~/.aws:/home/lakefs-sgc/.aws \ --e AWS_REGION=us-east-1 \ --e AWS_PROFILE= \ --e LAKEFS_SGC_LAKEFS_ENDPOINT_URL= \ --e LAKEFS_SGC_LAKEFS_ACCESS_KEY_ID= \ --e LAKEFS_SGC_LAKEFS_SECRET_ACCESS_KEY= \ --e LAKEFS_SGC_LOGGING_LEVEL=debug \ -treeverse/lakefs-sgc: run -``` - -### Get the List of Objects Marked for Deletion - -`lakefs-sgc` will write its reports to `/_lakefs/retention/gc/reports//`. \ -_RUN_ID_ is generated during runtime by the Standalone GC. You can find it in the logs: - -``` -"Marking objects for deletion" ... run_id=gcoca17haabs73f2gtq0 -``` - -In this prefix, you'll find 2 objects: - -- `deleted.csv` - Containing all marked objects in a CSV containing one `address` column. - - !!! example - ``` - address - "data/gcnobu7n2efc74lfa5ug/csfnri7n2efc74lfa69g,_e7P9j-1ahTXtofw7tWwJUIhTfL0rEs_dvBrClzc_QE" - "data/gcnobu7n2efc74lfa5ug/csfnri7n2efc74lfa78g,mKZnS-5YbLzmK0pKsGGimdxxBlt8QZzCyw1QeQrFvFE" - ... - ``` -- `summary.json` - A small json summarizing the GC run. - - !!! example - ```json - { - "run_id": "gcoca17haabs73f2gtq0", - "success": true, - "first_slice": "gcss5tpsrurs73cqi6e0", - "start_time": "2024-10-27T13:19:26.890099059Z", - "cutoff_time": "2024-10-27T07:19:26.890099059Z", - "num_deleted_objects": 33000 - } - ``` - -### Delete marked objects - -We recommend starting by backing up the marked objects to a different bucket before deleting them. After ensuring the -backup is complete, you can proceed to delete the objects directly from the backup location. - -Use the following script to backup marked objects to another bucket: - -```bash -# Update these variables with your actual values -storage_ns= -output_bucket= -run_id= - -# Download the CSV file -aws s3 cp "$storage_ns/_lakefs/retention/gc/reports/$run_id/deleted.csv" "./run_id-$run_id.csv" - -# Move all addresses to the output bucket under the "run_id=$run_id" prefix -cat run_id-$run_id.csv | tail -n +2 | xargs -I {} aws s3 mv "$storage_ns/{}" "$output_bucket/run_id=$run_id/" -``` - -To delete the marked objects, use the following script: - -```bash -# Update these variables with your actual values -output_bucket= -run_id= - -aws s3 rm $output_bucket/run_id=$run_id --recursive -``` - -!!! tip - Remember to periodically delete the backups to actually reduce storage costs. - -## Lab tests - -Standalone GC was tested on the lakeFS setup below. - -#### Repository spec - -- 100k objects -- 250 commits -- 100 branches - -#### Machine spec - -- 4GiB RAM -- 8 CPUs - -#### Testing results - -- Time: < 5m -- Disk space: 123MB diff --git a/docs/src/howto/hooks/airflow.md b/docs/src/howto/hooks/airflow.md deleted file mode 100644 index 717a8cb234e..00000000000 --- a/docs/src/howto/hooks/airflow.md +++ /dev/null @@ -1,48 +0,0 @@ ---- -title: Airflow Hooks -description: Airflow Hooks Reference ---- - -# Airflow Hooks - -Airflow Hook triggers a DAG run in an Airflow installation using [Airflow's REST API](https://airflow.apache.org/docs/apache-airflow/stable/stable-rest-api-ref.html#operation/post_dag_run). -The hook run succeeds if the DAG was triggered, and fails otherwise. - -## Action file Airflow hook properties - -!!! info - See the [Action configuration](./index.md#action-files) for overall configuration schema and details - -| Property | Description | Data Type | Example | Required | Environment Variables Supported | -|---------------|-----------------------------------------------------------------|-------------------------------------------------------------------------------------------|-------------------------|----------|------------------| -| url | The URL of the Airflow instance | String | `http://localhost:8080` | yes | no | -| dag_id | The DAG to trigger | String | `example_dag` | yes | no | -| username | The name of the Airflow user performing the request | String | `admin` | yes | no | -| password | The password of the Airflow user performing the request | String | `admin` | yes | yes | -| dag_conf | DAG run configuration that will be passed as is | JSON | | no | no | -| wait_for_dag | Wait for DAG run to complete and reflect state (default: false) | Boolean | | no | no | -| timeout | Time to wait for the DAG run to complete (default: 1m) | String (golang's [Duration](https://golang.org/pkg/time/#Duration.String) representation) | | no | no | - -!!! example - - ```yaml - ... - hooks: - - id: trigger_my_dag - type: airflow - description: Trigger an example_dag - properties: - url: "http://localhost:8000" - dag_id: "example_dag" - username: "admin" - password: "{% raw %}{{{% endraw %} ENV.AIRFLOW_SECRET {% raw %}}}{% endraw %}" - dag_conf: - some: "additional_conf" - ... - ``` - -## Hook Record in configuration field - -lakeFS will add an entry to the Airflow request configuration property (`conf`) with the event that triggered the action. - -The key of the record will be `lakeFS_event` and the value will match the one described [here](./webhooks.md#request-body-schema) diff --git a/docs/src/howto/hooks/index.md b/docs/src/howto/hooks/index.md deleted file mode 100644 index aa3ab3733f1..00000000000 --- a/docs/src/howto/hooks/index.md +++ /dev/null @@ -1,179 +0,0 @@ ---- -title: Actions and Hooks -description: Overview of lakeFS Actions and Hooks ---- - -# Actions and Hooks in lakeFS - -Like other version control systems, lakeFS allows you to configure _Actions_ to trigger when [predefined events](#supported-events) occur. There are numerous uses for Actions, including: - -1. Format Validator: - A webhook that checks new files to ensure they are of a set of allowed data formats. -1. Schema Validator: - A webhook that reads new Parquet and ORC files to ensure they don't contain a block list of column names (or name prefixes). - This is useful for avoiding accidental PII exposure. -1. Integration with external systems: - Post-merge and post-commit hooks could be used to export metadata about the change to another system, e.g. exporting catalog metadata to allow query engines like [AWS Athena](../../integrations/athena.md) to read data from lakeFS. -1. Notifying downstream consumers: - Running a post-merge hook to trigger an Airflow DAG or to send a Webhook to an API, notifying it of the change that happened - -For step-by-step examples of hooks in action check out the [lakeFS Quickstart](../../quickstart/actions-and-hooks.md) and the [lakeFS samples repository](https://github.com/treeverse/lakeFS-samples/). - - - -## Overview - -An _action_ defines one or more _hooks_ to execute. lakeFS supports three types of hook: - -1. [Lua](lua.md) - uses an embedded Lua VM -1. [Webhook](webhooks.md) - makes a REST call to an external URL -1. [Airflow](airflow.md) - triggers a DAG in Airflow - -"Before" hooks must run successfully before their action. If the hook fails, it aborts the action. Lua hooks and Webhooks are synchronous, and lakeFS waits for them to run to completion. Airflow hooks are asynchronous: lakeFS stops waiting as soon as Airflow accepts triggering the DAG. - -## Configuration - -There are two parts to configuration an Action: - -1. Create an Action file and upload it to the lakeFS repository -2. Configure the hook(s) that you specified in the Action file. How these are configured will depend on the type of hook. - -### Action files - -An **Action** is a list of Hooks with the same trigger configuration, i.e. an event will trigger all Hooks under an Action or none at all. - -The Hooks under an Action are ordered and so is their execution. - -Before each hook execution the `if` boolean expression is evaluated. The expression can use the functions `success()` and `failure()`, which return true if the hook's actions succeeded or failed, respectively. - -By default, when `if` is empty or omitted, the step will run only if no error occurred (the same as `success()`). - -#### Action File schema - -| Property | Description | Data Type | Required | Default Value | -|----------------------|--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|------------|----------|-------------------------------------------------------------------------| -| `name` | Identifies the Action file | String | no | Action filename | -| `on` | List of events that will trigger the hooks | List | yes | | -| `on.branches` | Glob pattern list of branches that triggers the hooks | List | no | **Not applicable to Tag events.** If empty, Action runs on all branches | -| `hooks` | List of hooks to be executed | List | yes | | -| `hook.id` | ID of the hook, must be unique within the action. | String | yes | | -| `hook.type` | Type of the hook ([types](#supported-events)) | String | yes | | -| `hook.description` | Description for the hook | String | no | | -| `hook.if` | Expression that will be evaluated before execute the hook | String | no | No value is the same as evaluate `success()` | -| `hook.properties` | Hook's specific configuration, see [Lua](lua.md#action-file-lua-hook-properties), [WebHook](webhooks.md#action-file-webhook-properties), and [Airflow](airflow.md#action-file-airflow-hook-properties) for details | Dictionary | true | | - -#### Example Action File - - -!!! example "_lakefs_actions/file_checker.yaml" - ```yaml - name: Good files check - description: set of checks to verify that branch is good - on: - pre-commit: - pre-merge: - branches: - - main - hooks: - - id: no_temp - type: webhook - description: checking no temporary files found - properties: - url: "https://example.com/webhook?notmp=true?t=1za2PbkZK1bd4prMuTDr6BeEQwWYcX2R" - - id: no_freeze - type: webhook - description: check production is not in dev freeze - properties: - url: "https://example.com/webhook?nofreeze=true?t=1za2PbkZK1bd4prMuTDr6BeEQwWYcX2R" - - id: alert - type: webhook - if: failure() - description: notify alert system when check failed - properties: - url: "https://example.com/alert" - query_params: - title: good files webhook failed - - id: notification - type: webhook - if: true - description: notify that will always run - no matter if one of the previous steps failed - properties: - url: "https://example.com/notification" - query_params: - title: good files completed - ``` - -!!! note - lakeFS will validate action files only when an **Event** has occurred.
- Use `lakectl actions validate ` to validate your action files locally. - -### Uploading Action files - -Action files should be uploaded with the prefix `_lakefs_actions/` to the lakeFS repository. -When an actionable event (see Supported Events above) takes place, lakeFS will read all files with prefix `_lakefs_actions/` -in the repository branch where the action occurred. -A failure to parse an Action file will result with a failing Run. - -For example, lakeFS will search and execute all the matching Action files with the prefix `lakefs://example-repo/feature-1/_lakefs_actions/` on: - -1. Commit to `feature-1` branch on `example-repo` repository. -1. Merge to `main` branch from `feature-1` branch on `repo1` repository. - -## Supported Events - -| Event | Description | -|----------------------|--------------------------------------------------------------------------------------------------| -| `prepare-commit` | (EXPERIMENTAL) Runs before the commit occurs; branch modification will be included in the commit | -| `pre-commit` | Runs when the commit occurs, before the commit is finalized | -| `post-commit` | Runs after the commit is finalized | -| `pre-merge` | Runs on the source branch when the merge occurs, before the merge is finalized | -| `post-merge` | Runs on the merge result, after the merge is finalized | -| `pre-create-branch` | Runs on the source branch prior to creating a new branch | -| `post-create-branch` | Runs on the new branch after the branch was created | -| `pre-delete-branch` | Runs prior to deleting a branch | -| `post-delete-branch` | Runs after the branch was deleted | -| `pre-revert` | Runs prior to performing a revert operation on a branch | -| `post-revert` | Runs after performing a revert operation on a branch | -| `pre-create-tag` | Runs prior to creating a new tag | -| `post-create-tag` | Runs after the tag was created | -| `pre-delete-tag` | Runs prior to deleting a tag | -| `post-delete-tag` | Runs after the tag was deleted | -| `pre-cherry-pick` | Runs when a cherry-pick occurs, before it is finalized | -| `post-cherry-pick` | Runs after the cherry-pick is finalized | - - -!!! warning - The `prepare-commit` hook is experimental. During its execution (between `prepare-commit` and `pre-commit`), other changes may be applied to the branch as there is no branch-level locking mechanism at this point. If you need to verify or validate the content that will be committed, use the `pre-commit` hook instead, as it provides a consistent view of the changes that will be included in the commit. - - -lakeFS Actions are handled per repository and cannot be shared between repositories. -A failure of any Hook under any Action of a `pre-*` event will result in aborting the lakeFS operation that is taking place. -Hook failures under any Action of a `post-*` event will not revert the operation. - -Hooks are managed by Action files that are written to a prefix in the lakeFS repository. -This allows configuration-as-code inside lakeFS, where Action files are declarative and written in YAML. - -## Runs API & CLI - -A **Run** is an instantiation of the repository's Action files when the triggering event occurs. -For example, if your repository contains a pre-commit hook, every commit would generate a Run for that specific commit. - -lakeFS will fetch, parse and filter the repository Action files and start to execute the Hooks under each Action. -All executed Hooks (each with `hook_run_id`) exist in the context of that Run (`run_id`). - -The [lakeFS API](../../reference/api.md) and [lakectl][lakectl-actions] expose the results of executions per repository, branch, commit, and specific Action. -The endpoint also allows downloading the execution log of any executed Hook under each Run for observability. - -## Result Files - -The metadata section of lakeFS repository with each Run contains two types of files: - -1. `_lakefs/actions/log//.log` - Execution log of the specific Hook run. -1. `_lakefs/actions/log//run.manifest` - Manifest with all Hooks execution for the run with their results and additional metadata. - -!!! note - Metadata section of a lakeFS repository is where lakeFS keeps its metadata, like commits and metaranges. - Metadata files stored in the metadata section aren't accessible like user stored files. - - -[lakectl-actions]: ../../reference/cli.md#lakectl-actions diff --git a/docs/src/howto/hooks/lua.md b/docs/src/howto/hooks/lua.md deleted file mode 100644 index f785a1fa30c..00000000000 --- a/docs/src/howto/hooks/lua.md +++ /dev/null @@ -1,1146 +0,0 @@ ---- -title: Lua Hooks -description: Lua Hooks reference ---- - - -# Lua Hooks - -lakeFS supports running hooks without relying on external components using an [embedded Lua VM](https://github.com/Shopify/go-lua) - -Using Lua hooks, it is possible to pass a Lua script to be executed directly by the lakeFS server when an action occurs. - -The Lua runtime embedded in lakeFS is limited for security reasons. It provides a narrow set of APIs and functions that by default do not allow: - -1. Accessing any of the running lakeFS server's environment -2. Accessing the local filesystem available the lakeFS process - -## Action File Lua Hook Properties - -!!! info - See the [Action configuration](index.md#action-files) for overall configuration schema and details. - -| Property | Description | Data Type | Required | Default Value | -|---------------|-------------------------------------------|------------|------------------------------------------------|---------------| -| `args` | One or more arguments to pass to the hook | Dictionary | false | | -| `script` | An inline Lua script | String | either this or `script_path` must be specified | | -| `script_path` | The path in lakeFS to a Lua script | String | either this or `script` must be specified | | - -## Example Lua Hooks - -For more examples and configuration samples, check out the [examples/hooks/](https://github.com/treeverse/lakeFS/tree/master/examples/hooks) directory in the lakeFS repository. You'll also find step-by-step examples of hooks in action in the [lakeFS samples repository](https://github.com/treeverse/lakeFS-samples/). - -!!! example "Display information about an event" - - This example will print out a JSON representation of the event that occurred: - - ```yaml - name: dump_all - on: - post-commit: - post-merge: - post-create-tag: - post-create-branch: - hooks: - - id: dump_event - type: lua - properties: - script: | - json = require("encoding/json") - print(json.marshal(action)) - ``` - -!!! example "Ensure that a commit includes a mandatory metadata field" - - A more useful example: ensure every commit contains a required metadata field: - - ```yaml - name: pre commit metadata field check - on: - pre-commit: - branches: - - main - - dev - hooks: - - id: ensure_commit_metadata - type: lua - properties: - args: - notebook_url: {"pattern": "my-jupyter.example.com/.*"} - spark_version: {} - script_path: lua_hooks/ensure_metadata_field.lua - ``` - - Lua code at `lakefs://repo/main/lua_hooks/ensure_metadata_field.lua`: - - ```lua - regexp = require("regexp") - for k, props in pairs(args) do - current_value = action.commit.metadata[k] - if current_value == nil then - error("missing mandatory metadata field: " .. k) - end - if props.pattern and not regexp.match(props.pattern, current_value) then - error("current value for commit metadata field " .. k .. " does not match pattern: " .. props.pattern .. " - got: " .. current_value) - end - end - ``` - -For more examples and configuration samples, check out the [examples/hooks/](https://github.com/treeverse/lakeFS/tree/master/examples/hooks) directory in the lakeFS repository. - -## Lua Library reference - -The Lua runtime embedded in lakeFS is limited for security reasons. The provided APIs are shown below. - -### `array(table)` - -Helper function to mark a table object as an array for the runtime by setting `_is_array: true` metatable field. - -### `aws` - -### `aws/s3_client` - -S3 client library. - -!!! example - ```lua - local aws = require("aws") - -- pass valid AWS credentials - local client = aws.s3_client("ACCESS_KEY_ID", "SECRET_ACCESS_KEY", "REGION") - ``` - -### `aws/s3_client.get_object(bucket, key)` - -Returns the body (as a Lua string) of the requested object and a boolean value that is true if the requested object exists - -### `aws/s3_client.put_object(bucket, key, value)` - -Sets the object at the given bucket and key to the value of the supplied value string - -### `aws/s3_client.delete_object(bucket [, key])` - -Deletes the object at the given key - -### `aws/s3_client.list_objects(bucket [, prefix, continuation_token, delimiter])` - -Returns a table of results containing the following structure: - -* `is_truncated`: (boolean) whether there are more results to paginate through using the continuation token -* `next_continuation_token`: (string) to pass in the next request to get the next page of results -* `results` (table of tables) information about the objects (and prefixes if a delimiter is used) - -a result could in one of the following structures - -```lua -{ - ["key"] = "a/common/prefix/", - ["type"] = "prefix" -} -``` - -or: - -```lua -{ - ["key"] = "path/to/object", - ["type"] = "object", - ["etag"] = "etagString", - ["size"] = 1024, - ["last_modified"] = "2023-12-31T23:10:00Z" -} -``` - -### `aws/s3_client.delete_recursive(bucket, prefix)` - -Deletes all objects under the given prefix - -### `aws/glue` - -Glue client library. - -!!! example - ```lua - local aws = require("aws") - -- pass valid AWS credentials - local glue = aws.glue_client("ACCESS_KEY_ID", "SECRET_ACCESS_KEY", "REGION") - ``` - -### `aws/glue.create_database(database, options)` - -Create a new Database in Glue Catalog. - -Parameters: - -* `database(string)`: Glue Database name. -* `options(table)` (optional): - * `error_on_already_exists(boolean)`: Whether the call fail with an error if a DB with this name already exists - * `create_db_input(Table)`: a Table that is passed "as is" to AWS and is parallel to the AWS SDK [CreateDatabaseInput](https://docs.aws.amazon.com/glue/latest/webapi/API_CreateDatabase.html#API_CreateDatabase_RequestSyntax) - -!!! example - - ```lua - local opts = { - error_on_already_exists = false, - create_db_input = {DatabaseInput = {Description = "Created via LakeFS Action"}, Tags = {Owner = "Joe"}} - } - glue.create_database(db, opts) - ``` - -### `aws/glue.delete_database(database, catalog_id)` - -Delete an existing Database in Glue Catalog. - -Parameters: - -* `database(string)`: Glue Database name. -* `catalog_id(string)` (optional): Glue Catalog ID - -!!! example - ```lua - glue.delete_database(db, "461129977393") - ``` - -### `aws/glue.get_table(database, table [, catalog_id)` - -Describe a table from the Glue Catalog. - -!!! example - ```lua - local table, exists = glue.get_table(db, table_name) - if exists then - print(json.marshal(table)) - ``` - -### `aws/glue.create_table(database, table_input, [, catalog_id])` - -Create a new table in Glue Catalog. -The `table_input` argument is a JSON that is passed "as is" to AWS and is parallel to the AWS SDK [TableInput](https://docs.aws.amazon.com/glue/latest/webapi/API_CreateTable.html#API_CreateTable_RequestSyntax) - -!!! example - ```lua - local json = require("encoding/json") - local input = { - Name = "my-table", - PartitionKeys = array(partitions), - -- etc... - } - local json_input = json.marshal(input) - glue.create_table("my-db", table_input) - ``` - -### `aws/glue.update_table(database, table_input, [, catalog_id, version_id, skip_archive])` - -Update an existing Table in Glue Catalog. -The `table_input` is the same as the argument in `glue.create_table` function. - -### `aws/glue.delete_table(database, table_input, [, catalog_id])` - -Delete an existing Table in Glue Catalog. - -### `azure` - -### `azure/blob_client` - -Azure blob client library. - -!!! example - ```lua - local azure = require("azure") - -- pass valid Azure credentials - local client = azure.blob_client("AZURE_STORAGE_ACCOUNT", "AZURE_ACCESS_KEY") - ``` - -### `azure/blob_client.get_object(path_uri)` - -Returns the body (as a Lua string) of the requested object and a boolean value that is true if the requested object exists -`path_uri` - A valid Azure blob storage uri in the form of `https://myaccount.blob.core.windows.net/mycontainer/myblob` - -### `azure/blob_client.put_object(path_uri, value)` - -Sets the object at the given bucket and key to the value of the supplied value string -`path_uri` - A valid Azure blob storage uri in the form of `https://myaccount.blob.core.windows.net/mycontainer/myblob` - -### `azure/blob_client.delete_object(path_uri)` - -Deletes the object at the given key -`path_uri` - A valid Azure blob storage uri in the form of `https://myaccount.blob.core.windows.net/mycontainer/myblob` - -### `azure/abfss_transform_path(path)` - -Transform an HTTPS Azure URL to a ABFSS scheme. Used by the delta_exporter function to support Azure Unity catalog use cases -`path` - A valid Azure blob storage URL in the form of `https://myaccount.blob.core.windows.net/mycontainer/myblob` - -### `crypto` - -### `crypto/aes/encryptCBC(key, plaintext)` - -Returns a ciphertext for the aes encrypted text - -### `crypto/aes/decryptCBC(key, ciphertext)` - -Returns the decrypted (plaintext) string for the encrypted ciphertext - -### `crypto/hmac/sign_sha256(message, key)` - -Returns a SHA256 hmac signature for the given message with the supplied key (using the SHA256 hashing algorithm) - -### `crypto/hmac/sign_sha1(message, key)` - -Returns a SHA1 hmac signature for the given message with the supplied key (using the SHA1 hashing algorithm) - -### `crypto/md5/digest(data)` - -Returns the MD5 digest (string) of the given data - -### `crypto/sha256/digest(data)` - -Returns the SHA256 digest (string) of the given data - -### `databricks/client(databricks_host, databricks_service_principal_token)` - -Returns a table representing a Databricks client with the `register_external_table` and `create_or_get_schema` methods. - -### `databricks/client.create_schema(schema_name, catalog_name, get_if_exists)` - -Creates a schema, or retrieves it if exists, in the configured Databricks host's Unity catalog. -If a schema doesn't exist, a new schema with the given `schema_name` will be created under the given `catalog_name`. -Returns the created/fetched schema name. - -Parameters: - -* `schema_name(string)`: The required schema name -* `catalog_name(string)`: The catalog name under which the schema will be created (or from which it will be fetched) -* `get_if_exists(boolean)`: In case of failure due to an existing schema with the given `schema_name` in the given -`catalog_name`, return the schema. - -!!! example - ```lua - local databricks = require("databricks") - local client = databricks.client("https://my-host.cloud.databricks.com", "my-service-principal-token") - local schema_name = client.create_schema("main", "mycatalog", true) - ``` - -### `databricks/client.execute_statement(statement, warehouse_id, catalog_name, schema_name)` - -Parameters: - -* `statement(boolean)`: The SQL statement to execute on the databricks table -* `warehouse_id(string)`: The SQL warehouse ID used in Databricks to run the `CREATE TABLE` query (fetched from the SQL warehouse -* `catalog_name(string)`: The catalog name under which the schema will be created (or from which it will be fetched) -* `schema_name(string)`: The required schema name - `status`, return the SQL status i.e. SUCCEEDED or an error code/message - -!!! example - ```lua - local databricks = require("databricks") - local client = databricks.client("https://my-host.cloud.databricks.com", "my-service-principal-token") - local statement = "ALTER TABLE " .. table_descriptor.name .. " ALTER COLUMN ID SET MASK mask_num" - databricks_client.execute_statement(statement, args.warehouse_id, table_descriptor.catalog, table_descriptor.schema) - ``` - -### `databricks/client.register_external_table(table_name, physical_path, warehouse_id, catalog_name, schema_name, metadata)` - -Registers an external table under the provided warehouse ID, catalog name, and schema name. -In order for this method call to succeed, an external location should be configured in the catalog, with the -`physical_path`'s root storage URI (for example: `s3://mybucket`). -Returns the table's creation status. - -Parameters: - -* `table_name(string)`: Table name. -* `physical_path(string)`: A location to which the external table will refer, e.g. `s3://mybucket/the/path/to/mytable`. -* `warehouse_id(string)`: The SQL warehouse ID used in Databricks to run the `CREATE TABLE` query (fetched from the SQL warehouse -`Connection Details`, or by running `databricks warehouses get`, choosing your SQL warehouse and fetching its ID). -* `catalog_name(string)`: The name of the catalog under which a schema will be created (or fetched from). -* `schema_name(string)`: The name of the schema under which the table will be created. -* `metadata(table)`: A table of metadata to be added to the table's registration. The metadata table should be of the form: - `{key1 = "value1", key2 = "value2", ...}`. - -!!! example - ```lua - local databricks = require("databricks") - local client = databricks.client("https://my-host.cloud.databricks.com", "my-service-principal-token") - local status = client.register_external_table("mytable", "s3://mybucket/the/path/to/mytable", "examwarehouseple", "my-catalog-name", "myschema") - ``` - -* For the Databricks permissions needed to run this method, check out the [Unity Catalog Exporter](../../integrations/unity-catalog.md) docs. - -### `encoding/base64/encode(data)` - -Encodes the given data to a base64 string - -### `encoding/base64/decode(data)` - -Decodes the given base64 encoded data and return it as a string - -### `encoding/base64/url_encode(data)` - -Encodes the given data to an unpadded alternate base64 encoding defined in RFC 4648. - -### `encoding/base64/url_decode(data)` - -Decodes the given unpadded alternate base64 encoding defined in RFC 4648 and return it as a string - -### `encoding/hex/encode(value)` - -Encode the given value string to hexadecimal values (string) - -### `encoding/hex/decode(value)` - -Decode the given hexadecimal string back to the string it represents (UTF-8) - -### `encoding/json/marshal(table)` - -Encodes the given table into a JSON string - -### `encoding/json/unmarshal(string)` - -Decodes the given string into the equivalent Lua structure - -### `encoding/yaml/marshal(table)` - -Encodes the given table into a YAML string - -### `encoding/yaml/unmarshal(string)` - -Decodes the given YAML encoded string into the equivalent Lua structure - -### `encoding/parquet/get_schema(payload)` - -Read the payload (string) as the contents of a Parquet file and return its schema in the following table structure: - -```lua -{ - { ["name"] = "column_a", ["type"] = "INT32" }, - { ["name"] = "column_b", ["type"] = "BYTE_ARRAY" } -} -``` - -### `formats` - -### `formats/delta_client(key, secret, region)` - -Creates a new Delta Lake client used to interact with the lakeFS server. -* `key`: lakeFS access key id -* `secret`: lakeFS secret access key -* `region`: The region in which your lakeFS server is configured at. - -### `formats/delta_client.get_table(repository_id, reference_id, prefix)` - -Returns a representation of a Delta Lake table under the given repository, reference, and prefix. -The format of the response is two tables: - -1. the first is a table of the format `{number, {string}}` where `number` is a version in the Delta Log, and the mapped `{string}` -array contains JSON strings of the different Delta Lake log operations listed in the mapped version entry. e.g.: - -```lua -{ - 0 = { - "{\"commitInfo\":...}", - "{\"add\": ...}", - "{\"remove\": ...}" - }, - 1 = { - "{\"commitInfo\":...}", - "{\"add\": ...}", - "{\"remove\": ...}" - } -} -``` - -2. the second is a table of the metadata of the current table snapshot. The metadata table can be used to initialize the Delta Lake table in an external Catalog. -It consists of the following fields: - * `id`: The table's ID - * `name`: The table's name - * `description`: The table's description - * `schema_string`: The table's schema string - * `partition_columns`: The table's partition columns - * `configuration`: The table's configuration - * `created_time`: The table's creation time - -### `gcloud` - -### `gcloud/gs_client(gcs_credentials_json_string)` - -Create a new Google Cloud Storage client using a string that contains a valid [`credentials.json`](https://developers.google.com/workspace/guides/create-credentials) file content. - -### `gcloud/gs.write_fuse_symlink(source, destination, mount_info)` - -Will create a [gcsfuse symlink](https://github.com/GoogleCloudPlatform/gcsfuse/blob/master/docs/semantics.md#symlink-inodes) -from the source (typically a lakeFS physical address for an object) to a given destination. - -`mount_info` is a Lua table with `"from"` and `"to"` keys - since symlinks don't work for `gs://...` URIs, they need to point -to the mounted location instead. `from` will be removed from the beginning of `source`, and `destination` will be added instead. - -!!! example - ```lua - source = "gs://bucket/lakefs/data/abc/def" - destination = "gs://bucket/exported/path/to/object" - mount_info = { - ["from"] = "gs://bucket", - ["to"] = "/home/user/gcs-mount" - } - gs.write_fuse_symlink(source, destination, mount_info) - -- Symlink: "/home/user/gcs-mount/exported/path/to/object" -> "/home/user/gcs-mount/lakefs/data/abc/def" - ``` - -### `hook` - -A set of utilities to aide in writing user friendly hooks. - -### `hook/fail(message)` - -Will abort the current hook's execution with the given message. This is similar to using `error()`, but is typically used to separate -generic runtime errors (an API call that returned an unexpected response) and explicit failure of the calling hook. - -When called, errors will appear without a stack-trace, and the error message will be directly the one given as `message`. - -!!! example - ```lua - > hook = require("hook") - > hook.fail("this hook shall not pass because of: " .. reason) - ``` - -### `lakefs` - -The Lua Hook library allows calling back to the lakeFS API using the identity of the user that triggered the action. -For example, if user A tries to commit and triggers a `pre-commit` hook - any call made inside that hook to the lakeFS -API, will automatically use user A's identity for authorization and auditing purposes. - -### `lakefs/create_tag(repository_id, reference_id, tag_id)` - -Create a new tag for the given reference - -### `lakefs/diff_refs(repository_id, left_reference_id, right_reference_id [, after, prefix, delimiter, amount])` - -Returns an object-wise diff between `left_reference_id` and `right_reference_id`. - -### `lakefs/list_objects(repository_id, reference_id [, after, prefix, delimiter, amount])` - -List objects in the specified repository and reference (branch, tag, commit ID, etc.). -If delimiter is empty, will default to a recursive listing. Otherwise, common prefixes up to `delimiter` will be shown as a single entry. - -### `lakefs/get_object(repository_id, reference_id, path)` - -Returns 2 values: - -1. The HTTP status code returned by the lakeFS API -1. The content of the specified object as a Lua string - -### `lakefs/diff_branch(repository_id, branch_id [, after, amount, prefix, delimiter])` - -Returns an object-wise diff of uncommitted changes on `branch_id`. - -### `lakefs/stat_object(repository_id, ref_id, path[, user_metadata])` - -Returns a stat object for the given path under the given reference and repository. -Returns 2 values: - -1. The HTTP status code returned by the lakeFS API -2. The stat response object as a JSON string - -Parameters: - -* `repository_id`: The repository ID -* `ref_id`: The reference to stat from (branch, tag, commit ID) -* `path`: Path to the object to stat -* `user_metadata`: (Optional) Boolean flag to include user metadata in response - -### `lakefs/update_object_user_metadata(repository_id, branch_id, path, metadata)` - -Update user metadata for an object. - -Parameters: - -* `repository_id`: The repository ID -* `branch_id`: The branch containing the object -* `path`: Path to the object to update -* `metadata`: A table containing key-value pairs to set as user metadata - -Returns 2 values: - -1. The HTTP status code returned by the lakeFS API (204 on success) -2. Empty on success, error on failure - -### `lakefs/catalogexport/glue_exporter.get_full_table_name(descriptor, action_info)` - -Generate glue table name. - -Parameters: - -* `descriptor(Table)`: Object from (e.g. _lakefs_tables/my_table.yaml). -* `action_info(Table)`: The global action object. - -### `lakefs/catalogexport/delta_exporter` - -A package used to export Delta Lake tables from lakeFS to an external cloud storage. - -### `lakefs/catalogexport/delta_exporter.export_delta_log(action, table_def_names, write_object, delta_client, table_descriptors_path, path_transformer)` - -The function used to export Delta Lake tables. -The return value is a table with mapping of table names to external table location (from which it is possible to query the data) and latest Delta table version's metadata. -The response is of the form: -`{ = {path = "s3://mybucket/mypath/mytable", metadata = {id = "table_id", name = "table_name", ...}}}`. - -Parameters: - -* `action`: The global action object -* `table_def_names`: Delta tables name list (e.g. `{"table1", "table2"}`) -* `write_object`: A writer function with `function(bucket, key, data)` signature, used to write the exported Delta Log (e.g. `aws/s3_client.put_object` or `azure/blob_client.put_object`) -* `delta_client`: A Delta Lake client that implements `get_table: function(repo, ref, prefix)` -* `table_descriptors_path`: The path under which the table descriptors of the provided `table_def_names` reside -* `path_transformer`: (Optional) A function(path) used for transforming the path of the saved delta logs path fields as well as the saved table physical path (used to support Azure Unity catalog use cases) - -!!! example "Delta export example for AWS S3" - - ```yaml - --- - name: delta_exporter - on: - post-commit: null - hooks: - - id: delta_export - type: lua - properties: - script: | - local aws = require("aws") - local formats = require("formats") - local delta_exporter = require("lakefs/catalogexport/delta_exporter") - local json = require("encoding/json") - - local table_descriptors_path = "_lakefs_tables" - local sc = aws.s3_client(args.aws.access_key_id, args.aws.secret_access_key, args.aws.region) - local delta_client = formats.delta_client(args.lakefs.access_key_id, args.lakefs.secret_access_key, args.aws.region) - local delta_table_details = delta_export.export_delta_log(action, args.table_defs, sc.put_object, delta_client, table_descriptors_path) - - for t, details in pairs(delta_table_details) do - print("Delta Lake exported table \"" .. t .. "\"'s location: " .. details["path"] .. "\n") - print("Delta Lake exported table \"" .. t .. "\"'s metadata:\n") - for k, v in pairs(details["metadata"]) do - if type(v) == "table" then - print("\t" .. k .. " = " .. json.marshal(v) .. "\n") - else - print("\t" .. k .. " = " .. v .. "\n") - end - end - end - args: - aws: - access_key_id: - secret_access_key: - region: us-east-1 - lakefs: - access_key_id: - secret_access_key: - table_defs: - - mytable - ``` - - For the table descriptor under the `_lakefs_tables/mytable.yaml`: - - ```yaml - --- - name: myTableActualName - type: delta - path: a/path/to/my/delta/table - ``` - - Delta export example for Azure Blob Storage: - - ```yaml - name: Delta Exporter - on: - post-commit: - branches: ["{% raw %}{{ .Branch }}{% endraw %}*"] - hooks: - - id: delta_exporter - type: lua - properties: - script: | - local azure = require("azure") - local formats = require("formats") - local delta_exporter = require("lakefs/catalogexport/delta_exporter") - - local table_descriptors_path = "_lakefs_tables" - local sc = azure.blob_client(args.azure.storage_account, args.azure.access_key) - local function write_object(_, key, buf) - return sc.put_object(key,buf) - end - local delta_client = formats.delta_client(args.lakefs.access_key_id, args.lakefs.secret_access_key) - local delta_table_details = delta_export.export_delta_log(action, args.table_defs, sc.put_object, delta_client, table_descriptors_path) - - for t, details in pairs(delta_table_details) do - print("Delta Lake exported table \"" .. t .. "\"'s location: " .. details["path"] .. "\n") - print("Delta Lake exported table \"" .. t .. "\"'s metadata:\n") - for k, v in pairs(details["metadata"]) do - if type(v) == "table" then - print("\t" .. k .. " = " .. json.marshal(v) .. "\n") - else - print("\t" .. k .. " = " .. v .. "\n") - end - end - end - args: - azure: - storage_account: "{% raw %}{{ .AzureStorageAccount }}{% endraw %}" - access_key: "{% raw %}{{ .AzureAccessKey }}{% endraw %}" - lakefs: # provide credentials of a user that has access to the script and Delta Table - access_key_id: "{% raw %}{{ .LakeFSAccessKeyID }}{% endraw %}" - secret_access_key: "{% raw %}{{ .LakeFSSecretAccessKey }}{% endraw %}" - table_defs: - - mytable - - ``` - -### `lakefs/catalogexport/delta_exporter.changed_table_defs(table_def_names, table_descriptors_path, repository_id, ref, compare_ref)` - -Utility function to filter list of table defs based on those that have changed. Returns the subset of the tables in the table_def_names parameter that have changed. - -Parameters: - -* `table_def_names(table of strings)`: List of table names to filter based on the diff -* `table_descriptors_path(string)`: The path under which the table descriptors of the provided `table_def_names` reside -* `repository_id(string)`: The repository ID -* `ref(string)`: base reference pointing at a specific version of the data i.e. a branch, commit ID, or tag -* `compare_ref(string)`: compared-to reference for the diff to determine which tables changed - -!!! example - ```lua - local delta_export = require("lakefs/catalogexport/delta_exporter") - local ref = action.commit.parents[1] - local compare_ref = action.commit_id - local changed_table_defs = delta_export.changed_table_defs(args.table_defs, args.table_descriptors_path, action.repository_id, ref, compare_ref) - for i = 1, #changed_table_defs do - print(changed_table_defs[i]) - end - ``` - -### `lakefs/catalogexport/table_extractor` - -Utility package to parse `_lakefs_tables/` descriptors. - -### `lakefs/catalogexport/table_extractor.list_table_descriptor_entries(client, repo_id, commit_id)` - -List all YAML files under `_lakefs_tables/*` and return a list of type `[{physical_address, path}]`, ignores hidden files. -The `client` is `lakefs` client. - -### `lakefs/catalogexport/table_extractor.get_table_descriptor(client, repo_id, ref, logical_path)` - -Read a table descriptor and parse YAML object. Will set `partition_columns` to `{}` if no partitions are defined. - -Parameters: -* `client`: `lakefs` client -* `repo_id(string)`: The repository ID -* `ref(string)`: reference pointing at a specific version of the data i.e. a branch, commit ID, or tag -* `logical_path(string)`: logical path of the table descriptor file within the repo - -### `lakefs/catalogexport/hive.extract_partition_pager(client, repo_id, commit_id, base_path, partition_cols, page_size)` - -Hive format partition iterator each result set is a collection of files under the same partition in lakeFS. - -!!! example - ```lua - local lakefs = require("lakefs") - local pager = hive.extract_partition_pager(lakefs, repo_id, commit_id, prefix, partitions, 10) - for part_key, entries in pager do - print("partition: " .. part_key) - for _, entry in ipairs(entries) do - print("path: " .. entry.path .. " physical: " .. entry.physical_address) - end - end - ``` - -### `lakefs/catalogexport/symlink_exporter` - -Writes metadata for a table using Hive's [SymlinkTextInputFormat](https://svn.apache.org/repos/infra/websites/production/hive/content/javadocs/r2.1.1/api/org/apache/hadoop/hive/ql/io/SymlinkTextInputFormat.html). -Currently only `S3` is supported. - -The default export paths per commit: - -``` -${storageNamespace} -_lakefs/ - exported/ - ${ref}/ - ${commitId}/ - ${tableName}/ - p1=v1/symlink.txt - p1=v2/symlink.txt - p1=v3/symlink.txt - ... -``` - -### `lakefs/catalogexport/symlink_exporter.export_s3(s3_client, table_src_path, action_info [, options])` - -Export Symlink files that represent a table to S3 location. - -Parameters: - -* `s3_client`: Configured client. -* `table_src_path(string)`: Path to the table spec YAML file in `_lakefs_tables` (e.g. _lakefs_tables/my_table.yaml). -* `action_info(table)`: The global action object. -* `options(table)`: - * `debug(boolean)`: Print extra info. - * `export_base_uri(string)`: Override the prefix in S3 e.g. `s3://other-bucket/path/`. - * `writer(function(bucket, key, data))`: If passed then will not use s3 client, helpful for debug. - -!!! example - ```lua - local exporter = require("lakefs/catalogexport/symlink_exporter") - local aws = require("aws") - -- args are user inputs from a lakeFS action. - local s3 = aws.s3_client(args.aws.aws_access_key_id, args.aws.aws_secret_access_key, args.aws.aws_region) - exporter.export_s3(s3, args.table_descriptor_path, action, {debug=true}) - ``` - -### `lakefs/catalogexport/glue_exporter` - -A Package for automating the export process from lakeFS stored tables into Glue catalog. - -### `lakefs/catalogexport/glue_exporter.export_glue(glue, db, table_src_path, create_table_input, action_info, options)` - -Represent lakeFS table in Glue Catalog. -This function will create a table in Glue based on configuration. -It assumes that there is a symlink location that is already created and only configures it by default for the same commit. - -Parameters: - -* `glue`: AWS glue client -* `db(string)`: glue database name -* `table_src_path(string)`: path to table spec (e.g. _lakefs_tables/my_table.yaml) -* `create_table_input(table)`: Input equal mapping to [table_input](https://docs.aws.amazon.com/glue/latest/webapi/API_CreateTable.html#API_CreateTable_RequestSyntax) in AWS, the same as we use for `glue.create_table`. -should contain inputs describing the data format (e.g. InputFormat, OutputFormat, SerdeInfo) since the exporter is agnostic to this. -by default this function will configure table location and schema. -* `action_info(table)`: the global action object. -* `options(table)`: - * `table_name(string)`: Override default glue table name - * `debug(boolean` - * `export_base_uri(string)`: Override the default prefix in S3 for symlink location e.g. s3://other-bucket/path/ - * `create_db_input(table)`: if this is specified, then it indicates we want to create a new database for the table export. The parameter expects a table that is converted to JSON and passed "as is" to AWS and is parallel to the AWS SDK [CreateDatabaseInput](https://docs.aws.amazon.com/glue/latest/webapi/API_CreateDatabase.html#API_CreateDatabase_RequestSyntax) - -When creating a glue table, the final table input will consist of the `create_table_input` input parameter and lakeFS computed defaults that will override it: - -* `Name` Gable table name `get_full_table_name(descriptor, action_info)`. -* `PartitionKeys` Partition columns usually deduced from `_lakefs_tables/${table_src_path}`. -* `TableType` = "EXTERNAL_TABLE" -* `StorageDescriptor`: Columns usually deduced from `_lakefs_tables/${table_src_path}`. -* `StorageDescriptor.Location` = symlink_location - -!!! example - ```lua - local aws = require("aws") - local exporter = require("lakefs/catalogexport/glue_exporter") - local glue = aws.glue_client(args.aws_access_key_id, args.aws_secret_access_key, args.aws_region) - -- table_input can be passed as a simple Key-Value object in YAML as an argument from an action, this is inline example: - local table_input = { - StorageDescriptor: - InputFormat: "org.apache.hadoop.hive.ql.io.SymlinkTextInputFormat" - OutputFormat: "org.apache.hadoop.hive.ql.io.IgnoreKeyTextOutputFormat" - SerdeInfo: - SerializationLibrary: "org.apache.hadoop.hive.ql.io.parquet.serde.ParquetHiveSerDe" - Parameters: - classification: "parquet" - EXTERNAL: "TRUE" - "parquet.compression": "SNAPPY" - } - exporter.export_glue(glue, "my-db", "_lakefs_tables/animals.yaml", table_input, action, {debug=true, create_db_input = {DatabaseInput = {Description="DB exported from LakeFS"}, Tags = {Owner = "Joe"}}}) - ``` - -### `lakefs/catalogexport/glue_exporter.get_full_table_name(descriptor, action_info)` - -Generate glue table name. - -Parameters: - -* `descriptor(Table)`: Object from (e.g. _lakefs_tables/my_table.yaml). -* `action_info(Table)`: The global action object. - -### `lakefs/catalogexport/unity_exporter` - -A package used to register exported Delta Lake tables to Databricks' Unity catalog. - -### `lakefs/catalogexport/unity_exporter.register_tables(action, table_descriptors_path, delta_table_details, databricks_client, warehouse_id)` - -The function used to register exported Delta Lake tables in Databricks' Unity Catalog. -The registration will use the following paths to register the table: -`..` where the branch name will be used as the schema name. -The return value is a table with mapping of table names to registration request status. - -**Note: (Azure users)** Databricks catalog external locations is supported only for ADLS Gen2 storage accounts. -When exporting Delta tables using the `lakefs/catalogexport/delta_exporter.export_delta_log` function, the `path_transformer` must be -used to convert the paths scheme to `abfss`. The built-in `azure` Lua library provides this functionality with `transformPathToAbfss`. - -Parameters: - -* `action(table)`: The global action table -* `table_descriptors_path(string)`: The path under which the table descriptors of the provided `table_paths` reside. -* `delta_table_details(table)`: Table names to physical paths mapping and table metadata (e.g. `{table1 = {path = "s3://mybucket/mytable1", metadata = {id = "table_1_id", name = "table1", ...}}, table2 = {path = "s3://mybucket/mytable2", metadata = {id = "table_2_id", name = "table2", ...}}}`.) -* `databricks_client(table)`: A Databricks client that implements `create_or_get_schema: function(id, catalog_name)` and `register_external_table: function(table_name, physical_path, warehouse_id, catalog_name, schema_name)` -* `warehouse_id(string)`: Databricks warehouse ID. - -!!! example - The following registers an exported Delta Lake table to Unity Catalog. - - ```lua - local databricks = require("databricks") - local unity_export = require("lakefs/catalogexport/unity_exporter") - - local delta_table_locations = { - ["table1"] = "s3://mybucket/mytable1", - } - -- Register the exported table in Unity Catalog: - local action_details = { - repository_id = "my-repo", - commit_id = "commit_id", - branch_id = "main", - } - local databricks_client = databricks.client("", "") - local registration_statuses = unity_export.register_tables(action_details, "_lakefs_tables", delta_table_locations, databricks_client, "") - - for t, status in pairs(registration_statuses) do - print("Unity catalog registration for table \"" .. t .. "\" completed with status: " .. status .. "\n") - end - ``` - - For the table descriptor under the `_lakefs_tables/delta-table-descriptor.yaml`: - ```yaml - --- - name: my_table_name - type: delta - path: path/to/delta/table/data - catalog: my-catalog - ``` - -For detailed step-by-step guide on how to use `unity_exporter.register_tables` as a part of a lakeFS action refer to -the [Unity Catalog docs](../../integrations/unity-catalog.md). - -### `path/parse(path_string)` - -Returns a table for the given path string with the following structure: - -!!! example - ```lua - > require("path") - > path.parse("a/b/c.csv") - { - ["parent"] = "a/b/" - ["base_name"] = "c.csv" - } - ``` - -### `path/join(*path_parts)` - -Receives a variable number of strings and returns a joined string that represents a path: - -!!! example - ```lua - > path = require("path") - > path.join("/", "path/", "to", "a", "file.data") - path/o/a/file.data - ``` - -### `path/is_hidden(path_string [, seperator, prefix])` - -returns a boolean - `true` if the given path string is hidden (meaning it starts with `prefix`) - or if any of its parents start with `prefix`. - -!!! example - ```lua - > require("path") - > path.is_hidden("a/b/c") -- false - > path.is_hidden("a/b/_c") -- true - > path.is_hidden("a/_b/c") -- true - > path.is_hidden("a/b/_c/") -- true - ``` - -### `path/default_separator()` - -Returns a constant string (`/`) - -### `regexp/match(pattern, s)` - -Returns true if the string `s` matches `pattern`. -This is a thin wrapper over Go's [regexp.MatchString](https://pkg.go.dev/regexp#MatchString){: target="_blank" }. - -### `regexp/quote_meta(s)` - -Escapes any meta-characters in string `s` and returns a new string - -### `regexp/compile(pattern)` - -Returns a regexp match object for the given pattern - -### `regexp/compiled_pattern.find_all(s, n)` - -Returns a table list of all matches for the pattern, (up to `n` matches, unless `n == -1` in which case all possible matches will be returned) - -### `regexp/compiled_pattern.find_all_submatch(s, n)` - -Returns a table list of all sub-matches for the pattern, (up to `n` matches, unless `n == -1` in which case all possible matches will be returned). -Submatches are matches of parenthesized subexpressions (also known as capturing groups) within the regular expression, -numbered from left to right in order of opening parenthesis. -Submatch 0 is the match of the entire expression, submatch 1 is the match of the first parenthesized subexpression, and so on - -### `regexp/compiled_pattern.find(s)` - -Returns a string representing the left-most match for the given pattern in string `s` - -### `regexp/compiled_pattern.find_submatch(s)` - -find_submatch returns a table of strings holding the text of the leftmost match of the regular expression in `s` and the matches, if any, of its submatches - -### `strings/split(s, sep)` - -returns a table of strings, the result of splitting `s` with `sep`. - -### `strings/trim(s)` - -Returns a string with all leading and trailing white space removed, as defined by Unicode - -### `strings/replace(s, old, new, n)` - -Returns a copy of the string s with the first n non-overlapping instances of `old` replaced by `new`. -If `old` is empty, it matches at the beginning of the string and after each UTF-8 sequence, yielding up to k+1 replacements for a k-rune string. - -If n < 0, there is no limit on the number of replacements - -### `strings/has_prefix(s, prefix)` - -Returns `true` if `s` begins with `prefix` - -### `strings/has_suffix(s, suffix)` - -Returns `true` if `s` ends with `suffix` - -### `strings/contains(s, substr)` - -Returns `true` if `substr` is contained anywhere in `s` - -### `time/now()` - -Returns a `float64` representing the amount of nanoseconds since the unix epoch (01/01/1970 00:00:00). - -### `time/format(epoch_nano, layout, zone)` - -Returns a string representation of the given epoch_nano timestamp for the given Timezone (e.g. `"UTC"`, `"America/Los_Angeles"`, ...) -The `layout` parameter should follow [Go's time layout format](https://pkg.go.dev/time#pkg-constants){: target="_blank" }. - -### `time/format_iso(epoch_nano, zone)` - -Returns a string representation of the given `epoch_nano` timestamp for the given Timezone (e.g. `"UTC"`, `"America/Los_Angeles"`, ...) -The returned string will be in [ISO8601](https://en.wikipedia.org/wiki/ISO_8601){: target="_blank" } format. - -### `time/sleep(duration_ns)` - -Sleep for `duration_ns` nanoseconds - -### `time/since(epoch_nano)` - -Returns the amount of nanoseconds elapsed since `epoch_nano` - -### `time/add(epoch_time, duration_table)` - -Returns a new timestamp (in nanoseconds passed since 01/01/1970 00:00:00) for the given `duration`. -The `duration` should be a table with the following structure: - -!!! example - ```lua - > require("time") - > time.add(time.now(), { - ["hour"] = 1, - ["minute"] = 20, - ["second"] = 50 - }) - ``` -You may omit any of the fields from the table, resulting in a default value of `0` for omitted fields - -### `time/parse(layout, value)` - -Returns a `float64` representing the amount of nanoseconds since the unix epoch (01/01/1970 00:00:00). -This timestamp will represent date `value` parsed using the `layout` format. - -The `layout` parameter should follow [Go's time layout format](https://pkg.go.dev/time#pkg-constants){: target="_blank" } - -### `time/parse_iso(value)` - -Returns a `float64` representing the amount of nanoseconds since the unix epoch (01/01/1970 00:00:00 for `value`. -The `value` string should be in [ISO8601](https://en.wikipedia.org/wiki/ISO_8601){: target="_blank" } format - -### `uuid/new()` - -Returns a new 128-bit [RFC 4122 UUID](https://www.rfc-editor.org/rfc/rfc4122){: target="_blank" } in string representation. - -### `net/url` - -Provides a `parse` function parse a URL string into parts, returns a table with the URL's host, path, scheme, query and fragment. - -!!! example - ```lua - > local url = require("net/url") - > url.parse("https://example.com/path?p1=a#section") - { - ["host"] = "example.com" - ["path"] = "/path" - ["scheme"] = "https" - ["query"] = "p1=a" - ["fragment"] = "section" - } - ``` - -### `net/http` (optional) - -Provides a `request` function that performs an HTTP request. -For security reasons, this package is not available by default as it enables http requests to be sent out from the lakeFS instance network. The feature should be enabled under `actions.lua.net_http_enabled` [configuration](../../reference/configuration.md). -Request will time out after 30 seconds. - -!!! example - ```lua - http.request(url [, body]) - http.request{ - url = string, - [method = string,] - [headers = header-table,] - [body = string,] - } - ``` - -Returns a code (number), body (string), headers (table) and status (string). - -* code - status code number -* body - string with the response body -* headers - table with the response request headers (key/value or table of values) -* status - status code text - -The first form of the call will perform GET requests or POST requests if the body parameter is passed. - -The second form accepts a table and allows you to customize the request method and headers. - -Example of a GET request - -!!! example - ```lua - local http = require("net/http") - local code, body = http.request("") - if code == 200 then - print(body) - else - print("Failed to get example.com - status code: " .. code) - end - - ``` - -!!! example "Example of a POST request" - - ```lua - local http = require("net/http") - local code, body = http.request{ - url="https://httpbin.org/post", - method="POST", - body="custname=tester", - headers={["Content-Type"]="application/x-www-form-urlencoded"}, - } - if code == 200 then - print(body) - else - print("Failed to post data - status code: " .. code) - end - ``` diff --git a/docs/src/howto/hooks/webhooks.md b/docs/src/howto/hooks/webhooks.md deleted file mode 100644 index 45fe7e7192f..00000000000 --- a/docs/src/howto/hooks/webhooks.md +++ /dev/null @@ -1,96 +0,0 @@ ---- -title: Webhooks -description: Webhooks reference ---- - -# Webhooks - -A Webhook is a Hook type that sends an HTTP POST request to the configured URL. -Any non `2XX` response by the responding endpoint will fail the Hook, cancel the execution of the following Hooks -under the same Action. For `pre-*` hooks, the triggering operation will also be aborted. - -!!! warning - You should not use `pre-*` webhooks for long-running tasks, since they block the performed operation. - Moreover, the branch is locked during the execution of `pre-*` hooks, so the webhook server cannot perform any write operations on the branch (like uploading or commits). - -## Action File Webhook properties - -_See the [Action configuration](./index.md#action-files) for overall configuration schema and details._ - -| Property | Description | Data Type | Required | Default Value | Env Vars Support | -|--------------|--------------------------------------------------------|-------------------------------------------------------------------------------------------|----------|---------------|------------------| -| url | The URL address of the request | String | true | | no | -| timeout | Time to wait for response before failing the hook | String (golang's [Duration](https://golang.org/pkg/time/#Duration.String) representation) | false | 1 minute | no | -| query_params | List of query params that will be added to the request | Dictionary(String:String or String:List(String) | false | | yes | -| headers | Headers to add to the request | Dictionary(String:String) | false | | yes | - -**Secrets & Environment Variables** - -lakeFS Actions supports secrets by using environment variables. -The format `{% raw %}{{{% endraw %} ENV.SOME_ENV_VAR {% raw %}}}{% endraw %}` will be replaced with the value of `$SOME_ENV_VAR` -during the execution of the action. If that environment variable doesn't exist in the lakeFS server environment, the action run will fail. - -!!! info - All environment variables need to begin with "LAKEFSACTIONS_". Otherwise, they will be blocked. - Additionally, the `actions.env.enabled` configuration parameter can be set to `false` to block access to all environment variables. - -!!! example - ```yaml - ... - hooks: - - id: prevent_user_columns - type: webhook - description: Ensure no user_* columns under public/ - properties: - url: "http:///webhooks/schema" - timeout: 1m30s - query_params: - disallow: ["user_", "private_"] - prefix: public/ - headers: - secret_header: "{% raw %}{{{% endraw %} ENV.MY_SECRET {% raw %}}}{% endraw %}" - ... - ``` - -## Request body schema - -Upon execution, a webhook will send a request containing a JSON object with the following fields: - -| Field | Description | Type | -|---------------------|----------------------------------------------------------------------------|--------| -| event_type | Type of the event that triggered the _Action_ | string | -| event_time | Time of the event that triggered the _Action_ (RFC3339 formatted) | string | -| action_name | Containing _Hook_ Action's Name | string | -| hook_id | ID of the _Hook_ | string | -| repository_id | ID of the Repository | string | -| branch_id[^1] | ID of the Branch | string | -| source_ref | Reference to the source on which the event was triggered | string | -| commit_message[^2] | The message for the commit (or merge) that is taking place | string | -| committer[^2] | Name of the committer | string | -| commit_metadata[^2] | The metadata for the commit that is taking place | string | -| commit_id[^3] | The ID of the commit that is being created | string | -| tag_id | The ID of the created/deleted tag (available for Tag events) | string | -| merge_source | The source branch/tag/ref on merge (available for Merge events) | string | - -[^1]: N/A for Tag events -[^2]: N/A for Tag and Create/Delete Branch events -[^3]: Available for Commit/Merge events only. In Merge, this represents the merge commit ID to be created if the merge operation succeeds. - -!!! example - ```json - { - "event_type": "pre-merge", - "event_time": "2021-02-28T14:03:31Z", - "action_name": "test action", - "hook_id": "prevent_user_columns", - "repository_id": "repo1", - "branch_id": "feature-1", - "source_ref": "feature-1", - "commit_message": "merge commit message", - "commit_id": "5891b5b522d5df086d0ff0b110fbd9d21bb4fc7163af34d08286a2e846f6be03", - "committer": "committer", - "commit_metadata": { - "key": "value" - } - } - ``` diff --git a/docs/src/howto/import.md b/docs/src/howto/import.md deleted file mode 100644 index 1e27aa171af..00000000000 --- a/docs/src/howto/import.md +++ /dev/null @@ -1,130 +0,0 @@ ---- -title: Import Data -description: Import existing data into a lakeFS repository ---- - -!!! tip - This section describes how to import existing data into a lakeFS repository, without copying it. - If you are interested in copying data into lakeFS, see [Copying data to/from lakeFS](./copying.md)._ - -# Importing data into lakeFS - - - -## Prerequisites - -* Importing is permitted for users in the Supers (open-source) group or the SuperUsers (Cloud/Enterprise) group. - To learn how lakeFS Cloud and lakeFS Enterprise users can fine-tune import permissions, see [Fine-grained permissions](#fine-grained-permissions) below. -* The lakeFS _server_ must have permissions to list the objects in the source bucket. -* The source bucket must be on the same cloud provider and in the same region as your repository. - -## Using the lakeFS UI - -1. In your repository's main page, click the _Import_ button to open the import dialog. -2. Under _Import from_, fill in the location on your object store you would like to import from. -3. Fill in the import destination in lakeFS. This should be a path under the current branch. -4. Add a commit message, and optionally commit metadata. -5. Press _Import_. - -Once the import is complete, a new commit containing the imported objects will be created in the destination branch. - -![lakeFS UI import dialog](../assets/img/UI-Import-Dialog.png) - -## Using the CLI: _lakectl import_ - -The _lakectl import_ command acts the same as the UI import wizard. It commits the changes to the selected branch. - -=== "AWS S3 or S3 API Compatible storage" - ```shell - lakectl import \ - --from s3://bucket/optional/prefix/ \ - --to lakefs://my-repo/my-branch/optional/path/ - ``` -=== "Azure Blob" - ```shell - lakectl import \ - --from https://storageAccountName.blob.core.windows.net/container/optional/prefix/ \ - --to lakefs://my-repo/my-branch/optional/path/ - ``` -=== "Google Cloud Storage" - ```shell - lakectl import \ - --from gs://bucket/optional/prefix/ \ - --to lakefs://my-repo/my-branch/optional/path/ - ``` - -!!! note - 1. Any previously existing objects under the destination prefix will be deleted. - 1. The import duration depends on the amount of imported objects, but will roughly be a few thousand objects per second. - 1. For security reasons, if you are using lakeFS on top of your local disk (`blockstore.type=local`), you need to enable the import feature explicitly. - To do so, set the `blockstore.local.import_enabled` to `true` and specify the allowed import paths in `blockstore.local.allowed_external_prefixes` (see [configuration reference](../reference/configuration.md)). - When using lakectl or the lakeFS UI, you can currently import only directories locally. If you need to import a single file, use the [HTTP API](../reference/api.md#/import/importStart) or API Clients with `type=object` in the request body and `destination=`. - 1. Making changes to data in the original bucket will not be reflected in lakeFS, and may cause inconsistencies. - -## Examples - -To explore practical examples and real-world use cases of importing data into lakeFS, -we recommend checking out our comprehensive [blog post on the subject](https://lakefs.io/blog/import-data-lakefs/). - -## Fine-grained permissions - -!!! info - Available on **lakeFS Cloud** and **lakeFS Enterprise** - -With RBAC support, The lakeFS user running the import command should have the following permissions in lakeFS: -`fs:WriteObject`, `fs:CreateCommit`, `fs:ImportFromStorage` and `fs:ImportCancel`. - -As mentioned above, all of these permissions are available by default to the Supers (open-source) group or the SuperUsers (Cloud/Enterprise). - -## Provider-specific permissions - -In addition, the following for provider-specific permissions may be required: - -=== "AWS S3 or S3 API Compatible storage" - - lakeFS needs access to the imported location to first list the files to import and later read the files upon users request. - - There are some use cases where the user would like to import from a destination which isn't owned by the account running lakeFS. - For example, importing public datasets to experiment with lakeFS and Spark. - - lakeFS will require additional permissions to read from public buckets. For example, for S3 public buckets, - the following policy needs to be attached to the lakeFS S3 service-account to allow access to public buckets, while blocking access to other owned buckets: - - ```json - { - "Version": "2012-10-17", - "Statement": [ - { - "Sid": "PubliclyAccessibleBuckets", - "Effect": "Allow", - "Action": [ - "s3:GetBucketVersioning", - "s3:ListBucket", - "s3:GetBucketLocation", - "s3:ListBucketMultipartUploads", - "s3:ListBucketVersions", - "s3:GetObject", - "s3:GetObjectVersion", - "s3:AbortMultipartUpload", - "s3:ListMultipartUploadParts" - ], - "Resource": ["*"], - "Condition": { - "StringNotEquals": { - "s3:ResourceAccount": "" - } - } - } - ] - } - ``` - -=== "Azure" - - !!! note - The use of the `adls` hint for ADLS Gen2 storage accounts is deprecated, please use the original source url for import. - - See [Azure deployment][deploy-azure-storage-account-creds] on limitations when using account credentials. - -=== "Google Cloud Storage" - No specific prerequisites diff --git a/docs/src/howto/local-checkouts.md b/docs/src/howto/local-checkouts.md deleted file mode 100644 index eff3d431a3b..00000000000 --- a/docs/src/howto/local-checkouts.md +++ /dev/null @@ -1,472 +0,0 @@ ---- -title: Work with lakeFS data locally -description: How to work with lakeFS data locally ---- - -# Working with lakeFS Data Locally - -lakeFS is a scalable data version control system designed to scale to billions of objects. The larger the data, the less -feasible it becomes to consume it from a single machine. lakeFS addresses this challenge by enabling efficient management -of large-scale data stored remotely. - -In addition to its capability to manage large datasets, lakeFS offers the flexibility -to work with versioned data by exposing it as a local filesystem directory. - -This page explains [lakeFS Mount](../reference/mount.md) and `lakectl local`: two common ways of exposing lakeFS data locally, with different performance characteristics. - -## Use cases - -### Local development of ML models - -The development of machine learning models is a dynamic and iterative process, including experimentation with various data versions, -transformations, algorithms, and hyperparameters. To optimize this iterative workflow, experiments must be conducted with speed, -ease of tracking, and reproducibility in mind. Localizing the model data during development enhances the development process. -It **accelerates the development process** by enabling interactive and offline development and reducing data access latency. - -The local availability of data is required to **seamlessly integrate data version control systems and source control systems** -like Git. This integration is vital for achieving model reproducibility, allowing for a more efficient and collaborative -model development environment. - -### Data Locality for Optimized GPU Utilization - -Training Deep Learning models requires expensive GPUs. In the context of running such programs, the goal is to optimize -GPU usage and prevent them from sitting idle. Many deep learning tasks involve accessing images, and in some cases, the -same images are accessed multiple times. Localizing the data can eliminate redundant round trip times to access remote -storage, resulting in cost savings. - - - -## **lakeFS Mount**: Efficiently expose lakeFS Data as a local directory - -!!! info - Mount requires no installation, please [contact us](https://info.lakefs.io/thanks-lakefs-mounts) to get access. - -#### Prerequisites - -- A working lakeFS Server running either [lakeFS Enterprise](../enterprise/index.md) or [lakeFS Cloud](../cloud/index.md) -- You’ve installed the [`lakectl`](../reference/cli.md) command line utility: this is the official lakeFS command line interface, on top of which lakeFS Mount is built. -- lakectl is configured properly to access your lakeFS server as detailed in the configuration instructions - -### Mounting a lakeFS reference as a local directory - -lakeFS Mount works by exposing a virtual mountpoint on the host computer. - -This "acts" as a local directory, allowing applications to read write and interact with data as it is all local to the machine, while lakeFS Mount optimizes this behind the scenes by lazily fetching data as requested, caching accessed objects and efficiently managing metadata to ensure best in class performance. [Read more about how lakeFS Mount optimizes performance](../reference/mount.md) - -Mounting a reference is a single command: - -```bash -everest mount lakefs://example-repo/example-branch/path/to/data/ ./my_local_dir -``` - -Once executed, the `my_local_dir` directory should appear to have the contents of the remote path we provided. We can verify this: - -```bash -ls -l ./my_local_dir/ -``` - -Which should return the listing of the mounted path. - -!!! tip - lakeFS Mount allows quite a bit of tuning to ensure optimal performance. [Read more](../reference/mount.md) about how lakeFS Mount works and how to configure it. - -### Reading from a mount - -Reading from a lakeFS Mount requires no special tools, integrations or SDKs! Simply point your code to the directory and read from it as if it was in fact local: - -```python -#!/usr/bin/env python -import glob - -for image_path in glob.glob('./my_local_dir/*.png'): - with open(image_path, 'rb') as f: - process(f) -``` - -### Unmounting - -When done, simply run: - -```bash -everest umount ./my_local_dir -``` - -This will unmount the lakeFS Mount, cleaning up background tasks - -## **lakectl local**: Sync lakeFS data with a local directory - -The _local_ command of lakeFS' CLI _lakectl_ enables working with lakeFS data locally by copying the data onto the host machine. -It allows syncing local directories with remote lakeFS locations, -and to [seamlessly integrate lakeFS with Git](#example-using-lakectl-local-in-tandem-with-git). - -Here are the available _lakectl local_ commands: - -| Command | What it does | Notes | -|:-----------------------------------------|:----------------------------------------------------------------------------------------------------------------------------------------------------|:--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------| -| **[init](../reference/cli.md#lakectl-local-init)** | Connects between a local directory and a lakeFS remote URI to enable data sync | To undo a directory init, delete the .lakefs_ref.yaml file created in the initialized directory | -| **[clone](../reference/cli.md#lakectl-local-clone)** | Clones lakeFS data from a path into an empty local directory and initializes the directory | A directory can only track a single lakeFS remote location. i.e., you cannot clone data into an already initialized directory | -| **[list](../reference/cli.md#lakectl-local-list)** | Lists directories that are synced with lakeFS | It is recommended to follow any _init_ or _clone_ command with a list command to verify its success | | -| **[status](../reference/cli.md#lakectl-local-status)** | Shows remote and local changes to the directory and the remote location it tracks | | -| **[commit](../reference/cli.md#lakectl-local-commit)** | Commits changes from local directory to the lakeFS branch it tracks | Uncommitted changes to directories connected to lakeFS remote locations will not reflect in lakeFS until after doing lakectl local _commit_. | -| **[pull](../reference/cli.md#lakectl-local-pull)** | Fetches latest changes from a lakeFS remote location into a connected local directory | | -| **[checkout](../reference/cli.md#lakectl-local-checkout)** | Syncs a local directory with the state of a lakeFS ref | | - -!!! warning - The data size you work with locally should be reasonable for smooth operation on a local machine which is typically no larger than 15 GB. - -### Configuration - -The `lakectl local` commands can be configured through the lakectl configuration file to handle special cases like symbolic links. The following configuration options are available under the `local` section: - -| Configuration Option | Description | Default | -|:---------------------------|:------------------------------------------------------------------------------------------------------------------|:--------| -| `skip_non_regular_files` | By default, lakectl local fails if a local directory contains non regular files. When set to `true`, lakectl will ignore them instead of failing. | `false` | -| `symlink_support` | Controls whether symlinks are supported and processed by lakectl local commands. | `false` | - -Example configuration: - -```yaml -local: - symlink_support: true -``` - -When `symlink_support` is enabled, `lakectl local` commands will store and restore the state of the symlinks by creating special metadata objects that specify the symlink target. Metadata objects representing symlinks are created during data uploads. In contrast, during data downloads, `lakectl` will recreate the symbolic links in the local directory based on these metadata objects. This allows for a seamless integration of symlinks within your data management workflow. However, if the feature is turned off, any previously created symlinks will be treated as empty objects, meaning their targets will not be preserved or recreated during sync operations. It is crucial to enable this feature if your workflow relies on symbolic links to ensure data integrity and consistency. - -!!! note - When `skip_non_regular_files` is enabled, symbolic links in your local directory will be ignored during sync operations. If you need to work with symbolic links, consider using `symlink_support` instead, though this feature may have different behavior and limitations. - -!!! warning - Using symbolic links can be potentially dangerous as they can point to any file on your system. - When `symlink_support` is enabled, lakeFS will not download data to a target which is a symlink, to prevent any unexpected behavior. - -## Example: Using _lakectl local_ in tandem with Git - -We are going to develop an ML model that predicts whether an image is an Alpaca or not. Our goal is to improve the input -for the model. The code for the model is versioned by Git while the model dataset is versioned by lakeFS. We will -be using lakectl local to tie code versions to data versions to achieve model reproducibility. - -### Setup - -To get start with, we have initialized a Git repo called `is_alpaca` that includes the model code: -![Git repo](../assets/img/lakectl-local/code_repo.png) - -We also created a lakeFS repository and uploaded the _is_alpaca_ train [dataset](https://www.kaggle.com/datasets/sayedmahmoud/alpaca-dataset) -by Kaggel into it: -![lakeFS repo](../assets/img/lakectl-local/lakefs-repo-with-train-dataset.png) - -### Create an Isolated Environment for Experiments - -Our goal is to improve the model predictions. To meet our goal, we will experiment with editing the training dataset. -We will run our experiments in isolation to not change anything until after we are certain the data is improved and ready. - -Let's create a new lakeFS branch called `experiment-1`. Our _is_alpaca_ dataset is accessible on that branch, -and we will interact with the data from that branch only. -![experiment-1-branch](../assets/img/lakectl-local/experiment-branch.png) - -On the code side, we will create a Git branch also called `experiment-1` to not pollute our main branch with a dataset -which is under tuning. - -### Clone lakeFS Data into a Local Git Repository - -Inspecting the `train.py` script, we can see that it expects an input on the `input` directory. - -```python -#!/usr/bin/env python -import tensorflow as tf - -input_location = './input' -model_location = './models/is_alpaca.h5' - -def get_ds(subset): - return tf.keras.utils.image_dataset_from_directory( - input_location, validation_split=0.2, subset=subset, - seed=123, image_size=(244, 244), batch_size=32) - -train_ds = get_ds("training") -val_ds = get_ds("validation") - -model = tf.keras.Sequential([ - tf.keras.layers.Rescaling(1./255), - tf.keras.layers.Conv2D(32, 3, activation='relu'), - tf.keras.layers.MaxPooling2D(), - tf.keras.layers.Conv2D(32, 3, activation='relu'), - tf.keras.layers.MaxPooling2D(), - tf.keras.layers.Conv2D(32, 3, activation='relu'), - tf.keras.layers.MaxPooling2D(), - tf.keras.layers.Flatten(), - tf.keras.layers.Dense(128, activation='relu'), - tf.keras.layers.Dense(2)]) - -# Fit and save -loss_fn = tf.keras.losses.SparseCategoricalCrossentropy(from_logits=True) -model.compile(optimizer='adam', loss=loss_fn, metrics=['accuracy']) -model.fit(train_ds, validation_data=val_ds, epochs=3) -model.save(model_location) -``` - -This means that to be able to locally develop our model and experiment with it we need to have the _is_alpaca_ dataset managed -by lakeFS available locally on that path. To do that, we will use the [`lakectl local clone`](../reference/cli.md#lakectl-local-clone) -command from our local Git repository root: - -```shell -lakectl local clone lakefs://is-alpaca/experiment-1/dataset/train/ input -``` - -This command will do a diff between out local input directory (that did not exist until now) and the provided lakeFS path -and identify that there are files to be downloaded from lakeFS. - -```shell -Successfully cloned lakefs://is-alpaca/experiment-1/dataset/train/ to ~/ml_models/is_alpaca/input - -Clone Summary: - -Downloaded: 250 -Uploaded: 0 -Removed: 0 -``` - -Running [`lakectl local list`](../reference/cli.md#lakectl-local-list) from our Git repository root will show that the -`input` directory is now in sync with a lakeFS prefix (Remote URI), and what lakeFS version of the data (Synced Commit) -the is it tracking: - -```shell - is_alpaca % lakectl local list -+-----------+------------------------------------------------+------------------------------------------------------------------+ -| DIRECTORY | REMOTE URI | SYNCED COMMIT | -+-----------+------------------------------------------------+------------------------------------------------------------------+ -| input | lakefs://is-alpaca/experiment-1/dataset/train/ | 589f87704418c6bac80c5a6fc1b52c245af347b9ad1ea8d06597e4437fae4ca3 | -+-----------+------------------------------------------------+------------------------------------------------------------------+ -``` - -### Tie Code Version and Data Version - -Now let's tell Git to stage the dataset we've added and inspect our Git branch status: - -```shell -is_alpaca % git add input/ -is_alpaca % git status -On branch experiment-1 -Changes to be committed: - (use "git restore --staged ..." to unstage) - new file: input/.lakefs_ref.yaml - -Changes not staged for commit: - (use "git add ..." to update what will be committed) - (use "git restore ..." to discard changes in working directory) - modified: .gitignore -``` - -We can see that the `.gitignore` file changed, and that the files we cloned from lakeFS into the `input` directory are not -tracked by git. This is intentional - remember that **lakeFS is the one managing the data**. But wait, what is this special -`input/.lakefs_ref.yaml` file that Git does track? - -```shell -is_alpaca % cat input/.lakefs_ref.yaml - -src: lakefs://is-alpaca/experiment-1/dataset/train/s -at_head: 589f87704418c6bac80c5a6fc1b52c245af347b9ad1ea8d06597e4437fae4ca3 -``` - -This file includes the lakeFS version of the **data** that the Git repository is currently pointing to. - -Let's commit the changes to Git with: - -```shell -git commit -m "added is_alpaca dataset" -``` - -By committing to Git, we tie the current code version of the model to the dataset version in lakeFS as it appears in -`input/.lakefs_ref.yaml`. - -### Experiment and Version Results - -We ran the train script on the cloned input, and it generated a model. Now, let's use the model to predict whether an **axolotl** is an alpaca. - -A reminder - this is how an axolotl looks like - not like an alpaca! - -axolotl - -Here are the (surprising) results: - -```shell -is_alpaca % ./predict.py ~/axolotl1.jpeg -{'alpaca': 0.32112, 'not alpaca': 0.07260383} -``` - -We expected the model to provide a more concise prediction, so let's try to improve it. To do that, we will add additional -images of axolotls to the model input directory: - -```shell -is_alpaca % cp ~/axolotls_images/* input/not_alpaca -``` - -To inspect what changes we made to out dataset we will use [lakectl local status](../reference/cli.md#lakectl-local-status). - -```shell -is_alpaca % lakectl local status input -diff 'local:///ml_models/is_alpaca/input' <--> 'lakefs://is-alpaca/589f87704418c6bac80c5a6fc1b52c245af347b9ad1ea8d06597e4437fae4ca3/dataset/train/'... -diff 'lakefs://is-alpaca/589f87704418c6bac80c5a6fc1b52c245af347b9ad1ea8d06597e4437fae4ca3/dataset/train/' <--> 'lakefs://is-alpaca/experiment-1/dataset/train/'... - -╔════════╦════════╦════════════════════════════╗ -║ SOURCE ║ CHANGE ║ PATH ║ -╠════════╬════════╬════════════════════════════╣ -║ local ║ added ║ not_alpaca/axolotl2.jpeg ║ -║ local ║ added ║ not_alpaca/axolotl3.png ║ -║ local ║ added ║ not_alpaca/axolotl4.jpeg ║ -╚════════╩════════╩════════════════════════════╝ -``` - -At this point, the dataset changes are not yet tracked by lakeFS. We will validate that by looking at the uncommitted changes -area of our experiment branch and verifying it is empty. - -To commit these changes to lakeFS we will use [lakectl local commit](../reference/cli.md#lakectl-local-commit): - -```shell -is_alpaca % lakectl local commit input -m "add images of axolotls to the training dataset" - -Getting branch: experiment-1 - -diff 'local:///ml_models/is_alpaca/input' <--> 'lakefs://is-alpaca/589f87704418c6bac80c5a6fc1b52c245af347b9ad1ea8d06597e4437fae4ca3/dataset/train/'... -upload not_alpaca/axolotl3.png ... done! [5.04KB in 679ms] -upload not_alpaca/axolotl2.jpeg ... done! [38.31KB in 685ms] -upload not_alpaca/axolotl4.jpeg ... done! [7.70KB in 718ms] - -Sync Summary: - -Downloaded: 0 -Uploaded: 3 -Removed: 0 - -Finished syncing changes. Perform commit on branch... -Commit for branch "experiment-1" completed. - -ID: 0b376f01b925a075851bbaffacf104a80de04a43ed7e56054bf54c42d2c8cce6 -Message: add images of axolotls to the training dataset -Timestamp: 2024-02-08 17:41:20 +0200 IST -Parents: 589f87704418c6bac80c5a6fc1b52c245af347b9ad1ea8d06597e4437fae4ca3 -``` - -Looking at the lakeFS UI we can see that the lakeFS commit includes metadata that tells us what was the code version of -the linked Git repository at the time of the commit. -![git metadata in lakeFS](../assets/img/lakectl-local/lakefs-commit-git-commit-id.png) - -Inspecting the Git repository, we can see that the input/.lakefs_ref.yaml is pointing to the latest lakeFS commit `0b376f01b925a075851bbaffacf104a80de04a43ed7e56054bf54c42d2c8cce6`. - -We will now re-train our model with the modified dataset and give a try to predict whether an axolotl is an alpaca: - -```shell -is_alpaca % ./predict.py ~/axolotl1.jpeg -{'alpaca': 0.12443, 'not alpaca': 0.47260383} -``` - -Results are indeed more accurate. - -### Sync a Local Directory with lakeFS - -Now that we think that the latest version of our model generates reliable predictions, let's validate it against a test dataset -rather than against a single picture. We will use the test dataset provided by [Kaggel](https://www.kaggle.com/datasets/sayedmahmoud/alpaca-dataset). -Let's create a local `testDataset` directory in our git repository and populate it with the test dataset. - -Now, we will use [lakectl local init](../reference/cli.md#lakectl-local-init) to sync the `testDataset` directory with our lakeFS repository: - -```shell -is_alpaca % lakectl local init lakefs://is-alpaca/main/dataset/test/ testDataset -Location added to /is_alpaca/.gitignore -Successfully linked local directory '/is_alpaca/testDataset' with remote 'lakefs://is-alpaca/main/dataset/test/' -``` - -And validate that the directory was linked successfully: - -```shell -is_alpaca % lakectl local list -+-------------+-------------------------------------------------+------------------------------------------------------------------+ -| DIRECTORY | REMOTE URI | SYNCED COMMIT | -+-------------+-------------------------------------------------+------------------------------------------------------------------+ -| input | lakefs://is-alpaca/main/dataset/train/ | 0b376f01b925a075851bbaffacf104a80de04a43ed7e56054bf54c42d2c8cce6 | -| testDataset | lakefs://is-alpaca/main/dataset/test/ | 0b376f01b925a075851bbaffacf104a80de04a43ed7e56054bf54c42d2c8cce6 | -+-------------+-------------------------------------------------+------------------------------------------------------------------+ -``` - -Now we will tell Git to track the `testDataset` directory with `git add testDataset`, and as we saw earlier Git will only track the `testDataset/.lakefs_ref.yaml` -for that directory rather than its content. - -To see the difference between our local `testDataset` directory and its lakeFS location `lakefs://is-alpaca/main/dataset/test/` -we will use [lakectl local status](../reference/cli.md#lakectl-local-status): - -```shell -is_alpaca % lakectl local status testDataset - -diff 'local:///ml_models/is_alpaca/testDataset' <--> 'lakefs://is-alpaca/0b376f01b925a075851bbaffacf104a80de04a43ed7e56054bf54c42d2c8cce6/dataset/test/'... -diff 'lakefs://is-alpaca/0b376f01b925a075851bbaffacf104a80de04a43ed7e56054bf54c42d2c8cce6/dataset/test/' <--> 'lakefs://is-alpaca/main/dataset/test/'... - -╔════════╦════════╦════════════════════════════════╗ -║ SOURCE ║ CHANGE ║ PATH ║ -╠════════╬════════╬════════════════════════════════╣ -║ local ║ added ║ alpaca/alpaca (1).jpg ║ -║ local ║ added ║ alpaca/alpaca (10).jpg ║ -║ . . . ║ -║ . . . ║ -║ . . . ║ -║ local ║ added ║ not_alpaca/not_alpaca (9).jpg ║ -╚════════╩════════╩════════════════════════════════╝ -``` - -We can see that multiple files were locally added to the synced directory. - -To apply these changes to lakeFS we will commit them: - -```shell -is_alpaca % lakectl local commit testDataset -m "add is_alpaca test dataset to lakeFS" - -Getting branch: experiment-1 - -diff 'local:///ml_models/is_alpaca/testDataset' <--> 'lakefs://is-alpaca/0b376f01b925a075851bbaffacf104a80de04a43ed7e56054bf54c42d2c8cce6/dataset/test/'... -upload alpaca/alpaca (23).jpg ... done! [113.81KB in 1.241s] -upload alpaca/alpaca (26).jpg ... done! [102.74KB in 1.4s] - . . - . . -upload not_alpaca/not_alpaca (42).jpg ... done! [886.93KB in 14.336s] - -Sync Summary: - -Downloaded: 0 -Uploaded: 77 -Removed: 0 - -Finished syncing changes. Perform commit on branch... -Commit for branch "experiment-1" completed. - -ID: c8be7f4f5c13dd2e489ae85e6f747230bfde8e50f9cd9b6af20b2baebfb576cf -Message: add is_alpaca test dataset to lakeFS -Timestamp: 2024-02-10 12:31:53 +0200 IST -Parents: 0b376f01b925a075851bbaffacf104a80de04a43ed7e56054bf54c42d2c8cce6 -``` - -Looking at the lakFS UI we see that our test data is now available at lakeFS: -![test_dataset](../assets/img/lakectl-local/tes-and-train-dataset.png) - -Finally, we will Git commit the local changes to link between the Git and lakeFS repositories state. - -!!! tip - While syncing a local directory with a lakeF prefix, it is recommended to first commit the data to lakeFS and then - do a Git commit that will include the changes done to the `.lakefs_ref.yaml` for the synced directory. Reasoning is that - only after committing the data to lakeFS, the `.lakefs_ref.yaml` file points to a lakeFS commit that includes the added - content from the directory. - -### Reproduce Model Results - -What if we wanted to re-run the model that predicted that an axolotl is more likely to be an alpaca? -This question translates into the question: "How do I roll back my code and data to the time before we optimized the train dataset?" -Which translates to: "What was the Git commit ID at this point?" - -Searching our Git log we find this commit: - -```shell -commit 5403ec29903942b692aabef404598b8dd3577f8a - - added is_alpaca dataset -``` - -So, all we have to do now is `git checkout 5403ec29903942b692aabef404598b8dd3577f8a` and we are good to reproduce the model results! - -Checkout our article about [ML Data Version Control and Reproducibility at Scale](https://lakefs.io/blog/scalable-ml-data-version-control-and-reproducibility/) to get another example for how lakeFS and Git work seamlessly together. diff --git a/docs/src/howto/migrate-away.md b/docs/src/howto/migrate-away.md deleted file mode 100644 index 6812f0415d2..00000000000 --- a/docs/src/howto/migrate-away.md +++ /dev/null @@ -1,16 +0,0 @@ ---- -title: Migrating away from lakeFS -description: The simplest way to migrate away from lakeFS is by copying data from a lakeFS repository to an S3 bucket. ---- - -# Migrating away from lakeFS - -## Copying data from a lakeFS repository to an S3 bucket - -The simplest way to migrate away from lakeFS is by copying data from a lakeFS repository to an S3 bucket -(or any other object store). - -For smaller repositories, you can do this by using the [AWS CLI](../integrations/aws_cli.md) or [Rclone][rclone]. -For larger repositories, running [distcp](https://hadoop.apache.org/docs/stable/hadoop-distcp/DistCp.html){: target="_blank"} with lakeFS as the source is also an option. - -[rclone]: copying.md#using-rclone diff --git a/docs/src/howto/mirroring.md b/docs/src/howto/mirroring.md deleted file mode 100644 index fdd0bd33c0b..00000000000 --- a/docs/src/howto/mirroring.md +++ /dev/null @@ -1,589 +0,0 @@ ---- -title: Transactional Mirroring -description: Mirroring allows replicating commits between lakeFS installations in different geo-locations/regions -status: enterprise ---- - -# Transactional Mirroring - -!!! info - Transactional Mirroring requires a [**lakeFS Enterprise**](../enterprise/index.md) license with the Transactional Mirroring capability enabled. - - -## What is lakeFS Transactional Mirroring? - -Transactional Mirroring in lakeFS allows replicating a lakeFS repository ("source") into read-only copies ("mirror") in different locations. - -Unlike conventional mirroring, data isn't simply copied between regions - lakeFS tracks the state of each commit, advancing the commit log on the mirror only once a commit has been fully replicated and all data is available. - - -![mirroring architecture](../assets/img/mirroring/arch.png) - - - -## Use cases - -### Disaster recovery - -Typically, object stores provide a replication/batch copy API to allow for disaster recovery: as new objects are written, they are asynchronously copied to other geo locations. - -In the case of regional failure, users can rely on the other geo-locations which should contain relatively-up-to-date state. - -The problem is reasoning about what managed to arrive by the time of disaster and what hasn't: - -* have all the necessary files for a given dataset arrived? -* in cases there are dependencies between datasets, are all dependencies also up to date? -* what is currently in-flight or haven't even started replicating yet? - -Reasoning about these is non-trivial, especially in the face of a regional disaster, however ensuring business continuity might require that we have these answers. - -Using lakeFS Transactional Mirroring makes it much easier to answer: we are guaranteed that the latest commit that exists in the replica is in a consistent state and is fully usable, even if it isn't the absolute latest commit - it still reflects a known, consistent, point in time. - - -### Data Locality - -For certain workloads, it might be cheaper to have data available in multiple regions: Expensive hardware such as GPUs might fluctuate in price, so we'd want to pick the region that currently offers the best pricing. The difference could easily offset to cost of the replicated data. - -The challenge is reproducibility - Say we have an ML training job that reads image files from a path in the object store. Which files existed at the time of training? - -If data is constantly flowing between regions, this might be harder to answer than we think. And even if we know - how can we recreate that exact state if we want to run the process again (for example, to rebuild that model for troubleshooting). - -Using consistent commits solves this problem - with lakeFS Transactional Mirroring, it is guaranteed that a commit ID, regardless of location, will always contain the exact same data. - -We can train our model in region A, and a month later feed the same commit ID into another region - and get back the same results. - - -## Architecture Overview - -At minimum, Transactional Mirroring involves two lakeFS Enterprise installations, each in a different region or location, connected by a **replication service** that runs alongside each installation: - -1. **Source lakeFS** - The primary installation where data is written. -2. **Destination lakeFS** - The installation hosting read-only mirror repositories. -3. **Replication Service** - A sidecar service deployed alongside each lakeFS installation. It monitors source repositories, synchronizes commit metadata, and promotes branches on the destination once all data is available. Only branches are replicated; tags are not mirrored. -4. **Object Store Replication** - The underlying object store (e.g., S3) must be configured to replicate objects between the source and destination buckets. lakeFS does not copy object data itself. -5. **Mirrors Database** - A shared database (e.g., DynamoDB global table) that all replication services use to coordinate mirror state. - -!!! note "Multi-region topologies" - The architecture is not limited to two regions. A source repository can be mirrored to multiple destinations (one-to-many), and each installation can participate in multiple mirroring relationships. Simply add additional `dst_endpoints` entries and configure object store replication for each destination. - -## Setting up Transactional Mirroring - -### Prerequisites - -1. Two or more [lakeFS Enterprise](../enterprise/index.md) installations, each in a different region/location. -1. A valid lakeFS Enterprise license with the **Transactional Mirroring** capability. See [License Configuration](../enterprise/getstarted/install.md#lakefs-enterprise-license). -1. Object store replication configured between source and destination buckets (see [below](#configuring-object-store-replication)). -1. A shared database accessible from all regions for mirror coordination (e.g., a DynamoDB global table). -1. Network connectivity: the replication service in each region requires HTTP access to the lakeFS API endpoint in the other regions. - -### Configuring object store replication - -The objects within the repository are copied using your cloud provider's object store replication mechanism. - -=== "AWS S3" - - Refer to the [AWS S3 replication documentation](https://docs.aws.amazon.com/AmazonS3/latest/userguide/replication-how-setup.html) to configure replication from the source lakeFS repository's [storage namespace](../understand/glossary.md#storage-namespace) to the destination bucket. - - After setting the replication rule, new objects will be replicated to the destination bucket. - - To replicate existing objects, use [S3 batch replication](https://docs.aws.amazon.com/AmazonS3/latest/userguide/s3-batch-replication-batch.html). - - !!! tip - For bidirectional mirroring (each region acts as source for some repositories), configure replication rules in both directions. - -=== "Other object stores" - - Configure your object store's native replication mechanism to replicate objects from the source storage namespace to the destination bucket. The specific steps depend on your cloud provider. - - -### Creating a lakeFS user with a "replicator" policy - -On **each** lakeFS installation, under **Administration** create a new user that will be used by the replication service. -The user should have the following [RBAC policy](../security/rbac.md) attached: - -```json -{ - "id": "ReplicationPolicy", - "statement": [ - { - "action": [ - "fs:ReadRepository", - "fs:CreateRepository", - "fs:UpdateRepository", - "fs:DeleteRepository", - "fs:ListRepositories", - "fs:AttachStorageNamespace", - "fs:ReadObject", - "fs:WriteObject", - "fs:DeleteObject", - "fs:ListObjects", - "fs:CreateCommit", - "fs:ReadCommit", - "fs:ListCommits", - "fs:CreateBranch", - "fs:DeleteBranch", - "fs:RevertBranch", - "fs:ReadBranch", - "fs:ListBranches" - ], - "effect": "allow", - "resource": "*" - } - ] -} -``` - -**Alternatively**, create a policy with a narrower scope, only for a specific repository and/or mirror: - -```json -{ - "id": "ReplicationPolicy", - "statement": [ - { - "action": [ - "fs:ListRepositories" - ], - "effect": "allow", - "resource": "*" - }, - { - "action": [ - "fs:ReadRepository", - "fs:ReadObject", - "fs:ListObjects", - "fs:ReadCommit", - "fs:ListCommits", - "fs:ReadBranch", - "fs:ListBranches" - ], - "effect": "allow", - "resource": "arn:lakefs:fs:::repository/{sourceRepositoryId}" - }, - { - "action": [ - "fs:ReadRepository", - "fs:CreateRepository", - "fs:UpdateRepository", - "fs:DeleteRepository", - "fs:AttachStorageNamespace", - "fs:ReadObject", - "fs:WriteObject", - "fs:DeleteObject", - "fs:ListObjects", - "fs:CreateCommit", - "fs:ReadCommit", - "fs:ListCommits", - "fs:CreateBranch", - "fs:DeleteBranch", - "fs:RevertBranch", - "fs:ReadBranch", - "fs:ListBranches" - ], - "effect": "allow", - "resource": "arn:lakefs:fs:::repository/{mirrorId}" - }, - { - "action": [ - "fs:AttachStorageNamespace" - ], - "effect": "allow", - "resource": "arn:lakefs:fs:::namespace/{DestinationStorageNamespace}" - } - ] -} -``` - -Once a user has been created and the replication policy attached to it, create an access key and secret for the replication service. - -!!! important "Same credentials on all installations" - The replication service authenticates requests across regions using the same lakeFS credentials. The replication user must have **the same access key ID and secret access key** on every lakeFS installation involved in mirroring. - - Use `lakefs create-credentials` to create a user with specific credentials on each installation: - - ```bash - lakefs create-credentials --access-key-id --secret-access-key - ``` - - Run this command against each lakeFS installation to ensure the replication user has identical credentials everywhere. - -### Deploying the Replication Service - -The replication service is deployed alongside each lakeFS Enterprise installation using the [lakeFS Helm chart](https://github.com/treeverse/charts/tree/master/charts/lakefs). It runs as a separate Deployment within the same Helm release and must be deployed in every region participating in mirroring, not just the source. - -#### Mirrors database - -The replication service requires a shared database to coordinate mirror state between regions. This database must be accessible from both regions. It supports the same database types as lakeFS (see [database configuration](../reference/configuration.md#database)). The table/schema is created automatically by the replication service on startup if it doesn't already exist. - -=== "DynamoDB" - - Provide the table name in the `mirrors_database` configuration. The replication service will create the table automatically if it doesn't exist. - - To enable cross-region replication, you must configure the table as a [DynamoDB global table](https://docs.aws.amazon.com/amazondynamodb/latest/developerguide/GlobalTables.html) with a replica in the destination region. This requires enabling [DynamoDB Streams](https://docs.aws.amazon.com/amazondynamodb/latest/developerguide/Streams.html) with `NEW_AND_OLD_IMAGES` view type on the table. - - For cross-account setups, see [DynamoDB multi-account global tables](https://docs.aws.amazon.com/amazondynamodb/latest/developerguide/globaltables-MultiAccount.html). - -=== "PostgreSQL / CockroachDB" - - Provide a PostgreSQL or CockroachDB database that is accessible from both regions. Use the same connection string in the `mirrors_database` configuration on each installation. - -#### Helm chart configuration - -Enable the replication service in your `values.yaml` for **each** lakeFS installation: - -```yaml -replication: - enabled: true - image: - repository: treeverse/replication - tag: - serviceAccountName: - extraEnvVarsSecret: # K8s secret containing replication credentials - config: - # Identifier for the region where this lakeFS installation runs - region: "us-east-1" - - # Organization identifiers - organization_id: "my-org" - - # The lakeFS endpoint in this region (accessible from within the cluster) - regional_endpoint: "http://lakefs.default.svc.cluster.local:80" - - # lakeFS endpoints in other regions that this installation mirrors to/from - dst_endpoints: - us-west-2: "https://lakefs-west.example.com" - - # Mirror coordination database (must be shared between all regions) - mirrors_database: - type: dynamodb - dynamodb: - table_name: lakefs-replication-table - aws_region: us-east-1 - - # Block storage configuration (must match the lakeFS blockstore config) - blockstore: - type: s3 - s3: - region: us-east-1 - - auth: - encrypt: - # Must match the auth.encrypt.secret_key used by the lakeFS installation - secret_key: "" - - logging: - level: INFO - format: json -``` - -!!! note - The `refstore_database` (used for replication metadata) is automatically populated from the lakeFS `database` configuration. You do not need to set it unless you want to use a separate database. - -#### Replication credentials secret - -Create a Kubernetes secret containing the replication user credentials and the auth encryption key: - -```bash -kubectl create secret generic replication-secrets \ - --from-literal=source_lakefs_access_key_id= \ - --from-literal=source_lakefs_secret_access_key= \ - --from-literal=auth_encrypt_secret_key= -``` - -Where: - -* `ACCESS_KEY_ID` & `SECRET_ACCESS_KEY` - Credentials for the replication user created in the [previous step](#creating-a-lakefs-user-with-a-replicator-policy). -* `AUTH_ENCRYPT_SECRET_KEY` - Must be the same `auth.encrypt.secret_key` configured for the lakeFS installation. This is required for the replication service to authenticate requests. - -Then reference the secret in your Helm values: - -```yaml -replication: - extraEnvVarsSecret: replication-secrets -``` - -#### Example: Two-region setup on AWS - -Below is a complete example for a two-region setup with lakeFS in `us-east-1` (source) and `us-west-2` (destination). - -**Source region (`us-east-1`) replication config:** - -```yaml -replication: - enabled: true - config: - region: "us-east-1" - organization_id: "my-org" - regional_endpoint: "http://lakefs-source.mirroring.svc.cluster.local:80" - dst_endpoints: - us-west-2: "http://lakefs-dest-internal.example.com:80" - mirrors_database: - type: dynamodb - dynamodb: - table_name: my-replication-table - aws_region: us-east-1 - blockstore: - type: s3 - s3: - region: us-east-1 - auth: - encrypt: - secret_key: "" - logging: - level: INFO -``` - -**Destination region (`us-west-2`) replication config:** - -```yaml -replication: - enabled: true - config: - region: "us-west-2" - organization_id: "my-org" - regional_endpoint: "http://lakefs-dest.mirroring.svc.cluster.local:80" - dst_endpoints: - us-east-1: "http://lakefs-source-internal.example.com:80" - mirrors_database: - type: dynamodb - dynamodb: - table_name: my-replication-table - aws_region: us-west-2 - blockstore: - type: s3 - s3: - region: us-west-2 - auth: - encrypt: - secret_key: "" - logging: - level: INFO -``` - -!!! important - Both installations must use the **same** `organization_id` and the **same** `auth.encrypt.secret_key`. The `mirrors_database` table must be a global/shared table accessible from both regions. - -### Creating a mirror - -Once both lakeFS installations and their replication services are running, create a mirror by calling the replication API on the **source** region's replication service. This call only needs to be made once - the destination replication service will automatically detect the new mirror and create the repository on the destination. - -```bash -curl '/service/replication/v1/repositories//mirrors' \ ---header 'Content-Type: application/json' \ --u : \ --X POST \ ---data '{ - "name": "", - "region": "", - "storage_namespace": "" -}' -``` -Using the following parameters: - -* `REPLICATION_ENDPOINT` - The URL of the replication service in the source region -* `SOURCE_REPO` - Name of the repository acting as the replication source. It should exist on the source installation -* `ACCESS_KEY_ID` & `SECRET_ACCESS_KEY` - Credentials for your lakeFS replication user (make sure you have the necessary RBAC permissions as [listed below](#rbac)) -* `MIRROR_NAME` - Name used for the read-only mirror to be created on the destination -* `DESTINATION_REGION` - The region identifier of the destination (must match the `region` configured in the destination's replication service) -* `MIRROR_STORAGE_NAMESPACE` - The storage namespace on the destination bucket where replicated data is stored - -### Transactional Mirroring and Garbage Collection - -Garbage collection won't run on mirrored repositories. -Deletions from garbage collection should be replicated from the source: - -1. Enable [DELETED marker replication](https://docs.aws.amazon.com/AmazonS3/latest/userguide/delete-marker-replication.html) on the source bucket. -1. Create a [lifecycle policy](https://docs.aws.amazon.com/AmazonS3/latest/userguide/object-lifecycle-mgmt.html) on the destination bucket to delete the objects with the DELETED marker. - -## RBAC - -These are the required RBAC permissions for working with Transactional Mirroring: - -Creating a Mirror: - -| Action | ARN | -|----------------------------|-----------------------------------------------| -| `fs:CreateRepository` | `arn:lakefs:fs:::repository/{mirrorId}` | -| `fs:MirrorRepository` | `arn:lakefs:fs:::repository/{sourceRepositoryId}` | -| `fs:AttachStorageNamespace` | `arn:lakefs:fs:::namespace/{storageNamespace}`| - -Editing Mirrored Branches: - -| Action | ARN | -|-------------------------|-----------------------------------------------| -| `fs:MirrorRepository` | `arn:lakefs:fs:::repository/{sourceRepositoryId}` | - -Deleting a Mirror: - -| Action | ARN | -|----------------------|-----------------------------------------| -| `fs:DeleteRepository`| `arn:lakefs:fs:::repository/{mirrorId}` | - -Listing/Getting Mirrors for a Repository: - -| Action | ARN | -|-----------------------|-----| -| `fs:ListRepositories` | `*` | - - -## Other replication operations - -### Listing all mirrors for a repository - -```bash -curl '/service/replication/v1/repositories//mirrors' \ --u : -s -``` - -### Getting a specific mirror - -```bash -curl '/service/replication/v1/repositories//mirrors/' \ --u : -s -``` - -### Deleting a specific mirror - -```bash -curl -X DELETE '/service/replication/v1/repositories//mirrors/' \ --u : -``` - -## Configuration Reference - -The replication service is configured via the Helm chart values under `replication.*`. All fields below are set in your `values.yaml`. - -!!! note - Simple configuration values can also be set via environment variables with the `REPLICATION_` prefix (e.g., `REPLICATION_REGION=us-east-1`). Map fields like `dst_endpoints` must be set via the config file. Sensitive values like credentials should be provided via a Kubernetes Secret referenced by `replication.extraEnvVarsSecret`. - -### Helm chart values - -| Field | Default | Description | -|-------|---------|-------------| -| `replication.enabled` | `false` | Set to `true` to enable the replication service deployment | -| `replication.image.repository` | `treeverse/replication` | Docker image repository | -| `replication.image.tag` | `0.1.17` | Docker image tag | -| `replication.image.pullPolicy` | `IfNotPresent` | Image pull policy | -| `replication.port` | `8008` | Service port | -| `replication.serviceAccountName` | `""` | Kubernetes service account for the replication pod. See [Service account and cloud permissions](#service-account-and-cloud-permissions) | -| `replication.extraEnvVarsSecret` | | Name of a Kubernetes Secret containing sensitive configuration. When set, the following keys are injected as environment variables: `source_lakefs_access_key_id`, `source_lakefs_secret_access_key`, `auth_encrypt_secret_key` | -| `replication.extraEnvVars` | `[]` | Additional environment variables for the replication pod | -| `replication.resources` | `{}` | Kubernetes resource requests/limits | -| `replication.podAnnotations` | `{}` | Additional pod annotations | -| `replication.local_cache.base_dir` | `/cache` | Local cache directory path | -| `replication.local_cache.size_bytes` | `512000000` | Local cache size in bytes | - -#### Service account and cloud permissions - -When the replication service needs access to cloud resources (e.g., DynamoDB, S3), use a Kubernetes service account with the appropriate annotations to grant permissions. On AWS, this is done using [IAM Roles for Service Accounts (IRSA)](https://docs.aws.amazon.com/eks/latest/userguide/iam-roles-for-service-accounts.html). For detailed instructions on setting up the IAM role, see the [lakeFS deployment guide](../howto/deploy/aws.md). - -Example service account: - -```yaml -apiVersion: v1 -kind: ServiceAccount -metadata: - name: replication-sa - annotations: - eks.amazonaws.com/role-arn: arn:aws:iam:::role/ -``` - -Then set `replication.serviceAccountName: replication-sa` in the Helm values. - -### Replication service config (`replication.config`) - -#### Required fields - -| Field | Description | -|-------|-------------| -| `region` | Region identifier for this lakeFS installation (e.g., `us-east-1`) | -| `organization_id` | Organization identifier, used internally as a partition key in the mirrors database. For on-prem deployments, use any consistent string (e.g., your company name). Must be the same across all installations | -| `regional_endpoint` | URL of the lakeFS API in this region (e.g., `http://lakefs.default.svc.cluster.local:80`) | -| `dst_endpoints` | Map of region identifier to lakeFS URL for each remote region | -| `mirrors_database` | Database configuration for mirror coordination (DynamoDB, PostgreSQL, or CockroachDB). Must be shared across all regions. See [Mirrors database](#mirrors-database) | -| `blockstore` | Block storage configuration. Must match the lakeFS blockstore config | -| `lakefs_access_key_id` | Access key ID for the replication lakeFS user. Can also be provided via `extraEnvVarsSecret` (recommended) | -| `lakefs_secret_access_key` | Secret access key for the replication lakeFS user. Can also be provided via `extraEnvVarsSecret` (recommended) | -| `auth.encrypt.secret_key` | Encryption secret key. Must match the lakeFS `auth.encrypt.secret_key`. Can also be provided via `extraEnvVarsSecret` (recommended) | - -#### Optional fields - -| Field | Default | Description | -|-------|---------|-------------| -| `organization_name` | | Organization name. Only used to auto-construct `regional_endpoint` for lakeFS Cloud. Not needed when `regional_endpoint` is set | -| `listen_address` | `0.0.0.0:8008` | HTTP listen address for the replication service API | -| `refstore_database` | | Database for replication metadata (commits, ranges, metaranges). When deployed via the Helm chart, this defaults to the lakeFS `database` configuration if not explicitly set. When running outside the Helm chart, this field is required | -| `list_mirrors_page_size` | `1000` | Page size when listing mirrors | -| `list_repositories_page_size` | `1000` | Page size when listing repositories | -| `logging.level` | `INFO` | Log level (`DEBUG`, `INFO`, `WARN`, `ERROR`) | -| `logging.format` | `text` | Log format (`text`, `json`) | - -#### Committed metadata - -Configuration for committed metadata (ranges and metaranges). - -| Field | Default | Description | -|-------|---------|-------------| -| `committed.local_cache.size_bytes` | `1073741824` (1 GiB) | Local cache size in bytes | -| `committed.local_cache.dir` | | Cache directory path | -| `committed.local_cache.range_proportion` | `0.9` | Proportion of cache allocated to ranges | -| `committed.local_cache.metarange_proportion` | `0.1` | Proportion of cache allocated to metaranges | -| `committed.metadata_prefix` | `_lakefs/` | Prefix used by lakeFS for metadata files in the storage namespace. Must match `committed.block_storage_prefix` in lakeFS | - -#### Commit sensor - -Controls how the service detects and synchronizes new commits from source to destination. - -| Field | Default | Description | -|-------|---------|-------------| -| `commit_sensor.process_branches_duration` | `1m` | How often to scan for branch changes | -| `commit_sensor.branches_scanner_concurrency_limit` | `10` | Number of concurrent branch scanning workers | -| `commit_sensor.list_branch_page_size` | `1000` | Page size when listing branches | -| `commit_sensor.log_commit_page_size` | `1000` | Page size when fetching commit logs | - -#### Mirrors manager - -Controls how the service reconciles mirror state (creates/deletes mirror repositories). - -| Field | Default | Description | -|-------|---------|-------------| -| `mirrors_manager.process_mirrors_interval_duration` | `20s` | Interval between mirror reconciliation runs | - -#### Validator - -Controls how the service validates that all metadata for promoted commits exists in block storage before advancing the mirror. - -| Field | Default | Description | -|-------|---------|-------------| -| `validator.run_interval` | `1m` | Interval between validation runs | -| `validator.num_workers` | `3` | Number of concurrent metarange validation workers | -| `validator.cooldown_on_missing` | `1m` | Cooldown before retrying validation of a missing metarange | -| `validator.cooldown_on_error` | `1m` | Cooldown before retrying validation after an error | -| `validator.metarange_presence_cache.size` | `5000` | Number of metarange presence results to cache | -| `validator.metarange_presence_cache.expiry` | `1440h` (60 days) | Metarange cache entry expiry | -| `validator.metarange_presence_cache.cooldown` | `30s` | Cooldown before retrying a missing metarange in cache | -| `validator.range_presence_cache.size` | `500000` | Number of range presence results to cache | -| `validator.range_presence_cache.expiry` | `1440h` (60 days) | Range cache entry expiry | -| `validator.range_presence_cache.cooldown` | `10s` | Cooldown before retrying a missing range in cache | -| `validator.object_presence_cache.size` | `5000000` | Number of object presence results to cache | -| `validator.object_presence_cache.expiry` | `24h` | Object cache entry expiry | -| `validator.object_presence_cache.cooldown` | `5s` | Cooldown before retrying a missing object in cache | -| `validator.storage_namespace_cache.size` | `1000` | Number of repository-to-storage-namespace mappings to cache | -| `validator.storage_namespace_cache.expiry` | `17s` | Storage namespace cache entry expiry | - -#### Auth - -| Field | Default | Description | -|-------|---------|-------------| -| `auth.encrypt.secret_key` | _(required)_ | Encryption key for stored credentials. Must match the lakeFS installation. Can also be provided via `extraEnvVarsSecret` (recommended) | -| `auth.cache.enabled` | `false` | Enable auth response caching | -| `auth.cache.size` | | Number of cached auth entries | -| `auth.cache.ttl` | | Cache entry time-to-live | -| `auth.cache.jitter` | | Random jitter added to cache TTL to prevent thundering herd | - -## Limitations - -1. Transactional Mirroring is currently only supported on [AWS S3](https://aws.amazon.com/s3/) -1. Read-only mirrors cannot be written to. Transactional Mirroring is one-way, from source to destination(s) -1. Currently, only branches are mirrored. Tags and arbitrary commits that do not belong to any branch are not replicated -1. [lakeFS Hooks](./hooks/index.md) will only run on the source repository, not its replicas -1. Replication is asynchronous: reading from a branch will always return a valid commit that the source has pointed to, but it is not guaranteed to be the **latest commit** the source branch is pointing to diff --git a/docs/src/howto/multiple-storage-backends.md b/docs/src/howto/multiple-storage-backends.md deleted file mode 100644 index e87b0e75875..00000000000 --- a/docs/src/howto/multiple-storage-backends.md +++ /dev/null @@ -1,395 +0,0 @@ ---- -title: Multiple Storage Backend -description: How to manage data across multiple storage systems with lakeFS -status: enterprise ---- - -# Multiple Storage Backends - -!!! info - Multi-storage backend support is only available to licensed [lakeFS Enterprise](../enterprise/index.md) customers. - [Contact us](https://info.lakefs.io/thanks-msb) to get started! - -## What is Multiple storage Backend Support? - -lakeFS multiple storage backend support enables seamless data management across multiple storage systems — -on-premises, across public clouds, or hybrid environments. This capability makes lakeFS a unified data management platform -for all organizational data assets, which is especially critical in AI/ML environments that rely on diverse datasets stored -in multiple locations. - -With a multiple-store setup, lakeFS can connect to and manage any combination of supported storage systems, including: - -* AWS S3 -* Azure Blob -* Google Cloud Storage -* other S3-compatible storage -* local storage - -!!! note - Multi-storage backends support is available from version **1.51.0** of lakeFS Enterprise. - -## Use Cases - -1. **Distributed Data Management**: - * Eliminate data silos and enable seamless cross-cloud collaboration. - * Maintain version control across different storage providers for consistency and reproducibility. - * Ideal for AI/ML environments where datasets are distributed across multiple storage locations. -2. **Unified Data Access**: - * Access data across multiple storage backends using a single, consistent [URI format](../understand/model.md#lakefs-protocol-uris). -3. **Centralized Access Control & Governance**: - * Access permissions and policies can be centrally managed across all connected storage systems using lakeFS [RBAC](../security/rbac.md). - * Compliance and security controls remain consistent, regardless of where the data is stored. - -## Configuration - -To configure your lakeFS server to connect to multiple storage backends, define them under the `blockstores` section in your server configurations. -The `blockstores.stores` field is an array of storage backends, each with its own configuration. - -For a complete list of available options, refer to the [server configuration reference](../reference/configuration.md#blockstores). - -!!! note - If you're upgrading from a single-store lakeFS setup, refer to the [upgrade guidelines](#upgrading-from-a-single-storage-backend-to-multiple-storage-backends) - to ensure a smooth transition. - -### Example Configurations - -=== "On-Prem" - This example setup configures lakeFS to manage data across two separate MinIO instances: - - !!! example - ```yaml - blockstores: - signing: - secret_key: "some-secret" - stores: - - id: "minio-prod" - description: "Primary on-prem MinIO storage for production data" - type: "s3" - s3: - force_path_style: true - endpoint: 'http://minio-prod.local' - discover_bucket_region: false - credentials: - access_key_id: "prod_access_key" - secret_access_key: "prod_secret_key" - - id: "minio-backup" - description: "Backup MinIO storage for disaster recovery" - type: "s3" - s3: - force_path_style: true - endpoint: 'http://minio-backup.local' - discover_bucket_region: false - credentials: - access_key_id: "backup_access_key" - secret_access_key: "backup_secret_key" - ``` - -=== "Multi-Cloud" - This example setup configures lakeFS to manage data across two public cloud providers: AWS and Azure: - - !!! example - ```yaml - blockstores: - signing: - secret_key: "some-secret" - stores: - - id: "s3-prod" - description: "AWS S3 storage for production data" - type: "s3" - s3: - region: "us-east-1" - - id: "azure-analytics" - description: "Azure Blob storage for analytics data" - type: "azure" - azure: - storage_account: "analytics-account" - storage_access_key: "EXAMPLE45551FSAsVVCXCF" - ``` - -=== "Hybrid" - This hybrid setup allows lakeFS to manage data across both cloud and on-prem storages. - - !!! example - ```yaml - blockstores: - signing: - secret_key: "some-secret" - stores: - - id: "s3-archive" - description: "AWS S3 storage for long-term archival" - type: "s3" - s3: - region: "us-west-2" - - id: "minio-fast-access" - description: "On-prem MinIO for high-performance workloads" - type: "s3" - s3: - force_path_style: true - endpoint: 'http://minio.local' - discover_bucket_region: false - credentials: - access_key_id: "minio_access_key" - secret_access_key: "minio_secret_key" - ``` - -### Key Considerations - -* Unique Blockstore IDs: Each storage must have a unique id. -* Persistence of Blockstore IDs: Once defined, an id must not change. -* S3 Authentication Handling: - * All standard S3 authentication methods are supported. - * Every blockstore needs to be authenticated. So make sure to configure a profile or static credentials for all storages of type `s3`. - S3 storage will use the credentials chain by default, so you might be able to use that for one storage. - -!!! warning - Changing a storage ID is not supported and may result in unexpected behavior. Ensure IDs remain consistent once configured. - -### Upgrading from a single storage backend to Multiple Storage backends - -When upgrading from a single storage backend to a multi-storage setup, follow these guidelines: - -* Use the new `blockstores` structure, **replacing** the existing `blockstore` configuration. Note that `blockstore` and `blockstores` - configurations are mutually exclusive - lakeFS does not support both simultaneously. -* Define all previously available [single-blockstore settings](../reference/configuration.md#blockstore) under their respective storage backends. -* The `signing.secret_key` is a required setting global to all connected stores. -* Set `backward_compatible: true` for the existing storage backend to ensure: - * Existing repositories continue to use the original storage backend. - * Newly created repositories default to this backend unless explicitly assigned a different one, to ensure a non-breaking upgrade process. - * **This setting is mandatory** — lakeFS will not function if it is unset. - * **Do not remove this setting** as long as you need to support repositories created before the upgrade. - If removed, lakeFS will fail to start because it will treat existing repositories as disconnected from any configured storage. - -### Adding or Removing a Storage Backend - -To add a storage backend, update the server configuration with the new storage entry and restart the server. - -To remove a storage backend: - -* Delete all repositories associated with the storage backend. (definition only) -* Remove the storage entry from the configuration. -* Restart the server. - -!!! warning - lakeFS will fail to start if there are repositories defined on a removed storage. Ensure all necessary cleanup is completed before removing a storage backend. - -### Listing Connected Storage Backends - -The [Get Config](../reference/api.md#/config/getConfig) API endpoint returns a list of storage -configurations. In multi-storage setups, this is the recommended method to list connected storage backends and view their details. - -### Troubleshooting - -| Issue | Cause | Solution | -|---------------------------------------------------------------------|-------|----------------------------------------------------------| -| Blockstore ID conflicts | Duplicate `id` values in `stores` | Ensure each storage backend has a unique ID | -| Missing `backward_compatible` | Upgrade from single to multi-storage without setting the flag | Add `backward_compatible: true` for the existing storage | -| Unsupported configurations in OSS or unlicensed Enterprise accounts | Using multi-storage features in an unsupported setup | Contact us to start using the feature | - -### Migrating from Multiple Storage Backend to Single Storage Backend - -Once you upgrade to a multi-storage setup, you cannot simply revert back by changing the configuration from `blockstores` to `blockstore`. The internal repository metadata format changes to support multiple storage backends, and is not backward compatible with the single storage format. If you need to consolidate your data and revert from a multi-storage setup to a single storage backend, you'll need to perform a full migration by following these steps: - -#### Overview - -The migration process involves: - -1. Dumping repository references from the multi-storage setup -2. Deleting repositories in the multi-storage environment -3. Configuring lakeFS with a single storage backend -4. [Optional]: Copying repository data to the new single storage location -5. Restoring repositories to the single storage environment - -#### Step-by-Step Guide - -Use the `lakefs-refs.py` script, instruction on how to aquire found in [Backup and Restore](./backup-and-restore.md#python-helper-script-for-backup-and-restore). - -1. **Dump Repository References** - To dump the repository metadata: - - ```bash - # Dump a single repository - python lakefs-refs.py dump my-repository - - # Or dump all repositories - python lakefs-refs.py dump --all - ``` - - This will create manifest files for each repository. - - Optionally, you can use the `--rm` flag to automatically delete repositories after successful dump: - - ```bash - # Dump and delete a single repository - python lakefs-refs.py dump my-repository --rm - - # Or dump and delete all repositories - python lakefs-refs.py dump --all --rm - ``` - -2. **Delete Source Repositories** (if not using --rm flag) - - If you didn't use the `--rm` flag in step 1, you'll need to delete the repositories manually. Note that deleting a repository only removes the repository record from lakeFS - it does not delete the actual data files or metadata from your storage. - - You can delete repositories through: - - a. The lakeFS UI - b. Using lakectl (ex: `lakectl repo delete lakefs://my-repository`) - -3. **Configure lakeFS Single Storage** - - * Update your lakeFS configuration to use a single storage backend (using the `blockstore` section instead of `blockstores`). - * Start or restart lakeFS after applying the new configuration - - ???+ example "Example of single storage backend configuration" - ```yaml - ... - blockstore: - type: s3 - s3: - region: us-east-1 - ... - ``` - -4. **Copy Repository Data** (if needed) - - If the repositories you want to restore were created on a storage system that lakeFS is no longer connected to: - - a. Copy data from the old storage locations to the new one: - - ```bash - # Example for S3 - aws s3 sync s3://old-bucket/path/to/storge-namespace s3://new-bucket/path/to/storage-namespace - - # Alternative: Using rclone for cross-provider transfers - # rclone supports various storage providers (S3, Azure, GCS, etc.) - rclone sync azure:old-container/path/to/storage-namespace aws:new-bucket/path/to/storage-namespace - ``` - - b. Update the manifest file, created on step 1 (dump repository references) with the new storage namespace: - - ```json - { - "repository": { - "name": "my-repository", - "storage_namespace": "s3://new-bucket/path/to/repo", // ... update here ... - "default_branch": "main", - "storage_id": "storage-1" - }, - "refs": { - // ... existing refs data ... - } - } - ``` - -5. **Restore Repositories** - !!! note - If you copied the data to a new location in step 4, make sure to update the storage namespace in the manifest files before restoring. - - Use the `--ignore-storage-id` flag to ensure repositories are created without storage IDs in the single-storage environment: - - ```bash - # Restore a single repository - python lakefs-refs.py restore my-repository_manifest.json --ignore-storage-id - - # Or restore multiple repositories - python lakefs-refs.py restore repo1_manifest.json repo2_manifest.json --ignore-storage-id - ``` - -!!! note "Important Notes" - - * Keep the manifest files safe as they contain repository metadata - * If using different storage backends, ensure proper access permissions to copy the data - * The `--commit` flag can be used if you want to ensure all changes are committed before dumping - * Make sure the new storage backend has sufficient space for all repository data - * A lakeFS instance configured with a single storage type will not start if repositories created on multiple storage setup still exist - -## Working with Repositories - -After setting up lakeFS Enterprise to connect with multiple storage backends, this section explains how to use these -connected storages when working with lakeFS. - -With multiple storage backends configured, lakeFS repositories are now linked to a specific storage. Together with -the repository's [storage namespace](../understand/model.md#concepts-unique-to-lakefs), this defines the exact location in -the underlying storage where the repository's data is stored. - -The choice of storage backend impacts the following lakeFS operations: - -### Creating a Repository - -In a multi-storage setup, users must specify a storage ID when creating a repository. This can be done using the following methods: - -=== "UI" - Select a storage backend from the dropdown menu. - ![create repo with storage id](../assets/img/msb/msb_create_repo_ui.png) - -=== "CLI" - Use the `--storage-id` flag with the [repo create](../reference/cli.md#lakectl-repo-create) command: - - ```bash - lakectl repo create lakefs://my-repo s3://my-bucket --storage-id my-storage - ``` - - !!! note - The `--storage-id` flag is currently hidden in the CLI. - -=== "API" - Use the `storage_id` parameter in the [Create Repository endpoint](../reference/api.md#/repositories/createRepository). - -=== "High-Level Python SDK" - Starting from version 0.9.0 of the [High-level Python SDK](../integrations/python.md#using-the-lakefs-sdk), - you can use `kwargs` to pass `storage_id` dynamically when calling the [create repository method](https://pydocs-lakefs.lakefs.io/lakefs.repository.html#lakefs.repository.Repository.create): - - ```python - import lakefs - - repo = lakefs.Repository("example-repo").create( - storage_namespace="s3://storage-bucket/repos/example-repo", - storage_id="my-storage-id" - ) - ``` - -!!! warning "Important Notes" - *In multi-storage setups where a storage backend is marked as `backward_compatible: true`, repository creation requests - without a storage ID will default to this storage. - * If no storage backend is marked as `backward_compatible`, repository creation requests without a storage ID will fail. - * Each repository is linked to a single backend and stores data within a single storage namespace on that backend. - -### Viewing Repository Details - -To check which storage backend is associated with a repository: - -=== "UI" - The storage ID is displayed under "Storage" in the repository settings page. - ![repo settings](../assets/img/msb/msb_repo_settings_ui.png) - -=== "API" - Use the [List Repositories](../reference/api.md#/repositories/listRepositories) endpoint. Its response includes the storage ID. - -### Importing Data into a Repository - -Importing data into a repository is supported when the credentials used for the repository's backing blockstore allow -read and list access to the storage location. - -## Limitations - -### Supported storages - -Multi-storage backend support has been validated on: - -* Self-managed S3-compatible object storage (MinIO) -* Amazon S3 -* Local storage - -!!! warning - Other storage backends may work but have not been officially tested. If you're interested in exploring - additional configurations, please reach [contact us](https://info.lakefs.io/thanks-msb). - -### Unsupported clients - -The following clients do not currently support working with multiple storage backends. However, we are actively working -to bridge this gap: - -* [Spark-based GC](../howto/garbage-collection/gc.md) -* [Spark client](../reference/spark-client.md) -* [lakeFS Hadoop FileSystem](../integrations/spark.md#lakefs-hadoop-filesystem) -* [Everest](../reference/mount.md) diff --git a/docs/src/howto/private-link.md b/docs/src/howto/private-link.md deleted file mode 100644 index 08863ad7633..00000000000 --- a/docs/src/howto/private-link.md +++ /dev/null @@ -1,109 +0,0 @@ ---- -title: Private Link -description: Private Link enables lakeFS Cloud to interact with your infrastructure using private networking. -status: enterprise ---- - -# Private Link - -!!! info - PrivateLink is only applicable to **lakeFS Cloud** - -Private Link enables lakeFS Cloud to interact with your infrastructure using private networking. - - -## Supported Vendors - -At the moment, we support Private-Link with **AWS** and **Azure**. If you are looking for Private Link for GCP please [contact us](mailto:support@treeverse.io). - -=== "AWS" - ## Access Methods - - There are two types of Private Link implementation: - - * **Front-End Access** refers to API and UI access. Use this option if you'd like your lakeFS application to be exposed only to your infrastructure and not to the whole internet. - - * **Back-End Access** refers to the network communication between the lakeFS clusters we host, and your infrastructure. Use this option if you'd like lakeFS to communicate with your servers privately and not over the internet. - - The two types of access are not mutually exclusive nor are they dependent on each other. - - ## Setting up Private Link - - ### Front-End Access - - Prerequisites: - - * Administrator access to your AWS account - * In order for us to communicate with your account privately, we'll need to create a service endpoint on our end first. - - Steps: - - 1. Login to your AWS account - 2. Go to AWS VPC Service - 3. Filter the relevant VPC & Navigate to **Endpoints** - 4. Click **Create endpoint** - 5. Fill in the following: - * **Name**: lakefs-cloud - * **Service category**: Other endpoint services - * **Service name**: input from Treeverse team (see prerequisites) - * Click **Verify service** - * Pick the VPC you'd like to expose this service to. - * Click **Create endpoint** - - Now you can access your infrastructure privately using the endpoint DNS name. If you would like to change the DNS name to a friendly one please contact [support@treeverse.io](mailto:support@treeverse.io). - - ### Back-End Access - - Prerequisites: - - * Administrator access to your AWS account - - Steps: - - 1. Login to your AWS account - 2. Go to AWS VPC Service - 3. Filter the relevant VPC & Navigate to **Endpoints** - 4. Click **endpoint service** - 5. Fill in the following: - * **Name**: lakefs-cloud - * **Load Balancer Type**: Network - * **Available load balancers**: pick the load balancer you'd like lakefs-cloud to send events to. - * Click **Create** - 6. Pick the newly created **Endpoint Service** from within the **Endpoint Services** page. - 7. Navigate to the **Allow principals** tab. - 8. Click **Allow principals** - 9. Fill in the following ARN: `arn:aws:iam::924819537486:root` - 10. Click **Allow principals** - - That's it on your end! Now, we'll need the **service name** you've just created in order to associate it with our infrastructure, once we do, we'll be ready to use the back-end access privately. - -=== "Azure" - [Azure Private Link](https://learn.microsoft.com/en-us/azure/private-link/private-link-overview) enables secure access to Azure services from a private endpoint within your virtual network. - By using Azure Private Link with lakeFS, you can securely access lakeFS services without exposing traffic to the public internet. - In this manual, we will guide you through the steps to enable Azure Private Link to your lakeFS instance. - - ## Register your Azure subscription - - To automatically approve private endpoint connections to the lakeFS network, please provide us with your subscription. If required, you can register multiple subscriptions. - - ## Create an Azure Private Link connection to lakeFS Cloud - - Once your subscription is in our trusted subscriptions navigate to the Azure portal and do the following steps: - - 1. Navigate to the private endpoint - 2. Click Create - 3. On the first step (basics): - - Select your subscription - - Specify the desired resource group used to access lakeFS - - Provide a name for your private endpoint instance - - Specify the region of your lakeFS instance - 4. On the second step (Resource) - - In connection method select `connect to an Azure resource by resource ID or alias` - - Insert the alias provided by us into the Resource ID or alias - - No need to add a request message - 5. Continue with the steps and run Review + Create - - ## Create a DNS entry for your private endpoint - - Update your DNS server to resolve your account URL (which will be provided by us) to the Private Link IP address. - You can add the DNS entry to your on-premises DNS server or private DNS on your VNet, to access lakeFS services. diff --git a/docs/src/howto/protect-branches.md b/docs/src/howto/protect-branches.md deleted file mode 100644 index 63bacfc946a..00000000000 --- a/docs/src/howto/protect-branches.md +++ /dev/null @@ -1,53 +0,0 @@ ---- -title: Branch Protection -description: Branch protection rules prevent direct changes from being applied to your important branches. ---- - -# Branch Protection Rules - -Define branch protection rules to prevent direct changes and commits to specific branches. -Only merges are allowed into protected branches. Together with the power of pre-merge [hooks][data-quality-gates], -you can run validations on your data before it reaches your important branches and is exposed to consumers. - -You can create rules for a specific branch or any branch that matches a name pattern you specify with [glob](https://en.wikipedia.org/wiki/Glob_(programming)) syntax (supporting `?` and `*` wildcards). - -## How it works - -When at least one protection rule applies to a branch, the branch is protected. The following operations will fail on protected branches: - -1. Object write operations: **upload** and **delete** objects. -1. Branch operations: **commit** and **reset uncommitted changes**. - -To operate on a protected branch, merge commits from other branches into -it. Use pre-merge [hooks][data-quality-gates] to validate the changes before -they are merged. - -!!! note - Reverting a previous commit using `lakectl branch revert` is **allowed** on a protected branch. - - -## Managing branch protection rules - -This section explains how to use the lakeFS UI to manage rules. You can also use the [command line][lakectl-branch-protect] and [API][api]. - -### Reaching the branch protection rules page - -1. On lakeFS, navigate to the main page of the repository. -2. Click on the _Settings_ tab. -3. In the left menu, click _Branches_. - -### Adding a rule - -To add a new rule, click the _Add_ button. In the dialog, enter the branch name pattern and then click _Create_. - -![Adding a branch protection rule](../assets/img/add_branch_protection_rule.png) - -### Deleting a rule - -To delete a rule, click the _Delete_ button next to it. - -![Deleting a branch protection rule](../assets/img/delete_branch_protection_rule.png) - -[data-quality-gates]: ../understand/use_cases/cicd_for_data.md#using-hooks-as-data-quality-gates -[lakectl-branch-protect]: ../reference/cli.md#lakectl-branch-protect -[api]: ../reference/api.md diff --git a/docs/src/howto/pull-requests.md b/docs/src/howto/pull-requests.md deleted file mode 100644 index 64cd9caccd5..00000000000 --- a/docs/src/howto/pull-requests.md +++ /dev/null @@ -1,45 +0,0 @@ ---- -title: Pull Requests -description: Improve collaboration over data with Pull Requests. ---- - -# Pull Requests - -A pull request is a proposal to merge a set of changes from one branch into another. -In a pull request, collaborators can review the proposed set of changes before they integrate the changes. -Pull requests display the differences, or diffs, between the content in the source branch and the content in the target branch. - -## Open a Pull Request - -Create a branch, and make all the necessary changes in that branch. -When your changes are ready for review, head over to the _Pull Requests_ tab in your repository. -Choose your source branch and target branch, add a title and description (optional, and markdown is supported). - -![Open Pull Request](../assets/img/pull-request-open.png) - -When ready, click _Create Pull Request_. You will be redirected to the newly created pull request page. - -## Review Changes - -Run validation checks or automated data quality tests to ensure that the changes meet your standards. - -![Review Pull Request](../assets/img/pull-request-review.png) - -Every Pull Request is assigned a unique ID. You can share the Pull Request's URL with others to review the change. - -As with any lakeFS reference, reviewers can take the source branch, query, test and modify it as necessary prior to merging. - -## Merge or Close - -Once the review is complete and all checks have passed, click the _Merge pull request_ button to merge the changes into the target branch. - -![Merged Pull Request](../assets/img/pull-request-merged.png) - -The data is now updated in a controlled and transparent manner. - -If the changes are not ready to be merged, you can close the pull request without merging the changes, by clicking the _Close pull request_ button. - -## View Pull Requests - -You can view all open and closed pull requests in the _Pull Requests_ tab in your repository. -The tabs (_Open_, _Closed_) allow you to filter the list of pull requests according to their status. diff --git a/docs/src/howto/scim.md b/docs/src/howto/scim.md deleted file mode 100644 index d0fe5fc7744..00000000000 --- a/docs/src/howto/scim.md +++ /dev/null @@ -1,97 +0,0 @@ ---- -title: System for Cross-domain Identity Management (SCIM) -description: Use SCIM to automatically provision users/groups in lakeFS via your identity provider (IdP) -status: enterprise ---- - -# System for Cross-domain Identity Management (SCIM) - -!!! info - SCIM support is available on **lakeFS Cloud** and **lakeFS Enterprise** - -lakeFS Cloud includes an [SCIM v2.0](https://datatracker.ietf.org/doc/html/rfc7644) compliant server, which can integrate with SCIM clients (IdPs) to automate provisioning/de-provisioning of users and groups. - - -## Officially Supported Clients (IdPs), Capabilities, and Limitations - -### Supported Clients (IdPs) - -Currently, the lakeFS Cloud SCIM server has been tested and validated with [Entra ID](https://www.microsoft.com/en-us/security/business/identity-access/microsoft-entra-id) (a.k.a Azure AD). However, with SCIM v2.0 being an accepted standard, any SCIM-compliant IdP should be able to integrate with lakeFS Cloud. - -### Capabilities - -### User Provisioning - -- **Create users:** Users and members of groups assigned to the application will be provisioned in lakeFS Cloud -- **Update user attributes:** Changes to supported user attributes are synced to lakeFS Cloud -- **Deactivate users:** Deactivating a user or removing their assignment to the application will disable them in lakeFS Cloud -- **User adoption:** Users that are already found in lakeFS Cloud will be "adopted" by the IdP and not re-created - -### Group Provisioning - -- **Create groups:** Groups assigned to the application are created in lakeFS Cloud and any group user members are created and added to the group in lakeFS Cloud -- **Update group name:** When a synced group is renamed in the IdP, it will be renamed in lakeFS Cloud -- **Add/remove members:** When members are added/removed from an assigned group, they will be added/removed from the group in lakeFS Cloud -- **Group adoption:** Groups that already exist in lakeFS Cloud will be "adopted" by the IdP and not re-created - -### User Attributes and Consent - -The lakeFS Cloud SCIM server requires the minimum set of user attributes required for provisioning. The required attributes are a sub-set of the basic user profile, which is exchanged during federated authentication/SSO login. User consent is requested by the IdP upon first login to lakeFS Cloud. - -### Known Limitations - -- User and group policies can only be managed in lakeFS - This means groups and users newly created via SCIM only have basic read permissions. The lakeFS UI or API must be used to attach policies to those users and groups. However, if a user is created and added to an existing group with an attached policy, that user will receive the permissions allowed by the policy attached to the group. -- Only direct group memberships are provisioned via SCIM - Both Okta and Entra ID only support syncing direct group membership via SCIM. This means that if you assign a group to the application, only its user members will be provisioned via SCIM. SCIM provisioning will not cascade to member groups and their members, and so forth. - -## Enabling SCIM in lakeFS Cloud - -To enable SCIM support in lakeFS Cloud, you need to log into the cloud admin. In the cloud admin, SCIM settings are under **Access > Settings**. SCIM is not enabled by default, so to enable SCIM for the organization, click the **Setup Provisioning** Button. - -![lakeFS Cloud SCIM Settings](../assets/img/scim/lakefs_cloud_scim_settings.png) - -Clicking the button will enable SCIM for the organization and provide the details you'll need to set up your IdP to work with lakeFS Cloud SCIM. - -![lakeFS Cloud SCIM Configuration](../assets/img/scim/lakefs_cloud_scim_configuration.png) - -To set up your IdP, you'll need the lakeFS Cloud SCIM provisioning endpoint and you'll also need to generate an integration token. When creating a new integration token, you can optionally provide a description for future reference. - -!!! info - The token value is only presented once, right after creation. Make sure to copy the token, as its value isn't stored and cannot be retrieved after the initial creation. - -## Setting Up SCIM Provisioning in Entra ID (a.k.a Azure AD) - -!!! note - This guide assumes you've already set up an Entra ID enterprise application for federated authentication to lakeFS Cloud. - -In the Entra ID admin dashboard, go to **Enterprise Applications** and choose the lakeFS Cloud enterprise application from the list. Then click **Provisioning** in the sidebar and then **Get Started**. - -1. In the provisioning settings set mode to **Automatic** -2. In **Tenant URL** enter the URL from the lakeFS Cloud provisioning settings. You will need to append `?aadOptscim062020` to the end of the URL to ensure proper integration with Entra ID. -3. In **Secret Token** paste the token you copied in the previous step. If you haven't created a token yet, you may do so now -4. Click **Test Connection** -5. If the test fails, please ensure you've entered the correct SCIM endpoint URL from lakeFS Cloud and copied the token correctly. Otherwise, click "Save" at the top of the settings panel -6. Configure provisioning attribute mappings(this determines which attributes are sent to the lakeFS SCIM endpoint) - -## Required Attributes -The LakeFS SCIM implementation has a number of attributes that it expects to see in requests. Missing, incorrect, or extraneous attributes will generally result in a 400 error code. - -### User Resource Attributes - * username: Unique identifier for the User, typically used by the user to directly authenticate to the service provider. Each User MUST include a non-empty userName value. This identifier MUST be unique across the service provider's entire set of Users. REQUIRED. - * externalId: A String that is an identifier for the resource as defined by the provisioning client. REQUIRED. - * emails: Email addresses for the user. The value SHOULD be canonicalized by the service provider, e.g., 'bjensen@example.com' instead of 'bjensen@EXAMPLE.COM'. Canonical type values of 'work', 'home', and 'other'. One should be marked as primary. REQUIRED. - * active: A Boolean value indicating the User's administrative status. - -### Group Resource Attributes - * displayName: A human-readable name for the Group. REQUIRED. - * externalId: A String that is an identifier for the resource as defined by the provisioning client. REQUIRED. - * members: A list of members of the Group. - - -!!! info - lakeFS Cloud is designed to work with the default attribute mapping for users and groups provided by Entra ID. - If your organization has customized the user and/or group entities in Entra ID, you might want to set mappings in accordance with those. - You can find details of how this is done in the [Entra ID documentation](https://learn.microsoft.com/en-us/entra/identity/app-provisioning/customize-application-attributes). - - Incorrectly modifying these mappings can break provisioning functionality, so it's advised to do so cautiously and only when necessary. diff --git a/docs/src/howto/sizing-guide.md b/docs/src/howto/sizing-guide.md deleted file mode 100644 index ff578483ea4..00000000000 --- a/docs/src/howto/sizing-guide.md +++ /dev/null @@ -1,578 +0,0 @@ ---- -title: Sizing Guide -description: This section provides a detailed sizing guide for deploying lakeFS. ---- -# Sizing guide - -!!! info - For a scalable managed lakeFS service with guaranteed SLAs, try [lakeFS Cloud](https://lakefs.cloud) - -## System Requirements - -### Operating Systems and ISA - -lakeFS can run on MacOS and Linux. Windows binaries are available but not rigorously tested - -we don't recommend deploying lakeFS to production on Windows. -x86_64 and arm64 architectures are supported for both MacOS and Linux. - -### Memory and CPU requirements - -lakeFS servers require a minimum of 512mb of RAM and 1 CPU core. -For high throughput, additional CPUs help scale requests across different cores. -"Expensive" operations such as large diff or commit operations can take advantage of multiple cores. - -### Network - -If using the data APIs such as the [S3 Gateway][s3-gateway], -lakeFS will require enough network bandwidth to support the planned concurrent network upload/download operations. -For most cloud providers, more powerful machines (i.e., more expensive and usually containing more CPU cores) also provide increased network bandwidth. - -If using only the metadata APIs (for example, only using the Hadoop/Spark clients), network bandwidth is minimal, -at roughly 1Kb per request. - -### Disk - -lakeFS greatly benefits from fast local disks. -A lakeFS instance doesn't require any strong durability guarantees from the underlying storage, -as the disk is only ever used as a local caching layer for lakeFS metadata and not for long-term storage. -lakeFS is designed to work with [ephemeral disks](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/ssd-instance-store.html){: target="_blank" } - -these are usually based on NVMe and are tied to the machine's lifecycle. -Using ephemeral disks lakeFS can provide a very high throughput/cost ratio, -probably the best that could be achieved on a public cloud, so we recommend those. - -A local cache of at least 512 MiB should be provided. -For large installations (managing >100 concurrently active branches, with >100M objects per commit), -we recommend allocating at least 10 GiB - since it's a caching layer over a relatively slow storage (the object store), -see [Important metrics](#important-metrics) below to understand how to size this: it should be big enough to hold all commit metadata for actively referenced commits. - - -### lakeFS KV Store - -lakeFS uses a key-value database to manage branch references, authentication and authorization information -and to keep track of currently uncommitted data across branches. -Please refer to the relevant driver tab for best practices, requirements and benchmarks. - -#### Storage - -The dataset stored in the metadata store is relatively modest as most metadata is pushed down into the object store. -Required storage is mostly a factor of the amount of uncommitted writes across all branches at any given point in time: -in the range of 150 MiB per every 100,000 uncommitted writes. - -We recommend starting at 10 GiB for a production deployment, as it will likely be more than enough. - -=== "PostgreSQL" - **RAM** - Since the data size is small, it's recommended to provide enough memory to hold the vast majority of that data in RAM. - Cloud providers will save you the need to tune this parameter - it will be set to a fixed percentage the chosen instance's available RAM (25% on AWS RDS, 30% on Google Cloud SQL). - It is recommended that you check with your selected cloud provider for configuration and provisioning information for you database. - For self-managed database instances follow these best practices - - Ideally, configure the [shared_buffers](https://www.postgresql.org/docs/current/runtime-config-resource.html#GUC-SHARED-BUFFERS){: target="_blank" } - of your PostgreSQL instances to be large enough to contain the currently active dataset. - Pick a database instance with enough RAM to accommodate this buffer size at roughly x4 the size given for `shared_buffers`. For example, if an installation has ~500,000 uncommitted writes at any given time, it would require about 750 MiB of `shared_buffers` - that would require about 3 GiB of RAM. - - **CPU** - PostgreSQL CPU cores help scale concurrent requests. 1 CPU core for every 5,000 requests/second is ideal. - -=== "DynamoDB" - lakeFS will create a DynamoDB table for you, defaults to on-demand capacity setting. No need to specify how much read and write throughput you expect your application to perform, as DynamoDB instantly accommodates your workloads as they ramp up or down. - - You can customize the table settings to provisioned capacity which allows you to manage and optimize your costs by allocating read/write capacity in advance (see [Benchmarks](#benchmarks)) - - !!! note "Notes" - * Using DynamoDB on-demand capacity might generate unwanted costs if the table is abused, if you'd like to cap your costs, make sure to change the table to use provisioned capacity instead. - * lakeFS doesn't manage the DynamoDB's table lifecycle, we've included the table creation in order to help evaluating the system with minimal effort, any change to the table beyond the table creation - will need to be handled manually or by 3rd party tools. - - **RAM** - Managed by AWS. - - **CPU** - Managed by AWS. - -## Scaling factors - -Scaling lakeFS, like most data systems, moves across two axes: throughput of requests (amount per given timeframe) and latency (time to complete a single request). - -### Understanding latency and throughput considerations - -Most lakeFS operations are designed to be very low in latency. -Assuming a well-tuned local disk cache (see [Storage](#storage) above), -most critical path operations -(writing objects, requesting objects, deleting objects) are designed to complete in **<25ms at p90**. -Listing objects obviously requires accessing more data, but should always be on-par with what the underlying object store can provide, -and in most cases, it's actually faster. -At the worst case, for directory listing with 1,000 common prefixes returned, expect a latency of **75ms at p90**. - -Managing branches (creating them, listing them and deleting them) are all constant-time operations, generally taking **<30ms at p90**. - -Committing and merging can take longer, as they are proportional to the amount of **changes** introduced. -This is what makes lakeFS optimal for large Data Lakes - -the amount of changes introduced per commit usually stays relatively stable while the entire data set usually grows over time. -This means lakeFS will provide predictable performance: -committing 100 changes will take roughly the same amount of time whether the resulting commit contains 500 or 500 million objects. - -See [Data Model](../understand/how/versioning-internals.md) for more information. - -Scaling throughput depends very much on the amount of CPU cores available to lakeFS. -In many cases, it's easier to scale lakeFS across a fleet of smaller cloud instances (or containers) -than scale up with machines that have many cores. In fact, lakeFS works well in both cases. -Most critical path operations scale very well across machines. - -## Benchmarks - - - -=== "PostgresSQL" - All benchmarks below were measured using 2 x [c5ad.4xlarge](https://aws.amazon.com/ec2/instance-types/c5/){: target="_blank" } instances - on [AWS us-east-1](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/using-regions-availability-zones.html#concepts-available-regions). - Similar results can be achieved on Google Cloud using a `c2-standard-16` machine type, with an attached [local SSD](https://cloud.google.com/compute/docs/disks/local-ssd). - On Azure, you can use a `Standard_F16s_v2` virtual machine. - - The PostgreSQL instance that was used is a [db.m6g.2xlarge](https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/Concepts.DBInstanceClass.html){: target="_blank" } - (8 vCPUs, 32 GB RAM). Equivalent machines on Google Cloud or Azure should yield similar results. - - The example repository we tested against contains the metadata of a large lakeFS installation, - where each commit contains **~180,000,000** objects (representing ~7.5 Petabytes of data). - - All tests are reproducible using the [lakectl abuse command][lakectl-abuse], - so use it to properly size and tune your setup. All tests are accompanied by the relevant `lakectl abuse` command that generated them. - - ### Random reads - - This test generates random read requests to lakeFS, - in a given commit. Paths are requested randomly from a file containing a set of preconfigured (and existing) paths. - - - **command executed:** - - ```shell - lakectl abuse random-read \ - --from-file randomly_selected_paths.txt \ - --amount 500000 \ - --parallelism 128 \ - lakefs://example-repo/ - ``` - - **Note** lakeFS version <= v0.33.1 uses '@' (instead of '/') as separator between repository and commit hash. - - **Result Histogram (raw):** - - ``` - Histogram (ms): - 1 0 - 2 0 - 5 37945 - 7 179727 - 10 296964 - 15 399682 - 25 477502 - 50 499625 - 75 499998 - 100 499998 - 250 500000 - 350 500000 - 500 500000 - 750 500000 - 1000 500000 - 5000 500000 - min 3 - max 222 - total 500000 - ``` - - So 50% of all requests took <10ms, while 99.9% of them took <50ms - - **throughput:** - - Average throughput during the experiment was **10851.69 requests/second** - - ### Random Writes - - This test generates random write requests to a given lakeFS branch. - All the paths are pre-generated and don't overwrite each other (as overwrites are relatively rare in a Data Lake setup). - - **command executed:** - - ```shell - lakectl abuse random-write \ - --amount 500000 \ - --parallelism 64 \ - lakefs://example-repo/main - ``` - - **Note** lakeFS version <= v0.33.1 uses '@' (instead of '/') as separator between repository and branch. - - - **Result Histogram (raw):** - - ``` - Histogram (ms): - 1 0 - 2 0 - 5 30715 - 7 219647 - 10 455807 - 15 498144 - 25 499535 - 50 499742 - 75 499784 - 100 499802 - 250 500000 - 350 500000 - 500 500000 - 750 500000 - 1000 500000 - 5000 500000 - min 3 - max 233 - total 500000 - ``` - - So, 50% of all requests took <10ms, while 99.9% of them took <25ms. - - **throughput:** - - The average throughput during the experiment was **7595.46 requests/second**. - - ### Branch creation - - This test creates branches from a given reference. - - **command executed:** - - ```shell - lakectl abuse create-branches \ - --amount 500000 \ - --branch-prefix "benchmark-" \ - --parallelism 256 \ - lakefs://example-repo/ - ``` - - **Note** lakeFS version <= v0.33.1 uses '@' (instead of '/') as separator between repository and commit hash. - - **Result Histogram (raw):** - - ``` - Histogram (ms): - 1 0 - 2 1 - 5 5901 - 7 39835 - 10 135863 - 15 270201 - 25 399895 - 50 484932 - 75 497180 - 100 499303 - 250 499996 - 350 500000 - 500 500000 - 750 500000 - 1000 500000 - 5000 500000 - min 2 - max 304 - total 500000 - ``` - - So, 50% of all requests took <15ms, while 99.9% of them took <100ms. - - **throughput:** - - The average throughput during the experiment was **7069.03 requests/second**. - -=== "DynamoDB" - All benchmarks below were measured using m5.xlarge instance on AWS us-east-1. - - The DynamoDB table that was used was provisioned with 500/1000 read/write capacity. - - The example repository we tested against contains the metadata of a large lakeFS installation, where each commit contains ~100,000,000 objects (representing ~3.5 Petabytes of data). - - All tests are reproducible using the lakectl abuse command, so use it to properly size and tune your setup. All tests are accompanied by the relevant lakectl abuse command that generated them. - - ### Random reads - - This test generates random read requests to lakeFS, - in a given commit. Paths are requested randomly from a file containing a set of preconfigured (and existing) paths. - - - **command executed:** - - ```shell - lakectl abuse random-read \ - --from-file randomly_selected_paths.txt \ - --amount 500000 \ - --parallelism 128 \ - lakefs://example-repo/ - ``` - - **Result Histogram (raw): Provisioned read capacity units = 1000 - Provisioned write capacity units = 1000** - - ``` - Histogram (ms): - 1 0 - 2 0 - 5 0 - 7 0 - 10 0 - 15 0 - 25 122 - 50 47364 - 75 344489 - 100 460404 - 250 497912 - 350 498016 - 500 498045 - 750 498111 - 1000 498176 - 5000 499478 - min 18 - max 52272 - total 500000 - ``` - - **Result Histogram (raw): Provisioned read capacity units = 500 - Provisioned write capacity units = 500** - - ``` - Histogram (ms): - 1 0 - 2 0 - 5 0 - 7 0 - 10 0 - 15 1 - 25 2672 - 50 239661 - 75 420171 - 100 470146 - 250 486603 - 350 486715 - 500 486789 - 750 487443 - 1000 488113 - 5000 493201 - min 14 - max 648085 - total 499998 - ``` - - ### Random Writes - - This test generates random write requests to a given lakeFS branch. - All the paths are pre-generated and don't overwrite each other (as overwrites are relatively rare in a Data Lake setup). - - **command executed:** - - ```shell - lakectl abuse random-write \ - --amount 500000 \ - --parallelism 64 \ - lakefs://example-repo/main - ``` - - **Result Histogram (raw): Provisioned read capacity units = 1000 - Provisioned write capacity units = 1000** - - ``` - Histogram (ms): - 1 0 - 2 0 - 5 0 - 7 0 - 10 0 - 15 0 - 25 24 - 50 239852 - 75 458504 - 100 485225 - 250 493687 - 350 493872 - 500 493960 - 750 496239 - 1000 499194 - 5000 500000 - min 23 - max 4437 - total 500000 - ``` - **Result Histogram (raw): Provisioned read capacity units = 500 - Provisioned write capacity units = 500** - - ``` - Histogram (ms): - 1 0 - 2 0 - 5 0 - 7 0 - 10 0 - 15 0 - 25 174 - 50 266460 - 75 462641 - 100 484486 - 250 490633 - 350 490856 - 500 490984 - 750 492973 - 1000 495605 - 5000 498920 - min 21 - max 50157 - total 500000 - ``` - - ### Branch creation - - This test creates branches from a given reference. - - **command executed:** - - ```shell - lakectl abuse create-branches \ - --amount 500000 \ - --branch-prefix "benchmark-" \ - --parallelism 256 \ - lakefs://example-repo/ - ``` - - **Result Histogram (raw): Provisioned read capacity units = 1000 - Provisioned write capacity units = 1000** - - ``` - Histogram (ms): - 1 0 - 2 0 - 5 0 - 7 0 - 10 0 - 15 0 - 25 0 - 50 628 - 75 26153 - 100 58099 - 250 216160 - 350 307078 - 500 406165 - 750 422898 - 1000 431332 - 5000 475848 - min 41 - max 430725 - total 490054 - ``` - - **Result Histogram (raw): Provisioned read capacity units = 500 - Provisioned write capacity units = 500** - - ``` - Histogram (ms): - 1 0 - 2 0 - 5 0 - 7 0 - 10 0 - 15 0 - 25 0 - 50 3132 - 75 155570 - 100 292745 - 250 384224 - 350 397258 - 500 431141 - 750 441360 - 1000 445597 - 5000 469538 - min 39 - max 760626 - total 497520 - ``` - -## Important metrics - -lakeFS exposes metrics using the [Prometheus protocol](https://prometheus.io/docs/introduction/overview/){: target="_blank" }. -Every lakeFS instance exposes a `/metrics` endpoint that could be used to extract them. - -Here are a few notable metrics to keep track of when sizing lakeFS: - -`api_requests_total` - Tracks throughput of API requests over time. - -`api_request_duration_seconds` - Histogram of latency per operation type. - -`gateway_request_duration_seconds` - Histogram of latency per [S3 Gateway][s3-gateway] operation. - -=== "PostgreSQL" - -=== "DynamoDB" - - `dynamo_request_duration_seconds` - Time spent doing DynamoDB requests. - - `dynamo_consumed_capacity_total` - The capacity units consumed by operation. - - `dynamo_failures_total` - The total number of errors while working for kv store. - - -## Reference architectures - -Below are a **few example architectures for lakeFS deployment.** - -### Reference Architecture: Data Science/Research environment - -**Use case:** Manage Machine learning or algorithms development. -Use lakeFS branches to achieve both isolation and reproducibility of experiments. -Data being managed by lakeFS is both structured tabular data, -as well as unstructured sensor and image data used for training. -Assuming a team of 20-50 researchers, with a dataset size of 500 TiB across 20M objects. - -**Environment:** lakeFS will be deployed on Kubernetes. -managed by [AWS EKS](https://aws.amazon.com/eks/){: target="_blank" } -with PostgreSQL on [AWS RDS Aurora](https://aws.amazon.com/rds/aurora/postgresql-features/){: target="_blank" } - -**Sizing:** Since most of the work is done by humans (vs. automated pipelines), most experiments tend to be small in scale, -reading and writing 10s to 1000s of objects. -The expected amount of branches active in parallel is relatively low, around 1-2 per user, -each representing a small amount of uncommitted changes at any given point in time. -Let's assume 5,000 uncommitted writes per branch = ~500k. - -To support the expected throughput, a single moderate lakeFS instance should be more than enough, -since requests per second would be on the order of 10s to 100s. -For high availability, we'll deploy 2 pods with 1 CPU core and 1 GiB of RAM each. - -Since the PostgreSQL instance is expected to hold a very small dataset -(at 500k, expected dataset size is `150MiB (for 100k records) * 5 = 750MiB`). -To ensure we have enough RAM to hold this, we'll need 3 GiB of RAM, so, a very moderate Aurora instance `db.t3.large` (2 vCPUs, 8 GB RAM) will be more than enough. -An equivalent database instance on GCP or Azure should give similar results. - -ML and Research lakeFS reference architecture - - -### Reference Architecture: Automated Production Pipelines - -**Use case:** Manage multiple concurrent data pipelines using Apache Spark and Airflow. -Airflow DAGs start by creating a branch for isolation and for CI/CD. -Data being managed by lakeFS is structured, tabular data. The total dataset size is 10 PiB, spanning across 500M objects. -The expected throughput is 10k reads/second + 2k writes per second across 100 concurrent branches. - -**Environment:** lakeFS will be deployed on Kubernetes. -managed by [AWS EKS](https://aws.amazon.com/eks/){: target="_blank" } -with PostgreSQL on [AWS RDS](https://aws.amazon.com/rds/aurora/postgresql-features/){: target="_blank" } - -**Sizing:** Data pipelines tend to be bursty in nature: -reading in a lot of objects concurrently, doing some calculation or aggregation, and then writing many objects concurrently. -The expected amount of branches active in parallel is high, -with many Airflow DAGs running per day, each representing a moderate amount of uncommitted changes at any given point in time. -Let's assume 1,000 uncommitted writes/branch * 2500 branches = ~2.5M records. - -To support the expected throughput, looking the benchmarking numbers above, -we're doing roughly 625 requests/core, so 24 cores should cover our peak traffic. We can deploy `6 * 4 CPU core pods`. - -On to the PostgreSQL instance - at 500k, the expected dataset size is `150MiB (for 100k records) * 25 = 3750 MiB`. -To ensure we have enough RAM to hold this, we'll need at least 15 GiB of RAM, so we'll go with a `db.r5.xlarge` (4 vCPUs, 32GB RAM) Aurora instance. -An equivalent database instance on GCP or Azure should give similar results. - -![Automated pipelines lakeFS reference architecture](../assets/img/reference_arch2.png) - -[s3-gateway]: ../understand/architecture.md#s3-gateway -[lakectl-abuse]: ../reference/cli.md#lakectl-abuse diff --git a/docs/src/howto/virtual-host-addressing.md b/docs/src/howto/virtual-host-addressing.md deleted file mode 100644 index a3ec76786cf..00000000000 --- a/docs/src/howto/virtual-host-addressing.md +++ /dev/null @@ -1,70 +0,0 @@ ---- -title: "S3 Virtual-host addressing (advanced)" -description: Configure the lakeFS S3 API to use virtual host addressing ---- - -# Configuring lakeFS to use S3 Virtual-Host addressing - -## Understanding virtual-host addressing - -Some systems require S3 endpoints (such as lakeFS's [S3 Gateway](../understand/architecture.md#s3-gateway)) to support [virtual-host style addressing](https://docs.aws.amazon.com/AmazonS3/latest/userguide/VirtualHosting.html){: target="_blank" }. - -lakeFS supports this, but requires some configuration in order to extract the bucket name (used as the lakeFS repository ID) from the host address. - -For example: - -```text -GET http://foo.example.com/some/location -``` - -There are two ways to interpret the URL above: - -- as a virtual-host URL where the endpoint URL is `example.com`, the bucket name is `foo`, and the path is `/some/location` -- as a path-based URL where the endpoint is `foo.example.com`, the bucket name is `some` and the path is `location` - -By default, lakeFS reads URLs as path-based. To read the URL as a virtual-host request, lakeFS requires additional configuration which includes -defining an explicit set of DNS records for the lakeFS S3 gateway. - -## Adding an explicit S3 domain name to the S3 Gateway configuration - -The first step would be to tell the lakeFS installation which hostnames are used for the S3 Gateway. This should be a different DNS record from the one used for e.g. the UI or API. - -Typically, if the lakeFS installation is served under `lakefs.example.com`, a good choice would be `s3.lakefs.example.com`. - -This could be done using either an environment variable: - -```shell -LAKEFS_GATEWAYS_S3_DOMAIN_NAME="s3.lakefs.example.com" -``` - -Or by adding the `gateways.s3.domain_name` setting to the lakeFS `config.yaml` file: - -```yaml ---- -database: - connection_string: "..." - -... - -# This section defines an explict S3 gateway address that supports virtual-host addressing -gateways: - s3: - domain_name: s3.lakefs.example.com -``` - -!!! note - For more information on how to configure lakeFS, check out the [configuration reference](../reference/configuration.md) - - -## Setting up the appropriate DNS records - -Once our lakeFS installation is configured with an explicit S3 gateway endpoint address, we need to define 2 DNS records and have them point at our lakeFS installation. -This requires 2 CNAME records: - -1. `s3.lakefs.example.com` - CNAME to `lakefs.example.com`. This would be used as the S3 endpoint when configuring clients and will serve as our bare domain. -1. `*.s3.lakefs.example.com` - Also a CNAME to `lakefs.example.com`. This will resolve virtual-host requests such as `example-repo.s3.lakefs.example.com` that lakeFS would now know how to parse. - - -!!! info "Learn More" - For more information on how to configure these, see the official documentation of your DNS provider. - On AWS, This could also be done [using ALIAS records](https://aws.amazon.com/premiumsupport/knowledge-center/route-53-create-alias-records/) for a load balancer. diff --git a/docs/src/index.md b/docs/src/index.md deleted file mode 100755 index bd2605f63d9..00000000000 --- a/docs/src/index.md +++ /dev/null @@ -1,177 +0,0 @@ ---- -title: Welcome to lakeFS -description: The lakeFS documentation provides guidance on how to use lakeFS to deliver resilience and manageability to data lakes. ---- - -# Welcome to the Lake! - - - - -

lakeFS brings software engineering best practices and applies them to data

- -lakeFS provides version control over the data lake, and uses Git-like semantics to create and access those versions. If you know git, you'll be right at home with lakeFS. - -With lakeFS, you can apply concepts to your data lake such as **branching** to create an isolated version of the data, **committing** to create a reproducible point in time, and **merging** in order to incorporate your changes in one atomic action. - -???+ note "📽️ lakeFS in under 2 minutes" -
- -
- -## How Do I Get Started? - -**[The hands-on quickstart](./quickstart/index.md) guides you through some core features of lakeFS**. - -These include [branching](./quickstart/branch.md), [merging](./quickstart/commit-and-merge.md), and [rolling back changes](./quickstart/rollback.md) to data. - -!!! tip - You can use the [free trial of lakeFS Cloud](https://lakefs.io/cloud-registration) if you want to try out lakeFS without installing anything. - -## Key lakeFS Features - -* It is format-agnostic and works with both structured and unstructured data -* It works with numerous data tools and platforms. -* Your data stays in place, with no need to copy existing data -* It eliminates the need for data duplication using [zero-copy branching](./understand/model.md#zero-copy-branching). -* It maintains high performance over data lakes of any size -* It includes configurable garbage collection capabilities -* It is proven in production and has an active community - -lakeFS integration into data lake - -## How Does lakeFS Work With Other Tools? - -lakeFS is an open source project that supports managing data in AWS S3, Azure Blob Storage, Google Cloud Storage (GCS), S3-Compatible storage solutions and even locally mounted directories. -It integrates seamlessly with popular data frameworks such as [Spark](./integrations/spark.md), [AWS SageMaker](./integrations/sagemaker.md), [Pandas](./integrations/python.md#integrations-with-popular-data-science-packages), [Tensorflow](./integrations/python.md#integrations-with-popular-data-science-packages), [Polars](./integrations/python.md#integrations-with-popular-data-science-packages), [HuggingFace Datasets](./integrations/huggingface_datasets.md) and many more. - -With lakeFS, you can use any of the tools and libraries you are used to work with to read and write data directly from a repository. - -!!! example "Example: lakeFS with Pandas" - - ```python - >>> import pandas as pd - >>> - >>> df = pd.read_csv('lakefs://example-repository/main-branch/path/to.csv') - ``` - -Using this method, lakeFS acts as a metadata layer: it figures out which objects need to be fetched from the underlying storage for that version of the data and then lets the client read or write these files directly from the storage using [pre-signed URLs](./security/presigned-url.md). This allows lakeFS to be both very efficient but also highly secure: - -

- -

- - -Additionally, lakeFS maintains compatibility with the S3 API to minimize adoption -friction. You can use it as a drop-in replacement for S3 from the perspective of -any tool interacting with a data lake. - -!!! example - For example, take the common operation of reading unstructured data from the object store using [Boto3](https://boto3.amazonaws.com/v1/documentation/api/latest/index.html){: target="_blank" } (Python): - - ```python - >>> import boto3 - >>> - >>> s3 = boto3.resource('s3') - >>> obj = s3.Object('example-repository', 'main-branch/path/image.png') - >>> image_data = obj.get()['Body'].read() - ``` - -You can use the same methods and syntax you are already using to read and write data when using a lakeFS repository. -This simplifies the adoption of lakeFS - minimal changes are needed to get started, making further changes an incremental process. - -## lakeFS is Git for Data - -Git became ubiquitous when it comes to code because it had best supported engineering best practices required by developers, in particular: - -* Collaborate during development. -* Reproduce and troubleshoot issues with a given version of the code -* Develop and Test in isolation -* Revert code to a stable version in case of an error -* Continuously integrate and deploy new code (CI/CD) - -lakeFS provides these exact benefits, that data practitioners are missing today, and enables them a clear intuitive Git-like interface to easily manage data like they manage code. -Through its versioning engine, lakeFS enables the following built-in operations familiar from Git: - - -- :octicons-git-branch-24: __Branch__
a consistent copy of a repository, isolated from other branches and their changes. Initial creation of a branch is a metadata operation that does not duplicate objects. -- :octicons-git-commit-24: __Commit__
an immutable checkpoint containing a complete snapshot of a repository. -- :octicons-git-merge-24: __Merge__
performed between two branches — merges atomically update one branch with the changes from another. -- :octicons-undo-24: __Revert__
returns a repo to the exact state of a previous commit. -- :octicons-tag-24: __Tag__
a pointer to a single immutable commit with a readable, meaningful name. -- :material-hook: __Hooks__
run validations and actions when actions occur (`pre-merge`, `post-create-branch`, etc). - -!!! info - See the [object model](./understand/model.md) for an in-depth - definition of these, and the [CLI reference](./reference/cli.md) for the - full list of commands. - -Incorporating these operations into your data and model development provides the same collaboration and organizational benefits you get when managing application code with source control. - -## How Can lakeFS Help Me? - -lakeFS helps you maintain a tidy data lake in several ways, including: - -### Reproducibility: What Did My Data Look Like at a Point In Time? - -Being able to look at data as it was at a given point is particularly useful in at least two scenarios: - -1. **Reproducibility of ML experiments** - - ML experimentation is iterative, requiring the ability to reproduce specific results. With lakeFS, you can version all aspects of an ML experiment, including the data. This enables: - - **Data Lineage**: Track the transformation of data from raw datasets to the final version used in experiments, ensuring transparency and traceability. - - **Zero-Copy Branching**: Minimize storage use by creating lightweight branches of your data, allowing for easy experimentation across different versions. - - **Easy Integration**: Seamlessly integrate with ML tools like MLFlow, linking experiments directly to the exact data versions used, making reproducibility straightforward. - - lakeFS enhances your ML workflow by ensuring that all versions of data are easily accessible, traceable, and reproducible. - -2. **Troubleshooting production problems** - - In some cases, a user might report inconsistencies, question the accuracy, or simply report data or inference results as incorrect. - - Since data continuously changes, it is challenging to understand its state at the time of the error. - - With lakeFS you can create a branch from a commit to debug an issue in isolation. - - -[👉🏻 Read More](./understand/use_cases/reproducibility.md){ .md-button } - -### Collaboration during development and training - -With lakeFS, each member of the team can create their own branch, isolated from other people's changes. - -This allows you to iterate on changes to an algorithm or transformation, without stepping on each other's toes. These branches are centralized - they could be shared among users for collaboration, and can even be merged. - -With lakeFS you can even open [pull requests](./howto/pull-requests.md), allowing you to easily share changes with other members and collaborate on them. - -### Isolated Dev/Test Environments with zero-copy branching - -lakeFS makes creating isolated dev/test environments for transformations, model development, parallel experiments, and ETL processes- achieved through the use of zero-copy branches. -This enables you to test and validate code changes on production data without impacting it, as well as run analysis and experiments on production data in an isolated clone. - -[👉🏻 Read More](./understand/use_cases/etl_testing.md){ .md-button } - - -### Rollback of Data Changes and Recovery from Data Errors - -Human error or misconfigurations can lead to erroneous data making its way into production or critical data being accidentally deleted. Traditional backups are often inadequate for recovery in these situations, as they may be outdated and require time-consuming object-level sifting. - -With lakeFS, you can avoid these inefficiencies by committing snapshots of data at well-defined times. -This allows for instant recovery: simply identify a good historical commit and restore or copy from it with a single operation. - -[👉🏻 Read More](./understand/use_cases/rollback.md){ .md-button } - -### Establishing data quality guarantees - Write-Audit-Publish - -The best way to deal with mistakes is to avoid them. A data source that is ingested into the lake introducing low-quality data should be blocked before exposure if possible. - -With lakeFS, you can achieve this by tying data quality tests to commit and merge operations via lakeFS [hooks](./understand/use_cases/cicd_for_data.md#using-hooks-as-data-quality-gates). - -[👉🏻 Read more](./understand/use_cases/cicd_for_data.md){ .md-button } - -## Next Step - -Try lakeFS on the [cloud](./cloud/index.md) or [run it locally](./quickstart/index.md) diff --git a/docs/src/integrations/airbyte.md b/docs/src/integrations/airbyte.md deleted file mode 100644 index fc57dd3365a..00000000000 --- a/docs/src/integrations/airbyte.md +++ /dev/null @@ -1,53 +0,0 @@ ---- -title: Airbyte -description: Use Airbyte with lakeFS to easily sync data between applications and S3 with lakeFS version control. ---- - -# Airbyte - -[Airbyte](https://airbyte.io/) is an open-source platform for syncing data from applications, APIs, and databases to -warehouses, lakes, and other destinations. You can use Airbyte's connectors to get your data pipelines to consolidate -many input sources. - -The integration between Airbyte and lakeFS brings resilience and manageability when you use Airbyte -connectors to sync data to your S3 buckets by leveraging lakeFS branches and atomic commits and merges. - -## Use cases - -You can take advantage of lakeFS consistency guarantees and [Data Lifecycle Management](../understand/use_cases/cicd_for_data.md) when ingesting data to S3 using lakeFS: - -1. Consolidate many data sources to a single branch and expose them to consumers simultaneously when merging to the `main` branch. -1. Test incoming data for breaking schema changes using [lakeFS hooks][data-quality-gates]. -1. Prevent consumers from reading partial data from connectors which failed half-way through sync. -1. Experiment with ingested data on a branch before exposing it. - -## S3 Connector - -lakeFS exposes an [S3 Gateway][s3-gateway] that enables applications to communicate -with lakeFS the same way they would with Amazon S3. -You can use Airbyte's [S3 Connector](https://docs.airbyte.com/integrations/destinations/s3) to upload data to lakeFS. - -!!! warning - If using Airbyte OSS, please ensure you are using S3 destination connector version [0.3.17 or higher](https://docs.airbyte.com/integrations/destinations/s3#changelog). - Previous connector versions are not supported. - - -### Configuring lakeFS using the connector - -Set the following parameters when creating a new Destination of type S3: - -| Name | Value | Example | -|------------------|--------------------------------------------------------------|-----------------------------------------------------------------------------------------------------------------| -| Endpoint | The lakeFS S3 gateway URL | `https://cute-axolotol.lakefs-demo.io` | -| S3 Bucket Name | The lakeFS repository where the data will be written | `example-repo` | -| S3 Bucket Path | The branch and the path where the data will be written | `main/data/from/airbyte` Where `main` is the branch name, and `data/from/airbyte` is the path under the branch. | -| S3 Bucket Region | Not applicable to lakeFS, use `us-east-1` | `us-east-1` | -| S3 Key ID | The lakeFS access key id used to authenticate to lakeFS. | `AKIAlakefs12345EXAMPLE` | -| S3 Access Key | The lakeFS secret access key used to authenticate to lakeFS. | `abc/lakefs/1234567bPxRfiCYEXAMPLEKEY` | - -The UI configuration will look as follows: - -![S3 Destination Connector Configuration](../assets/img/airbyte.png) - -[data-quality-gates]: ../understand/use_cases/cicd_for_data.md#using-hooks-as-data-quality-gates -[s3-gateway]: ../understand/architecture.md#s3-gateway diff --git a/docs/src/integrations/airflow.md b/docs/src/integrations/airflow.md deleted file mode 100644 index 6013ebff923..00000000000 --- a/docs/src/integrations/airflow.md +++ /dev/null @@ -1,112 +0,0 @@ ---- -title: Apache Airflow -description: Easily build reproducible data pipelines with Airflow and lakeFS using commits, without modifying the code or logic of your job. ---- - -# Using lakeFS with Apache Airflow - -[Apache Airflow](https://airflow.apache.org/) is a platform that allows users to programmatically author, schedule, and monitor workflows. - - - -To run Airflow with lakeFS, you need to follow a few steps. - -## Create a lakeFS connection on Airflow - -To access the lakeFS server and authenticate with it, create a new [Airflow -Connection](https://airflow.apache.org/docs/apache-airflow/stable/howto/connection.html) -of type HTTP and add it to your DAG. You can do that using the Airflow UI -or the CLI. Here’s an example Airflow command that does just that: - -```bash -airflow connections add conn_lakefs --conn-type=HTTP --conn-host=http:// \ - --conn-extra='{"access_key_id":"","secret_access_key":""}' -``` - -## Install the lakeFS Airflow package - -You can use `pip` to install [the package](https://pypi.org/project/airflow-provider-lakefs/) - -```bash -pip install airflow-provider-lakefs -``` - -## Use the package - -### Operators - -The package exposes several operations to interact with a lakeFS server: - -1. `CreateBranchOperator` creates a new lakeFS branch from the source branch (`main` by default). - ```python - task_create_branch = CreateBranchOperator( - task_id='create_branch', - repo='example-repo', - branch='example-branch', - source_branch='main' - ) - ``` -1. `CommitOperator` commits uncommitted changes to a branch. - ```python - task_commit = CommitOperator( - task_id='commit', - repo='example-repo', - branch='example-branch', - msg='committing to lakeFS using airflow!', - metadata={'committed_from": "airflow-operator'} - ) - ``` -1. `MergeOperator` merges 2 lakeFS branches. - ```python - task_merge = MergeOperator( - task_id='merge_branches', - source_ref='example-branch', - destination_branch='main', - msg='merging job outputs', - metadata={'committer': 'airflow-operator'} - ) - ``` - -### Sensors - -Sensors are also available that allow synchronizing a running DAG with external operations: - -1. `CommitSensor` waits until a commit has been applied to the branch - ```python - task_sense_commit = CommitSensor( - repo='example-repo', - branch='example-branch', - task_id='sense_commit' - ) - ``` -1. `FileSensor` waits until a given file is present on a branch. - ```python - task_sense_file = FileSensor( - task_id='sense_file', - repo='example-repo', - branch='example-branch', - path="file/to/sense" - ) - ``` - -### Example - -This [example DAG](https://github.com/treeverse/airflow-provider-lakeFS/blob/main/lakefs_provider/example_dags/lakefs-dag.py) -in the airflow-provider-lakeFS repository shows how to use all of these. - -### Performing other operations - -Sometimes an operator might not be supported by airflow-provider-lakeFS yet. You can access lakeFS directly by using: - -- `SimpleHttpOperator` to send [API requests](../reference/api.md) to lakeFS. -- `BashOperator` with [lakectl](../reference/cli.md) commands. - -For example, deleting a branch using `BashOperator`: - -```python -commit_extract = BashOperator( - task_id='delete_branch', - bash_command='lakectl branch delete lakefs://example-repo/example-branch', - dag=dag, -) -``` diff --git a/docs/src/integrations/athena.md b/docs/src/integrations/athena.md deleted file mode 100644 index 18acb5e0f1e..00000000000 --- a/docs/src/integrations/athena.md +++ /dev/null @@ -1,67 +0,0 @@ ---- -title: AWS Glue & Athena -description: Query lakeFS-managed Iceberg tables from Amazon Athena using AWS Glue Catalog Federation. -status: enterprise ---- - -# Using lakeFS with AWS Glue & Amazon Athena - -!!! info - Available in **lakeFS Enterprise** - -!!! tip - This integration requires the [lakeFS Iceberg REST Catalog](./iceberg.md) to be enabled. - [Contact us](https://lakefs.io/lp/iceberg-rest-catalog/) to get started! - -## Overview - -[Amazon Athena](https://aws.amazon.com/athena/) can query lakeFS-managed Apache Iceberg tables directly through [AWS Glue Catalog Federation](https://docs.aws.amazon.com/glue/latest/dg/catalog-federation.html) -- no data copying or metadata syncing required. - -Athena discovers table metadata in real time through lakeFS and reads the underlying data files directly from S3. - -## Setup - -Before querying from Athena, you need to create a federated Glue catalog that connects to your lakeFS Iceberg REST Catalog. Follow the [Glue Data Catalog integration guide](./glue_metastore.md) for step-by-step instructions on: - -1. Installing the [`lakefs-glue`](https://github.com/treeverse/lakefs-glue-federation) CLI tool. -2. Creating a federated catalog pointing to a lakeFS repository and branch. -3. Granting access to the appropriate IAM principals. - -## Querying from Athena - -Once the federated catalog is created, query your lakeFS tables directly from Athena using the catalog name as a prefix: - -```sql -SELECT * FROM "lakefs-catalog"."default"."my_table" LIMIT 10; -``` - -Run aggregations and joins across lakeFS-managed tables: - -```sql -SELECT - category, - COUNT(*) AS total, - SUM(amount) AS total_amount -FROM "lakefs-catalog"."default"."transactions" -GROUP BY category -ORDER BY total_amount DESC; -``` - -## Comparing Data Across Branches - -By creating [separate catalogs for different refs](./glue_metastore.md#working-with-multiple-branches-and-refs), you can compare data across branches, tags, or commits directly from Athena: - -```sql --- Compare row counts between production and dev -SELECT 'main' AS branch, COUNT(*) AS row_count -FROM "my-repo-main"."default"."my_table" -UNION ALL -SELECT 'dev' AS branch, COUNT(*) AS row_count -FROM "my-repo-dev"."default"."my_table"; -``` - -## Limitations - -- **Read-only**: AWS Glue Catalog Federation only supports read queries. `INSERT`, `CREATE TABLE`, and other write operations are not supported through Athena. -- **Single ref per catalog**: Each federated catalog points to one lakeFS ref. Create [multiple catalogs](./glue_metastore.md#working-with-multiple-branches-and-refs) to query multiple branches or tags. -- **Flat namespaces only**: AWS Glue Catalog Federation supports only flat `catalog.namespace.table` structures -- nested namespaces are not supported. diff --git a/docs/src/integrations/aws_cli.md b/docs/src/integrations/aws_cli.md deleted file mode 100644 index 37742b88d88..00000000000 --- a/docs/src/integrations/aws_cli.md +++ /dev/null @@ -1,114 +0,0 @@ ---- -title: AWS CLI -description: This section shows how to use the AWS CLI for AWS S3 to access lakeFS. ---- - -# Using lakeFS with AWS CLI - -lakeFS exposes an S3-compatible API, so you can use the [AWS S3 CLI](https://docs.aws.amazon.com/cli/latest/reference/s3/) to interact with objects in your repositories. - -## Configuration - -You would like to configure an AWS profile for lakeFS. - -To configure the lakeFS credentials, run: - -```bash -aws configure --profile lakefs -``` - -You will be prompted to enter the _AWS Access Key ID_ and the _AWS Secret Access Key_. - -It should look like this: - -```bash -aws configure --profile lakefs -# output: -# AWS Access Key ID [None]: AKIAIOSFODNN7EXAMPLE -# AWS Secret Access Key [None]: wJalrXUtnFEMI/K7MDENG/bPxRfiCYEXAMPLEKEY -# Default region name [None]: -# Default output format [None]: -``` - - -## Path convention - -When accessing objects in S3, you will need to use the lakeFS path convention: - -``` -s3://[REPOSITORY]/[BRANCH]/PATH/TO/OBJECT -``` - -## Usage - -After configuring the credentials, this is what a command should look: - -```bash -aws s3 --profile lakefs \ - --endpoint-url https://lakefs.example.com \ - ls s3://example-repo/main/example-directory -``` - -You can use an [alias](#adding-an-alias) to make it shorter and more convenient. - -## Examples - -### List directory - -```bash -aws --profile lakefs \ - --endpoint-url https://lakefs.example.com \ - s3 ls s3://example-repo/main/example-directory -``` - -### Copy from lakeFS to lakeFS - -```bash -aws --profile lakefs \ - --endpoint-url https://lakefs.example.com \ - s3 cp s3://example-repo/main/example-file-1 s3://example-repo/main/example-file-2 -``` - -### Copy from lakeFS to a local path - -```bash -aws --profile lakefs \ - --endpoint-url https://lakefs.example.com \ - s3 cp s3://example-repo/main/example-file-1 /path/to/local/file -``` -### Copy from a local path to lakeFS - -```bash -aws --profile lakefs \ - --endpoint-url https://lakefs.example.com \ - s3 cp /path/to/local/file s3://example-repo/main/example-file-1 -``` -### Delete file - -```bash -aws --profile lakefs \ - --endpoint-url https://lakefs.example.com \ - s3 rm s3://example-repo/main/example-directory/example-file -``` - -### Delete directory - -```bash -aws --profile lakefs \ - --endpoint-url https://lakefs.example.com \ - s3 rm s3://example-repo/main/example-directory/ --recursive -``` - -## Adding an alias - -To make the command shorter and more convenient, you can create an alias: - -```bash -alias awslfs='aws --endpoint https://lakefs.example.com --profile lakefs' -``` - -Now, the ls command using the alias will be as follows: - -```bash -awslfs s3 ls s3://example-repo/main/example-directory -``` diff --git a/docs/src/integrations/cloudera.md b/docs/src/integrations/cloudera.md deleted file mode 100644 index f3afb2319e1..00000000000 --- a/docs/src/integrations/cloudera.md +++ /dev/null @@ -1,13 +0,0 @@ ---- -title: Cloudera -description: Accessing data in lakeFS from Cloudera Spark works the same as accessing S3 data from Apache Spark. ---- - -# Using lakeFS with Cloudera Spark - -Use [the lakeFS Hadoop FileSystem][hadoopfs] to integrate lakeFS with Cloudera Spark. - -Review [Cloudera Partner Listing](https://www.cloudera.com/partners/partners-listing.html?q=lakefs) for the Cloudera certification of lakeFS integration with Cloudera Data Platform (CDP) and Cloudera Spark. - - -[hadoopfs]: spark.md#lakefs-hadoop-filesystem diff --git a/docs/src/integrations/databricks.md b/docs/src/integrations/databricks.md deleted file mode 100644 index 88f14de7052..00000000000 --- a/docs/src/integrations/databricks.md +++ /dev/null @@ -1,95 +0,0 @@ ---- -title: Databricks -description: This section points to the various integrations with Databricks. ---- - -# Using lakeFS with Databricks - -## Overview - -Databricks is a unified, open analytics platform for building, deploying, sharing, -and maintaining enterprise-grade data, analytics, and AI solutions at scale. - -In this document, we will cover the various Databricks products and how they integrate -with lakeFS. - -![Databricks Architecture](../assets/img/databricks-arch.png) - -## Databricks Compute Options - -Databricks offers several [compute options](https://docs.databricks.com/en/compute/index.html#types-of-compute) -for running workloads. All of these options can be used with lakeFS. -At a basic level, Databricks compute products are Spark clusters that run on top -of cloud infrastructure and offer different configuration options. -From a lakeFS integration perspective, the main difference is how you configure -the storage operations that perform read/writes to lakeFS. - -lakeFS storage operations will either use the [lakeFS Hadoop Filesystem](./spark.md#lakefs-hadoop-filesystem), -which utilizes the [lakeFS OpenAPI](../understand/architecture.md#openapi-server), -or the s3a Filesystem, which uses the [lakeFS S3 Gateway](../understand/architecture.md#s3-gateway). -In short, the lakeFS S3 Gateway is the fastest way to get started, but it routes -all traffic through the lakeFS server. -The lakeFS Hadoop Filesystem requires more setup, but all data transfers will occur -directly on the bucket. The lakeFS Hadoop Filesystem can write to storage -using the s3a filesystem or using [pre-signed](./spark.md#hadoop-filesystem-in-presigned-mode) -URLs generated by the lakeFS server. To read more about the alternatives, see -the [Spark integration page](./spark.md#using-lakefs-with-apache-spark). - -### All-Purpose Compute - -Provisioned compute used to analyze data in notebooks. - -When you create a Databricks compute cluster, you can configure it to use lakeFS -with the [lakeFS Hadoop Filesystem](./spark.md#lakefs-hadoop-filesystem) (see Databricks installation guide) -or the [lakeFS S3 Gateway](./spark.md#s3-compatible-api). The lakeFS S3 Gateway can be configured -in the [notebook](./spark.md#configuration) or during -cluster setup (_Advanced Options -> Spark -> Spark config_). - -### Jobs Compute - -Provisioned compute used to run automated jobs. -The Databricks job scheduler automatically creates a job compute whenever a job is configured to run on new compute. - -To use lakeFS with Databricks jobs, a compute cluster needs to be configured in the cluster setup, -just like with [All-Purpose compute](#all-purpose-compute). - -!!! note - Serverless compute for Databricks jobs is currently not supported. - -### SQL Warehouses - -Classic & Pro warehouses are used to run SQL commands on data objects in the SQL editor or interactive notebooks. -Serverless warehouses do the same, except that they are on-demand elastic compute. - -All warehouses do not allow the installation of external jars, such as the lakeFS Hadoop Filesystem. -To use SQL warehouses with lakeFS, utilize the [lakeFS S3 Gateway](./spark.md#configuring-databricks-sql-warehouse-with-the-s3-compatible-api). - -## Unity Catalog - -Unity Catalog is Databricks' metastore that provides centralized access control, -auditing, lineage, and data discovery capabilities across Databricks workspaces. - -lakeFS can be used with Unity Catalog to provide a versioned view of the data and -the Unity Catalog metadata. - -lakeFS support for Unity Catalog differs between lakeFS OSS and lakeFS Enterprise & Cloud. - -### Catalog Exports lakeFS - -Leveraging the external tables feature within Unity Catalog, -you can register a Delta Lake table exported from lakeFS and access it through the unified catalog. - - -!!! note - lakeFS Catalog exporters offer read-only table exports. - - -[Catalog Exports](../howto/catalog_exports.md) relies on [lakeFS Actions](../howto/hooks/index.md) and offers -a way to export changes from lakeFS to Unity Catalog. - -For the full guide on how to use Catalog Exports with Unity Catalog, see the [documentation](./unity-catalog.md). - -## Delta Lake - -lakeFS supports Delta Lake tables, and it provides a versioned view of the data and the Delta Lake metadata. -Read the [Delta Lake docs](./delta.md) for more information. diff --git a/docs/src/integrations/delta.md b/docs/src/integrations/delta.md deleted file mode 100644 index 941a4a10205..00000000000 --- a/docs/src/integrations/delta.md +++ /dev/null @@ -1,157 +0,0 @@ ---- -title: Delta Lake -description: This section explains how to use Delta Lake with lakeFS. ---- - -# Using lakeFS with Delta Lake - -[Delta Lake](https://delta.io/) is an open-source storage framework designed to improve performance and provide transactional guarantees to data lake tables. - -Because lakeFS is format-agnostic, you can save data in Delta format within a lakeFS repository and benefit from the advantages of both technologies. Specifically: - -1. ACID operations can span across multiple Delta tables. -2. [CI/CD hooks][data-quality-gates] can validate Delta table contents, schema, or even referential integrity. -3. lakeFS supports zero-copy branching for quick experimentation with full isolation. - -## Delta Lake Tables from the lakeFS Perspective - -lakeFS is a data versioning tool, functioning at the **object** level. This implies that, by default, lakeFS remains agnostic -to whether the objects within a Delta table location represent a table, table metadata, or data. As per the Delta Lake [protocol](https://github.com/delta-io/delta/blob/master/PROTOCOL.md), -any modification to a table—whether it involves adding data or altering table metadata—results in the creation of a new object -in the table's [transaction log](https://www.databricks.com/blog/2019/08/21/diving-into-delta-lake-unpacking-the-transaction-log.html). -Typically, residing under the `_delta_log` path, relative to the root of the table's directory. This new object has an incremented version compared to its predecessor. - -Consequently, when making changes to a Delta table within the lakeFS environment, these changes are reflected as changes -to objects within the table location. For instance, inserting a record into a table named "my-table," which is partitioned -by 'category' and 'country,' is represented in lakeFS as added objects within the table prefix (i.e., the table data) and the table transaction log. -![Record addition](../assets/img/delta-record-addition.png) - -Similarly, when performing a metadata operation such as renaming a table column, new objects are appended to the table transaction log, -indicating the schema change. -![Record addition](../assets/img/delta-schema-change.png) - -## Using Delta Lake with lakeFS from Apache Spark - -!!! note - Given the native integration between Delta Lake and Spark, it's most common that you'll interact with Delta tables in a Spark environment - -To configure a Spark environment to read from and write to a Delta table within a lakeFS repository, you need to set the proper credentials and endpoint in the S3 Hadoop configuration, like you'd do with any [Spark](./spark.md) environment. - -Once set, you can interact with Delta tables using regular Spark path URIs. Make sure that you include the lakeFS repository and branch name: - -```scala -df.write.format("delta").save("s3a:////path/to/delta-table") -``` - -!!! info - If using the Databricks Analytics Platform, see the [integration guide](./spark.md#installation) for configuring a Databricks cluster to use lakeFS. - -To see the integration in action see [this notebook](https://github.com/treeverse/lakeFS-samples/blob/main/00_notebooks/delta-lake.ipynb) in the [lakeFS Samples Repository](https://github.com/treeverse/lakeFS-samples/). - -## Using Delta Lake with lakeFS from Python - -The [delta-rs](https://github.com/delta-io/delta-rs) library provides bindings for Python. This means that you can use Delta Lake and lakeFS directly from Python without needing Spark. Integration is done through the [lakeFS S3 Gateway](../understand/architecture.md#s3-gateway) - -The documentation for the `deltalake` Python module details how to [read](https://delta-io.github.io/delta-rs/python/usage.html#loading-a-delta-table), [write](https://delta-io.github.io/delta-rs/python/usage.html#writing-delta-tables), and [query](https://delta-io.github.io/delta-rs/python/usage.html#querying-delta-tables) Delta Lake tables. To use it with lakeFS use an `s3a` path for the table based on your repository and branch (for example, `s3a://delta-lake-demo/main/my_table/`) and specify the following `storage_options`: - -```python -storage_options = { - "AWS_ENDPOINT": , - "AWS_ACCESS_KEY_ID": , - "AWS_SECRET_ACCESS_KEY": , - "AWS_REGION": "us-east-1", - "AWS_S3_ALLOW_UNSAFE_RENAME": "true" -} -``` - -If your lakeFS is not using HTTPS (for example, you're just running it locally) then add the option - -```python -"AWS_STORAGE_ALLOW_HTTP": "true" -``` - -To see the integration in action see [this notebook](https://github.com/treeverse/lakeFS-samples/blob/main/00_notebooks/delta-lake-python.ipynb) in the [lakeFS Samples Repository](https://github.com/treeverse/lakeFS-samples/). - -## Exporting Delta Lake tables from lakeFS into Unity Catalog - -This option is for users who are managing Delta Lake tables with lakeFS and access them through Databricks [Unity Catalog](https://www.databricks.com/product/unity-catalog). lakeFS offers -a [Data Catalog Export](../howto/catalog_exports.md) functionality that provides read-only access to your Delta tables from within Unity catalog. Using the data catalog exporters, -you can work on Delta tables in isolation and easily explore them within the Unity Catalog. - -Once exported, you can query the versioned table data with: - -```sql -SELECT * FROM my_catalog.main.my_delta_table -``` - -Here, `main` is the name of the lakeFS branch from which the delta table was exported. - -To enable Delta table exports to Unity catalog use the Unity [catalog integration guide](unity-catalog.md). - -## Limitations - -

Multi-Writer Support in lakeFS for Delta Lake Tables

- -lakeFS currently supports a single writer for Delta Lake tables. Attempting to utilize multiple writers for writing to a Delta table may result in two types of issues: - -1. Merge Conflicts: These conflicts arise when multiple writers modify a Delta table on different branches, and an attempt is made to merge these branches. - ![Merge conflicts](../assets/img/delta-lake/merge-conflict.png) -2. Concurrent File Overwrite: This issue occurs when multiple writers concurrently modify a Delta table on the same branch. - ![Concurrent file overwrite](../assets/img/delta-lake/concurrent-file-overwrite.png) - -!!! note - lakeFS currently lacks its own implementation for a LogStore, and the default Log store used does not control concurrency. - -To address these limitations, consider following [best practices for implementing multi-writer support](#implementing-multi-writer-support-through-lakefs-branches-and-merges). - -## Best Practices - -### Implementing Multi-Writer Support through lakeFS Branches and Merges - -To achieve safe multi-writes to a Delta Lake table on lakeFS, we recommend following these best practices: - -1. **Isolate Changes:** Make modifications to your table in isolation. Each set of changes should be associated with a dedicated lakeFS branch, branching off from the main branch. -2. **Merge Atomically:** After making changes in isolation, try to merge them back into the main branch. This approach guarantees that the integration of changes is cohesive. - -The workflow involves: - -* Creating a new lakeFS branch from the main branch for any table change. -* Making modifications in isolation. -* Attempting to merge the changes back into the main branch. -* Iterating the process in case of a merge failure due to conflicts. - -The diagram below provides a visual representation of how branches and merges can be utilized to manage concurrency effectively: -![Multi writers workaround](../assets/img/delta-lake/multi-writers-with-lakefs-branches-merges.png) - -### Follow Vacuum by Garbage Collection - -To delete unused files from a table directory while working with Delta Lake over lakeFS you need to first use Delta lake -[Vacuum](https://docs.databricks.com/en/sql/language-manual/delta-vacuum.html) to soft-delete the files, and then use -[lakeFS Garbage Collection](../howto/garbage-collection/gc.md) to hard-delete them from the storage. - -!!! tip - lakeFS enables you to recover from undesired vacuum runs by reverting the changes done by a vacuum run before running Garbage Collection. - -### When running lakeFS inside your VPC (on AWS) - -When lakeFS runs inside your private network, your Databricks cluster needs to be able to access it. -This can be done by setting up a VPC peering between the two VPCs -(the one where lakeFS runs and the one where Databricks runs). For this to work on Delta Lake tables, you would also have to disable multi-cluster writes with: - -```properties -spark.databricks.delta.multiClusterWrites.enabled false -``` - -### Using multi cluster writes (on AWS) - -When using multi-cluster writes, Databricks overrides Delta’s S3-commit action. - -The new action tries to contact lakeFS from servers on Databricks’ own AWS account, which of course won’t be able to access your private network. -So, if you must use multi-cluster writes, you’ll have to allow access from Databricks’ AWS account to lakeFS. -If you are trying to achieve that, please reach out on Slack and the community will try to assist. - -## Further Reading - -See [Guaranteeing Consistency in Your Delta Lake Tables With lakeFS](https://lakefs.io/blog/guarantee-consistency-in-your-delta-lake-tables-with-lakefs/) post on the lakeFS blog to learn how to guarantee data quality in a Delta table by utilizing lakeFS branches. - -[data-quality-gates]: ../understand/use_cases/cicd_for_data.md#using-hooks-as-data-quality-gates diff --git a/docs/src/integrations/dremio.md b/docs/src/integrations/dremio.md deleted file mode 100644 index f42256f4dcd..00000000000 --- a/docs/src/integrations/dremio.md +++ /dev/null @@ -1,104 +0,0 @@ ---- -title: Dremio -description: This section shows how you can start using lakeFS with Dremio, a next-generation data lake engine. ---- - -# Using lakeFS with Dremio - -[Dremio](https://www.dremio.com/) is a next-generation data lake engine that liberates your data with live, -interactive queries directly on cloud data lake storage, including S3 and lakeFS. - - -## Iceberg REST Catalog - -lakeFS Iceberg REST Catalog allow you to use lakeFS as a [spec-compliant](https://github.com/apache/iceberg/blob/main/open-api/rest-catalog-open-api.yaml) Apache [Iceberg REST catalog](https://editor-next.swagger.io/?url=https://raw.githubusercontent.com/apache/iceberg/main/open-api/rest-catalog-open-api.yaml), -allowing Dremio to manage and access tables using a standard REST API. - -![lakeFS Iceberg REST Catalog](../assets/img/lakefs_iceberg_rest_catalog.png) - -This is the recommended way to use lakeFS with Dremio, as it allows lakeFS to stay completely outside the data path: data itself is read and written by Dremio executors, directly to the underlying object store. Metadata is managed by Iceberg at the table level, while lakeFS keeps track of new snapshots to provide versioning and isolation. - -[Read more about using the Iceberg REST Catalog](./iceberg.md#iceberg-rest-catalog). - -### Configuration - -To configure Dremio to work with the Iceberg REST Catalog, you need to configure the [Iceberg REST Catalog in Dremio](https://docs.dremio.com/current/data-sources/lakehouse-catalogs/iceberg-rest-catalog/). - -1. On the Datasets page, to the right of **Sources** in the left panel, click `+` -1. In the **Add Data Source** dialog, under Lakehouse Catalogs, select **Iceberg REST Catalog** Source. The New Iceberg REST Catalog Source dialog box appears, which contains the following tabs: - 1. In **General** → - - Enter a name for your Iceberg REST Catalog source, specify the endpoint URI (i.e. `https://lakefs.example.com/iceberg/api`) - - Uncheck "Use vended credentials" - 1. In **Advanced Options** → Catalog Properties, add the following key-value pairs (left = key, right = value): - - | Key | Value | Notes | - | --------------------------------- | -------------------------------------------------------- |---------------------------------------------------------| - | `oauth2-server-uri` | `https://lakefs.example.com/iceberg/api/v1/oauth/tokens` | Your lakeFS OAuth2 token endpoint (not the catalog URL). | - | `credential` | `:` | Your lakeFS credentials. | - | `fs.s3a.aws.credentials.provider` | `org.apache.hadoop.fs.s3a.SimpleAWSCredentialsProvider` | Use static AWS credentials. | - | `fs.s3a.access.key` | `` | AWS key with read/write access to your data bucket. | - | `fs.s3a.secret.key` | `` | AWS secret key. | - | `dremio.s3.list.all.buckets` | `false` | Avoid listing all buckets during initialization. | - -1. Click **Save** to create the Iceberg REST Catalog source. - -#### Data Bucket Permissions - -The lakeFS Iceberg Catalog manages table metadata, while Dremio reads and writes data files directly from your underlying -storage (for example, Amazon S3). - -You must ensure that the IAM role or user Dremio uses has read/write access to your data bucket. -The following AWS IAM policy provides the required permissions for direct access: - -```json -{ - "Version": "2012-10-17", - "Statement": [ - { - "Sid": "DremioIcebergAccess", - "Effect": "Allow", - "Action": "s3:*", - "Resource": [ - "arn:aws:s3:::/_managed/", - "arn:aws:s3:::/_managed/*" - ] - }, - { - "Sid": "BucketLevelRequiredForDremio", - "Effect": "Allow", - "Action": [ - "s3:GetBucketLocation", - "s3:ListBucket" - ], - "Resource": "arn:aws:s3:::" - } - ] -} -``` - -!!! tip - To learn more about the Iceberg REST Catalog, see the [Iceberg REST Catalog](./iceberg.md#iceberg-rest-catalog) documentation. - -## Using Dremio with the S3 Gateway - -Alternatively, you can use the S3 Gateway to read and write data to lakeFS from Dremio. - -While flexible, this approach requires lakeFS to be involved in the data path, which can be less efficient than the Iceberg -REST Catalog approach, since lakeFS has to proxy all data operations through the lakeFS server. This is particularly true -for large data sets where network bandwidth might incur some overhead. - -### Configuration - -Starting from version 3.2.3, Dremio supports Minio as an [experimental S3-compatible plugin](https://docs.dremio.com/current/sonar/data-sources/object/s3/#configuring-s3-for-minio). -Similarly, you can connect lakeFS with Dremio. - -Suppose you already have both lakeFS and Dremio deployed, and want to use Dremio to query your data in the lakeFS repositories. -You can follow the steps listed below to configure on Dremio UI: - -1. click **Add Data Lake**. -1. Under **File Stores**, choose **Amazon S3**. -1. Under **Advanced Options**, check **Enable compatibility mode (experimental)**. -1. Under **Advanced Options** > **Connection Properties**, add `fs.s3a.path.style.access` and set the value to `true`. -1. Under **Advanced Options** > **Connection Properties**, add `fs.s3a.endpoint` and set lakeFS S3 endpoint to the value. -1. Under the **General** tab, specify the **access_key_id** and **secret_access_key** provided by lakeFS server. -1. Click **Save**, and now you should be able to browse lakeFS repositories on Dremio. diff --git a/docs/src/integrations/duckdb.md b/docs/src/integrations/duckdb.md deleted file mode 100644 index 0aec4574e2e..00000000000 --- a/docs/src/integrations/duckdb.md +++ /dev/null @@ -1,141 +0,0 @@ ---- -title: DuckDB -description: How to use lakeFS with DuckDB, an open-source SQL OLAP database management system. ---- - -# Using lakeFS with DuckDB - -[DuckDB](https://duckdb.org/){:target="_blank"} is an in-process SQL OLAP database management system. You can access data in lakeFS from DuckDB, as well as use DuckDB from within the web interface of lakeFS - - -## Accessing lakeFS from DuckDB - -The recommended way to access lakeFS from DuckDB is to use the [Iceberg REST Catalog](./iceberg.md#iceberg-rest-catalog). - - -![lakeFS Iceberg REST Catalog](../assets/img/lakefs_iceberg_rest_catalog.png) - - -This allows you to query and update Iceberg tables using a standards-compliant catalog, built into lakeFS Enterprise. In this mode, lakeFS stays completely outside the data path: data itself is read and written by DuckDB executors, directly to the underlying object store. Metadata is managed by Iceberg at the table level, while lakeFS keeps track of new snapshots to provide versioning and isolation. - -```sql -LOAD iceberg; -LOAD httpfs; - -CREATE SECRET lakefs_credentials ( - TYPE ICEBERG, - CLIENT_ID 'AKIAIOSFODNN7EXAMPLE', - CLIENT_SECRET 'wJalrXUtnFEMI/K7MDENG/bPxRfiCYEXAMPLEKEY', - OAUTH2_SERVER_URI 'https://lakefs.example.com/iceberg/api/v1/oauth/tokens' -); - -ATTACH '' AS main_branch ( - TYPE iceberg, - SECRET lakefs_credentials, - ENDPOINT 'https://lakefs.example.com/iceberg/relative_to/my-repo.main/api' -); - -USE main_branch.inventory; -SELECT * FROM books; -``` - -!!! tip - To learn more about the Iceberg REST Catalog, see the [Iceberg REST Catalog](./iceberg.md#iceberg-rest-catalog) documentation. - -## Using DuckDB with the S3 Gateway - -Using the S3 Gateway allows reading and writing data to lakeFS from DuckDB, in any format supported by DuckDB (i.e. not just Iceberg tables). While flexible, this approach requires lakeFS to be involved in the data path, which can be less efficient than the Iceberg REST Catalog approach, since lakeFS has to proxy all data operations through the lakeFS server. - -### Configuration - -Querying data in lakeFS from DuckDB is similar to querying data in S3 from DuckDB. It is done using the [httpfs extension](https://duckdb.org/docs/stable/core_extensions/httpfs/overview){:target="_blank"} connecting to the [S3 Gateway that lakeFS provides](../understand/architecture.md#s3-gateway). - -If not loaded already, install and load the `HTTPFS` extension: - -```sql -INSTALL httpfs; -LOAD httpfs; -``` - -Then run the following to configure the connection. - -```sql --- "s3_region" is the S3 region on which your bucket resides. If local storage, or not S3, then just set it to "us-east-1". -SET s3_region='us-east-1'; --- the host (and port, if necessary) of your lakeFS server -SET s3_endpoint='lakefs.example.com'; --- the access credentials for your lakeFS user -SET s3_access_key_id='AKIAIOSFODNN7EXAMPLE'; --- the access credentials for your lakeFS user -SET s3_secret_access_key='wJalrXUtnFEMI/K7MDENG/bPxRfiCYEXAMPLEKEY'; -SET s3_url_style='path'; - --- Uncomment in case the endpoint listen on non-secure, for example running lakeFS locally. --- SET s3_use_ssl=false; -``` - -### Querying Data - -Once configured, you can query data using the lakeFS S3 Gateway using the following URI pattern: - -```text -s3://// -``` - -Since the S3 Gateway implemenets all S3 functionality required by DuckDB, you can query using globs and patterns, including support for Hive-partitioned data. - -Example: - -```sql -SELECT * -FROM parquet_scan('s3://example-repo/main/data/population/by-region/*.parquet', HIVE_PARTITIONING=1) -ORDER BY name; -``` - -### Writing Data - -No special configuration required for writing to a branch. Assuming the configuration above and write permissions to a `dev` branch, -a write operation would look like any DuckDB write: - -```sql -CREATE TABLE sampled_population AS SELECT * -FROM parquet_scan('s3://example-repo/main/data/population/by-region/*.parquet', HIVE_PARTITIONING=1) -USING SAMPLE reservoir(50000 ROWS) REPEATABLE (100); - -COPY sampled_population TO 's3://example-repo/main/data/population/sample.parquet'; -- actual write happens here -``` - -## Using DuckDB in Python with lakefs-spec - -Python users can use DuckDB by leveraging the [lakefs-spec](https://lakefs-spec.org/latest/) package. - -!!! note - This library is a third-party package and not maintained by the lakeFS developers; please file issues and bug reports directly - in the [lakefs-spec](https://github.com/aai-institute/lakefs-spec) repository. - -Using lakefs-spec, querying lakeFS could be done using [pre-signed URLs](../security/presigned-url.md), allowing for efficient and secure I/O, where the data files are read directly from the underlying object store. - -```python -import duckdb -from fsspec import filesystem - -duckdb.register_filesystem(filesystem('lakefs')) - -duckdb.sql("SELECT * FROM 'lakefs://example-repo/main/data/population/sample.parquet'") -``` - -## Using DuckDB in the lakeFS web UI - -The lakeFS web UI includes DuckDB in the Object viewer page. - -![DuckDB query editor on the lakeFS objects page](../assets/img/duckdb.png) - -Using this you can query objects in lakeFS directly using a `lakefs` path: - - lakefs:////object/path/foo.parquet - -The DuckDB query editor is provided by [DuckDB WASM](https://github.com/duckdb/duckdb-wasm). It renders and provides querying capabilities for any objects of the following types: - -* Parquet -* CSV -* TSV diff --git a/docs/src/integrations/git.md b/docs/src/integrations/git.md deleted file mode 100644 index 30acc3cf942..00000000000 --- a/docs/src/integrations/git.md +++ /dev/null @@ -1,31 +0,0 @@ ---- -title: Git -description: This section explains how to integrate lakeFS with Git ---- - -# Integrating lakeFS with Git - -Integrating code and data version control systems allows you to associate code versions with data versions, facilitating -the reproduction of complex environments with multiple components. Consequently, lakeFS, a data version control system, -seamlessly integrates with Git. This combination establishes a robust foundation for versioning both your code and data, -fostering a streamlined and reproducible development process. - -## Use Cases - -### Develop Reproducible ML Models - -Maintain a comprehensive record of both model code versions and input data versions to ensure the reproducibility of ML -model results. - -The common way to develop reproducible ML models with lakeFS is to use the -[lakectl local](../reference/cli.md#lakectl-local) command. See [_Working with lakeFS Data Locally_](../howto/local-checkouts.md#example-using-lakectl-local-in-tandem-with-git) -to understand how to use lakectl local in conjunction with Git to develop reproducible ML models. - -### Develop Reproducible ETL Pipelines - -Track code versions for each step in ETL pipelines along with the corresponding data versions of their inputs and outputs. -This approach allows straight forward troubleshooting and reproduction of data errors. - -Check out [this](https://github.com/treeverse/lakeFS-samples/tree/main/01_standalone_examples/airflow-02) lakeFS sample -that demonstrates how Git, Airflow, and lakeFS can be integrated to result in reproducible ETL pipelines. - diff --git a/docs/src/integrations/glue_metastore.md b/docs/src/integrations/glue_metastore.md deleted file mode 100644 index 51da736fafe..00000000000 --- a/docs/src/integrations/glue_metastore.md +++ /dev/null @@ -1,219 +0,0 @@ ---- -title: Glue Data Catalog -description: Set up AWS Glue Catalog Federation with lakeFS to expose Iceberg tables to Athena and other AWS analytics services. -status: enterprise ---- - -# Using lakeFS with the AWS Glue Data Catalog - -!!! info - Available in **lakeFS Enterprise** - -!!! tip - This integration requires the [lakeFS Iceberg REST Catalog](./iceberg.md) to be enabled. - [Contact us](https://lakefs.io/lp/iceberg-rest-catalog/) to get started! - -## Overview - -Using [AWS Glue Catalog Federation](https://docs.aws.amazon.com/glue/latest/dg/catalog-federation.html), you can expose lakeFS-managed Apache Iceberg tables to any AWS service that reads from the Glue Data Catalog -- including [Amazon Athena](./athena.md), Redshift Spectrum, and EMR. - -The [`lakefs-glue`](https://github.com/treeverse/lakefs-glue-federation) CLI tool automates the creation of a federated Glue catalog that connects directly to the lakeFS Iceberg REST Catalog. Table metadata is discovered in real time through lakeFS -- no data copying or metadata syncing required. - -### How It Works - -1. A query engine (e.g. Athena) submits a SQL query referencing a table in the federated **Glue Data Catalog**. -2. **Glue** connects to the **lakeFS Iceberg REST Catalog** via a REST API connection and retrieves table metadata. -3. **Lake Formation** issues temporary, scoped S3 credentials to the query engine. -4. The query engine reads Iceberg data files directly from **S3**. - -### Prerequisites - -- A lakeFS instance with the [Iceberg REST Catalog](./iceberg.md) enabled. -- A lakeFS service account (access key and secret key). -- Python 3.11+ (for running the `lakefs-glue` CLI). -- AWS credentials with permissions to manage IAM, Glue, Lake Formation, and Secrets Manager. - -## Setting Up a Federated Catalog - -### Install the CLI - -=== "uv (recommended)" - - The easiest way to run the tool is with [`uv`](https://docs.astral.sh/uv/) -- no install needed: - - ```bash - uvx lakefs-glue federate --help - ``` - -=== "pip" - - ```bash - pip install lakefs-glue - lakefs-glue federate --help - ``` - -### Create a Federated Catalog - -Run the `federate` command to create a Glue federated catalog that points to a lakeFS repository and ref: - -=== "uv" - - ```bash - uvx lakefs-glue federate \ - --lakefs-url https://my-org.us-east-1.lakefscloud.io \ - --lakefs-repo my-repo \ - --lakefs-access-key-id AKIAIOSFODNN7EXAMPLE \ - --lakefs-secret-access-key wJalrXUtnFEMI/K7MDENG/bPxRfiCYEXAMPLEKEY - ``` - -=== "pip" - - ```bash - lakefs-glue federate \ - --lakefs-url https://my-org.us-east-1.lakefscloud.io \ - --lakefs-repo my-repo \ - --lakefs-access-key-id AKIAIOSFODNN7EXAMPLE \ - --lakefs-secret-access-key wJalrXUtnFEMI/K7MDENG/bPxRfiCYEXAMPLEKEY - ``` - -This creates a federated catalog named `lakefs-catalog` (the default) pointing to the `main` branch. - -### Configuration Options - -| Option | Required | Default | Description | -|--------|----------|---------|-------------| -| `--lakefs-url` | Yes | | lakeFS server URL | -| `--lakefs-repo` | Yes | | Repository name | -| `--lakefs-ref` | No | `main` | Branch, tag, or commit ID to expose | -| `--lakefs-access-key-id` | Yes | | Service account access key | -| `--lakefs-secret-access-key` | Yes | | Service account secret key | -| `--catalog-name` | No | `lakefs-catalog` | Name for the Glue federated catalog | -| `--region` | No | `us-east-1` | AWS region | -| `--grant-to` | No | | IAM ARNs to grant catalog access to (repeatable) | - -### What Gets Created - -The `federate` command creates the following AWS resources: - -- **Secrets Manager secret** (`-secret`) -- stores lakeFS credentials for OAuth2 authentication. -- **IAM role** (`-GlueConnectionRole`) -- assumed by Glue and Lake Formation. -- **Glue Connection** (`-connection`) -- the REST API bridge to lakeFS. -- **Lake Formation resource** -- enables S3 credential vending. -- **Glue Catalog** (``) -- the federated catalog visible in Athena and other AWS services. -- **Lake Formation grants** -- permissions for any principals specified with `--grant-to`. - -The command is idempotent: running it again with different parameters updates the existing resources. - -## Working with Multiple Branches and Refs - -Each federated catalog points to a single lakeFS ref. To query multiple branches, tags, or commits, create a separate catalog for each: - -=== "uv" - - ```bash - # Main branch - uvx lakefs-glue federate \ - --lakefs-repo my-repo \ - --lakefs-ref main \ - --catalog-name my-repo-main \ - --lakefs-url https://my-org.us-east-1.lakefscloud.io \ - --lakefs-access-key-id $LAKEFS_ACCESS_KEY_ID \ - --lakefs-secret-access-key $LAKEFS_SECRET_ACCESS_KEY - - # Development branch - uvx lakefs-glue federate \ - --lakefs-repo my-repo \ - --lakefs-ref dev \ - --catalog-name my-repo-dev \ - --lakefs-url https://my-org.us-east-1.lakefscloud.io \ - --lakefs-access-key-id $LAKEFS_ACCESS_KEY_ID \ - --lakefs-secret-access-key $LAKEFS_SECRET_ACCESS_KEY - - # A specific tag - uvx lakefs-glue federate \ - --lakefs-repo my-repo \ - --lakefs-ref v1.0 \ - --catalog-name my-repo-v1 \ - --lakefs-url https://my-org.us-east-1.lakefscloud.io \ - --lakefs-access-key-id $LAKEFS_ACCESS_KEY_ID \ - --lakefs-secret-access-key $LAKEFS_SECRET_ACCESS_KEY - ``` - -=== "pip" - - ```bash - # Main branch - lakefs-glue federate \ - --lakefs-repo my-repo \ - --lakefs-ref main \ - --catalog-name my-repo-main \ - --lakefs-url https://my-org.us-east-1.lakefscloud.io \ - --lakefs-access-key-id $LAKEFS_ACCESS_KEY_ID \ - --lakefs-secret-access-key $LAKEFS_SECRET_ACCESS_KEY - - # Development branch - lakefs-glue federate \ - --lakefs-repo my-repo \ - --lakefs-ref dev \ - --catalog-name my-repo-dev \ - --lakefs-url https://my-org.us-east-1.lakefscloud.io \ - --lakefs-access-key-id $LAKEFS_ACCESS_KEY_ID \ - --lakefs-secret-access-key $LAKEFS_SECRET_ACCESS_KEY - - # A specific tag - lakefs-glue federate \ - --lakefs-repo my-repo \ - --lakefs-ref v1.0 \ - --catalog-name my-repo-v1 \ - --lakefs-url https://my-org.us-east-1.lakefscloud.io \ - --lakefs-access-key-id $LAKEFS_ACCESS_KEY_ID \ - --lakefs-secret-access-key $LAKEFS_SECRET_ACCESS_KEY - ``` - -Each catalog appears independently in Athena and Lake Formation. - -## Querying the Federated Catalog - -Once set up, you can query your lakeFS tables from any AWS service that integrates with Glue Data Catalog. For a detailed guide with query examples, see [Using lakeFS with AWS Glue & Amazon Athena](./athena.md). - -## Removing Federated Catalogs - -To clean up federated catalogs and their associated AWS resources: - -=== "uv" - - ```bash - # Remove a specific catalog - uvx lakefs-glue rm my-catalog - - # Remove all federated catalogs - uvx lakefs-glue rm --all - - # Skip confirmation prompt - uvx lakefs-glue rm my-catalog --yes - - # Target a specific region - uvx lakefs-glue rm my-catalog --region us-west-2 - ``` - -=== "pip" - - ```bash - # Remove a specific catalog - lakefs-glue rm my-catalog - - # Remove all federated catalogs - lakefs-glue rm --all - - # Skip confirmation prompt - lakefs-glue rm my-catalog --yes - - # Target a specific region - lakefs-glue rm my-catalog --region us-west-2 - ``` - -## Limitations - -- **Read-only**: AWS Glue Catalog Federation only supports read queries. `INSERT`, `CREATE TABLE`, and other write operations are not supported. -- **Single ref per catalog**: Each federated catalog points to one lakeFS ref. Create multiple catalogs to query multiple branches or tags. -- **Flat namespaces only**: AWS Glue Catalog Federation supports only flat `catalog.namespace.table` structures -- nested namespaces are not supported. diff --git a/docs/src/integrations/hive.md b/docs/src/integrations/hive.md deleted file mode 100644 index a606cdba2f9..00000000000 --- a/docs/src/integrations/hive.md +++ /dev/null @@ -1,79 +0,0 @@ ---- -title: Apache Hive -description: This section covers how you can start using lakeFS with Apache Hive, a distributed data warehouse system that enables analytics at a massive scale. ---- - -# Using lakeFS with Apache Hive - -The [Apache Hive ™](https://hive.apache.org/) data warehouse software facilitates reading, writing, and managing large datasets residing in distributed storage using SQL. Structure can be projected onto data already in storage. A command line tool and JDBC driver are provided to connect users to Hive. - -## Configuration - -To configure Hive to work with lakeFS, you need to set the lakeFS credentials in the corresponding S3 credential fields. - -lakeFS endpoint: ```fs.s3a.endpoint``` - -lakeFS access key: ```fs.s3a.access.key``` - -lakeFS secret key: ```fs.s3a.secret.key``` - -!!! note - In the following examples, we set AWS credentials at runtime for clarity. In production, these properties should be set using one of Hadoop's standard ways of [Authenticating with S3](https://hadoop.apache.org/docs/stable/hadoop-aws/tools/hadoop-aws/index.html#Authenticating_with_S3){:target="_blank"}. - - -For example, you can add the configurations to the file ``` hdfs-site.xml```: - -```xml - - ... - - fs.s3a.secret.key - wJalrXUtnFEMI/K7MDENG/bPxRfiCYEXAMPLEKEY - - - fs.s3a.access.key - AKIAIOSFODNN7EXAMPLE - - - fs.s3a.endpoint - https://lakefs.example.com - - - fs.s3a.path.style.access - true - - -``` - -!!! info - In this example, we set `fs.s3a.path.style.access` to true to remove the need for additional DNS records for [virtual hosting](https://docs.aws.amazon.com/AmazonS3/latest/userguide/VirtualHosting.html) - `fs.s3a.path.style.access` that was introduced in Hadoop 2.8.0 - -## Examples - -### Example with schema - -```sql -CREATE SCHEMA example LOCATION 's3a://example/main/' ; -CREATE TABLE example.request_logs ( - request_time timestamp, - url string, - ip string, - user_agent string -); -``` - -### Example with an external table - -```sql -CREATE EXTERNAL TABLE request_logs ( - request_time timestamp, - url string, - ip string, - user_agent string -) LOCATION 's3a://example/main/request_logs' ; -``` - - - - diff --git a/docs/src/integrations/huggingface_datasets.md b/docs/src/integrations/huggingface_datasets.md deleted file mode 100644 index 88207f3daab..00000000000 --- a/docs/src/integrations/huggingface_datasets.md +++ /dev/null @@ -1,66 +0,0 @@ ---- -title: HuggingFace Datasets -description: Read, write and version your HuggingFace datasets with lakeFS ---- -# Versioning HuggingFace Datasets with lakeFS - -[HuggingFace 🤗 Datasets](https://huggingface.co/docs/datasets) is a library for easily accessing and sharing datasets for Audio, Computer Vision, and Natural Language Processing (NLP) tasks. - -🤗 Datasets supports access to [cloud storage](https://huggingface.co/docs/datasets/en/filesystems) providers through [fsspec](https://filesystem-spec.readthedocs.io/en/latest/) FileSystem implementations. - -[lakefs-spec](https://lakefs-spec.org/) is a community implementation of an fsspec Filesystem that fully leverages lakeFS' capabilities. Let's start by installing it: - -## Installation - -```shell -pip install lakefs-spec -``` - -## Configuration - -If you've already configured the lakeFS python SDK and/or lakectl, you should have a `$HOME/.lakectl.yaml` file that contains your access credentials and endpoint for your lakeFS environment. - -Otherwise, install [`lakectl`](../reference/cli.md#installing-lakectl-locally) and run `lakectl config` to set up your access credentials. - - -## Reading a Dataset - -To read a dataset, all we have to do is use a `lakefs://...` URI when calling [`load_dataset`](https://huggingface.co/docs/datasets/en/loading): - -```python ->>> from datasets import load_dataset ->>> ->>> dataset = load_dataset('csv', data_files='lakefs://example-repository/my-branch/data/example.csv') -``` - -That's it! this should automatically load the lakefs-spec implementation that we've installed, which will use the `$HOME/.lakectl.yaml` file to read its credentials, so we don't need to pass additional configuration. - -## Saving/Loading - -Once we've loaded a Dataset, we can save it using the `save_to_disk` method as normal: - -```python ->>> dataset.save_to_disk('lakefs://example-repository/my-branch/datasets/example/') -``` - -At this point, we might want to commit that change to lakeFS, and tag it, so we could share it with our colleagues. - -We can do it through the UI or lakectl, but let's do it with the [lakeFS Python SDK](./python.md#using-the-lakefs-sdk): - -```python ->>> import lakefs ->>> ->>> repo = lakefs.repository('example-repository') ->>> commit = repo.branch('my-branch').commit( -... 'saved my first huggingface Dataset!', -... metadata={'using': '🤗'}) ->>> repo.tag('alice_experiment1').create(commit) -``` - -Now, others on our team can load our exact dataset by using the tag we created: - -```python ->>> from datasets import load_from_disk ->>> ->>> dataset = load_from_disk('lakefs://example-repository/alice_experiment1/datasets/example/') -``` diff --git a/docs/src/integrations/iceberg-rest-catalog.md b/docs/src/integrations/iceberg-rest-catalog.md deleted file mode 100644 index f611b5fef40..00000000000 --- a/docs/src/integrations/iceberg-rest-catalog.md +++ /dev/null @@ -1,17 +0,0 @@ ---- -title: Iceberg REST Catalog -description: lakeFS Iceberg REST Catalog -status: enterprise ---- - - -# Iceberg REST Catalog - -!!! info - Available in **lakeFS Enterprise** - - -![lakeFS Iceberg REST Catalog](../assets/img/lakefs_iceberg_rest_catalog.png) - - -lakeFS implements the Iceberg REST Catalog specification, allowing any Iceberg client to work with Iceberg tables managed by lakeFS. To read more, see [**Iceberg Integration →**](./iceberg.md) \ No newline at end of file diff --git a/docs/src/integrations/iceberg.md b/docs/src/integrations/iceberg.md deleted file mode 100644 index 4d494506c8e..00000000000 --- a/docs/src/integrations/iceberg.md +++ /dev/null @@ -1,948 +0,0 @@ ---- -title: Apache Iceberg -description: How to integrate lakeFS with Apache Iceberg -status: enterprise ---- - -# Using lakeFS with Apache Iceberg - -## lakeFS Iceberg REST Catalog - -!!! info - Available in **lakeFS Enterprise** - -!!! tip - lakeFS Iceberg REST Catalog is currently in private preview for [lakeFS Enterprise](../enterprise/index.md) customers. - [Contact us](https://lakefs.io/lp/iceberg-rest-catalog/) to get started! - -### What is lakeFS Iceberg REST Catalog? - -lakeFS Iceberg REST Catalog allow you to use lakeFS as a [spec-compliant](https://github.com/apache/iceberg/blob/main/open-api/rest-catalog-open-api.yaml) Apache [Iceberg REST catalog](https://editor-next.swagger.io/?url=https://raw.githubusercontent.com/apache/iceberg/main/open-api/rest-catalog-open-api.yaml), -allowing Iceberg clients to manage and access tables using a standard REST API. - - -![lakeFS Iceberg REST Catalog](../assets/img/lakefs_iceberg_rest_catalog.png) - - -Using lakeFS Iceberg REST Catalog, you can use lakeFS a drop-in replacement for other Iceberg catalogs like AWS Glue, Nessie, Hive Metastore - or the lakeFS HadoopCatalog (see [below](#deprecated-iceberg-hadoopcatalog)) - -With lakeFS Iceberg REST Catalog, you can: - -- Manage Iceberg tables with full version control capabilities. -- Use standard Iceberg clients and tools without modification. -- Leverage lakeFS's branching and merging features for managing table's lifecycle. -- Maintain data consistency across different environments. - -### Use Cases - -1. **Version-Controlled Data Development**: - - Create feature branches for table schema changes or data migrations - - Test modifications in isolation, across multiple tables - - Merge changes safely with conflict detection -2. **Multi-Environment Management**: - - Use branches to represent different environments (dev, staging, prod) - - Promote changes between environments through merges, with automated testing - - Maintain consistent table schemas across environments -3. **Collaborative Data Development**: - - Multiple teams can work on different table features simultaneously - - Maintain data quality through pre-merge validations - - Collaborate using [pull requests](../howto/pull-requests.md) on changes to data and schema -4. **Manage and Govern Access to data**: - - Use the detailed built-in commit log capturing who, what and how data is changed - - Manage access using fine grained access control to users and groups using RBAC policies - - Rollback changes atomically and safely to reduce time-to-recover and increase system stability - -### Configuration - -The Iceberg REST catalog API is exposed at `/iceberg/api` in your lakeFS server. - -To use it: - -1. Enable the feature ([contact us](https://lakefs.io/lp/iceberg-rest-catalog/) for details). -2. Configure your Iceberg clients to use the lakeFS REST catalog endpoint. -3. Use your lakeFS access key and secret for authentication. - -#### Catalog Initialization Example (using [`pyiceberg`](https://py.iceberg.apache.org/)) - -```python -from pyiceberg.catalog.rest import RestCatalog - -catalog = RestCatalog(name = "my_catalog", **{ - 'prefix': 'lakefs', - 'uri': f'{lakefs_endpoint}/iceberg/api', - 'oauth2-server-uri': f'{lakefs_endpoint}/iceberg/api/v1/oauth/tokens', - 'credential': f'{lakefs_client_key}:{lakefs_client_secret}', -}) -``` - -#### Example Client code - -=== "Python (PyIceberg)" - ```python - import lakefs - from pyiceberg.catalog import load_catalog - - # Initialize the catalog - catalog = RestCatalog(name = "my_catalog", **{ - 'prefix': 'lakefs', - 'uri': 'https://lakefs.example.com/iceberg/api', - 'oauth2-server-uri': 'https://lakefs.example.com/iceberg/api/iceberg/api/v1/oauth/tokens', - 'credential': f'AKIAlakefs12345EXAMPLE:abc/lakefs/1234567bPxRfiCYEXAMPLEKEY', - }) - - # List namespaces in a branch - catalog.list_namespaces(('repo', 'main')) - - # Query a table - catalog.list_tables('repo.main.inventory') - table = catalog.load_table('repo.main.inventory.books') - arrow_df = table.scan().to_arrow() - ``` -=== "Trino" - ```sql - -- List tables in the iceberg catalog - USE "repo.main.inventory"; -- .. - SHOW TABLES; - - -- Query a table - SELECT * FROM books LIMIT 100; - - -- Switch to a different branch - USE "repo.new_branch.inventory"; - SELECT * FROM books; - ``` -=== "Spark" - ```scala - // Configure Spark to use the lakeFS REST catalog - spark.sql("USE my_repo.main.inventory") - - // List available tables - spark.sql("SHOW TABLES").show() - - // Query data with branch isolation - spark.sql("SELECT * FROM books").show() - - // Switch to a feature branch - spark.sql("USE my_repo.new_branch.inventory") - spark.sql("SELECT * FROM books").show() - ``` - -### Namespaces and Tables - -#### Namespace Operations - -The Iceberg Catalog supports Iceberg namespace operations: - -- Create namespaces -- List namespaces -- Drop namespaces -- List tables within namespaces - -#### Namespace Usage - -Namespaces in the Iceberg Catalog follow the pattern `"..(....)"` where: - -- `` must be a valid lakeFS repository name. -- `` must be a valid lakeFS branch name. -- `` components can be nested using unit separator (e.g., `inventory.books`). - -Examples: - -- `my-repo.main.inventory` -- `my-repo.feature-branch.inventory.books` - -The repository and branch components must already exist in lakeFS before using them in the Iceberg catalog. - - -#### Relative Namespace support - -Some Apache Iceberg clients do not support nested namespaces. - -To support those, the lakeFS REST Catalog allows specifying relative namespaces: -passing a partial namespace as part of the catalog URL endpoint (commonly, `.`). - -By doing so, all namespaces passed by the user will be relative to the namespaces passed in the URL. - -???+ example "Example: DuckDB" - DuckDB allows limited nesting in the form of `.`. When using the [Iceberg REST Catalog integration](https://duckdb.org/docs/stable/core_extensions/iceberg/overview.html){ target="_blank"}, the database is replaced by the name given to the catalog. - We can use relative namespaces to allow scoping the catalog connecting to a specific repository and branch: - ```sql - LOAD iceberg; - LOAD httpfs; - - CREATE SECRET lakefs_credentials ( - TYPE ICEBERG, - CLIENT_ID '...', - CLIENT_SECRET '...', - OAUTH2_SERVER_URI 'https://lakefs.example.com/iceberg/api/v1/oauth/tokens' - ); - - ATTACH 'lakefs' AS main_branch ( - TYPE iceberg, - SECRET lakefs_credentials, - -- notice the "/relative_to/.../" part: - ENDPOINT 'https://lakefs.example.com/iceberg/relative_to/my-repo.main/api' - ); - - USE main_branch.inventory; - SELECT * FROM books; - ``` - - See the [DuckDB documentation](https://duckdb.org/docs/stable/core_extensions/iceberg/overview.html){ target="_blank" } for a full reference on how to setup an Iceberg catalog integration. - -#### Namespace Restrictions - -- Repository and branch names must follow lakeFS naming conventions. -- Namespace components cannot contain special characters except dots (.) for nesting. -- The total namespace path length must be less than 255 characters. -- Namespaces are case-sensitive. -- Empty namespace components are not allowed. - -### Table Operations - -The Iceberg Catalog supports all standard Iceberg table operations: - -- Create tables with schemas and partitioning. -- Update table schemas and partitioning. -- Commit changes to tables. -- Delete tables. -- List tables in namespaces. - -### Version Control Features - -The Iceberg Catalog integrates with lakeFS's version control system. Table and namespace changes made through the -Iceberg API are staged on the target lakeFS reference, and may be committed to lakeFS to record these staged changes. -This provides a complete history of table modifications and enables lakeFS branching and merging workflows. - -#### Catalog Changes in lakeFS - -Iceberg changes (create/drop/commit to table, create/drop namespace) are reflected as staging changes on the relevant lakeFS (table/namespace) object. -These changes aren't committed to lakeFS, and should be explicitly committed by using lakeFS tools. - -Note that several Iceberg operations can be grouped across multiple tables into a single lakeFS commit. - -#### Branching and Merging - -Create a new branch to work on table changes: - -```python -# Create a lakeFS branch using lakeFS Python SDK -branch = lakefs.repository('repo').branch('new_branch').create(source_reference='main') - -# The table is now accessible in the new branch -new_table = catalog.load_table(f'repo.{branch.id}.inventory.books') -``` - -Merge changes between branches: - -```python -# Merge the branch using lakeFS Python SDK -branch.merge_into('main') - -# Changes are now visible in main -main_table = catalog.load_table('repo.main.inventory.books') -``` - -!!! info - lakeFS handles table changes as file operations during merges. - - This means that when merging branches with table changes, lakeFS treats the table metadata files as regular files. - - No special merge logic is applied to handle conflicting table changes, and if there are conflicting changes to the same table in different branches, - the merge will fail with a conflict that needs to be resolved manually. - -### Authentication - -lakeFS provides an OAuth2 token endpoint at `/catalog/iceberg/v1/oauth/tokens` that clients need to configure. -To authenticate, clients must provide their lakeFS access key and secret in the format `access_key:secret` as the credential. - -### Authorization - -The Iceberg REST Catalog defines its own set of RBAC actions and resources, as described in the [Authorization](#authorization) section. When using lakeFS with Iceberg, permissions must be managed through Iceberg RBAC - repository or object-level permissions alone are not sufficient. -Iceberg catalog permissions supersede any related object permissions — for example, having `fs:ReadObject` on a -repository does not grant `catalog:ReadTable` on tables in that repository. - -For general information about lakeFS RBAC, see the [RBAC documentation](../security/rbac.md). - -#### Resources - -| Resource | ARN Structure | -|-------------------|-----------------------------------------------------------------| -| Iceberg Namespace | `arn:lakefs:catalog:::namespace/{repositoryId}/{namespace}` | -| Iceberg Table | `arn:lakefs:catalog:::table/{repositoryId}/{namespace}/{table}` | -| Iceberg View | `arn:lakefs:catalog:::view/{repositoryId}/{namespace}/{view}` | - -Namespaces in the ARN use dot-separated notation (e.g., `my.namespace`). Wildcards (`*`) are supported for any path component. - -!!! note "Permissions are branch-agnostic" - The ARN structure does not include a branch component — only the repository and namespace are used for authorization. - This means that a policy granting access to a namespace in a given repository applies to that namespace on **every branch**. - For example, a policy allowing `catalog:ReadTable` on `arn:lakefs:catalog:::table/my-repo/my.namespace/*` grants - read access to tables in `my.namespace` regardless of whether the client accesses branch `main`, `dev`, or any other branch. - -#### Actions - -| Action | Resource | Description | -|----------------------------|------------|------------------------------------------------| -| `catalog:CreateNamespace` | Namespace | Create a namespace | -| `catalog:GetNamespace` | Namespace | Get namespace metadata | -| `catalog:ListNamespaces` | Namespace | List child namespaces | -| `catalog:UpdateNamespace` | Namespace | Update namespace properties | -| `catalog:DeleteNamespace` | Namespace | Delete a namespace | -| `catalog:ListTables` | Namespace | List tables within a namespace | -| `catalog:CreateTable` | Table | Create a table | -| `catalog:ReadTable` | Table | Read table metadata | -| `catalog:UpdateTable` | Table | Update or rename a table (commit, schema, etc) | -| `catalog:DeleteTable` | Table | Delete a table | -| `catalog:ListViews` | Namespace | List views within a namespace | -| `catalog:CreateView` | View | Create a view | -| `catalog:ReadView` | View | Read view metadata | -| `catalog:UpdateView` | View | Update, replace or rename a view | -| `catalog:DeleteView` | View | Delete a view | - -#### List Operations Filtering - -**Namespace filtering:** - -For `ListNamespaces`, use wildcards in the resource ARN to control which namespaces are visible to the user. - -**Example - Allow listing only namespaces starting with `analytics`:** - -```json -{ - "statement": [ - { - "effect": "allow", - "action": ["catalog:ListNamespaces"], - "resource": "arn:lakefs:catalog:::namespace/my-repo/analytics*" - } - ] -} -``` - -This policy allows the user to see only namespaces starting with `analytics` in `my-repo`. Other namespaces in the same repository are filtered out of the response. - -**Table and view filtering (using conditions):** - -For `ListTables` and `ListViews`, the namespace ARN alone is not enough to filter individual tables or views within that namespace. Policies can use the `StringLike` condition operator with the `catalog:TableName` or `catalog:ViewName` fields to control which entities are visible. - -| Condition Field | Supported Action | Description | -|---------------------|---------------------------|--------------------------------------| -| `catalog:TableName` | `catalog:ListTables` | The name of the table being listed | -| `catalog:ViewName` | `catalog:ListViews` | The name of the view being listed | - -**Example - Allow listing only tables matching a pattern:** - -```json -{ - "statement": [ - { - "effect": "allow", - "action": ["catalog:ListTables"], - "resource": "arn:lakefs:catalog:::namespace/my-repo/analytics", - "condition": { - "StringLike": { - "catalog:TableName": ["prod-*", "staging-*"] - } - } - } - ] -} -``` - -This policy allows the user to see only tables starting with `prod-` or `staging-` when listing tables in the `analytics` namespace of `my-repo`. Tables that do not match the pattern are filtered out of the response. - -**Example - Deny listing a specific view:** - -```json -{ - "statement": [ - { - "effect": "allow", - "action": ["catalog:ListViews"], - "resource": "arn:lakefs:catalog:::namespace/my-repo/my.namespace" - }, - { - "effect": "deny", - "action": ["catalog:ListViews"], - "resource": "arn:lakefs:catalog:::namespace/my-repo/my.namespace", - "condition": { - "StringLike": { - "catalog:ViewName": ["secret_view"] - } - } - } - ] -} -``` - -This policy allows the user to list all views in the `my.namespace` namespace, except for `secret_view` which is explicitly denied. - -#### Example Policies - -**Read-only access to all tables and namespaces:** - -```json -{ - "statement": [ - { - "effect": "allow", - "action": ["catalog:ReadTable"], - "resource": "arn:lakefs:catalog:::table/*/*/*" - }, - { - "effect": "allow", - "action": ["catalog:ListNamespaces", "catalog:GetNamespace"], - "resource": "arn:lakefs:catalog:::namespace/*/*" - } - ] -} -``` - -**Full access to tables in a specific repository:** - -```json -{ - "statement": [ - { - "effect": "allow", - "action": ["catalog:*"], - "resource": "arn:lakefs:catalog:::table/my-repo/*/*" - }, - { - "effect": "allow", - "action": ["catalog:*"], - "resource": "arn:lakefs:catalog:::namespace/my-repo/*" - } - ] -} -``` - -**Allow reading all tables except a specific one:** - -```json -{ - "statement": [ - { - "effect": "allow", - "action": ["catalog:ReadTable"], - "resource": "arn:lakefs:catalog:::table/my-repo/*/*" - }, - { - "effect": "deny", - "action": ["catalog:ReadTable"], - "resource": "arn:lakefs:catalog:::table/my-repo/my.namespace/secret_table" - } - ] -} -``` - -### Limitations - -1. **Table Maintenance**: - - See [Table Maintenance](#table-maintenance) section for details -2. **Advanced Features**: - - Server-side query planning - - Table renaming - - Updating table's location (using Commit) -3. lakeFS Iceberg REST Catalog is currently tested to work with Amazon S3 and Google Cloud Storage. Other storage backends, such as Azure or Local storage are currently not supported, but will be in future releases. -4. The Iceberg `v3` [table format](https://iceberg.apache.org/spec/#version-3-extended-types-and-capabilities) is currently not supported (while the most common `v2` and `v1` are). - -### Table Maintenance - -#### Compact Data Files - -In the lakeFS catalog, data integrity is maintained after data file compaction operations (such as RewriteDataFiles), -since data files are not deleted by such operations (only new snapshot and manifest files are created). - -However, to avoid unnecessary merge conflicts, we recommend marking compaction operations using `snapshotProperty()`, -so that lakeFS can automatically resolve conflicts when merging branches with compaction commits. - -**Requirements:** - -- Use the Spark Java API (not SQL procedures) with Iceberg v1.5 or newer -- Mark compaction operations with the following property and value using `snapshotProperty()`: - -```scala -SparkActions.get(spark) - .rewriteDataFiles(table) - .snapshotProperty("lakefs.compaction.operation-id", "rewrite-data-files") - .execute(); -``` - -**Conflict Resolution:** - -When merging branches, lakeFS automatically resolves conflicts if both branches have compaction commits for the same -table and at most one branch has non-compaction data changes. This allows safe merging of compacted branches without -losing work. - -!!! info - Expired or deleted snapshots will very likely lead to merge conflicts, as lakeFS cannot determine which snapshots to keep. - -!!! tip - Frequently merge compacted branches to minimize merge conflicts. - -!!! tip - Data changes are ignored in non-"main" _Iceberg_ branches ("Refs"), - so it's advised to avoid branching in Iceberg when branching in lakeFS. - -For disabling the automatic conflict resolution, -set the `iceberg.ignore_compaction_commits` configuration flag to `false` (it defaults to `true`). - -#### Unsupported Operations - -The following table maintenance operations are not supported in the current version: - -- [Drop table with purge](https://iceberg.apache.org/docs/latest/spark-ddl/#drop-table-purge) -- [Rewrite manifests](https://iceberg.apache.org/docs/latest/maintenance/#rewrite-manifests) -- [Expire snapshots](https://iceberg.apache.org/docs/latest/maintenance/#expire-snapshots) -- [Remove old metadata files](https://iceberg.apache.org/docs/latest/maintenance/#remove-old-metadata-files) -- [Delete orphan files](https://iceberg.apache.org/docs/latest/maintenance/#delete-orphan-files) - -!!! danger - **To prevent data loss, clients should disable their own cleanup operations by:** - - - Disabling orphan file deletion. - - Setting `remove-dangling-deletes` to false when rewriting. - - Disabling snapshot expiration. - - Setting a very high value for `min-snapshots-to-keep` parameter. - -### Roadmap - -The following features are planned for future releases: - -1. **Table Import**: - - Support for importing existing Iceberg tables from other catalogs - - Bulk import capabilities for large-scale migrations -1. **Azure Storage Support** -1. **Advanced Features**: - - Views API support - - Table transactions -1. **Advanced versioning capabilities** - - merge non-conflicting table updates - -### How it works - -Under the hood, the lakeFS Iceberg REST Catalog keeps track of each table's metadata file. This is typically referred to as the [table pointer](https://iceberg.apache.org/spec/#overview){ target="_blank" }. - -This pointer is stored inside the repository's [storage namespace](../understand/glossary.md#storage-namespace "A storage namespace is a path on the underlying storage that defines where a lakeFS repository stores both metadata and data"). - -When a request is made, the catalog would examine the table's fully qualified namespace: `...` to read that special pointer file from the given reference specified, -and returns the underlying object store location of the metadata file to the client. When a table is created or updated, lakeFS would make sure to generate a new metadata file inside the storage namespace, and register -that metadata file as the current pointer for the requested branch. These changes are staged in lakeFS, and may be committed to the branch. - -This approach leverages Iceberg's existing metadata and the immutability of its snapshots: a commit in lakeFS captures a metadata file, which in turn captures manifest lists, manifest files and all related data files. - -Besides simply avoiding "double booking" where both Iceberg and lakeFS would need to keep track of which files belong to which version, it also greatly improves the scalability and compatibility of the catalog with the existing Iceberg tool ecosystem. - -#### Example: Reading an Iceberg Table - -Here's a simplified example of what reading from an Iceberg table would look like: - -```mermaid -sequenceDiagram - Actor Iceberg Client - participant lakeFS Catalog API - participant lakeFS - participant Object Store - - Iceberg Client->>lakeFS Catalog API: get table metadata("repo.branch.table") - lakeFS Catalog API->>lakeFS: get('repo', 'branch', 'table') - lakeFS->>lakeFS Catalog API: physical_address - lakeFS Catalog API->>Iceberg Client: object location ("s3://.../metadata.json") - Iceberg Client->>Object Store: GetObject - Object Store->>Iceberg Client: table data -``` - -#### Example: Writing an Iceberg Table - -Here's a simplified example of what writing to an Iceberg table would look like: - -```mermaid -sequenceDiagram - Actor Iceberg Client - participant lakeFS Catalog API - participant lakeFS - participant Object Store - Iceberg Client->>Object Store: write table data - Iceberg Client->>lakeFS Catalog API: Iceberg commit - lakeFS Catalog API->>lakeFS: stage('new table pointer') - lakeFS->>Object Store: PutObject("metdata.json") - lakeFS Catalog API->>Iceberg Client: Iceberg commit done - Iceberg Client->>lakeFS: lakeFS commit('repo','branch', message) -``` - -### Related Resources - -!!! question "Further Reading" - - [Iceberg REST Catalog API Specification](https://editor-next.swagger.io/?url=https://raw.githubusercontent.com/apache/iceberg/main/open-api/rest-catalog-open-api.yaml) - - [Iceberg Official Documentation](https://iceberg.apache.org/docs/latest/) - - [lakeFS Enterprise Features](../enterprise/index.md) - -## Catalog Sync - -Catalog Sync allows you to synchronize Iceberg tables between the lakeFS catalog and external catalogs such as AWS Glue Data Catalog or other Iceberg REST-compatible catalogs. -This enables workflows where some users or tools need to access data through other external catalogs. - -### Use Cases - -**Collaboration with External Tools**: Share data with users who rely on tools that only support specific catalogs. -For example, data engineers can work with tables in lakeFS while data analysts query the same data through AWS Glue using Athena, all while maintaining isolation and version control. - -```mermaid -sequenceDiagram - actor Alice (Data Engineer) - actor Bob (Data Analyst) - participant lakeFS - participant AWS Glue - Alice (Data Engineer)->>lakeFS: Update tables on branch 'dev' - Alice (Data Engineer)->>lakeFS: Push tables to Glue - lakeFS->>AWS Glue: Register tables in 'dev' database - Alice (Data Engineer)->>Bob (Data Analyst): Please review: glue/dev - Bob (Data Analyst)->>AWS Glue: SELECT * FROM dev.table (via Athena) - Bob (Data Analyst)->>Alice (Data Engineer): Approved! - Alice (Data Engineer)->>lakeFS: Merge 'dev' into 'main' -``` - -**Isolated Pipelines**: Run data pipelines using tools that require external catalogs while maintaining isolation through lakeFS branches. -Create a branch, push tables to an external catalog, run your pipeline, pull the changes back, and merge into main. - -```mermaid -sequenceDiagram - participant Orchestrator - participant lakeFS - participant External Catalog - participant Pipeline Tool - Orchestrator->>lakeFS: Create branch 'etl-2024-01-15' - Orchestrator->>lakeFS: Push tables to external catalog - lakeFS->>External Catalog: Register tables - Orchestrator->>Pipeline Tool: Run ETL pipeline - Pipeline Tool->>External Catalog: Read/write tables - Orchestrator->>lakeFS: Pull updated tables - lakeFS->>External Catalog: Read updated metadata - Orchestrator->>lakeFS: Merge 'etl-2024-01-15' into 'main' -``` - -### Configuration - -Remote catalogs are configured in your [lakeFS configuration file](../reference/configuration.md). -Each remote catalog requires a unique identifier and type-specific connection properties. - -!!! note - In case you need help configuring a remote catalog, contact [support](mailto:support@treeverse.io). - -#### AWS Glue Data Catalog - -Configure an AWS Glue catalog by specifying the region and AWS credentials: - -```yaml -iceberg_catalog: - remotes: - - id: aws_glue_us_east_1 - type: glue - glue: - region: us-east-1 - access_key_id: - secret_access_key: -``` - -#### Iceberg REST Catalog - -Configure a generic Iceberg REST catalog with basic authentication: - -```yaml -iceberg_catalog: - remotes: - - id: remote_catalog - type: rest - rest: - uri: https://catalog.example.com/iceberg/api - credential: : -``` - -Or with OAuth2 client credentials flow: - -```yaml -iceberg_catalog: - remotes: - - id: remote_catalog - type: rest - rest: - uri: https://catalog.example.com/iceberg/api - credential: : - oauth_server_uri: https://auth.example.com/oauth/tokens - oauth_scope: catalog:read catalog:write -``` - -### Push to remote - -Push operations register a table from lakeFS into a remote catalog. -The table's metadata and data remain in lakeFS-managed storage, which are used as the pushed table's location. - -**API Endpoint**: `POST /iceberg/remotes/{catalog-id}/push` - -**Parameters**: -- `source`: The lakeFS table location (repository, branch/reference, namespace, table name) -- `destination`: The remote catalog location (namespace, table name) -- `force_update`: (optional, default: `false`) Override the table if it already exists in the remote catalog -- `create_namespace`: (optional, default: `false`) Create the namespace in the remote catalog if it doesn't exist - -**Example**: - -```bash -curl -X POST "https://lakefs.example.com/iceberg/remotes/aws_glue_us_east_1/push" \ - -H "Authorization: Bearer $LAKEFS_ACCESS_TOKEN" \ - -H "Content-Type: application/json" \ - -d '{ - "source": { - "repository_id": "my-repo", - "reference_id": "main", - "namespace": ["default", "features"], - "table": "image_properties" - }, - "destination": { - "namespace": ["main_features"], - "table": "image_properties" - }, - "create_namespace": true, - "force_update": true - }' -``` - -This example pushes the table `my-repo.main.default.features.image_properties` from lakeFS to the AWS Glue catalog as `main_features.image_properties`. -It creates the remote namespace if needed (since `create_namespace: true`), -and overwrites any existing table or possible recent updates committed to it (since `force_update: true`). - -### Pull from remote - -Pull operations update a lakeFS table with changes from a remote catalog. -This is useful after external tools have modified a table previously pushed from lakeFS. - -**API Endpoint**: `POST /iceberg/remotes/{catalog-id}/pull` - -**Parameters**: -- `source`: The remote catalog location (namespace, table name) -- `destination`: The lakeFS table location (repository, branch/reference, namespace, table name) -- `force_update`: (optional, default: `false`) Override the table in lakeFS if metadata conflicts exist -- `create_namespace`: (optional, default: `false`) Create the namespace in lakeFS if it doesn't exist - -**Example**: - -```bash -curl -X POST "https://lakefs.example.com/iceberg/remotes/aws_glue_us_east_1/pull" \ - -H "Authorization: Bearer $LAKEFS_ACCESS_TOKEN" \ - -H "Content-Type: application/json" \ - -d '{ - "source": { - "namespace": ["main_features"], - "table": "image_properties" - }, - "destination": { - "repository_id": "my-repo", - "reference_id": "main", - "namespace": ["default", "features"], - "table": "image_properties" - } - "create_namespace": true, - "force_update": true - }' -``` - -This example pulls changes from the Glue table `main_features.image_properties` back into the lakeFS table `my-repo.main.default.features.image_properties`. -It creates the namespace in lakeFS if needed (since `create_namespace: true`), -and overwrites any existing table or possible recent updates committed to it (since `force_update: true`). - -### Important Notes - -1. **Storage Location**: Pulled tables' `metadata.json` file must reside in a storage location to which lakeFS has read access to, or the `pull` operation will fail. - -2. **Atomicity**: Push and pull operations are not atomic. If an operation fails partway through, manual intervention may be required - (contact [support](mailto:support@treeverse.io) in such a case if needed). - -3. **Authentication**: Ensure the credentials configured for remote catalogs have appropriate permissions: - - For AWS Glue: `glue:CreateTable`, `glue:UpdateTable`, `glue:GetTable`, `glue:CreateDatabase` (if `create_namespace` is used) - - For REST catalogs: Appropriate OAuth scopes for table and namespace operations - -4. **Namespace Format**: Namespaces are represented as arrays of strings to support nested namespaces (e.g., `["accounting", "tax"]` represents `accounting.tax`). - ---- - -## Deprecated: Iceberg HadoopCatalog - -!!! warning - `HadoopCatalog` and other filesystem-based catalogs are currently not recommended by the Apache Iceberg community and come with several limitations around concurrency and tooling. - - As such, the `HadoopCatalog` described in this section is now deprecated and will not receive further updates - -

Setup

- -=== "Maven" - Use the following Maven dependency to install the lakeFS custom catalog: - - ```xml - - io.lakefs - lakefs-iceberg - 0.1.4 - - ``` - -=== "PySpark" - Include the `lakefs-iceberg` jar in your package list along with Iceberg. For example: - - ```python - .config("spark.jars.packages", "org.apache.iceberg:iceberg-spark-runtime-3.3_2.12:1.3.0,io.lakefs:lakefs-iceberg:0.1.4") - ``` - -

Configuration

- - -=== "PySpark" - Set up the Spark SQL catalog: - ```python - .config("spark.sql.catalog.lakefs", "org.apache.iceberg.spark.SparkCatalog") \ - .config("spark.sql.catalog.lakefs.catalog-impl", "io.lakefs.iceberg.LakeFSCatalog") \ - .config("spark.sql.catalog.lakefs.warehouse", f"lakefs://{repo_name}") \ - .config("spark.sql.catalog.lakefs.cache-enabled", "false") - ``` - - Configure the S3A Hadoop FileSystem with your lakeFS connection details. - Note that these are your lakeFS endpoint and credentials, not your S3 ones. - - ```python - .config("spark.hadoop.fs.s3.impl", "org.apache.hadoop.fs.s3a.S3AFileSystem") \ - .config("spark.hadoop.fs.s3a.endpoint", "https://example-org.us-east-1.lakefscloud.io") \ - .config("spark.hadoop.fs.s3a.access.key", "AKIAIO5FODNN7EXAMPLE") \ - .config("spark.hadoop.fs.s3a.secret.key", "wJalrXUtnFEMI/K3MDENG/bPxRfiCYEXAMPLEKEY") \ - .config("spark.hadoop.fs.s3a.path.style.access", "true") - ``` -=== "Spark Shell" - - ```shell - spark-shell --conf spark.sql.catalog.lakefs="org.apache.iceberg.spark.SparkCatalog" \ - --conf spark.sql.catalog.lakefs.catalog-impl="io.lakefs.iceberg.LakeFSCatalog" \ - --conf spark.sql.catalog.lakefs.warehouse="lakefs://example-repo" \ - --conf spark.sql.catalog.lakefs.cache-enabled="false" \ - --conf spark.hadoop.fs.s3.impl="org.apache.hadoop.fs.s3a.S3AFileSystem" \ - --conf spark.hadoop.fs.s3a.endpoint="https://example-org.us-east-1.lakefscloud.io" \ - --conf spark.hadoop.fs.s3a.access.key="AKIAIO5FODNN7EXAMPLE" \ - --conf spark.hadoop.fs.s3a.secret.key="wJalrXUtnFEMI/K3MDENG/bPxRfiCYEXAMPLEKEY" \ - --conf spark.hadoop.fs.s3a.path.style.access="true" - ``` - -

Using Iceberg tables with HadoopCatalog

- -

Create a table

- -To create a table on your main branch, use the following syntax: - -```sql -CREATE TABLE lakefs.main.db1.table1 (id int, data string); -``` - -

Insert data into the table

- -```sql -INSERT INTO lakefs.main.db1.table1 VALUES (1, 'data1'); -INSERT INTO lakefs.main.db1.table1 VALUES (2, 'data2'); -``` - -

Create a branch

- -We can now commit the creation of the table to the main branch: - -```shell -lakectl commit lakefs://example-repo/main -m "my first iceberg commit" -``` - -Then, create a branch: - -```shell -lakectl branch create lakefs://example-repo/dev -s lakefs://example-repo/main -``` - -

Make changes on the branch

- -We can now make changes on the branch: - -```sql -INSERT INTO lakefs.dev.db1.table1 VALUES (3, 'data3'); -``` - -

Query the table

- -If we query the table on the branch, we will see the data we inserted: - -```sql -SELECT * FROM lakefs.dev.db1.table1; -``` - -Results in: - - -```text -+----+------+ -| id | data | -+----+------+ -| 1 | data1| -| 2 | data2| -| 3 | data3| -+----+------+ -``` - -However, if we query the table on the main branch, we will not see the new changes: - -```sql -SELECT * FROM lakefs.main.db1.table1; -``` - -Results in: - -```text -+----+------+ -| id | data | -+----+------+ -| 1 | data1| -| 2 | data2| -+----+------+ -``` - -

Migrating an existing Iceberg table to the Hadoop Catalog

- -This is done through an incremental copy from the original table into lakeFS. - -1. Create a new lakeFS repository `lakectl repo create lakefs://example-repo ` -2. Initiate a spark session that can interact with the source iceberg table and the target lakeFS catalog. - Here's an example of Hadoop and S3 session and lakeFS catalog with [per-bucket config](https://docs.cloudera.com/HDPDocuments/HDP3/HDP-3.1.4/bk_cloud-data-access/content/s3-per-bucket-configs.html): - - ```java - SparkConf conf = new SparkConf(); - conf.set("spark.hadoop.fs.s3a.path.style.access", "true"); - - // set hadoop on S3 config (source tables we want to copy) for spark - conf.set("spark.sql.catalog.hadoop_prod", "org.apache.iceberg.spark.SparkCatalog"); - conf.set("spark.sql.catalog.hadoop_prod.type", "hadoop"); - conf.set("spark.sql.catalog.hadoop_prod.warehouse", "s3a://my-bucket/warehouse/hadoop/"); - conf.set("spark.sql.extensions", "org.apache.iceberg.spark.extensions.IcebergSparkSessionExtensions"); - conf.set("spark.hadoop.fs.s3a.bucket.my-bucket.access.key", ""); - conf.set("spark.hadoop.fs.s3a.bucket.my-bucket.secret.key", ""); - - // set lakeFS config (target catalog and repository) - conf.set("spark.sql.catalog.lakefs", "org.apache.iceberg.spark.SparkCatalog"); - conf.set("spark.sql.catalog.lakefs.catalog-impl", "io.lakefs.iceberg.LakeFSCatalog"); - conf.set("spark.sql.catalog.lakefs.warehouse", "lakefs://example-repo"); - conf.set("spark.sql.extensions", "org.apache.iceberg.spark.extensions.IcebergSparkSessionExtensions"); - conf.set("spark.hadoop.fs.s3a.bucket.example-repo.access.key", ""); - conf.set("spark.hadoop.fs.s3a.bucket.example-repo.secret.key", ""); - conf.set("spark.hadoop.fs.s3a.bucket.example-repo.endpoint" , ""); - ``` -3. Create Schema in lakeFS and copy the data - - Example of copy with spark-sql: - - ```sql - -- Create Iceberg Schema in lakeFS - CREATE SCHEMA IF NOT EXISTS .. - -- Create new iceberg table in lakeFS from the source table (pre-lakeFS) - CREATE TABLE IF NOT EXISTS .. USING iceberg AS SELECT * FROM - ``` diff --git a/docs/src/integrations/kafka.md b/docs/src/integrations/kafka.md deleted file mode 100644 index f6ab275c193..00000000000 --- a/docs/src/integrations/kafka.md +++ /dev/null @@ -1,30 +0,0 @@ ---- -title: Apache Kafka -description: This section explains how you can start using lakeFS with Kafka using Confluent’s S3 Sink Connector. ---- - -# Using lakeFS with Apache Kafka - -[Apache Kafka](https://kafka.apache.org/) provides a unified, high-throughput, low-latency platform for handling real-time data feeds. - -Different distributions of Kafka offer different methods for exporting data to S3 called Kafka Sink Connectors. - -The most commonly used Connector for S3 is [Confluent's S3 Sink Connector](https://docs.confluent.io/current/connect/kafka-connect-s3/index.html). - -Add the following to `connector.properties` file for lakeFS support: - -```properties -# Your lakeFS repository -s3.bucket.name=example-repo - -# Your lakeFS S3 endpoint and credentials -store.url=https://lakefs.example.com -aws.access.key.id=AKIAIOSFODNN7EXAMPLE -aws.secret.access.key=wJalrXUtnFEMI/K7MDENG/bPxRfiCYEXAMPLEKEY - -# main being the branch we want to write to -topics.dir=main/topics -``` - -!!! example - For usage examples, see the lakeFS [Kafka sample repo](https://github.com/treeverse/lakeFS-samples/tree/main/01_standalone_examples/kafka). diff --git a/docs/src/integrations/kubeflow.md b/docs/src/integrations/kubeflow.md deleted file mode 100644 index e3896c8ecb0..00000000000 --- a/docs/src/integrations/kubeflow.md +++ /dev/null @@ -1,106 +0,0 @@ ---- -title: Kubeflow -description: Easily build reproducible data pipelines with Kubeflow and lakeFS using commits, without modifying the code or logic of your job. ---- -# Using lakeFS with Kubeflow pipelines -[Kubeflow](https://www.kubeflow.org/docs/about/kubeflow/) is a project dedicated to making deployments of ML workflows on Kubernetes simple, portable, and scalable. -A Kubeflow pipeline is a portable and scalable definition of an ML workflow composed of steps. Each step in the pipeline is an instance of a component represented as an instance of [ContainerOp](https://kf-pipelines.readthedocs.io/en/latest/source/kfp.dsl.html#kfp.dsl.ContainerOp). - - -## Add pipeline steps for lakeFS operations - -To integrate lakeFS into your Kubeflow pipeline, you need to create Kubeflow components that perform lakeFS operations. -Currently, there are two methods to create lakeFS `ContainerOps`: - -1. Implement a function-based ContainerOp that uses the lakeFS Python API to invoke lakeFS operations. -1. Implement a ContainerOp that uses the `lakectl` CLI docker image to invoke lakeFS operations. - -### Function-based ContainerOps - -To implement a [function-based component](https://www.kubeflow.org/docs/components/pipelines/legacy-v1/sdk/python-function-components/) that invokes lakeFS operations, -you should use the [Python OpenAPI client](./python.md) lakeFS provides. See the example below that demonstrates how to make the client's package available to your ContainerOp. - -#### Example operations - -Create a new branch: A function-based ContainerOp that creates a branch called `example-branch` based on the `main` branch of `example-repo`. - -```python -from kfp import components - -def create_branch(repo_name, branch_name, source_branch): - import lakefs - from lakefs.client import Client - client = Client( - host="https://lakefs.example.com", - username="AKIAIOSFODNN7EXAMPLE", - password="wJalrXUtnFEMI/K7MDENG/bPxRfiCYEXAMPLEKEY", - ) - lakefs.repository(repo_name, client=client).branch(branch_name).create(source_reference=source_branch) - -# Convert the function to a lakeFS pipeline step. -create_branch_op = components.func_to_container_op( - func=create_branch, - packages_to_install=['lakefs']) -``` - -You can invoke any lakeFS operation supported by lakeFS OpenAPI. For example, you could implement a commit and merge function-based ContainerOps. -Check out the [Python documentation](./python.md) and the full [API reference](../reference/api.md). - -### Non-function-based ContainerOps - -To implement a non-function based ContainerOp, you should use the [`treeverse/lakectl`](https://hub.docker.com/r/treeverse/lakectl) docker image. -With this image, you can run [lakectl](../reference/cli.md) commands to execute the desired lakeFS operation. - -For `lakectl` to work with Kubeflow, you will need to pass your lakeFS configurations as environment variables named: - -* `LAKECTL_CREDENTIALS_ACCESS_KEY_ID: AKIAIOSFODNN7EXAMPLE` -* `LAKECTL_SECRET_ACCESS_KEY: wJalrXUtnFEMI/K7MDENG/bPxRfiCYEXAMPLEKEY` -* `LAKECTL_SERVER_ENDPOINT_URL: https://lakefs.example.com` - -#### Example operations - -1. Commit changes to a branch: A ContainerOp that commits uncommitted changes to `example-branch` on `example-repo`. - ```python - from kubernetes.client.models import V1EnvVar - - def commit_op(): - return dsl.ContainerOp( - name='commit', - image='treeverse/lakectl', - arguments=['commit', 'lakefs://example-repo/example-branch', '-m', 'commit message']).add_env_variable(V1EnvVar(name='LAKECTL_CREDENTIALS_ACCESS_KEY_ID',value='AKIAIOSFODNN7EXAMPLE')).add_env_variable(V1EnvVar(name='LAKECTL_CREDENTIALS_SECRET_ACCESS_KEY',value='wJalrXUtnFEMI/K7MDENG/bPxRfiCYEXAMPLEKEY')).add_env_variable(V1EnvVar(name='LAKECTL_SERVER_ENDPOINT_URL',value='https://lakefs.example.com')) - ``` -1. Merge two lakeFS branches: A ContainerOp that merges `example-branch` into the `main` branch of `example-repo`. - ```python - def merge_op(): - return dsl.ContainerOp( - name='merge', - image='treeverse/lakectl', - arguments=['merge', 'lakefs://example-repo/example-branch', 'lakefs://example-repo/main']).add_env_variable(V1EnvVar(name='LAKECTL_CREDENTIALS_ACCESS_KEY_ID',value='AKIAIOSFODNN7EXAMPLE')).add_env_variable(V1EnvVar(name='LAKECTL_CREDENTIALS_SECRET_ACCESS_KEY',value='wJalrXUtnFEMI/K7MDENG/bPxRfiCYEXAMPLEKEY')).add_env_variable(V1EnvVar(name='LAKECTL_SERVER_ENDPOINT_URL',value='https://lakefs.example.com')) - ``` - -You can invoke any lakeFS operation supported by `lakectl` by implementing it as a ContainerOp. Check out the complete [CLI reference](../reference/cli.md) for the list of supported operations. - - -!!! note - The lakeFS Kubeflow integration that uses `lakectl` is supported on lakeFS version >= v0.43.0. - -## Add the lakeFS steps to your pipeline - -Add the steps created in the previous step to your pipeline before compiling it. - -### Example pipeline - -A pipeline that implements a simple ETL that has steps for branch creation and commits. - -```python -def lakectl_pipeline(): - create_branch_task = create_branch_op('example-repo', 'example-branch', 'main') # A function-based component - extract_task = example_extract_op() - commit_task = commit_op() - transform_task = example_transform_op() - commit_task = commit_op() - load_task = example_load_op() -``` - -!!! info - It's recommended to store credentials as Kubernetes secrets and pass them as [environment variables](https://kubernetes.io/docs/concepts/configuration/secret/#using-secrets-as-environment-variables ) to Kubeflow operations using [V1EnvVarSource](https://github.com/kubernetes-client/python/blob/master/kubernetes/docs/V1EnvVarSource.md). diff --git a/docs/src/integrations/lancedb.md b/docs/src/integrations/lancedb.md deleted file mode 100644 index 635ff029ebf..00000000000 --- a/docs/src/integrations/lancedb.md +++ /dev/null @@ -1,90 +0,0 @@ ---- -title: LanceDB -description: This section explains how you can start using lakeFS with LanceDB. -status: new ---- - -# Using lakeFS with LanceDB - -[LanceDB](https://lancedb.com/) is a vector database that allows you to store and query vector data. - -LanceDB works directly on an object store, so you can use it to store and query vector data in lakeFS. - -## Configuring LanceDB to work with lakeFS - -To configure LanceDB to work with lakeFS, configure it to use the lakeFS [S3 Gateway](../understand/architecture.md#s3-gateway): - - -```python -import lancedb # pip install lancedb - -db = lancedb.connect( - # structure: s3://// - uri="s3://example-repo/example-branch/path/to/lancedb", - storage_options={ - # Your lakeFS S3 Gateway - "endpoint": "https://example.lakefs.io", - # Access key and secret of a lakeFS user with permissions - # to read and write data from that path - "access_key_id": "AKIAIOSFODNN7EXAMPLE", - "secret_access_key": "wJalrXUtnFEMI/K7MDENG/bPxRfiCYEXAMPLEKEY", - } -) - -# table "vectors" on the branch "example-branch" in the repository "example-repo" -table = db.open_table('vectors') - -# update and query some data! -table.add([{'id': '1', 'embedding': generate_embedding('some data')}]) -df = db.open_table('vectors').search(generate_embedding('some other data')).limit(10).to_pandas() -``` -!!! tip - For more information on configuring object store access in LanceDB, see [Configuring Cloud Storage in LanceDB](https://docs.lancedb.com/storage/configuration). - - -## Use Cases - -Running LanceDB on top of lakeFS has a few major benefits: - -### Multimodal data storage - -In many cases, LanceDB stores embeddings of data that exists elsewhere: documents, images, text files etc. These "raw" data files are processed to extract embeddings, which are then stored in LanceDB - but they are also stored in their raw form for retrieval, and in some cases metadata about them is stored in other formats for use in a data warehouse or data lake. - -By co-locating these embeddings together with the other modalities, you can perform more complex queries and analysis without giving up on consistency: a commit will capture both the vector embeddings, raw data, and metadata as one atomic unit. - -![lakeFS image modalities](../assets/img/image-modalities.png) - - -### Differential processing of new data - -lakeFS provides a highly performant and scalable way understand how data changes over time. For example, say we store raw image data in `images/` - we can update the raw data by adding, removing or updating images in the `images/` directory - and lakeFS will capture the changes as a commit. - -This allows you to perform differential processing of new data: If we have an `images` table in LanceDB we can keep track of the latest commit represented in that table. As new data arrives, we can update our embeddings with the latest commit by diffing the previous commit and the new one, resulting in a minimal set of embeddings to add, remove or update: - - -![lakeFS image modalities](../assets/img/lancedb-differential-processing.png) - - -### Ensuring high quality data with Write, Audit, Publish hooks - -Using [lakeFS hooks](../howto/hooks/index.md), you can ensure the vector embeddings meet a certain threshold for quality before they are made available for inference. These quality checks can be triggered automatically before new data is merged into a `main` or `production` branch. These tests could be: - -* **Coverage:** How many of the images in the dataset have been processed and have embeddings? How many embeddings point to images no longer in the dataset? -* **Governance:** Are the embeddings consistent with the data policy? Do they contain any PII? -* **Accuracy:** Are the embeddings accurate? Do they match the expected output? -* **Drift:** Are metrics like centroid shift and norm drift within acceptable limits? - -If any of these tests fail, the commit will be rejected and the data will not be made available for inference. This ensures that the data is of high quality and that it is consistent with the data policy. - -![lakeFS image modalities](../assets/img/lancedb-drift.png) - -### Traceable & Reproducible inference - -Once deployed on lakeFS, querying the vector embeddings has to be done by specifying the branch, tag or commit ID of the data you want to query. -Capturing the commit ID of the data you want to query allows you to reproduce the exact same results at any point in time. A common approach is to capture this commit ID in inference logs - allowing you to reproduce the exact same results as the user or agent that originally made the query. - -While this sounds simple, vector databases often change quite frequently over time, making it hard to answer questions like "why did this customer complain about the chatbot being rude?" or "why did this product recommendation not work for this user?". - -By tying that commit ID to the query, we can even go further and see the raw data as it existed at that point in time, complete with a commit log of who introduced that change, when and why. - -![LanceDB reproducible query](../assets/img/lancedb-repro.png) diff --git a/docs/src/integrations/matlab.md b/docs/src/integrations/matlab.md deleted file mode 100644 index 3d3b0b8beac..00000000000 --- a/docs/src/integrations/matlab.md +++ /dev/null @@ -1,554 +0,0 @@ -# MATLAB Integration - -Integrate lakeFS with MATLAB for data version control in MATLAB data science, data engineering, and machine learning workflows. - -## Overview - -The lakeFS MATLAB integration provides native MATLAB functions to interact with lakeFS repositories, enabling: - -- **Version control for data**: Track datasets, models, and results across experiments -- **Reproducible research**: Link code to specific data versions with commit IDs -- **Isolated experimentation**: Create branches for parallel experiments without data duplication -- **Direct data access**: Mount lakeFS repositories as local directories using Everest - -This integration uses two MATLAB helper classes: -- **`lakefs.m`**: Core lakeFS operations (branches, commits, tags, metadata) -- **everest.m**: File system mounting for direct data access - -## Prerequisites - -Before using lakeFS with MATLAB, ensure you have: - -1. **lakeFS Server**: Running instance (local or cloud) - - [Quick Start Guide](https://community.lakefs.io/latest/quickstart/) - - [Cloud Setup](https://lakefs.cloud) - -2. **lakectl CLI**: Installed and configured - - [lakectl Installation](https://community.lakefs.io/latest/reference/cli/) - - Configuration file at `~/.lakectl.yaml` - -3. **Everest** (optional, for mounting): File system interface - - [Everest Documentation](https://community.lakefs.io/latest/reference/mount/) - - Install: `brew install treeverse/brew/everest` (macOS) - -4. **MATLAB**: Version R2023a or later recommended - - -## Installation - -### Configure lakeFS Connection - -Create your lakeFS configuration by copying and editing the template: - -**`lakefs_template.m`**: -```matlab -classdef lakefs_template - % LAKEFS_TEMPLATE - Configuration template for lakeFS connection - % - % SETUP: - % 1. Copy this file to lakefs.m in your project directory - % 2. Fill in your credentials below - % 3. Keep lakefs.m out of version control (.gitignore) - - properties(Constant) - % === LOCAL CONFIGURATION === - LOCAL_ENDPOINT = 'http://localhost:8000' - LOCAL_ACCESS_KEY = 'YOUR_ACCESS_KEY_HERE' - LOCAL_SECRET_KEY = 'YOUR_SECRET_KEY_HERE' - - % === CLOUD CONFIGURATION === - CLOUD_ENDPOINT = 'https://your-org.us-east-1.lakefscloud.io' - CLOUD_ACCESS_KEY = 'YOUR_CLOUD_ACCESS_KEY_HERE' - CLOUD_SECRET_KEY = 'YOUR_CLOUD_SECRET_KEY_HERE' - - % === CURRENT CONFIGURATION (will be set by configure()) === - % These will be populated when you call lakefs.configure() - end - - properties(Access=private) - current_endpoint - current_access_key - current_secret_key - end - - methods(Static) - function configure(environment) - % CONFIGURE - Set active lakeFS environment - % - % Syntax: - % lakefs.configure('local') % Use local lakeFS - % lakefs.configure('cloud') % Use cloud lakeFS - end - end -end -``` - -**Configuration steps**: - -1. Copy `lakefs_template.m` to `lakefs.m` -2. Edit credentials in `lakefs.m` -3. Add `lakefs.m` to `.gitignore` to keep credentials private -4. Set active environment in your scripts: - -```matlab -% Use local lakeFS instance -lakefs.configure('local'); - -% Or use cloud lakeFS instance -lakefs.configure('cloud'); -``` - -## Basic Usage - -### Repository Operations - -**List branches**: -```matlab -% List all branches in a repository -branches = lakefs.list_branches('my-repo'); -disp(branches.branch); -``` - -**List tags**: -```matlab -% List all tags -tags = lakefs.list_tags('my-repo'); -disp(tags.tag); -``` - -**View commit history**: -```matlab -% Get commit log for a branch -commits = lakefs.log('my-repo', 'main', 'amount', 5); -for i = 1:height(commits) - fprintf('%s: %s\n', commits.id{i}(1:12), commits.message{i}); -end -``` - -### Branch Management - -**Create a branch**: -```matlab -% Create experiment branch from main -lakefs.create_branch('my-repo', 'experiment-1', 'main'); -``` - -**Compare branches**: -```matlab -% Show differences between branches -diff = lakefs.diff('my-repo', 'main', 'experiment-1'); -fprintf('Changed objects: %d\n', height(diff)); -``` - -### Data Operations - -**Upload data**: -```matlab -% Upload local file to lakeFS branch -lakefs.upload('my-repo', 'experiment-1', ... - 'data/results.mat', ... % Destination in lakeFS - 'local/output/results.mat'); % Local source file -``` - -**Download data**: -```matlab -% Download file from lakeFS -lakefs.download('my-repo', 'main', ... - 'models/trained_model.mat', ... % Source in lakeFS - 'local/models/model.mat'); % Local destination -``` - -**Commit changes**: -```matlab -% Commit with metadata -metadata = struct(); -metadata.accuracy = '0.945'; -metadata.training_time = '120.5'; -metadata.dataset = 'v1.2'; - -lakefs.commit('my-repo', 'experiment-1', ... - 'Trained model with improved accuracy', ... - 'metadata', metadata); -``` - -### Mounting (Everest) - -For direct file system access, use Everest to mount lakeFS paths: - -```matlab -% Mount a branch -everest.mount('lakefs://my-repo/main/', 'local_data/'); - -% Read files directly -data = load('local_data/results.mat'); - -% Unmount when done -everest.umount('local_data/'); -``` - -**Note**: Mounting enables standard MATLAB file I/O functions to work with lakeFS data without explicit upload/download operations. - -## Core API Reference - -### lakefs.m - Repository Operations - -#### Configuration - -```matlab -lakefs.configure(environment) -``` -**Description**: Set active lakeFS environment -**Parameters**: -- `environment` (string): `'local'` or `'cloud'` - ---- - -#### Branch Operations - -```matlab -branches = lakefs.list_branches(repo) -``` -**Description**: List all branches in repository -**Parameters**: -- `repo` (string): Repository name -**Returns**: Table with branch names and commit IDs - -```matlab -lakefs.create_branch(repo, branch_name, source_ref) -``` -**Description**: Create new branch from source reference -**Parameters**: -- `repo` (string): Repository name -- `branch_name` (string): New branch name -- `source_ref` (string): Source branch or commit ID - ---- - -#### Commit Operations - -```matlab -commits = lakefs.log(repo, ref, varargin) -``` -**Description**: Get commit history -**Parameters**: -- `repo` (string): Repository name -- `ref` (string): Branch or commit reference -- Optional: `'amount', N` - Limit number of commits returned -**Returns**: Table with commit IDs, messages, timestamps, metadata - -```matlab -lakefs.commit(repo, branch, message, varargin) -``` -**Description**: Commit changes to branch -**Parameters**: -- `repo` (string): Repository name -- `branch` (string): Branch name -- `message` (string): Commit message -- Optional: `'metadata', struct` - Attach metadata to commit - ---- - -#### Data Transfer - -```matlab -lakefs.upload(repo, branch, lakefs_path, local_path) -``` -**Description**: Upload local file to lakeFS -**Parameters**: -- `repo` (string): Repository name -- `branch` (string): Branch name -- `lakefs_path` (string): Destination path in lakeFS -- `local_path` (string): Source file on local system - -```matlab -lakefs.download(repo, ref, lakefs_path, local_path) -``` -**Description**: Download file from lakeFS -**Parameters**: -- `repo` (string): Repository name -- `ref` (string): Branch, tag, or commit ID -- `lakefs_path` (string): Source path in lakeFS -- `local_path` (string): Destination on local system - ---- - -#### Comparison - -```matlab -diff = lakefs.diff(repo, left_ref, right_ref) -``` -**Description**: Compare two references -**Parameters**: -- `repo` (string): Repository name -- `left_ref` (string): First reference (branch/tag/commit) -- `right_ref` (string): Second reference -**Returns**: Table showing changed, added, removed objects - ---- - -#### Tags - -```matlab -tags = lakefs.list_tags(repo) -``` -**Description**: List all tags -**Parameters**: -- `repo` (string): Repository name -**Returns**: Table with tag names and commit IDs - -### everest.m - File System Operations - -#### Mounting - -```matlab -everest.mount(lakefs_uri, mount_dir, varargin) -``` -**Description**: Mount lakeFS path as local directory -**Parameters**: -- `lakefs_uri` (string): Full lakeFS URI (e.g., `'lakefs://repo/branch/path/'`) -- `mount_dir` (string): Local mount point -- Optional: `'presign', true` - Use presigned URLs (default: true) - -```matlab -everest.umount(mount_dir) -``` -**Description**: Unmount directory -**Parameters**: -- `mount_dir` (string): Local mount point to unmount - -```matlab -mounts = everest.list_mounts() -``` -**Description**: Show active mounts -**Returns**: Cell array of currently mounted directories - -```matlab -everest.verify() -``` -**Description**: Check Everest installation and accessibility - -## Example Workflows - -### Experiment Tracking - -```matlab -% Configure environment -lakefs.configure('local'); - -% Create experiment branch -lakefs.create_branch('ml-project', 'experiment-3', 'main'); - -% Train model (your code here) -model = train_model(data); -save('outputs/model_v3.mat', 'model'); - -% Upload results -lakefs.upload('ml-project', 'experiment-3', ... - 'models/model_v3.mat', 'outputs/model_v3.mat'); - -% Commit with metrics -metadata = struct(); -metadata.accuracy = num2str(model.accuracy); -metadata.loss = num2str(model.loss); -metadata.epochs = num2str(model.epochs); - -lakefs.commit('ml-project', 'experiment-3', ... - 'Experiment 3: Increased learning rate', ... - 'metadata', metadata); - -% View experiment history -commits = lakefs.log('ml-project', 'experiment-3', 'amount', 1); -fprintf('Experiment accuracy: %s\n', commits.metadata{1}.accuracy); -``` - -### Data Version Comparison - -```matlab -% Compare two data versions -diff = lakefs.diff('research-data', 'v1.0', 'v2.0'); - -% Show what changed -fprintf('Data changes between versions:\n'); -for i = 1:height(diff) - fprintf(' %s: %s\n', diff.type{i}, diff.path{i}); -end - -% Download specific version -lakefs.download('research-data', 'v1.0', ... - 'datasets/training_data.mat', 'data/v1_training.mat'); - -lakefs.download('research-data', 'v2.0', ... - 'datasets/training_data.mat', 'data/v2_training.mat'); - -% Compare in MATLAB -v1 = load('data/v1_training.mat'); -v2 = load('data/v2_training.mat'); -fprintf('V1 samples: %d\n', size(v1.data, 1)); -fprintf('V2 samples: %d\n', size(v2.data, 1)); -``` - -### Reproducible Analysis - -```matlab -% Record exact data version used -commits = lakefs.log('sensor-data', 'main', 'amount', 1); -data_commit = commits.id{1}; - -% Mount data -everest.mount('lakefs://sensor-data/main/', 'analysis_data/'); - -% Run analysis -data = load('analysis_data/sensor_readings.mat'); -results = analyze_sensors(data); - -% Unmount -everest.umount('analysis_data/'); - -% Store results with data lineage -lakefs.upload('sensor-data', 'analysis-results', ... - 'results/analysis_output.mat', 'results/output.mat'); - -metadata = struct(); -metadata.data_commit = data_commit; % Track source data version -metadata.analysis_date = datestr(now); -metadata.mean_value = num2str(mean(results.values)); - -lakefs.commit('sensor-data', 'analysis-results', ... - 'Sensor analysis results', 'metadata', metadata); - -% Later: Reproduce exact analysis -fprintf('Analysis used data from commit: %s\n', data_commit); -``` - -## Advanced Topics - -### Environment Switching - -Switch between local and cloud environments in the same session: - -```matlab -% Work with local instance -lakefs.configure('local'); -local_branches = lakefs.list_branches('dev-repo'); - -% Switch to cloud -lakefs.configure('cloud'); -cloud_branches = lakefs.list_branches('prod-repo'); -``` - -### Metadata Best Practices - -Structure metadata for maximum value: - -```matlab -metadata = struct(); - -% Experiment details -metadata.experiment_id = 'exp-2024-001'; -metadata.hypothesis = 'increased_batch_size'; - -% Quantitative results -metadata.accuracy = sprintf('%.4f', results.accuracy); -metadata.training_time_sec = num2str(results.time); - -% Computational environment -metadata.matlab_version = version; -metadata.gpu_used = 'NVIDIA RTX 4090'; - -% Data lineage -metadata.training_data_commit = training_commit_id; -metadata.validation_data_commit = val_commit_id; - -lakefs.commit(repo, branch, message, 'metadata', metadata); -``` - -### Working with Large Datasets - -For large datasets, prefer mounting over upload/download: - -```matlab -% Mount for direct access (no copying) -everest.mount('lakefs://large-data/main/datasets/', 'data/'); - -% Process data in chunks -datastore = imageDatastore('data/images', ... - IncludeSubfolders=true, ... - LabelSource="foldernames"); - -% Process without loading all into memory -while hasdata(datastore) - img = read(datastore); - process_image(img); -end - -% Unmount when done -everest.umount('data/'); -``` - -## Troubleshooting - -### Connection Issues - -**Error: Cannot connect to lakeFS** - -Verify configuration: -```matlab -% Check lakectl is configured -!lakectl repo list - -% Test lakefs.m configuration -lakefs.configure('local'); % or 'cloud' -``` - -### Mount Issues - -**Error: Mount failed** - -Verify Everest installation: -```matlab -everest.verify(); - -% Check if Everest is in PATH -!which everest -``` - -**Mount not showing files** - -Wait for mount to complete: -```matlab -everest.mount('lakefs://repo/branch/', 'data/'); -pause(2); % Give mount time to initialize -dir('data/') % Should now show files -``` - -### Path Issues - -**Error: File not found in lakeFS** - -Verify path format: -```matlab -% Correct: Relative path from branch root -lakefs.upload('repo', 'branch', 'data/file.mat', 'local.mat'); - -% Incorrect: Leading slash -lakefs.upload('repo', 'branch', '/data/file.mat', 'local.mat'); -``` - -## Additional Resources - -- [lakeFS Documentation](https://community.lakefs.io/) -- [lakectl CLI Reference](https://community.lakefs.io/latest/reference/cli/) -- [Everest Mount Reference](https://community.lakefs.io/latest/reference/mount/) -- [lakeFS Samples Repository](https://github.com/treeverse/lakeFS-samples) -- [lakeFS Community Slack](https://lakefs.io/slack) - -## Version Compatibility - -| Component | Minimum Version | Recommended | -|-----------|----------------|-------------| -| MATLAB | R2020a | R2023a+ | -| lakeFS | 0.100.0 | Latest | -| lakectl | 0.100.0 | Latest | -| Everest | 0.1.0 | Latest | - -**Note**: MATLAB R2023a introduced `name=value` syntax for function arguments. Earlier versions use `'name', value` pairs. The helper files are compatible with both syntaxes. diff --git a/docs/src/integrations/mlflow.md b/docs/src/integrations/mlflow.md deleted file mode 100644 index 2c9c871ba5a..00000000000 --- a/docs/src/integrations/mlflow.md +++ /dev/null @@ -1,273 +0,0 @@ ---- -title: MLflow -description: How to use MLflow with lakeFS ---- - -# Using MLflow with lakeFS - -[MLflow](https://mlflow.org/docs/latest/index.html) is a comprehensive tool designed to manage the machine learning lifecycle, -assisting practitioners and teams in handling the complexities of ML processes. It focuses on the full lifecycle of machine -learning projects, ensuring that each phase is manageable, traceable, and reproducible. - -MLflow comprises multiple core components, and lakeFS seamlessly integrates with the [MLflow Tracking](https://mlflow.org/docs/latest/tracking) -component. MLflow tracking enables experiment tracking that accounts for both inputs and outputs, allowing for visualization -and comparison of experiment results. - -## Benefits of integrating MLflow with lakeFS - -Integrating MLflow with lakeFS offers several advantages that enhance the machine learning workflow: - -1. **Experiment Reproducibility**: By leveraging MLflow's [input logging](https://mlflow.org/docs/latest/api_reference/python_api/mlflow.html#mlflow.log_input) -capabilities alongside lakeFS's data versioning, you can precisely track the specific dataset version used in each experiment -run. This ensures that experiments remain reproducible over time, even as datasets evolve. -2. **Parallel Experiments with Zero Data Copy**: lakeFS enables efficient [branching](../understand/model.md#branches) without -duplicating data. This allows for multiple experiments to be conducted in parallel, with each branch providing an isolated -environment for dataset modifications. Changes in one branch do not affect others, promoting safe collaboration among -team members. Once an experiment is complete, the branch can be seamlessly merged back into the main dataset, incorporating -new insights. - -## How to use MLflow with lakeFS - -To harness the combined capabilities of MLflow and lakeFS for safe experimentation and accurate result reproduction, consider -the workflow below and review the practical examples provided on the next section. - -### Recommended workflow - -1. **Create a branch for each experiment**: Start each experiment by creating a dedicated lakeFS branch for it. This approach -allows you to safely make changes to your input dataset without duplicating it. You will later load data from this branch -to your MLflow experiment runs. -2. **Read datasets from the experiment branch**: Conduct your experiments by reading data directly from the dedicated -branch. We recommend to read the dataset from the head commit of the branch to ensure precise version tracking. -3. **Create an MLflow Dataset pointing to lakeFS**: Use MLflow's [Dataset](https://mlflow.org/docs/latest/api_reference/python_api/mlflow.data.html#mlflow.data.dataset.Dataset) -ensuring that the [dataset source](https://mlflow.org/docs/latest/api_reference/python_api/mlflow.data.html#mlflow.data.dataset_source.DatasetSource) -points to lakeFS. -4. **Log your input**: Use MLflow's [log_input](https://mlflow.org/docs/latest/api_reference/python_api/mlflow.html#mlflow.log_input) -function to log the versioned dataset stored in lakeFS. -5. **Commit dataset changes**: Machine learning development is inherently iterative. When you make changes to your input dataset, -commit them to the experiment branch in lakeFS with a meaningful commit message. During an experiment run, load the dataset -version corresponding to the branch's head commit and track this reference to facilitate future result reproduction. -6. **Merge experiment results**: After concluding your experimentation, merge the branch used for the selected experiment -run back into the main branch. - -!!! tip "Branch per experiment Vs. Branch per experiment run" - While it's possible to create a lakeFS branch for each experiment run, given that lakeFS branches are both quick and - cost-effective to create, it's often more efficient to create a branch per experiment. By reading directly from the head - commit of the experiment branch, you can distinguish between dataset versions without creating excessive branches. This - practice maintains branch hygiene within lakeFS. - -### Example: Using Pandas - -```python -import lakefs -import mlflow -import pandas as pd - -repo = lakefs.Repository("my-repo") -repo_id = repo.id - -exp_branch = repo.branch("experiment-1").create(source_reference="main", exist_ok=True) -branch_id = exp_branch.id -head_commit_id = exp_branch.head.id - -table_path = "famous_people.csv" - -dataset_source_url = f"s3://{repo_id}/{head_commit_id}/{table_path}" - -# Use Pandas to read from lakeFS, at its most updated version to which the head commit id is pointing -raw_data = pd.read_csv(dataset_source_url, delimiter=";", storage_options={ - "key": "AKIAIOSFOLKFSSAMPLES", - "secret": "wJalrXUtnFEMI/K7MDENG/bPxRfiCYEXAMPLEKEY", - "client_kwargs": {"endpoint_url": "http://localhost:8000"} - }) - -# Create an instance of a PandasDataset -dataset = mlflow.data.from_pandas( - raw_data, source=dataset_source_url, name="famous_people" -) - -# View some of the recorded Dataset information -print(f"Dataset name: {dataset.name}") -print(f"Dataset source URI: {dataset.source.uri}") - -# Use mlflow input logging to track the dataset versioned by lakeFS -with mlflow.start_run() as run: - mlflow.log_input(dataset, context="training") - mlflow.set_tag("lakefs_repo", repo_id) - mlflow.set_tag("lakefs_branch", branch_id) - mlflow.set_tag("lakefs_commit", head_commit_id) - -# Inspect run's dataset -logged_run = mlflow.get_run(run.info.run_id) # - -# Retrieve the Dataset object -logged_dataset = logged_run.inputs.dataset_inputs[0].dataset - -# View some of the recorded Dataset information -print(f"Logged dataset name: {logged_dataset.name}") -print(f"Logged dataset source URI: {logged_dataset.source}") -``` - -Output -```text -Dataset name: famous_people -Dataset source URI: s3://my-repo/3afddad4fef987b4919f5e82f16682c018f59ed2ff003a6a81adf72edaad23c3/fp.csv -Logged dataset name: famous_people -Logged dataset source URI: {"uri": "s3://my-repo/3afddad4fef987b4919f5e82f16682c018f59ed2ff003a6a81adf72edaad23c3/fp.csv"} -``` - -### Example: Using Spark - -The example below configures Spark to access lakeFS' [S3-compatible API](./spark.md#s3-compatible-api) and load a Delta -Lake tables to the experiment. - -```python -import lakefs -import mlflow -from pyspark.sql import SparkSession - -spark = SparkSession.builder.appName("lakeFS / Mlflow") \ - .config("spark.hadoop.fs.s3.impl", "org.apache.hadoop.fs.s3a.S3AFileSystem") \ - .config("spark.hadoop.fs.s3a.endpoint", 'http://localhost:8000') \ - .config("spark.hadoop.fs.s3a.path.style.access", "true") \ - .config("spark.hadoop.fs.s3a.access.key", 'AKIAlakefs12345EXAMPLE') \ - .config("spark.hadoop.fs.s3a.secret.key", 'abc/lakefs/1234567bPxRfiCYEXAMPLEKEY') \ - .config("spark.jars.packages", "io.delta:delta-core_2.12:2.3.0") \ - .config("spark.sql.extensions", "io.delta.sql.DeltaSparkSessionExtension") \ - .config("spark.sql.catalog.spark_catalog", "org.apache.spark.sql.delta.catalog.DeltaCatalog") \ - .getOrCreate() - -repo = lakefs.Repository("my-repo") -repo_id = repo.id - -exp_branch = repo.branch("experiment-1").create(source_reference="main", exist_ok=True) -branch_id = exp_branch.id -head_commit_id = exp_branch.head.id - -table_path = "gold/train_v2/" - -dataset_source_url = f"s3://{repo_id}/{head_commit_id}/{table_path}" - -# Load delta lake table from lakeFS, at its most updated version to which the head commit id is pointing -dataset = mlflow.data.load_delta(path=dataset_source_url, name="boat-images") - -# View some of the recorded Dataset information -print(f"Dataset name: {dataset.name}") -print(f"Dataset source URI: {dataset.source.path}") - -# Use mlflow input logging to track the dataset versioned by lakeFS -with mlflow.start_run() as run: - mlflow.log_input(dataset, context="training") - mlflow.set_tag("lakefs_repo", repo_id) - mlflow.set_tag("lakefs_branch", branch_id) # Log the branch id, to have a friendly lakeFS reference to search the input dataset in - mlflow.set_tag("lakefs_commit", head_commit_id) - -# Inspect run's dataset -logged_run = mlflow.get_run(run.info.run_id) # - -# Retrieve the Dataset object -logged_dataset = logged_run.inputs.dataset_inputs[0].dataset - -# View some of the recorded Dataset information -print(f"Logged dataset name: {logged_dataset.name}") -print(f"Logged dataset source URI: {logged_dataset.source}") -``` - -Output: - -```text -Dataset name: boat-images -Dataset source URI: s3://my-repo/3afddad4fef987b4919f5e82f16682c018f59ed2ff003a6a81adf72edaad23c3/gold/train_v2/ -Logged dataset name: boat-images -Logged dataset source URI: {"path": "s3://my-repo/3afddad4fef987b4919f5e82f16682c018f59ed2ff003a6a81adf72edaad23c3/gold/train_v2/"} -``` - -### Reproduce experiment results - -To reproduce the results of a specific experiment run in MLflow, it's essential to retrieve the exact dataset and associated -metadata used during that run. While the MLflow Tracking UI provides a general overview, detailed dataset information -and its source are best accessed programmatically. - -1. Obtain the Run ID: Navigate to the MLflow UI and copy the Run ID of the experiment you're interested in. - - ![mlflow run](../assets/img/mlflow_experiment_run.png) - -2. Extract Dataset Information Using MLflow's Python SDK: - - ```python - import mlflow - - # Inspect run's dataset and tags - run_id = "c0f8fbb1b63748abaa0a6479115e272c" - run = mlflow.get_run(run_id) - - # Retrieve the Dataset object - logged_dataset = run.inputs.dataset_inputs[0].dataset - - # View some of the recorded Dataset information - print(f"Run ID: {run_id} Dataset name: {logged_dataset.name}") - print(f"Run ID: {run_id} Dataset source URI: {logged_dataset.source}") - - # Retrieve run's tags - logged_tags = run.data.tags - print(f"Run ID: {run_id} tags: {logged_tags}") - ``` - - Output - - ```text - Run ID: c0f8fbb1b63748abaa0a6479115e272c Dataset name: boat-images - Run ID: c0f8fbb1b63748abaa0a6479115e272c Dataset source URI: {"path": "s3://my-repo/3afddad4fef987b4919f5e82f16682c018f59ed2ff003a6a81adf72edaad23c3/gold/train_v2/"} - Run ID: c0f8fbb1b63748abaa0a6479115e272c tags: {'lakefs_branch': 'experiment-1', 'lakefs_repo': 'my-repo', 'lakefs_commit': '3afddad4fef987b4919f5e82f16682c018f59ed2ff003a6a81adf72edaad23c3'} - ``` - -!!! note "Notes" - - * The Dataset Source URI provides the location of the dataset at the exact version used in the run. - * Run tags, such as 'lakefs_branch' and 'lakefs_repo', offer additional context about the dataset's origin within lakeFS. - - -### Compare runs input - -To determine whether two distinct MLflow runs utilized the same input dataset, you can compare specific attributes of -their logged Dataset objects. The source attribute, which contains the versioned dataset's URI, is a common choice for -this comparison. Here's an example: - -```python -import mlflow - -first_run_id = "4c0464d665944dc5bb90587d455948b8" -first_run = mlflow.get_run(first_run_id) - -# Retrieve the Dataset object -first_dataset = first_run.inputs.dataset_inputs[0].dataset -first_dataset_src = first_dataset.source - -sec_run_id = "12b91e073a8b40df97ea8d570534de31" -sec_run = mlflow.get_run(sec_run_id) - -# Retrieve the Dataset object -sec_dataset = sec_run.inputs.dataset_inputs[0].dataset -sec_dataset_src = sec_dataset.source - -assert first_dataset_src == sec_dataset_src, "Dataset sources are not equal." - -print(f"First dataset src: {first_dataset_src}") -print(f"Second dataset src: {sec_dataset_src}") -``` - -Output - -```text -First dataset src: {"uri": "s3://mlflow-tracking/f16682c0186a81adf72edaad23c3f59ed2ff3afddad4fef987b4919f5e82003a/gold/train_v2/"} -Second dataset src: {"uri": "s3://mlflow-tracking/3afddad4fef987b4919f5e82f16682c018f59ed2ff003a6a81adf72edaad23c3/gold/train_v2/"} -``` - -In this example, the source attribute of each Dataset object is compared to determine if the input datasets are identical. -If they differ, you can further inspect them. With the dataset source URI in hand, you can use lakeFS to gain more insights -about the changes made to your dataset: - -* Inspect the lakeFS Commit ID: By examining the commit ID within the URI, you can retrieve detailed information about -the commit, including the author and the purpose of the changes. -* Use lakeFS Diff: lakeFS offers a diff function that allows you to compare different versions of your data. - -By leveraging these tools, you can effectively track and understand the evolution of your datasets across different MLflow runs. diff --git a/docs/src/integrations/presto_trino.md b/docs/src/integrations/presto_trino.md deleted file mode 100644 index 74a75cac90d..00000000000 --- a/docs/src/integrations/presto_trino.md +++ /dev/null @@ -1,125 +0,0 @@ ---- -title: Trino / Presto -description: This section explains how you can start using lakeFS with the Trino and Presto open-source distributed SQL query engines. ---- - -# Using lakeFS with Trino / Presto - - [Trino](https://trinodb.io){:target="_blank"} and [Presto](https://prestodb.io){:target="_blank"} are distributed SQL query engines designed to query large data sets distributed over one or more heterogeneous data sources. - - - -## Iceberg REST Catalog - -lakeFS Iceberg REST Catalog allow you to use lakeFS as a [spec-compliant](https://github.com/apache/iceberg/blob/main/open-api/rest-catalog-open-api.yaml) Apache [Iceberg REST catalog](https://editor-next.swagger.io/?url=https://raw.githubusercontent.com/apache/iceberg/main/open-api/rest-catalog-open-api.yaml), -allowing Trino/Presto to manage and access tables using a standard REST API. - -![lakeFS Iceberg REST Catalog](../assets/img/lakefs_iceberg_rest_catalog.png) - -This is the recommended way to use lakeFS with Trino/Presto, as it allows lakeFS to stay completely outside the data path: data itself is read and written by Trino/Presto executors, directly to the underlying object store. Metadata is managed by Iceberg at the table level, while lakeFS keeps track of new snapshots to provide versioning and isolation. - -[Read more about using the Iceberg REST Catalog](./iceberg.md#iceberg-rest-catalog). - -### Configuration - -To use the Iceberg REST Catalog, you need to configure Trino/Presto to use the [Iceberg REST catalog endpoint](https://trino.io/docs/current/object-storage/metastores.html#iceberg-rest-catalog): - -!!! tip - To learn more about the Iceberg REST Catalog, see the [Iceberg REST Catalog](./iceberg.md#iceberg-rest-catalog) documentation. - - -```properties -# example: /etc/trino/catalog/lakefs.properties -connector.name=iceberg - -# REST Catalog connection -iceberg.catalog.type=rest -iceberg.rest-catalog.uri=https://lakefs.example.com/iceberg/api -iceberg.rest-catalog.nested-namespace-enabled=true - -# REST Catalog authentication -iceberg.rest-catalog.security=OAUTH2 -iceberg.rest-catalog.oauth2.credential=${ENV:LAKEFS_CREDENTIALS} -iceberg.rest-catalog.oauth2.server-uri=https://lakefs.example.com/iceberg/api/v1/oauth/tokens - -# Object storage access to underlying tables (modify this to match your storage provider) -fs.hadoop.enabled=false -fs.native-s3.enabled=true -s3.region=us-east-1 -s3.aws-access-key=${ENV:AWS_ACCESS_KEY_ID} -s3.aws-secret-key=${ENV:AWS_SECRET_ACCESS_KEY} -``` - -### Usage - -Once configured, you can use the Iceberg REST Catalog to query and update Iceberg tables. - -```sql -USE "repo.main.inventory"; -SHOW TABLES; -SELECT * FROM books LIMIT 100; -``` - -```sql -USE "repo.new_branch.inventory"; -SHOW TABLES; -SELECT * FROM books LIMIT 100; -``` - -## Using Presto/Trino with the S3 Gateway - -Using the S3 Gateway allows reading and writing data to lakeFS from Presto/Trino, in any format supported by Presto/Trino (i.e. not just Iceberg tables). - -While flexible, this approach requires lakeFS to be involved in the data path, which can be less efficient than the Iceberg REST Catalog approach, since lakeFS has to proxy all data operations through the lakeFS server. This is particularly true for large data sets where network bandwidth might incur some overhead. - -### Configuration - -!!! warning "Credentials" - In the following examples, we set AWS credentials at runtime for clarity. In production, these properties should be set using one of Hadoop's standard ways of [Authenticating with S3](https://hadoop.apache.org/docs/stable/hadoop-aws/tools/hadoop-aws/index.html#Authenticating_with_S3){:target="_blank"}. - - -Create `/etc/catalog/hive.properties` with the following contents to mount the `hive-hadoop2` connector as the Hive catalog, replacing `example.net:9083` with the correct host and port for your Hive Metastore Thrift service: - -```properties -connector.name=hive-hadoop2 -hive.metastore.uri=thrift://example.net:9083 -``` - -Add the lakeFS configurations to `/etc/catalog/hive.properties` in the corresponding S3 configuration properties: - -```properties -hive.s3.aws-access-key=AKIAIOSFODNN7EXAMPLE -hive.s3.aws-secret-key=wJalrXUtnFEMI/K7MDENG/bPxRfiCYEXAMPLEKEY -hive.s3.endpoint=https://lakefs.example.com -hive.s3.path-style-access=true -``` - -#### Configure Hive - -Presto/Trino uses Hive Metastore Service (HMS) or a compatible implementation of the Hive Metastore such as AWS Glue Data Catalog to write data to S3. -In case you are using Hive Metastore, you will need to configure Hive as well. - -In file `hive-site.xml` add to the configuration: - -```xml - - ... - - fs.s3a.access.key - AKIAIOSFODNN7EXAMPLE - - fs.s3a.secret.key - wJalrXUtnFEMI/K7MDENG/bPxRfiCYEXAMPLEKEY - - - fs.s3a.endpoint - https://lakefs.example.com - - - fs.s3a.path.style.access - true - - -``` - - \ No newline at end of file diff --git a/docs/src/integrations/python-boto.md b/docs/src/integrations/python-boto.md deleted file mode 100644 index 5dc3e20f25e..00000000000 --- a/docs/src/integrations/python-boto.md +++ /dev/null @@ -1,445 +0,0 @@ ---- -title: Python - Boto & S3 Gateway -description: Use Boto3 with lakeFS S3 Gateway for S3-compatible operations ---- - -# Using Boto3 with lakeFS S3 Gateway - -lakeFS exposes an S3-compatible API through its S3 Gateway, allowing you to use Boto3 (AWS SDK for Python) directly with lakeFS. This integration is perfect for existing S3 workflows and applications. - -!!! info - To use Boto with lakeFS alongside S3, check out [Boto S3 Router](https://github.com/treeverse/boto-s3-router). It will route requests to either S3 or lakeFS according to the provided bucket name. - -## When to Use - -Use Boto with lakeFS when you: - -- Have **existing S3 workflows** you want to use with lakeFS -- Need **S3-compatible operations** (put, get, list, delete) -- Work with **legacy S3 applications** -- Want to **migrate from S3** without code changes - -For versioning-focused workflows, use the **[High-Level SDK](./python.md)** or **[lakefs-spec](./python-lakefs-spec.md)**. - -## Installation - -Install Boto3 using pip: - -```shell -pip install boto3 -``` - -Or upgrade to the latest version: - -```shell -pip install --upgrade boto3 -``` - -## Basic Setup - -### Initializing Boto3 Client - -```python -import boto3 - -# Create S3 client pointing to lakeFS -s3 = boto3.client( - 's3', - endpoint_url='https://example.lakefs.io', - aws_access_key_id='your-access-key', - aws_secret_access_key='your-secret-key', - region_name='us-east-1' -) - -print("Client initialized") -``` - -## Checksum Configuration - -In newer versions of Boto3 when using HTTPS, you might encounter an `AccessDenied` error with lakeFS logs showing `encoding/hex: invalid byte: U+0053 'S'`. This is due to checksum configuration. - -### Configuring Checksum Settings - -```python -import boto3 -from botocore.config import Config - -# Configure checksum settings -config = Config( - request_checksum_calculation='when_required', - response_checksum_validation='when_required' -) - -s3 = boto3.client( - 's3', - endpoint_url='https://lakefs.example.io', - aws_access_key_id='your-access-key', - aws_secret_access_key='your-secret-key', - config=config -) - -print("Client with checksum configuration initialized") -``` - -## Basic Operations - -### Uploading Objects - -```python -import boto3 - -s3 = boto3.client( - 's3', - endpoint_url='https://example.lakefs.io', - aws_access_key_id='your-access-key', - aws_secret_access_key='your-secret-key' -) - -# Upload from bytes -data = b"Hello, lakeFS!" -s3.put_object( - Bucket='my-repo', - Key='main/data/hello.txt', - Body=data -) - -# Upload from file -with open('local_file.csv', 'rb') as f: - s3.put_object( - Bucket='my-repo', - Key='main/data/imported.csv', - Body=f - ) - -# Upload with metadata -s3.put_object( - Bucket='my-repo', - Key='main/data/data.csv', - Body=b'id,name\n1,Alice\n2,Bob', - Metadata={ - 'owner': 'data-team', - 'version': '1.0' - } -) - -print("Upload complete") -``` - -### Downloading Objects - -```python -import boto3 - -s3 = boto3.client( - 's3', - endpoint_url='https://example.lakefs.io', - aws_access_key_id='your-access-key', - aws_secret_access_key='your-secret-key' -) - -# Download entire object -response = s3.get_object( - Bucket='my-repo', - Key='main/data/data.csv' -) -data = response['Body'].read() -print(f"Downloaded {len(data)} bytes") - -# Download to file -s3.download_file( - Bucket='my-repo', - Key='main/data/large_file.parquet', - Filename='local_file.parquet' -) - -# Stream download (for large files) -response = s3.get_object(Bucket='my-repo', Key='main/data/large.csv') -for chunk in iter(lambda: response['Body'].read(1024), b''): - process_chunk(chunk) -``` - -### Listing Objects - -```python -import boto3 - -s3 = boto3.client( - 's3', - endpoint_url='https://example.lakefs.io', - aws_access_key_id='your-access-key', - aws_secret_access_key='your-secret-key' -) - -# List objects in branch -response = s3.list_objects_v2( - Bucket='my-repo', - Prefix='main/data/' -) - -for obj in response.get('Contents', []): - print(f"{obj['Key']} ({obj['Size']} bytes)") - -# List objects at commit -response = s3.list_objects_v2( - Bucket='my-repo', - Prefix='abc123def456/data/' -) - -for obj in response.get('Contents', []): - print(f"{obj['Key']}") -``` - -### Getting Object Metadata - -```python -import boto3 - -s3 = boto3.client( - 's3', - endpoint_url='https://example.lakefs.io', - aws_access_key_id='your-access-key', - aws_secret_access_key='your-secret-key' -) - -# Head object -response = s3.head_object( - Bucket='my-repo', - Key='main/data/file.csv' -) - -print(f"Content Type: {response.get('ContentType')}") -print(f"Content Length: {response.get('ContentLength')}") -print(f"Last Modified: {response.get('LastModified')}") -print(f"Metadata: {response.get('Metadata')}") -``` - -### Deleting Objects - -```python -import boto3 - -s3 = boto3.client( - 's3', - endpoint_url='https://example.lakefs.io', - aws_access_key_id='your-access-key', - aws_secret_access_key='your-secret-key' -) - -# Delete single object -s3.delete_object( - Bucket='my-repo', - Key='main/data/temp.txt' -) - -# Delete multiple objects -s3.delete_objects( - Bucket='my-repo', - Delete={ - 'Objects': [ - {'Key': 'main/data/file1.txt'}, - {'Key': 'main/data/file2.txt'}, - {'Key': 'main/data/file3.txt'} - ] - } -) - -print("Delete complete") -``` - -## Real-World Workflows - -### ETL with S3-Like Operations - -```python -import boto3 -import csv -import io - -def etl_pipeline(): - s3 = boto3.client( - 's3', - endpoint_url='https://example.lakefs.io', - aws_access_key_id='your-access-key', - aws_secret_access_key='your-secret-key' - ) - - # Extract: Read from source - response = s3.get_object(Bucket='my-repo', Key='main/raw/input.csv') - input_data = response['Body'].read().decode() - - # Transform: Process data - reader = csv.DictReader(io.StringIO(input_data)) - rows = list(reader) - - # Clean: Remove duplicates - unique_rows = {row['id']: row for row in rows}.values() - - # Load: Write processed data - output = io.StringIO() - writer = csv.DictWriter(output, fieldnames=['id', 'name', 'value']) - writer.writeheader() - writer.writerows(unique_rows) - - s3.put_object( - Bucket='my-repo', - Key='main/processed/output.csv', - Body=output.getvalue() - ) - - print(f"ETL complete: {len(unique_rows)} unique records") - -etl_pipeline() -``` - -### Backup and Sync - -```python -import boto3 -import os -from pathlib import Path - -def backup_to_lakeFS(local_dir, repo, branch, prefix): - """Backup local directory to lakeFS""" - s3 = boto3.client( - 's3', - endpoint_url='https://example.lakefs.io', - aws_access_key_id='your-access-key', - aws_secret_access_key='your-secret-key' - ) - - count = 0 - for local_file in Path(local_dir).rglob('*'): - if local_file.is_file(): - # Calculate remote path - rel_path = local_file.relative_to(local_dir) - remote_path = f"{branch}/{prefix}/{rel_path}".replace("\\", "/") - - # Upload - with open(local_file, 'rb') as f: - s3.put_object( - Bucket=repo, - Key=remote_path, - Body=f - ) - count += 1 - - if count % 100 == 0: - print(f"Backed up {count} files...") - - print(f"Backup complete: {count} files uploaded") - -# Usage: -# backup_to_lakeFS("/path/to/local/data", "my-repo", "main", "backups/2024-01") -``` - -### Copy from S3 to lakeFS - -```python -import boto3 - -def migrate_s3_to_lakefs(s3_bucket, prefix, repo, branch): - """Migrate data from S3 to lakeFS""" - # Connect to S3 - s3_source = boto3.client( - 's3', - region_name='us-east-1' - ) - - # Connect to lakeFS - s3_dest = boto3.client( - 's3', - endpoint_url='https://example.lakefs.io', - aws_access_key_id='your-access-key', - aws_secret_access_key='your-secret-key' - ) - - # List objects - paginator = s3_source.get_paginator('list_objects_v2') - pages = paginator.paginate(Bucket=s3_bucket, Prefix=prefix) - - count = 0 - for page in pages: - for obj in page.get('Contents', []): - # Download from S3 - response = s3_source.get_object( - Bucket=s3_bucket, - Key=obj['Key'] - ) - data = response['Body'].read() - - # Upload to lakeFS - s3_dest.put_object( - Bucket=repo, - Key=f"{branch}/{obj['Key']}", - Body=data - ) - - count += 1 - if count % 100 == 0: - print(f"Migrated {count} objects...") - - print(f"Migration complete: {count} objects") - -# Usage: -# migrate_s3_to_lakefs("my-s3-bucket", "data/", "my-repo", "main") -``` - -### Version-Specific Access - -```python -import boto3 - -def read_from_commit(repo, commit_id, key): - """Read object from specific commit""" - s3 = boto3.client( - 's3', - endpoint_url='https://example.lakefs.io', - aws_access_key_id='your-access-key', - aws_secret_access_key='your-secret-key' - ) - - # Use commit ID as prefix - response = s3.get_object( - Bucket=repo, - Key=f"{commit_id}/{key}" - ) - - return response['Body'].read() - -# Usage: -# data = read_from_commit("my-repo", "abc123def456", "data/file.csv") -``` - -## Error Handling - -```python -import boto3 -from botocore.exceptions import ClientError - -s3 = boto3.client( - 's3', - endpoint_url='https://example.lakefs.io', - aws_access_key_id='your-access-key', - aws_secret_access_key='your-secret-key' -) - -try: - s3.put_object( - Bucket='my-repo', - Key='main/data/file.txt', - Body=b'data' - ) -except ClientError as e: - error_code = e.response['Error']['Code'] - if error_code == 'AccessDenied': - print("Access denied - check credentials or permissions") - elif error_code == 'NoSuchBucket': - print("Bucket not found - check repository name") - else: - print(f"Error: {error_code}") -``` - -## Further Resources - -- **[lakeFS S3 Gateway](../reference/s3.md)** - S3 Gateway API documentation -- **[Boto3 Documentation](https://boto3.amazonaws.com/v1/documentation/api/latest/index.html)** - Official Boto3 reference diff --git a/docs/src/integrations/python-data-operations.md b/docs/src/integrations/python-data-operations.md deleted file mode 100644 index 2f4dbc200d8..00000000000 --- a/docs/src/integrations/python-data-operations.md +++ /dev/null @@ -1,429 +0,0 @@ ---- -title: Python - Data Operations -description: Perform batch object operations, deletion, and metadata management in lakeFS with Python ---- - -# Working with Objects & Data Operations - -This guide covers object operations in lakeFS, including uploading, downloading, batch operations, and metadata management. - -## Basic Object Operations - -### Uploading Objects - -Upload data to lakeFS: - -```python -import lakefs - -repo = lakefs.repository("my-data-repo") -branch = repo.branch("main") - -# Upload text data -branch.object("data/simple.txt").upload( - data=b"Hello, lakeFS!" -) - -# Upload with content type -branch.object("data/data.json").upload( - data=b'{"key": "value"}', - content_type="application/json" -) - -# Upload larger data -csv_data = b"id,name,value\n1,Alice,100\n2,Bob,200\n3,Carol,300" -branch.object("data/records.csv").upload(data=csv_data) - -print("Objects uploaded successfully") -``` - -### Downloading Objects - -Read object data from lakeFS: - -```python -import lakefs - -repo = lakefs.repository("my-data-repo") -branch = repo.branch("main") - -# Read as text -with branch.object("data/simple.txt").reader(mode='r') as f: - content = f.read() - print(f"Content: {content}") - -# Read as binary -with branch.object("data/data.json").reader(mode='rb') as f: - binary_content = f.read() - print(f"Binary size: {len(binary_content)} bytes") - -# Read CSV and process -import csv -import io - -with branch.object("data/records.csv").reader(mode='r') as f: - reader = csv.DictReader(f) - for row in reader: - print(f" {row['name']}: {row['value']}") -``` - -### Object Information & Metadata - -Get object details and metadata: - -```python -import lakefs - -repo = lakefs.repository("my-data-repo") -branch = repo.branch("main") - -obj = branch.object("data/records.csv") - -# Check if object exists -try: - if obj.exists(): - print("Object exists") -except: - print("Object not found") - -# Get object statistics -stat = obj.stat() -print(f"Size: {stat.size_bytes} bytes") -print(f"Modified: {stat.mtime}") -print(f"Checksum: {stat.checksum}") -print(f"Content Type: {stat.content_type}") -print(f"Path: {stat.path}") -``` - -### Deleting Objects - -Remove objects from lakeFS: - -```python -import lakefs - -repo = lakefs.repository("my-data-repo") -branch = repo.branch("main") - -# Delete a single object -obj = branch.object("data/temp_file.txt") -obj.delete() -print("Object deleted") - -# Handle non-existent objects gracefully -try: - obj.delete() -except Exception as e: - print(f"Delete failed: {e}") -``` - -## Batch Operations - -### Batch Delete Multiple Objects - -Delete many objects efficiently: - -```python -import lakefs - -repo = lakefs.repository("my-data-repo") -branch = repo.branch("main") - -# Delete multiple objects by path -paths_to_delete = [ - "data/file1.csv", - "data/file2.csv", - "data/file3.csv", - "logs/temp.log" -] - -try: - branch.delete_objects(paths_to_delete) - print(f"Deleted {len(paths_to_delete)} objects") -except Exception as e: - print(f"Batch delete failed: {e}") -``` - -## Listing and Filtering Objects - -### List Objects by Prefix - -List all objects under a path: - -```python -import lakefs - -repo = lakefs.repository("my-data-repo") -branch = repo.branch("main") - -# List all objects in data/ folder -print("Objects in data/:") -for obj in branch.objects(prefix="data/"): - print(f" {obj.path} ({obj.size_bytes} bytes)") - -# Count total objects -total_objects = 0 -for _ in branch.objects(prefix="data/"): - total_objects += 1 -print(f"Total objects: {total_objects}") -``` - -### List with Delimiter (Folder View) - -Use delimiter to see folder structure: - -```python -import lakefs - -repo = lakefs.repository("my-data-repo") -branch = repo.branch("main") - -# List with folder delimiter -print("Folder structure (with /):") -for item in branch.objects(prefix="", delimiter="/"): - if hasattr(item, 'path'): - # It's a file - print(f" FILE: {item.path}") - else: - # It's a folder - print(f" FOLDER: {item.name}") -``` - -## Working with Object Metadata - -### Set Custom Object Metadata - -Attach custom metadata to objects: - -```python -import lakefs -import json - -repo = lakefs.repository("my-data-repo") -branch = repo.branch("main") - -# Create object with metadata -obj = branch.object("data/important.csv") -obj.upload( - data=b"id,value\n1,100", - metadata={ - "owner": "data-team", - "sensitivity": "public", - "version": "1.0" - } -) - -print("Object uploaded with metadata") -``` - -### Read Object Metadata - -Retrieve object metadata: - -```python -import lakefs - -repo = lakefs.repository("my-data-repo") -branch = repo.branch("main") - -obj = branch.object("data/important.csv") -stat = obj.stat() - -print(f"Object: {stat.path}") -print(f"Size: {stat.size_bytes}") -print(f"Metadata: {stat.metadata}") -``` - -## Real-World Workflows - -### Data Cleanup - -Remove old and temporary files: - -```python -import lakefs -from datetime import datetime, timedelta - -def cleanup_old_files(repo_name, branch_name, days_old=7): - """Delete files older than specified days""" - repo = lakefs.repository(repo_name) - branch = repo.branch(branch_name) - - cutoff_time = datetime.now().timestamp() - (days_old * 24 * 60 * 60) - - old_files = [] - - for obj in branch.objects(): - if hasattr(obj, 'mtime') and obj.mtime < cutoff_time: - old_files.append(obj.path) - - if old_files: - print(f"Found {len(old_files)} files older than {days_old} days") - branch.delete_objects(old_files) - print(f"Deleted {len(old_files)} old files") - return len(old_files) - else: - print("No old files to delete") - return 0 - - -# Usage: -deleted_count = cleanup_old_files("archive-repo", "main", days_old=30) -print(f"Cleanup complete: {deleted_count} files removed") -``` - -### Bulk Data Import - -Import multiple files efficiently: - -```python -import lakefs -import os - -def bulk_import_files(repo_name, branch_name, local_dir, lakeFS_prefix): - """Import all files from local directory""" - repo = lakefs.repository(repo_name) - branch = repo.branch(branch_name) - - imported = 0 - errors = 0 - - # Walk local directory - for root, dirs, files in os.walk(local_dir): - for filename in files: - local_path = os.path.join(root, filename) - - # Calculate lakeFS path - rel_path = os.path.relpath(local_path, local_dir) - lakeFS_path = f"{lakeFS_prefix}/{rel_path}".replace("\\", "/") - - try: - # Read and upload file - with open(local_path, 'rb') as f: - data = f.read() - - branch.object(lakeFS_path).upload(data=data) - print(f" Imported: {lakeFS_path}") - imported += 1 - - except Exception as e: - print(f" Error importing {lakeFS_path}: {e}") - errors += 1 - - return imported, errors - - -# Usage (pseudo-code - adjust for your environment): -# imported, errors = bulk_import_files( -# "my-repo", -# "main", -# "/local/data/directory", -# "data/imports" -# ) -# print(f"Imported: {imported}, Errors: {errors}") -``` - -### Stream Processing - -Process large files efficiently: - -```python -import lakefs -import io - -def process_csv_stream(repo_name, branch_name, file_path, processor_func): - """Process large CSV file line by line""" - repo = lakefs.repository(repo_name) - branch = repo.branch(branch_name) - - processed = 0 - - with branch.object(file_path).reader(mode='r') as f: - for line in f: - processor_func(line.strip()) - processed += 1 - - return processed - - -# Usage: -def count_records(line): - pass # Do something with each line - - -count = process_csv_stream( - "data-repo", - "main", - "data/large_file.csv", - count_records -) -``` - -### Creating a Complete Data Pipeline - -Implement an end-to-end pipeline with data operations, transactions, and merging: - -```python -import lakefs - -# Get repository and create experiment branch -repo = lakefs.repository("analytics-repo") -branch = repo.branch("processing-v2").create(source_reference="main") - -try: - # Upload raw data - branch.object("raw/input.csv").upload(data=raw_data) - - # Perform transformations with transactions - with branch.transact(commit_message="Process raw data") as tx: - # Read and transform - with tx.object("raw/input.csv").reader() as f: - processed = transform(f.read()) - - # Write processed data - tx.object("processed/output.csv").upload(data=processed) - - # Review changes before merging - changes = list(branch.uncommitted()) - print(f"Changes: {len(changes)} objects") - - # Merge to main if satisfied - branch.merge_into(repo.branch("main")) - -except Exception as e: - print(f"Error in pipeline: {e}") - branch.delete() # Clean up on failure -``` - -This pattern ensures: - -- Raw data is preserved in isolation -- Transformations are atomic (all-or-nothing) -- Changes are reviewable before integration -- Failed pipelines can be safely cleaned up - -## Error Handling - -### Handling Object Errors - -```python -import lakefs -from lakefs.exceptions import NotFoundException, ObjectNotFoundException - -repo = lakefs.repository("my-data-repo") -branch = repo.branch("main") - -# Object not found -try: - obj = branch.object("non-existent.csv") - obj.delete() -except (NotFoundException, ObjectNotFoundException): - print("Object not found") - -# Permission denied -try: - obj = branch.object("data/file.csv") - obj.upload(data=b"data") -except Exception as e: - print(f"Upload failed: {e}") -``` diff --git a/docs/src/integrations/python-getting-started.md b/docs/src/integrations/python-getting-started.md deleted file mode 100644 index 5cf8de8b5ec..00000000000 --- a/docs/src/integrations/python-getting-started.md +++ /dev/null @@ -1,96 +0,0 @@ ---- -title: Python - Getting Started with High-Level SDK -description: Install and configure the lakeFS Python SDK for basic usage ---- - -# Getting Started with High-Level SDK - -The High-Level SDK provides a Pythonic interface to lakeFS. This page covers installation, initialization, and configuration of the SDK. - -## Installation - -Install the High-Level SDK using pip: - -```shell -pip install lakefs -``` - -Or upgrade to the latest version: - -```shell -pip install --upgrade lakefs -``` - -## Initialization - -The High-Level SDK by default will try to collect authentication parameters from the environment and attempt to create a default client. When working in an environment where **lakectl** is configured, it is not necessary to instantiate a lakeFS client or provide it for creating the lakeFS objects. - -In case no authentication parameters exist, it is also possible to explicitly create a lakeFS client. - -### Basic Client Initialization - -Here's how to instantiate a client: - -```python -from lakefs.client import Client - -clt = Client( - host="http://localhost:8000", - username="AKIAIOSFODNN7EXAMPLE", - password="wJalrXUtnFEMI/K7MDENG/bPxRfiCYEXAMPLEKEY", -) -``` - -!!! info - See [here](../security/external-principals-aws.md#login-with-python) for instructions on how to log in with Python using your AWS role. This is applicable for enterprise users. - -### SSL Configuration - -You can use TLS with a CA that is not trusted on the host by configuring the client with a CA cert bundle file. It should contain concatenated CA certificates in PEM format: - -```python -clt = Client( - host="https://lakefs.example.io", - username="AKIAIOSFODNN7EXAMPLE", - password="wJalrXUtnFEMI/K7MDENG/bPxRfiCYEXAMPLEKEY", - # Customize the CA certificates used to verify the peer. - ssl_ca_cert="path/to/concatenated_CA_certificates.PEM", -) -``` - -For connecting to a secure endpoint without verification (for test environments): - -```python -clt = Client( - host="https://lakefs.example.io", - username="AKIAIOSFODNN7EXAMPLE", - password="wJalrXUtnFEMI/K7MDENG/bPxRfiCYEXAMPLEKEY", - verify_ssl=False, -) -``` - -!!! warning - This setting allows well-known "man-in-the-middle", impersonation, and credential stealing attacks. Never use this in any production setting. - -### Proxy Configuration - -To enable communication via proxies, add a proxy configuration: - -```python -clt = Client( - host="https://lakefs.example.io", - username="AKIAIOSFODNN7EXAMPLE", - password="wJalrXUtnFEMI/K7MDENG/bPxRfiCYEXAMPLEKEY", - ssl_ca_cert="(if needed)", - proxy="", -) -``` - -## Next Steps - -Once you have initialized the SDK, explore the different operations: - -- **[Branches & Merging](./python-versioning-branches.md)** - Work with branches for feature development and experimentation -- **[References, Commits & Tags](./python-refs.md)** - Navigate commit history, work with commits, and manage tags -- **[Transactions](./python-transactions.md)** - Perform atomic operations -- **[Data Operations](./python-data-operations.md)** - Upload, download, and manage objects diff --git a/docs/src/integrations/python-lakefs-spec.md b/docs/src/integrations/python-lakefs-spec.md deleted file mode 100644 index 837a803c46f..00000000000 --- a/docs/src/integrations/python-lakefs-spec.md +++ /dev/null @@ -1,377 +0,0 @@ ---- -title: Python - lakefs-spec -description: Use lakefs-spec for file system operations and data science integration with lakeFS ---- - -# Using lakefs-spec for File System Operations - -The [lakefs-spec](https://lakefs-spec.org/) project provides a filesystem-like API to lakeFS, built on top of [fsspec](https://github.com/fsspec/filesystem_spec). This integration is perfect for data science workflows, pandas integration, and scenarios where you want S3-like operations. - -!!! note - lakefs-spec is a third-party package maintained by the lakeFS community. For issues and questions, refer to the [lakefs-spec repository](https://github.com/aai-institute/lakefs-spec). - -## When to Use - -Use lakefs-spec when you: - -- Need **file system-like operations** (open, read, write, delete) -- Work with **data science tools** (pandas, dask, polars) -- Want an **S3-compatible interface** without managing branches explicitly -- Need to **integrate with fsspec-compatible libraries** -- Prefer **familiar file operations** over versioning abstractions - -For versioning-focused workflows (branches, tags, commits), use the **[High-Level SDK](./python.md)** instead. - -## Installation - -Install lakefs-spec using pip: - -```shell -pip install lakefs-spec -``` - -Or upgrade to the latest version: - -```shell -pip install --upgrade lakefs-spec -``` - -## Basic Setup - -### Initializing the File System - -```python -from lakefs_spec import LakeFSFileSystem - -# Auto-discover credentials from ~/.lakectl.yaml -fs = LakeFSFileSystem() - -# Or provide explicit credentials -fs = LakeFSFileSystem( - host="http://localhost:8000", - username="your-access-key", - password="your-secret-key" -) -``` - -## File Operations - -### Writing Files - -```python -from pathlib import Path -from lakefs_spec import LakeFSFileSystem - -fs = LakeFSFileSystem() - -# Write text file -fs.pipe("my-repo/main/data/text.txt", b"Hello, lakeFS!") - -# Write from local file -local_file = Path("local_data.csv") -local_file.write_text("id,name\n1,Alice\n2,Bob") -fs.put(str(local_file), "my-repo/main/data/imported.csv") - -# Write using context manager -with fs.open("my-repo/main/data/output.txt", "w") as f: - f.write("Data written to lakeFS") -``` - -### Reading Files - -```python -from lakefs_spec import LakeFSFileSystem - -fs = LakeFSFileSystem() - -# Read entire file -data = fs.cat("my-repo/main/data/text.txt") -print(data.decode()) - -# Read using context manager -with fs.open("my-repo/main/data/input.txt", "r") as f: - content = f.read() - print(content) - -# Read in chunks (for large files) -with fs.open("my-repo/main/data/large_file.csv", "rb") as f: - chunk = f.read(1024) - while chunk: - process(chunk) - chunk = f.read(1024) -``` - -### Listing Files - -```python -from lakefs_spec import LakeFSFileSystem - -fs = LakeFSFileSystem() - -# List files at path -files = fs.ls("my-repo/main/data/") -for file in files: - print(file) - -# Find files with glob pattern -csv_files = fs.glob("my-repo/main/**/*.csv") -for csv in csv_files: - print(csv) -``` - -### Deleting Files - -```python -from lakefs_spec import LakeFSFileSystem - -fs = LakeFSFileSystem() - -# Delete single file -fs.rm("my-repo/main/data/temp.txt") - -# Delete directory recursively -fs.rm("my-repo/main/data/temp_dir", recursive=True) -``` - -## Pandas Integration - -### Reading Data into Pandas - -```python -import pandas as pd -from lakefs_spec import LakeFSFileSystem - -# Read CSV directly from lakeFS -df = pd.read_csv("lakefs://my-repo/main/data/dataset.csv") -print(df.head()) - -# Read Parquet -df = pd.read_parquet("lakefs://my-repo/main/data/data.parquet") - -# Read JSON -df = pd.read_json("lakefs://my-repo/main/data/data.json") -``` - -### Writing Data from Pandas - -```python -import pandas as pd - -# Create sample data -df = pd.DataFrame({ - "id": [1, 2, 3, 4, 5], - "name": ["Alice", "Bob", "Carol", "David", "Eve"], - "value": [100, 200, 300, 400, 500] -}) - -# Write to lakeFS as CSV -df.to_csv("lakefs://my-repo/main/output/data.csv", index=False) - -# Write as Parquet -df.to_parquet("lakefs://my-repo/main/output/data.parquet") - -# Write as JSON -df.to_json("lakefs://my-repo/main/output/data.json") -``` - -### Data Science Workflow Example - -```python -import pandas as pd -import numpy as np - -# Read training data -train_df = pd.read_csv("lakefs://ml-repo/main/datasets/train.csv") -test_df = pd.read_csv("lakefs://ml-repo/main/datasets/test.csv") - -# Process data -train_df["normalized_value"] = (train_df["value"] - train_df["value"].mean()) / train_df["value"].std() -test_df["normalized_value"] = (test_df["value"] - test_df["value"].mean()) / test_df["value"].std() - -# Save processed data -train_df.to_parquet("lakefs://ml-repo/main/processed/train.parquet") -test_df.to_parquet("lakefs://ml-repo/main/processed/test.parquet") - -print("Processing complete!") -``` - -## Transactions - -### Atomic Operations with Transactions - -```python -from lakefs_spec import LakeFSFileSystem - -fs = LakeFSFileSystem() - -# Perform atomic operations -with fs.transaction("my-repo", "main") as tx: - # All operations happen on ephemeral branch - fs.pipe( - f"my-repo/{tx.branch.id}/data/file1.txt", - b"Content 1" - ) - fs.pipe( - f"my-repo/{tx.branch.id}/data/file2.txt", - b"Content 2" - ) - - # Commit when done - tx.commit(message="Add files atomically") - print(f"Committed: {tx.branch.id}") -``` - -### Transaction with Error Handling - -```python -from lakefs_spec import LakeFSFileSystem - -fs = LakeFSFileSystem() - -try: - with fs.transaction("my-repo", "main") as tx: - # Perform operations - fs.pipe(f"my-repo/{tx.branch.id}/file.txt", b"data") - - # Validate - stat = fs.stat(f"my-repo/{tx.branch.id}/file.txt") - if stat["size"] < 100: - raise ValueError("File too small") - - tx.commit(message="Validated and committed") - -except Exception as e: - print(f"Transaction failed: {e}") - print("Changes rolled back automatically") -``` - -### Tagging After Transaction - -```python -from lakefs_spec import LakeFSFileSystem - -fs = LakeFSFileSystem() - -with fs.transaction("ml-repo", "main") as tx: - # Train and save model - fs.pipe(f"ml-repo/{tx.branch.id}/models/model.pkl", model_data) - - # Save metrics - fs.pipe(f"ml-repo/{tx.branch.id}/metrics.json", metrics_data) - - # Commit - tx.commit(message="Model v1.0") - - # Tag as release - tx.tag("v1.0.0") - print("Model released as v1.0.0") -``` - -## Real-World Examples - -### ETL Pipeline - -```python -import pandas as pd -from lakefs_spec import LakeFSFileSystem - -fs = LakeFSFileSystem() - -# Extract: Read from multiple sources -raw_files = fs.glob("my-repo/main/raw/*.csv") -dfs = [pd.read_csv(f"lakefs://{f}") for f in raw_files] -combined = pd.concat(dfs) - -# Transform: Clean and process -combined = combined.dropna() -combined["timestamp"] = pd.to_datetime(combined["timestamp"]) -combined["normalized"] = (combined["value"] - combined["value"].mean()) / combined["value"].std() - -# Load: Write processed data -combined.to_parquet("lakefs://my-repo/main/processed/data.parquet") -print(f"ETL complete: {len(combined)} rows processed") -``` - -### Data Analysis and Reporting - -```python -import pandas as pd -import json -from lakefs_spec import LakeFSFileSystem - -fs = LakeFSFileSystem() - -# Read data for analysis -df = pd.read_parquet("lakefs://analytics-repo/main/data/raw_data.parquet") - -# Perform analysis -summary = { - "total_records": len(df), - "mean_value": float(df["value"].mean()), - "median_value": float(df["value"].median()), - "std_value": float(df["value"].std()) -} - -# Save report -report = json.dumps(summary, indent=2) -fs.pipe("lakefs://analytics-repo/main/reports/summary.json", report.encode()) - -print("Analysis report saved") -``` - -### Model Versioning - -```python -import pickle -from datetime import datetime -from lakefs_spec import LakeFSFileSystem - -fs = LakeFSFileSystem() - -def save_model_version(repo, model, version, metrics): - """Save model with version and metrics""" - timestamp = datetime.now().isoformat() - - with fs.transaction(repo, "main") as tx: - branch_id = tx.branch.id - - # Save model - model_bytes = pickle.dumps(model) - fs.pipe( - f"{repo}/{branch_id}/models/{version}/model.pkl", - model_bytes - ) - - # Save metrics - metrics_json = json.dumps({ - "version": version, - "timestamp": timestamp, - **metrics - }) - fs.pipe( - f"{repo}/{branch_id}/models/{version}/metrics.json", - metrics_json.encode() - ) - - # Commit - tx.commit(message=f"Model {version}") - - # Tag for reference - tx.tag(f"model-{version}") - print(f"Model {version} saved and tagged") - - -# Usage: -model = train_model(training_data) -save_model_version( - "ml-repo", - model, - "v2.1.0", - {"accuracy": 0.95, "f1": 0.94} -) -``` - -## Further Resources - -- **[lakefs-spec Project](https://lakefs-spec.org/)** - Official project documentation -- **[fsspec Documentation](https://filesystem-spec.readthedocs.io/)** - Filesystem spec reference diff --git a/docs/src/integrations/python-refs.md b/docs/src/integrations/python-refs.md deleted file mode 100644 index 1dc6d178730..00000000000 --- a/docs/src/integrations/python-refs.md +++ /dev/null @@ -1,773 +0,0 @@ ---- -title: Python - References, Commits & Tags -description: Navigate commit history, understand references, manage tags, and track data lineage in lakeFS with Python ---- - -# Working with References, Commits & Tags - -References, commits, and tags are fundamental to understanding and managing versions in lakeFS. This guide covers navigating commit history, working with references, creating immutable snapshots with tags, and using metadata for tracking and lineage. - -## Understanding References - -### What are References? - -A reference is any pointer to a commit in lakeFS: - -- **Branch**: A mutable reference (changes as new commits are made) -- **Tag**: An immutable reference (always points to the same commit) -- **Commit ID**: A specific commit's unique identifier -- **Ref Expression**: Advanced reference syntax like `main~2` (2 commits before main) - -### Creating References - -Get reference objects for any valid reference: - -```python -import lakefs - -repo = lakefs.repository("my-data-repo") - -# Reference to branch head -main_ref = repo.ref("main") -print(f"Main reference: {main_ref.id}") - -# Reference to specific commit -commit_ref = repo.ref("abc123def456") -print(f"Commit reference: {commit_ref.id}") - -# Reference to tag -tag_ref = repo.ref("v1.0.0") -print(f"Tag reference: {tag_ref.id}") - -# Advanced reference expressions -two_back = repo.ref("main~2") # Two commits before main -print(f"Two commits back: {two_back.id}") -``` - -### Getting Commit Information from References - -```python -import lakefs - -repo = lakefs.repository("my-data-repo") -ref = repo.ref("main") - -# Get the underlying commit -commit = ref.get_commit() - -print(f"Commit ID: {commit.id}") -print(f"Message: {commit.message}") -print(f"Committer: {commit.committer}") -print(f"Created: {commit.creation_date}") -print(f"Parents: {commit.parents}") -print(f"Metadata: {commit.metadata}") -``` - -## Understanding Commits - -### What are Commits? - -Commits create immutable snapshots of changes on a branch. Each commit has a unique ID and optional metadata: - -```python -branch = lakefs.repository("my-repo").branch("main") - -# Create a commit -ref = branch.commit( - message="Add new dataset", - metadata={"author": "data-team", "version": "1.0"} -) -print(f"Committed: {ref.id}") -``` - -Commits are the fundamental building blocks of version control in lakeFS. They allow you to: - -- **Track changes** over time with unique identifiers -- **Capture metadata** for auditing and tracking -- **Create reproducible snapshots** for data lineage -- **Understand who made changes** and when - -## Working with Commits - -### Getting Commit Details - -Retrieve detailed information about a specific commit: - -```python -import lakefs -from datetime import datetime - -repo = lakefs.repository("my-data-repo") - -try: - # Get commit by ID - commit_ref = repo.commit("abc123def456xyz") - commit = commit_ref.get_commit() - - print(f"Commit Details:") - print(f" ID: {commit.id}") - print(f" Message: {commit.message}") - print(f" Committer: {commit.committer}") - print(f" Timestamp: {datetime.fromtimestamp(commit.creation_date)}") - print(f" Parents: {', '.join(commit.parents) if commit.parents else 'None'}") - - # Check for merge commit - if len(commit.parents) > 1: - print(f" Type: Merge commit (from {len(commit.parents)} parents)") - else: - print(f" Type: Regular commit") - -except Exception as e: - print(f"Commit not found: {e}") -``` - -### Accessing Commit Metadata - -Retrieve custom metadata attached to commits: - -```python -import lakefs - -repo = lakefs.repository("my-data-repo") -branch = repo.branch("main") - -# Get the latest commit -commit = branch.get_commit() - -print(f"Commit: {commit.id[:8]}") -print(f"Message: {commit.message}") - -if commit.metadata: - print("Metadata:") - for key, value in commit.metadata.items(): - print(f" {key}: {value}") -else: - print("No metadata") -``` - -### Creating Commits with Metadata - -Create commits with custom metadata for tracking: - -```python -import lakefs -import json -from datetime import datetime - -repo = lakefs.repository("my-data-repo") -branch = repo.branch("main") - -# Upload data -branch.object("data/dataset.csv").upload(data=b"id,value\n1,100\n2,200") - -# Commit with rich metadata -commit_ref = branch.commit( - message="Add customer dataset v2", - metadata={ - "author": "data-team", - "version": "2.0", - "dataset-type": "raw", - "source": "database-export", - "record-count": "10000", - "timestamp": datetime.now().isoformat(), - "data-owner": "analytics-team@company.com" - } -) - -print(f"Committed: {commit_ref.id}") -print(f"Metadata stored for tracking") -``` - -## Navigating Commit History - -### List Commits (Log) - -View the commit history of a branch: - -```python -import lakefs -from datetime import datetime - -repo = lakefs.repository("my-data-repo") -branch = repo.branch("main") - -print("Recent commits:") -for i, commit in enumerate(branch.log(max_amount=10)): - timestamp = datetime.fromtimestamp(commit.creation_date) - print(f" {i+1}. {commit.id[:8]} - {commit.message[:40]} ({timestamp})") -``` - -### Track Commits by Metadata - -Find commits based on custom metadata: - -```python -import lakefs - -def find_commits_by_metadata(repo_name, branch_name, key, value): - """Find commits with specific metadata""" - repo = lakefs.repository(repo_name) - branch = repo.branch(branch_name) - - matching_commits = [] - - for commit in branch.log(max_amount=1000): - if commit.metadata and commit.metadata.get(key) == value: - matching_commits.append(commit) - - return matching_commits - - -# Usage: -commits = find_commits_by_metadata("analytics-repo", "main", "dataset-type", "clean") -print(f"Found {len(commits)} commits with dataset-type=clean") - -for commit in commits[:5]: - print(f" {commit.id[:8]} - {commit.message}") -``` - -## Comparing References (Diffs) - -### Diff Between Two References - -See what changed between any two references: - -```python -import lakefs - -repo = lakefs.repository("my-data-repo") -main = repo.ref("main") -dev = repo.ref("develop") - -print("Changes from main to develop:") -for change in main.diff(other_ref=dev): - print(f" {change.type:10} {change.path} ({change.size_bytes} bytes)") - -# Count changes -changes = list(main.diff(other_ref=dev)) -print(f"\nTotal changes: {len(changes)}") -``` - -### Diff with Filtering - -Filter diff results by path or change type: - -```python -import lakefs - -repo = lakefs.repository("my-data-repo") -tag_v1 = repo.ref("v1.0.0") -tag_v2 = repo.ref("v2.0.0") - -# Get all changes -all_changes = list(tag_v1.diff(other_ref=tag_v2)) - -# Filter by change type -added = [c for c in all_changes if c.type == "added"] -removed = [c for c in all_changes if c.type == "removed"] -changed = [c for c in all_changes if c.type == "changed"] - -print(f"Added: {len(added)}") -print(f"Removed: {len(removed)}") -print(f"Changed: {len(changed)}") - -# Filter by path prefix -data_changes = [c for c in all_changes if c.path.startswith("data/")] -print(f"Changes in data/ folder: {len(data_changes)}") -``` - -### Detailed Diff with Size Analysis - -Analyze what changed with size information: - -```python -import lakefs - -repo = lakefs.repository("my-data-repo") -ref1 = repo.ref("commit1") -ref2 = repo.ref("commit2") - -print("Detailed changes:") -for change in ref1.diff(other_ref=ref2): - size_info = f" ({change.size_bytes} bytes)" if change.size_bytes else "" - print(f" {change.type:10} {change.path}{size_info}") -``` - -## Working with Tags - -Tags are immutable pointers to specific commits in lakeFS, making them perfect for marking releases, data versions, and important snapshots. - -### What are Tags? - -Tags mark specific commits as important (e.g., releases): - -```python -import lakefs - -tag = lakefs.repository("my-repo").tag("v1.0.0").create( - source_ref="main" -) -``` - -Tags are immutable pointers to commits that allow you to: - -- **Mark releases** for versioning and distribution -- **Create snapshots** for reproducibility and archival -- **Reference important points** in your data history -- **Track data lineage** across versions - -Unlike branches, tags never change once created, making them perfect for stable reference points. - -## Creating Tags - -### Create a Simple Tag - -Create a tag pointing to the current head of a branch: - -```python -import lakefs - -repo = lakefs.repository("my-data-repo") - -# Create a tag from the main branch's head -tag = repo.tag("v1.0.0").create(source_ref="main") - -print(f"Created tag: v1.0.0") -print(f"Points to commit: {tag.get_commit().id}") -``` - -### Create a Tag from a Specific Commit - -Create a tag pointing to any commit: - -```python -import lakefs - -repo = lakefs.repository("my-data-repo") -main = repo.branch("main") - -# Get a specific commit from history -commits = list(main.log(max_amount=10)) - -if commits: - # Tag an older commit - commit_to_tag = commits[0] # Most recent - tag = repo.tag("v1.0.0-rc1").create(source_ref=commit_to_tag.id) - - print(f"Tagged commit: {commit_to_tag.id[:8]}") - print(f"Tag name: v1.0.0-rc1") -``` - -### Create a Tag from Another Tag - -Create a tag based on an existing tag: - -```python -import lakefs - -repo = lakefs.repository("my-data-repo") - -try: - # Create a new tag from an existing tag - existing_tag = repo.tag("v1.0.0") - new_tag = repo.tag("stable").create(source_ref=existing_tag) - - print(f"New tag 'stable' points to same commit as 'v1.0.0'") - -except Exception as e: - print(f"Error: {e}") -``` - -### Conditional Tag Creation - -Create a tag only if it doesn't already exist: - -```python -import lakefs -from lakefs.exceptions import ConflictException - -repo = lakefs.repository("my-data-repo") -tag_name = "v2.0.0" - -try: - # Create tag with exist_ok=False (will fail if exists) - tag = repo.tag(tag_name).create(source_ref="main", exist_ok=False) - print(f"Created new tag: {tag_name}") - -except ConflictException: - print(f"Tag already exists: {tag_name}") - tag = repo.tag(tag_name) - print(f"Using existing tag: {tag.get_commit().id}") -``` - -## Listing Tags - -List all tags in a repository: - -```python -import lakefs - -repo = lakefs.repository("my-data-repo") - -print("All tags in repository:") -for tag in repo.tags(): - commit = tag.get_commit() - print(f" {tag.id:20} -> {commit.id[:8]}... ({commit.message})") -``` - -### Get Tag Information - -Get detailed information about a specific tag: - -```python -import lakefs - -repo = lakefs.repository("my-data-repo") -tag = repo.tag("v1.0.0") - -try: - commit = tag.get_commit() - - print(f"Tag: {tag.id}") - print(f"Commit ID: {commit.id}") - print(f"Message: {commit.message}") - print(f"Committer: {commit.committer}") - print(f"Created: {commit.creation_date}") - print(f"Metadata: {commit.metadata}") - -except Exception as e: - print(f"Tag not found: {e}") -``` - -## Accessing Data from Tags - -### List Objects in a Tagged Version - -List all objects in a specific tagged version: - -```python -import lakefs - -repo = lakefs.repository("my-data-repo") -tag_ref = repo.ref("v1.0.0") # Use ref() for tag access - -# List all objects in this tag -print(f"Objects in v1.0.0:") -for obj in tag_ref.objects(): - print(f" {obj.path}") - -# List specific prefix -print(f"\nModels in v1.0.0:") -for obj in tag_ref.objects(prefix="models/"): - if hasattr(obj, 'path'): # It's a file, not a folder - print(f" {obj.path} ({obj.size_bytes} bytes)") -``` - -### Read Data from Tagged Version - -Read object contents from a specific tag: - -```python -import lakefs -import csv -import io - -repo = lakefs.repository("my-data-repo") -tag_ref = repo.ref("v1.0.0") - -# Read a CSV file from the tag -try: - obj = tag_ref.object("data/dataset.csv") - - with obj.reader(mode='r') as f: - reader = csv.reader(f) - headers = next(reader) - print(f"Headers: {headers}") - - for row in reader: - print(f" {row}") - -except Exception as e: - print(f"Error reading file: {e}") -``` - -### Compare Data Across Tagged Versions - -Compare what changed between two tagged versions: - -```python -import lakefs - -repo = lakefs.repository("my-data-repo") -tag_v1 = repo.ref("v1.0.0") -tag_v2 = repo.ref("v2.0.0") - -# See what changed -print("Changes from v1.0.0 to v2.0.0:") -for change in tag_v1.diff(other_ref=tag_v2): - print(f" {change.type:10} {change.path}") - -# Count change types -changes = list(tag_v1.diff(other_ref=tag_v2)) -added = len([c for c in changes if c.type == "added"]) -removed = len([c for c in changes if c.type == "removed"]) -changed = len([c for c in changes if c.type == "changed"]) - -print(f"\nSummary: +{added} -{removed} ~{changed}") -``` - -## Deleting Tags - -### Delete a Single Tag - -Remove a tag that's no longer needed: - -```python -import lakefs - -repo = lakefs.repository("my-data-repo") - -try: - tag = repo.tag("old-release") - tag.delete() - print("Tag deleted: old-release") - -except Exception as e: - print(f"Delete failed: {e}") -``` - -## Commit Relationships - -### Identify Merge Commits - -Find and analyze merge commits: - -```python -import lakefs - -repo = lakefs.repository("my-data-repo") -branch = repo.branch("main") - -print("Merge commits:") -for i, commit in enumerate(branch.log(max_amount=50)): - if len(commit.parents) > 1: - print(f" {commit.id[:8]} - Merged {len(commit.parents)} branches") - print(f" Message: {commit.message}") - print(f" Parents: {', '.join([p[:8] for p in commit.parents])}") -``` - -### Trace Commit Ancestry - -Follow a commit back through its parents. This is for better understanding of commit, we will prefer to use `log` operation to trace back changes: - -```python -import lakefs - -def trace_ancestry(repo_name, commit_id, depth=5): - """Trace commit ancestry up to specified depth""" - repo = lakefs.repository(repo_name) - ancestry = [] - - current_id = commit_id - - for level in range(depth): - try: - commit_ref = repo.commit(current_id) - commit = commit_ref.get_commit() - - ancestry.append({ - "level": level, - "commit_id": commit.id[:8], - "message": commit.message, - "parents": commit.parents - }) - - # Move to first parent - if commit.parents: - current_id = commit.parents[0] - else: - break - - except Exception as e: - print(f"Error at level {level}: {e}") - break - - return ancestry - - -# Usage: -ancestry = trace_ancestry("my-repo", "abc123def456", depth=5) -print("Commit Ancestry:") -for entry in ancestry: - indent = " " * entry["level"] - print(f"{indent}└─ {entry['commit_id']} - {entry['message']}") -``` - -## Real-World Workflows - -### ML Model Release Workflow - -Release trained models with versioning: - -```python -import lakefs -import json - -def release_ml_model(repo_name, model_version, model_metrics): - """ - Create a versioned release of an ML model - """ - repo = lakefs.repository(repo_name) - - try: - # Create release tag - tag_name = f"model-v{model_version}" - tag = repo.tag(tag_name).create(source_ref="main") - - commit = tag.get_commit() - - print(f"ML Model Released: {tag_name}") - print(f" Commit: {commit.id[:8]}") - - # Read model metadata from tagged version - tag_ref = repo.ref(tag_name) - - try: - with tag_ref.object("models/metadata.json").reader() as f: - metadata = json.load(f) - print(f" Model: {metadata.get('name')}") - print(f" Framework: {metadata.get('framework')}") - print(f" Version: {metadata.get('version')}") - except: - print(" (No metadata file)") - - # Store release info - release_info = { - "version": model_version, - "commit": commit.id, - "metrics": model_metrics, - "tag": tag_name - } - - return release_info - - except Exception as e: - print(f"Model release failed: {e}") - return None - - -# Usage: -metrics = { - "accuracy": 0.945, - "precision": 0.92, - "recall": 0.96, - "f1": 0.939 -} - -release_info = release_ml_model("ml-repo", "3.2.0", metrics) -if release_info: - print(f"\nModel released and can be retrieved from tag: {release_info['tag']}") -``` - -### Production Deployment Workflow - -Manage production data versions: - -```python -import lakefs - -def promote_to_production(repo_name, from_tag, environment): - """ - Promote a tagged version to production by creating an environment tag - """ - repo = lakefs.repository(repo_name) - - try: - # Create environment-specific tag - env_tag_name = f"prod-{environment}" - - # Delete old environment tag if it exists - try: - old_tag = repo.tag(env_tag_name) - old_tag.delete() - print(f"Removed old {env_tag_name} tag") - except: - pass # Tag didn't exist - - # Create new environment tag pointing to the same commit as version tag - source_tag = repo.tag(from_tag) - env_tag = repo.tag(env_tag_name).create(source_ref=source_tag) - - print(f"Promoted to {environment}") - print(f" Source: {from_tag}") - print(f" Target: {env_tag_name}") - print(f" Commit: {env_tag.get_commit().id[:8]}") - - return env_tag_name - - except Exception as e: - print(f"Promotion failed: {e}") - return None - - -# Usage: -env_tag = promote_to_production("prod-repo", "v2.1.0", "us-west-1") -if env_tag: - print(f"Production data updated to use {env_tag}") -``` - - -## Error Handling - -### Handling Common Reference Errors - -```python -import lakefs -from lakefs.exceptions import NotFoundException - -repo = lakefs.repository("my-data-repo") - -# Reference doesn't exist -try: - ref = repo.ref("non-existent-ref") - commit = ref.get_commit() -except NotFoundException: - print("Reference not found") - -# Commit doesn't exist -try: - commit_ref = repo.commit("nonexistent123") - commit = commit_ref.get_commit() -except NotFoundException: - print("Commit not found") - -# Invalid reference expression -try: - ref = repo.ref("main~1000") # Try to get 1000 commits back - commit = ref.get_commit() -except NotFoundException: - print("Reference expression invalid or out of range") -``` - -### Handling Tag Errors - -```python -import lakefs -from lakefs.exceptions import ConflictException, NotFoundException - -repo = lakefs.repository("my-data-repo") - -# Tag already exists -try: - tag = repo.tag("v1.0.0").create(source_ref="main", exist_ok=False) -except ConflictException: - print("Tag already exists") - tag = repo.tag("v1.0.0") - -# Tag doesn't exist -try: - tag = repo.tag("non-existent-tag") - commit = tag.get_commit() -except NotFoundException: - print("Tag not found") -``` diff --git a/docs/src/integrations/python-sdk.md b/docs/src/integrations/python-sdk.md deleted file mode 100644 index 54870ab69df..00000000000 --- a/docs/src/integrations/python-sdk.md +++ /dev/null @@ -1,216 +0,0 @@ ---- -title: Python - Generated SDK -description: Use the generated lakeFS SDK for direct API access with Python ---- - -# Using the Generated lakeFS SDK - -The generated `lakefs-sdk` provides direct access to the lakeFS API based on the OpenAPI specification. This low-level SDK gives you complete control over API interactions and is useful when you need capabilities not covered by the High-Level SDK or when you prefer working directly with the API. - -## When to Use - -Use the generated SDK when you: - -- Need **low-level API access** with full control over requests -- Want to use **features not available** in the High-Level SDK -- Prefer **direct API interaction** patterns -- Need to **access all API endpoints** programmatically - -!!! info - For most common lakeFS operations (branches, tags, commits, objects), the **[High-Level SDK](./python.md)** is recommended as it provides a more Pythonic interface. - -## Installation - -Install the generated SDK using pip: - -```shell -pip install lakefs-sdk -``` - -Or upgrade to the latest version: - -```shell -pip install --upgrade lakefs-sdk -``` - -## Basic Setup - -### Initializing the SDK - -```python -import lakefs_sdk -from lakefs_sdk.rest import ApiException - -# Configure the API client -configuration = lakefs_sdk.Configuration( - host="https://example.lakefs.io/api/v1", - username="your-access-key", - password="your-secret-key" -) - -# Create an API client -api_client = lakefs_sdk.ApiClient(configuration) -``` - -### Authentication Options - -The SDK supports multiple authentication methods: - -```python -import lakefs_sdk -import os - -# HTTP Basic Authentication -configuration = lakefs_sdk.Configuration( - host="https://example.lakefs.io/api/v1", - username=os.environ["LAKEFS_ACCESS_KEY"], - password=os.environ["LAKEFS_SECRET_KEY"] -) - -# JWT Bearer Token -configuration = lakefs_sdk.Configuration( - host="https://example.lakefs.io/api/v1", - access_token=os.environ["LAKEFS_TOKEN"] -) - -api_client = lakefs_sdk.ApiClient(configuration) -``` - -## Simple Examples - -### List Repositories - -```python -import lakefs_sdk -from lakefs_sdk.apis.repositories_api import RepositoriesApi - -configuration = lakefs_sdk.Configuration( - host="https://example.lakefs.io/api/v1", - username="your-access-key", - password="your-secret-key" -) - -with lakefs_sdk.ApiClient(configuration) as api_client: - api_instance = RepositoriesApi(api_client) - - try: - response = api_instance.list_repositories() - for repo in response.results: - print(f"Repository: {repo.id}") - except lakefs_sdk.ApiException as e: - print(f"Error: {e}") -``` - -### Get Repository Details - -```python -import lakefs_sdk -from lakefs_sdk.apis.repositories_api import RepositoriesApi - -configuration = lakefs_sdk.Configuration( - host="https://example.lakefs.io/api/v1", - username="your-access-key", - password="your-secret-key" -) - -with lakefs_sdk.ApiClient(configuration) as api_client: - api_instance = RepositoriesApi(api_client) - repository = "my-repo" - - try: - repo = api_instance.get_repository(repository) - print(f"Repository: {repo.id}") - print(f"Storage: {repo.storage_namespace}") - print(f"Created: {repo.creation_date}") - except lakefs_sdk.ApiException as e: - print(f"Error: {e}") -``` - -### List Branches - -```python -import lakefs_sdk -from lakefs_sdk.apis.branches_api import BranchesApi - -configuration = lakefs_sdk.Configuration( - host="https://example.lakefs.io/api/v1", - username="your-access-key", - password="your-secret-key" -) - -with lakefs_sdk.ApiClient(configuration) as api_client: - api_instance = BranchesApi(api_client) - repository = "my-repo" - - try: - response = api_instance.list_branches(repository) - for branch in response.results: - print(f"Branch: {branch.id}") - except lakefs_sdk.ApiException as e: - print(f"Error: {e}") -``` - -### Create a Commit - -```python -import lakefs_sdk -from lakefs_sdk.apis.commits_api import CommitsApi -from lakefs_sdk.models.commit_creation import CommitCreation - -configuration = lakefs_sdk.Configuration( - host="https://example.lakefs.io/api/v1", - username="your-access-key", - password="your-secret-key" -) - -with lakefs_sdk.ApiClient(configuration) as api_client: - api_instance = CommitsApi(api_client) - repository = "my-repo" - branch = "main" - - commit_creation = CommitCreation( - message="My commit message", - metadata={"author": "data-team"} - ) - - try: - commit = api_instance.commit(repository, branch, commit_creation) - print(f"Committed: {commit.id}") - except lakefs_sdk.ApiException as e: - print(f"Error: {e}") -``` - -## Error Handling - -Handle API errors using `ApiException`: - -```python -import lakefs_sdk -from lakefs_sdk.apis.repositories_api import RepositoriesApi -from lakefs_sdk.rest import ApiException - -configuration = lakefs_sdk.Configuration( - host="https://example.lakefs.io/api/v1", - username="your-access-key", - password="your-secret-key" -) - -with lakefs_sdk.ApiClient(configuration) as api_client: - api_instance = RepositoriesApi(api_client) - - try: - response = api_instance.list_repositories() - except ApiException as e: - if e.status == 401: - print("Unauthorized - check credentials") - elif e.status == 404: - print("Resource not found") - else: - print(f"API Error: {e.reason}") -``` - -## Full API Reference - -For complete API documentation and method signatures, see: - -- **[Full SDK API Reference](https://pydocs-sdk.lakefs.io)** - Complete documentation for all API classes and methods diff --git a/docs/src/integrations/python-transactions.md b/docs/src/integrations/python-transactions.md deleted file mode 100644 index 989a4008902..00000000000 --- a/docs/src/integrations/python-transactions.md +++ /dev/null @@ -1,726 +0,0 @@ ---- -title: Python - Transactions -description: Perform atomic operations using transactions in lakeFS with Python ---- - -# Working with Transactions - -Transactions enable you to perform multiple operations atomically on lakeFS, similar to database transactions. This guide covers creating and managing transactions for reliable data operations. - -## Understanding Transactions - -### What are Transactions? - -A transaction in lakeFS: - -1. Creates an ephemeral (temporary) branch from a source branch -2. Performs all operations on that ephemeral branch -3. Atomically merges the branch back upon successful completion -4. Automatically cleans up the ephemeral branch -5. Rolls back if any error occurs - -This ensures either all operations succeed or none of them do. - -## Creating Transactions - -### Basic Transaction - -Perform multiple operations atomically: - -```python -import lakefs - -repo = lakefs.repository("my-data-repo") -branch = repo.branch("main") - -try: - with branch.transact(commit_message="Add datasets") as tx: - # All operations happen on ephemeral branch - tx.object("data/file1.csv").upload(data=b"id,value\n1,100\n2,200") - tx.object("data/file2.csv").upload(data=b"id,name\n1,Alice\n2,Bob") - - print("Upload successful - changes will be committed atomically") - - # At this point, transaction is complete and merged - print("Transaction committed to main") - -except Exception as e: - # If we get here, changes were rolled back - print(f"Transaction failed and rolled back: {e}") -``` - -### Transaction with Metadata - -Include metadata in the commit created by the transaction: - -```python -import lakefs -from datetime import datetime - -repo = lakefs.repository("my-data-repo") -branch = repo.branch("main") - -try: - with branch.transact( - commit_message="Import customer data", - commit_metadata={ - "import-date": datetime.now().isoformat(), - "source": "database-export", - "record-count": "10000" - } - ) as tx: - # Perform operations - tx.object("data/customers.csv").upload(data=b"id,name,email\n1,Alice,alice@example.com") - - print("Data imported") - - # Transaction complete with metadata - print("Transaction committed with tracking metadata") - -except Exception as e: - print(f"Import failed: {e}") -``` - -### Transaction with Tagging - -Create a tag after successful transaction completion: - -```python -import lakefs - -repo = lakefs.repository("my-data-repo") -branch = repo.branch("main") - -try: - with branch.transact( - commit_message="Production data release v1.5", - tag="v1.5.0" # Tag is created if transaction succeeds - ) as tx: - # Make changes - tx.object("VERSION").upload(data=b"1.5.0") - tx.object("data/prod.csv").upload(data=b"updated data") - - print("Production release in progress") - - print("Release tagged and deployed") - -except Exception as e: - print(f"Release failed: {e}") - print("Changes rolled back, no tag created") -``` - -## Working with Transaction Context - -### Performing Multiple Operations - -Execute multiple operations within a transaction: - -```python -import lakefs - -repo = lakefs.repository("analytics-repo") -branch = repo.branch("develop") - -try: - with branch.transact(commit_message="Data preparation pipeline") as tx: - # Step 1: Upload raw data - tx.object("raw/input.csv").upload(data=b"raw input data") - - # Step 2: Upload processing script - tx.object("scripts/transform.py").upload( - data=b"#!/usr/bin/env python\n# Transformation logic" - ) - - # Step 3: Upload intermediate results - tx.object("processed/output.csv").upload(data=b"processed output") - - # Step 4: Upload metadata - tx.object(".metadata/pipeline_version.txt").upload(data=b"1.0") - - print("All pipeline stages added atomically") - - print("Pipeline committed successfully") - -except Exception as e: - print(f"Pipeline failed: {e}") -``` - -### Reading and Modifying Data - -Read objects and modify them within a transaction: - -```python -import lakefs - -repo = lakefs.repository("my-data-repo") -branch = repo.branch("main") - -try: - with branch.transact(commit_message="Data validation update") as tx: - # Read existing data - try: - with tx.object("data/config.txt").reader(mode='r') as f: - config_data = f.read() - print(f"Current config: {config_data}") - except: - config_data = "" - - # Modify data - updated_config = config_data + "\nvalidation_enabled: true" - - # Write updated data - tx.object("data/config.txt").upload(data=updated_config.encode()) - - print("Config updated") - - print("Configuration changes committed") - -except Exception as e: - print(f"Update failed: {e}") -``` - -### Iterating and Modifying Objects - -Process multiple objects within a transaction: - -```python -import lakefs - -repo = lakefs.repository("my-data-repo") -branch = repo.branch("main") - -try: - with branch.transact(commit_message="Bulk update data versions") as tx: - # List objects and modify each one - processed_count = 0 - - for obj in tx.objects(prefix="data/"): - # Read object - try: - with obj.reader(mode='r') as f: - content = f.read() - - # Add version marker - versioned_content = f"# version: 2.0\n{content}" - - # Write back - tx.object(obj.path).upload(data=versioned_content.encode()) - processed_count += 1 - - except Exception as e: - print(f"Error processing {obj.path}: {e}") - raise # Transaction will rollback - - print(f"Processed {processed_count} objects") - - print(f"Bulk update committed: {processed_count} objects updated") - -except Exception as e: - print(f"Bulk update failed and rolled back: {e}") -``` - -## Transaction Error Handling - -### Basic Error Handling in Transactions - -```python -import lakefs - -repo = lakefs.repository("my-data-repo") -branch = repo.branch("main") - -try: - with branch.transact(commit_message="Data operations") as tx: - # First operation - tx.object("data/file1.csv").upload(data=b"data1") - - # Second operation that might fail - try: - with tx.object("data/large_file.csv").reader() as f: - large_content = f.read() - - # Process large content - if len(large_content) > 1000000: - raise ValueError("File too large") - - except ValueError as e: - print(f"Validation failed: {e}") - raise # This will rollback the entire transaction - - # Third operation - tx.object("data/file2.csv").upload(data=b"data2") - -except Exception as e: - print(f"Transaction rolled back: {e}") -``` - -### Transaction with Cleanup on Error - -```python -import lakefs - -repo = lakefs.repository("my-data-repo") -branch = repo.branch("main") - -cleanup_needed = False - -try: - with branch.transact( - commit_message="Complex operation", - delete_branch_on_error=True # Default is True - ) as tx: - # Perform operations - cleanup_needed = True - - tx.object("step1/file.csv").upload(data=b"step 1") - - # Simulate error - if True: # In real code, some condition - raise Exception("Something went wrong in step 1") - - tx.object("step2/file.csv").upload(data=b"step 2") - cleanup_needed = False - -except Exception as e: - if cleanup_needed: - print(f"Operation failed, ephemeral branch automatically cleaned up") - print(f"Error: {e}") -``` - -### Transaction with Conditional Rollback - -```python -import lakefs - -def validate_data(data): - """Validate data meets requirements""" - if len(data) == 0: - raise ValueError("Empty data not allowed") - if b"invalid" in data: - raise ValueError("Data contains invalid markers") - return True - - -repo = lakefs.repository("my-data-repo") -branch = repo.branch("main") - -try: - with branch.transact(commit_message="Data import with validation") as tx: - # Upload data - data = b"id,value\n1,100\n2,200" - - # Validate before committing - validate_data(data) - - # If validation passes, commit - tx.object("data/validated.csv").upload(data=data) - - print("Data validation passed, changes committed") - -except ValueError as e: - print(f"Validation error - transaction rolled back: {e}") -except Exception as e: - print(f"Transaction error: {e}") -``` - -## Real-World Workflows - -### Data Quality Validation Workflow - -Implement data quality checks before committing changes: - -```python -import lakefs -import csv -import io - -def check_data_quality(repo_name, data_path, quality_rules): - """ - Check data quality before committing - Returns True if passes all checks, False otherwise - """ - repo = lakefs.repository(repo_name) - branch = repo.branch("main") - - try: - with branch.transact(commit_message="Quality checked data") as tx: - # Read data - with tx.object(data_path).reader(mode='r') as f: - data = f.read() - - # Run quality checks - errors = [] - - # Check 1: Not empty - if len(data) == 0: - errors.append("Data is empty") - - # Check 2: Valid CSV format - try: - reader = csv.reader(io.StringIO(data.decode())) - rows = list(reader) - if len(rows) < 2: - errors.append("Data has no rows") - except Exception as e: - errors.append(f"Invalid CSV format: {e}") - - # Check 3: Custom rules - for rule in quality_rules: - if not rule(data): - errors.append(f"Failed custom rule: {rule.__name__}") - - # If checks fail, raise error (transaction will rollback) - if errors: - error_msg = "; ".join(errors) - raise ValueError(f"Quality checks failed: {error_msg}") - - # If all pass, add quality marker - tx.object(f"{data_path}.quality_passed").upload(data=b"true") - - print(f"Data quality checks passed for {data_path}") - return True - - except Exception as e: - print(f"Quality check failed: {e}") - return False - - -# Usage: -def rule_has_headers(data): - """Custom rule: data must have headers""" - lines = data.decode().strip().split('\n') - return len(lines) > 0 and ',' in lines[0] - -success = check_data_quality( - "analytics-repo", - "data/incoming.csv", - [rule_has_headers] -) - -if success: - print("Data passed quality gates and is now committed") -``` - -### Database Synchronization Workflow - -Keep data synchronized with atomicity guarantees: - -```python -import lakefs -import json -from datetime import datetime - -def sync_database_export(repo_name, table_name, export_data, export_metadata): - """ - Atomically sync a database table export: - 1. Store the export data - 2. Update metadata - 3. Update sync timestamp - 4. All-or-nothing - """ - repo = lakefs.repository(repo_name) - branch = repo.branch("main") - - try: - with branch.transact( - commit_message=f"Sync: {table_name}", - commit_metadata={ - "sync-type": "database-export", - "table": table_name, - "sync-time": datetime.now().isoformat() - } - ) as tx: - # Step 1: Store the data - data_path = f"data/{table_name}.csv" - tx.object(data_path).upload(data=export_data) - - # Step 2: Store metadata - metadata = { - "table": table_name, - "row_count": export_metadata.get("row_count", 0), - "columns": export_metadata.get("columns", []), - "sync_timestamp": datetime.now().isoformat(), - "source_database": export_metadata.get("source", "unknown") - } - metadata_path = f".metadata/{table_name}_metadata.json" - tx.object(metadata_path).upload( - data=json.dumps(metadata, indent=2).encode() - ) - - # Step 3: Update sync status - status = { - "table": table_name, - "last_sync": datetime.now().isoformat(), - "status": "success" - } - status_path = f".sync/{table_name}_status.json" - tx.object(status_path).upload( - data=json.dumps(status).encode() - ) - - print(f"Synchronized {table_name}") - - print(f"Sync committed atomically") - return True - - except Exception as e: - print(f"Sync failed - rolling back: {e}") - return False - - -# Usage: -success = sync_database_export( - "warehouse-repo", - "customers", - b"id,name,email\n1,Alice,alice@example.com\n2,Bob,bob@example.com", - { - "row_count": 2, - "columns": ["id", "name", "email"], - "source": "production_db" - } -) -``` - -### ETL Pipeline with Checkpoints - -Implement ETL with atomic checkpoints: - -```python -import lakefs - -def etl_pipeline_step(repo_name, branch_name, step_name, step_logic): - """ - Run an ETL step with atomic checkpointing - """ - repo = lakefs.repository(repo_name) - branch = repo.branch(branch_name) - - try: - with branch.transact( - commit_message=f"ETL: {step_name}", - commit_metadata={"etl-step": step_name} - ) as tx: - # Run the step logic - result = step_logic(tx) - - # Create checkpoint - checkpoint = { - "step": step_name, - "status": "completed", - "records_processed": result.get("count", 0) - } - - tx.object(f".checkpoints/{step_name}.json").upload( - data=json.dumps(checkpoint).encode() - ) - - print(f"Step '{step_name}' completed with checkpoint") - return True - - except Exception as e: - print(f"Step '{step_name}' failed - checkpoint rolled back: {e}") - return False - - -# Define ETL steps -def extract_step(tx): - """Extract data""" - tx.object("etl/01_raw/data.csv").upload(data=b"extracted data") - return {"count": 1} - -def transform_step(tx): - """Transform data""" - tx.object("etl/02_transformed/data.csv").upload(data=b"transformed data") - return {"count": 1} - -def load_step(tx): - """Load data""" - tx.object("etl/03_loaded/data.csv").upload(data=b"loaded data") - return {"count": 1} - - -# Execute pipeline -import json - -steps = [ - ("extract", extract_step), - ("transform", transform_step), - ("load", load_step) -] - -for step_name, step_func in steps: - success = etl_pipeline_step("data-repo", "main", step_name, step_func) - if not success: - print(f"ETL failed at {step_name}") - break -else: - print("ETL pipeline completed successfully") -``` - -### Schema Evolution with Validation - -Safely evolve data schema with validation: - -```python -import lakefs -import csv -import io - -def evolve_schema(repo_name, table_name, old_schema, new_schema, migration_logic): - """ - Evolve a table schema with validation - Either all rows get migrated or none do - """ - repo = lakefs.repository(repo_name) - branch = repo.branch("main") - - try: - with branch.transact( - commit_message=f"Schema evolution: {table_name}", - commit_metadata={ - "schema-version": new_schema.get("version"), - "migration-type": "schema-evolution" - } - ) as tx: - # Read current data - try: - with tx.object(f"data/{table_name}.csv").reader(mode='r') as f: - current_data = f.read() - except: - raise ValueError(f"Table {table_name} not found") - - # Parse CSV - reader = csv.DictReader(io.StringIO(current_data.decode())) - rows = list(reader) - - # Migrate each row - migrated_rows = [] - for row in rows: - migrated_row = migration_logic(row, old_schema, new_schema) - migrated_rows.append(migrated_row) - - # Write migrated data - output = io.StringIO() - writer = csv.DictWriter( - output, - fieldnames=new_schema.get("columns", []) - ) - writer.writeheader() - writer.writerows(migrated_rows) - - tx.object(f"data/{table_name}.csv").upload( - data=output.getvalue().encode() - ) - - # Store schema version - tx.object(f".schema/{table_name}.json").upload( - data=json.dumps(new_schema).encode() - ) - - print(f"Schema evolved for {table_name}") - return True - - except Exception as e: - print(f"Schema evolution failed - rolled back: {e}") - return False - - -# Usage: -old_schema = { - "version": 1, - "columns": ["id", "name", "email"] -} - -new_schema = { - "version": 2, - "columns": ["id", "name", "email", "phone"] -} - -def add_phone_column(row, old, new): - row["phone"] = "" # Default empty phone - return row - -success = evolve_schema( - "crm-repo", - "contacts", - old_schema, - new_schema, - add_phone_column -) -``` - -## Advanced Patterns - -### Conditional Transaction Execution - -```python -import lakefs - -repo = lakefs.repository("my-data-repo") -branch = repo.branch("main") - -# Check if we need to make changes -changes_needed = True # In real code, some condition - -if changes_needed: - try: - with branch.transact(commit_message="Conditional update") as tx: - tx.object("data/file.csv").upload(data=b"new data") - print("Update committed") - except Exception as e: - print(f"Update failed: {e}") -else: - print("No changes needed, skipping transaction") -``` - -### Transaction Retry Logic - -```python -import lakefs -import time - -def transact_with_retry(repo_name, branch_name, max_retries=3): - """Retry transaction on failure""" - repo = lakefs.repository(repo_name) - branch = repo.branch(branch_name) - - for attempt in range(max_retries): - try: - with branch.transact(commit_message=f"Attempt {attempt + 1}") as tx: - tx.object("data/file.csv").upload(data=b"data") - print("Transaction succeeded") - return True - - except Exception as e: - print(f"Attempt {attempt + 1} failed: {e}") - if attempt < max_retries - 1: - wait_time = 2 ** attempt # Exponential backoff - print(f"Retrying in {wait_time} seconds...") - time.sleep(wait_time) - else: - print(f"Failed after {max_retries} attempts") - return False -``` - -## Error Handling - -```python -import lakefs -from lakefs.exceptions import NotFoundException, ForbiddenException, ServerException - -repo = lakefs.repository("my-data-repo") -branch = repo.branch("main") - -try: - with branch.transact(commit_message="Safe operation") as tx: - tx.object("data/file.csv").upload(data=b"data") - -except NotFoundException: - print("Branch or repository not found") -except ForbiddenException: - print("Permission denied - cannot write to branch") -except ServerException as e: - print(f"Server error - transaction rolled back: {e}") -except Exception as e: - print(f"Unexpected error: {e}") -``` diff --git a/docs/src/integrations/python-versioning-branches.md b/docs/src/integrations/python-versioning-branches.md deleted file mode 100644 index 69264241b06..00000000000 --- a/docs/src/integrations/python-versioning-branches.md +++ /dev/null @@ -1,634 +0,0 @@ ---- -title: Python - Branches & Merging -description: Work with branches in lakeFS using the Python SDK for feature branching, experimentation, and collaboration ---- - -# Working with Branches & Merging - -Branches are the foundation of version control in lakeFS. They enable parallel development, safe experimentation, and collaborative data management. This guide covers all branch operations using the Python SDK. - -### Understanding Repositories and Branches - -

Repositories

- -A repository is a versioned storage namespace that holds all your data and version history. Create a repository by specifying a storage location: - -```python -import lakefs - -repo = lakefs.repository("my-repo").create( - storage_namespace="s3://my-bucket/data" -) -``` - -

Branches

- -Branches enable parallel development and experimentation. Each branch maintains its own version of the data: - -```python -branch = lakefs.repository("my-repo").branch("main") -experiment_branch = lakefs.repository("my-repo").branch("experiment1").create( - source_reference="main" -) -``` - -### Creating and Listing Branches - -

Creating a Branch

- -Create a new branch from any reference (branch, tag, or commit): - -```python -import lakefs - -# Initialize repository -repo = lakefs.repository("my-data-repo") - -# Create a branch from main -experiment_branch = repo.branch("experiment-1").create(source_reference="main") - -print(f"Created branch: {experiment_branch.id}") - -# Check what commit this branch points to -commit = experiment_branch.get_commit() -print(f"Branch head: {commit.id}") -``` - -**Using an explicit client:** - -```python -import lakefs -from lakefs.client import Client - -# Create client -client = Client( - host="http://localhost:8000", - username="your-access-key", - password="your-secret-key" -) - -# Create branch with explicit client -branch = lakefs.repository("my-repo", client=client).branch("dev").create( - source_reference="main" -) -``` - -

Listing Branches

- -List all branches in a repository: - -```python -import lakefs - -repo = lakefs.repository("my-data-repo") - -print("All branches:") -for branch in repo.branches(): - commit = branch.get_commit() - print(f" {branch.id:20} -> {commit.id[:8]}... ({commit.message})") -``` - -

Checking Branch Head

- -Get the commit a branch is currently pointing to: - -```python -import lakefs - -branch = lakefs.repository("my-data-repo").branch("main") - -# Get the head commit -head_commit = branch.get_commit() -print(f"Current head: {head_commit.id}") -print(f"Committed by: {head_commit.committer}") -print(f"Message: {head_commit.message}") - -# Or use the head property -head_ref = branch.head -print(f"Head reference ID: {head_ref.id}") -``` - -### Working with Branch Content - -

Viewing Uncommitted Changes

- -See what's changed on a branch since the last commit: - -```python -import lakefs - -branch = lakefs.repository("my-data-repo").branch("feature-branch") - -# List uncommitted changes -print("Uncommitted changes:") -for change in branch.uncommitted(): - print(f" {change.type:10} {change.path} ({change.size_bytes} bytes)") - -# Count changes -change_count = len(list(branch.uncommitted())) -print(f"Total changes: {change_count}") - -# Filter changes by prefix -data_changes = [c for c in branch.uncommitted() if c.path.startswith("data/")] -print(f"Changes in data/ folder: {len(data_changes)}") -``` - -

Committing Changes

- -Create a commit with your changes: - -```python -import lakefs - -branch = lakefs.repository("my-data-repo").branch("feature-branch") - -# Upload some data first -branch.object("data/dataset.csv").upload(data=b"id,value\n1,100\n2,200") - -# Commit with message and metadata -ref = branch.commit( - message="Add customer dataset", - metadata={ - "author": "data-team", - "version": "1.0", - "dataset-type": "raw" - } -) - -print(f"Committed: {ref.id}") -print(f"Message: {ref.get_commit().message}") -print(f"Metadata: {ref.get_commit().metadata}") -``` - -### Comparing Branches - -

Diff Between References

- -See what changed between two branches or commits: - -```python -import lakefs - -repo = lakefs.repository("my-data-repo") -main_branch = repo.branch("main") -feature_branch = repo.branch("feature-add-models") - -# Compare branches -print("Changes in feature-add-models vs main:") -for change in main_branch.diff(other_ref=feature_branch): - print(f" {change.type:10} {change.path}") - -# Count different types of changes -changes = list(main_branch.diff(other_ref=feature_branch)) -added = len([c for c in changes if c.type == "added"]) -removed = len([c for c in changes if c.type == "removed"]) -modified = len([c for c in changes if c.type == "modified"]) - -print(f"Added: {added}, Removed: {removed}, Modified: {modified}") -``` - -### Merging Branches - -

Merging Into Another Branch

- -Merge changes from one branch into another: - -```python -import lakefs - -repo = lakefs.repository("my-data-repo") -feature_branch = repo.branch("feature-branch") -main_branch = repo.branch("main") - -try: - # Merge feature branch into main - merge_result = feature_branch.merge_into(main_branch) - print(f"Merge successful: {merge_result}") - - # Verify merge by checking that differences are gone - remaining_diffs = list(main_branch.diff(other_ref=feature_branch)) - print(f"Remaining differences: {len(remaining_diffs)}") - -except Exception as e: - print(f"Merge failed: {e}") - # Resolve conflicts or adjust data and try again -``` - -

Merge with Conflict Detection

- -```python -import lakefs - -repo = lakefs.repository("my-data-repo") - -try: - branch1 = repo.branch("feature-1") - branch2 = repo.branch("feature-2") - main = repo.branch("main") - - # Check for conflicts before merging - conflicts = list(main.diff(other_ref=branch1)) - - if conflicts: - print(f"Potential conflicts: {len(conflicts)} changes") - for change in conflicts[:5]: # Show first 5 - print(f" {change.type}: {change.path}") - - # Proceed with merge if acceptable - merge_commit = branch1.merge_into(main) - print(f"Merged into main: {merge_commit}") - -except Exception as e: - print(f"Merge error: {e}") -``` - -### Cherry-Picking Commits - -Apply a specific commit from one branch to another: - -```python -import lakefs - -repo = lakefs.repository("my-data-repo") -main_branch = repo.branch("main") -release_branch = repo.branch("release-v1.0") - -try: - # Cherry-pick a specific commit onto release branch - # First, get a commit ID from main - main_commits = list(main_branch.log(max_amount=5)) - if main_commits: - commit_to_cherry_pick = main_commits[0] - - # Cherry-pick it onto release branch - new_commit = release_branch.cherry_pick(commit_to_cherry_pick.id) - print(f"Cherry-picked commit: {new_commit.id}") - print(f"Message: {new_commit.message}") - -except Exception as e: - print(f"Cherry-pick failed: {e}") -``` - -### Reverting Changes - -

Revert a Commit

- -Undo the changes from a specific commit: - -```python -import lakefs - -repo = lakefs.repository("my-data-repo") -branch = repo.branch("develop") - -try: - # Get recent commits - recent_commits = list(branch.log(max_amount=10)) - - if len(recent_commits) > 1: - # Revert the most recent commit - commit_to_revert = recent_commits[0] - - revert_result = branch.revert(reference=commit_to_revert.id) - print(f"Reverted commit: {commit_to_revert.id}") - print(f"New commit created: {revert_result.id}") - -except Exception as e: - print(f"Revert failed: {e}") -``` - -

Reverting Merge Commits

- -When reverting a merge commit, you can specify which parent to revert against: - -```python -import lakefs - -branch = lakefs.repository("my-data-repo").branch("main") - -try: - # Get commit history - commits = list(branch.log(max_amount=5)) - - for commit in commits: - # If this is a merge commit (has multiple parents) - if len(commit.parents) > 1: - # Revert against parent 1 (the original main) - result = branch.revert(reference=commit.id, parent_number=1) - print(f"Reverted merge commit: {commit.id}") - break - -except Exception as e: - print(f"Error: {e}") -``` - -### Resetting Branches - -

Reset Uncommitted Changes

- -Discard uncommitted changes on a branch: - -```python -import lakefs - -branch = lakefs.repository("my-data-repo").branch("feature-branch") - -# Show uncommitted changes before reset -changes_before = list(branch.uncommitted()) -print(f"Uncommitted changes before reset: {len(changes_before)}") - -try: - # Reset all changes - branch.reset_changes(path_type="reset") - - # Verify changes are gone - changes_after = list(branch.uncommitted()) - print(f"Uncommitted changes after reset: {len(changes_after)}") - -except Exception as e: - print(f"Reset failed: {e}") -``` - -

Reset Changes for Specific Paths

- -Reset changes only for certain paths or prefixes: - -```python -import lakefs - -branch = lakefs.repository("my-data-repo").branch("develop") - -try: - # Reset changes for a specific object - branch.reset_changes(path_type="object", path="data/temp.csv") - print("Reset: data/temp.csv") - - # Reset all changes in a folder (common prefix) - branch.reset_changes(path_type="common_prefix", path="logs/") - print("Reset: logs/*") - - # Verify remaining changes - remaining = list(branch.uncommitted()) - print(f"Remaining changes: {len(remaining)}") - -except Exception as e: - print(f"Reset error: {e}") -``` - -### Deleting Branches - -

Delete a Branch

- -Remove a branch that's no longer needed: - -```python -import lakefs - -repo = lakefs.repository("my-data-repo") - -try: - # Delete a branch - branch = repo.branch("old-experiment") - branch.delete() - print("Branch deleted: old-experiment") - -except Exception as e: - print(f"Delete failed: {e}") - -# Verify it's gone -remaining_branches = [b.id for b in repo.branches()] -print(f"Remaining branches: {remaining_branches}") -``` - -## Real-World Workflows - -### Isolated Dev/Test Environment - -

Feature Branch Workflow

- -Implement a typical feature development workflow: - -```python -import lakefs - -def feature_workflow(repo_name, feature_name, data_updates): - """ - Complete feature branch workflow: - 1. Create feature branch - 2. Make changes - 3. Test/commit - 4. Merge to main - """ - repo = lakefs.repository(repo_name) - main = repo.branch("main") - feature = repo.branch(feature_name) - - try: - # 1. Create feature branch from main - feature.create(source_reference="main") - print(f"Created feature branch: {feature_name}") - - # 2. Make changes - for path, data in data_updates.items(): - feature.object(path).upload(data=data) - print(f"Uploaded {len(data_updates)} objects") - - # 3. Review changes - changes = list(feature.uncommitted()) - print(f"Changes to commit: {len(changes)}") - - # 4. Commit - commit_ref = feature.commit( - message=f"Implement {feature_name}", - metadata={"feature": feature_name} - ) - print(f"Committed: {commit_ref.id}") - - # 5. Verify diff before merge - diff = list(main.diff(other_ref=feature)) - print(f"Ready to merge {len(diff)} changes") - - # 6. Merge to main - merge_result = feature.merge_into(main) - print(f"Merged to main: {merge_result}") - - # 7. Cleanup - feature.delete() - print(f"Deleted feature branch: {feature_name}") - - return True - - except Exception as e: - print(f"Feature workflow failed: {e}") - # Cleanup on error - try: - feature.delete() - except: - pass - return False - - -# Usage: -feature_workflow( - repo_name="analytics-repo", - feature_name="add-customer-metrics", - data_updates={ - "data/metrics/customer_v2.csv": b"id,value\n1,100\n2,200", - "data/metrics/metadata.json": b'{"version": "2", "date": "2024-01-15"}' - } -) -``` - -

Experimentation Branch Workflow

- -Create isolated branches for experiments: - -```python -import lakefs -import time - -def create_experiment(repo_name, experiment_name, experiment_logic): - """Run an experiment in isolation, keep results if successful""" - repo = lakefs.repository(repo_name) - exp_branch = repo.branch(experiment_name) - - try: - # Create isolated experiment branch - exp_branch.create(source_reference="main") - print(f"Started experiment: {experiment_name}") - - # Run experiment logic - experiment_logic(exp_branch) - - # Commit results - changes = list(exp_branch.uncommitted()) - if changes: - exp_branch.commit( - message=f"Results from {experiment_name}", - metadata={"experiment": experiment_name, "timestamp": str(time.time())} - ) - print(f"Experiment successful, committed {len(changes)} changes") - - return exp_branch.get_commit().id - - except Exception as e: - print(f"Experiment failed: {e}") - # Clean up failed experiment - try: - exp_branch.delete() - except: - pass - return None - - -# Example experiment -def model_training_experiment(branch): - # Simulate model training - branch.object("models/trained_v2.pkl").upload(data=b"model_binary_data") - branch.object("logs/training.log").upload(data=b"Training complete") - - -# Usage: -result_commit = create_experiment( - repo_name="ml-repo", - experiment_name="neural-net-v3", - experiment_logic=model_training_experiment -) - -if result_commit: - print(f"Keep results from commit: {result_commit}") -``` - -

Release Branch Management

- -Manage release versions with branches and tags: - -```python -import lakefs - -def create_release(repo_name, version_tag): - """Create a release: branch from main, prepare, merge, tag""" - repo = lakefs.repository(repo_name) - main = repo.branch("main") - release_branch = repo.branch(f"release-{version_tag}") - - try: - # 1. Create release branch - release_branch.create(source_reference="main") - print(f"Created release branch: release-{version_tag}") - - # 2. Any release-specific changes (version bumps, etc) - release_branch.object("VERSION").upload(data=version_tag.encode()) - release_branch.object("RELEASE_NOTES.md").upload( - data=f"# Release {version_tag}\nDate: 2024-01-15".encode() - ) - - # 3. Commit release changes - release_ref = release_branch.commit( - message=f"Release {version_tag}", - metadata={"version": version_tag, "type": "release"} - ) - - # 4. Merge back to main - release_branch.merge_into(main) - print(f"Merged release to main") - - # 5. Create tag for this release - tag = repo.tag(f"v{version_tag}").create(source_ref=release_ref) - print(f"Tagged release: v{version_tag}") - - # 6. Clean up release branch - release_branch.delete() - print(f"Cleaned up release branch") - - return f"v{version_tag}" - - except Exception as e: - print(f"Release creation failed: {e}") - return None - - -# Usage: -release_tag = create_release("prod-repo", "1.5.0") -if release_tag: - print(f"Release ready: {release_tag}") -``` - -## Error Handling - -

Handling Common Branch Errors

- -```python -import lakefs -from lakefs.exceptions import NotFoundException, ConflictException, ForbiddenException - -repo = lakefs.repository("my-data-repo") - -# Branch already exists -try: - branch = repo.branch("main").create(source_reference="main", exist_ok=False) -except ConflictException: - print("Branch already exists") - branch = repo.branch("main") - -# Branch doesn't exist -try: - branch = repo.branch("non-existent") - commit = branch.get_commit() -except NotFoundException: - print("Branch not found") - -# Protected branch (cannot delete) -try: - repo.branch("main").delete() -except ForbiddenException: - print("Cannot delete protected branch") - -# Source reference not found -try: - branch = repo.branch("new-branch").create( - source_reference="non-existent-ref" - ) -except NotFoundException: - print("Source reference does not exist") -``` diff --git a/docs/src/integrations/python.md b/docs/src/integrations/python.md deleted file mode 100644 index 323dbed7df5..00000000000 --- a/docs/src/integrations/python.md +++ /dev/null @@ -1,42 +0,0 @@ ---- -title: Python -description: Use Python to interact with lakeFS ---- - -# Use Python to interact with lakeFS - -!!! warning - If your project is currently using the [legacy Python `lakefs-client`][legacy-pypi], please be aware that this version has been [deprecated][legacy-deprecated]. - As of release **v1.44.0**, it's no longer supported for new updates or features. - -## Getting Started - -New to lakeFS Python SDK? Start with the **[High-Level SDK Guide](./python-getting-started.md)** to install and configure the recommended Python package. - -The High-Level SDK provides an intuitive interface for: - -- [Branches & Merging](./python-versioning-branches.md) - Feature branch workflows -- [References, Commits & Tags](./python-refs.md) - References, Commits & Tags -- [Transactions](./python-transactions.md) - Atomic operations -- [Data Operations](./python-data-operations.md) - Batch operations and cleanup - -## Integration Options - -lakeFS provides multiple Python packages to suit different use cases and preferences: - -| Package | Abstraction | Best For | Installation | Learning Curve | -|---------|-------------|----------|--------------|-----------------| -| **[High-Level SDK](./python-getting-started.md)** | High | Versioning operations, data operations, transactions | `pip install lakefs` | Low | -| **[Generated SDK](./python-sdk.md)** | Low | Direct API access, full API surface, programmatic control | `pip install lakefs-sdk` | Medium | -| **[lakefs-spec](./python-lakefs-spec.md)** | High | File system operations, pandas/data science integration, S3-like interface | `pip install lakefs-spec` | Low | -| **[Boto / S3 Gateway](./python-boto.md)** | Medium | S3-compatible operations, existing S3 workflows, direct gateway access | `pip install boto3` | Low | - -## References & Resources - -- **High Level Python SDK Documentation**: [https://pydocs-lakefs.lakefs.io](https://pydocs-lakefs.lakefs.io) -- **Generated Python SDK Documentation**: [https://pydocs-sdk.lakefs.io](https://pydocs-sdk.lakefs.io) -- **lakefs-spec Project**: [https://lakefs-spec.org](https://lakefs-spec.org) -- **Boto S3 Router**: [https://github.com/treeverse/boto-s3-router](https://github.com/treeverse/boto-s3-router) - -[legacy-deprecated]: ../posts/deprecate-py-legacy.md -[legacy-pypi]: https://pypi.org/project/lakefs-client/ diff --git a/docs/src/integrations/r.md b/docs/src/integrations/r.md deleted file mode 100644 index bfcc996171c..00000000000 --- a/docs/src/integrations/r.md +++ /dev/null @@ -1,231 +0,0 @@ ---- -title: R -description: How to use lakeFS from R including creating branches, committing changes, and merging. ---- - -# Using R with lakeFS - -R is a powerful language used widely in data science. lakeFS interfaces with R in two ways: - -* To **read and write data in lakeFS** use standard S3 tools such as the `aws.s3` library. lakeFS has a [S3 gateway](../understand/architecture.md#s3-gateway) which presents a lakeFS repository as an S3 bucket. -* For working with **lakeFS operations such as branches and commits** use the [API](../reference/api.md) for which can be accessed from R using the `httr` library. - -!!! examples - To see examples of R in action with lakeFS please visit the [lakeFS-samples](https://github.com/treeverse/lakeFS-samples/) repository and the [sample](https://github.com/treeverse/lakeFS-samples/blob/main/00_notebooks/R.ipynb) [notebooks](https://github.com/treeverse/lakeFS-samples/blob/main/00_notebooks/R-weather.ipynb) - - -## Reading and Writing from lakeFS with R - -Working with data stored in lakeFS from R is the same as you would with an S3 bucket, via the [S3 Gateway that lakeFS provides](../understand/architecture.md#s3-gateway). - -You can use any library that interfaces with S3. In this example we'll use the [aws.s3](https://github.com/cloudyr/aws.s3) library. - -```r -install.packages(c("aws.s3")) -library(aws.s3) -``` - -### Configuration - -The [R S3 client documentation](https://cloud.r-project.org/web/packages/aws.s3/aws.s3.pdf) includes full details of the configuration options available. A good approach for using it with lakeFS set the endpoint and authentication details as environment variables: - -```r -Sys.setenv("AWS_ACCESS_KEY_ID" = "AKIAIOSFODNN7EXAMPLE", - "AWS_SECRET_ACCESS_KEY" = "wJalrXUtnFEMI/K7MDENG/bPxRfiCYEXAMPLEKEY", - "AWS_S3_ENDPOINT" = "lakefs.mycorp.com:8000") -``` - -_Note: it is generally best practice to set these environment variables outside of the R script; it is done so here for convenience of the example._ - -In conjunction with this you must also specify `region` and `use_https` _in each call of an `aws.s3` function_ as these cannot be set globally. For example: - -```r -bucketlist( - region = "", - use_https = FALSE - ) -``` - -* `region` should always be empty -* `use_https` should be set to `TRUE` or `FALSE` depending on whether your lakeFS endpoint uses HTTPS. - -### Listing repositories - -The S3 gateway exposes a repository as a bucket, and so using the `aws.s3` function `bucketlist` will return a list of available repositories on lakeFS: - -```r -bucketlist( - region = "", - use_https = FALSE - ) -``` - -### Writing to lakeFS from R - -Assuming you're using the `aws.s3` library there various functions available including `s3save`, `s3saveRDS`, and `put_object`. Here's an example of writing an R object to lakeFS: - -```r -repo_name <- "example" -branch <- "development" - -s3saveRDS(x=my_df, - bucket = repo_name, - object = paste0(branch,"/my_df.R"), - region = "", - use_https = FALSE) -``` - -You can also upload local files to lakeFS using R and the `put_object` function: - -```r -repo_name <- "example" -branch <- "development" -local_file <- "/tmp/never.gonna" - -put_object(file = local_file, - bucket = repo_name, - object = paste0(branch,"/give/you/up"), - region = "", - use_https = FALSE) -``` - -### Reading from lakeFS with R - -As with writing data from R to lakeFS, there is a similar set of functions for reading data. These include `s3load`, `s3readRDS`, and `get_object`. Here's an example of reading an R object from lakeFS: - -```r -repo_name <- "example" -branch <- "development" - -my_df <- s3readRDS(bucket = repo_name, - object = paste0(branch,"/my_data.R"), - region = "", - use_https = FALSE) -``` - -### Listing Objects - -In general you should always specify a branch prefix when listing objects. Here's an example to list the `main` branch in the `quickstart` repository: - -```R -get_bucket_df(bucket = "quickstart", - prefix = "main/", - region = "", - use_https = FALSE) -``` - -When listing objects in lakeFS there is a special case which is the repository/bucket level. When you list at this level you will get the branches returned as folders. These are not listed recursively, unless you list something under the branch. To understand more about this please refer to [#5441](https://github.com/treeverse/lakeFS/issues/5441) - -### Working with Arrow - -Arrow's [R library](https://arrow.apache.org/docs/r/index.html) includes [powerful support](https://arrow.apache.org/docs/r/index.html#what-can-the-arrow-package-do) for data analysis, including reading and writing multiple file formats including Parquet, Arrow, CSV, and JSON. It has functionality for [connecting to S3](https://arrow.apache.org/docs/r/articles/fs.html), and thus integrates perfectly with lakeFS. - -To start with install and load the library - -```r -install.packages("arrow") -library(arrow) -``` - -Then create an S3FileSystem object to connect to your lakeFS instance - -```r -lakefs <- S3FileSystem$create( - endpoint_override = "lakefs.mycorp.com:8000", - scheme = "http" - access_key = "AKIAIOSFODNN7EXAMPLE", - secret_key = "wJalrXUtnFEMI/K7MDENG/bPxRfiCYEXAMPLEKEY", - region = "", -) -``` - -From here you can list the contents of a particular lakeFS repository and branch - -```r -lakefs$ls(path = "quickstart/main") -``` - -To read a Parquet from lakeFS with R use the `read_parquet` function - -```r -lakes <- read_parquet(lakefs$path("quickstart/main/lakes.parquet")) -``` - -Writing a file follows a similar pattern. Here is rewriting the same file as above but in Arrow format - -```r -write_feather(x = lakes, - sink = lakefs$path("quickstart/main/lakes.arrow")) -``` - -## Performing lakeFS Operations using the lakeFS API from R - -As well as reading and writing data, you will also want to carry out lakeFS operations from R including creating branches, committing data, and more. - -To do this call the lakeFS [API](../reference/api.md) from the `httr` library. You should refer to the API documentation for full details of the endpoints and their behaviour. Below are a few examples to illustrate the usage. - -### Check the lakeFS Server Version - -This is a useful API call to establish connectivity and test authentication. - -```r -library(httr) -lakefs_api_url <- "lakefs.mycorp.com:8000/api/v1" -lakefsAccessKey <- "AKIAIOSFODNN7EXAMPLE" -lakefsSecretKey <- "wJalrXUtnFEMI/K7MDENG/bPxRfiCYEXAMPLEKEY" - -r=GET(url=paste0(lakefs_api_url, "/config/version"), - authenticate(lakefsAccessKey, lakefsSecretKey)) -``` - -The returned object `r` can be inspected to determine the outcome of the operation by comparing it to the status codes specified in the API. Here is some example R code to demonstrate the idea: - -```r -if (r$status_code == 200) { - print(paste0("✅ lakeFS credentials and connectivity verified. ℹ️ lakeFS version ",content(r)$version)) -} else { - print("🛑 failed to get lakeFS version") - print(content(r)$message) -} -``` - -### Create a Repository - -```r -library(httr) -lakefs_api_url <- "lakefs.mycorp.com:8000/api/v1" -lakefsAccessKey <- "AKIAIOSFODNN7EXAMPLE" -lakefsSecretKey <- "wJalrXUtnFEMI/K7MDENG/bPxRfiCYEXAMPLEKEY" -repo_name <- "my_new_repo" - -# Define the payload -body=list(name=repo_name, - storage_namespace="s3://example-bucket/foo") - -# Call the API -r=POST(url=paste0(lakefs_api_url, "/repositories"), - authenticate(lakefsAccessKey, lakefsSecretKey), - body=body, encode="json") -``` - -### Commit Data - -```r -library(httr) -lakefs_api_url <- "lakefs.mycorp.com:8000/api/v1" -lakefsAccessKey <- "AKIAIOSFODNN7EXAMPLE" -lakefsSecretKey <- "wJalrXUtnFEMI/K7MDENG/bPxRfiCYEXAMPLEKEY" -repo_name <- "my_new_repo" -branch <- "example" - -# Define the payload -body=list(message="add some data and charts", - metadata=list( - client="httr", - author="rmoff")) - -# Call the API -r=POST(url=paste0(lakefs_api_url, "/repositories/", repo_name, "/branches/", branch, "/commits"), - authenticate(lakefsAccessKey, lakefsSecretKey), - body=body, encode="json") -``` \ No newline at end of file diff --git a/docs/src/integrations/red_hat_openshift_ai.md b/docs/src/integrations/red_hat_openshift_ai.md deleted file mode 100644 index 88d050233c9..00000000000 --- a/docs/src/integrations/red_hat_openshift_ai.md +++ /dev/null @@ -1,30 +0,0 @@ ---- -title: Red Hat OpenShift AI -parent: Integrations ---- - -# Using lakeFS with Red Hat OpenShift AI - -Red Hat® OpenShift® is an enterprise-ready Kubernetes container platform with full-stack automated operations to manage hybrid cloud, multi-cloud, and edge deployments. OpenShift includes an enterprise-grade Linux operating system, container runtime, networking, monitoring, registry, and authentication and authorization solutions. - -[Red Hat® OpenShift® AI](https://www.redhat.com/en/technologies/cloud-computing/openshift/openshift-ai) is a flexible, scalable artificial intelligence (AI) and machine learning (ML) platform that enables enterprises to create and deliver AI-enabled applications at scale across hybrid cloud environments. Built using open source technologies, OpenShift AI provides trusted, operationally consistent capabilities for teams to experiment, serve models, and deliver innovative apps. - -OpenShift AI and lakeFS can be deployed in OpenShift cluster in 3 different architectures: -1. OpenShift AI, lakeFS and object storage are delpoyed in OpenShift cluster -2. OpenShift AI and lakeFS are deployed in OpenShift cluster while object storage is external -3. OpenShift AI is deployed in OpenShift cluster while lakeFS and object storage are external - -OpenShift AI and lakeFS Deployment Architecture - -Refer to an example in [lakeFS-samples](https://github.com/treeverse/lakeFS-samples/tree/main/01_standalone_examples/red-hat-openshift-ai) to deploy lakeFS, MinIO and OpenShift AI tutorial ([Fraud Detection demo](https://docs.redhat.com/en/documentation/red_hat_openshift_ai_self-managed/2-latest/html/openshift_ai_tutorial_-_fraud_detection_example/index)) in OpenShift cluster. Fraud detection demo is a step-by-step guide for using OpenShift AI to train an example model in JupyterLab, deploy the model, and refine the model by using automated pipelines. - -In this example, OpenShift AI is configured to connect over S3 interace to lakeFS, which will version the data in a backend MinIO instance. This is the architecture to run Fraud Detection demo with or without lakeFS: - -OpenShift AI and lakeFS Deployment Architecture for the demo - -lakeFS-samples also includes multiple Helm chart examples to deploy lakeFS and MinIO in different scenarios: - -1. [lakefs-local.yaml](https://github.com/treeverse/lakeFS-samples/blob/main/01_standalone_examples/red-hat-openshift-ai/cluster-configuration/lakefs-local.yaml): Bring up lakeFS using local object storage. This would be useful for a quick demo where MinIO is not included. -2. [lakefs-minio.yaml](https://github.com/treeverse/lakeFS-samples/blob/main/01_standalone_examples/red-hat-openshift-ai/cluster-configuration/lakefs-minio.yaml): Bring up lakeFS configured to use MinIO as backend object storage. This will be used in the lakeFS demo. -3. [minio-direct.yaml](https://github.com/treeverse/lakeFS-samples/blob/main/01_standalone_examples/red-hat-openshift-ai/cluster-configuration/minio-direct.yaml): This file would only be used if lakeFS is not in the picture and OpenShift AI will communicate directly with MinIO. It will bring up MinIO as it is in the default Fraud Detection demo, complete with configuring MinIO storage buckets and the OpenShift AI data connections. It may serve useful in debugging an issue. -4. [minio-via-lakefs.yaml](https://github.com/treeverse/lakeFS-samples/blob/main/01_standalone_examples/red-hat-openshift-ai/cluster-configuration/minio-via-lakefs.yaml): Bring up MinIO for the modified Fraud Detection demo that includes lakeFS, complete with configuring MinIO storage buckets, but do NOT configure the OpenShift AI data connections. This will be used in the lakeFS demo. diff --git a/docs/src/integrations/sagemaker.md b/docs/src/integrations/sagemaker.md deleted file mode 100644 index a2d0ec9ccb3..00000000000 --- a/docs/src/integrations/sagemaker.md +++ /dev/null @@ -1,73 +0,0 @@ ---- -title: Amazon SageMaker -description: This section explains how to integrate your Amazon SageMaker installation to work with lakeFS. ---- - -# Using lakeFS with Amazon SageMaker - -[Amazon SageMaker](https://aws.amazon.com/sagemaker/) helps to prepare, build, train and deploy ML models quickly by bringing together a broad set of capabilities purpose-built for ML. - -## Initializing session and client - -Initialize a Sagemaker session and an S3 client with lakeFS as the endpoint: - -```python -import sagemaker -import boto3 - -endpoint_url = '' -aws_access_key_id = '' -aws_secret_access_key = '' -repo = 'example-repo' - -sm = boto3.client('sagemaker', - endpoint_url=endpoint_url, - aws_access_key_id=aws_access_key_id, - aws_secret_access_key=aws_secret_access_key) - -s3_resource = boto3.resource('s3', - endpoint_url=endpoint_url, - aws_access_key_id=aws_access_key_id, - aws_secret_access_key=aws_secret_access_key) - -session = sagemaker.Session(boto3.Session(), sagemaker_client=sm, default_bucket=repo) -session.s3_resource = s3_resource -``` - -## Usage Examples - -### Upload train and test data - -Let's use the created session for uploading data to the 'main' branch: - -```python -prefix = "/prefix-within-branch" -branch = 'main' - -train_file = 'train_data.csv'; -train_data.to_csv(train_file, index=False, header=True) -train_data_s3_path = session.upload_data(path=train_file, key_prefix=branch + prefix + "/train") - -test_file = 'test_data.csv'; -test_data_no_target.to_csv(test_file, index=False, header=False) -test_data_s3_path = session.upload_data(path=test_file, key_prefix=branch + prefix + "/test") -``` - -### Download objects - -You can use the integration with lakeFS to download a portion of the data you see fit: - -```python -repo = 'example-repo' -prefix = "/prefix-to-download" -branch = 'main' -localpath = './' + branch - -session.download_data(path=localpath, bucket=repo, key_prefix = branch + prefix) -``` - -!!! note - Advanced AWS SageMaker features, like Autopilot jobs, are encapsulated and don't have the option to override the S3 endpoint. - However, it is possible to [export](../howto/export.md) the required inputs from lakeFS to S3. - - **If you're using SageMaker features that aren't supported by lakeFS, we'd love to [hear from you](https://lakefs.io/slack).** diff --git a/docs/src/integrations/spark.md b/docs/src/integrations/spark.md deleted file mode 100644 index 6cefe2c9f86..00000000000 --- a/docs/src/integrations/spark.md +++ /dev/null @@ -1,795 +0,0 @@ ---- -title: Apache Spark -description: Accessing data in lakeFS from Apache Spark works the same as accessing S3 data from Apache Spark. ---- - -# Using lakeFS with Apache Spark - -There are several ways to use lakeFS with Spark: - -* [**Recommended:** using the lakeFS Iceberg REST Catalog](./iceberg.md): Read and write Iceberg tables using a standards-compliant catalog, built into lakeFS Enterprise. -* [The lakeFS FileSystem](#lakefs-hadoop-filesystem): Direct data flow from client to storage, highly scalable. AWS S3 - * [lakeFS FileSystem in Presigned mode](#hadoop-filesystem-in-presigned-mode): Best of both worlds. AWS S3Azure Blob -* [The S3-compatible API](#s3-compatible-api): All Storage Vendors - - -| Method | Metadata operations | Data operations | Supported Data Formats | Compatibility | -|--------|---------------------|-----------------|-----------------|-----------------| -| [Iceberg REST Catalog](#iceberg-rest-catalog) | ✅ Table-level operations only | ✅ Direct I/O to underlying storage | Apache Iceberg Tables | ✅ Any Spark environment capable of connecting to an Apache Iceberg REST Catalog (most) | -| [lakeFS FileSystem](#lakefs-hadoop-filesystem) | ⚠️ Object-level operations require lakeFS API calls | ✅ Direct I/O to underlying storage | All | ⚠️ Any Spark environment capable of loading user provided jar files (some) | -| [S3-compatible API](#s3-compatible-api) | N/A | 🚩 All data operations are proxied through lakeFS | All | ✅ Any Spark environment capable of connecting to an S3-compatible API (most) | - - -## Iceberg REST Catalog - -lakeFS Iceberg REST Catalog allow you to use lakeFS as a [spec-compliant](https://github.com/apache/iceberg/blob/main/open-api/rest-catalog-open-api.yaml) Apache [Iceberg REST catalog](https://editor-next.swagger.io/?url=https://raw.githubusercontent.com/apache/iceberg/main/open-api/rest-catalog-open-api.yaml), -allowing Apache Spark to manage and access tables using a standard REST API. - - -![lakeFS Iceberg REST Catalog](../assets/img/lakefs_iceberg_rest_catalog.png) - - -!!! example - - ```scala - // Configure Spark to use the lakeFS REST catalog - spark.sql("USE my_repo.main.inventory") - - // List available tables - spark.sql("SHOW TABLES").show() - - // Query data with branch isolation - spark.sql("SELECT * FROM books").show() - - // Switch to a feature branch - spark.sql("USE my_repo.new_branch.inventory") - spark.sql("SELECT * FROM books").show() - ``` - -In this mode, lakeFS stays completely outside the data path: data itself is read and written by Spark executors, directly to the underlying object store. Metadata is managed by Iceberg at the table level, while lakeFS keeps track of new snapshots to provide versioning and isolation. - -[Read more about using the Iceberg REST Catalog](./iceberg.md). - -## lakeFS Hadoop FileSystem - -In this mode, Spark will read and write objects directly from the underlying object store, reducing the load on the lakeFS server. -It will only access the lakeFS server for metadata operations, which works for most other data formats - -After configuring the lakeFS Hadoop FileSystem below, use URIs of the form `lakefs://example-repo/ref/path/to/data` to -interact with your data on lakeFS. - -### Installation - -!!! note "Spark 4 Compatibility" - The lakeFS Hadoop FileSystem is compatible with Spark 4. However, starting with Spark 4, the bundled AWS SDK v1 (`aws-java-sdk-bundle`) has been removed as part of the upgrade to Hadoop 3.4.x (see [Spark 4 release notes](https://spark.apache.org/releases/spark-release-4-0-0.html)). - Since the lakeFS Hadoop FileSystem client depends on AWS SDK v1, you must explicitly include the [`aws-java-sdk-bundle`](https://central.sonatype.com/artifact/com.amazonaws/aws-java-sdk-bundle) in your classpath when running with Spark 4. - -=== "Spark Standalone" - Add the package to your `spark-submit` command: - - ``` - --packages io.lakefs:hadoop-lakefs-assembly:0.18.0 - ``` - -=== "Databricks" - In your cluster settings, under the _Libraries_ tab, add the following Maven package: - - ``` - io.lakefs:hadoop-lakefs-assembly:0.18.0 - ``` - - Once installed, it should look something like this: - - ![Databricks - Adding the lakeFS client Jar](../assets/img/databricks-install-package.png) - -=== "Cloudera Spark" - Add the package to your `pyspark` or `spark-submit` command: - - ``` - --packages io.lakefs:hadoop-lakefs-assembly:0.18.0 - ``` - - Add the configuration to access the S3 bucket used by lakeFS to your `pyspark` or `spark-submit` command or add this configuration at the Cloudera cluster level (see below): - - ``` - --conf spark.yarn.access.hadoopFileSystems=s3a://bucket-name - ``` - - Add the configuration to access the S3 bucket used by lakeFS at the Cloudera cluster level: - - 1. Log in to the CDP (Cloudera Data Platform) web interface. - 1. From the CDP home screen, click the `Management Console` icon. - 1. In the Management Console, select `Data Hub Clusters` from the navigation pane. - 1. Select the cluster you want to configure. Click on `CM-UI` link under Services: - ![Cloudera - Management Console](../assets/img/cloudera/ManagementConsole.png) - 1. In Cloudera Manager web interface, click on `Clusters` from the navigation pane and click on `spark_on_yarn` option: - - ![Cloudera - Cloudera Manager](../assets/img/cloudera/ClouderaManager.png) - - 1. Click on `Configuration` tab and search for `spark.yarn.access.hadoopFileSystems` in the search box: - - ![Cloudera - spark_on_yarn](../assets/img/cloudera/spark_on_yarn.png) - - 1. Add S3 bucket used by lakeFS `s3a://bucket-name` in the `spark.yarn.access.hadoopFileSystems` list: - - ![Cloudera - hadoopFileSystems](../assets/img/cloudera/hadoopFileSystems.png) - - -### Configuration - -Set the `fs.lakefs.*` Hadoop configurations to point to your lakeFS installation: - -* `fs.lakefs.impl`: `io.lakefs.LakeFSFileSystem` -* `fs.lakefs.access.key`: lakeFS access key -* `fs.lakefs.secret.key`: lakeFS secret key -* `fs.lakefs.endpoint`: lakeFS API URL (e.g. `https://example-org.us-east-1.lakefscloud.io/api/v1`) - -Configure the lakeFS client to use a temporary token instead of static credentials: - -* `fs.lakefs.auth.provider`: The default is `basic_auth` with `fs.lakefs.access.key` and `fs.lakefs.secret.key` for basic authentication. - -Can be set to `io.lakefs.auth.TemporaryAWSCredentialsLakeFSTokenProvider` for using temporary AWS credentials, you can read more about it [here](../security/external-principals-aws.md). - -When using `io.lakefs.auth.TemporaryAWSCredentialsLakeFSTokenProvider` as the auth provider the following configuration are relevant: - -* `fs.lakefs.token.aws.access.key`: AWS assumed role access key -* `fs.lakefs.token.aws.secret.key`: AWS assumed role secret key -* `fs.lakefs.token.aws.session.token`: AWS assumed role temporary session token -* `fs.lakefs.token.aws.sts.endpoint`: AWS STS regional endpoint for generated the presigned-url (i.e `https://sts.us-west-2.amazonaws.com`) -* `fs.lakefs.token.aws.sts.duration_seconds`: Optional, the duration in seconds for the initial identity token (default is 60) -* `fs.lakefs.token.duration_seconds`: Optional, the duration in seconds for the lakeFS token (default is set in the lakeFS configuration [auth.login_duration](../reference/configuration.md)) -* `fs.lakefs.token.sts.additional_headers`: Optional, comma separated list of `header:value` to attach when generating presigned sts request. Default is `X-Lakefs-Server-ID:fs.lakefs.endpoint`. - -**API Retry Configuration:** - -The lakeFS Hadoop client automatically retries API requests on transient failures (HTTP 408, 429, 500-504 and connection errors) using exponential backoff with jitter. The following optional properties control retry behavior: - -* `fs.lakefs.api.retry.max-retries`: Maximum number of retry attempts (default: `5`). Set to `0` to disable retries. -* `fs.lakefs.api.retry.initial-backoff.ms`: Initial backoff duration in milliseconds (default: `1000`) -* `fs.lakefs.api.retry.max-backoff.ms`: Maximum backoff duration in milliseconds (default: `20000`) -* `fs.lakefs.api.retry.jitter-factor`: Jitter factor applied to backoff, between 0 and 1 (default: `0.25`) - -Configure the S3A FileSystem to access your S3 storage, for example using the `fs.s3a.*` configurations (these are **not** your lakeFS credentials): - -* `fs.s3a.access.key`: AWS S3 access key -* `fs.s3a.secret.key`: AWS S3 secret key - -Here are some configuration examples: - - -=== "CLI" - - ```shell - spark-shell --conf spark.hadoop.fs.s3a.access.key='AKIAIOSFODNN7EXAMPLE' \ - --conf spark.hadoop.fs.s3a.secret.key='wJalrXUtnFEMI/K7MDENG/bPxRfiCYEXAMPLEKEY' \ - --conf spark.hadoop.fs.s3a.endpoint='https://s3.eu-central-1.amazonaws.com' \ - --conf spark.hadoop.fs.lakefs.impl=io.lakefs.LakeFSFileSystem \ - --conf spark.hadoop.fs.lakefs.access.key=AKIAlakefs12345EXAMPLE \ - --conf spark.hadoop.fs.lakefs.secret.key=abc/lakefs/1234567bPxRfiCYEXAMPLEKEY \ - --conf spark.hadoop.fs.lakefs.endpoint=https://example-org.us-east-1.lakefscloud.io/api/v1 \ - --packages io.lakefs:hadoop-lakefs-assembly:0.18.0 \ - io.example.ExampleClass - ``` - -=== "Scala" - - ```scala - spark.sparkContext.hadoopConfiguration.set("fs.s3a.access.key", "AKIAIOSFODNN7EXAMPLE") - spark.sparkContext.hadoopConfiguration.set("fs.s3a.secret.key", "wJalrXUtnFEMI/K7MDENG/bPxRfiCYEXAMPLEKEY") - spark.sparkContext.hadoopConfiguration.set("fs.s3a.endpoint", "https://s3.eu-central-1.amazonaws.com") - spark.sparkContext.hadoopConfiguration.set("fs.lakefs.impl", "io.lakefs.LakeFSFileSystem") - spark.sparkContext.hadoopConfiguration.set("fs.lakefs.access.key", "AKIAlakefs12345EXAMPLE") - spark.sparkContext.hadoopConfiguration.set("fs.lakefs.secret.key", "abc/lakefs/1234567bPxRfiCYEXAMPLEKEY") - spark.sparkContext.hadoopConfiguration.set("fs.lakefs.endpoint", "https://example-org.us-east-1.lakefscloud.io/api/v1") - ``` - -=== "PySpark" - - ```python - sc._jsc.hadoopConfiguration().set("fs.s3a.access.key", "AKIAIOSFODNN7EXAMPLE") - sc._jsc.hadoopConfiguration().set("fs.s3a.secret.key", "wJalrXUtnFEMI/K7MDENG/bPxRfiCYEXAMPLEKEY") - sc._jsc.hadoopConfiguration().set("fs.s3a.endpoint", "https://s3.eu-central-1.amazonaws.com") - sc._jsc.hadoopConfiguration().set("fs.lakefs.impl", "io.lakefs.LakeFSFileSystem") - sc._jsc.hadoopConfiguration().set("fs.lakefs.access.key", "AKIAlakefs12345EXAMPLE") - sc._jsc.hadoopConfiguration().set("fs.lakefs.secret.key", "abc/lakefs/1234567bPxRfiCYEXAMPLEKEY") - sc._jsc.hadoopConfiguration().set("fs.lakefs.endpoint", "https://example-org.us-east-1.lakefscloud.io/api/v1") - ``` - -=== "XML Configuration" - Make sure that you load the lakeFS FileSystem into Spark by running it with `--packages` or `--jars`, - and then add these into a configuration file, e.g., `$SPARK_HOME/conf/hdfs-site.xml`: - - ```xml - - - - fs.s3a.access.key - AKIAIOSFODNN7EXAMPLE - - - fs.s3a.secret.key - wJalrXUtnFEMI/K7MDENG/bPxRfiCYEXAMPLEKEY - - - fs.s3a.endpoint - https://s3.eu-central-1.amazonaws.com - - - fs.lakefs.impl - io.lakefs.LakeFSFileSystem - - - fs.lakefs.access.key - AKIAlakefs12345EXAMPLE - - - fs.lakefs.secret.key - abc/lakefs/1234567bPxRfiCYEXAMPLEKEY - - - fs.lakefs.endpoint - https://example-org.us-east-1.lakefscloud.io/api/v1 - - - ``` -=== "Databricks" - Add the following the cluster's configuration under `Configuration ➡️ Advanced options`: - - ``` - spark.hadoop.fs.lakefs.impl io.lakefs.LakeFSFileSystem - spark.hadoop.fs.lakefs.access.key AKIAlakefs12345EXAMPLE - spark.hadoop.fs.lakefs.secret.key abc/lakefs/1234567bPxRfiCYEXAMPLEKEY - spark.hadoop.fs.s3a.access.key AKIAIOSFODNN7EXAMPLE - spark.hadoop.fs.s3a.secret.key wJalrXUtnFEMI/K7MDENG/bPxRfiCYEXAMPLEKEY - spark.hadoop.fs.s3a.impl shaded.databricks.org.apache.hadoop.fs.s3a.S3AFileSystem - spark.hadoop.fs.lakefs.endpoint https://example-org.us-east-1.lakefscloud.io/api/v1 - ``` - - Alternatively, follow this [step by step Databricks integration tutorial, including lakeFS Hadoop File System, Python client and lakeFS SPARK client](https://lakefs.io/blog/databricks-lakefs-integration-tutorial/). - - -!!! note - If your bucket is on a region other than us-east-1, you may also need to configure `fs.s3a.endpoint` with the correct region. - Amazon provides [S3 endpoints](https://docs.aws.amazon.com/general/latest/gr/s3.html) you can use. - -### Usage with TemporaryAWSCredentialsLakeFSTokenProvider - -An initial setup is required - you must have [AWS Auth configured](../security/external-principals-aws.md) with lakeFS. -The `TemporaryAWSCredentialsLakeFSTokenProvider` depends on the caller to provide AWS credentials (e.g Assumed Role Key,Secret and Token) as input to the lakeFS client. - -!!! warning - Configure `sts.endpoint` with a valid [sts regional service endpoint](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_credentials_temp_enable-regions.html) and it must be be equal to the region that is used for authentication first place. The only exception is `us-east-1` which is the default region for STS. - -!!! warning - Using the current provider the lakeFS token will not renew upon expiry and the user will need to re-authenticate. - -PySpark example using `TemporaryAWSCredentialsLakeFSTokenProvider` with boto3 and AWS session credentials: - -```python -import boto3 - -session = boto3.session.Session() - -# AWS credentials used s3a to access lakeFS bucket -sc._jsc.hadoopConfiguration().set("fs.s3a.access.key", "AKIAIOSFODNN7EXAMPLE") -sc._jsc.hadoopConfiguration().set("fs.s3a.secret.key", "wJalrXUtnFEMI/K7MDENG/bPxRfiCYEXAMPLEKEY") -sc._jsc.hadoopConfiguration().set("fs.s3a.endpoint", "https://s3.us-west-2.amazonaws.com") -sc._jsc.hadoopConfiguration().set("fs.lakefs.impl", "io.lakefs.LakeFSFileSystem") -sc._jsc.hadoopConfiguration().set("fs.lakefs.endpoint", "https://example-org.us-west-2.lakefscloud.io/api/v1") -sc._jsc.hadoopConfiguration().set("spark.hadoop.fs.s3a.path.style.access", "true") -sc._jsc.hadoopConfiguration().set("fs.lakefs.auth.provider", "io.lakefs.auth.TemporaryAWSCredentialsLakeFSTokenProvider") -# AWS tempporary session credentials to use with lakeFS -sc._jsc.hadoopConfiguration().set("fs.lakefs.token.aws.access.key", session.get_credentials().access_key) -sc._jsc.hadoopConfiguration().set("fs.lakefs.token.aws.secret.key", session.get_credentials().secret_key) -sc._jsc.hadoopConfiguration().set("fs.lakefs.token.aws.session.token", session.get_credentials().token) -sc._jsc.hadoopConfiguration().set("fs.lakefs.token.aws.sts.endpoint", "https://sts.us-west-2.amazonaws.com") -``` - -### Usage - -Hadoop FileSystem paths use the `lakefs://` protocol, with paths taking the form `lakefs:////path/to/object`. -`` can be a branch, tag, or commit ID in lakeFS. -Here's an example for reading a Parquet file from lakeFS to a Spark DataFrame: - -```scala -val repo = "example-repo" -val branch = "main" -val df = spark.read.parquet(s"lakefs://${repo}/${branch}/example-path/example-file.parquet") -``` - -Here's how to write some results back to a lakeFS path: - -```scala -df.write.partitionBy("example-column").parquet(s"lakefs://${repo}/${branch}/output-path/") -``` - -The data is now created in lakeFS as new changes in your branch. You can now commit these changes or revert them. - - -## Hadoop FileSystem in Presigned mode - - -!!! info - Available starting version **0.1.13** of the FileSystem - -In this mode, the lakeFS server is responsible for authenticating with your storage. -The client will still perform data operations directly on the storage. -To do so, it will use pre-signed storage URLs provided by the lakeFS server. - -When using this mode, you don't need to configure the client with access to your storage: - -=== "CLI" - ```shell - spark-shell --conf spark.hadoop.fs.lakefs.access.mode=presigned \ - --conf spark.hadoop.fs.lakefs.impl=io.lakefs.LakeFSFileSystem \ - --conf spark.hadoop.fs.lakefs.access.key=AKIAlakefs12345EXAMPLE \ - --conf spark.hadoop.fs.lakefs.secret.key=abc/lakefs/1234567bPxRfiCYEXAMPLEKEY \ - --conf spark.hadoop.fs.lakefs.endpoint=https://example-org.us-east-1.lakefscloud.io/api/v1 \ - --packages io.lakefs:hadoop-lakefs-assembly:0.18.0 - ``` -=== "Scala" - ```scala - spark.sparkContext.hadoopConfiguration.set("fs.lakefs.access.mode", "presigned") - spark.sparkContext.hadoopConfiguration.set("fs.lakefs.impl", "io.lakefs.LakeFSFileSystem") - spark.sparkContext.hadoopConfiguration.set("fs.lakefs.access.key", "AKIAlakefs12345EXAMPLE") - spark.sparkContext.hadoopConfiguration.set("fs.lakefs.secret.key", "abc/lakefs/1234567bPxRfiCYEXAMPLEKEY") - spark.sparkContext.hadoopConfiguration.set("fs.lakefs.endpoint", "https://example-org.us-east-1.lakefscloud.io/api/v1") - ``` - -=== "PySpark" - ```python - sc._jsc.hadoopConfiguration().set("fs.lakefs.access.mode", "presigned") - sc._jsc.hadoopConfiguration().set("fs.lakefs.impl", "io.lakefs.LakeFSFileSystem") - sc._jsc.hadoopConfiguration().set("fs.lakefs.access.key", "AKIAlakefs12345EXAMPLE") - sc._jsc.hadoopConfiguration().set("fs.lakefs.secret.key", "abc/lakefs/1234567bPxRfiCYEXAMPLEKEY") - sc._jsc.hadoopConfiguration().set("fs.lakefs.endpoint", "https://example-org.us-east-1.lakefscloud.io/api/v1") - ``` - -=== "XML Configuration" - Make sure that you load the lakeFS FileSystem into Spark by running it with `--packages` or `--jars`, - and then add these into a configuration file, e.g., `$SPARK_HOME/conf/hdfs-site.xml`: - - ```xml - - - - fs.lakefs.access.mode - presigned - - - fs.lakefs.impl - io.lakefs.LakeFSFileSystem - - - fs.lakefs.access.key - AKIAlakefs12345EXAMPLE - - - fs.lakefs.secret.key - abc/lakefs/1234567bPxRfiCYEXAMPLEKEY - - - fs.lakefs.endpoint - https://example-org.us-east-1.lakefscloud.io/api/v1 - - - ``` - -=== "Databricks" - Add the following the cluster's configuration under `Configuration ➡️ Advanced options`: - - ``` - spark.hadoop.fs.lakefs.access.mode presigned - spark.hadoop.fs.lakefs.impl io.lakefs.LakeFSFileSystem - spark.hadoop.fs.lakefs.access.key AKIAlakefs12345EXAMPLE - spark.hadoop.fs.lakefs.secret.key abc/lakefs/1234567bPxRfiCYEXAMPLEKEY - spark.hadoop.fs.lakefs.endpoint https://example-org.us-east-1.lakefscloud.io/api/v1 - ``` - -## S3-compatible API - -lakeFS has an S3-compatible endpoint which you can point Spark at to get started quickly. - -You will access your data using S3-style URIs, e.g. `s3a://example-repo/example-branch/example-table`. - -You can use the S3-compatible API regardless of where your data is hosted. - -### Configuration - -To configure Spark to work with lakeFS, we set S3A Hadoop configuration to the lakeFS endpoint and credentials: - -* `fs.s3a.access.key`: lakeFS access key -* `fs.s3a.secret.key`: lakeFS secret key -* `fs.s3a.endpoint`: lakeFS S3-compatible API endpoint (e.g. https://example-org.us-east-1.lakefscloud.io) -* `fs.s3a.path.style.access`: `true` - -Here is how to do it: - -=== "CLI" - ```shell - spark-shell --conf spark.hadoop.fs.s3a.access.key='AKIAlakefs12345EXAMPLE' \ - --conf spark.hadoop.fs.s3a.secret.key='abc/lakefs/1234567bPxRfiCYEXAMPLEKEY' \ - --conf spark.hadoop.fs.s3a.path.style.access=true \ - --conf spark.hadoop.fs.s3a.endpoint='https://example-org.us-east-1.lakefscloud.io' ... - ``` - -=== "Scala" - ```scala - spark.sparkContext.hadoopConfiguration.set("fs.s3a.access.key", "AKIAlakefs12345EXAMPLE") - spark.sparkContext.hadoopConfiguration.set("fs.s3a.secret.key", "abc/lakefs/1234567bPxRfiCYEXAMPLEKEY") - spark.sparkContext.hadoopConfiguration.set("fs.s3a.endpoint", "https://example-org.us-east-1.lakefscloud.io") - spark.sparkContext.hadoopConfiguration.set("fs.s3a.path.style.access", "true") - ``` - -=== "XML Configuration" - Add these into a configuration file, e.g. `$SPARK_HOME/conf/hdfs-site.xml`: - - ```xml - - - - fs.s3a.access.key - AKIAlakefs12345EXAMPLE - - - fs.s3a.secret.key - abc/lakefs/1234567bPxRfiCYEXAMPLEKEY - - - fs.s3a.endpoint - https://example-org.us-east-1.lakefscloud.io - - - fs.s3a.path.style.access - true - - - ``` -=== "EMR" - Use the below configuration when creating the cluster. You may delete any app configuration that is not suitable for your use case: - - ```json - [ - { - "Classification": "spark-defaults", - "Properties": { - "spark.sql.catalogImplementation": "hive" - } - }, - { - "Classification": "core-site", - "Properties": { - "fs.s3.access.key": "AKIAIOSFODNN7EXAMPLE", - "fs.s3.secret.key": "wJalrXUtnFEMI/K7MDENG/bPxRfiCYEXAMPLEKEY", - "fs.s3.endpoint": "https://example-org.us-east-1.lakefscloud.io", - "fs.s3.path.style.access": "true", - "fs.s3a.access.key": "AKIAIOSFODNN7EXAMPLE", - "fs.s3a.secret.key": "wJalrXUtnFEMI/K7MDENG/bPxRfiCYEXAMPLEKEY", - "fs.s3a.endpoint": "https://example-org.us-east-1.lakefscloud.io", - "fs.s3a.path.style.access": "true" - } - }, - { - "Classification": "emrfs-site", - "Properties": { - "fs.s3.access.key": "AKIAIOSFODNN7EXAMPLE", - "fs.s3.secret.key": "wJalrXUtnFEMI/K7MDENG/bPxRfiCYEXAMPLEKEY", - "fs.s3.endpoint": "https://example-org.us-east-1.lakefscloud.io", - "fs.s3.path.style.access": "true", - "fs.s3a.access.key": "AKIAIOSFODNN7EXAMPLE", - "fs.s3a.secret.key": "wJalrXUtnFEMI/K7MDENG/bPxRfiCYEXAMPLEKEY", - "fs.s3a.endpoint": "https://example-org.us-east-1.lakefscloud.io", - "fs.s3a.path.style.access": "true" - } - }, - { - "Classification": "presto-connector-hive", - "Properties": { - "hive.s3.aws-access-key": "AKIAIOSFODNN7EXAMPLE", - "hive.s3.aws-secret-key": "wJalrXUtnFEMI/K7MDENG/bPxRfiCYEXAMPLEKEY", - "hive.s3.endpoint": "https://example-org.us-east-1.lakefscloud.io", - "hive.s3.path-style-access": "true", - "hive.s3-file-system-type": "PRESTO" - } - }, - { - "Classification": "hive-site", - "Properties": { - "fs.s3.access.key": "AKIAIOSFODNN7EXAMPLE", - "fs.s3.secret.key": "wJalrXUtnFEMI/K7MDENG/bPxRfiCYEXAMPLEKEY", - "fs.s3.endpoint": "https://example-org.us-east-1.lakefscloud.io", - "fs.s3.path.style.access": "true", - "fs.s3a.access.key": "AKIAIOSFODNN7EXAMPLE", - "fs.s3a.secret.key": "wJalrXUtnFEMI/K7MDENG/bPxRfiCYEXAMPLEKEY", - "fs.s3a.endpoint": "https://example-org.us-east-1.lakefscloud.io", - "fs.s3a.path.style.access": "true" - } - }, - { - "Classification": "hdfs-site", - "Properties": { - "fs.s3.access.key": "AKIAIOSFODNN7EXAMPLE", - "fs.s3.secret.key": "wJalrXUtnFEMI/K7MDENG/bPxRfiCYEXAMPLEKEY", - "fs.s3.endpoint": "https://example-org.us-east-1.lakefscloud.io", - "fs.s3.path.style.access": "true", - "fs.s3a.access.key": "AKIAIOSFODNN7EXAMPLE", - "fs.s3a.secret.key": "wJalrXUtnFEMI/K7MDENG/bPxRfiCYEXAMPLEKEY", - "fs.s3a.endpoint": "https://example-org.us-east-1.lakefscloud.io", - "fs.s3a.path.style.access": "true" - } - }, - { - "Classification": "mapred-site", - "Properties": { - "fs.s3.access.key": "AKIAIOSFODNN7EXAMPLE", - "fs.s3.secret.key": "wJalrXUtnFEMI/K7MDENG/bPxRfiCYEXAMPLEKEY", - "fs.s3.endpoint": "https://example-org.us-east-1.lakefscloud.io", - "fs.s3.path.style.access": "true", - "fs.s3a.access.key": "AKIAIOSFODNN7EXAMPLE", - "fs.s3a.secret.key": "wJalrXUtnFEMI/K7MDENG/bPxRfiCYEXAMPLEKEY", - "fs.s3a.endpoint": "https://example-org.us-east-1.lakefscloud.io", - "fs.s3a.path.style.access": "true" - } - } - ] - ``` - - Alternatively, you can pass these configuration values when adding a step. - - For example: - - ```bash - aws emr add-steps --cluster-id j-197B3AEGQ9XE4 \ - --steps="Type=Spark,Name=SparkApplication,ActionOnFailure=CONTINUE, \ - Args=[--conf,spark.hadoop.fs.s3a.access.key=AKIAIOSFODNN7EXAMPLE, \ - --conf,spark.hadoop.fs.s3a.secret.key=wJalrXUtnFEMI/K7MDENG/bPxRfiCYEXAMPLEKEY, \ - --conf,spark.hadoop.fs.s3a.endpoint=https://example-org.us-east-1.lakefscloud.io, \ - --conf,spark.hadoop.fs.s3a.path.style.access=true, \ - s3a:////path/to/jar]" - ``` - -#### Per-bucket configuration - -The above configuration will use lakeFS as the sole S3 endpoint. To use lakeFS in parallel with S3, you can configure Spark to use lakeFS only for specific bucket names. -For example, to configure only `example-repo` to use lakeFS, set the following configurations: - -=== "CLI" - ```sh - spark-shell --conf spark.hadoop.fs.s3a.bucket.example-repo.access.key='AKIAlakefs12345EXAMPLE' \ - --conf spark.hadoop.fs.s3a.bucket.example-repo.secret.key='abc/lakefs/1234567bPxRfiCYEXAMPLEKEY' \ - --conf spark.hadoop.fs.s3a.bucket.example-repo.endpoint='https://example-org.us-east-1.lakefscloud.io' \ - --conf spark.hadoop.fs.s3a.path.style.access=true - ``` -=== "Scala" - ```scala - spark.sparkContext.hadoopConfiguration.set("fs.s3a.bucket.example-repo.access.key", "AKIAlakefs12345EXAMPLE") - spark.sparkContext.hadoopConfiguration.set("fs.s3a.bucket.example-repo.secret.key", "abc/lakefs/1234567bPxRfiCYEXAMPLEKEY") - spark.sparkContext.hadoopConfiguration.set("fs.s3a.bucket.example-repo.endpoint", "https://example-org.us-east-1.lakefscloud.io") - spark.sparkContext.hadoopConfiguration.set("fs.s3a.path.style.access", "true") - ``` -=== "XML Configuration" - Add these into a configuration file, e.g. `$SPARK_HOME/conf/hdfs-site.xml`: - - ```xml - - - - fs.s3a.bucket.example-repo.access.key - AKIAlakefs12345EXAMPLE - - - fs.s3a.bucket.example-repo.secret.key - abc/lakefs/1234567bPxRfiCYEXAMPLEKEY - - - fs.s3a.bucket.example-repo.endpoint - https://example-org.us-east-1.lakefscloud.io - - - fs.s3a.path.style.access - true - - - ``` - -=== "EMR" - Use the below configuration when creating the cluster. You may delete any app configuration that is not suitable for your use case: - - ```json - [ - { - "Classification": "spark-defaults", - "Properties": { - "spark.sql.catalogImplementation": "hive" - } - }, - { - "Classification": "core-site", - "Properties": { - "fs.s3a.bucket.example-repo.access.key": "AKIAIOSFODNN7EXAMPLE", - "fs.s3.bucket.example-repo.secret.key": "wJalrXUtnFEMI/K7MDENG/bPxRfiCYEXAMPLEKEY", - "fs.s3.bucket.example-repo.endpoint": "https://example-org.us-east-1.lakefscloud.io", - "fs.s3.bucket.example-repo.path.style.access": "true", - "fs.s3a.bucket.example-repo.access.key": "AKIAIOSFODNN7EXAMPLE", - "fs.s3a.bucket.example-repo.secret.key": "wJalrXUtnFEMI/K7MDENG/bPxRfiCYEXAMPLEKEY", - "fs.s3a.bucket.example-repo.endpoint": "https://example-org.us-east-1.lakefscloud.io", - "fs.s3a.bucket.example-repo.path.style.access": "true" - } - }, - { - "Classification": "emrfs-site", - "Properties": { - "fs.s3a.bucket.example-repo.access.key": "AKIAIOSFODNN7EXAMPLE", - "fs.s3.bucket.example-repo.secret.key": "wJalrXUtnFEMI/K7MDENG/bPxRfiCYEXAMPLEKEY", - "fs.s3.bucket.example-repo.endpoint": "https://example-org.us-east-1.lakefscloud.io", - "fs.s3.bucket.example-repo.path.style.access": "true", - "fs.s3a.bucket.example-repo.access.key": "AKIAIOSFODNN7EXAMPLE", - "fs.s3a.bucket.example-repo.secret.key": "wJalrXUtnFEMI/K7MDENG/bPxRfiCYEXAMPLEKEY", - "fs.s3a.bucket.example-repo.endpoint": "https://example-org.us-east-1.lakefscloud.io", - "fs.s3a.bucket.example-repo.path.style.access": "true" - } - }, - { - "Classification": "presto-connector-hive", - "Properties": { - "hive.s3.aws-access-key": "AKIAIOSFODNN7EXAMPLE", - "hive.s3.aws-secret-key": "wJalrXUtnFEMI/K7MDENG/bPxRfiCYEXAMPLEKEY", - "hive.s3.endpoint": "https://example-org.us-east-1.lakefscloud.io", - "hive.s3.path-style-access": "true", - "hive.s3-file-system-type": "PRESTO" - } - }, - { - "Classification": "hive-site", - "Properties": { - "fs.s3a.bucket.example-repo.access.key": "AKIAIOSFODNN7EXAMPLE", - "fs.s3.bucket.example-repo.secret.key": "wJalrXUtnFEMI/K7MDENG/bPxRfiCYEXAMPLEKEY", - "fs.s3.bucket.example-repo.endpoint": "https://example-org.us-east-1.lakefscloud.io", - "fs.s3.bucket.example-repo.path.style.access": "true", - "fs.s3a.bucket.example-repo.access.key": "AKIAIOSFODNN7EXAMPLE", - "fs.s3a.bucket.example-repo.secret.key": "wJalrXUtnFEMI/K7MDENG/bPxRfiCYEXAMPLEKEY", - "fs.s3a.bucket.example-repo.endpoint": "https://example-org.us-east-1.lakefscloud.io", - "fs.s3a.bucket.example-repo.path.style.access": "true" - } - }, - { - "Classification": "hdfs-site", - "Properties": { - "fs.s3a.bucket.example-repo.access.key": "AKIAIOSFODNN7EXAMPLE", - "fs.s3.bucket.example-repo.secret.key": "wJalrXUtnFEMI/K7MDENG/bPxRfiCYEXAMPLEKEY", - "fs.s3.bucket.example-repo.endpoint": "https://example-org.us-east-1.lakefscloud.io", - "fs.s3.bucket.example-repo.path.style.access": "true", - "fs.s3a.bucket.example-repo.access.key": "AKIAIOSFODNN7EXAMPLE", - "fs.s3a.bucket.example-repo.secret.key": "wJalrXUtnFEMI/K7MDENG/bPxRfiCYEXAMPLEKEY", - "fs.s3a.bucket.example-repo.endpoint": "https://example-org.us-east-1.lakefscloud.io", - "fs.s3a.bucket.example-repo.path.style.access": "true" - } - }, - { - "Classification": "mapred-site", - "Properties": { - "fs.s3a.bucket.example-repo.access.key": "AKIAIOSFODNN7EXAMPLE", - "fs.s3.bucket.example-repo.secret.key": "wJalrXUtnFEMI/K7MDENG/bPxRfiCYEXAMPLEKEY", - "fs.s3.bucket.example-repo.endpoint": "https://example-org.us-east-1.lakefscloud.io", - "fs.s3.bucket.example-repo.path.style.access": "true", - "fs.s3a.bucket.example-repo.access.key": "AKIAIOSFODNN7EXAMPLE", - "fs.s3a.bucket.example-repo.secret.key": "wJalrXUtnFEMI/K7MDENG/bPxRfiCYEXAMPLEKEY", - "fs.s3a.bucket.example-repo.endpoint": "https://example-org.us-east-1.lakefscloud.io", - "fs.s3a.bucket.example-repo.path.style.access": "true" - } - } - ] - ``` - - Alternatively, you can pass these configuration values when adding a step. - - For example: - - ```bash - aws emr add-steps --cluster-id j-197B3AEGQ9XE4 \ - --steps="Type=Spark,Name=SparkApplication,ActionOnFailure=CONTINUE, \ - Args=[--conf,spark.hadoop.fs.s3a.bucket.example-repo.access.key=AKIAIOSFODNN7EXAMPLE, \ - --conf,spark.hadoop.fs.s3a.bucket.example-repo.secret.key=wJalrXUtnFEMI/K7MDENG/bPxRfiCYEXAMPLEKEY, \ - --conf,spark.hadoop.fs.s3a.bucket.example-repo.endpoint=https://example-org.us-east-1.lakefscloud.io, \ - --conf,spark.hadoop.fs.s3a.path.style.access=true, \ - s3a:////path/to/jar]" - ``` - -With this configuration set, you read S3A paths with `example-repo` as the bucket will use lakeFS, while all other buckets will use AWS S3. - -### Usage - -Here's an example for reading a Parquet file from lakeFS to a Spark DataFrame: - -```scala -val repo = "example-repo" -val branch = "main" -val df = spark.read.parquet(s"s3a://${repo}/${branch}/example-path/example-file.parquet") -``` - -Here's how to write some results back to a lakeFS path: -```scala -df.write.partitionBy("example-column").parquet(s"s3a://${repo}/${branch}/output-path/") -``` - -The data is now created in lakeFS as new changes in your branch. You can now commit these changes or revert them. - -### Configuring Azure Databricks with the S3-compatible API - -If you use Azure Databricks, you can take advantage of the lakeFS S3-compatible API with your Azure account and the S3A FileSystem. -This will require installing the `hadoop-aws` package (with the same version as your `hadoop-azure` package) to your Databricks cluster. - -Define your FileSystem configurations in the following way: - -``` -spark.hadoop.fs.lakefs.impl=org.apache.hadoop.fs.s3a.S3AFileSystem -spark.hadoop.fs.lakefs.access.key=‘AKIAlakefs12345EXAMPLE’ // The access key to your lakeFS server -spark.hadoop.fs.lakefs.secret.key=‘abc/lakefs/1234567bPxRfiCYEXAMPLEKEY’ // The secret key to your lakeFS server -spark.hadoop.fs.lakefs.path.style.access=true -spark.hadoop.fs.lakefs.endpoint=‘https://example-org.us-east-1.lakefscloud.io’ // The endpoint of your lakeFS server -``` - -For more details about [Mounting cloud object storage on Databricks](https://docs.databricks.com/dbfs/mounts.html). - -### Configuring Databricks SQL Warehouse with the S3-compatible API - -A SQL warehouse is a compute resource that lets you run SQL commands on data -objects within Databricks SQL. - -If you use Databricks SQL warehouse, you can take advantage of the lakeFS -S3-compatible API with the S3A FileSystem. - -Define your SQL Warehouse configurations in the following way: - -1. In the top right, select `Admin Settings` and then `Compute`, and `SQL warehouses`. - -2. Under `Data Access Properties` add the following key-value pairs for - each lakeFS repository you want to access: - -```text -spark.hadoop.fs.s3a.impl shaded.databricks.org.apache.hadoop.fs.s3a.S3AFileSystem -spark.hadoop.fs.s3a.bucket.example-repo.access.key AKIAIOSFODNN7EXAMPLE // The access key to your lakeFS server -spark.hadoop.fs.s3a.bucket.example-repo.secret.key wJalrXUtnFEMI/K7MDENG/bPxRfiCYEXAMPLEKEY // The secret key to your lakeFS server -spark.hadoop.fs.s3a.bucket.example-repo.endpoint https://example-org.us-east-1.lakefscloud.io // The endpoint of your lakeFS server -spark.hadoop.fs.s3a.bucket.example-repo.path.style.access true -``` - -3. Changes are applied automatically after the SQL Warehouse restarts. -4. You can now use the lakeFS S3-compatible API with your SQL Warehouse, e.g.: - -```sql -SELECT * FROM delta.`s3a://example-repo/main/datasets/delta-table/` LIMIT 100 -``` -### ⚠️ Experimental: Pre-signed mode for S3A - -!!! warning "Deprecated" - This feature does not work on Spark 4 or later (Hadoop 3.4+), which [migrated S3A from AWS SDK v1 to v2](https://issues.apache.org/jira/browse/HADOOP-18073). AWS SDK v2 does not follow HTTP redirects at the transport layer, and the `QueryStringSignerType` signer no longer exists in SDK v2. This is not fixable via configuration. - - For direct-to-storage access on Spark 4, use the [lakeFS Hadoop FileSystem in presigned mode](#hadoop-filesystem-in-presigned-mode) instead. - -On Hadoop 3.1.4 to 3.3.x, it is possible to use pre-signed URLs as return values from the lakeFS S3 Gateway. - -This has the immediate benefit of reducing the amount of traffic that has to go through the lakeFS server thus improving IO performance. -To read more about pre-signed URLs, see [this guide](../security/presigned-url.md). - -Here's an example Spark configuration to enable this support: - -```text -spark.hadoop.fs.s3a.impl shaded.databricks.org.apache.hadoop.fs.s3a.S3AFileSystem -spark.hadoop.fs.s3a.bucket.example-repo.access.key AKIAIOSFODNN7EXAMPLE // The access key to your lakeFS server -spark.hadoop.fs.s3a.bucket.example-repo.secret.key wJalrXUtnFEMI/K7MDENG/bPxRfiCYEXAMPLEKEY // The secret key to your lakeFS server -spark.hadoop.fs.s3a.path.style.access true -spark.hadoop.fs.s3a.bucket.example-repo.signing-algorithm QueryStringSignerType -spark.hadoop.fs.s3a.bucket.example-repo.user.agent.prefix s3RedirectionSupport -``` - -!!! note - `user.agent.prefix` should **contain** the string `s3RedirectionSupport` but does not have to match the string exactly. - - - -Once configured, requests will include the string `s3RedirectionSupport` in the `User-Agent` HTTP header sent with GetObject requests, resulting in lakeFS responding with a pre-signed URL. -Setting the `signing-algorithm` to `QueryStringSignerType` is required to stop S3A from signing a pre-signed URL, since the existence of more than one signature method will return an error from S3. - -!!! info - This feature requires a lakeFS server of version **>1.18.0** diff --git a/docs/src/integrations/unity-catalog.md b/docs/src/integrations/unity-catalog.md deleted file mode 100644 index 4e624d63d9e..00000000000 --- a/docs/src/integrations/unity-catalog.md +++ /dev/null @@ -1,214 +0,0 @@ ---- -title: Unity Catalog -description: Accessing lakeFS-exported Delta Lake tables from Unity Catalog. ---- - -# Using lakeFS with the Unity Catalog - - - -## Overview - -Databricks Unity Catalog serves as a centralized data governance platform for your data lakes. -Through the Unity Catalog, you can search for and locate data assets across workspaces via a unified catalog. -Leveraging the external tables feature within Unity Catalog, you can register a Delta Lake table exported from lakeFS and -access it through the unified catalog. - -The subsequent step-by-step guide will lead you through the process of configuring a [Lua hook](../howto/hooks/lua.md) -that exports Delta Lake tables from lakeFS, and subsequently registers them in Unity Catalog. - -!!! note - Currently, Unity Catalog export feature exclusively supports AWS S3 and Azure ADLS Gen2 as the underlying storage solution. It's planned to [support other cloud providers soon](https://github.com/treeverse/lakeFS/issues/7199). - -Reference Guide: [lakeFS + Unity Catalog Integration: Step-by-Step Tutorial](https://lakefs.io/blog/lakefs-unity-catalog-integration-tutorial/) - -## Prerequisites - -Before starting, ensure you have the following: - -1. Access to Unity Catalog -2. An active lakeFS installation with S3 as the backing storage, and a repository in this installation. -3. A Databricks SQL warehouse. -4. AWS Credentials with S3 access. -5. lakeFS credentials with access to your Delta Tables. - -!!! info - Supported from lakeFS v1.4.0 - -### Databricks authentication - -Given that the hook will ultimately register a table in Unity Catalog, authentication with Databricks is imperative. -Make sure that: - -1. You have a Databricks [Service Principal](https://docs.databricks.com/en/dev-tools/service-principals.html). -2. The Service principal has [token usage permissions](https://docs.databricks.com/en/dev-tools/service-principals.html#step-3-assign-workspace-level-permissions-to-the-databricks-service-principal), - and an associated [token](https://docs.databricks.com/en/dev-tools/service-principals.html#step-4-generate-a-databricks-personal-access-token-for-the-databricks-service-principal) - configured. -3. The service principal has the `Service principal: Manager` privilege over itself (Workspace: Admin console -> Service principals -> `` -> Permissions -> Grant access (``: - `Service principal: Manager`), with `Workspace access` and `Databricks SQL access` checked (Admin console -> Service principals -> `` -> Configurations). -4. Your SQL warehouse allows the service principal to use it (SQL Warehouses -> `` -> Permissions -> ``: `Can use`). -5. The catalog grants the `USE CATALOG`, `USE SCHEMA`, `CREATE SCHEMA` permissions to the service principal(Catalog -> `` -> Permissions -> Grant -> ``: `USE CATALOG`, `USE SCHEMA`, `CREATE SCHEMA`). -6. You have an _External Location_ configured, and the service principal has the `CREATE EXTERNAL TABLE` permission over it (Catalog -> External Data -> External Locations -> Create location). - -## Guide - -### Table descriptor definition - -To guide the Unity Catalog exporter in configuring the table in the catalog, define its properties in the Delta Lake table descriptor. -The table descriptor should include (at minimum) the following fields: - -1. `name`: The table name. -2. `type`: Should be `delta`. -3. `catalog`: The name of the catalog in which the table will be created. -4. `path`: The path in lakeFS (starting from the root of the branch) in which the Delta Lake table's data is found. - -Let's define the table descriptor and upload it to lakeFS: - -Save the following as `famous-people-td.yaml`: - -```yaml ---- -name: famous_people -type: delta -catalog: my-catalog-name -path: tables/famous-people -``` - -!!! tip - It's recommended to create a Unity catalog with the same name as your repository - -Upload the table descriptor to `_lakefs_tables/famous-people-td.yaml` and commit: - -```bash -lakectl fs upload lakefs://repo/main/_lakefs_tables/famous-people-td.yaml -s ./famous-people-td.yaml && \ -lakectl commit lakefs://repo/main -m "add famous people table descriptor" -``` - -### Write some data - -Insert data into the table path, using your preferred method (e.g. [Spark](spark.md)), and commit upon completion. - -We shall use Spark and lakeFS's S3 gateway to write some data as a Delta table: - -```bash -pyspark --packages "io.delta:delta-spark_2.12:3.0.0,org.apache.hadoop:hadoop-aws:3.3.4,com.amazonaws:aws-java-sdk-bundle:1.12.262" \ - --conf spark.sql.extensions=io.delta.sql.DeltaSparkSessionExtension \ - --conf spark.sql.catalog.spark_catalog=org.apache.spark.sql.delta.catalog.DeltaCatalog \ - --conf spark.hadoop.fs.s3a.aws.credentials.provider='org.apache.hadoop.fs.s3a.SimpleAWSCredentialsProvider' \ - --conf spark.hadoop.fs.s3a.endpoint='' \ - --conf spark.hadoop.fs.s3a.access.key='' \ - --conf spark.hadoop.fs.s3a.secret.key='' \ - --conf spark.hadoop.fs.s3a.path.style.access=true -``` - -```python -data = [ - ('James','Bond','England','intelligence'), - ('Robbie','Williams','England','music'), - ('Hulk','Hogan','USA','entertainment'), - ('Mister','T','USA','entertainment'), - ('Rafael','Nadal','Spain','professional athlete'), - ('Paul','Haver','Belgium','music'), -] -columns = ["firstname","lastname","country","category"] -df = spark.createDataFrame(data=data, schema = columns) -df.write.format("delta").mode("overwrite").partitionBy("category", "country").save("s3a://repo/main/tables/famous-people") -``` - -### The Unity Catalog exporter script - -!!! example - For code references check [delta_exporter](../howto/hooks/lua.md#lakefscatalogexportdelta_exporter) and - [unity_exporter](../howto/hooks/lua.md#lakefscatalogexportunity_exporter) docs. - -Create `unity_exporter.lua`: - -```lua -local aws = require("aws") -local formats = require("formats") -local databricks = require("databricks") -local delta_export = require("lakefs/catalogexport/delta_exporter") -local unity_export = require("lakefs/catalogexport/unity_exporter") - -local sc = aws.s3_client(args.aws.access_key_id, args.aws.secret_access_key, args.aws.region) - --- Export Delta Lake tables export: -local delta_client = formats.delta_client(args.lakefs.access_key_id, args.lakefs.secret_access_key, args.aws.region) -local delta_table_details = delta_export.export_delta_log(action, args.table_defs, sc.put_object, delta_client, "_lakefs_tables") - --- Register the exported table in Unity Catalog: -local databricks_client = databricks.client(args.databricks_host, args.databricks_token) -local registration_statuses = unity_export.register_tables(action, "_lakefs_tables", delta_table_details, databricks_client, args.warehouse_id) - -for t, status in pairs(registration_statuses) do - print("Unity catalog registration for table \"" .. t .. "\" completed with commit schema status : " .. status .. "\n") -end -``` - -Upload the lua script to the `main` branch under `scripts/unity_exporter.lua` and commit: - -```bash -lakectl fs upload lakefs://repo/main/scripts/unity_exporter.lua -s ./unity_exporter.lua && \ -lakectl commit lakefs://repo/main -m "upload unity exporter script" -``` - -### Action configuration - -Define an action configuration that will run the above script after a commit is completed (`post-commit`) over the `main` branch. - -Create `unity_exports_action.yaml`: - -```yaml ---- -name: unity_exports -on: - post-commit: - branches: ["main"] -hooks: - - id: unity_export - type: lua - properties: - script_path: scripts/unity_exporter.lua - args: - aws: - access_key_id: - secret_access_key: - region: - lakefs: # provide credentials of a user that has access to the script and Delta Table - access_key_id: - secret_access_key: - table_defs: # an array of table descriptors used to be defined in Unity Catalog - - famous-people-td - databricks_host: - databricks_token: - warehouse_id: -``` - -Upload the action configurations to `_lakefs_actions/unity_exports_action.yaml` and commit: - -!!! note - Once the commit will finish its run, the action will start running since we've configured it to run on `post-commit` - events on the `main` branch. - -```bash -lakectl fs upload lakefs://repo/main/_lakefs_actions/unity_exports_action.yaml -s ./unity_exports_action.yaml && \ -lakectl commit lakefs://repo/main -m "upload action and run it" -``` - -The action has run and exported the `famous_people` Delta Lake table to the repo's storage namespace, and has registered -the table as an external table in Unity Catalog under the catalog `my-catalog-name`, schema `main` (as the branch's name) and -table name `famous_people`: `my-catalog-name.main.famous_people`. - -![Hooks log result in lakeFS UI](../assets/img/unity_export_hook_result_log.png) - -### Databricks Integration - -After registering the table in Unity, you can leverage your preferred method to [query the data](https://docs.databricks.com/en/query/index.html) -from the exported table under `my-catalog-name.main.famous_people`, and view it in the Databricks's Catalog Explorer, or -retrieve it using the Databricks CLI with the following command: - -```bash -databricks tables get my-catalog-name.main.famous_people -``` - -![Unity Catalog Explorer view](../assets/img/unity_exported_table_columns.png) diff --git a/docs/src/integrations/vertex_ai.md b/docs/src/integrations/vertex_ai.md deleted file mode 100644 index ceec94b67dd..00000000000 --- a/docs/src/integrations/vertex_ai.md +++ /dev/null @@ -1,145 +0,0 @@ ---- -title: Vertex AI -description: How to use Vertex Datasets and gcsfuse with lakeFS ---- - -# Using Vertex AI with lakeFS - -Vertex AI lets Google Cloud users Build, deploy, and scale machine learning (ML) models faster, with fully managed ML tools for any use case. - -lakeFS Works with Vertex AI by allowing users to create repositories on [GCS Buckets](../howto/deploy/gcp.md), then use either the Dataset API to create managed Datasets on top of lakeFS version, or by automatically exporting lakeFS object versions in a way readable by [Cloud Storage Mounts](https://cloud.google.com/blog/products/ai-machine-learning/cloud-storage-file-system-ai-training). - - -## Using lakeFS with Vertex Managed Datasets - -Vertex's [ImageDataset](https://cloud.google.com/python/docs/reference/aiplatform/latest/google.cloud.aiplatform.ImageDataset) and [VideoDataset](https://cloud.google.com/python/docs/reference/aiplatform/latest/google.cloud.aiplatform.VideoDataset) allow creating a dataset by importing a CSV file from gcs (see [`gcs_source`](https://cloud.google.com/python/docs/reference/aiplatform/latest/google.cloud.aiplatform.ImageDataset#google_cloud_aiplatform_ImageDataset_create)). - -This CSV file contains GCS addresses of image files and their corresponding labels. - -Since the lakeFS API supports exporting the underlying GCS address of versioned objects, we can generate such a CSV file when creating the dataset: - -```python -#!/usr/bin/env python - -# Requirements: -# google-cloud-aiplatform>=1.31.0 -# lakefs>=1.0.0 - -import csv -from pathlib import PosixPath -from io import StringIO - -import lakefs -from google.cloud import storage -from google.cloud import aiplatform - -# Dataset configuration -lakefs_repo = 'my-repository' -lakefs_ref = 'main' -img_dataset = 'datasets/my-images/' - -# Vertex configuration -import_bucket = 'underlying-gcs-bucket' - -# produce import file for Vertex's SDK -buf = StringIO() -csv_writer = csv.writer(buf) -for obj in lakefs.repository(lakefs_repo).ref(lakefs_ref).objects(prefix=img_dataset): - p = PosixPath(obj.path) - csv_writer.writerow((obj.physical_address, p.parent.name)) - -# spit out CSV -print('Generated path and labels CSV') -buf.seek(0) - -# Write it to storage -storage_client = storage.Client() -bucket = storage_client.bucket(import_bucket) -blob = bucket.blob(f'vertex/imports/{lakefs_repo}/{lakefs_ref}/labels.csv') -with blob.open('w') as out: - out.write(buf.read()) - -print(f'Wrote CSV to gs://{import_bucket}/vertex/imports/{lakefs_repo}/{lakefs_ref}/labels.csv') - -# import in Vertex, as dataset -print('Importing dataset...') -ds = aiplatform.ImageDataset.create( - display_name=f'{lakefs_repo}_{lakefs_ref}_imgs', - gcs_source=f'gs://{import_bucket}/vertex/imports/{lakefs_repo}/{lakefs_ref}/labels.csv', - import_schema_uri=aiplatform.schema.dataset.ioformat.image.single_label_classification, - sync=True -) -ds.wait() -print(f'Done! {ds.display_name} ({ds.resource_name})') -``` - -## Using lakeFS with Cloud Storage Fuse - -Vertex allows using Google Cloud Storage mounted as a [Fuse Filesystem](https://cloud.google.com/vertex-ai/docs/training/cloud-storage-file-system) as custom input for training jobs. - -Instead of having to copy lakeFS files for each version we want to consume, we can create symlinks by using [gcsfuse](https://github.com/GoogleCloudPlatform/gcsfuse)'s native [symlink inodes](https://github.com/GoogleCloudPlatform/gcsfuse/blob/v1.0.0/docs/semantics.md#symlink-inodes). - -This process can be fully automated by using the example [gcsfuse_symlink_exporter.lua](https://github.com/treeverse/lakeFS/blob/master/examples/hooks/gcsfuse_symlink_exporter.lua) Lua hook. - -Here's what we need to do: - -1. Upload the example `.lua` file into our lakeFS repository. For this example, we'll put it under `scripts/gcsfuse_symlink_exporter.lua`. -2. Create a new hook definition file and upload to `_lakefs_actions/export_images.yaml`: - -```yaml ---- -# Example hook declaration: (_lakefs_actions/export_images.yaml): -name: export_images - -on: - post-commit: - branches: ["main"] - post-merge: - branches: ["main"] - post-create-tag: - -hooks: -- id: gcsfuse_export_images - type: lua - properties: - script_path: scripts/export_gcs_fuse.lua # Path to the script we uploaded in the previous step - args: - prefix: "datasets/images/" # Path we want to export every commit - destination: "gs://my-bucket/exports/my-repo/" # Where should we create the symlinks? - mount: - from: "gs://my-bucket/repos/my-repo/" # Symlinks are to a unix-mounted file - to: "/gcs/my-bucket/repos/my-repo/" # This will ensure they point to a location that exists. - - # Should be the contents of a valid credentials.json file - # See: https://developers.google.com/workspace/guides/create-credentials - # Will be used to write the symlink files - gcs_credentials_json_string: | - { - "client_id": "...", - "client_secret": "...", - "refresh_token": "...", - "type": "..." - } -``` - -Done! On the next tag creation or update to the `main` branch, we'll automatically export the lakeFS version of `datasets/images/` to a mountable location. - -To consume the symlink-ed files, we can read them normally from the mount: - -```python -with open('/gcs/my-bucket/exports/my-repo/branches/main/datasets/images/001.jpg') as f: - image_data = f.read() -``` - -Previously exported commits are also readable, if we exported them in the past: - -```python -commit_id = 'abcdef123deadbeef567' -with open(f'/gcs/my-bucket/exports/my-repo/commits/{commit_id}/datasets/images/001.jpg') as f: - image_data = f.read() -``` - -### Considerations when using lakeFS with Cloud Storage Fuse - -For lakeFS paths to be readable by gcsfuse, the mount option `--implicit-dirs` must be specified. - diff --git a/docs/src/logo.png b/docs/src/logo.png deleted file mode 100644 index e69de29bb2d..00000000000 diff --git a/docs/src/posts/deprecate-py-legacy.md b/docs/src/posts/deprecate-py-legacy.md deleted file mode 100644 index 13f676ad86a..00000000000 --- a/docs/src/posts/deprecate-py-legacy.md +++ /dev/null @@ -1,65 +0,0 @@ ---- -date: 2024-10-28 -search: - exclude: true ---- - -# Deprecating `lakefs-client`, the legacy Python 🐍 Client SDKs - -The `lakefs-client` is now deprecated; the last release published to PyPI was v1.44.0. - -## What is changing? - -Ever since we released lakeFS 1.0, we have supported these two SDKs to program for lakeFS with Python: - -- [`lakefs`, the lakeFS High-Level Python SDK][pypi-lakefs-hi-lvl]. This is offers a structured easy way to use lakeFS from lakeFS. -- [`lakefs-sdk`, the lakeFS HTTP API][pypi-lakefs-sdk]. This is - auto-generated from the lakeFS OpenAPI spec. It is guaranteed to support - all lakeFS API actions. And it is covered by the lakeFS SDK interface - guarantees. - -**These clients will continue.** - -Before lakeFS 1.0 we would publish only: - -- [`lakefs-client`, a legacy older version of the lakeFS HTTP API][pypi-lakefs-legacy]. - This too was auto-generated. However it can't provide interface guarantees. - **At no time could this client ever provide forward- or backward- compatibility at the source code level.** - -We have continued to publish `lakefs-client` since the 1.0 release, in order -to provide continued support for existing users of this legacy Python SDK -client. But there are better alternatives, and its continued presence only -confuses our users. - -## FAQ - -### What will happen to existing users of `lakefs-client`? - -Current and previously available versions will remain accessible and functional despite upcoming changes. -These existing releases will not be withdrawn. -However, no further updates or new editions of these client versions will be published moving forward. - -### How do I migrate from using `lakefs-client` to `lakefs-sdk`? - -Transitioning to version 1.0 is detailed in the [Migrating to 1.0][lakefs-py-migration] guide. -Typically, the adjustments required are straightforward. - -### Will programs using old versions of `lakefs-client` continue to work with new versions of lakeFS? - -Yes. - -A program that uses any 1.x version of `lakefs-client` still uses 1.x -versions of lakeFS APIs. Its usage of those APIs is still covered by the -lakeFS interface guarantees, so it will continue to work with future 1.x -releases. - -### Where can I ask another question not covered here? - -As always, our Slack https://lakefs.io/slack is the best place to interact -with the lakeFS community! Try asking on our `#dev` channel - - -[pypi-lakefs-hi-lvl]: https://pypi.org/project/lakefs/ -[pypi-lakefs-sdk]: https://pypi.org/project/lakefs-sdk/ -[pypi-lakefs-legacy]: https://pypi.org/project/lakefs-client/ -[lakefs-py-migration]: ../project/code-migrate-1.0-sdk.md#migrating-sdk-code-for-python diff --git a/docs/src/posts/security_update.md b/docs/src/posts/security_update.md deleted file mode 100644 index e9a47f6b794..00000000000 --- a/docs/src/posts/security_update.md +++ /dev/null @@ -1,51 +0,0 @@ ---- -date: 2023-01-31 -search: - exclude: true ---- - -# Security update for the lakeFS project - -Trust is our core value, and security topics are never taken lightly. - -We heard you, and after many conversations, we decided to move from decoupled security authentication and access control features to enable you to plug your own authentication and security mechanism. - -We understand that focusing on building lakeFS to be the best data version control tool is the open-source project north star. -Consequently, we decided to change the architecture to a pluggable one which enables you to choose your preference without being dependent on the lakeFS solution. - -## What's changing? - -With lakeFS [v0.91.0](https://github.com/treeverse/lakeFS/releases/tag/v0.91.0){: target="_blank" } Role-based access control and SSO (OIDC, LDAP) authentication are deprecated due to this architecture change. -Within the lakeFS UI, you will see a deprecation notice on the administration screens when trying to update and create policies. - -In coming versions, we plan on making authorization and authentication pluggable, while bundling a simpler reference implementation into the core of lakeFS. -This implementation will include basic identity management with built-in users and groups, as well as a simplified authorization mechanism based on ACLs. - -!!! danger - If you currently rely on any of the deprecated features, please [contact us](mailto:support@treeverse.io?subject=RBAC+and+SSO+deprecation){: target="_blank" } - we'll do our best to support you in the transition.** - -## Why are we making this architectural change? - -This change is necessary as it lets you decide on access control and authentication that best fits your security needs. It matters since one can ensure security only if one controls the full environment. - -lakeFS users will be able to develop and use existing identity providers and wrap lakeFS with their own authorization logic (if they so desire) - to meet their specific security needs. - -## How can I ensure security? - -Now that the architecture is pluggable, you can use the solution of your choice. - -Depending on your needs, you might want to take a look at lakeFS Cloud, which enables us to provide a holistic, secure solution that is SOC2 compliant and provides security guarantees. - -lakeFS Cloud will continue to support and maintain more advanced authentication methods such as SAML and OIDC, and granular access control in the form of role-based access control policies. Additionally, lakeFS Cloud also provides a full, queryable auditing log to help administrators gain full visibility on data access within their lakeFS environment. - ---- - -Trust is our core value, and security topics are never taken lightly. - -Even though this decision was difficult, it was necessary to continue building a solid foundation for our data version control. - -We remain [committed][oss] to making lakeFS the best, most scalable, open source version control system for data practitioners, while not compromising on its security. - -_Oz & Einat_ - -[oss]: ../project/index.md#our-commitment-to-open-source diff --git a/docs/src/project/code-migrate-1.0-sdk.md b/docs/src/project/code-migrate-1.0-sdk.md deleted file mode 100644 index 899af1cea64..00000000000 --- a/docs/src/project/code-migrate-1.0-sdk.md +++ /dev/null @@ -1,161 +0,0 @@ ---- -title: Migrating to 1.0 -description: Code migration guide detailing API and SDK upgrades, deprecated and new API operations, and SDK migration processes for both Java/JVM and Python with code refactoring examples for improved stability and compatibility. ---- - -# lakeFS 1.0 - Code Migration Guide - -Version 1.0.0 promises API and SDK stability. By "API" we mean any access to a lakeFS REST endpoint. By "SDK" we mean auto-generated lakeFS clients: `lakefs-sdk` for Python and `io.lakefs:sdk` for Java. This guide details the steps to allow you to upgrade your code to enjoy this stability. - -Avoid using APIs and SDKs labeled as `experimental`, `internal`, or `deprecated`. If you must use them, be prepared to adjust your application to align with any lakeFS server updates. - -Your software developed without such APIs should be compatible with all minor version updates of the lakeFS server from the version you originally developed with. - -If you rely on a publicly released API and SDK, it will adhere to semantic versioning. Transitioning your application to a minor SDK version update should be smooth. - -The operation names and tags from the [`api/swagger.yml`](https://github.com/treeverse/lakeFS/blob/7d9feeb0211a637e2b8a63abaa629efc968d7c9e/api/swagger.yml) specification might differ based on the SDK or coding language in use. - -### Deleted API Operations - -The following API operations have been removed: - -- `updatePassword` -- `forgotPassword` -- `logBranchCommits` -- `expandTemplate` -- `createMetaRange` -- `ingestRange` -- `updateBranchToken` - -### Internal API Operations - -The following operations are for `internal` use only and should not be used in your application code. Some deprecated operations have alternatives provided. - -- `setupCommPrefs` -- `getSetupState` -- `setup` -- `getAuthCapabilities` -- `uploadObjectPreflight` -- `setGarbageCollectionRulesPreflight` -- `createBranchProtectionRulePreflight` -- `postStatsEvents` -- `dumpRefs` (will be replaced with a long-running API later) -- `restoreRefs` (will be replaced with a long-running API later) -- `createSymlinkFile` (Deprecated) -- `getStorageConfig` (Deprecated. Alternative: `getConfig`) -- `getLakeFSVersion` (Deprecated. Alternative: `getConfig`) -- `stageObject` (Deprecated. Alternatives: `get/link physical address` or `import`) -- `internalDeleteBranchProtectionRule` (Deprecated. Temporary backward support. Alternative: `setBranchProtectionRules`) -- `internalCreateBranchProtectionRule` (Deprecated. Temporary backward support. Alternative: `setBranchProtectionRules`) -- `internalGetBranchProtectionRule` (Deprecated. Temporary backward support. Alternative: `getBranchProtectionRules`) -- `internalDeleteGarbageCollectionRules` (Deprecated. Temporary backward support. Alternative: `deleteGCRules`) -- `internalSetGarbageCollectionRules` (Deprecated. Temporary backward support. Alternative: `setGCRules`) -- `internalGetGarbageCollectionRules` (Deprecated. Temporary backward support. Alternative: `getGCRules`) -- `prepareGarbageCollectionCommits` -- `getGarbageCollectionConfig` - -### New/Updated API Operations - -Here are the newly added or updated operations: - -- `getConfig` (Retrieve lakeFS version and storage info) -- `setBranchProtectionRules` (Route updated) -- `getBranchProtectionRules` (Route updated) -- `getGCRules` (New route introduced) -- `setGCRules` (New route introduced) -- `deleteGCRules` (New route introduced) -- `importStatus` (Response structure updated: 'ImportStatusResp' to 'ImportStatus') -- `uploadObject` (Parameters 'if-none-match' and 'storageClass' are now deprecated) -- `prepareGarbageCollectionCommits` (Request body removed) -- `getOtfDiffs` & `otfDiff` (Removed from 'otf diff' tag; retained in 'experimental' tag) - -## Migrating SDK Code for Java and JVM-based Languages - -### Introduction - -If you are using the lakeFS client for Java or for any other JVM-based language, be aware that the current package is not stable with respect to minor version upgrades. -Transitioning from `io.lakefs:lakefs-client` to `io.lakefs:sdk` will necessitate rewriting your API calls to fit the new design paradigm. - - -### Problem with the Old Style - -Previously, API calls required developers to pass all parameters, including optional ones, in a single function call. As demonstrated in this older style: - -```java -ObjectStats objectStat = objectsApi.statObject( - objectLoc.getRepository(), objectLoc.getRef(), objectLoc.getPath(), - false, false); -``` - -This method posed a couple of challenges: - -1. **Inflexibility with Upgrades:** If an optional parameter were introduced in newer versions, existing code would fail to compile. -2. **Maintenance Difficulty:** Long argument lists can be challenging to manage and understand, leading to potential mistakes and readability issues. - -Adopting the Fluent Style - -In the revised SDK, API calls adopt a fluent style, making the code more modular and adaptive to changes. - -Here's an example of the new style: - -```java -ObjectStats objectStat = objectsApi - .statObject( - objectLoc.getRepository(), objectLoc.getRef(), objectLoc.getPath() - ) - .userMetadata(true) - .execute(); -``` - - -### Here's a breakdown of the changes: - -1. **Initial Function Call:** Begin by invoking the desired function with all required parameters. -2. **Modifying Optional Parameters:** Chain any modifications to optional parameters after the initial function. For instance, `userMetadata` is changed in the example above. -3. **Unused Optional Parameters**: You can safely ignore these. For instance, this code ignores the `presign` optional parameter because it never uses it. -4. **Execution:** Complete the call with the `.execute()` method. - -This new design offers several advantages: - -- **Compatibility with Upgrades:** When a new optional parameter is introduced, existing code will use its default value, preserving compatibility with minor server version upgrades. -- **Improved Readability:** The fluent style makes it evident which parameters are required and which ones are optional, enhancing code clarity. - -When migrating your code, ensure you refactor all your API calls to adopt the new fluent style. This ensures that your application remains maintainable and is safeguarded against potential issues arising from minor SDK version upgrades. - -For an illustrative example of the transition between styles, you can view the changes made in this pull request: [lakeFS pull request #6529](https://github.com/treeverse/lakeFS/pull/6529/files#diff-4c50b9ac3bf6bfc05e3b6ff0fbe2fd3214f31afb5b449732d90efe5f97f67167R666). - - -## Migrating SDK Code for Python - -### Introduction - -If you continue using the Python `lakefs-client` package for lakeFS, it's important to note that the package has reached its end of support with minor version updates. -You need to switch from `lakefs-client` to `lakefs-sdk`, which will require rewriting your API calls. - -### Here's a breakdown of the changes: - -1. **Modules change** - - The previous `model` module was renamed to `models`, meaning that `lakefs_client.model` imports should be replaced with `lakefs_sdk.models` imports. - - The `apis` module in `lakefs_client` is deprecated and no longer supported. To migrate to the new `api` module in `lakefs_sdk`, you should replace all imports of `lakefs_client.apis` with imports of `lakefs_sdk.api`. We still recommend using the `lakefs_sdk.LakeFSClient` class instead of using the `api` module directly. The `LakeFSClient` class provides a higher-level interface to the LakeFS API and makes it easier to use LakeFS in your applications. -2. **`upload_object` API call:** The `content` parameter value passed to the `objects_api.upload_object` method call should be either a `string` containing the path to the uploaded file, or `bytes` of data to be uploaded. -3. **`get_object`** **API call**: The return value of `client.get_object(...)` is a `bytearray` containing the content of the object. -4. `**client.{operation}_api**`**:** The `lakefs-client` package’s `LakeFSClient` class’s deprecation-marked operations (`client.{operation}`) will no longer be available in the `lakefs-sdk` package’s `LakeFSClient` class. In their place, the `client.{operation}_api` should be used. -5. **Minimum Python Version**: 3.7 -6. **Fetching results from response objects**: Instead of fetching the required results properties from a dictionary using `response_result.get_property(prop_name)`, the response objects will include domain specific entities, thus referring to the properties in the `results` of the response - `response_result.prop_name`. - - For example, instead of: - - ```python - response = lakefs_client.branches.diff_branch(repository='repo', branch='main') - diff = response.results[0] # 'results' is a 'DiffList' object - path = diff.get_property('path') # 'diff' is a dictionary - ``` - - You should use: - - ```python - response = lakefs_client.branches_api.diff_branch(repository='repo', branch='main') - diff = response.results[0] # 'results' is a 'DiffList' object - path = diff.path # 'diff' is a 'Diff' object - ``` - diff --git a/docs/src/project/contributing.md b/docs/src/project/contributing.md deleted file mode 100644 index c531b15017f..00000000000 --- a/docs/src/project/contributing.md +++ /dev/null @@ -1,150 +0,0 @@ ---- -title: Contributing to lakeFS -description: lakeFS community welcomes your contribution. To make the process as seamless as possible, we recommend reading this contribution guide first. ---- - -# Contributing to lakeFS - -Thank you for your interest in contributing to our project. Whether it's a bug report, new feature, correction, or additional documentation, we greatly value feedback and contributions from our community. - -Please read through this document before submitting any issues or pull requests to ensure that we have all the necessary information to effectively respond to your bug report or contribution. - -!!! tip "Don't know where to start?" - Reach out on the **#dev** channel on [our Slack](https://lakefs.io/slack) and we will help you get started. We also recommend this [free series](https://app.egghead.io/playlists/how-to-contribute-to-an-open-source-project-on-github){:target="_blank"} about contributing to OSS projects. - - -## Getting Started - -Before you get started, we kindly ask that you: - -* Check out the [code of conduct](https://github.com/treeverse/lakeFS/blob/master/CODE_OF_CONDUCT.md). -* Sign the [lakeFS CLA](https://cla-assistant.io/treeverse/lakeFS) when making your first pull request (individual / corporate) -* Submit any security issues directly to [security@treeverse.io](mailto:security@treeverse.io). -* Contributions should have an associated [GitHub issue](https://github.com/treeverse/lakeFS/issues/). -* Before making major contributions, please reach out to us on the #dev channel on [Slack](https://lakefs.io/slack). - We will make sure no one else is working on the same feature. - -## Setting up an Environment - -*This section was tested on macOS and Linux (Fedora 32, Ubuntu 20.04) - Your mileage may vary* - - -Our [Go release workflow](https://github.com/treeverse/lakeFS/blob/master/.github/workflows/goreleaser.yaml) holds the Go and Node.js versions we currently use under _go-version_ and _node-version_ compatibly. The Java workflows use [Maven 3.8.x](https://github.com/actions/runner-images/blob/bc22983319daa620b2ad01a74b68f6f462d86241/images/linux/Ubuntu2004-Readme.md) (but any recent version of Maven should work). - -1. Install the required dependencies for your OS: - 1. [Git](https://git-scm.com/downloads) - 1. [GNU make](https://www.gnu.org/software/make/) (probably best to install from your OS package manager such as [apt](https://en.wikipedia.org/wiki/APT_(software)) or [brew](https://brew.sh/)) - 1. [Docker](https://docs.docker.com/get-docker/) - 1. [Go](https://golang.org/doc/install) - 1. [Node.js & npm](https://docs.npmjs.com/downloading-and-installing-node-js-and-npm) - 1. Java 8 - * Apple Silicon Mac users can install this from [Azul Zulu Builds for Java JDK](https://www.azul.com/downloads/?version=java-17-lts&package=jdk#zulu) (up to version 17). Builds for Intel-based Macs are available from [java.com](https://www.java.com/en/download/help/mac_install.html). - 1. [Maven](https://maven.apache.org/) - * Required for building and testing Spark client code, as well as the hadoopfs client. - 1. *Optional* - [PostgreSQL 11](https://www.postgresql.org/docs/11/tutorial-install.html) (useful for running and debugging locally) - 1. *Optional* - [Rust & Cargo](https://www.rust-lang.org/tools/install) (useful for building the Rust SDK) - 1. *Optional* - [Buf CLI](https://buf.build/docs/installation) (only needed if you like to update Protocol Buffer files) -1. [Clone](https://github.com/git-guides/git-clone) the [repository from GitHub](https://github.com/treeverse/lakeFS). - - _This gives you read-only access to the repository. To contribute, see the next section._ - -1. Build the project: - ```shell - make build - ``` - - !!! warning - `make build` won't work for Windows users. - -1. Make sure tests are passing. The following should not return any errors: - ```shell - make test - ``` - -## Before creating a pull request - -1. Review this document in full. -1. Make sure there's an open [issue on GitHub](https://github.com/treeverse/lakeFS/issues) that this pull request addresses, and that it isn't labeled `x/wontfix`. -1. [Fork](https://docs.github.com/en/get-started/quickstart/fork-a-repo) the [lakeFS repository](https://github.com/treeverse/lakeFS). -1. If you're adding new functionality, create a new branch named `feature/`. -1. If you're fixing a bug, create a new branch named `fix/-`. - -## Testing your change - -Once you've made the necessary changes to the code, make sure the tests pass: - -Run unit tests: - -```shell -make test -``` - -Check that linting rules are passing. - -```shell -make checks-validator -``` - -!!! note - You will need GNU diff to run this. On the macOS it can be installed with `brew install diffutils` - - -lakeFS uses [go fmt](https://golang.org/cmd/gofmt/) as a style guide for Go code. - -Run system-tests: - -```shell -make system-tests -``` - -!!! info - Want to dive deeper into our system tests infrastructure? Need to debug the tests? Follow [this documentation](https://github.com/treeverse/lakeFS/blob/master/esti/docs/README.md). - - -## Submitting a pull request - -Open a GitHub pull request with your change. The PR description should include a brief explanation of your change. -You should also mention the related GitHub issue. If the issue should be automatically closed after the merge, please [link it to the PR](https://docs.github.com/en/issues/tracking-your-work-with-issues/linking-a-pull-request-to-an-issue#linking-a-pull-request-to-an-issue-using-a-keyword). - -After submitting your pull request, [GitHub Actions](https://github.com/treeverse/lakeFS/actions) will automatically run tests on your changes and make sure that your updated code builds and runs on Go 1.19.x. - -Check back shortly after submitting your pull request to make sure that your code passes these checks. If any of the checks come back with a red X, then do your best to address the errors. - -A developer from our team will review your pull request, and may request some changes to it. After the request is approved, it will be merged to our main branch. - - -## Documentation - -Any contribution to the docs, whether it is in conjunction with a code contribution or as a standalone, is appreciated. - -Documentation of features and changes in behaviour should be included in the pull request. -You can create separate pull requests for documentation changes only. - -To learn how to contribute to the lakeFS documentation see [this page](./docs.md), which also includes details on how to build the documentation locally. - -## CHANGELOG.md - -Any user-facing change should be labeled with `include-changelog`. - -The PR title should contain a concise summary of the feature or fix and the description should have the GitHub issue number. -When we publish a new version of lakeFS, we will add this to the relevant version section of the changelog. -If the change should not be included in the changelog, label it with `exclude-changelog`. - -### User-Facing Changes Examples - -1. UI/UX modifications: Changes to the layout, color scheme, or navigation structure. -1. New features: Adding functionality that users can directly interact with, unless defined as internal. -1. Configuration changes: Updates to settings that users can adjust. -1. Performance improvements: Enhancements that noticeably speed up the application. -1. Bug fixes. -1. Security updates: Changes that address vulnerabilities or privacy concerns. - -### Non-User-Facing Changes: - -1. Code refactoring: Restructuring the codebase without changing its external behavior. -1. Backend optimizations: Improvements to server-side processes that don't noticeably affect performance. -1. Database schema changes: Modifications to the data structure that don't alter the user interface **and** do not require data migration. -1. Development tooling updates: Changes to build processes or development environments. -1. Internal API: Adding/Altering APIs tagged as internal. -1. Documentation updates. -1. Imported libraries: Updates to third-party libraries that don't introduce security updates. diff --git a/docs/src/project/docs.md b/docs/src/project/docs.md deleted file mode 100644 index e44202878d9..00000000000 --- a/docs/src/project/docs.md +++ /dev/null @@ -1,91 +0,0 @@ ---- -title: Documentation -description: How to contribute to the lakeFS Documentation, including style guide ---- - -# lakeFS Documentation - -Any contribution to the docs, whether it is in conjunction with a code contribution or as a standalone, is appreciated. - -Please see [the contributing guide](./contributing.md) for details on contributing to lakeFS in general. - - -!!! warning "Notice" - lakeFS documentation is written using Markdown. Make sure to familiarize yourself with the [Markdown Guide](https://www.markdownguide.org/basic-syntax/#heading-best-practices). - - -## lakeFS Documentation Philosophy - -We are heavily inspired by the [Diátaxis](https://diataxis.fr/) approach to documentation. - -At a very high-level, it defines documentation as falling into one of four categories: - -- How To -- Tutorial -- Reference -- Explanation - -There is a lot more to it than this, and you are encouraged to read the [Diátaxis](https://diataxis.fr/) website for more details. -Its application to lakeFS was discussed in [#6197](https://github.com/treeverse/lakeFS/issues/6197#issuecomment-1645933769) - -## lakeFS Style Guide - -* Don't use unnecessary tech jargon or vague/wordy constructions - keep it friendly, not condescending. -* Be inclusive and welcoming - use gender-neutral words and pronouns when talking about abstract people like users and developers. -* Replace complex expressions with simpler ones. -* Keep it short - 25-30 words max per sentence. Otherwise, your readers might get lost on the way. -* Use active voice instead of passive. For example: This feature can be used to do task X. vs. You can use this feature to do task X. The second one reads much better, right? -* You can explain things better by including examples. Show, not tell. Use illustrations, images, gifs, code snippets, etc. -* Establish a visual hierarchy to help people quickly find the information they need. Use text formatting to create levels of title and subtitle (such as `#` to `######` markdown headings). The title of every page should use the topmost heading `#`; all other headings on the page should use lower headers `##` to `######`. - -## Headings - -The title of the page should be H1 (`#` in markdown). Use headings in descending order and do not skip any. - -## Prerequisites - -Before you can build and serve the docs, make sure you have: - -- **Python 3.13+** installed -- **pip** (Python package installer) - -Then, from the root of the repository, install all documentation-related dependencies: - -```bash -pip install -r docs/requirements-docs.txt -``` - -## Test your changes locally - -If you have the necessary dependencies installed, you can run [mkdocs](https://www.mkdocs.org/) to build and serve the documentation from your machine using the provided Makefile target: - -```sh -make docs-serve -``` - -## Link Checking locally - -When making a pull request to lakeFS that involves a `docs/*` file, a [GitHub action](https://github.com/treeverse/lakeFS/blob/master/.github/workflows/docs-pr.yaml) will automagically check the links. You can also run this link checker manually on your local machine: - -1. Build the site: - - ```bash - mkdocs build - ``` - -2. Check the links: - - ``` - docker run --rm \ - --name lakefs_docs_lychee \ - --volume "$PWD:/data"\ - --volume "/tmp:/output"\ - --tty \ - lycheeverse/lychee:master \ - --exclude-file /data/.lycheeignore \ - --output /output/lychee_report.md \ - --format markdown \ - /data/docs/site - ``` - -3. Review the `lychee_report.md` in your local `/tmp` folder diff --git a/docs/src/project/index.md b/docs/src/project/index.md deleted file mode 100644 index f3be1a8d4cd..00000000000 --- a/docs/src/project/index.md +++ /dev/null @@ -1,50 +0,0 @@ ---- -title: The lakeFS Project -description: lakeFS is an open-source project under the Apache 2.0 license, committed to fostering the open-source space. ---- - -# The lakeFS Project - -lakeFS provides version control over the data lake and lakehouse, and uses Git-like semantics to create and access those versions. If you know git, you’ll be right at home with lakeFS. - -lakeFS is an open-source project under the [Apache 2.0 license](https://www.apache.org/licenses/LICENSE-2.0). - -The project was created and is supported by Treeverse, a commercial company founded by engineers passionate about providing solutions to the evolving world of data engineering. - - -## Our commitment to open source - -lakeFS is an open-source project under the [Apache 2.0 license](https://www.apache.org/licenses/LICENSE-2.0). -The project was created and is supported by Treeverse, a commercial company founded by engineers passionate about providing solutions to the evolving world of data engineering. - -***Why did we choose to open the source of our core capabilities?*** - -We believe in the bottom-up adoption of technologies. -We believe collaborative communities have the power to bring the best solutions to the community. -We believe that every engineer should be able to use, contribute to, and influence cutting edge technologies, so they can innovate in their domain. - -***What is our commitment to open source?*** - -We created lakeFS, our open-source project, to provide a Git-like interface on top of object stores - so that you can fully take advantage of with any data application at any scale. - -For that reason, we commit that the following capabilities are *and will remain* open-source as part of lakeFS: - -- All versioning capabilities, -- Git-Like interface for the versioning operations, -- Support for public object store APIs, -- Integrations with publicly available applications accessing an object store, -- CLI, API, and GUI interfaces. - -We also commit to keeping lakeFS scalable in throughput and performance. - -We are deeply committed to our [community of engineers](https://lakefs.io/community) who use and contribute to the project. We are and will continue to be highly responsive and shape lakeFS together to provide the data versioning capabilities we are all looking for. - -***What is lakeFS Cloud?*** - -Treeverse offers lakeFS Cloud, which provides all the same benefits of the Git-like interface on top of object stores as a fully-managed service. - -The vision behind lakeFS Cloud is to provide a managed data versioning and management solution for data practitioners. lakeFS Cloud will leverage the lakeFS open-source technology, integrate capabilities and unique features, and lead its users to implement best practices. - -As part of our commitment to the open source values of transparency and interoperability, we believe everyone should be able to enjoy these benefits, regardless of whether or not they choose to use the managed offering. - -Because of that, we will not intentionally make it harder to build these features independently on top of the open source solution. diff --git a/docs/src/quickstart/actions-and-hooks.md b/docs/src/quickstart/actions-and-hooks.md deleted file mode 100644 index 1772926dc97..00000000000 --- a/docs/src/quickstart/actions-and-hooks.md +++ /dev/null @@ -1,166 +0,0 @@ ---- -title: 6️⃣ Using Actions and Hooks in lakeFS -description: lakeFS quickstart / Use Actions and Hooks to enforce conditions when committing and merging changes ---- - -# Actions and Hooks in lakeFS - -When we interact with lakeFS it can be useful to have certain checks performed at stages along the way. Let's see how [actions in lakeFS](../howto/hooks/index.md) can be of benefit here. - -We're going to enforce a rule that when a commit is made to any branch that begins with `etl`: - -* the commit message must not be blank -* there must be `job_name` and `version` metadata -* the `version` must be numeric - -To do this we'll create an _action_. In lakeFS, an action specifies one or more events that will trigger it, and references one or more _hooks_ to run when triggered. Actions are YAML files written to lakeFS under the `_lakefs_actions/` folder of the lakeFS repository. - -_Hooks_ can be either a [Lua](../howto/hooks/lua.md) script that lakeFS will execute itself, an external [web hook](../howto/hooks/webhooks.md), or an [Airflow DAG](../howto/hooks/airflow.md). In this example, we're using a Lua hook. - -## Configuring the Action - -1. In lakeFS create a new branch called `add_action`. You can do this through the UI or with `lakectl`: - ```bash - lakectl branch create lakefs://quickstart/add_action --source lakefs://quickstart/main - ``` -2. Open up your favorite text editor (or emacs), and paste the following YAML: - ```yaml - name: Check Commit Message and Metadata - on: - pre-commit: - branches: - - etl** - hooks: - - id: check_metadata - type: lua - properties: - script: | - commit_message=action.commit.message - if commit_message and #commit_message>0 then - print("✅ The commit message exists and is not empty: " .. commit_message) - else - error("\n\n❌ A commit message must be provided") - end - - job_name=action.commit.metadata["job_name"] - if job_name == nil then - error("\n❌ Commit metadata must include job_name") - else - print("✅ Commit metadata includes job_name: " .. job_name) - end - - version=action.commit.metadata["version"] - if version == nil then - error("\n❌ Commit metadata must include version") - else - print("✅ Commit metadata includes version: " .. version) - if tonumber(version) then - print("✅ Commit metadata version is numeric") - else - error("\n❌ Version metadata must be numeric: " .. version) - end - end - ``` -3. Save this file as `/tmp/check_commit_metadata.yml` - - * You can save it elsewhere, but make sure you change the path below when uploading - -4. Upload the `check_commit_metadata.yml` file to the `add_action` branch under `_lakefs_actions/`. As above, you can use the UI (make sure you select the correct branch when you do), or with `lakectl`: - - ```bash - lakectl fs upload lakefs://quickstart/add_action/_lakefs_actions/check_commit_metadata.yml --source /tmp/check_commit_metadata.yml - ``` - -5. Go to the **Uncommitted Changes** tab in the UI, and make sure that you see the new file in the path shown: - - lakeFS Uncommitted Changes view showing a file called `check_commit_metadata.yml` under the path `_lakefs_actions/` - - Click **Commit Changes** and enter a suitable message to commit this new file to the branch. - -6. Now we'll merge this new branch into `main`. From the **Compare** tab in the UI compare the `main` branch with `add_action` and click **Merge** - - lakeFS Compare view showing the difference between `main` and `add_action` branches - - -## Testing the Action - -!!! info "Let's remind ourselves what the rules are that the action is going to enforce." - When a commit is made to any branch that begins with `etl`: - - * the commit message must not be blank - * there must be `job_name` and `version` metadata - * the `version` must be numeric - -We'll start by creating a branch that's going to match the `etl` pattern, and then go ahead and commit a change and see how the action works. - -1. Create a new branch (see above instructions on how to do this if necessary) called `etl_20230504`. Make sure you use `main` as the source branch. - - In your new branch you should see the action that you created and merged above: - - lakeFS branch etl_20230504 with object /_lakefs_actions/check_commit_metadata.yml - -1. To simulate an ETL job we'll use the built-in DuckDB editor to run some SQL and write the result back to the lakeFS branch. - - Open the `lakes.parquet` file on the `etl_20230504` branch from the **Objects** tab. Replace the SQL statement with the following: - - ```sql - COPY ( - WITH src AS ( - SELECT lake_name, country, depth_m, - RANK() OVER ( ORDER BY depth_m DESC) AS lake_rank - FROM READ_PARQUET('lakefs://quickstart/etl_20230504/lakes.parquet')) - SELECT * FROM SRC WHERE lake_rank <= 10 - ) TO 'lakefs://quickstart/etl_20230504/top10_lakes.parquet' - ``` - -1. Head to the **Uncommitted Changes** tab in the UI and notice that there is now a file called `top10_lakes.parquet` waiting to be committed. - - lakeFS branch etl_20230504 with uncommitted file top10_lakes.parquet - - Now we're ready to start trying out the commit rules, and seeing what happens if we violate them. - -1. Click on **Commit Changes**, leave the _Commit message_ blank, and click **Commit Changes** to confirm. - - Note that the commit fails because the hook did not succeed - - `pre-commit hook aborted` - - with the output from the hook's code displayed - - `❌ A commit message must be provided` - - lakeFS blocking an attempt to commit with no commit message - -1. Do the same as the previous step, but provide a message this time: - - A commit to lakeFS with commit message in place - - The commit still fails as we need to include metadata too, which is what the error tells us - - `❌ Commit metadata must include job_name` - -1. Repeat the **Commit Changes** dialog and use the **Add Metadata field** to add the required metadata: - - A commit to lakeFS with commit message and metadata in place - - We're almost there, but this still fails (as it should), since the version is not entirely numeric but includes `v` and `ß`: - - `❌ Version metadata must be numeric: v1.00ß` - - Repeat the commit attempt specify the version as `1.00` this time, and rejoice as the commit succeeds - - Commit history in lakeFS showing that the commit met the rules set by the action and completed successfully. - ---- - -You can view the history of all action runs from the **Action** tab: - -Action run history in lakeFS - - - ---- - -[← Rollback the changes](rollback.md){ .md-button } [Work with lakeFS data on your local environment →](work-with-data-locally.md){ .md-button .md-button--primary } - ---- diff --git a/docs/src/quickstart/branch.md b/docs/src/quickstart/branch.md deleted file mode 100644 index d09b19c3a1c..00000000000 --- a/docs/src/quickstart/branch.md +++ /dev/null @@ -1,136 +0,0 @@ ---- -title: 3️⃣ Create a branch -description: lakeFS quickstart / Create a branch in lakeFS without copying data on disk, make a change to the branch, see that the original version of the data is unchanged. ---- - -# Create a Branch - -lakeFS uses branches in a similar way to Git. It's a great way to isolate changes until, or if, we are ready to re-integrate them. lakeFS uses a zero-copy branching technique which means that it's very efficient to create branches of your data. - -Having seen the lakes data in the previous step we're now going to create a new dataset to hold data only for lakes in Denmark. Why? Well, because :) - -The first thing we'll do is create a branch for us to do this development against. We'll use the `lakectl` tool to create the branch, which we first need to configure with our credentials. In a new terminal window run the following: - -```bash -lakectl config -``` -!!! tip - If for some reason you get a command not found error, you can call lakectl by using `python -m lakectl` instead. - - -Follow the prompts to enter the credentials that you got in the first step. Leave the **Server endpoint URL** as `http://127.0.0.1:8000`. - -Now that lakectl is configured, we can use it to create the branch. Run the following: - -```bash -lakectl branch create lakefs://quickstart/denmark-lakes --source lakefs://quickstart/main -``` - -You should get a confirmation message like this: - -```text -Source ref: lakefs://quickstart/main -created branch 'denmark-lakes' 3384cd7cdc4a2cd5eb6249b52f0a709b49081668bb1574ce8f1ef2d956646816 -``` - -## Transforming the Data - -Now we'll make a change to the data. lakeFS has several native clients, as well as an [S3-compatible endpoint](https://community.lakefs.io/understand/architecture.html#s3-gateway). This means that anything that can use S3 will work with lakeFS. Pretty neat. - -We're going to use DuckDB which is embedded within the web interface of lakeFS. - -From the lakeFS **Objects** page select the `lakes.parquet` file to open the DuckDB editor: - -The lakeFS object viewer with embedded DuckDB to query parquet files. A query has run automagically to preview the contents of the selected parquet file. - -To start with, we'll load the lakes data into a DuckDB table so that we can manipulate it. Replace the previous text in the DuckDB editor with this: - -```sql -CREATE OR REPLACE TABLE lakes AS - SELECT * FROM READ_PARQUET('lakefs://quickstart/denmark-lakes/lakes.parquet'); -``` - -You'll see a row count of 100,000 to confirm that the DuckDB table has been created. - -Just to check that it's the same data that we saw before we'll run the same query. Note that we are querying a DuckDB table (`lakes`), rather than using a function to query a parquet file directly. - -```sql -SELECT country, COUNT(*) -FROM lakes -GROUP BY country -ORDER BY COUNT(*) -DESC LIMIT 5; -``` - -The DuckDB editor pane querying the lakes table - -### Making a Change to the Data - -Now we can change our table, which was loaded from the original `lakes.parquet`, to remove all rows not for Denmark: - -```sql -DELETE FROM lakes WHERE Country != 'Denmark'; -``` - -The DuckDB editor pane deleting rows from the lakes table - -We can verify that it's worked by reissuing the same query as before: - -```sql -SELECT country, COUNT(*) -FROM lakes -GROUP BY country -ORDER BY COUNT(*) -DESC LIMIT 5; -``` - -The DuckDB editor pane querying the lakes table showing only rows for Denmark remain - -## Write the Data back to lakeFS - -The changes so far have only been to DuckDB's copy of the data. Let's now push it back to lakeFS. Note the path is different this time as we're writing it to the `denmark-lakes` branch, not `main`: - -```sql -COPY lakes TO 'lakefs://quickstart/denmark-lakes/lakes.parquet'; -``` - -The DuckDB editor pane writing data back to the denmark-lakes branch - -## Verify that the Data's Changed on the Branch - -Let's just confirm for ourselves that the parquet file itself has the new data. We'll drop the `lakes` table just to be sure, and then query the parquet file directly: - -```sql -DROP TABLE lakes; - -SELECT country, COUNT(*) -FROM READ_PARQUET('lakefs://quickstart/denmark-lakes/lakes.parquet') -GROUP BY country -ORDER BY COUNT(*) -DESC LIMIT 5; -``` - -The DuckDB editor pane show the parquet file on denmark-lakes branch has been changed - - -## What about the data in `main`? - -So we've changed the data in our `denmark-lakes` branch, deleting swathes of the dataset. What's this done to our original data in the `main` branch? Absolutely nothing! See for yourself by running the same query as above, but against the `main` branch: - -```sql -SELECT country, COUNT(*) -FROM READ_PARQUET('lakefs://quickstart/main/lakes.parquet') -GROUP BY country -ORDER BY COUNT(*) -DESC LIMIT 5; -``` -The lakeFS object browser showing DuckDB querying lakes.parquet on the main branch. The results are the same as they were before we made the changes to the denmark-lakes branch, which is as expected. - -In the next step we'll see how to commit our changes and merge our branch back into main. - - ---- - -[← Query the pre-populated data](query.md){ .md-button } [Merge the branch back into main →](commit-and-merge.md){ .md-button .md-button--primary } - ---- \ No newline at end of file diff --git a/docs/src/quickstart/commit-and-merge.md b/docs/src/quickstart/commit-and-merge.md deleted file mode 100644 index 5551c1ae3b2..00000000000 --- a/docs/src/quickstart/commit-and-merge.md +++ /dev/null @@ -1,52 +0,0 @@ ---- -title: 4️⃣ Commit and Merge -description: lakeFS quickstart / Commit the change and merge it back into the main branch ---- - -# Committing Changes in lakeFS - -!!! info - In the previous step we branched our data from `main` into a new `denmark-lakes` branch, and overwrote the `lakes.parquet` to hold solely information about lakes in Denmark. Now we're going to commit that change (just like Git) and merge it back to main (just like git). - -Having make the change to the datafile in the `denmark-lakes` branch, we now want to commit it. There are various options for interacting with the lakeFS API, including the web interface, [a Python client](https://pydocs.lakefs.io/), and `lakectl` which is what we'll use here. Run the following from a terminal window: - -```bash -lakectl commit lakefs://quickstart/denmark-lakes -m "Create a dataset of just the lakes in Denmark" -``` - -You will get confirmation of the commit including its hash. -``` -Branch: lakefs://quickstart/denmark-lakes -Commit for branch "denmark-lakes" completed. - -ID: ba6d71d0965fa5d97f309a17ce08ad006c0dde15f99c5ea0904d3ad3e765bd74 -Message: Create a dataset of just the lakes in Denmark -Timestamp: 2023-03-15 08:09:36 +0000 UTC -Parents: 3384cd7cdc4a2cd5eb6249b52f0a709b49081668bb1574ce8f1ef2d956646816 -``` - -With our change committed, it's now time to merge it to back to the `main` branch. - -# Merging Branches in lakeFS 🔀 - -As above, we'll use `lakectl` to do this too. The syntax just requires us to specify the source and target of the merge. Run this from a terminal window. - -```bash -lakectl merge lakefs://quickstart/denmark-lakes lakefs://quickstart/main -``` - -We can confirm that this has worked by returning to the same object view of `lakes.parquet` as before and clicking on **Execute** to rerun the same query. You'll see that the country row counts have changed, and only Denmark is left in the data: - -The lakeFS object browser with a DuckDB query on lakes.parquet showing that there is only data for Denmark. - -**But…oh no!** A slow chill creeps down your spine, and the bottom drops out of your stomach. What have you done! 😱 *You were supposed to create **a separate file** of Denmark's lakes - not replace the original one* - -Is all lost? Will our hero overcome the obstacles? No, and yes respectively! - -Have no fear; lakeFS can revert changes. Tune in for the final part of the quickstart to see how. - ---- - -[← Create a branch of the data](branch.md){ .md-button } [Rollback the changes →](rollback.md){ .md-button .md-button--primary } - ---- \ No newline at end of file diff --git a/docs/src/quickstart/index.md b/docs/src/quickstart/index.md deleted file mode 100644 index 96825726ecf..00000000000 --- a/docs/src/quickstart/index.md +++ /dev/null @@ -1,22 +0,0 @@ ---- -title: ⭐ Quickstart -description: A hands-on quickstart for lakeFS that introduces key concepts including branching, merging, and rollback. -next: ["Launch the quickstart environment", "./launch.md.html"] ---- - -# lakeFS Quickstart - -**Welcome to lakeFS!** - -!!! tip - You can use the [free trial of lakeFS Cloud](https://lakefs.io/cloud-registration) if you want to try out lakeFS without installing anything. - -lakeFS provides a "Git for data" platform enabling you to implement best practices from software engineering on your data lake, including branching and merging, CI/CD, and production-like dev/test environments. - -This quickstart will introduce you to some of the core ideas in lakeFS and show what you can do by illustrating the concept of branching, merging, and rolling back changes to data. It's laid out in five short sections: - -[Start Here 👉](./launch.md){ .md-button } - ---- - - diff --git a/docs/src/quickstart/launch.md b/docs/src/quickstart/launch.md deleted file mode 100644 index ece056f0613..00000000000 --- a/docs/src/quickstart/launch.md +++ /dev/null @@ -1,51 +0,0 @@ ---- -title: 1️⃣ Run lakeFS -description: lakeFS quickstart / Run lakeFS locally pre-populated with a sample repository ---- - -# Spin up the environment - -!!! tip - If you don't want to install lakeFS locally, you can use the [free trial of lakeFS Cloud](https://lakefs.io/cloud-registration). Once you launch the free trial you will have access to the same content as this quickstart within the provided repository once you login. - -install and launch lakeFS: - -```bash -pip install lakefs -python -m lakefs.quickstart -``` - -After a few moments you should see the lakeFS container ready to use: - -```text -│ -│ lakeFS running in quickstart mode. -│ Login at http://127.0.0.1:8000/ -│ -│ Access Key ID : AKIAIOSFOLQUICKSTART -│ Secret Access Key: wJalrXUtnFEMI/K7MDENG/bPxRfiCYEXAMPLEKEY -│ -``` - -You're now ready to dive into lakeFS! - -1. Open lakeFS's web interface at [http://127.0.0.1:8000/](http://127.0.0.1:8000/) - -2. Login with the quickstart credentials. - - * Access Key ID: `AKIAIOSFOLQUICKSTART` - * Secret Access Key: `wJalrXUtnFEMI/K7MDENG/bPxRfiCYEXAMPLEKEY` - -3. You'll notice that there aren't any repositories created yet. Click the **Create Sample Repository** button. - -Empty lakeFS Repository list - -You will see the sample repository created and the quickstart guide within it. You can follow along there, or here - it's the same :) - -The quickstart sample repo in lakeFS - ---- - -[← Quickstart introduction](index.md){ .md-button } [Query the pre-populated data →](query.md){ .md-button .md-button--primary } - ---- diff --git a/docs/src/quickstart/learning-more-lakefs.md b/docs/src/quickstart/learning-more-lakefs.md deleted file mode 100644 index ec7d6087098..00000000000 --- a/docs/src/quickstart/learning-more-lakefs.md +++ /dev/null @@ -1,111 +0,0 @@ ---- -title: Learn more about lakeFS -description: Learn more about lakeFS here with links to resources including quickstart, samples, installation guides, and more. ---- - -# Learn more about lakeFS - -The [lakeFS quickstart](index.md) is just the beginning of your lakeFS journey 🛣️ - -Here are some more resources to help you find out more about lakeFS. - -## Connecting lakeFS to your own object storage - -Enjoyed the quickstart and want to try out lakeFS against your own data? Here's how to run lakeFS locally, connecting to an object store. - -!!! note - Make sure the Quickstart server from the previous steps isn't also running as you'll get a port conflict. - -=== "AWS S3" - - ```bash - export LAKEFS_BLOCKSTORE_TYPE="s3" - export AWS_ACCESS_KEY_ID="YourAccessKeyValue" - export AWS_SECRET_ACCESS_KEY="YourSecretKeyValue" - lakefs run --local-settings - ``` - -=== "Azure Blob Storage" - - ```bash - export LAKEFS_BLOCKSTORE_TYPE="azure" - export LAKEFS_BLOCKSTORE_AZURE_STORAGE_ACCOUNT="YourAzureStorageAccountName" - export LAKEFS_BLOCKSTORE_AZURE_STORAGE_ACCESS_KEY="YourAzureStorageAccessKey" - lakefs run --local-settings - ``` - -=== "Google Cloud Storage" - - ```bash - export LAKEFS_BLOCKSTORE_TYPE="gs" - export LAKEFS_BLOCKSTORE_GS_CREDENTIALS_JSON="YourGoogleServiceAccountKeyJSON" - lakefs run --local-settings - ``` - where you will replace ```YourGoogleServiceAccountKeyJSON``` with JSON string that contains your Google service account key. - - If you want to use the JSON file that contains your Google service account key instead of JSON string (as in the previous command) then go to the directory where JSON file is stored and run the command with local parameters: - - ```bash - export LAKEFS_BLOCKSTORE_TYPE="gs" - export LAKEFS_BLOCKSTORE_GS_CREDENTIALS_FILE="/myfiles/YourGoogleServiceAccountKey.json" - lakefs run --local-settings - ``` - - This command will mount your present working directory (PWD) within the container and will read the JSON file from your PWD. - -=== "MinIO" - To use lakeFS with MinIO (or other S3-compatible object storage), use the following example: - - ```bash - export LAKEFS_BLOCKSTORE_TYPE="s3" - export LAKEFS_BLOCKSTORE_S3_FORCE_PATH_STYLE="true" - export LAKEFS_BLOCKSTORE_S3_ENDPOINT="http://" - export LAKEFS_BLOCKSTORE_S3_DISCOVER_BUCKET_REGION="false" - export LAKEFS_BLOCKSTORE_S3_CREDENTIALS_ACCESS_KEY_ID="" - export LAKEFS_BLOCKSTORE_S3_CREDENTIALS_SECRET_ACCESS_KEY="" - lakefs run --local-settings - ``` - -## Deploying lakeFS - -Ready to do this thing for real? The deployment guides show you how to deploy lakeFS [locally](../howto/deploy/onprem.md) (including on [Kubernetes][onprem-k8s]) or on [AWS](../howto/deploy/aws.md), [Azure](../howto/deploy/azure.md), or [GCP](../howto/deploy/gcp.md). - -Alternatively you might want to have a look at [lakeFS Cloud](https://lakefs.cloud/) which provides a fully-managed, SOC-2 compliant, lakeFS service. - -## lakeFS Samples - -The [lakeFS Samples](https://github.com/treeverse/lakeFS-samples) GitHub repository includes some excellent examples including: - -* How to implement multi-table transaction on multiple Delta Tables -* Notebooks to show integration of lakeFS with Spark, Python, Delta Lake, Airflow and Hooks. -* Examples of using lakeFS webhooks to run automated data quality checks on different branches. -* Using lakeFS branching features to create dev/test data environments for ETL testing and experimentation. -* Reproducing ML experiments with certainty using lakeFS tags. - -## lakeFS Community - -The lakeFS community is important to us. Our **guiding principles** are: - -* Fully open, in code and conversation -* We learn and grow together -* Compassion and respect in every interaction - -We'd love for you to join [our **Slack group**](https://lakefs.io/slack) and come and introduce yourself on `#announcements-and-more`. Or just lurk and soak up the vibes 😎 - -If you're interested in getting involved in the development of lakeFS, head over our [the **GitHub repo**](https://github.com/treeverse/lakeFS) to look at the code and peruse the issues. The comprehensive [contributing](../project/contributing.md) document should have you covered on next steps but if you've any questions the `#dev` channel on [Slack](https://lakefs.io/slack) will be delighted to help. - -We love speaking at meetups and chatting to community members at them - you can find a list of these [here](https://lakefs.io/community/). - -Finally, make sure to drop by to say hi on [Twitter](https://twitter.com/lakeFS) or [LinkedIn](https://www.linkedin.com/company/treeverse/) 👋🏻 - -## lakeFS Concepts and Internals - -We describe lakeFS as "_Git for data_" but what does that actually mean? Have a look at the [concepts](../understand/model.md) and [architecture](../understand/architecture.md) guides, as well as the explanation of [how merges are handled](../understand/how/merge.md). To go deeper you might be interested in [the internals of versioning](../understand/how/versioning-internals.md) and our [internal database structure](../understand/how/kv.md). - -[onprem-k8s]: ../howto/deploy/onprem.md#kubernetes - ---- - -[← Work with lakeFS data on your local environment](work-with-data-locally.md){ .md-button } - ---- diff --git a/docs/src/quickstart/query.md b/docs/src/quickstart/query.md deleted file mode 100644 index ec02c80c635..00000000000 --- a/docs/src/quickstart/query.md +++ /dev/null @@ -1,40 +0,0 @@ ---- -title: 2️⃣ Query the data -description: lakeFS quickstart / Query the pre-populated data using DuckDB browser that's built into lakeFS ---- - -# Let's Query Something - -The lakeFS server has been loaded with a sample parquet datafile. Fittingly enough for a piece of software to help users of data lakes, the `lakes.parquet` file holds data about lakes around the world. - -You'll notice that the branch is set to `main`. This is conceptually the same as your main branch in Git against which you develop software code. - -The lakeFS objects list with a highlight to indicate that the branch is set to main. - -Let's have a look at the data, ahead of making some changes to it on a branch in the following steps. - -Click on `lakes.parquet` and notice that the built-it DuckDB runs a query to show a preview of the file's contents. - -The lakeFS object viewer with embedded DuckDB to query parquet files. A query has run automagically to preview the contents of the selected parquet file. - -Now we'll run our own query on it to look at the top five countries represented in the data. - -Copy and paste the following SQL statement into the DuckDB query panel and click on Execute. - -```sql -SELECT country, COUNT(*) -FROM READ_PARQUET('lakefs://quickstart/main/lakes.parquet') -GROUP BY country -ORDER BY COUNT(*) -DESC LIMIT 5; -``` - -An embedded DuckDB query showing a count of rows per country in the dataset. - -Next we're going to make some changes to the data—but on a development branch so that the data in the main branch remains untouched. - ---- - -[← Launch the quickstart environment](launch.md){ .md-button } [Create a branch of the data →](branch.md){ .md-button .md-button--primary } - ---- diff --git a/docs/src/quickstart/rollback.md b/docs/src/quickstart/rollback.md deleted file mode 100644 index 5d17be061c0..00000000000 --- a/docs/src/quickstart/rollback.md +++ /dev/null @@ -1,30 +0,0 @@ ---- -title: 5️⃣ Roll back Changes -description: lakeFS quickstart / Rollback the changes made to show how lakeFS can be used to revert changes made in error. ---- - -# Rolling back Changes in lakeFS - -Our intrepid user (you) merged a change back into the `main` branch and realised that they had made a mistake 🤦🏻. - -The good news for them (you) is that lakeFS can revert changes made, similar to how you would in Git 😅. - -From your terminal window run `lakectl` with the `revert` command: - -```bash -lakectl branch revert lakefs://quickstart/main main --parent-number 1 --yes -``` -You should see a confirmation of a successful rollback: -``` -Branch: lakefs://quickstart/main -commit main successfully reverted -``` - -Back in the object page and the DuckDB query we can see that the original file is now back to how it was: -The lakeFS object viewer with DuckDB query showing that the lakes dataset on main branch has been successfully returned to state prior to the merge. - ---- - -[← Merge the branch back into main](commit-and-merge.md){ .md-button } [Using Actions and Hooks in lakeFS →](actions-and-hooks.md){ .md-button .md-button--primary } - ---- diff --git a/docs/src/quickstart/work-with-data-locally.md b/docs/src/quickstart/work-with-data-locally.md deleted file mode 100644 index ac1ab7d7e8e..00000000000 --- a/docs/src/quickstart/work-with-data-locally.md +++ /dev/null @@ -1,166 +0,0 @@ ---- -title: 7️⃣ Work with lakeFS data locally -description: lakeFS quickstart / Bring lakeFS data to a local environment to show how lakeFS can be used for ML experiments development. ---- - -# Work with lakeFS Data Locally - -When working with lakeFS, there are scenarios where we need to access and manipulate data locally. An example use case for working -locally is machine learning model development. Machine learning model development is dynamic and iterative. To optimize this -process, experiments need to be conducted with speed, tracking ease, and reproducibility. Localizing model data during development -accelerates the process by enabling interactive and offline development and reducing data access latency. - -lakeFS provides 2 ways to expose versioned data locally - -## lakeFS Mount - -!!! info - lakeFS Mount is available for [lakeFS Enterprise](../enterprise/index.md) and [lakeFS Cloud](../cloud/index.md) customers. You can try it out by [signing up](https://info.lakefs.io/thanks-lakefs-mounts) - - - - -### Getting started with lakeFS Mount - -Prerequisites: - -- A working lakeFS Server running either lakeFS Enterprise or lakeFS Cloud -- You’ve installed the lakectl command line utility: this is the official lakeFS command line interface, on top of which lakeFS Mount is built. -- lakectl is configured properly to access your lakeFS server as detailed in the configuration instructions - -### Mounting a path to a local directory: - -1. In lakeFS create a new branch called `my-experiment`. You can do this through the UI or with `lakectl`: - - ```bash - lakectl branch create \ - lakefs://quickstart/my-experiment \ - --source lakefs://quickstart/main - ``` - -2. Mount images from your quickstart repository into a local directory named `my_local_dir` - - ```bash - everest mount lakefs://quickstart/my-experiment/images my_local_dir - ``` - - Once complete, `my_local_dir` should be mounted with the specified path. - -3. Verify that `my_local_dir` is linked to the correct path in your lakeFS remote: - ```bash - ls -l my_local_dir - ``` -4. To unmount the directory, simply run: - - ```bash - everest umount ./my_local_dir - ``` - - Which will unmount the path and terminate the local mount-server. - - -## lakectl local - -Alternatively, we can use [lakectl local](../howto/local-checkouts.md#sync-a-local-directory-with-lakefs) to bring a subset of our lakeFS data to a local directory within the lakeFS -container and edit an image dataset used for ML model development. Unlike lakeFS Mount, using `lakectl local` requires copying data to/from lakeFS and your local machine. - - - -Reference Guide: [lakeFS lakectl local for machine learning](https://lakefs.io/blog/guide-lakectl-local-machine-learning/) - -### Cloning a Subset of lakeFS Data into a Local Directory - -1. In lakeFS create a new branch called `my-experiment`. You can do this through the UI or with `lakectl`: - ```bash - lakectl branch create lakefs://quickstart/my-experiment --source lakefs://quickstart/main - ``` -2. Clone images from your quickstart repository into a local directory named `my_local_dir` within your container: - ```bash - lakectl local clone lakefs://quickstart/my-experiment/images my_local_dir - ``` -3. Verify that `my_local_dir` is linked to the correct path in your lakeFS remote: - ```bash - lakectl local list - ``` - You should see confirmation that my_local_dir is tracking the desired lakeFS path.: - ```bash - my_local_dir lakefs://quickstart/my-experiment/images/8614575b5488b47a094163bd17a12ed0b82e0bcbfd22ed1856151c671f1faa53 - ``` -4. Verify that your local environment is up-to-date with its remote path: - - ```bash - lakectl local status my_local_dir - ``` - - You should get a confirmation message like this showing that there is no difference between your local environment and the lakeFS remote: - - ```text - diff 'local:///home/lakefs/my_local_dir' <--> 'lakefs://quickstart/8614575b5488b47a094163bd17a12ed0b82e0bcbfd22ed1856151c671f1faa53/images/'... - diff 'lakefs://quickstart/8614575b5488b47a094163bd17a12ed0b82e0bcbfd22ed1856151c671f1faa53/images/' <--> 'lakefs://quickstart/my-experiment/images/'... - - No diff found. - ``` - -### Making Changes to Data Locally - -1. Clean the dataset by removing images larger than 225 KB: - ```bash - find my_local_dir -type f -size +225k -delete - ``` -2. Check the status of your local changes compared to the lakeFS remote path: - ```bash - lakectl local status my_local_dir - ``` - - You should get a confirmation message like this, showing the modifications you made locally: - ```bash - diff 'local:///home/lakefs/my_local_dir' <--> 'lakefs://quickstart/8614575b5488b47a094163bd17a12ed0b82e0bcbfd22ed1856151c671f1faa53/images/'... - diff 'lakefs://quickstart/8614575b5488b47a094163bd17a12ed0b82e0bcbfd22ed1856151c671f1faa53/images/' <--> 'lakefs://quickstart/my-experiment/images/'... - - ╔════════╦══════════╦═════════════════════╗ - ║ SOURCE ║ CHANGE ║ PATH ║ - ╠════════╬══════════╬═════════════════════╣ - ║ local ║ modified ║ axolotl.png ║ - ║ local ║ removed ║ duckdb-main-02.png ║ - ║ local ║ removed ║ empty-repo-list.png ║ - ║ local ║ removed ║ repo-contents.png ║ - ╚════════╩══════════╩═════════════════════╝ - ``` - -### Pushing Local Changes to lakeFS - - -Once we are done with editing the image dataset in our local environment, we will push our changes to the lakeFS remote so that -the improved dataset is shared and versioned. - -1. Commit your local changes to lakeFS: - - ```bash - lakectl local commit -m 'Deleted images larger than 225KB in size and changed the Axolotl image' my_local_dir - ``` - - In your branch, you should see the commit including your local changes: - - A lakectl local commit to lakeFS - -2. Compare `my-experiment` branch to the `main` branch to visualize your changes: - - A comparison between a branch that includes local changes to the main branch - - - -!!! example "Bonus Challenge" - And so with that, this quickstart for lakeFS draws to a close. If you're simply having _too much fun_ to stop then here's an exercise for you. - - Implement the requirement from the beginning of this quickstart *correctly*, such that you write `denmark-lakes.parquet` in the respective branch and successfully merge it back into main. Look up how to list the contents of the `main` branch and verify that it looks like this: - - ```text - object 2023-03-21 17:33:51 +0000 UTC 20.9 kB denmark-lakes.parquet - object 2023-03-21 14:45:38 +0000 UTC 916.4 kB lakes.parquet - ``` - ---- - -[← Using Actions and Hooks in lakeFS](actions-and-hooks.md){ .md-button } [Learn more about lakeFS →](learning-more-lakefs.md){ .md-button .md-button--primary } - ---- diff --git a/docs/src/reference/api.md b/docs/src/reference/api.md deleted file mode 100644 index 6cef67afe90..00000000000 --- a/docs/src/reference/api.md +++ /dev/null @@ -1,8 +0,0 @@ ---- -title: lakeFS API -description: This section includes the reference documentation for the lakeFS platform's various APIs. -hide: - toc: true ---- - -!!swagger ../../../api/swagger.yml!! diff --git a/docs/src/reference/auditing.md b/docs/src/reference/auditing.md deleted file mode 100644 index ce8976a3c9f..00000000000 --- a/docs/src/reference/auditing.md +++ /dev/null @@ -1,318 +0,0 @@ ---- -title: Auditing -description: Audit logs track events and activities in lakeFS, capturing who accessed the system, what actions were taken, and when they occurred. Available for both lakeFS Cloud and lakeFS Enterprise. -status: enterprise ---- - -# Auditing - -!!! info - This feature is available on **lakeFS Cloud** and **lakeFS Enterprise** - -The lakeFS audit log allows you to view all relevant user action information in a clear and organized table, including when the action was performed, by whom, and what it was they did. - -This can be useful for several purposes, including: - -1. **Compliance** - Audit logs can be used to show what data users accessed, as well as any changes they made to user management. - -2. **Troubleshooting** - If something changes on your underlying object store that you weren't expecting, such as a big file suddenly breaking into thousands of smaller files, you can use the audit log to find out what action led to this change. - -## Setting up access to Audit Logs on AWS S3 - -The access to the Audit Logs is done via [AWS S3 Access Point](https://aws.amazon.com/s3/features/access-points/). - -There are different ways to interact with an access point (see [Using access points in AWS](https://docs.aws.amazon.com/AmazonS3/latest/userguide/using-access-points.html)). - -The initial setup: - -1. Take note of the IAM Role ARN that will be used to access the data. This should be the user or role used by e.g. Athena. -1. [Reach out to customer success](mailto:support@treeverse.io?subject=ARN to use for audit logs) and provide this ARN. Once receiving the ARN role, an access point will be created and you should get in response the following details: - 1. S3 Bucket (e.g. `arn:aws:s3:::lakefs-audit-logs-us-east-1-production`) - 2. S3 URI to an access point (e.g. `s3://arn:aws:s3:us-east-1::accesspoint/lakefs-logs-`) - 3. Access Point alias. You can use this alias instead of the bucket name or Access Point ARN to access data through the Access Point. (e.g. `lakefs-logs--s3alias`) - 3. Update your IAM Role policy and trust policy if required - -A minimal example for IAM policy with 2 lakeFS installations in 2 regions (`us-east-1`, `us-west-2`): - -```json -{ - "Version": "2012-10-17", - "Statement": [ - { - "Effect": "Allow", - "Action": [ - "s3:ListBucket" - ], - "Resource": [ - "arn:aws:s3:::lakefs-audit-logs-us-east-1-production", - "arn:aws:s3:::lakefs-audit-logs-us-east-1-production/*", - "arn:aws:s3:::lakefs-logs--s3alias/*", - "arn:aws:s3:us-east-1::accesspoint/lakefs-logs-", - "arn:aws:s3:us-east-1::accesspoint/lakefs-logs-/*" - ], - "Condition": { - "StringLike": { - "s3:prefix": [ - "etl/v1/data/region=/organization=org-/*", - "etl/v1/data/region=/organization=org-/*" - ] - } - } - }, - { - "Effect": "Allow", - "Action": [ - "s3:GetObject", - "s3:GetObjectVersion" - ], - "Resource": [ - "arn:aws:s3:::lakefs-audit-logs-us-east-1-production", - "arn:aws:s3:::lakefs-audit-logs-us-east-1-production/etl/v1/data/region=/organization=org-/*", - "arn:aws:s3:::lakefs-audit-logs-us-east-1-production/etl/v1/data/region=/organization=org-/*", - "arn:aws:s3:::lakefs-logs--s3alias/*", - "arn:aws:s3:us-east-1::accesspoint/lakefs-logs-/object/etl/v1/data/region=/organization=org-/*", - "arn:aws:s3:us-east-1::accesspoint/lakefs-logs-/object/etl/v1/data/region=/organization=org-/*" - ] - }, - { - "Action": [ - "kms:Decrypt" - ], - "Resource": [ - "arn:aws:kms:us-east-1::key/" - ], - "Effect": "Allow" - } - ] -} -``` - -Trust Policy example that allows anyone in your account to assume the role above: - -```json -{ - "Version": "2012-10-17", - "Statement": [ - { - "Effect": "Allow", - "Principal": { - "AWS": "arn:aws:iam:::root" - }, - "Action": "sts:AssumeRole", - "Condition": {} - } - ] -} -``` - - -Authentication is done by assuming an IAM Role: - -```bash -# Assume role use AWS_ACCESS_KEY_ID, AWS_SECRET_ACCESS_KEY, AWS_SESSION_TOKEN: -aws sts assume-role --role-arn arn:aws:iam:::role/ --role-session-name - -# verify role assumed -aws sts get-caller-identity - -# list objects (can be used with --recursive) with access point ARN -aws s3 ls arn:aws:s3:us-east-1::accesspoint/lakefs-logs-/etl/v1/data/region=/organization=org-/ - -# get object locally via s3 access point alias -aws s3api get-object --bucket lakefs-logs--s3alias --key etl/v1/data/region=/organization=org-/year=/month=/day=
/hour=/-snappy.parquet sample.parquet -``` - -## Data layout - -!!! tip - The bucket name is important when creating the IAM policy but, the Access Point ARN and Alias will be the ones that are used to access the data (i.e AWS CLI, Spark etc). - -**Bucket Name:** `lakefs-audit-logs-us-east-1-production` - -**Root prefix:** `etl/v1/data/region=/organization=org-/` - -**Files Path pattern:** All the audit logs files are in parquet format and their pattern is: `etl/v1/data/region=/organization=org-/year=/month=/day=
/hour=/*-snappy.parquet` - -### Path Values - -**region:** lakeFS installation region (e.g the region in lakeFS URL: https://..lakefscloud.io/) - -**organization:** Found in the lakeFS URL `https://..lakefscloud.io/`. The value in the S3 path must be prefixed with `org-` - -### Partitions - -- `year` -- `month` -- `day` -- `hour` - -### Example - -As an example paths for "Acme" organization with 2 lakeFS installations: - -```text -# ACME in us-east-1 -etl/v1/data/region=us-east-1/organization=org-acme/year=2024/month=02/day=12/hour=13/log_abc-snappy.parquet - -# ACME in us-west-2 -etl/v1/data/region=us-west-2/organization=org-acme/year=2024/month=02/day=12/hour=13/log_xyz-snappy.parquet -``` - -## Schema - -The files are in parquet format and can be accessed directly from Spark or any client that can read parquet files. -Using Spark's [`printSchema()`](https://archive.apache.org/dist/spark/docs/3.5.2/api/python/reference/pyspark.sql/api/pyspark.sql.DataFrame.printSchema.html) we can inspect the values, that’s the latest schema with comments on important columns: - -| column | type | description | -|---------------------|--------|-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------| -| `data_user` | string | the internal user ID for the user making the request. if using an external IdP (i.e SSO, Microsoft Entra, etc) it will be the UID represented by the IdP. (see below an example how to extract the info of external IDs in python) | -| `data_repository` | string | the repository ID relevant for this request. Currently only returned for s3_gateway requests | -| `data_ref` | string | the reference ID (tag, branch, ...) relevant for this request. Currently only returned for s3_gateway requests | -| `data_status_code` | int | HTTP status code returned for this request | -| `data_service_name` | string | Service name for the request. Could be either "rest_api" or "s3_gateway" | -| `data_request_id` | string | Unique ID representing this request | -| `data_path` | string | HTTP path used for this request | -| `data_operation_id` | string | Logical operation ID for this request. E.g. `list_objects`, `delete_repository`, ... | -| `data_method` | string | HTTP method for the request | -| `data_time` | string | datetime representing the start time of this request, in [ISO 8601](https://en.wikipedia.org/wiki/ISO_8601) format | - - -## IdP users: map user IDs from audit logs to an email in lakeFS - -The `data_user` column in each log represents the user id that performed it. - -* It might be empty in cases where authentication is not required (e.g login attempt). -* If the user is an API user created internally in lakeFS that id is also the name it was given. -* `data_user` might contain an ID to an external IdP (i.e. SSO system), usually it is not human friendly, we can correlate the ID to a lakeFS email used, see an example using the [Python lakefs-sdk](../integrations/python.md#using-the-lakefs-sdk). - -```python -import lakefs_sdk - -# Configure HTTP basic authorization: basic_auth -configuration = lakefs_sdk.Configuration( - host = "https://..lakefscloud.io/api/v1", - username = 'AKIA...', - password = '...' -) - -# Print all user email and uid in lakeFS -# the uid is equal to the user id in the audit logs. -with lakefs_sdk.ApiClient(configuration) as api_client: - auth_api = lakefs_sdk.AuthApi(api_client) - has_more = True - next_offset = '' - page_size = 100 - while has_more: - resp = auth_api.list_users(prefix='', after=next_offset, amount=page_size) - for u in resp.results: - email = u.email - uid = u.id - print(f'Email: {email}, UID: {uid}') - - has_more = resp.pagination.has_more - next_offset = resp.pagination.next_offset -``` - -!!! example "Example: Glue Notebook with Spark" - - ```python - from awsglue.transforms import * - from pyspark.context import SparkContext - from awsglue.context import GlueContext - from awsglue.job import Job - - sc = SparkContext.getOrCreate() - glueContext = GlueContext(sc) - spark = glueContext.spark_session - job = Job(glueContext) - - # connect to s3 access point - alias = 's3://' - s3_dyf = glueContext.create_dynamic_frame.from_options( - format_options={}, - connection_type="s3", - format="parquet", - connection_options={ - "paths": [alias + "/etl/v1/data/region=/organization=org-/year=/month=/day=
/hour=/"], - "recurse": True, - }, - transformation_ctx="sample-ctx", - ) - - s3_dyf.show() - s3_dyf.printSchema() - ``` - -## Audit Logs for lakeFS Enterprise On-Premises - -In the case of On-Premises deployment, you are responsible for collecting, storing, and querying audit logs. - -### Reference Architecture - -An audit log pipeline for lakeFS Enterprise consists of three stages: - -1. **Collect**: Capture logs from lakeFS container stdout and filter for `log_audit: true` -2. **Store**: Ship filtered logs to durable storage (e.g., S3, GCS, Azure Blob) -3. **Query**: Use a query engine to analyze logs (e.g., Athena, BigQuery, Elasticsearch) - -### Collection - -The recommended practice is to send logs to container stdout (the default configuration) and use a log collector to capture and forward them. See the [logging configuration](./configuration.md#logging) for more details. - -Common log collectors include: [Fluent Bit](https://fluentbit.io/), [Fluentd](https://www.fluentd.org/), [Logstash](https://www.elastic.co/logstash). - -When configuring your log collector, filter for entries where `log_audit` equals `true` to separate audit logs from regular application logs. - -**lakeFS outputs two kinds of logs:** - -- **Regular logs**: API errors, event descriptions, and debugging information -- **Audit logs**: User actions such as creating a branch, committing, or deleting a repository - -!!! note - To filter audit logs, use the boolean field `log_audit`. When `log_audit` is `true`, the log entry is an audit event. - -**Example audit log entry (JSON):** - -```json -{ - "client": "lakefs-python-sdk/1.65.2", - "file": "usr/local/go/src/net/http/server.go:2322", - "func": "net/http.HandlerFunc.ServeHTTP", - "host": "lakefs.example.com", - "level": "info", - "log_audit": true, - "method": "POST", - "msg": "HTTP call ended", - "operation_id": "DeleteObjects", - "path": "/api/v1/repositories/my-repo/branches/my-branch/objects/delete", - "request_id": "1234567-5b66-7655-b4e8-2h0c271f6r90", - "sent_bytes": 14, - "service_name": "rest_api", - "source_ip": "80.0.0.10:34708", - "status_code": 200, - "time": "2025-12-25T12:30:32Z", - "took": 600747890, - "took_str": "600.74789ms", - "user": "lakefs-ci-bot" -} -``` - -### Storage and Querying - -Once collected, audit logs can be stored and queried using various approaches depending on your infrastructure. -The choice of storage and query engine depends on your existing infrastructure, retention requirements, and query patterns. - -**Example:** storage in S3, ETL indexing with Spark and querying layer with Athena / Spark, or storing in Elasticsearch for real-time analysis. - -**Scaling Considerations** - -At high scale, lakeFS can generate a significant volume of audit logs. Consider the following: - -- **Partitioning**: Partition logs by time (e.g., `year/month/day/hour`) to improve query performance and manage storage costs -- **Retention policies**: Define retention periods and lifecycle rules to archive or delete old logs - -**Schema Considerations** - -The audit log schema is stable and evolves additively over time. If you're using a schema-aware query engine (e.g., Athena, BigQuery), consider using a schema discovery mechanism such as AWS Glue Crawler or equivalent to automatically detect and update your table schema as new fields appear. -The fields described in the [Schema](#schema) section above (remove the `data_` prefix for on-prem) are expected to be present in all audit log entries. - diff --git a/docs/src/reference/cli.md b/docs/src/reference/cli.md deleted file mode 100644 index 50acfa1a562..00000000000 --- a/docs/src/reference/cli.md +++ /dev/null @@ -1,3317 +0,0 @@ ---- -title: lakectl (lakeFS command-line tool) -description: lakeFS comes with its own native CLI client. Here you can see the complete command reference. ---- - -# lakectl (lakeFS command-line tool) - -!!! note - This file (cli.md) is automatically generated from the Go code files under `cmd/lakectl`. - Any changes made directly to the Markdown file will be overwritten, and should instead be made to the - relevant Go files. - -## Installing lakectl locally - -`lakectl` is available for Linux, macOS, and Windows. You can also [run it using Docker](#running-lakectl-from-docker). - -[:material-download-outline: Download lakectl](https://github.com/treeverse/lakeFS/releases){: .md-button .md-button--primary target="_blank"} - -Or using [Homebrew](https://brew.sh/) for Linux/macOS: - -```bash -brew tap treeverse/lakefs -brew install lakefs -``` - -### Configuring credentials and API endpoint - -Once you've installed the lakectl command, run: - -```bash -lakectl config -# output: -# Config file /home/janedoe/.lakectl.yaml will be used -# Access key ID: AKIAIOSFODNN7EXAMPLE -# Secret access key: **************************************** -# Server endpoint URL: http://localhost:8000 -``` - -This will setup a `$HOME/.lakectl.yaml` file with the credentials and API endpoint you've supplied. -When setting up a new installation and creating initial credentials (see [Quickstart](../quickstart/index.md)), the UI -will provide a link to download a preconfigured configuration file for you. - -## lakectl Configuration - -`lakectl` reads its configuration from a YAML file (default path `~/.lakectl.yaml`, overridable with `--config` or `LAKECTL_CONFIG_FILE`) and/or from environment variables. - -* Every configuration key can be supplied through an environment variable using the pattern `LAKECTL_`. -* Any value given on the command-line flags overrides the value in the configuration file, which in turn overrides the value supplied through the environment. - -### Reference - -* `credentials.access_key_id` `(string : required)` - Access-key ID used to authenticate against lakeFS. -* `credentials.secret_access_key` `(string : required)` - Secret access key paired with the access key ID. -* `credentials.provider.type` `(string : "")` - Enterprise only. Set to `aws_iam` to obtain temporary credentials from AWS IAM; empty for static credentials (default). - * `credentials.provider.aws_iam.token_ttl_seconds` `(duration : 6h)` - Lifetime of the generated lakeFS token. - * `credentials.provider.aws_iam.url_presign_ttl_seconds` `(duration : 1m)` - TTL of pre-signed URLs created by lakectl. - * `credentials.provider.aws_iam.refresh_interval` `(duration : 5m)` - How often lakectl refreshes the IAM credentials. - * `credentials.provider.aws_iam.token_request_headers` `(map[string]string : {})` - Extra HTTP headers to include when requesting the token. -* `network.http2.enabled` `(bool : true)` - Enable HTTP/2 for the API client. -* `server.endpoint_url` `(string : ` http://127.0.0.1:8000 `) - Base URL of the lakeFS server. -* `server.retries.enabled` `(bool : true)` - Whether lakectl tries more than once. -* `server.retries.max_attempts` `(uint : 4)` - Maximum number of attempts per request. -* `server.retries.min_wait_interval` `(duration : 200ms)` - Minimum back-off between retries. -* `server.retries.max_wait_interval` `(duration : 30s)` - Maximum back-off between retries. -* `options.parallelism` `(int : 25)` - Default concurrency level for I/O operations (upload, download, etc.). -* `local.skip_non_regular_files` `(bool : false)` - When true, symbolic links and other non-regular files are skipped during `lakectl local` operations instead of causing an error. -* `experimental.local.posix_permissions.enabled` `(bool : false)` - Preserve POSIX permissions when syncing files. - * `experimental.local.posix_permissions.include_uid` `(bool : false)` - Include UID in the stored metadata. - * `experimental.local.posix_permissions.include_gid` `(bool : false)` - Include GID in the stored metadata. - - -## Running lakectl from Docker - -If you'd rather run `lakectl` from a Docker container you can do so by passing configuration elements as environment variables. -Here is an example: - -```bash -docker run --rm --pull always \ - -e LAKECTL_CREDENTIALS_ACCESS_KEY_ID=AKIAIOSFODNN7EXAMPLE \ - -e LAKECTL_CREDENTIALS_SECRET_ACCESS_KEY=xxxxx - -e LAKECTL_SERVER_ENDPOINT_URL=https://host.us-east-2.lakefscloud.io/ \ - --entrypoint lakectl treeverse/lakefs \ - repo list -``` - -_Bear in mind that if you are running lakeFS itself locally you will need to account for this in your networking configuration of -the Docker container. That is to say, `localhost` to a Docker container is itself, not the host machine on which it is running._ - -## Command Reference - -### lakectl - -A cli tool to explore manage and work with lakeFS - -

Synopsis

- -lakectl is a CLI tool allowing exploration and manipulation of a lakeFS environment. - -It can be extended with plugins; see 'lakectl plugin --help' for more information. - -``` -lakectl [flags] -``` - -

Options

- -``` - --base-uri string base URI used for lakeFS address parse - -c, --config string config file (default is $HOME/.lakectl.yaml) - -h, --help help for lakectl - --log-format string set logging output format - --log-level string set logging level (default "none") - --log-output strings set logging output(s) - --no-color don't use fancy output colors (default value can be set by NO_COLOR environment variable) - --verbose run in verbose mode - -v, --version version for lakectl -``` - -!!! note - The `base-uri` option can be controlled with the `LAKECTL_BASE_URI` environment variable. - -

Example usage

- -```shell -$ export LAKECTL_BASE_URI="lakefs://my-repo/my-branch" -# Once set, use relative lakefs uri's: -$ lakectl fs ls /path -``` - -### lakectl actions - -Manage Actions commands - -

Options

- -``` - -h, --help help for actions -``` - - - -### lakectl actions help - -Help about any command - -

Synopsis

- -Help provides help for any command in the application. -Simply type actions help [path to command] for full details. - -``` -lakectl actions help [command] [flags] -``` - -

Options

- -``` - -h, --help help for help -``` - - - -### lakectl actions runs - -Explore runs information - -

Options

- -``` - -h, --help help for runs -``` - - - -### lakectl actions runs describe - -Describe run results - -

Synopsis

- -Show information about the run and all the hooks that were executed as part of the run - -``` -lakectl actions runs describe [flags] -``` - -

Examples

- -``` -lakectl actions runs describe lakefs://my-repo 20230719152411arS0z6I -``` - -

Options

- -``` - --after string show results after this value (used for pagination) - --amount int number of results to return. By default, all results are returned. - -h, --help help for describe -``` - - - -### lakectl actions runs help - -Help about any command - -

Synopsis

- -Help provides help for any command in the application. -Simply type runs help [path to command] for full details. - -``` -lakectl actions runs help [command] [flags] -``` - -

Options

- -``` - -h, --help help for help -``` - - - -### lakectl actions runs list - -List runs - -

Synopsis

- -List all runs on a repository optional filter by branch or commit - -``` -lakectl actions runs list [--branch ] [--commit ] [flags] -``` - -

Examples

- -``` -lakectl actions runs list lakefs://my-repo --branch my-branch --commit 600dc0ffee -``` - -

Options

- -``` - --branch string show results for specific branch - --commit string show results for specific commit ID - --amount int how many results to return (default 100) - --after string show results after this value (used for pagination) - -h, --help help for list -``` - - - -### lakectl actions validate - -Validate action file - -

Synopsis

- -Tries to parse the input action file as lakeFS action file - -``` -lakectl actions validate [flags] -``` - -

Examples

- -``` -lakectl actions validate path/to/my/file -``` - -

Options

- -``` - -h, --help help for validate -``` - - - -### lakectl annotate - -List entries under a given path, annotating each with the latest modifying commit - -``` -lakectl annotate [flags] -``` - -

Options

- -``` - --first-parent follow only the first parent commit upon seeing a merge commit - -h, --help help for annotate - -r, --recursive recursively annotate all entries under a given path or prefix -``` - - - -### lakectl auth - -Manage authentication and authorization - -

Synopsis

- -Manage authentication and authorization including users, groups and ACLs -This functionality is supported with an external auth service only. - -

Options

- -``` - -h, --help help for auth -``` - - - -### lakectl auth groups - -Manage groups - -

Options

- -``` - -h, --help help for groups -``` - - - -### lakectl auth groups acl - -Manage ACLs - -

Synopsis

- -manage ACLs of groups - -

Options

- -``` - -h, --help help for acl -``` - - - -### lakectl auth groups acl get - -Get ACL of group - -``` -lakectl auth groups acl get [flags] -``` - -

Options

- -``` - -h, --help help for get - --id string Group identifier -``` - - - -### lakectl auth groups acl help - -Help about any command - -

Synopsis

- -Help provides help for any command in the application. -Simply type acl help [path to command] for full details. - -``` -lakectl auth groups acl help [command] [flags] -``` - -

Options

- -``` - -h, --help help for help -``` - - - -### lakectl auth groups acl set - -Set ACL of group - -

Synopsis

- -Set ACL of group. permission will be attached to all repositories. - -``` -lakectl auth groups acl set [flags] -``` - -

Options

- -``` - -h, --help help for set - --id string Group identifier - --permission string Permission, typically one of "Read", "Write", "Super" or "Admin" -``` - - - -### lakectl auth groups create - -Create a group - -``` -lakectl auth groups create [flags] -``` - -

Options

- -``` - -h, --help help for create - --id string Group identifier -``` - - - -### lakectl auth groups delete - -Delete a group - -``` -lakectl auth groups delete [flags] -``` - -

Options

- -``` - -h, --help help for delete - --id string Group identifier -``` - - - -### lakectl auth groups help - -Help about any command - -

Synopsis

- -Help provides help for any command in the application. -Simply type groups help [path to command] for full details. - -``` -lakectl auth groups help [command] [flags] -``` - -

Options

- -``` - -h, --help help for help -``` - - - -### lakectl auth groups list - -List groups - -``` -lakectl auth groups list [flags] -``` - -

Options

- -``` - --amount int how many results to return (default 100) - --after string show results after this value (used for pagination) - --prefix string filter results by prefix (used for pagination) - -h, --help help for list -``` - - - -### lakectl auth groups members - -Manage group user memberships - -

Options

- -``` - -h, --help help for members -``` - - - -### lakectl auth groups members add - -Add a user to a group - -``` -lakectl auth groups members add [flags] -``` - -

Options

- -``` - -h, --help help for add - --id string Group identifier - --user string Username (email for password-based users, default: current user) -``` - - - -### lakectl auth groups members help - -Help about any command - -

Synopsis

- -Help provides help for any command in the application. -Simply type members help [path to command] for full details. - -``` -lakectl auth groups members help [command] [flags] -``` - -

Options

- -``` - -h, --help help for help -``` - - - -### lakectl auth groups members list - -List users in a group - -``` -lakectl auth groups members list [flags] -``` - -

Options

- -``` - --id string Group identifier - --amount int how many results to return (default 100) - --after string show results after this value (used for pagination) - --prefix string filter results by prefix (used for pagination) - -h, --help help for list -``` - - - -### lakectl auth groups members remove - -Remove a user from a group - -``` -lakectl auth groups members remove [flags] -``` - -

Options

- -``` - -h, --help help for remove - --id string Group identifier - --user string Username (email for password-based users, default: current user) -``` - - - -### lakectl auth groups policies - -Manage group policies - -

Synopsis

- -Manage group policies. Requires an external authorization server with matching support. - -

Options

- -``` - -h, --help help for policies -``` - - - -### lakectl auth groups policies attach - -Attach a policy to a group - -``` -lakectl auth groups policies attach [flags] -``` - -

Options

- -``` - -h, --help help for attach - --id string User identifier - --policy string Policy identifier -``` - - - -### lakectl auth groups policies detach - -Detach a policy from a group - -``` -lakectl auth groups policies detach [flags] -``` - -

Options

- -``` - -h, --help help for detach - --id string User identifier - --policy string Policy identifier -``` - - - -### lakectl auth groups policies help - -Help about any command - -

Synopsis

- -Help provides help for any command in the application. -Simply type policies help [path to command] for full details. - -``` -lakectl auth groups policies help [command] [flags] -``` - -

Options

- -``` - -h, --help help for help -``` - - - -### lakectl auth groups policies list - -List policies for the given group - -``` -lakectl auth groups policies list [flags] -``` - -

Options

- -``` - --id string Group identifier - --amount int how many results to return (default 100) - --after string show results after this value (used for pagination) - --prefix string filter results by prefix (used for pagination) - -h, --help help for list -``` - - - -### lakectl auth help - -Help about any command - -

Synopsis

- -Help provides help for any command in the application. -Simply type auth help [path to command] for full details. - -``` -lakectl auth help [command] [flags] -``` - -

Options

- -``` - -h, --help help for help -``` - - - -### lakectl auth policies - -Manage policies - -

Options

- -``` - -h, --help help for policies -``` - - - -### lakectl auth policies create - -Create a policy - -``` -lakectl auth policies create [flags] -``` - -

Options

- -``` - -h, --help help for create - --id string Policy identifier - --statement-document string JSON statement document path (or "-" for stdin) -``` - - - -### lakectl auth policies delete - -Delete a policy - -``` -lakectl auth policies delete [flags] -``` - -

Options

- -``` - -h, --help help for delete - --id string Policy identifier -``` - - - -### lakectl auth policies help - -Help about any command - -

Synopsis

- -Help provides help for any command in the application. -Simply type policies help [path to command] for full details. - -``` -lakectl auth policies help [command] [flags] -``` - -

Options

- -``` - -h, --help help for help -``` - - - -### lakectl auth policies list - -List policies - -``` -lakectl auth policies list [flags] -``` - -

Options

- -``` - --amount int how many results to return (default 100) - --after string show results after this value (used for pagination) - --prefix string filter results by prefix (used for pagination) - -h, --help help for list -``` - - - -### lakectl auth policies show - -Show a policy - -``` -lakectl auth policies show [flags] -``` - -

Options

- -``` - -h, --help help for show - --id string Policy identifier -``` - - - -### lakectl auth users - -Manage users - -

Options

- -``` - -h, --help help for users -``` - - - -### lakectl auth users aws-iam - -Manage AWS IAM Role for lakeFS Users (External Principals API) - -

Options

- -``` - -h, --help help for aws-iam -``` - - - -### lakectl auth users aws-iam attach - -Attach an IAM role to a lakeFS user - -``` -lakectl auth users aws-iam attach [flags] -``` - -

Options

- -``` - -h, --help help for attach - --id string lakeFS Username (default: current user) - --principal-id string External principal ID (e.g., AWS IAM role ARN) -``` - - - -### lakectl auth users aws-iam detach - -Detach an IAM Role from a lakeFS user - -``` -lakectl auth users aws-iam detach [flags] -``` - -

Options

- -``` - -h, --help help for detach - --id string lakeFS Username (default: current user) - --principal-id string External principal ID (e.g., AWS IAM role ARN) -``` - - - -### lakectl auth users aws-iam help - -Help about any command - -

Synopsis

- -Help provides help for any command in the application. -Simply type aws-iam help [path to command] for full details. - -``` -lakectl auth users aws-iam help [command] [flags] -``` - -

Options

- -``` - -h, --help help for help -``` - - - -### lakectl auth users aws-iam list - -List all IAM roles attached to a lakeFS user - -``` -lakectl auth users aws-iam list [flags] -``` - -

Options

- -``` - --id string lakeFS Username (default: current user) - --amount int how many results to return (default 100) - --after string show results after this value (used for pagination) - --prefix string filter results by prefix (used for pagination) - -h, --help help for list -``` - - - -### lakectl auth users aws-iam lookup - -Lookup IAM Role attachments - -``` -lakectl auth users aws-iam lookup [flags] -``` - -

Options

- -``` - -h, --help help for lookup - --principal-id string External principal ID (e.g., AWS IAM role ARN) -``` - - - -### lakectl auth users create - -Create a user - -``` -lakectl auth users create [flags] -``` - -

Options

- -``` - -h, --help help for create - --id string Username -``` - - - -### lakectl auth users credentials - -Manage user credentials - -

Options

- -``` - -h, --help help for credentials -``` - - - -### lakectl auth users credentials create - -Create user credentials - -``` -lakectl auth users credentials create [flags] -``` - -

Options

- -``` - -h, --help help for create - --id string Username (email for password-based users, default: current user) -``` - - - -### lakectl auth users credentials delete - -Delete user credentials - -``` -lakectl auth users credentials delete [flags] -``` - -

Options

- -``` - --access-key-id string Access key ID to delete - -h, --help help for delete - --id string Username (email for password-based users, default: current user) -``` - - - -### lakectl auth users credentials help - -Help about any command - -

Synopsis

- -Help provides help for any command in the application. -Simply type credentials help [path to command] for full details. - -``` -lakectl auth users credentials help [command] [flags] -``` - -

Options

- -``` - -h, --help help for help -``` - - - -### lakectl auth users credentials list - -List user credentials - -``` -lakectl auth users credentials list [flags] -``` - -

Options

- -``` - --id string Username (email for password-based users, default: current user) - --amount int how many results to return (default 100) - --after string show results after this value (used for pagination) - --prefix string filter results by prefix (used for pagination) - -h, --help help for list -``` - - - -### lakectl auth users delete - -Delete a user - -``` -lakectl auth users delete [flags] -``` - -

Options

- -``` - -h, --help help for delete - --id string Username (email for password-based users) -``` - - - -### lakectl auth users groups - -Manage user groups - -

Options

- -``` - -h, --help help for groups -``` - - - -### lakectl auth users groups help - -Help about any command - -

Synopsis

- -Help provides help for any command in the application. -Simply type groups help [path to command] for full details. - -``` -lakectl auth users groups help [command] [flags] -``` - -

Options

- -``` - -h, --help help for help -``` - - - -### lakectl auth users groups list - -List groups for the given user - -``` -lakectl auth users groups list [flags] -``` - -

Options

- -``` - --id string Username (email for password-based users) - --amount int how many results to return (default 100) - --after string show results after this value (used for pagination) - --prefix string filter results by prefix (used for pagination) - -h, --help help for list -``` - - - -### lakectl auth users help - -Help about any command - -

Synopsis

- -Help provides help for any command in the application. -Simply type users help [path to command] for full details. - -``` -lakectl auth users help [command] [flags] -``` - -

Options

- -``` - -h, --help help for help -``` - - - -### lakectl auth users list - -List users - -``` -lakectl auth users list [flags] -``` - -

Options

- -``` - --amount int how many results to return (default 100) - --after string show results after this value (used for pagination) - --prefix string filter results by prefix (used for pagination) - -h, --help help for list -``` - - - -### lakectl auth users policies - -Manage user policies - -

Synopsis

- -Manage user policies. Requires an external authorization server with matching support. - -

Options

- -``` - -h, --help help for policies -``` - - - -### lakectl auth users policies attach - -Attach a policy to a user - -``` -lakectl auth users policies attach [flags] -``` - -

Options

- -``` - -h, --help help for attach - --id string Username (email for password-based users) - --policy string Policy identifier -``` - - - -### lakectl auth users policies detach - -Detach a policy from a user - -``` -lakectl auth users policies detach [flags] -``` - -

Options

- -``` - -h, --help help for detach - --id string Username (email for password-based users) - --policy string Policy identifier -``` - - - -### lakectl auth users policies help - -Help about any command - -

Synopsis

- -Help provides help for any command in the application. -Simply type policies help [path to command] for full details. - -``` -lakectl auth users policies help [command] [flags] -``` - -

Options

- -``` - -h, --help help for help -``` - - - -### lakectl auth users policies list - -List policies for the given user - -``` -lakectl auth users policies list [flags] -``` - -

Options

- -``` - --effective List all distinct policies attached to the user, including by group memberships - --id string Username (email for password-based users) - --amount int how many results to return (default 100) - --after string show results after this value (used for pagination) - --prefix string filter results by prefix (used for pagination) - -h, --help help for list -``` - - - -### lakectl branch - -Create and manage branches within a repository - -

Synopsis

- -Create delete and list branches within a lakeFS repository - -

Options

- -``` - -h, --help help for branch -``` - - - -### lakectl branch create - -Create a new branch in a repository - -``` -lakectl branch create -s [flags] -``` - -

Examples

- -``` -lakectl branch create lakefs://example-repo/new-branch -s lakefs://example-repo/main -``` - -

Options

- -``` - -h, --help help for create - -s, --source string source branch uri -``` - - - -### lakectl branch delete - -Delete a branch in a repository, along with its uncommitted changes (CAREFUL) - -``` -lakectl branch delete [flags] -``` - -

Examples

- -``` -lakectl branch delete lakefs://my-repo/my-branch -``` - -

Options

- -``` - -h, --help help for delete - -y, --yes Automatically say yes to all confirmations -``` - - - -### lakectl branch help - -Help about any command - -

Synopsis

- -Help provides help for any command in the application. -Simply type branch help [path to command] for full details. - -``` -lakectl branch help [command] [flags] -``` - -

Options

- -``` - -h, --help help for help -``` - - - -### lakectl branch list - -List branches in a repository - -``` -lakectl branch list [flags] -``` - -

Examples

- -``` -lakectl branch list lakefs://my-repo -``` - -

Options

- -``` - --amount int how many results to return (default 100) - --after string show results after this value (used for pagination) - --prefix string filter results by prefix (used for pagination) - -h, --help help for list -``` - - - -### lakectl branch reset - -Reset uncommitted changes - all of them, or by path - -

Synopsis

- -reset changes. There are three different ways to reset changes: - 1. reset all uncommitted changes - reset lakefs://myrepo/main - 2. reset uncommitted changes under specific path - reset lakefs://myrepo/main --prefix path - 3. reset uncommitted changes for specific object - reset lakefs://myrepo/main --object path - -``` -lakectl branch reset [--prefix|--object] [flags] -``` - -

Examples

- -``` -lakectl branch reset lakefs://my-repo/my-branch -``` - -

Options

- -``` - -h, --help help for reset - --object string path to object to be reset - --prefix string prefix of the objects to be reset - -y, --yes Automatically say yes to all confirmations -``` - - - -### lakectl branch revert - -Given a commit, record a new commit to reverse the effect of this commit - -

Synopsis

- -The commits will be reverted in left-to-right order - -``` -lakectl branch revert [...] [flags] -``` - -

Examples

- -``` -lakectl branch revert lakefs://example-repo/example-branch commitA - Revert the changes done by commitA in example-branch - branch revert lakefs://example-repo/example-branch HEAD~1 HEAD~2 HEAD~3 - Revert the changes done by the second last commit to the fourth last commit in example-branch -``` - -

Options

- -``` - --allow-empty-commit allow empty commit (revert without changes) - -h, --help help for revert - -m, --parent-number int the parent number (starting from 1) of the mainline. The revert will reverse the change relative to the specified parent. - -y, --yes Automatically say yes to all confirmations -``` - - - -### lakectl branch show - -Show branch latest commit reference - -``` -lakectl branch show [flags] -``` - -

Examples

- -``` -lakectl branch show lakefs://my-repo/my-branch -``` - -

Options

- -``` - -h, --help help for show -``` - - - -### lakectl branch-protect - -Create and manage branch protection rules - -

Synopsis

- -Define branch protection rules to prevent direct changes. Changes to protected branches can only be done by merging from other branches. - -

Options

- -``` - -h, --help help for branch-protect -``` - - - -### lakectl branch-protect add - -Add a branch protection rule - -

Synopsis

- -Add a branch protection rule for a given branch name pattern - -``` -lakectl branch-protect add [flags] -``` - -

Examples

- -``` -lakectl branch-protect add lakefs://my-repo 'stable_*' -``` - -

Options

- -``` - -h, --help help for add -``` - - - -### lakectl branch-protect delete - -Delete a branch protection rule - -

Synopsis

- -Delete a branch protection rule for a given branch name pattern - -``` -lakectl branch-protect delete [flags] -``` - -

Examples

- -``` -lakectl branch-protect delete lakefs://my-repo stable_* -``` - -

Options

- -``` - -h, --help help for delete -``` - - - -### lakectl branch-protect help - -Help about any command - -

Synopsis

- -Help provides help for any command in the application. -Simply type branch-protect help [path to command] for full details. - -``` -lakectl branch-protect help [command] [flags] -``` - -

Options

- -``` - -h, --help help for help -``` - - - -### lakectl branch-protect list - -List all branch protection rules - -``` -lakectl branch-protect list [flags] -``` - -

Examples

- -``` -lakectl branch-protect list lakefs://my-repo -``` - -

Options

- -``` - -h, --help help for list -``` - - - -### lakectl cherry-pick - -Apply the changes introduced by an existing commit - -

Synopsis

- -Apply the changes from the given commit to the tip of the branch. The changes will be added as a new commit. - -``` -lakectl cherry-pick [flags] -``` - -

Examples

- -``` -lakectl cherry-pick lakefs://my-repo/600dc0ffee lakefs://my-repo/my-branch -``` - -

Options

- -``` - -h, --help help for cherry-pick - -m, --parent-number int the parent number (starting from 1) of the cherry-picked commit. The cherry-pick will apply the change relative to the specified parent. -``` - - - -### lakectl commit - -Commit changes on a given branch - -``` -lakectl commit [flags] -``` - -

Options

- -``` - --allow-empty-commit allow a commit with no changes - --allow-empty-message allow an empty commit message - -h, --help help for commit - -m, --message string commit message - --meta strings key value pair in the form of key=value -``` - - - -### lakectl completion - -Generate completion script - -

Synopsis

- -To load completions: - -Bash: - -```sh -$ source <(lakectl completion bash) -``` - -To load completions for each session, execute once: -Linux: - -```sh -$ lakectl completion bash > /etc/bash_completion.d/lakectl -``` - -MacOS: - -```sh -$ lakectl completion bash > /usr/local/etc/bash_completion.d/lakectl -``` - -Zsh: - -If shell completion is not already enabled in your environment you will need -to enable it. You can execute the following once: - -```sh -$ echo "autoload -U compinit; compinit" >> ~/.zshrc -``` - -To load completions for each session, execute once: -```sh -$ lakectl completion zsh > "${fpath[1]}/_lakectl" -``` - -You will need to start a new shell for this setup to take effect. - -Fish: - -```sh -$ lakectl completion fish | source -``` - -To load completions for each session, execute once: - -```sh -$ lakectl completion fish > ~/.config/fish/completions/lakectl.fish -``` - - - -``` -lakectl completion -``` - -

Options

- -``` - -h, --help help for completion -``` - - - -### lakectl config - -Create/update local lakeFS configuration - -``` -lakectl config [flags] -``` - -

Options

- -``` - -h, --help help for config -``` - - - -### lakectl diff - -Show changes between two commits, or the currently uncommitted changes - -``` -lakectl diff [ref URI] [flags] -``` - -

Examples

- -``` - - lakectl diff lakefs://example-repo/example-branch - Show uncommitted changes in example-branch. - - lakectl diff lakefs://example-repo/main lakefs://example-repo/dev - This shows the differences between master and dev starting at the last common commit. - This is similar to the three-dot (...) syntax in git. - Uncommitted changes are not shown. - - lakectl diff --two-way lakefs://example-repo/main lakefs://example-repo/dev - Show changes between the tips of the main and dev branches. - This is similar to the two-dot (..) syntax in git. - Uncommitted changes are not shown. - - lakectl diff --two-way lakefs://example-repo/main lakefs://example-repo/dev$ - Show changes between the tip of the main and the dev branch, including uncommitted changes on dev. - - lakectl diff --prefix some/path lakefs://example-repo/main lakefs://example-repo/dev - Show changes of objects prefixed with 'some/path' between the tips of the main and dev branches. -``` - -

Options

- -``` - -h, --help help for diff - --prefix string Show only changes in the given prefix. - --two-way Use two-way diff: show difference between the given refs, regardless of a common ancestor. -``` - - - -### lakectl doctor - -Run a basic diagnosis of the LakeFS configuration - -``` -lakectl doctor [flags] -``` - -

Options

- -``` - -h, --help help for doctor -``` - - - -### lakectl fs - -View and manipulate objects - -

Options

- -``` - -h, --help help for fs -``` - - - -### lakectl fs cat - -Dump content of object to stdout - -``` -lakectl fs cat [flags] -``` - -

Options

- -``` - -h, --help help for cat - --pre-sign Use pre-signed URLs when downloading/uploading data (recommended) (default true) -``` - - - -### lakectl fs download - -Download object(s) from a given repository path - -``` -lakectl fs download [] [flags] -``` - -

Options

- -``` - -h, --help help for download - --no-progress Disable progress bar animation for IO operations - -p, --parallelism int Max concurrent operations to perform (default 25) - --part-size int part size in bytes for multipart download (default 8388608) - --pre-sign Use pre-signed URLs when downloading/uploading data (recommended) (default true) - -r, --recursive recursively download all objects under path -``` - - - -### lakectl fs help - -Help about any command - -

Synopsis

- -Help provides help for any command in the application. -Simply type fs help [path to command] for full details. - -``` -lakectl fs help [command] [flags] -``` - -

Options

- -``` - -h, --help help for help -``` - - - -### lakectl fs ls - -List entries under a given tree - -``` -lakectl fs ls [flags] -``` - -

Options

- -``` - -h, --help help for ls - -r, --recursive list all objects under the specified path -``` - - - -### lakectl fs presign - -return a pre-signed URL for reading the specified object - -``` -lakectl fs presign [flags] -``` - -

Options

- -``` - -h, --help help for presign -``` - - - -### lakectl fs rm - -Delete object - -``` -lakectl fs rm [flags] -``` - -

Options

- -``` - -C, --concurrency int max concurrent single delete operations to send to the lakeFS server (default 50) - -h, --help help for rm - -r, --recursive recursively delete all objects under the specified path -``` - - - -### lakectl fs stat - -View object metadata - -``` -lakectl fs stat [flags] -``` - -

Options

- -``` - -h, --help help for stat - --pre-sign Use pre-signed URLs when downloading/uploading data (recommended) (default true) -``` - - - -### lakectl fs upload - -Upload a local file to the specified URI - -``` -lakectl fs upload [flags] -``` - -

Options

- -``` - --content-type string MIME type of contents - -h, --help help for upload - --no-progress Disable progress bar animation for IO operations - -p, --parallelism int Max concurrent operations to perform (default 25) - --pre-sign Use pre-signed URLs when downloading/uploading data (recommended) (default true) - -r, --recursive recursively copy all files under local source - -s, --source string local file to upload, or "-" for stdin -``` - - - - ---------- -### lakectl fs stage - -!!! warning - lakeFS plumbing command. Don't use unless you're _really_ sure you know what you're doing. - -Link an external object with a path in a repository - -

Synopsis

- -Link an external object with a path in a repository, creating an uncommitted change. -The object location must be outside the repository's storage namespace - -``` -lakectl fs stage [flags] -``` - -

Options

- -``` - --checksum string Object MD5 checksum as a hexadecimal string - --content-type string MIME type of contents - -h, --help help for stage - --location string fully qualified storage location (i.e. "s3://bucket/path/to/object") - --meta strings key value pairs in the form of key=value - --mtime int Object modified time (Unix Epoch in seconds). Defaults to current time - --size int Object size in bytes -``` - - - -### lakectl fs update-metadata - -!!! warning - lakeFS plumbing command. Don't use unless you're _really_ sure you know what you're doing. - -Update user metadata on the specified URI - -``` -lakectl fs update-metadata [flags] -``` - -

Options

- -``` - -h, --help help for update-metadata - --metadata strings Metadata to set, in the form key1=value1,key2=value2 -``` - - - -### lakectl gc - -Manage the garbage collection policy - -

Options

- -``` - -h, --help help for gc -``` - - - -### lakectl gc delete-config - -Deletes the garbage collection policy for the repository - -``` -lakectl gc delete-config [flags] -``` - -

Examples

- -``` -lakectl gc delete-config lakefs://my-repo -``` - -

Options

- -``` - -h, --help help for delete-config -``` - - - -### lakectl gc get-config - -Show the garbage collection policy for this repository - -``` -lakectl gc get-config [flags] -``` - -

Examples

- -``` -lakectl gc get-config lakefs://my-repo -``` - -

Options

- -``` - -h, --help help for get-config - -p, --json get rules as JSON -``` - - - -### lakectl gc help - -Help about any command - -

Synopsis

- -Help provides help for any command in the application. -Simply type gc help [path to command] for full details. - -``` -lakectl gc help [command] [flags] -``` - -

Options

- -``` - -h, --help help for help -``` - - - -### lakectl gc set-config - -Set garbage collection policy JSON - -

Synopsis

- -Sets the garbage collection policy JSON. -Example configuration file: -{ - "default_retention_days": 21, - "branches": [ - { - "branch_id": "main", - "retention_days": 28 - }, - { - "branch_id": "dev", - "retention_days": 14 - } - ] -} - -``` -lakectl gc set-config [flags] -``` - -

Examples

- -``` -lakectl gc set-config lakefs://my-repo -f config.json -``` - -

Options

- -``` - -f, --filename string file containing the GC policy as JSON - -h, --help help for set-config -``` - - - - ---------- -### lakectl gc check-async - -!!! warning - lakeFS plumbing command. Don't use unless you're _really_ sure you know what you're doing. - -Check status of (async) PrepareGarbageCollectionCommits - -``` -lakectl gc check-async [flags] -``` - -

Examples

- -``` -lakectl gc check-async --id lakefs://my-repo -``` - -

Options

- -``` - -h, --help help for check-async - --id string ID returned from "gc prepare-async" -``` - - - -### lakectl gc prepare-async - -!!! warning - lakeFS plumbing command. Don't use unless you're _really_ sure you know what you're doing. - -Runs (async) PrepareGarbageCollectionCommits on the repository - -``` -lakectl gc prepare-async [flags] -``` - -

Examples

- -``` -lakectl gc prepare-async lakefs://my-repo -``` - -

Options

- -``` - -h, --help help for prepare-async -``` - - - -### lakectl help - -Help about any command - -

Synopsis

- -Help provides help for any command in the application. -Simply type lakectl help [path to command] for full details. - -``` -lakectl help [command] [flags] -``` - -

Options

- -``` - -h, --help help for help -``` - - - -### lakectl identity - -Show identity info - -

Synopsis

- -Show the info of the configured user in lakectl - -``` -lakectl identity [flags] -``` - -

Examples

- -``` -lakectl identity -``` - -

Options

- -``` - -h, --help help for identity -``` - - - -### lakectl import - -Import data from external source to a destination branch - -``` -lakectl import --from --to [flags] -``` - -

Options

- -``` - --allow-empty-message allow an empty commit message (default true) - --from string prefix to read from (e.g. "s3://bucket/sub/path/"). must not be in a storage namespace - -h, --help help for import - -m, --message string commit message - --meta strings key value pair in the form of key=value - --no-progress switch off the progress output - --to string lakeFS path to load objects into (e.g. "lakefs://repo/branch/sub/path/") -``` - - - -### lakectl local - -Sync local directories with lakeFS paths - -

Options

- -``` - -h, --help help for local -``` - - - -### lakectl local checkout - -Sync local directory with the remote state. - -``` -lakectl local checkout [directory] [flags] -``` - -

Options

- -``` - --all Checkout given source branch or reference for all linked directories - -h, --help help for checkout - --no-progress Disable progress bar animation for IO operations - -p, --parallelism int Max concurrent operations to perform (default 25) - --pre-sign Use pre-signed URLs when downloading/uploading data (recommended) (default true) - -r, --ref string Checkout the given reference - -y, --yes Automatically say yes to all confirmations -``` - - - -### lakectl local clone - -Clone a path from a lakeFS repository into a new directory. - -``` -lakectl local clone [directory] [flags] -``` - -

Options

- -``` - --gitignore Update .gitignore file when working in a git repository context (default true) - -h, --help help for clone - --no-progress Disable progress bar animation for IO operations - -p, --parallelism int Max concurrent operations to perform (default 25) - --pre-sign Use pre-signed URLs when downloading/uploading data (recommended) (default true) -``` - - - -### lakectl local commit - -Commit changes from local directory to the lakeFS branch it tracks. - -``` -lakectl local commit [directory] [flags] -``` - -

Options

- -``` - --allow-empty-message allow an empty commit message - --force Commit changes even if remote branch includes uncommitted changes external to the synced path - -h, --help help for commit - -m, --message string commit message - --meta strings key value pair in the form of key=value - --no-progress Disable progress bar animation for IO operations - -p, --parallelism int Max concurrent operations to perform (default 25) - --pre-sign Use pre-signed URLs when downloading/uploading data (recommended) (default true) -``` - - - -### lakectl local help - -Help about any command - -

Synopsis

- -Help provides help for any command in the application. -Simply type local help [path to command] for full details. - -``` -lakectl local help [command] [flags] -``` - -

Options

- -``` - -h, --help help for help -``` - - - -### lakectl local init - -set a local directory to sync with a lakeFS path. - -``` -lakectl local init [directory] [flags] -``` - -

Options

- -``` - --force Overwrites if directory already linked to a lakeFS path - --gitignore Update .gitignore file when working in a git repository context (default true) - -h, --help help for init -``` - - - -### lakectl local list - -find and list directories that are synced with lakeFS. - -``` -lakectl local list [directory] [flags] -``` - -

Options

- -``` - -h, --help help for list -``` - - - -### lakectl local pull - -Fetch latest changes from lakeFS. - -``` -lakectl local pull [directory] [flags] -``` - -

Options

- -``` - --force Reset any uncommitted local change - -h, --help help for pull - --no-progress Disable progress bar animation for IO operations - -p, --parallelism int Max concurrent operations to perform (default 25) - --pre-sign Use pre-signed URLs when downloading/uploading data (recommended) (default true) -``` - - - -### lakectl local status - -show modifications (both remote and local) to the directory and the remote location it tracks - -``` -lakectl local status [directory] [flags] -``` - -

Options

- -``` - -h, --help help for status - -l, --local Don't compare against remote changes -``` - - - -### lakectl log - -Show log of commits - -

Synopsis

- -Show log of commits for a given reference - -``` -lakectl log [flags] -``` - -

Examples

- -``` -lakectl log --dot lakefs://example-repository/main | dot -Tsvg > graph.svg -``` - -

Options

- -``` - --after string show results after this value (used for pagination) - --amount int number of results to return. By default, all results are returned - --dot return results in a dotgraph format - --first-parent follow only the first parent commit upon seeing a merge commit - -h, --help help for log - --limit limit result just to amount. By default, returns whether more items are available. - --no-merges skip merge commits - --objects strings show results that contains changes to at least one path in that list of objects. Use comma separator to pass all objects together - --prefixes strings show results that contains changes to at least one path in that list of prefixes. Use comma separator to pass all prefixes together - --show-meta-range-id also show meta range ID - --since string show results since this date-time (RFC3339 format) - --stop-at string a Ref to stop at (included in results) -``` - - - -### lakectl merge - -Merge & commit changes from source branch into destination branch - -

Synopsis

- -Merge & commit changes from source branch into destination branch - -``` -lakectl merge [flags] -``` - -

Options

- -``` - --allow-empty Allow merge when the branches have the same content - --allow-empty-message allow an empty commit message (default true) - --force Allow merge into a read-only branch or into a branch with the same content - -h, --help help for merge - -m, --message string commit message - --meta strings key value pair in the form of key=value - --squash Squash all changes from source into a single commit on destination - --strategy string In case of a merge conflict, this option will force the merge process to automatically favor changes from the dest branch ("dest-wins") or from the source branch("source-wins"). In case no selection is made, the merge process will fail in case of a conflict -``` - - - -### lakectl plugin - -Manage lakectl plugins - -

Synopsis

- -Provides utilities for managing lakectl plugins. - -Plugins are standalone executable files that extend lakectl's functionality. -lakectl discovers plugins by looking for executables in your PATH -that are named with the prefix "lakectl-". - -For example, an executable named "lakectl-myfeature" can be invoked as -"lakectl myfeature [args...]". - -Plugin Naming: - - The executable must start with "lakectl-". - - The part after "lakectl-" becomes the command name users type. - (e.g., "lakectl-foo" -> "lakectl foo") - - The plugin name is used exactly as-is in the command. - (e.g., "lakectl-foo-bar" -> "lakectl foo-bar") - -Installation: - - Place your "lakectl-..." executable file (which may be any executable, - e.g. a Python application) in a directory listed in your PATH. - - Ensure the file has execute permissions. - -Execution: - - When you run "lakectl some-plugin arg1 --flag", lakectl searches for - "lakectl-some-plugin" in PATH. - - If found and executable, it runs the plugin, passing "arg1 --flag" as arguments. - - The plugin inherits environment variables from lakectl. - - Standard output, standard error, and the exit code of the plugin are propagated. - - Built-in lakectl commands always take precedence over plugins. - -Use "lakectl plugin list" to see all detected plugins and any warnings. - - -

Options

- -``` - -h, --help help for plugin -``` - - - -### lakectl plugin help - -Help about any command - -

Synopsis

- -Help provides help for any command in the application. -Simply type plugin help [path to command] for full details. - -``` -lakectl plugin help [command] [flags] -``` - -

Options

- -``` - -h, --help help for help -``` - - - -### lakectl plugin list - -List available lakectl plugins - -

Synopsis

- -Scans the PATH for executables named "lakectl-*" and lists the detected plugins. - -``` -lakectl plugin list [flags] -``` - -

Options

- -``` - -h, --help help for list -``` - - - -### lakectl repo - -Manage and explore repos - -

Options

- -``` - -h, --help help for repo -``` - - - -### lakectl repo create - -Create a new repository - -``` -lakectl repo create [flags] -``` - -

Examples

- -``` -lakectl repo create lakefs://my-repo s3://my-bucket -``` - -

Options

- -``` - -d, --default-branch string the default branch of this repository (default "main") - -h, --help help for create - --sample-data create sample data in the repository -``` - - - -### lakectl repo delete - -Delete existing repository - -``` -lakectl repo delete [flags] -``` - -

Examples

- -``` -lakectl repo delete lakefs://my-repo -``` - -

Options

- -``` - -h, --help help for delete - -y, --yes Automatically say yes to all confirmations -``` - - - -### lakectl repo help - -Help about any command - -

Synopsis

- -Help provides help for any command in the application. -Simply type repo help [path to command] for full details. - -``` -lakectl repo help [command] [flags] -``` - -

Options

- -``` - -h, --help help for help -``` - - - -### lakectl repo list - -List repositories - -``` -lakectl repo list [flags] -``` - -

Options

- -``` - --amount int how many results to return (default 100) - --after string show results after this value (used for pagination) - --prefix string filter results by prefix (used for pagination) - -h, --help help for list -``` - - - - ---------- -### lakectl repo create-bare - -!!! warning - lakeFS plumbing command. Don't use unless you're _really_ sure you know what you're doing. - -Create a new repository with no initial branch or commit - -``` -lakectl repo create-bare [flags] -``` - -

Examples

- -``` -lakectl repo create-bare lakefs://my-repo s3://my-bucket -``` - -

Options

- -``` - -d, --default-branch string the default branch name of this repository (will not be created) (default "main") - -h, --help help for create-bare -``` - - - -### lakectl show - -See detailed information about an entity - -

Options

- -``` - -h, --help help for show -``` - - - -### lakectl show commit - -See detailed information about a commit - -``` -lakectl show commit [flags] -``` - -

Options

- -``` - -h, --help help for commit - --show-meta-range-id show meta range ID -``` - - - -### lakectl show help - -Help about any command - -

Synopsis

- -Help provides help for any command in the application. -Simply type show help [path to command] for full details. - -``` -lakectl show help [command] [flags] -``` - -

Options

- -``` - -h, --help help for help -``` - - - -### lakectl tag - -Create and manage tags within a repository - -

Synopsis

- -Create delete and list tags within a lakeFS repository - -

Options

- -``` - -h, --help help for tag -``` - - - -### lakectl tag create - -Create a new tag in a repository - -``` -lakectl tag create [flags] -``` - -

Examples

- -``` -lakectl tag create lakefs://example-repo/example-tag lakefs://example-repo/2397cc9a9d04c20a4e5739b42c1dd3d8ba655c0b3a3b974850895a13d8bf9917 -``` - -

Options

- -``` - -f, --force override the tag if it exists - -h, --help help for create -``` - - - -### lakectl tag delete - -Delete a tag from a repository - -``` -lakectl tag delete [flags] -``` - -

Options

- -``` - -h, --help help for delete - -y, --yes Automatically say yes to all confirmations -``` - - - -### lakectl tag help - -Help about any command - -

Synopsis

- -Help provides help for any command in the application. -Simply type tag help [path to command] for full details. - -``` -lakectl tag help [command] [flags] -``` - -

Options

- -``` - -h, --help help for help -``` - - - -### lakectl tag list - -List tags in a repository - -``` -lakectl tag list [flags] -``` - -

Examples

- -``` -lakectl tag list lakefs://my-repo -``` - -

Options

- -``` - --amount int how many results to return (default 100) - --after string show results after this value (used for pagination) - --prefix string filter results by prefix (used for pagination) - -h, --help help for list -``` - - - -### lakectl tag show - -Show tag's commit reference - -``` -lakectl tag show [flags] -``` - -

Options

- -``` - -h, --help help for show -``` - - - - -------- - -## Undocumented commands - -!!! warning - These commands are plumbing commands and for internal use only. - Avoid using them unless you're _really_ sure you know what you're doing, or - have been in contact with lakeFS support! - -### lakectl abuse - -!!! warning - lakeFS plumbing command. Don't use unless you're _really_ sure you know what you're doing. - -Abuse a running lakeFS instance. See sub commands for more info. - -

Options

- -``` - -h, --help help for abuse -``` - - - -### lakectl abuse commit - -Commits to the source branch repeatedly - -``` -lakectl abuse commit [flags] -``` - -

Options

- -``` - --amount int amount of commits to do (default 100) - --gap duration duration to wait between commits (default 2s) - -h, --help help for commit -``` - - - -### lakectl abuse create-branches - -Create a lot of branches very quickly. - -``` -lakectl abuse create-branches [flags] -``` - -

Options

- -``` - --amount int amount of things to do (default 1000000) - --branch-prefix string prefix to create branches under (default "abuse-") - --clean-only only clean up past runs - -h, --help help for create-branches - --parallelism int amount of things to do in parallel (default 100) -``` - - - -### lakectl abuse help - -Help about any command - -

Synopsis

- -Help provides help for any command in the application. -Simply type abuse help [path to command] for full details. - -``` -lakectl abuse help [command] [flags] -``` - -

Options

- -``` - -h, --help help for help -``` - - - -### lakectl abuse link-same-object - -Link the same object in parallel. - -``` -lakectl abuse link-same-object [flags] -``` - -

Options

- -``` - --amount int amount of link object to do (default 1000000) - -h, --help help for link-same-object - --key string key used for the test (default "linked-object") - --parallelism int amount of link object to do in parallel (default 100) -``` - - - -### lakectl abuse list - -List from the source ref - -``` -lakectl abuse list [flags] -``` - -

Options

- -``` - --amount int amount of lists to do (default 1000000) - -h, --help help for list - --parallelism int amount of lists to do in parallel (default 100) - --prefix string prefix to list under (default "abuse/") -``` - - - -### lakectl abuse merge - -Merge non-conflicting objects to the source branch in parallel - -``` -lakectl abuse merge [flags] -``` - -

Options

- -``` - --amount int amount of merges to perform (default 1000) - -h, --help help for merge - --parallelism int number of merges to perform in parallel (default 100) -``` - - - -### lakectl abuse random-delete - -Delete keys from a file and generate random delete from the source ref for those keys. - -``` -lakectl abuse random-delete [flags] -``` - -

Options

- -``` - --amount int amount of reads to do (default 1000000) - --from-file string read keys from this file ("-" for stdin) - -h, --help help for random-delete - --parallelism int amount of reads to do in parallel (default 100) -``` - - - -### lakectl abuse random-read - -Read keys from a file and generate random reads from the source ref for those keys. - -``` -lakectl abuse random-read [flags] -``` - -

Options

- -``` - --amount int amount of reads to do (default 1000000) - --from-file string read keys from this file ("-" for stdin) - -h, --help help for random-read - --parallelism int amount of reads to do in parallel (default 100) -``` - - - -### lakectl abuse random-write - -Generate random writes to the source branch - -``` -lakectl abuse random-write [flags] -``` - -

Options

- -``` - --amount int amount of writes to do (default 1000000) - -h, --help help for random-write - --parallelism int amount of writes to do in parallel (default 100) - --prefix string prefix to create paths under (default "abuse/") -``` - - - -### lakectl bisect - -!!! warning - lakeFS plumbing command. Don't use unless you're _really_ sure you know what you're doing. - -Binary search to find the commit that introduced a bug - -

Options

- -``` - -h, --help help for bisect -``` - - - -### lakectl bisect bad - -Set 'bad' commit that is known to contain the bug - -``` -lakectl bisect bad [flags] -``` - -

Options

- -``` - -h, --help help for bad -``` - - - -### lakectl bisect good - -Set current commit as 'good' commit that is known to be before the bug was introduced - -``` -lakectl bisect good [flags] -``` - -

Options

- -``` - -h, --help help for good -``` - - - -### lakectl bisect help - -Help about any command - -

Synopsis

- -Help provides help for any command in the application. -Simply type bisect help [path to command] for full details. - -``` -lakectl bisect help [command] [flags] -``` - -

Options

- -``` - -h, --help help for help -``` - - - -### lakectl bisect log - -Print out the current bisect state - -``` -lakectl bisect log [flags] -``` - -

Options

- -``` - -h, --help help for log -``` - - - -### lakectl bisect reset - -Clean up the bisection state - -``` -lakectl bisect reset [flags] -``` - -

Options

- -``` - -h, --help help for reset -``` - - - -### lakectl bisect run - -Bisecting based on command status code - -``` -lakectl bisect run [flags] -``` - -

Options

- -``` - -h, --help help for run -``` - - - -### lakectl bisect start - -Start a bisect session - -``` -lakectl bisect start [flags] -``` - -

Options

- -``` - -h, --help help for start -``` - - - -### lakectl bisect view - -Current bisect commits - -``` -lakectl bisect view [flags] -``` - -

Options

- -``` - -h, --help help for view -``` - - - -### lakectl cat-hook-output - -!!! warning - lakeFS plumbing command. Don't use unless you're _really_ sure you know what you're doing. - -Cat actions hook output - -``` -lakectl cat-hook-output [flags] -``` - -

Examples

- -``` -lakectl cat-hook-output lakefs://my-repo 20230719152411arS0z6I my_hook_name -``` - -

Options

- -``` - -h, --help help for cat-hook-output -``` - - - -### lakectl cat-sst - -!!! warning - lakeFS plumbing command. Don't use unless you're _really_ sure you know what you're doing. - -Explore lakeFS .sst files - -``` -lakectl cat-sst [flags] -``` - -

Options

- -``` - --amount int how many records to return, or -1 for all records (default -1) - -f, --file string path to an sstable file, or "-" for stdin - -h, --help help for cat-sst -``` - - - -### lakectl docs - -!!! warning - lakeFS plumbing command. Don't use unless you're _really_ sure you know what you're doing. - - - -``` -lakectl docs [outfile] [flags] -``` - -

Options

- -``` - -h, --help help for docs -``` - - - -### lakectl find-merge-base - -!!! warning - lakeFS plumbing command. Don't use unless you're _really_ sure you know what you're doing. - -Find the commits for the merge operation - -``` -lakectl find-merge-base [flags] -``` - -

Options

- -``` - -h, --help help for find-merge-base -``` - - - -### lakectl refs-dump - -!!! warning - lakeFS plumbing command. Don't use unless you're _really_ sure you know what you're doing. - -Dumps refs (branches, commits, tags) to the underlying object store - -``` -lakectl refs-dump [flags] -``` - -

Options

- -``` - -h, --help help for refs-dump - -o, --output string output filename (default stdout) - --poll-interval duration poll status check interval (default 3s) - --timeout duration timeout for polling status checks (default 1h0m0s) -``` - - - -### lakectl refs-restore - -!!! warning - lakeFS plumbing command. Don't use unless you're _really_ sure you know what you're doing. - -Restores refs (branches, commits, tags) from the underlying object store to a bare repository - -

Synopsis

- -restores refs (branches, commits, tags) from the underlying object store to a bare repository. - -This command is expected to run on a bare repository (i.e. one created with 'lakectl repo create-bare'). -Since a bare repo is expected, in case of transient failure, delete the repository and recreate it as bare and retry. - -``` -lakectl refs-restore [flags] -``` - -

Examples

- -``` -aws s3 cp s3://bucket/_lakefs/refs_manifest.json - | lakectl refs-restore lakefs://my-bare-repository --manifest - -``` - -

Options

- -``` - -h, --help help for refs-restore - --manifest refs-dump path to a refs manifest json file (as generated by refs-dump). Alternatively, use "-" to read from stdin - --poll-interval duration poll status check interval (default 3s) - --timeout duration timeout for polling status checks (default 1h0m0s) -``` - - - -### lakectl usage - -!!! warning - lakeFS plumbing command. Don't use unless you're _really_ sure you know what you're doing. - -Usage reports from lakeFS - -

Options

- -``` - -h, --help help for usage -``` - - - -### lakectl usage help - -Help about any command - -

Synopsis

- -Help provides help for any command in the application. -Simply type usage help [path to command] for full details. - -``` -lakectl usage help [command] [flags] -``` - -

Options

- -``` - -h, --help help for help -``` - - - - ---------- -### lakectl usage summary - -!!! warning - lakeFS plumbing command. Don't use unless you're _really_ sure you know what you're doing. - -Summary reports from lakeFS - -``` -lakectl usage summary [flags] -``` - -

Options

- -``` - -h, --help help for summary -``` - - - diff --git a/docs/src/reference/configuration.md b/docs/src/reference/configuration.md deleted file mode 100644 index 10543580ba1..00000000000 --- a/docs/src/reference/configuration.md +++ /dev/null @@ -1,511 +0,0 @@ ---- -title: lakeFS Server Configuration -description: Configuration reference for lakeFS Server ---- - -# lakeFS Server Configuration - - -Configuring lakeFS is done using a YAML configuration file and/or environment variable. -The configuration file's location can be set with the '--config' flag. If not specified, the first file found in the following order will be used: - -1. `./config.yaml` -1. `$HOME/lakefs/config.yaml` -1. `/etc/lakefs/config.yaml` -1. `$HOME/.lakefs.yaml` - -Configuration items can each be controlled by an environment variable. The variable name will have a prefix of `LAKEFS_`, followed by the name of the configuration, replacing every `.` with a `_`. - -!!! example - `LAKEFS_LOGGING_LEVEL` controls `logging.level`. - -This reference uses `.` to denote the nesting of values. - -## Reference - -* `listen_address` `(string : "0.0.0.0:8000")` - A `:` structured string representing the address to listen on - -### logging - -* `logging.format` `(one of ["json", "text"] : "text")` - Format to output log message in -* `logging.level` `(one of ["TRACE", "DEBUG", "INFO", "WARN", "ERROR", "NONE"] : "INFO")` - Logging level to output -* `logging.audit_log_level` `(one of ["TRACE", "DEBUG", "INFO", "WARN", "ERROR", "NONE"] : "DEBUG")` - Audit logs level to output. - - !!! note - In case you configure this field to be lower than the main logger level, you won't be able to get the [audit logs](./auditing.md) - -* `logging.output` `(string : "-")` - A path or paths to write logs to. A `-` means the standard output, `=` means the standard error. -* `logging.file_max_size_mb` `(int : 100)` - Output file maximum size in megabytes. -* `logging.files_keep` `(int : 0)` - Number of log files to keep, default is all. - -### actions - -* `actions.enabled` `(bool : true)` - Setting this to false will block hooks from being executed. -* `actions.lua.net_http_enabled` `(bool : false)` - Setting this to true will load the `net/http` package. -* `actions.env.enabled` `(bool : true)` - Environment variables accessible by hooks, disabled values evaluated to empty strings -* `actions.env.prefix` `(string : "LAKEFSACTION_")` - Access to environment variables is restricted to those with the prefix. When environment access is enabled and no prefix is provided, all variables are accessible. - -### database - -Configuration section for the lakeFS key-value store database. - -* `database.type` `(string ["postgres"|"dynamodb"|"cosmosdb"|"redis"|"local"] : )` - lakeFS database type - - !!! note - The `redis` database type is available in **lakeFS Enterprise** - - -=== "`database.postgres`" - - * `database.postgres.connection_string` `(string : "postgres://localhost:5432/postgres?sslmode=disable")` - PostgreSQL connection string to use - * `database.postgres.max_open_connections` `(int : 25)` - Maximum number of open connections to the database - * `database.postgres.max_idle_connections` `(int : 25)` - Maximum number of connections in the idle connection pool - * `database.postgres.connection_max_lifetime` `(duration : 5m)` - Sets the maximum amount of time a connection may be reused `(valid units: ns|us|ms|s|m|h)` - -=== "`database.dynamodb`" - - * `database.dynamodb.table_name` `(string : "kvstore")` - Table used to store the data - * `database.dynamodb.scan_limit` `(int : 1025)` - Maximal number of items per page during scan operation - - !!! note - Refer to the following [AWS documentation](https://docs.aws.amazon.com/amazondynamodb/latest/developerguide/Query.html#Query.Limit) for further information - - * `database.dynamodb.endpoint` `(string : )` - Endpoint URL for database instance - * `database.dynamodb.aws_region` `(string : )` - AWS Region of database instance - * `database.dynamodb.aws_profile` `(string : )` - AWS named profile to use - * `database.dynamodb.aws_access_key_id` `(string : )` - AWS access key ID - * `database.dynamodb.aws_secret_access_key` `(string : )` - AWS secret access key - - !!! note - `endpoint` `aws_region` `aws_access_key_id` `aws_secret_access_key` are not required and used mainly for experimental purposes when working with DynamoDB with different AWS credentials. - - * `database.dynamodb.health_check_interval` `(duration : 0s)` - Interval to run health check for the DynamoDB instance (won't run if equal to 0). - * `database.dynamodb.max_attempts` `(int : 10)` - The maximum number of attempts to perform on a DynamoDB request - * `database.dynamodb.max_connections` `(int : 0)` - The maximum number of connections to DynamoDB. 0 means no limit. - * `database.dynamodb.credentials_cache_expiry_window` `(duration : 200s)` - The expiry window for cached AWS credentials. This controls how long before credentials expire that the SDK will attempt to refresh them. - * `database.dynamodb.credentials_cache_expiry_window_jitter_fraction` `(float : 0.5)` - The jitter fraction (0.0-1.0) for credentials cache expiry. This adds randomness to prevent thundering herd effects when refreshing credentials. A value of 0.5 means up to 50% jitter. - -=== "`database.cosmosdb`" - - * `database.cosmosdb.key` `(string : "")` - If specified, will - be used to authenticate to the CosmosDB account. Otherwise, Azure SDK - default authentication (with env vars) will be used. - * `database.cosmosdb.endpoint` `(string : "")` - CosmosDB account endpoint, e.g. `https://.documents.azure.com/`. - * `database.cosmosdb.database` `(string : "")` - CosmosDB database name. - * `database.cosmosdb.container` `(string : "")` - CosmosDB container name. - * `database.cosmosdb.throughput` `(int32 : )` - CosmosDB container's RU/s. If not set - the default CosmosDB container throughput is used. - * `database.cosmosdb.autoscale` `(bool : false)` - If set, CosmosDB container throughput is autoscaled (See CosmosDB docs for minimum throughput requirement). Otherwise, uses "Manual" mode ([Docs](https://learn.microsoft.com/en-us/azure/cosmos-db/provision-throughput-autoscale)). - -=== "`database.local`" - - * `database.local.path` `(string : "~/lakefs/metadata")` - Local path on the filesystem to store embedded KV metadata, like branches and uncommitted entries - * `database.local.sync_writes` `(bool: true)` - Ensure each write is written to the disk. Disable to increase performance - * `database.local.prefetch_size` `(int: 256)` - How many items to prefetch when iterating over embedded KV records - * `database.local.enable_logging` `(bool: false)` - Enable trace logging for local driver - -### auth - -* `auth.login_duration` `(time duration : "168h")` - The duration the login token is valid for. -* `auth.login_max_duration` `(time duration : "336h")` - The maximum duration user can ask for a login token. - -#### auth.cache - -* `auth.cache.enabled` `(bool : true)` - Whether to cache access credentials and user policies in-memory. Can greatly improve throughput when enabled. -* `auth.cache.size` `(int : 1024)` - How many items to store in the auth cache. Systems with a very high user count should use a larger value at the expense of ~1kb of memory per cached user. -* `auth.cache.ttl` `(time duration : "20s")` - How long to store an item in the auth cache. Using a higher value reduces load on the database, but will cause changes longer to take effect for cached users. -* `auth.cache.jitter` `(time duration : "3s")` - A random amount of time between 0 and this value is added to each item's TTL. This is done to avoid a large bulk of keys expiring at once and overwhelming the database. - -#### auth.encrypt - -* `auth.encrypt.secret_key` `(string : "" - required)` - A random (cryptographically safe) generated string that is used for encryption and HMAC signing. - - !!! warning - It is best to keep this somewhere safe such as KMS or Hashicorp Vault, and provide it to the system at run time. - -#### auth.api - -* `auth.api.endpoint` `(string: "")` - URL to external Authorization Service described at [authorization.yml](https://github.com/treeverse/lakeFS/blob/master/api/authorization.yml); (e.g., "https://external.service/api/v1"). -* `auth.api.token` `(string: "")` - API token used to authenticate requests to api endpoint (e.g., eyJhbGciOiJIUzI1NiIsInR5...). -* `auth.api.health_check_timeout` `(time duration : "20s")` - Timeout duration for external auth API health check. -* `auth.api.skip_health_check` `(bool : false)` - Skip external auth API health check. - -#### auth.authentication_api - -* `auth.authentication_api.endpoint` `(string : "")` - URL to external Authentication Service described at [authentication.yml](https://github.com/treeverse/lakeFS/blob/master/api/authentication.yml). -* `auth.authentication_api.external_principals_enabled` `(bool : false)` - If true, external principals API will be enabled, e.g auth service and login api's. - -#### auth.remote_authenticator - -* `auth.remote_authenticator.enabled` `(bool : false)` - If specified, also authenticate users via this Remote Authenticator server. -* `auth.remote_authenticator.endpoint` `(string : "" - required)` - Endpoint URL of the remote authentication service (e.g. https://my-auth.example.com/auth). -* `auth.remote_authenticator.default_user_group` `(string : "Viewers")` - Create users in this group (i.e `Viewers`, `Developers`, etc). -* `auth.remote_authenticator.request_timeout` `(time duration : 10s)` - If specified, timeout for remote authentication requests. - -#### auth.oidc - -* `auth.oidc.default_initial_groups` `(string[] : [])` - By default, OIDC users will be assigned to these groups. -* `auth.oidc.initial_groups_claim_name` `(string : "")` - Use this claim from the ID token to provide the initial group for new users. This will take priority if `auth.oidc.default_initial_groups` is also set. -* `auth.oidc.friendly_name_claim_name` `(string : "")` - If specified, the value from the claim with this name will be used as the user's display name. -* `auth.oidc.persist_friendly_name` `(bool : false)` - If set to `true`, the friendly name is persisted to the KV store and can be displayed in the user list. This is meant to be used in conjunction with `auth.oidc.friendly_name_claim_name`. -* `auth.oidc.validate_id_token_claims` `(map[string]string : {})` - When a user tries to access lakeFS, validate that the ID token contains these claims with the corresponding values. - -#### auth.cookie_auth_verification - -* `auth.cookie_auth_verification.validate_id_token_claims` `(map[string]string : {})` - When a user tries to access lakeFS, validate that the ID token contains these claims with the corresponding values. -* `auth.cookie_auth_verification.default_initial_groups` `(string[] : [])` - By default, users will be assigned to these groups. -* `auth.cookie_auth_verification.initial_groups_claim_name` `(string : "")` - Use this claim from the ID token to provide the initial group for new users. This will take priority if `auth.cookie_auth_verification.default_initial_groups` is also set. -* `auth.cookie_auth_verification.friendly_name_claim_name` `(string : "")` - If specified, the value from the claim with this name will be used as the user's display name. -* `auth.cookie_auth_verification.persist_friendly_name` `(bool : false)` - If set to `true`, the friendly name is persisted to the KV store and can be displayed in the user list. This is meant to be used in conjunction with `auth.cookie_auth_verification.friendly_name_claim_name`. -* `auth.cookie_auth_verification.external_user_id_claim_name` - `(string : "")` - If specified, the value from the claim with this name will be used as the user's id name. -* `auth.cookie_auth_verification.auth_source` - `(string : "")` - If specified, user will be labeled with this auth source. - -#### auth.ui_config - -* `auth.ui_config.rbac` `(string: "none")` - "none", "simplified", "external" or "internal". - - `"none"` - lakeFS runs without an RBAC authorization service. No additional users, groups, or policies can be created. - - `"simplified"` - lakeFS uses ACL as the authorization service. You must implement your own ACL service and connect it to lakeFS. See the [implementation guide](../security/ACL-server-implementation.md) and [ACL overview](../security/access-control-lists.md) for details. - - `"external"` - For lakeFS cloud - lakeFS cloud integrates with an external RBAC authorization service. - - `"internal"` - Available in the Enterprise lakeFS version. Uses the built-in RBAC authorization service. More information is available [here](../security/rbac.md). - -* `auth.ui_config.login_url` `(string : "")` - An absolute or relative URL to your IdP’s login page, used to authenticate to lakeFS via SSO with OIDC or SAML. -* `auth.ui_config.login_failed_message` `(string : "The credentials don't match.")` - Custom error message displayed when authentication fails on the login form (defaults to "The credentials don't match." if not specified). -* `auth.ui_config.logout_url` `(string : "")`- URL to redirect users to when they logout from lakeFS (defaults to "/logout" if not specified). -* `auth.ui_config.use_login_placeholders` `(bool: false)` - If set to true, the login page will show placeholders for the _Access Key ID_ and _Secret Access Key_ (_Username_ and _Password_) (defaults to "false" if not specified). - -### blockstore - -* `blockstore.type` `(one of ["local", "s3", "gs", "azure", "mem"] : required)`. Block adapter to use. This controls where the underlying data will be stored -* `blockstore.default_namespace_prefix` `(string : )` - Use this to help your users choose a storage namespace for their repositories. - If specified, the storage namespace will be filled with this default value as a prefix when creating a repository from the UI. - The user may still change it to something else. -* `blockstore.signing.secret_key` `(string : required)` - A random generated string that is used for HMAC signing when using get/link physical address - -=== "`blockstore.local`" - - !!! note - local blockstore is supported for POSIX compliant filesystems only. - - * `blockstore.local.path` `(string: "~/lakefs/data/block")` - When using the local Block Adapter, which directory to store files in - * `blockstore.local.import_enabled` `(bool: false)` - Enable import for local Block Adapter, relevant only if you are using shared location - * `blockstore.local.import_hidden` `(bool: false)` - When enabled import will scan and import any file or folder that starts with a dot character. - * `blockstore.local.allowed_external_prefixes` `([]string: [])` - List of absolute path prefixes used to match any access for external location (ex: /var/data/). Empty list mean no access to external location. - -=== "`blockstore.s3`" - - * `blockstore.s3.region` `(string : "us-east-1")` - Default region for lakeFS to use when interacting with S3. - * `blockstore.s3.profile` `(string : )` - If specified, will be used as a [named credentials profile](https://docs.aws.amazon.com/cli/latest/userguide/cli-configure-files.html#cli-configure-files-using-profiles) - * `blockstore.s3.credentials_file` `(string : )` - If specified, will be used as a [credentials file](https://docs.aws.amazon.com/cli/latest/userguide/cli-configure-files.html) - * `blockstore.s3.credentials.access_key_id` `(string : )` - If specified, will be used as a static set of credential - * `blockstore.s3.credentials.secret_access_key` `(string : )` - If specified, will be used as a static set of credential - * `blockstore.s3.credentials.session_token` `(string : )` - If specified, will be used as a static session token - * `blockstore.s3.endpoint` `(string : )` - If specified, custom endpoint for the AWS S3 API (https://s3_compatible_service_endpoint:port) - * `blockstore.s3.force_path_style` `(bool : false)` - When true, use path-style S3 URLs (https:/// instead of https://.) - * `blockstore.s3.discover_bucket_region` `(bool : true)` - (Can be turned off if the underlying S3 bucket doesn't support the GetBucketRegion API). - * `blockstore.s3.skip_verify_certificate_test_only` `(bool : false)` - Skip certificate verification while connecting to the storage endpoint. Should be used only for testing. - * `blockstore.s3.server_side_encryption` `(string : )` - Server side encryption format used (Example on AWS using SSE-KMS while passing "aws:kms") - * `blockstore.s3.server_side_encryption_kms_key_id` `(string : )` - Server side encryption KMS key ID - * `blockstore.s3.pre_signed_expiry` `(time duration : "15m")` - Expiry of pre-signed URL. - * `blockstore.s3.pre_signed_endpoint` `(string : )` - Custom endpoint for pre-signed URLs. - * `blockstore.s3.disable_pre_signed` `(bool : false)` - Disable use of pre-signed URL. - * `blockstore.s3.disable_pre_signed_ui` `(bool : true)` - Disable use of pre-signed URL in the UI. - * `blockstore.s3.disable_pre_signed_multipart` `(bool : )` - Disable use of pre-signed multipart upload **experimental**, enabled on s3 block adapter with presign support. - * `blockstore.s3.client_log_request` `(bool : false)` - Set SDK logging bit to log requests - * `blockstore.s3.client_log_retries` `(bool : false)` - Set SDK logging bit to log retries - -=== "`blockstore.azure`" - - * `blockstore.azure.storage_account` `(string : )` - If specified, will be used as the Azure storage account - * `blockstore.azure.storage_access_key` `(string : )` - If specified, will be used as the Azure storage access key - * `blockstore.azure.pre_signed_expiry` `(time duration : "15m")` - Expiry of pre-signed URL. - * `blockstore.azure.disable_pre_signed` `(bool : false)` - Disable use of pre-signed URL. - * `blockstore.azure.disable_pre_signed_ui` `(bool : true)` - Disable use of pre-signed URL in the UI. - * ~~`blockstore.azure.china_cloud`~~ `(bool : false)` - Enable for using lakeFS on Azure China Cloud. - - !!! warning "Deprecated" - Please use `blockstore.azure.domain` - - * `blockstore.azure.domain` `(string : blob.core.windows.net)` - Enables support of different Azure cloud domains. - - Current supported domains (in Beta stage): [`blob.core.chinacloudapi.cn`, `blob.core.usgovcloudapi.net`] - -=== "`blockstore.gs`" - - * `blockstore.gs.credentials_file` `(string : )` - If specified will be used as a file path of the JSON file that contains your Google service account key - * `blockstore.gs.credentials_json` `(string : )` - If specified will be used as JSON string that contains your Google service account key (when credentials_file is not set) - * `blockstore.gs.data_credentials_file` `(string : )` - If specified will be used as a file path of the JSON file that contains your Google service account key for data operations **experimental** - * `blockstore.gs.data_credentials_json` `(string : )` - If specified will be used as JSON string that contains your Google service account key for data operations **experimental** - * `blockstore.gs.pre_signed_expiry` `(time duration : "15m")` - Expiry of pre-signed URL. - * `blockstore.gs.disable_pre_signed` `(bool : false)` - Disable use of pre-signed URL. - * `blockstore.gs.disable_pre_signed_ui` `(bool : true)` - Disable use of pre-signed URL in the UI. - * `blockstore.gs.server_side_encryption_customer_supplied` `(string : )` - Server side encryption with AES key in hex format, exclusive with key ID below - * `blockstore.gs.server_side_encryption_kms_key_id` `(string : )` - Server side encryption KMS key ID, exclusive with above - -### graveler - -* `graveler.ensure_readable_root_namespace` `(bool: true)` - When creating a new repository use this to verify that lakeFS has access to the root of the underlying storage namespace. Set `false` only if lakeFS should not have access (i.e pre-sign mode only). -* `graveler.max_batch_delay` `(duration : 3ms)` - Controls the server batching period for references store operations. -* `graveler.background.rate_limit` `(int : 0)` - Requests per seconds limit on background work performed (default: 0 - unlimited), like deleting committed staging tokens. - -#### graveler.repository_cache - -* `graveler.repository_cache.size` `(int : 1000)` - How many items to store in the repository cache. -* `graveler.repository_cache.ttl` `(time duration : "5s")` - How long to store an item in the repository cache. -* `graveler.repository_cache.jitter` `(time duration : "2s")` - A random amount of time between 0 and this value is added to each item's TTL. - -#### graveler.commit_cache - -* `graveler.commit_cache.size` `(int : 50000)` - How many items to store in the commit cache. -* `graveler.commit_cache.ttl` `(time duration : "10m")` - How long to store an item in the commit cache. -* `graveler.commit_cache.jitter` `(time duration : "2s")` - A random amount of time between 0 and this value is added to each item's TTL. - -### committed - -* `committed.block_storage_prefix` (`string` : `_lakefs`) - Prefix for metadata file storage - in each repository's storage namespace -* `committed.sstable.memory.cache_size_bytes` (`int` : `400_000_000`) - maximal size of - in-memory cache used for each SSTable reader. - -#### committed.local_cache - -An object describing the local (on-disk) cache of metadata from permanent storage. - -* `committed.local_cache.size_bytes` (`int` : `1073741824`) - bytes for local cache to use on disk. The cache may use more storage for short periods of time. -* `committed.local_cache.dir` (`string`, `~/lakefs/data/cache`) - directory to store local cache. -* `committed.local_cache.range_proportion` (`float` : `0.9`) - proportion of local cache to - use for storing ranges (leaves of committed metadata storage). -* `committed.local_cache.range.open_readers` (`int` : `500`) - maximal number of unused open - SSTable readers to keep for ranges. -* `committed.local_cache.range.num_shards` (`int` : `30`) - sharding factor for open SSTable - readers for ranges. Should be at least `sqrt(committed.local_cache.range.open_readers)`. -* `committed.local_cache.metarange_proportion` (`float` : `0.1`) - proportion of local cache - to use for storing metaranges (roots of committed metadata storage). -* `committed.local_cache.metarange.open_readers` (`int` : `50`) - maximal number of unused open - SSTable readers to keep for metaranges. -* `committed.local_cache.metarange.num_shards` (`int` : `10`) - sharding factor for open - SSTable readers for metaranges. Should be at least - `sqrt(committed.local_cache.metarange.open_readers)`. - -#### committed.permanent - -* `committed.permanent.min_range_size_bytes` (`int` : `0`) - Smallest allowable range in - metadata. Increase to somewhat reduce random access time on committed metadata, at the cost - of increased committed metadata storage cost. -* `committed.permanent.max_range_size_bytes` (`int` : `20971520`) - Largest allowable range in - metadata. Should be close to the size at which fetching from remote storage becomes linear. -* `committed.permanent.range_raggedness_entries` (`int` : `50_000`) - Average number of object - pointers to store in each range (subject to `min_range_size_bytes` and - `max_range_size_bytes`). - -### email - -* `email.smtp_host` `(string)` - A string representing the URL of the SMTP host. -* `email.smtp_port` (`int`) - An integer representing the port of the SMTP service (465, 587, 993, 25 are some standard ports) -* `email.use_ssl` (`bool : false`) - Use SSL connection with SMTP host. -* `email.username` `(string)` - A string representing the username of the specific account at the SMTP. It's recommended to provide this value at runtime from a secret vault of some sort. -* `email.password` `(string)` - A string representing the password of the account. It's recommended to provide this value at runtime from a secret vault of some sort. -* `email.local_name` `(string)` - A string representing the hostname sent to the SMTP server with the HELO command. By default, "localhost" is sent. -* `email.sender` `(string)` - A string representing the email account which is set as the sender. -* `email.limit_every_duration` `(duration : 1m)` - The average time between sending emails. If zero is entered, there is no limit to the amount of emails that can be sent. -* `email.burst` `(int: 10)` - Maximal burst of emails before applying `limit_every_duration`. The zero value means no burst and therefore no emails can be sent. -* `email.lakefs_base_url` `(string : "http://localhost:8000")` - A string representing the base lakeFS endpoint to be directed to when emails are sent inviting users, reseting passwords etc. - -### gateways - -* `gateways.s3.domain_name` `(string : "s3.local.lakefs.io")` - a FQDN - representing the S3 endpoint used by S3 clients to call this server - (`*.s3.local.lakefs.io` always resolves to 127.0.0.1, useful for - local development, if using [virtual-host addressing](https://docs.aws.amazon.com/AmazonS3/latest/userguide/VirtualHosting.html). -* `gateways.s3.region` `(string : "us-east-1")` - AWS region we're pretending to be in, it should match the region configuration used in AWS SDK clients -* `gateways.s3.fallback_url` `(string)` - If specified, requests with a non-existing repository will be forwarded to this URL. This can be useful for using lakeFS side-by-side with S3, with the URL pointing at an [S3Proxy](https://github.com/gaul/s3proxy) instance. -* `gateways.s3.verify_unsupported` `(bool : true)` - The S3 gateway errors on unsupported requests, but when disabled, defers to target-based handlers. - -### tls - -* `tls.enabled` `(bool :false)` - Enable TLS listening. The `listen_address` will be used to serve HTTPS requests. (mainly for local development) -* `tls.cert_file` `(string : )` - Server certificate file path used while serve HTTPS (.cert or .crt file - signed certificates). -* `tls.key_file` `(string : )` - Server secret key file path used whie serve HTTPS (.key file - private key). - -### stats - -* `stats.enabled` `(bool : true)` - Whether to periodically collect anonymous usage statistics -* `stats.flush_interval` `(duration : 30s)` - Interval used to post anonymous statistics collected -* `stats.flush_size` `(int : 100)` - A size (in records) of anonymous statistics collected in which we post - -### installation - -* `installation.user_name` `(string : )` - When specified, an initial admin user will be created when the server is first run. Works only when `database.type` is set to local. Requires `installation.access_key_id` and `installation.secret_access_key`. -* `installation.access_key_id` `(string : )` - Admin's initial access key id (used once in the initial setup process) -* `installation.secret_access_key` `(string : )` - Admin's initial secret access key (used once in the initial setup process) -* `installation.allow_inter_region_storage` `(bool : true)` - Allow storage in a different region than the one the server is running in. - -### usage_report - -* `usage_report.enabled` `(bool : true)` - Store API and Gateway usage reports into key-value store. -* `usage_report.flush_interval` `(duration : 5m)` - Sets interval for flushing in-memory usage data to key-value store. - -### ui - -* `ui.enabled` `(bool: true)` - Whether to serve the embedded UI from the binary - -### security - -* `security.audit_check_interval` `(duration : 24h)` - Duration in which we check for security audit. - -### garbage collection - -* `ugc.prepare_max_file_size` `(int: 125829120)` - Uncommitted garbage collection prepare request, limit the produced file maximum size -* `ugc.prepare_interval` `(duraction: 1m)` - Uncommitted garbage collection prepare request, limit produce time to interval - -## Using Environment Variables - -All the configuration variables can be set or overridden using environment variables. - -To set an environment variable, prepend `LAKEFS_` to its name, convert it to upper case, and replace `.` with `_`: - -For example, `logging.format` becomes `LAKEFS_LOGGING_FORMAT`, `blockstore.s3.region` becomes `LAKEFS_BLOCKSTORE_S3_REGION`, etc. - -To set a value into a `map[string]string` type field, use the syntax `key1=value1,key2=value2,...` - -## Example Configurations - -!!! example "Local Development with PostgreSQL database" - - ```yaml - --- - listen_address: "0.0.0.0:8000" - - database: - type: "postgres" - postgres: - connection_string: "postgres://localhost:5432/postgres?sslmode=disable" - - logging: - format: text - level: DEBUG - output: "-" - - auth: - encrypt: - secret_key: "10a718b3f285d89c36e9864494cdd1507f3bc85b342df24736ea81f9a1134bcc" - - blockstore: - type: local - local: - path: "~/lakefs/dev/data" - - gateways: - s3: - region: us-east-1 - ``` - - -!!! example "AWS Deployment with DynamoDB database" - - ```yaml - --- - logging: - format: json - level: WARN - output: "-" - - database: - type: "dynamodb" - dynamodb: - table_name: "kvstore" - - auth: - encrypt: - secret_key: "10a718b3f285d89c36e9864494cdd1507f3bc85b342df24736ea81f9a1134bcc" - - blockstore: - type: s3 - s3: - region: us-east-1 # optional, fallback in case discover from bucket is not supported - credentials_file: /secrets/aws/credentials - profile: default - - ``` - -!!! example "Google Storage" - - ```yaml - --- - logging: - format: json - level: WARN - output: "-" - - database: - type: "postgres" - postgres: - connection_string: "postgres://user:pass@lakefs.rds.amazonaws.com:5432/postgres" - - auth: - encrypt: - secret_key: "10a718b3f285d89c36e9864494cdd1507f3bc85b342df24736ea81f9a1134bcc" - - blockstore: - type: gs - gs: - credentials_file: /secrets/lakefs-service-account.json - - ``` - -!!! example "MinIO" - - ```yaml - --- - logging: - format: json - level: WARN - output: "-" - - database: - type: "postgres" - postgres: - connection_string: "postgres://user:pass@lakefs.rds.amazonaws.com:5432/postgres" - - auth: - encrypt: - secret_key: "10a718b3f285d89c36e9864494cdd1507f3bc85b342df24736ea81f9a1134bcc" - - blockstore: - type: s3 - s3: - force_path_style: true - endpoint: http://localhost:9000 - discover_bucket_region: false - credentials: - access_key_id: minioadmin - secret_access_key: minioadmin - - ``` - -!!! example "Azure blob storage" - - ```yaml - --- - logging: - format: json - level: WARN - output: "-" - - database: - type: "cosmosdb" - cosmosdb: - key: "ExampleReadWriteKeyMD7nkPOWgV7d4BUjzLw==" - endpoint: "https://lakefs-account.documents.azure.com:443/" - database: "lakefs-db" - container: "lakefs-container" - - auth: - encrypt: - secret_key: "10a718b3f285d89c36e9864494cdd1507f3bc85b342df24736ea81f9a1134bcc" - - blockstore: - type: azure - azure: - storage_account: exampleStorageAcount - storage_access_key: ExampleAcessKeyMD7nkPOWgV7d4BUjzLw== - - ``` diff --git a/docs/src/reference/monitor.md b/docs/src/reference/monitor.md deleted file mode 100644 index 761b0390165..00000000000 --- a/docs/src/reference/monitor.md +++ /dev/null @@ -1,88 +0,0 @@ ---- -title: Monitoring using Prometheus -description: A guide to monitoring your lakeFS Installation with Prometheus. ---- - -# Monitoring using Prometheus - -## Example prometheus.yml - -lakeFS exposes metrics through the same port used by the lakeFS service, using the standard `/metrics` path. - -An example could look like this: - -!!! example "`prometheus.yml`" - ```yaml - scrape_configs: - - job_name: lakeFS - scrape_interval: 10s - metrics_path: /metrics - static_configs: - - targets: - - lakefs.example.com:8000 - ``` - -## Metrics exposed by lakeFS - -By default, Prometheus exports metrics with OS process information like memory and CPU. -It also includes Go-specific metrics such as details about GC and a number of goroutines. -You can learn about these default metrics in this [post](https://povilasv.me/prometheus-go-metrics/){: target="_blank" }. - -In addition, lakeFS exposes the following metrics to help monitor your deployment: - -| Name in Prometheus | Description | Labels | -|----------------------------------|-------------------------------------------------------------|--------| -| `api_requests_total` | [lakeFS API](./api.md) requests (counter) | **code**: http status
**method**: http method -| `lakefs_concurrent_requests` | Number of concurrent requests being processed by lakeFS (gauge) | **service**: "api" or "gateway"
**operation**: name of operation -| `api_request_duration_seconds` | Durations of lakeFS API requests (histogram) |
**operation**: name of API operation
**code**: http status -| `gateway_request_duration_seconds` | lakeFS [S3-compatible endpoint](./s3.md) request (histogram) |
**operation**: name of gateway operation
**code**: http status -| `blockstore_concurrent_operations` | Number of concurrent blockstore operations (gauge) | **operation**: blockstore operation name
**blockstore_type**: type of blockstore (s3, gs, azure, etc) -| `s3_operation_duration_seconds` | Outgoing S3 operations (histogram) |
**operation**: operation name
**error**: "true" if error, "false" otherwise -| `gs_operation_duration_seconds` | Outgoing Google Storage operations (histogram) |
**operation**: operation name
**error**: "true" if error, "false" otherwise -| `azure_operation_duration_seconds` | Outgoing Azure storage operations (histogram) |
**operation**: operation name
**error**: "true" if error, "false" otherwise -| `kv_request_duration_seconds` | Durations of KV requests(histogram) |
**operation**: name of KV operation
**type**: KV type(dynamodb, postgres, etc) -| `dynamo_request_duration_seconds` | Time spent doing DynamoDB requests | **operation**: DynamoDB operation name -| `dynamo_consumed_capacity_total` | The capacity units consumed by operation | **operation**: DynamoDB operation name -| `dynamo_failures_total` | The total number of errors while working for kv store | **operation**: DynamoDB operation name -| `pgxpool_acquire_count` | PostgreSQL cumulative count of successful acquires from the pool | **db_name** default to the kv table name (kv) -| `pgxpool_acquire_duration_ns` | PostgreSQL total duration of all successful acquires from the pool in nanoseconds | **db_name** default to the kv table name (kv) -| `pgxpool_acquired_conns` | PostgreSQL number of currently acquired connections in the pool | **db_name** default to the kv table name (kv) -| `pgxpool_canceled_acquire_count` | PostgreSQL cumulative count of acquires from the pool that were canceled by a context | **db_name** default to the kv table name (kv) -| `pgxpool_constructing_conns` | PostgreSQL number of conns with construction in progress in the pool | **db_name** default to the kv table name (kv) -| `pgxpool_empty_acquire` | PostgreSQL cumulative count of successful acquires from the pool that waited for a resource to be released or constructed because the pool was empty | **db_name** default to the kv table name (kv) -| `pgxpool_idle_conns` | PostgreSQL number of currently idle conns in the pool | **db_name** default to the kv table name (kv) -| `pgxpool_max_conns` | PostgreSQL maximum size of the pool | **db_name** default to the kv table name (kv) -| `pgxpool_total_conns` | PostgreSQL total number of resources currently in the pool | **db_name** default to the kv table name (kv) - -## Example queries - -!!! note - when using Prometheus functions like [rate](https://prometheus.io/docs/prometheus/latest/querying/functions/#rate){: target="_blank"} or [increase](https://prometheus.io/docs/prometheus/latest/querying/functions/#increase){: target="_blank"}, results are extrapolated and may not be exact. - -!!! example "99th percentile of API request latencies" - - ``` - sum by (operation)(histogram_quantile(0.99, rate(api_request_duration_seconds_bucket[1m]))) - ``` - -!!! example "50th percentile of S3-compatible API latencies" - - ``` - sum by (operation)(histogram_quantile(0.5, rate(gateway_request_duration_seconds_bucket[1m]))) - ``` - -!!! example "Number of errors in outgoing S3 requests" - - ``` - sum by (operation) (increase(s3_operation_duration_seconds_count{error="true"}[1m])) - ``` - -!!! example "Number of open connections to the database" - - ``` - go_sql_stats_connections_open - ``` - -## Example Grafana dashboard - -![Grafana dashboard example](../assets/img/grafana.png){: target="_blank" } diff --git a/docs/src/reference/mount.md b/docs/src/reference/mount.md deleted file mode 100644 index a670e320033..00000000000 --- a/docs/src/reference/mount.md +++ /dev/null @@ -1,924 +0,0 @@ ---- -title: Mount (Everest) -description: Mount a lakeFS path to your local filesystem or in Kubernetes. -status: enterprise ---- - -# Mount (Everest) - -!!! info - Available in **lakeFS Cloud** and **lakeFS Enterprise** - - For the latest updates and changes to lakeFS Mount features, see the [changelog](https://changelog.lakefs.io/everest-changelog/). - -Everest is a complementary binary to lakeFS that allows you to virtually mount a remote lakeFS repository onto a local directory or within a Kubernetes environment. Once mounted, you can access data as if it resides on your local filesystem, using any tool, library, or framework. - - - -## Use Cases - -- **Simplified Data Loading**: Use your existing tools to read and write files directly from the filesystem with no need for custom data loaders or SDKs. -- **Seamless Scalability**: Scale from a few local files to billions without changing your tools or workflow. Use the same code from experimentation to production. -- **Enhanced Performance**: Everest supports billions of files and offers fast, lazy data fetching, making it ideal for optimizing GPU utilization and other performance-sensitive tasks. - ---- - -## Getting Started - -This guide will walk you through setting up and using Everest to mount a lakeFS repository on your local machine. - -!!! tip "New to Everest?" - After completing this getting started guide, we recommend reading the [Core Concepts](#core-concepts) section to understand caching, consistency, and performance characteristics. - -### Prerequisites - -- lakeFS Cloud account or lakeFS Enterprise Version `1.25.0` or higher. -- **Supported OS:** macOS (with NFS V3), Linux and Windows (using CFAPI). -- **Get the Everest Binary:** Everest is a self-contained binary with no installation required. Please [contact us](http://info.lakefs.io/thanks-lakefs-mounts) to get access. - -!!! note "Windows Support" - Everest for Windows is now available. - Currently, only read operations are supported. - See Everest for [Windows](#everest-for-windows) - -### Authentication & Configuration - -Everest uses the same configuration and authentication methods as `lakectl`. It discovers credentials and the server endpoint in the following order: - -1. **Command-Line Flags:** `--lakectl-access-key-id`, `--lakectl-secret-access-key`, and `--lakectl-server-url`. -2. **Environment Variables:** `LAKECTL_*` or `EVEREST_LAKEFS_*` prefixed variables. -3. **Configuration File:** `~/.lakectl.yaml` (or the file specified by `--lakectl-config`). - -

Authentication Methods

- -Everest will attempt to authenticate in the following order: - -1. **Session Token:** From `EVEREST_LAKEFS_CREDENTIALS_SESSION_TOKEN` or `LAKECTL_CREDENTIALS_SESSION_TOKEN`. If the token is expired, authentication will fail. -2. **lakeFS Key Pair:** Standard access key ID and secret access key (credentials are picked up from lakectl configuration if Everest-specific credentials are not provided). -3. **IAM Authentication:** If your lakeFS environment is configured for [AWS IAM Role Login](../security/external-principals-aws.md), Everest (≥ v0.4.0) can authenticate using your AWS environment (e.g., `AWS_PROFILE`). IAM authentication is only attempted when no static credentials are set. To enable this, [configure your .lakectl.yaml](../security/external-principals-aws.md#lakectl-configuration) with `provider_type: aws_iam`. The token is seamlessly refreshed as long as the AWS session remains valid. - - To configure IAM authentication using environment variables, use the `EVEREST_LAKEFS_*` or `LAKECTL_*` prefix: - ```bash - export EVEREST_LAKEFS_CREDENTIALS_PROVIDER_TYPE=aws_iam - # or - export LAKECTL_CREDENTIALS_PROVIDER_TYPE=aws_iam - ``` - -!!! warning "lakectl Version Compatibility" - If you configure the IAM provider using the same `lakectl.yaml` file that you use for the lakectl CLI, you must upgrade lakectl to version `≥ v1.57.0`. Otherwise, lakectl will raise errors when using it. - -!!! tip "Troubleshooting IAM Presign Requests" - To troubleshoot presign request issues with IAM authentication, you can enable debug logging for presign requests using the environment variable: - ```bash - export EVEREST_LAKEFS_CREDENTIALS_PROVIDER_AWS_IAM_CLIENT_LOG_PRE_SIGNING_REQUEST=true - ``` - -### Create Your First Mount - -Let's mount a prefix from a lakeFS repository to a local directory. In read-only mode, Everest mounts a specific commit ID. If you provide a branch name, it will resolve to the HEAD commit at the time of mounting. - -1. **Mount the repository:** - This command mounts the `datasets/pets/` prefix from the `main` branch of the `image-repo` repository into a new local directory named `./pets`. - - ```bash - everest mount "lakefs://image-repo/main/datasets/pets/" "./pets" - ``` - -2. **Explore the data:** - You can now use standard filesystem commands to interact with your data. Files are downloaded lazily only when you access their content. - - ```bash - # List files - this only fetches metadata - ls -l "./pets/dogs/" - - # Find files - find ./pets -name "*.small.jpg" - - # Open a file - this triggers a download - open -a Preview "./pets/dogs/golden_retrievers/cute.jpg" - ``` - -3. **Unmount the directory:** - When you are finished, unmount the directory. - - ```bash - everest umount "./pets" - ``` - ---- - -## Core Concepts - -This section will help you understand how Everest manages performance, consistency, and caching in both local and Kubernetes deployments. - -### Cache Behavior - -Everest uses a local cache to improve performance when accessing files from lakeFS. Understanding how the cache works will help you optimize performance for your specific use case. - -

How Caching Works

- -When you access a file through a mounted lakeFS path, Everest follows this process: - -1. **Lazy Fetching**: Files are only downloaded when their content is accessed (e.g., reading a file, not just listing it with `ls`). -2. **Cache Storage**: When an object is not found in the local cache, Everest fetches the data from the object store and stores it in the cache for subsequent access. -3. **Cache Reuse**: Subsequent reads of the same file are served directly from the cache, eliminating network requests and improving performance. Caches can't be shared between different instances of mount. - -

Default Cache Behavior

- -By default, Everest creates a temporary cache directory when you run `everest mount`. This directory is automatically cleared when the mount is terminated via `everest umount`. - -**Key points:** - -- Each new mount creates a fresh cache directory. -- By default cache location is managed by Everest and cleaned up automatically. -- The cache is ephemeral and does not persist between mount sessions. Unless you specify the cache directory. - -

Persistent Cache

- -To reuse cache data across multiple mount sessions, you can specify a custom cache directory using the `--cache-dir` flag: - -```bash -everest mount lakefs://image-repo/main/datasets/ ./datasets --cache-dir ~/.everest-cache -``` - -**Benefits of persistent cache:** - -- Faster startup times when remounting the same data. -- Reduced bandwidth usage by reusing previously downloaded files. -- Useful for iterative workflows where you repeatedly mount and unmount the same repository. - -

Cache Management

- -Everest manages cached data based on the commit ID of the mounted reference: - -- **Commit-Based Caching**: Each commit ID has its own cache namespace. This ensures that cached data always corresponds to the correct version of your files. -- **Cache Invalidation on Commit**: When you commit changes in write mode using `everest commit`, the mount point's source commit ID is updated to the new HEAD of the branch. As a result, the cache associated with the old commit ID is no longer used, and new data will be cached under the new commit ID. - -!!! tip "Optimizing Cache Size" - Set `--cache-size` to match the amount of data you plan to read or write. A larger cache reduces the need to evict and re-fetch files, improving performance for workloads that access many files. - -### Consistency & Data Behavior - -

File System Consistency

- -Everest mount provides **strong read-after-write consistency** within a single mount point. Once a write operation completes, the data is guaranteed to be available for subsequent read operations on that same mount. - -

lakeFS Consistency

- -Local changes are reflected in lakeFS only after they are **committed** using the `everest commit` command. Until then: - -- Changes are only visible within your local mount point -- Other users or mounts will not see your changes -- If two users mount the same branch, they will not see each other's changes until those changes are committed - -

Sync Operation

- -When you run `everest diff` or `everest commit`, Everest performs a **sync operation** that uploads all local changes to a temporary location in lakeFS for processing. This ensures your changes are safely transferred before being committed to the branch. - -See the [Write-Mode Operations](#write-mode-operations) section for more details on working with writable mounts. - -### Performance Considerations - -Everest achieves high-performance data access through: - -- **Direct Object Store Access**: By default, Everest uses pre-signed URLs to read and write data directly to and from the underlying object store, bypassing the lakeFS server for data transfer. Only metadata operations go through the lakeFS server. -- **Lazy Metadata Loading**: Directory listings are fetched on-demand, allowing you to work with repositories containing billions of files without upfront overhead. -- **Cache Sizing**: Setting an appropriate `--cache-size` prevents frequent eviction and re-fetching. As a rule of thumb, size your cache to accommodate your working set. -- **Network Bandwidth**: Since data is fetched directly from object storage, ensure your network connection has adequate bandwidth for your workload. - -!!! tip "Optimizing for ML Workloads" - For training jobs, consider using a persistent cache directory (`--cache-dir`) and sizing the cache to fit your entire dataset. This eliminates repeated downloads across training epochs. - ---- - -## Working with Data (Local Mount) - -### Read-Only Operations - -Read-only mode is the default and is ideal for data exploration, analysis, and feeding data into local applications without the risk of accidental changes. - -For information about how data is cached and accessed, see the [Cache Behavior](#cache-behavior) section. - -!!! example "Working with Data Locally" - Mount a repository and use your favorite tools directly on the data. - - ```bash - everest mount lakefs://image-repo/main/datasets/pets/ ./pets - - # Run a python script - pytorch_train.py --input ./pets - - # Query data with DuckDB - duckdb "SELECT * FROM read_parquet('pets/labels.parquet')" - - everest umount ./pets - ``` - -### Write-Mode Operations - -By enabling write mode (--write-mode), you can modify, add, and delete files locally and then commit those changes back to the lakeFS branch. -When running in write mode, the lakeFS URI must point to a branch, not a commit ID or a tag. - -

Example of changing data locally

- -1. **Mount in write mode:** - Use the `--write-mode` flag to enable writes. - - ```bash - everest mount lakefs://image-repo/main/datasets/pets/ ./pets --write-mode - ``` - -2. **Modify files:** - Make any changes you need using standard shell commands. - - ```bash - # Add a new file - echo "new data" > ./pets/birds/parrot/cute.jpg - - # Update an existing file - echo "new data" >> ./pets/dogs/golden_retrievers/cute.jpg - - # Delete a file - rm ./pets/cats/persian/cute.jpg - ``` - -3. **Review your changes:** - The `diff` command shows the difference between your local state and the branch's state at the time of mounting. - - ```bash - everest diff ./pets - # Output: - # + added datasets/pets/birds/parrot/cute.jpg - # ~ modified datasets/pets/dogs/golden_retrievers/cute.jpg - # - removed datasets/pets/cats/persian/cute.jpg - ``` - -4. **Commit your changes:** - The `commit` command uploads your local changes and commits them to the source branch in lakeFS. - - ```bash - everest commit ./pets -m "Updated pet images" - ``` - After committing, your local mount will be synced to the new HEAD of the branch. Running `diff` again will show no changes. - -5. **Unmount when finished:** - ```bash - everest umount ./pets - ``` - -!!! info "Write Mode Limitations" - Write mode has some limitations on supported operations. See [Write Mode Limitations](#write-mode-limitations) for details on unsupported operations and modified behaviors. - - ---- - -## Everest for Windows - -Everest mount is available for Windows, in read-only mode. - -### Everest Behavior On Windows Operation System - -CFAPI uses an OS-managed caching system optimized for cloud storage: - -- **Placeholder Files**: Files initially appear as stubs containing only metadata, without actual content -- **On-Demand Hydration**: When accessed, files are "hydrated" - their content is fetched from lakeFS -- **Local Cache**: Subsequent reads are served directly from the local cache without reaching lakeFS -- **Full Download**: Currently, accessing any part of a file, triggers a full download -- **Automatic Eviction**: The OS "dehydrates" (clears content) under storage pressure. All data is deleted after unmount - -### Requirements - -- Everest Mount supports the windows's native [Cloud Filter API](https://learn.microsoft.com/en-us/windows/win32/cfapi/cloud-files-api-portal). No need in additional installations. -- CFAPI Support Starts at Windows 10, version 1709. -- Make sure your Everest version is > `0.6.0` - -#### Skip Scan in Microsoft Protection Preferences (Windows Defender) - -AV will try to fully scan all files contents, please make sure to must disable firewall for the mounted path. -This can be done via the UI or in Powershell With an admin user: - -```powershell -Add-MpPreference -ExclusionPath "Path\To\Mount-Dir" -``` - -Verify exclusions: - -```powershell -Get-MpPreference | Select-Object -ExpandProperty ExclusionPath -``` - -#### Exclude Mount Directory from Windows Search Indexing - -Windows Search automatically tries to index the newly available files recursively walking through the directory structure. -For large repositories this can take a long time and impact performance, so it's recommended to exclude the mount directory from indexing. - -**How To Exclude Your Mount Folder (Recommended)** - -1. Open Settings > Privacy & security > Searching Windows -2. Under **"Excluded Folders"**, click **"Add an excluded folder"** -3. Select your mount directory (e.g., C:\Users\me\mounted) -4. The indexer will stop trying to index that location - -## Everest on Kubernetes (CSI Driver) - -!!! warning "Private Preview" - The CSI Driver is in private preview. Please [contact us](http://info.lakefs.io/thanks-lakefs-mounts) to get access. - The driver currently provides only read-only access. - -The lakeFS CSI (Container Storage Interface) Driver allows Kubernetes Pods to mount and interact with data in a lakeFS repository as if it were a local filesystem. - -**In this section:** - -- [How it Works](#how-it-works) - Understanding the CSI driver architecture -- [Status and Limitations](#status-and-limitations) - Supported platforms and current limitations -- [Prerequisites](#1-prerequisites) - Requirements for deploying the CSI driver -- [Deploy the CSI Driver](#2-deploy-the-csi-driver) - Installation instructions using Helm -- [Use in Pods](#3-use-in-pods) - How to mount lakeFS URIs in your Kubernetes workloads -- [Troubleshooting](#4-troubleshooting) - Common issues and debugging steps - -### How it Works - -The CSI driver, installed in your cluster, orchestrates mount operations on each Kubernetes node. It does not execute `mount` commands directly. Instead, it communicates via a Unix socket with a `systemd` service running on the host. This service is responsible for executing the `everest mount` and `umount` commands, making lakeFS URIs available to Pods as persistent volumes. - -### Status and Limitations - -- **Tested OS:** BottleRocket-OS, Amazon Linux 2, RHEL 8. -- **Kubernetes:** Version `>=1.23.0`. -- **Provisioning:** Static provisioning only. -- **Access Modes:** `ReadOnlyMany` is supported. -- **Security Context:** Setting Pod `securityContext` (e.g., `runAsUser`) is not currently supported. - -### Prerequisites - -1. lakeFS Enterprise Version `1.25.0` or higher. -2. A Kubernetes cluster (`>=1.23.0`) with [Helm](https://helm.sh/docs/intro/install/) installed. -3. Network access from the cluster pods to your lakeFS server. -4. Access to the `treeverse/everest-lakefs-csi-driver` Docker Hub image. - -### Deploy the CSI Driver - -The driver is deployed using a Helm chart. - -1. **Add the lakeFS Helm repository:** - ```bash - helm repo add lakefs https://charts.lakefs.io - helm repo update lakefs - ``` - Verify the chart is available and see the latest version: - ```bash - helm search repo lakefs/everest-lakefs-csi-driver - ``` - To see all available chart versions, use the `-l` flag: - ```bash - helm search repo lakefs/everest-lakefs-csi-driver -l - ``` - -2. **Configure `values.yaml`:** - Create a `values.yaml` file to configure the driver. At a minimum, you must provide credentials for Docker Hub and your lakeFS server. - You can view the complete list of configuration options by running `helm show values lakefs/everest-lakefs-csi-driver --version `. - - !!! example "`values.yaml` example" - ```yaml - # Docker Hub credentials to pull the CSI driver image - imagePullSecret: - token: - username: - - # Default lakeFS credentials for Everest to use when mounting volumes - lakeFSAccessSecret: - keyId: - accessKey: - endpoint: - - node: - # Logging verbosity (0-4 is normal, 5 is most verbose) - logLevel: 4 - # (Advanced) Only set if you have issues with the Everest binary installation on the node. - # This path must end with a "/" - # everestInstallPath: /opt/everest-mount/bin/ - - # (Advanced) Additional environment variables for the CSI driver pod - # extraEnvVars: - # - name: CSI_DRIVER_MOUNT_TIMEOUT - # value: "30s" - ``` - -3. **Install the chart:** - ```bash - helm install -f values.yaml lakefs lakefs/everest-lakefs-csi-driver --version - ``` - -### Use in Pods - -To use the driver, you create a `PersistentVolume` (PV) and a `PersistentVolumeClaim` (PVC) to mount a lakeFS URI into your Pod. - -- **Static Provisioning:** You must set `storageClassName: ""` in your PVC. To ensure a PVC is bound to a specific PV, you can use a `claimRef` in the PV definition to create a one-to-one mapping. -- **Mount URI:** The `lakeFSMountUri` is the only required attribute in the PV spec. -- **Mount Options:** Additional `everest mount` flags can be passed via `mountOptions` in the PV spec. - -

Examples

- -The following examples demonstrate how to mount a lakeFS URI in different Kubernetes scenarios. - -=== "Single Pod and Mount" - - This example mounts a single lakeFS URI into one Pod. - ```yaml - apiVersion: v1 - kind: PersistentVolume - metadata: - name: everest-pv - spec: - capacity: - storage: 100Gi # Required by Kubernetes, but ignored by Everest - accessModes: - - ReadOnlyMany - csi: - driver: csi.everest.lakefs.io - volumeHandle: everest-csi-driver-volume-1 # Must be unique - volumeAttributes: - # Replace with your lakeFS mount URI - lakeFSMountUri: lakefs://// - --- - apiVersion: v1 - kind: PersistentVolumeClaim - metadata: - name: everest-claim - spec: - accessModes: - - ReadOnlyMany - storageClassName: "" # Required for static provisioning - resources: - requests: - storage: 5Gi # Required by Kubernetes, but ignored by Everest - volumeName: everest-pv - --- - apiVersion: v1 - kind: Pod - metadata: - name: everest-app - spec: - containers: - - name: app - image: rockylinux/rockylinux - command: ["/bin/sh", "-c", "ls /data/; tail -f /dev/null"] - volumeMounts: - - name: my-lakefs-data - mountPath: /data - volumes: - - name: my-lakefs-data - persistentVolumeClaim: - claimName: everest-claim - ``` - -=== "Multiple Pods, One Mount (Deployment)" - - A Deployment where multiple Pods share the same lakeFS mount. Each Pod gets its own independent mount. - ```yaml - apiVersion: v1 - kind: PersistentVolume - metadata: - name: multiple-pods-one-pv - spec: - capacity: - storage: 100Gi - accessModes: - - ReadOnlyMany - csi: - driver: csi.everest.lakefs.io - volumeHandle: everest-csi-driver-volume-2 # Must be unique - volumeAttributes: - lakeFSMountUri: lakefs://// - --- - apiVersion: v1 - kind: PersistentVolumeClaim - metadata: - name: multiple-pods-one-claim - spec: - accessModes: - - ReadOnlyMany - storageClassName: "" - resources: - requests: - storage: 5Gi - volumeName: multiple-pods-one-pv - --- - apiVersion: apps/v1 - kind: Deployment - metadata: - name: multi-pod-app - spec: - replicas: 3 - selector: - matchLabels: - app: multi-pod-app - template: - metadata: - labels: - app: multi-pod-app - spec: - containers: - - name: app - image: rockylinux/rockylinux - command: ["/bin/sh", "-c", "ls /data/; tail -f /dev/null"] - volumeMounts: - - name: lakefs-storage - mountPath: /data - volumes: - - name: lakefs-storage - persistentVolumeClaim: - claimName: multiple-pods-one-claim - ``` - -=== "Multiple Mounts, Single Pod" - - A single Pod with two different lakeFS URIs mounted to two different paths. - ```yaml - # Define two PVs and two PVCs, one for each mount. - # PV 1 - apiVersion: v1 - kind: PersistentVolume - metadata: - name: multi-mount-pv-1 - spec: - capacity: { storage: 100Gi } - accessModes: [ReadOnlyMany] - csi: - driver: csi.everest.lakefs.io - volumeHandle: everest-csi-driver-volume-3 # Must be unique - volumeAttributes: - lakeFSMountUri: lakefs://// - --- - # PVC 1 - apiVersion: v1 - kind: PersistentVolumeClaim - metadata: - name: multi-mount-claim-1 - spec: - accessModes: [ReadOnlyMany] - storageClassName: "" - resources: { requests: { storage: 5Gi } } - volumeName: multi-mount-pv-1 - --- - # PV 2 - apiVersion: v1 - kind: PersistentVolume - metadata: - name: multi-mount-pv-2 - spec: - capacity: { storage: 100Gi } - accessModes: [ReadOnlyMany] - csi: - driver: csi.everest.lakefs.io - volumeHandle: everest-csi-driver-volume-4 # Must be unique - volumeAttributes: - lakeFSMountUri: lakefs://// - --- - # PVC 2 - apiVersion: v1 - kind: PersistentVolumeClaim - metadata: - name: multi-mount-claim-2 - spec: - accessModes: [ReadOnlyMany] - storageClassName: "" - resources: { requests: { storage: 5Gi } } - volumeName: multi-mount-pv-2 - --- - # Pod - apiVersion: v1 - kind: Pod - metadata: - name: multi-mount-pod - spec: - containers: - - name: app - image: rockylinux/rockylinux - command: ["/bin/sh", "-c", "echo 'Path 1:'; ls /data1; echo 'Path 2:'; ls /data2; tail -f /dev/null"] - volumeMounts: - - name: lakefs-data-1 - mountPath: /data1 - - name: lakefs-data-2 - mountPath: /data2 - volumes: - - name: lakefs-data-1 - persistentVolumeClaim: - claimName: multi-mount-claim-1 - - name: lakefs-data-2 - persistentVolumeClaim: - claimName: multi-mount-claim-2 - ``` - -=== "StatefulSet (Advanced)" - - Due to the nuances of how StatefulSets manage PersistentVolumeClaims, it is often simpler to use a `Deployment`. - - * **Deletion:** When you delete a StatefulSet, its PVCs are not automatically deleted. You must delete them manually. - * **Replicas > 1:** Using more than one replica requires manually creating a corresponding number of `PersistentVolume` resources, as static provisioning does not automatically create them. - - ```yaml - apiVersion: v1 - kind: PersistentVolume - metadata: - name: sts-simple-mount - labels: - app: sts-app-simple-everest - spec: - capacity: - storage: 100Gi # ignored, required - accessModes: - - ReadOnlyMany - csi: - driver: csi.everest.lakefs.io - volumeHandle: everest-csi-driver-volume-5 # Must be unique - volumeAttributes: - lakeFSMountUri: - --- - apiVersion: apps/v1 - kind: StatefulSet - metadata: - name: sts-app-simple-everest - spec: - replicas: 1 - selector: - matchLabels: - app: sts-app-simple-everest - template: - metadata: - labels: - app: sts-app-simple-everest - spec: - containers: - - name: app - image: rockylinux/rockylinux - command: ["/bin/sh", "-c", "ls /data/; tail -f /dev/null"] - volumeMounts: - - name: sts-simple-mount - mountPath: /data - volumeClaimTemplates: - - metadata: - name: sts-simple-mount - spec: - selector: - matchLabels: - app: sts-app-simple-everest - storageClassName: "" # required for static provisioning - accessModes: [ "ReadOnlyMany" ] - resources: - requests: - storage: 5Gi # ignored, required - ``` - -=== "Mount Options" - - This example demonstrates how to pass various `everest mount` flags via `mountOptions` in the `PersistentVolume` spec. - - ```yaml - apiVersion: v1 - kind: PersistentVolume - metadata: - name: options-demo-pv - spec: - capacity: - storage: 100Gi # ignored, required - accessModes: - - ReadOnlyMany - # everest mount flags are passed here - mountOptions: - # set cache size in bytes - - cache-size 10000000 - # set log level to trace for debugging (very noisy!) - - log-level trace - # WARN: Overriding credentials should only be used in advanced cases. - # It is more secure to rely on the default credentials configured in the CSI driver. - - lakectl-access-key-id - - lakectl-secret-access-key - - lakectl-server-url - csi: - driver: csi.everest.lakefs.io - volumeHandle: everest-csi-driver-volume-6 # Must be unique - volumeAttributes: - lakeFSMountUri: - --- - # PVC and Pod definitions follow... - ``` - -### Troubleshooting - -- Check logs from the CSI driver pods and the application pod that failed to mount. -- Inspect the events and status of the `PV` and `PVC` (`kubectl get pv`, `kubectl get pvc`, `kubectl describe ...`). -- **Advanced: SSH into the Kubernetes node** to inspect the `systemd` service logs for the specific mount operation- - 1. Find the failed mount service: - ```sh - systemctl list-units --type=service | grep everest-lakefs-mount - # Example output: - # everest-lakefs-mount-0.0.8-everest-123.service loaded active running CSI driver FUSE daemon - ``` - 2. Get the status and view the exact command that was executed: - ```sh - systemctl status everest-lakefs-mount-0.0.8-everest-123.service - ``` - 3. View the logs for the service: - ```sh - journalctl -f -u everest-lakefs-mount-0.0.8-everest-123.service - ``` - 4. View full resolved unit: - ```sh - systemctl cat everest-lakefs-mount-0.0.8-everest-123.service - ``` - ---- - -## Command-Line Reference - -This section provides detailed documentation for all Everest CLI commands. For conceptual information about how Everest works, see the [Core Concepts](#core-concepts) section. - -### `everest mount` -Mounts a lakeFS URI to a local directory. - -```bash -everest mount [flags] -``` - -**Tips:** - -- Since the server runs in the background, use `--log-output /path/to/file` to view logs. -- The optimal cache size is the size of the data you are going to read/write. -- To reuse the cache between restarts of the same mount, set the `--cache-dir` flag. -- In read-only mode, if you provide a branch or tag, Everest will resolve and mount the HEAD commit. For a stable mount, use a specific commit ID in the URI. - -**Flags:** - -- `--write-mode`: Enable write mode (default: `false`). -- `--cache-dir`: Directory to cache files. -- `--cache-size`: Size of the local cache in bytes. -- `--cache-create-provided-dir`: If `cache-dir` is provided and does not exist, create it. -- `--listen`: Address for the mount server to listen on. -- `--no-spawn`: Do not spawn a new server; assume one is already running. -- `--protocol`: Protocol to use (default: `nfs`), for Windows use --cfapi. -- `--log-level`: Set logging level. -- `--log-format`: Set logging output format. -- `--log-output`: Set logging output(s). -- `--presign`: Use pre-signed URLs for direct object store access (default: `true`). - -

`everest umount`

- -Unmounts a lakeFS directory. - -```bash -everest umount -``` - -

`everest diff` (Write Mode Only)

- -Shows the difference between the local mount directory and the source branch. - -```bash -everest diff [mount_directory] -``` - -

`everest commit` (Write Mode Only)

- -Commits local changes to the source lakeFS branch. The new commit is merged to the original branch using a `source-wins` strategy. After the commit succeeds, the mounted directory's source commit is updated to the new HEAD of the branch. - -!!! warning - Writes to a mount directory during a commit operation may be lost. - -```bash -everest commit [mount_directory] -m -``` - -

`everest mount-server` (Advanced)

- -Starts the mount server without performing the OS-level mount. This is intended for advanced use cases where you want to manage the server process and the OS mount command separately. - -```bash -everest mount-server [flags] -``` - -**Flags:** - -- `--cache-dir`: Directory to cache read files and metadata. -- `--cache-create-provided-dir`: Create the cache directory if it does not exist. -- `--listen`: Address to listen on. -- `--protocol`: Protocol to use (nfs | fuse | cfapi). -- `--callback-addr`: Callback address to report back to. -- `--log-level`: Set logging level. -- `--log-format`: Set logging output format. -- `--log-output`: Set logging output(s). -- `--cache-size`: Size of the local cache in bytes. -- `--parallelism`: Number of parallel downloads for metadata. -- `--presign`: Use presign for downloading. -- `--write-mode`: Enable write mode (default: false). -- `--root`: Directory to mount on the filesystem (Windows only) - ---- - -## Advanced Topics - -### Write Mode Limitations - -!!! note "Windows Support" - Currently, Everest for Windows supportd only read-mode operations - -When using write mode (`--write-mode`), be aware of the following limitations and modified behaviors. For more details on write mode operations, see the [Write-Mode Operations](#write-mode-operations) section. - -

Unsupported Operations

- -- **Rename:** File and directory rename operations are not supported. -- **Temporary Files:** Temporary files are not supported. -- **Hard/Symbolic Links:** Hard links and symbolic links are not supported. -- **POSIX File Locks:** POSIX file locks (`lockf`) are not supported. -- **POSIX Permissions:** POSIX permissions are not supported. Default permissions are assigned to files and directories. - -

Modified Behavior

- -- **Metadata Operations:** Modifying file metadata (`chmod`, `chown`, `chgrp`, time attributes) results in a no-op. The file metadata will not be changed. -- **Directory Removal:** Calling `remove` on a directory is not supported. Use appropriate directory removal commands (e.g. `rm -r`) instead, and on the next commit, the directory will be deleted. - -

Functionality Limitations

- -- **Empty Directories:** Newly created empty directories will not reflect as directory markers in lakeFS. -- **Path Conflicts:** lakeFS allows having two path keys where one is a "directory" prefix of the other (e.g., both `animals/cat.png` and `animals` as an empty object are valid in lakeFS). However, since a filesystem cannot contain both a file and a directory with the same name, this will lead to undefined behavior depending on the filesystem type. - -### Integration with Git - -It is safe to mount a lakeFS path inside a Git repository. Everest automatically creates a virtual `.gitignore` file in the mount directory. This file instructs Git to ignore all mounted content *except* for a single file: `.everest/source`. - -By committing the `.everest/source` file, which contains the `lakefs://` URI, you ensure that anyone who clones your Git repository and uses Everest will mount the exact same version of the data, making your project fully reproducible. - -!!! tip "Reproducible Data Science Projects" - This feature is particularly useful for data science projects where you want to version both your code (in Git) and your data (in lakeFS). Team members can clone the repository and automatically mount the correct data version. - ---- - -## FAQ - -### How does data access work? Does it stream through the lakeFS server? - -No. By default (`--presign=true`), Everest uses pre-signed URLs to read and write data directly to and from the underlying object store, ensuring high performance. Metadata operations still go through the lakeFS server. - -For more details, see [Performance Considerations](#performance-considerations). - -### What happens if the lakeFS branch is updated after I mount it? - -In read-only mode, your mount points to the commit that was at the HEAD of the branch *at the time of mounting*. It will not reflect subsequent commits to that branch unless you unmount and remount. In write mode, after a successful `commit`, the mount is updated to the new HEAD of the branch. - -### When are files downloaded? - -Everest uses a lazy fetching strategy. Files are only downloaded when their content is accessed (e.g., with `cat`, `open`, or reading in a script). Metadata-only operations like `ls` do not trigger downloads. - -Downloaded files are cached locally for performance. See [Cache Behavior](#cache-behavior) for details on how caching works and how to configure it. - -### What are the RBAC permissions required for mounting? - -You can use lakeFS's [Role-Based Access Control](../security/rbac.md) to manage access. - -**Minimal Read-Only Permissions:** - -```json -{ - "id": "MountReadOnlyPolicy", - "statement": [ - { - "action": ["fs:ReadObject"], - "effect": "allow", - "resource": "arn:lakefs:fs:::repository//object//*" - }, - { - "action": ["fs:ListObjects", "fs:ReadCommit", "fs:ReadBranch", "fs:ReadTag", "fs:ReadRepository"], - "effect": "allow", - "resource": "arn:lakefs:fs:::repository/" - }, - { "action": ["fs:ReadConfig"], "effect": "allow", "resource": "*" } - ] -} -``` - -**Minimal Write-Mode Permissions:** - -```json -{ - "id": "MountWritePolicy", - "statement": [ - { - "action": ["fs:ReadObject", "fs:WriteObject", "fs:DeleteObject"], - "effect": "allow", - "resource": "arn:lakefs:fs:::repository//object//*" - }, - { - "action": [ - "fs:ListObjects", "fs:ReadCommit", "fs:ReadBranch", "fs:ReadRepository", - "fs:CreateCommit", "fs:CreateBranch", "fs:DeleteBranch", "fs:RevertBranch" - ], - "effect": "allow", - "resource": "arn:lakefs:fs:::repository/" - }, - { "action": ["fs:ReadConfig"], "effect": "allow", "resource": "*" } - ] -} -``` - -### Why use lakeFS Mount instead of `lakectl local`? - -While both tools work with local data, they serve different needs. Use `lakectl local` for Git-like workflows where you need to pull and push entire directories. Use **lakeFS Mount** when you need **immediate, on-demand access to a large repository without downloading it first**, making it ideal for exploration, training ML models, or any task that benefits from lazy loading. diff --git a/docs/src/reference/s3.md b/docs/src/reference/s3.md deleted file mode 100644 index 9de9dc79bda..00000000000 --- a/docs/src/reference/s3.md +++ /dev/null @@ -1,51 +0,0 @@ ---- -title: S3 Gateway API -description: "S3 Gateway API. lakeFS supports the following API operations: Identity and authorization, Bucket operations, Object operations and listing" ---- -# S3-Supported API - -The S3 Gateway emulates a subset of the [API exposed by S3](https://docs.aws.amazon.com/AmazonS3/latest/API/Welcome.html){:target="_blank"}. -This subset includes all API endpoints relevant to data systems. - -!!! tip - For more information, see [architecture][s3-gateway]. - -lakeFS supports the following API operations: - -1. Identity and authorization - 1. [SIGv2](https://docs.aws.amazon.com/general/latest/gr/signature-version-2.html){:target="_blank"} - 1. [SIGv4](https://docs.aws.amazon.com/general/latest/gr/signature-version-4.html){:target="_blank"} -1. Bucket operations: - 1. [ListBuckets](https://docs.aws.amazon.com/AmazonS3/latest/API/API_ListBuckets.html){:target="_blank"} - 1. [HEAD bucket](https://docs.aws.amazon.com/AmazonS3/latest/API/API_HeadBucket.html){:target="_blank"} -1. Object operations: - 1. [DeleteObject](https://docs.aws.amazon.com/AmazonS3/latest/API/API_DeleteObject.html){:target="_blank"} - 1. [DeleteObjects](https://docs.aws.amazon.com/AmazonS3/latest/API/API_DeleteObjects.html){:target="_blank"} - 1. [GetObject](https://docs.aws.amazon.com/AmazonS3/latest/API/API_GetObject.html){:target="_blank"} - 1. Support for caching headers, ETag - 1. Support for range requests - 1. Support for reading user metadata. - 1. **No** support for [SSE](https://docs.aws.amazon.com/AmazonS3/latest/dev/serv-side-encryption.html){:target="_blank"} - 1. **No** support for [SelectObject](https://docs.aws.amazon.com/AmazonS3/latest/API/API_SelectObjectContent.html){:target="_blank"} operations - 1. [HeadObject](https://docs.aws.amazon.com/AmazonS3/latest/API/API_HeadObject.html){:target="_blank"} - 1. [PutObject](https://docs.aws.amazon.com/AmazonS3/latest/API/API_PutObject.html){:target="_blank"} - 1. Support multi-part uploads - 1. Support for writing user metadata. - 1. **No** support for storage classes - 1. **No** object level tagging - 1. [CopyObject](https://docs.aws.amazon.com/AmazonS3/latest/API/API_CopyObject.html){:target="_blank} -1. Object Listing: - 1. [ListObjects](https://docs.aws.amazon.com/AmazonS3/latest/API/API_ListObjects.html){:target="_blank"} - 1. [ListObjectsV2](https://docs.aws.amazon.com/AmazonS3/latest/API/API_ListObjectsV2.html){:target="_blank"} - 1. [Delimiter support](https://docs.aws.amazon.com/AmazonS3/latest/API/API_ListObjectsV2.html#API_ListObjectsV2_RequestSyntax) (for `"/"` only) -1. Multipart Uploads: - 1. [AbortMultipartUpload](https://docs.aws.amazon.com/AmazonS3/latest/API/API_AbortMultipartUpload.html){:target="_blank"} - 1. [CompleteMultipartUpload](https://docs.aws.amazon.com/AmazonS3/latest/API/API_CompleteMultipartUpload.html){:target="_blank"} - 1. [CreateMultipartUpload](https://docs.aws.amazon.com/AmazonS3/latest/API/API_CreateMultipartUpload.html){:target="_blank"} - 1. [ListParts](https://docs.aws.amazon.com/AmazonS3/latest/API/API_ListParts.html){:target="_blank"} **Currently supported only on AWS S3.** [Link to tracked issue](https://github.com/treeverse/lakeFS/issues/7600){:target="_blank"} - 1. [ListMultipartUploads](https://docs.aws.amazon.com/AmazonS3/latest/API/API_ListMultipartUploads.html){:target="_blank"} **Currently supported only on AWS S3.** [Link to tracked issue](https://github.com/treeverse/lakeFS/issues/8563){:target="_blank"} - 1. [Upload Part](https://docs.aws.amazon.com/AmazonS3/latest/API/API_UploadPart.html){:target="_blank"} - 1. [UploadPartCopy](https://docs.aws.amazon.com/AmazonS3/latest/API/API_UploadPartCopy.html){:target="_blank"} - - -[s3-gateway]: ../understand/architecture.md#s3-gateway diff --git a/docs/src/reference/spark-client.md b/docs/src/reference/spark-client.md deleted file mode 100644 index cf4af11d92e..00000000000 --- a/docs/src/reference/spark-client.md +++ /dev/null @@ -1,85 +0,0 @@ ---- -title: Spark Client -description: The lakeFS Spark client performs operations on lakeFS committed metadata stored in the object store. ---- - -# lakeFS Spark Metadata Client - -Utilize the power of Spark to interact with the metadata on lakeFS. Possible use cases include: - -* Creating a DataFrame for listing the objects in a specific commit or branch. -* Computing changes between two commits. -* Exporting your data for consumption outside lakeFS. -* Bulk operations on the underlying storage. - -## Getting Started - -!!! note - Spark **2.x** is no longer supported with the lakeFS metadata client. - -The Spark metadata client is cross-compiled for Scala 2.12 and Scala 2.13, supporting both Spark 3.x and Spark 4.x: - -| Spark version | Scala version | Maven artifact | Java requirement | -|---------------|---------------|----------------------------------------------|------------------| -| 3.x | 2.12 | `io.lakefs:lakefs-spark-client_2.12:0.21.0` | Java 8+ | -| 4.x | 2.13 | `io.lakefs:lakefs-spark-client_2.13:0.21.0` | Java 17+ | - -=== "PySpark, spark-shell, spark-submit, spark-sql" - Start Spark Shell / PySpark with the `--packages` flag: - - For **Spark 3.x**: - ```bash - spark-shell --packages io.lakefs:lakefs-spark-client_2.12:0.21.0 - ``` - - For **Spark 4.x**: - ```bash - spark-shell --packages io.lakefs:lakefs-spark-client_2.13:0.21.0 - ``` - - Alternatively use the assembled jar (an "Überjar") on S3 by passing its path to `--jars`: - - * Spark 3.x: `s3://treeverse-clients-us-east/lakefs-spark-client/0.21.0/lakefs-spark-client_2.12-assembly-0.21.0.jar` - * Spark 4.x: `s3://treeverse-clients-us-east/lakefs-spark-client/0.21.0/lakefs-spark-client_2.13-assembly-0.21.0.jar` - - The assembled jar is larger but shades several common libraries. Use it if Spark - complains about bad classes or missing methods. - -=== "Databricks" - Include this assembled jar (an "Überjar") from S3: - - * Spark 3.x: `s3://treeverse-clients-us-east/lakefs-spark-client/0.21.0/lakefs-spark-client_2.12-assembly-0.21.0.jar` - * Spark 4.x: `s3://treeverse-clients-us-east/lakefs-spark-client/0.21.0/lakefs-spark-client_2.13-assembly-0.21.0.jar` - - -## Configuration - -To read metadata from lakeFS, the client should be configured with your lakeFS endpoint and credentials, using the following Hadoop configurations: - - | Configuration | Description | - |--------------------------------------|--------------------------------------------------------------| - | `spark.hadoop.lakefs.api.url` | lakeFS API endpoint, e.g: `http://lakefs.example.com/api/v1` | - | `spark.hadoop.lakefs.api.access_key` | The access key to use for fetching metadata from lakeFS | - | `spark.hadoop.lakefs.api.secret_key` | Corresponding lakeFS secret key | - -## Examples - -!!! example "Get a DataFrame for listing all objects in a commit" - - ```scala - import io.treeverse.clients.LakeFSContext - - val commitID = "a1b2c3d4" - val df = LakeFSContext.newDF(spark, "example-repo", commitID) - df.show - /* output example: - +------------+--------------------+--------------------+-------------------+----+ - | key | address| etag| last_modified|size| - +------------+--------------------+--------------------+-------------------+----+ - | file_1 |791457df80a0465a8...|7b90878a7c9be5a27...|2021-03-05 11:23:30| 36| - | file_2 |e15be8f6e2a74c329...|95bee987e9504e2c3...|2021-03-05 11:45:25| 36| - | file_3 |f6089c25029240578...|32e2f296cb3867d57...|2021-03-07 13:43:19| 36| - | file_4 |bef38ef97883445c8...|e920efe2bc220ffbb...|2021-03-07 13:43:11| 13| - +------------+--------------------+--------------------+-------------------+----+ - */ - ``` diff --git a/docs/src/security/ACL-server-implementation.md b/docs/src/security/ACL-server-implementation.md deleted file mode 100644 index d686671cabb..00000000000 --- a/docs/src/security/ACL-server-implementation.md +++ /dev/null @@ -1,743 +0,0 @@ ---- -title: ACL Server Implementation -description: Instructions for implementing an ACL server to manage permissions in lakeFS OSS. ---- - -# ACL Server Implementation - -## Overview - -This guide explains how to implement an **ACL (Access Control List) server** and configure **lakeFS OSS** to -work with it. This is intended for contributors who want to understand or extend the ACL authentication mechanism in lakeFS. - -Contents: - -1. Required APIs for implementing an ACL server. -2. How to configure lakeFS OSS to connect to your ACL server. -3. How to run lakeFS OSS with your ACL server. - -## What is ACL? - -Access Control List (ACL) in lakeFS manages permissions by associating a set of permissions directly with a specific object or a group of objects. In the context of the lakeFS authorization API, ACLs are represented within policies. These policies can then be attached to users or groups to grant them the specified permissions. - -## Implementation and Setup - -Follow these steps to implement an ACL server compatible with lakeFS. - -### 1. Implementation - -To implement the ACL server, you need to implement a subset of the APIs defined in the -[authorization.yaml specification](./authorization-yaml.md). -Not all APIs in the specification are required — only those listed below, grouped into the following categories: - -- **Credentials** -- **Users** -- **Groups** -- **Policies** - -Implement all APIs under these categories. - -!!! info - For detailed descriptions of the different schemas and each API, including their input and output parameters, - refer to each API in the [authorization.yaml specification](./authorization-yaml.md). - -#### Credentials APIs - -These APIs are used to manage credentials (access key ID and secret access key) for users. - -Implement the following endpoints under the `credentials` tag in the -[authorization.yaml specification](./authorization-yaml.md): - -- `GET /auth/users/{userId}/credentials`: - - **Description:** Returns a list of all access_key_ids and their creation dates for a specific user. - - **Input:** `userId` (path parameter), pagination parameters (`prefix`, `after`, `amount`). - - **Output:** A `CredentialsList` object containing a list of `Credentials` objects and pagination information. - - **Implementation Notes:** The results should be sorted by `access_key_id`. - - **Output Schema (`CredentialsList`):** - - ```yaml - type: object - properties: - pagination: - $ref: "#/components/schemas/Pagination" - results: - type: array - items: - $ref: "#/components/schemas/Credentials" - ``` - - - **Output Schema (`Credentials`):** - - ```yaml - type: object - properties: - access_key_id: - type: string - creation_date: - type: integer - format: int64 - description: Unix Epoch in seconds - ``` - -- `POST /auth/users/{userId}/credentials`: - - **Description:** Creates new credentials for a specific user. - - **Input:** `userId` (path parameter), optional query parameters (`access_key`, `secret_key`). - - **Output:** A `CredentialsWithSecret` object containing the generated or provided access key ID, secret access key, creation date, and username. - - **Implementation Notes:** If `access_key` or `secret_key` are empty, the server should generate random values. The `username` field in the response is required. - - **Output Schema (`CredentialsWithSecret`):** - - ```yaml - type: object - properties: - access_key_id: - type: string - secret_access_key: - type: string - creation_date: - type: integer - format: int64 - description: Unix Epoch in seconds. - user_name: - type: string - description: A unique identifier for the user. - ``` - -- `DELETE /auth/users/{userId}/credentials/{accessKeyId}`: - - **Description:** Deletes credentials for a specific user. - - **Input:** `userId` (path parameter), `accessKeyId` (path parameter). - - **Output:** No output on success (HTTP 204). - - **Implementation Notes:** Ensure the user and credentials exist before deleting. -- `GET /auth/users/{userId}/credentials/{accessKeyId}`: - - **Description:** Returns a specific user's credentials details (excluding the secret key). - - **Input:** `userId` (path parameter), `accessKeyId` (path parameter). - - **Output:** A `Credentials` object containing the access key ID and creation date. - - **Implementation Notes:** Ensure the user and credentials exist. The secret access key should not be returned by this endpoint. - - **Output Schema (`Credentials`):** - - ```yaml - type: object - properties: - access_key_id: - type: string - creation_date: - type: integer - format: int64 - description: Unix Epoch in seconds - ``` - -- `GET /auth/credentials/{accessKeyId}`: - - **Description:** Returns the credentials details associated with a specific accessKeyId (including the secret key). - - **Input:** `accessKeyId` (path parameter). - - **Output:** A `CredentialsWithSecret` object containing all credential details. - - **Implementation Notes:** This endpoint is used by lakeFS to authenticate requests using access key IDs and secret access keys. The `username` field in the response is required. - - **Output Schema (`CredentialsWithSecret`):** - - ```yaml - type: object - properties: - access_key_id: - type: string - secret_access_key: - type: string - creation_date: - type: integer - format: int64 - description: Unix Epoch in seconds. - user_name: - type: string - description: A unique identifier for the user. - ``` - -#### Users APIs - -These APIs are used to manage users. - -Implement the following endpoints under the `users` tag in the -[authorization.yaml specification](./authorization-yaml.md): - -- `GET /auth/users`: - - **Description:** Returns a list of all users. - - **Input:** Pagination parameters (`prefix`, `after`, `amount`). - - **Output:** A `UserList` object containing a list of `User` objects and pagination information. - - **Implementation Notes:** The results must be sorted by the username. The `external_id` and `encryptedPassword` fields in the `User` object are not used internally by lakeFS in the ACL implementation. - - **Output Schema (`UserList`):** - - ```yaml - type: object - properties: - pagination: - $ref: "#/components/schemas/Pagination" - results: - type: array - items: - $ref: "#/components/schemas/User" - ``` - - - **Output Schema (`User`):** - - ```yaml - type: object - properties: - username: - type: string - description: A unique identifier for the user. - creation_date: - type: integer - format: int64 - description: Unix Epoch in seconds. - friendly_name: - type: string - description: A name for the user that is not necessarily unique. - email: - type: string - source: - type: string - description: User source. Based on implementation. - ``` - -- `POST /auth/users`: - - **Description:** Creates a new user. - - **Input:** Request body containing `UserCreation` object (`username`, optional `email`, `friendlyName`, `source`, `external_id`, `invite`). - - **Output:** A `User` object representing the created user. - - **Implementation Notes:** The `username` must be unique. The `external_id` and `encryptedPassword` fields in the input and output are not used internally by lakeFS in the ACL implementation. If `invite` is true, an invitation email should be sent (if supported by the implementation). - - **Input Schema (`UserCreation`):** - - ```yaml - type: object - properties: - username: - type: string - minLength: 1 - description: A unique identifier for the user. - email: - type: string - description: If provided, the email is set to the same value as the username. - friendlyName: - type: string - source: - type: string - description: User source. Based on implementation. - invite: - type: boolean - description: A boolean that determines whether an invitation email should be sent. - ``` - - - **Output Schema (`User`):** - - ```yaml - type: object - properties: - username: - type: string - description: A unique identifier for the user. - creation_date: - type: integer - format: int64 - description: Unix Epoch in seconds. - friendly_name: - type: string - description: A name for the user that is not necessarily unique. - email: - type: string - source: - type: string - description: User source. Based on implementation. - ``` - -- `GET /auth/users/{userId}`: - - **Description:** Returns the details of a specific user. - - **Input:** `userId` (path parameter). - - **Output:** A `User` object representing the user. - - **Implementation Notes:** Ensure the user exists. The `external_id` and `encryptedPassword` fields in the `User` object are not used internally by lakeFS in the ACL implementation. - - **Output Schema (`User`):** - - ```yaml - type: object - properties: - username: - type: string - description: A unique identifier for the user. - creation_date: - type: integer - format: int64 - description: Unix Epoch in seconds. - friendly_name: - type: string - description: A name for the user that is not necessarily unique. - email: - type: string - source: - type: string - description: User source. Based on implementation. - ``` - -- `DELETE /auth/users/{userId}`: - - **Description:** Deletes a user. - - **Input:** `userId` (path parameter). - - **Output:** No output on success (HTTP 204). - - **Implementation Notes:** Ensure the user exists. When a user is deleted, their associated credentials, group memberships, and policy attachments should also be removed. - -- `GET /auth/users/{userId}/groups`: - - **Description:** Returns the list of groups that a specific user is associated with. - - **Input:** `userId` (path parameter), pagination parameters (`prefix`, `after`, `amount`). - - **Output:** A `GroupList` object containing a list of `Group` objects and pagination information. - - **Implementation Notes:** The results must be sorted by the group name. - - **Output Schema (`GroupList`):** - - ```yaml - type: object - properties: - pagination: - $ref: "#/components/schemas/Pagination" - results: - type: array - items: - $ref: "#/components/schemas/Group" - ``` - - - **Output Schema (`Group`):** - - ```yaml - type: object - properties: - id: - type: string - description: A unique identifier of the group. - name: - type: string - description: A unique identifier for the group, represented by a human-readable name. - description: - type: string - creation_date: - type: integer - format: int64 - description: Unix Epoch in seconds. - ``` - -- `GET /auth/users/{userId}/policies`: - - **Description:** Returns the list of policies associated with a specific user. - - **Input:** `userId` (path parameter), pagination parameters (`prefix`, `after`, `amount`), optional query parameter `effective` (boolean). - - **Output:** A `PolicyList` object containing a list of `Policy` objects and pagination information. - - **Implementation Notes:** If `effective` is true, return all distinct policies attached to the user directly or through their groups. If `effective` is false (default), return only policies directly attached to the user. - - **Output Schema (`PolicyList`):** - - ```yaml - type: object - properties: - pagination: - $ref: "#/components/schemas/Pagination" - results: - type: array - items: - $ref: "#/components/schemas/Policy" - ``` - - - **Output Schema (`Policy`):** - - ```yaml - type: object - properties: - name: - type: string - description: A unique, human-readable name for the policy. - creation_date: - type: integer - format: int64 - description: Unix Epoch in seconds. - acl: - type: string - description: Represents the access control list assigned to this policy. - ``` - -- `PUT /auth/users/{userId}/policies/{policyId}`: - - **Description:** Attaches a policy to a specific user. - - **Input:** `userId` (path parameter), `policyId` (path parameter). - - **Output:** No output on success (HTTP 201). - - **Implementation Notes:** Ensure the user and policy exist. - -- `DELETE /auth/users/{userId}/policies/{policyId}`: - - **Description:** Detaches a policy from a specific user. - - **Input:** `userId` (path parameter), `policyId` (path parameter). - - **Output:** No output on success (HTTP 204). - - **Implementation Notes:** Ensure the user and policy attachment exist. - -#### Groups APIs - -These APIs are used to manage groups. - -Implement the following endpoints under the `groups` tag: - -- `GET /auth/groups`: - - **Description:** Returns a list of groups. - - **Input:** Pagination parameters (`prefix`, `after`, `amount`). - - **Output:** A `GroupList` object containing a list of `Group` objects and pagination information. - - **Implementation Notes:** The results must be sorted by the group name. - - **Output Schema (`GroupList`):** - - ```yaml - type: object - properties: - pagination: - $ref: "#/components/schemas/Pagination" - results: - type: array - items: - $ref: "#/components/schemas/Group" - ``` - - - **Output Schema (`Group`):** - - ```yaml - type: object - properties: - id: - type: string - description: A unique identifier of the group. - name: - type: string - description: A unique identifier for the group, represented by a human-readable name. - description: - type: string - creation_date: - type: integer - format: int64 - description: Unix Epoch in seconds. - ``` - -- `POST /auth/groups`: - - **Description:** Creates a new group. - - **Input:** Request body containing `GroupCreation` object (`id`, optional `description`). - - **Output:** A `Group` object representing the created group. - - **Implementation Notes:** The `id` must be a unique, human-readable name for the group. This endpoint is called during setup to create initial groups. - - **Input Schema (`GroupCreation`):** - - ```yaml - type: object - required: - - id - properties: - id: - type: string - description: A unique identifier for the group, represented by a human-readable name. - description: - type: string - ``` - - - **Output Schema (`Group`):** - - ```yaml - type: object - properties: - id: - type: string - description: A unique identifier of the group. - name: - type: string - description: A unique identifier for the group, represented by a human-readable name. - description: - type: string - creation_date: - type: integer - format: int64 - description: Unix Epoch in seconds. - ``` - -- `GET /auth/groups/{groupId}`: - - **Description:** Returns the details of a specific group. - - **Input:** `groupId` (path parameter). - - **Output:** A `Group` object representing the group. - - **Implementation Notes:** Ensure the group exists. - - **Output Schema (`Group`):** - - ```yaml - type: object - properties: - id: - type: string - description: A unique identifier of the group. - name: - type: string - description: A unique identifier for the group, represented by a human-readable name. - description: - type: string - creation_date: - type: integer - format: int64 - description: Unix Epoch in seconds. - ``` - -- `DELETE /auth/groups/{groupId}`: - - **Description:** Deletes a group. - - **Input:** `groupId` (path parameter). - - **Output:** No output on success (HTTP 204). - - **Implementation Notes:** Ensure the group exists. When a group is deleted, its associated user memberships and policy attachments should also be removed. - -- `GET /auth/groups/{groupId}/members`: - - **Description:** Returns the list of users associated with a specific group. - - **Input:** `groupId` (path parameter), pagination parameters (`prefix`, `after`, `amount`). - - **Output:** A `UserList` object containing a list of `User` objects and pagination information. - - **Implementation Notes:** The results must be sorted by the username. The `external_id` and `encryptedPassword` fields in the `User` object are not used internally by lakeFS in the ACL implementation. - - **Output Schema (`UserList`):** - - ```yaml - type: object - properties: - pagination: - $ref: "#/components/schemas/Pagination" - results: - type: array - items: - $ref: "#/components/schemas/User" - ``` - - **Output Schema (`User`):** - - ```yaml - type: object - properties: - username: - type: string - description: A unique identifier for the user. - creation_date: - type: integer - format: int64 - description: Unix Epoch in seconds. - friendly_name: - type: string - description: A name for the user that is not necessarily unique. - email: - type: string - source: - type: string - description: User source. Based on implementation. - ``` - -- `PUT /auth/groups/{groupId}/members/{userId}`: - - **Description:** Adds a specific user to a specific group. - - **Input:** `groupId` (path parameter), `userId` (path parameter). - - **Output:** No output on success (HTTP 201). - - **Implementation Notes:** Ensure the group and user exist. - -- `DELETE /auth/groups/{groupId}/members/{userId}`: - - **Description:** Removes a specific user from a specific group. - - **Input:** `groupId` (path parameter), `userId` (path parameter). - - **Output:** No output on success (HTTP 204). - - **Implementation Notes:** Ensure the group and user membership exist. - -- `GET /auth/groups/{groupId}/policies`: - - **Description:** Returns the list of policies attached to a specific group. - - **Input:** `groupId` (path parameter), pagination parameters (`prefix`, `after`, `amount`). - - **Output:** A `PolicyList` object containing a list of `Policy` objects and pagination information. - - **Implementation Notes:** The results must be sorted by the policy name. - - **Output Schema (`PolicyList`):** - - ```yaml - type: object - properties: - pagination: - $ref: "#/components/schemas/Pagination" - results: - type: array - items: - $ref: "#/components/schemas/Policy" - ``` - - - **Output Schema (`Policy`):** - - ```yaml - type: object - properties: - name: - type: string - description: A unique, human-readable name for the policy. - creation_date: - type: integer - format: int64 - description: Unix Epoch in seconds. - acl: - type: string - description: Represents the access control list assigned to this policy. - ``` - -- `PUT /auth/groups/{groupId}/policies/{policyId}`: - - **Description:** Attaches a policy to a specific group. - - **Input:** `groupId` (path parameter), `policyId` (path parameter). - - **Output:** No output on success (HTTP 201). - - **Implementation Notes:** Ensure the group and policy exist. - -- `DELETE /auth/groups/{groupId}/policies/{policyId}`: - - **Description:** Detaches a policy from a specific group. - - **Input:** `groupId` (path parameter), `policyId` (path parameter). - - **Output:** No output on success (HTTP 204). - - **Implementation Notes:** Ensure the group and policy attachment exist. - -#### Policies APIs - -These APIs are used to manage policies, which contain the ACL information. - -Implement the following endpoints under the `policies` tag: - -- `GET /auth/policies`: - - **Description:** Returns a list of policies. - - **Input:** Pagination parameters (`prefix`, `after`, `amount`). - - **Output:** A `PolicyList` object containing a list of `Policy` objects and pagination information. - - **Implementation Notes:** The results must be sorted by the policy name. - - **Output Schema (`PolicyList`):** - - ```yaml - type: object - properties: - pagination: - $ref: "#/components/schemas/Pagination" - results: - type: array - items: - $ref: "#/components/schemas/Policy" - ``` - - - **Output Schema (`Policy` - relevant fields for ACL):** - - ```yaml - type: object - properties: - name: - type: string - description: A unique, human-readable name for the policy. - creation_date: - type: integer - format: int64 - description: Unix Epoch in seconds. - acl: - type: string - description: Represents the access control list assigned to this policy. - ``` - -- `POST /auth/policies`: - - **Description:** Creates a new policy. - - **Input:** Request body containing a `Policy` object (`name`, `statement` and `acl`). - - **Output:** A `Policy` object representing the created policy. - - **Implementation Notes:** The `name` must be a unique, human-readable name for the policy. The `acl` property in the `Policy` object is used to define the permissions. The `statement` property is not used in the ACL implementation. This endpoint is called during setup to create default policies. - - **Input Schema (`Policy` - relevant fields for ACL):** - - ```yaml - type: object - properties: - name: - type: string - description: A unique, human-readable name for the policy. - acl: - type: string - description: Represents the access control list assigned to this policy. - ``` - - - **Output Schema (`Policy`):** - - ```yaml - type: object - properties: - name: - type: string - description: A unique, human-readable name for the policy. - creation_date: - type: integer - format: int64 - description: Unix Epoch in seconds. - acl: - type: string - description: Represents the access control list assigned to this policy. - ``` - -- `GET /auth/policies/{policyId}`: - - **Description:** Returns the details of a specific policy. - - **Input:** `policyId` (path parameter). - - **Output:** A `Policy` object representing the policy. - - **Implementation Notes:** Ensure the policy exists. The `statement` property is not used in the ACL implementation. - - **Output Schema (`Policy`):** - - ```yaml - type: object - properties: - name: - type: string - description: A unique, human-readable name for the policy. - creation_date: - type: integer - format: int64 - description: Unix Epoch in seconds. - acl: - type: string - description: Represents the access control list assigned to this policy. - ``` - -- `PUT /auth/policies/{policyId}`: - - **Description:** Updates an existing policy. - - **Input:** `policyId` (path parameter), request body containing the updated `Policy` object. - - **Output:** A `Policy` object representing the updated policy. - - **Implementation Notes:** Ensure the policy exists and the provided `policyId` matches the `name` in the request body. The request is to update the `acl` property. The `statement` property is not used in the ACL implementation. - - **Input Schema (`Policy`):** - - ```yaml - type: object - properties: - name: - type: string - description: A unique, human-readable name for the policy. - acl: - type: string - description: Represents the access control list assigned to this policy. - ``` - - - **Output Schema (`Policy`):** - - ```yaml - type: object - properties: - name: - type: string - description: A unique, human-readable name for the policy. - creation_date: - type: integer - format: int64 - description: Unix Epoch in seconds. - acl: - type: string - description: Represents the access control list assigned to this policy. - ``` - -- `DELETE /auth/policies/{policyId}`: - - **Description:** Deletes a policy. - - **Input:** `policyId` (path parameter). - - **Output:** No output on success (HTTP 204). - - **Implementation Notes:** Ensure the policy exists. When a policy is deleted, its attachments to users and groups should also be removed. - -### 2. Setup - -#### Key Steps in the Initial Setup - -When deploying an ACL server for the first time, it is essential to establish a set of standard user groups and assign each group a default set of permissions (policies). This process ensures that the system starts with a clear structure for access control, making it easy to manage users and their roles securely and consistently. - -**Define Standard Groups** - -**Define Standard Groups** - -Establish a set of base groups that represent the typical roles in your system, such as Admins (full privileges), Writers (read/write access), and Readers (read-only access). Each group should be mapped to a specific policy that defines the permissions for its members. - -You can reference the [lakeFS contrib ACL implementation](https://github.com/treeverse/lakeFS/blob/master/contrib/auth/acl/setup.go) to see practical examples of how standard groups are defined and structured, along with their associated permission policies. - -#### lakeFS Configuration - -Update your lakeFS configuration file (`config.yaml`) to include: - -```yaml -auth: - encrypt: - secret_key: "some_string" - ui_config: - rbac: "simplified" - api: - endpoint: {ENDPOINT_TO_YOUR_ACL_SERVER} # e.g., http://localhost:9006/api/v1 - token: {ACL_SERVER_TOKEN} # Used as authentication bearer calling the ACL server -``` - -!!! note - The `auth.api.token` parameter is optional. If unspecified, lakeFS uses the `auth.encrypt.secret_key` as - the secret to generate JWT. If specified, provide a JWT token or via the environment variable `LAKEFS_AUTH_API_TOKEN`. diff --git a/docs/src/security/access-control-lists.md b/docs/src/security/access-control-lists.md deleted file mode 100644 index 8ea1289df81..00000000000 --- a/docs/src/security/access-control-lists.md +++ /dev/null @@ -1,112 +0,0 @@ ---- -title: Access Control Lists (ACLs) -description: Access control lists (ACLs) are one of the resource-based options that you can use to manage access to your repositories and objects. There are limits to managing permissions using ACLs. -status: deprecated ---- - -# Access Control Lists (ACLs) - -!!! warning "Deprecated" - ACLs were [removed from core lakeFS](https://lakefs.io/blog/why-moving-acls-out-of-core-lakefs/). - - For a more robust authorization solution, please see [Role-Based Access Control](rbac.md), available in [lakeFS Cloud](../cloud/index.md) and [lakeFS Enterprise](../enterprise/index.md). - - The following documentation is aimed for users with existing installations who wish to continue working with ACLs. - -## Basic Auth Functionality - -New lakeFS versions will provide basic auth functionality featuring a single Admin user with a single set of credentials. -Existing lakeFS installations that have a single user and a single set of credentials will migrate seamlessly to the new version. -Installations that have more than one user / credentials will require to run a command and choose which set of user + credentials to migrate -(more details [here](#migration-of-existing-user)) - -### Credentials Replacement - -In a single user setup, replacing credentials can be done as follows: - -1. Delete the existing user: - - ```shell - lakectl auth users delete --id - ``` - -2. Shut down the lakeFS server - Required for invalidating the old credentials on the server -3. Create a new user, with the same name and new credentials: - - ```shell - lakefs superuser --user-name - ``` - - This will generate a new set of credentials, and will print it out to the screen: - - ``` - credentials: - access_key_id: *** (omitted) - secret_access_key: *** (omitted) - ``` - -4. Re-run lakeFS server - -!!! warning - Calling the `superuser` command with pre-defined `--access-key-id` and `--secret-access-key` is possible, - but should be done with caution. Make sure that `--secret-access-key` is **not empty**, - as providing an access key without a secret key will trigger an ACL import flow - (see [Migration of existing user](#migration-of-existing-user)). - - In case you already deleted the user by following step (1), this import operation will **fail** and result in an - **unrecoverable** state, from which a clean installation is the only way out. - -## ACLs - -ACL server was moved out of core lakeFS and into a new package under `contrib/auth/acl`. -Though we [decided](https://lakefs.io/blog/why-moving-acls-out-of-core-lakefs/) to move ACLs out, we are committed to making sure existing users who still need the use of ACLs can continue using -this feature. -In order to do that, users will need to run the separate ACL server as part of their lakeFS deployment environment and configure lakeFS to work with it. - -### ACL server Configuration - -Under the `contrib/auth/acl` you will be able to find an ACL server reference. - -!!! warning - This implementation is a reference and is not fit for production use. - - For a more robust authorization solution, please see [Role-Based Access Control](rbac.md), available in [lakeFS Cloud](../cloud/index.md) and [lakeFS Enterprise](../enterprise/index.md). - -The configuration of the ACL server is similar to lakeFS configuration, here's an example of an `.aclserver.yaml` config file: - -```yaml ---- -listen_address: "[ACL_SERVER_LISTEN_ADDRESS]" -database: - type: "postgres" - postgres: - connection_string: "[DATABASE_CONNECTION_STRING]" - -encrypt: - # This should be the same encryption key as in lakeFS - secret_key: "[ENCRYPTION_SECRET_KEY]" -``` - -It is possible to use environment variables to configure the server as in lakeFS. Use the `ACLSERVER_` prefix to do so. - -!!! info - For full configuration reference see: [this](https://github.com/treeverse/lakeFS/blob/7b2a0ac2f1afedd2059284c32e7dacb945b2ae90/contrib/auth/acl/config.go#L26) - -### lakeFS Configuration - -For the ACL server to work, configure the following values in lakeFS: - -- `auth.ui_config.rbac`: `simplified` -- `auth.api.endpoint`: `[ACL_SERVER_LISTEN_ADDRESS]` - -### Migration of existing user - -For installation with multiple users / credentials, upgrading to the new lakeFS version requires choosing which user + credentials will be used for the single user mode. -This is done via the `lakefs superuser` command. -For example, if you have a user with username `` and credential key `` use the following command to migrate that user: - -```bash -lakefs superuser --user-name --access-key-id -``` - -After running the command you will be able to access the installation using the user's access key id and its respective secret access key. diff --git a/docs/src/security/authentication.md b/docs/src/security/authentication.md deleted file mode 100644 index 6bed57266a5..00000000000 --- a/docs/src/security/authentication.md +++ /dev/null @@ -1,109 +0,0 @@ ---- -title: Authentication -description: This section covers Authentication of your lakeFS server. ---- - -# Authentication - -### User Authentication - -lakeFS authenticates users from a built-in authentication database. - -#### Built-in database - -The built-in authentication database is always present and active. You can use the -Web UI at Administration / Users to create users. - -Users have an access key `AKIA...` and an associated secret access key. These credentials are valid -for logging into the Web UI or authenticating programmatic requests to the API Server or the S3 Gateway. - -#### Remote Authenticator Service - -lakeFS server supports external authentication, the feature can be configured by providing an HTTP endpoint to an external authentication service. -This integration can be especially useful if you already have an existing authentication system in place, as it allows you to reuse that system instead of maintaining a new one. - -!!! info - To configure a Remote Authenticator see the [configuration fields](../reference/configuration.md#auth). - -### API Server Authentication - -Authenticating against the API server is done using a key-pair, passed via [Basic Access Authentication](https://en.wikipedia.org/wiki/Basic_access_authentication). - -All HTTP requests must carry an `Authorization` header with the following structure: - -```text -Authorization: Basic -``` - -For example, assuming my access_key_id is `my_access_key_id` and my secret_access_key is `my_secret_access_key`, we'd send the following header with every request: - -```text -Authorization: Basic bXlfYWNjZXNzX2tleV9pZDpteV9zZWNyZXRfYWNjZXNzX2tleQ== -``` - -### S3 Gateway Authentication - -To provide API compatibility with Amazon S3, authentication with the S3 Gateway supports both [SIGv2](https://docs.aws.amazon.com/general/latest/gr/signature-version-2.html){:target="_blank"} and [SIGv4](https://docs.aws.amazon.com/general/latest/gr/signature-version-4.html){:target="_blank"}. -Clients such as the AWS SDK that implement these authentication methods should work without modification. - -See [this example for authenticating with the AWS CLI](../integrations/aws_cli.md). - -## OIDC support - -!!! warning "Deprecated" - This feature is deprecated. For single sign-on with lakeFS, try [lakeFS Cloud](https://lakefs.cloud) - -OpenID Connect (OIDC) is a simple identity layer on top of the OAuth 2.0 protocol. -You can configure lakeFS to enable OIDC to manage your lakeFS users externally. -Essentially, once configured, this enables you the benefit of OpenID connect, such as a single sign-on (SSO), etc. - -### Configuring lakeFS server for OIDC - -To support OIDC, add the following to your [lakeFS configuration](../reference/configuration.md): - -```yaml -auth: - oidc: - enabled: true - client_id: example-client-id - client_secret: exampleSecretValue - callback_base_url: https://lakefs.example.com # The scheme, domain (and port) of your lakeFS installation - url: https://my-account.oidc-provider-example.com - default_initial_groups: ["Developers"] - friendly_name_claim_name: name # Optional: use the value from this claim as the user's display name - persist_friendly_name: true # Optional: persist friendly name to KV store so it can be displayed in the user list -``` - -Your login page will now include a link to sign in using the -OIDC provider. When a user first logs in through the provider, a corresponding user is created in lakeFS. - -#### Friendly Name Persistence - -When the `persist_friendly_name` configuration property is set to `true` **and** `friendly_name_claim_name` is set to a valid claim name, which exists in the incoming `id_token`, the friendly name will be persisted to the KV store. This will allow users with access to the lakeFS administration section to see friendly names in the users list, when listing group members, and when adding/removing group members. -The friendly name stored in KV is updated with each successful login, if the incoming value is different than the stored value. This means it will be kept up-to-date with changes to the user's profile or if `friendly_name_claim_name` is re-configured. - -!!! note "Notes" - 1. As always, you may choose to provide these configurations using [environment variables](../reference/configuration.md). - 2. You may already have other configuration values under the _auth_ key, so make sure you combine them correctly. - -## User permissions - -Authorization is managed via [lakeFS groups and policies](./rbac.md). - -By default, an externally managed user is assigned to the lakeFS groups configured in the _default_initial_groups_ property above. -For a user to be assigned to other groups, add the _initial_groups_ claim to their **ID token** claims. The claim should contain a -comma-separated list of group names. - -Once the user has been created, you can manage their permissions from the Administration pages in the lakeFS UI or using _lakectl_. - -### Using a different claim name - -To supply the initial groups using another claim from your ID token, you can use the `auth.oidc.initial_groups_claim_name` -lakeFS configuration. For example, to take the initial groups from the _roles_ claim, add: - -```yaml -auth: - oidc: - # ... Other OIDC configurations - initial_groups_claim_name: roles -``` diff --git a/docs/src/security/authorization-yaml.md b/docs/src/security/authorization-yaml.md deleted file mode 100644 index ec1c2374d9a..00000000000 --- a/docs/src/security/authorization-yaml.md +++ /dev/null @@ -1,8 +0,0 @@ ---- -title: Authorization API -description: This section includes the documentation for the authorization APIs. -hide: - toc: true ---- - -!!swagger ../../../api/authorization.yml!! diff --git a/docs/src/security/external-principals-aws.md b/docs/src/security/external-principals-aws.md deleted file mode 100644 index a91b1f76e1e..00000000000 --- a/docs/src/security/external-principals-aws.md +++ /dev/null @@ -1,269 +0,0 @@ ---- -title: Login to lakeFS with AWS IAM Roles -description: This section covers how to authenticate to lakeFS using AWS IAM. -status: enterprise -search: - boost: 2 ---- - -# Authenticate to lakeFS with AWS IAM Roles - -!!! info - Available in **lakeFS Cloud** and **lakeFS Enterprise**
- If you're using the open-source version you can check the [pluggable APIs](./rbac.md#pluggable-authentication-and-authorization). - -## Overview - -lakeFS supports authenticating users programmatically using AWS IAM roles instead of using static lakeFS access and secret keys. -The method enables you to bound IAM principal ARNs to lakeFS users. -A single lakeFS user may have many AWS principal ARNs attached to it. When a client is authenticated to a lakeFS server with an AWS session, the actions performed by the client are on behalf of the user attached to the ARN. - -### Using Session Names - -The bound ARN can be attached to a single lakeFS user with or without SessionName, serving different users. -For example, consider the following mapping: - -| Principal ARN | lakeFS User | -|-----------------------------------------------------|-------------| -| `arn:aws:sts::123456:assumed-role/Dev` | `foo` | -| `arn:aws:sts::123456:assumed-role/Dev/john@acme.com` | `john` | - -if the bound ARN were `arn:aws:sts::123456:assumed-role/Dev/` it would allow any principal assuming `Dev` role in AWS account `123456` to login to it. -If the `SessionName` is `john@acme.com` then lakeFS would return token for `john` user - -### How AWS authentication works - -The AWS STS API includes a method, `sts:GetCallerIdentity`, which allows you to validate the identity of a client. The client signs a GetCallerIdentity query using the AWS Signature v4 algorithm and sends it to the lakeFS server. - -The `GetCallerIdentity` query consists of four pieces of information: the request URL, the request body, the request headers and the request method. The AWS signature is computed over those fields. The lakeFS server reconstructs the query using this information and forwards it on to the AWS STS service. Depending on the response from the STS service, the server authenticates the client. - -Notably, clients don't need network-level access themselves to talk to the AWS STS API endpoint; they merely need access to the credentials to sign the request. However, it means that the lakeFS server does need network-level access to send requests to the STS endpoint. - -Each signed AWS request includes the current timestamp to mitigate the risk of replay attacks. In addition, lakeFS allows you to require an additional header, `X-LakeFS-Server-ID` (added by default), to be present to mitigate against different types of replay attacks (such as a signed `GetCallerIdentity` request stolen from a dev lakeFS instance and used to authenticate to a prod lakeFS instance). - -It's also important to note that Amazon does NOT appear to include any sort of authorization around calls to GetCallerIdentity. For example, if you have an IAM policy on your credential that requires all access to be MFA authenticated, non-MFA authenticated credentials will still be able to authenticate to lakeFS using this method. - - -## Server Configuration - -!!! info - lakeFS Helm chart supports the configuration below since version 1.5.0 - -To enable AWS IAM authentication in lakeFS Enterprise: - -1. Enable external principals in lakeFS configuration -2. Configure external AWS authentication settings - -**Helm Configuration (`values.yaml`):** - -```yaml -ingress: - enabled: true - ingressClassName: - hosts: - - host: - paths: - - / - -lakefsConfig: | - auth: - # Configure external AWS authentication - external_aws_auth: - enabled: true - # the maximum age in seconds for the GetCallerIdentity request - #get_caller_identity_max_age: 60 - # headers that must be present by the client when doing login request - required_headers: - # same host as the lakeFS server ingress - X-LakeFS-Server-ID: -``` - -!!! note - By default, lakeFS clients will add the parameter `X-LakeFS-Server-ID: ` to the initial [login request][login-api] for STS. - -**Direct Configuration File (`lakefs.yaml`):** - -```yaml -auth: - external_aws_auth: - enabled: true - # Optional: max age for GetCallerIdentity requests (default: 24h) - get_caller_identity_max_age: 3600 - # Required headers for login requests - required_headers: - X-LakeFS-Server-ID: - # Optional headers that may be present - optional_headers: - X-Custom-Header: value -``` - -## Administration of IAM Roles in lakeFS - -Administration refers to the management of the IAM roles that are allowed to authenticate to lakeFS. -Operations such as attaching and detaching IAM roles to a user, listing the roles attached to a user, and listing the users attached to a role. -This can be done through lakectl, the lakeFS [External Principals API][external-principal-admin], or generated clients. - -### Using lakectl - -```bash -# Attach IAM role to a lakeFS user (omit --id to use current user) -lakectl auth users aws-iam attach [--id ] \ - --principal-id 'arn:aws:sts:::assumed-role//' -lakectl auth users aws-iam attach [--id ] \ - --principal-id 'arn:aws:sts:::assumed-role/' - -# Detach an IAM role from a user (omit --id to use current user) -lakectl auth users aws-iam detach [--id ] \ - --principal-id 'arn:aws:sts:::assumed-role/' - -# List IAM roles attached to a user (omit --id to use current user) -lakectl auth users aws-iam list [--id ] - -# Lookup which lakeFS users are attached to an IAM role -lakectl auth users aws-iam lookup --principal-id 'arn:aws:sts:::assumed-role/' -``` - -### Using Python SDK - -```python -import lakefs_sdk as lakefs - -configuration = lakefs.Configuration(host = "...",username="...",password="...") -username = "" -api = lakefs.ApiClient(configuration) -auth_api = lakefs.AuthApi(api) - -# attach the role(s)to a lakeFS user -auth_api.create_user_external_principal( - user_id=username, principal_id='arn:aws:sts:::assumed-role//') -auth_api.create_user_external_principal( - user_id=username, principal_id='arn:aws:sts:::assumed-role/') - -# list the roles attached to the user -resp = auth_api.list_user_external_principals(user_id=username) -for p in resp.results: - # do something -``` - - -## Get lakeFS API Token - -The login to lakeFS is done by calling the [login API][login-api] with the `GetCallerIdentity` request signed by the client. -Currently, the login operation is supported out of the box in: - -- [lakectl](#login-with-lakectl) -- [lakeFS Hadoop FileSystem][lakefs-hadoopfs] version 0.2.4, see [Spark usage][lakefs-spark] -- [python](#login-with-python) -- [Everest mount](../reference/mount.md#authenticating-with-aws-iam-role.md) - -For other use cases authenticated to lakeFS via login endpoint, this will require building the request input. - -## Login with lakectl - -### prerequisites - -1. lakeFS must be configured to allow external principals to authenticate. The relevant IAM role should be attached to the appropriate lakeFS user. -2. lakectl must be configured to use IAM authentication. - -### lakectl configuration - -To use IAM authentication, the following configuration fields are available: - -- `credentials.provider.type` `(string: '')` - Settings this `aws_iam` will expect `aws_iam` block and try to use IAM. -- `credentials.provider.aws_iam.token_ttl_second` `(duration: 60m)` - Optional: lakeFS token duration. -- `credentials.provider.aws_iam.url_presign_ttl_seconds` `(duration: 15m)` - Optional: AWS STS's presigned URL validation duration. -- `credentials.provider.aws_iam.refresh_interval` `(duration: 15m)` - Optional: Amount of time before token expiration that Everest will try to fetch a new session token instead of using the current one. -- `credentials.provider.aws_iam.token_request_headers`: Map of required headers and their values to be signed by the AWS STS request as configured in your lakeFS server. If nothing is set the **default** behavior is adding `x-lakefs-server-id:`. If your lakeFS server doesn't require any headers (less secure) you can set this empty by setting `{}` empty map in your config. - -These configuration fields can be set via `.lakectl.yaml`: - -!!! example - ```yaml - credentials: - provider: - type: aws_iam # Required - aws_iam: - token_ttl_seconds: 60m # Optional, default: 1h - url_presign_ttl_seconds: 15m # Optional, default: 15m - refresh_interval: 5m # Optional, default: 5m - token_request_headers: # Optional, if omitted then will set x-lakefs-server-id: by default, to override default set to '{}' - # x-lakefs-server-id: Added by default if token_request_headers is not set - custome-key: custome-val - server: - endpoint_url: - ``` - -### Token Caching - -To optimize lakectl's IAM authentication, a simple token caching mechanism was introduced. -Instead of performing a login request to AWS to get a JWT for lakeFS, lakectl will save the token to `$HOMEDIR/.lakectl/cache/lakectl_token_cache.json`. -The token will be used in the next lakectl operations up until one hour after writing. Later than that, lakectl will try and retrieve a new token. - -!!! note - Cache implementation does not support multiple AWS profiles. - When switching profiles and for general troubleshooting, try and delete the cache first. - -## Login with python - -### prerequisites - -1. lakeFS should be [configured](#server-configuration) to allow external principals to authenticate, and the used IAM role should be [attached](#administration-of-iam-roles-in-lakefs) to the relevant lakeFS user -2. The Python SDK requires additional packages to be installed to generate a lakeFS client with the assumed role. -To install the required packages, run the following command: - -```shell - pip install "lakefs[aws-iam]" -``` - -There are two ways in which external principals can be used to authenticate to lakeFS: - -1. If no other authentication flow is provided, and the `credentials.provider.type` configuration is set to `aws_iam` in `.lakectl.yaml`, the client will use the machine's AWS role to authenticate with lakeFS: - - ```yaml - credentials: - provider: - type: aws_iam - aws_iam: - token_ttl_seconds: 3600 # TTL for the temporary token (default: 3600) - url_presign_ttl_seconds: 60 # TTL for presigned URLs (default: 60) - token_request_headers: # Optional headers for token requests - HeaderName: HeaderValue - ``` - Or using environment variables: - ```bash - export LAKECTL_CREDENTIALS_PROVIDER_TYPE="aws_iam" - export LAKECTL_CREDENTIALS_PROVIDER_AWS_IAM_TOKEN_TTL_SECONDS="3600" - export LAKECTL_CREDENTIALS_PROVIDER_AWS_IAM_PRESIGNED_URL_TTL_SECONDS="60" - export LAKECTL_CREDENTIALS_PROVIDER_AWS_IAM_TOKEN_REQUEST_HEADERS='{"HeaderName":"HeaderValue"}' - ``` - To use the client, merely `import lakefs` and use it as you would normally do: - ```python - import lakefs - - for branch in lakefs.repository("example-repo").branches(): - print(branch) - ``` - - !!! warning - Please note, using the IAM provider configurations will not work with the lakectl command line tool, and will stop you from running it. - - -2. Generate a lakeFS client with the assumed role by initiating a boto3 session with the desired role and call `lakefs.client.frow_aws_role`: - - ```python - import lakefs - import boto3 - - session = boto3.Session() - my_client = lakefs.client.from_aws_role(session=session, ttl_seconds=7200, host="") - - # list repositories - repos = lakefs.repositories(client=my_client) - for r in repos: - print(r) - ``` - -[external-principal-admin]: ../reference/api.md#external -[login-api]: ../reference/api.md#auth/externalPrincipalLogin -[lakefs-hadoopfs]: ../integrations/spark.md#lakefs-hadoop-filesystem -[lakefs-spark]: ../integrations/spark.md#usage-with-temporaryawscredentialslakefstokenprovider \ No newline at end of file diff --git a/docs/src/security/index.md b/docs/src/security/index.md deleted file mode 100644 index 7175de3a95c..00000000000 --- a/docs/src/security/index.md +++ /dev/null @@ -1,36 +0,0 @@ ---- -title: Security -description: Security reference documentation for lakeFS ---- - -# lakeFS Security Reference - -lakeFS Docs - -### Understanding Your Data Security ### - -At lakeFS, we understand the critical nature of data security. Thousands of organizations worldwide rely on lakeFS to manage their data with confidence. Here's a few concepts we follow to ensure your data remains secure: - -**Data Stays in Place**: The data you version control remains within your existing object storage. lakeFS creates metadata for your data without moving it. New data is stored in the bucket you designate within your object storage. - -**lakeFS Servers Stores only Metadata**: The lakeFS Server (also in the case of lakeFS Cloud) only stores the metadata used for version control operations (i.e. diff, merge). It does not store any of your actual data. - -**Minimal Permissions**: lakeFS requires minimal permissions to manage your data. We can even [version data we cannot directly access](https://lakefs.io/blog/pre-signed-urls/) by utilizing presigned URLs. - -Learn more about some of the featured that help keep lakeFS Secure: - -- [Authentication](./authentication.md) - An overview of the authentication and authorization mechanisms available in lakeFS, including built-in and external services, API and S3 Gateway authentication, and user permissions management. -- [Remote Authenticator](./remote-authenticator.md) - This feature allows organizations to leverage their existing identity infrastructure while using lakeFS, providing a flexible and secure authentication mechanism. -- [Role-Based Access Control (RBAC)](./rbac.md) - RBAC with lakeFS provides a flexible and granular approach to managing access and permissions, similar to other cloud-based systems like AWS IAM. -- [Presigned URL](./presigned-url.md) - This feature allows for more flexible and direct data access in lakeFS, particularly useful for scenarios where bypassing the lakeFS server for data retrieval or storage is beneficial. -- [Single Sign On (SSO)](./sso.md) - lakeFS provides administrators with the necessary information to set up SSO for both lakeFS Cloud and Enterprise editions, covering various authentication protocols and identity providers. -- [Short Lived Token (STS like)](./sts-login.md) - This feature allows lakeFS to leverage temporary credentials for secure and flexible authentication, integrating seamlessly with existing identity providers. -- [Login to lakeFS with AWS IAM](./external-principals-aws.md) - This feature enhances the integration between lakeFS and AWS by supporting authenticating users programmatically using AWS IAM roles instead of using static lakeFS access and secret keys. - -### SOC2 Compliance ### -lakeFS Cloud is SOC2 compliant, demonstrating our commitment to stringent security standards. - -### More questions? Contact us ### -For details on supported versions, security updates, and vulnerability reporting, please refer to our [security policy on GitHub]( https://github.com/treeverse/lakeFS/security/policy). - -If you have additional questions regarding lakeFS Security, [talk to an expert](https://meetings.hubspot.com/iddo-avneri/lakefs-security-questions). \ No newline at end of file diff --git a/docs/src/security/presigned-url.md b/docs/src/security/presigned-url.md deleted file mode 100644 index 57605cd1f6f..00000000000 --- a/docs/src/security/presigned-url.md +++ /dev/null @@ -1,81 +0,0 @@ ---- -title: Presigned URLs -description: Configuring lakeFS to use presigned URLs ---- - -# Configuring lakeFS to use presigned URLs - - - -With lakeFS, you can access data directly from the storage and not through lakeFS using a presigned URL. -Based on the user's access to an object in the object store, the presigned URL will get read or write access. - -The presign support is enabled for block adapter that supports it (AWS, GCP, Azure), and can be disabled by the [configuration](../reference/configuration.md) (`blockstore..disable_pre_signed`). Note that the UI support is disabled by default. - -It is possible to override the default pre-signed URL endpoint in **AWS** by setting the [configuration](../reference/configuration.md) (`blockstore.s3.pre_signed_endpoint`). -This is useful, for example, when you wish to define a [VPC endpoint](https://docs.aws.amazon.com/AmazonS3/latest/userguide/privatelink-interface-endpoints.html#accessing-s3-interface-endpoints) access for the pre-signed URL. - -## Using presigned URLs in the UI -To use presigned URLs in the UI: - -1. Enable the presigned URL support UI in the lakeFS [configuration](../reference/configuration.md): -set `blockstore..disable_pre_signed_ui=false`. -2. Add CORS (Cross-Origin Resource Sharing) permissions to the bucket for the UI to fetch objects using a presigned URL (instead of through lakeFS). - -!!! warning - Currently DuckDB fetching data from lakeFS does not support fetching data using presigned URL. - -### Examples - -!!! example "[AWS S3](https://docs.aws.amazon.com/AmazonS3/latest/userguide/enabling-cors-examples.html)" - - ```json - [ - { - "AllowedHeaders": [ - "*" - ], - "AllowedMethods": [ - "GET", - "PUT", - "HEAD" - ], - "AllowedOrigins": [ - "lakefs.endpoint" - ], - "ExposeHeaders": [ - "ETag" - ] - } - ] - ``` - - -!!! example "[Google Storage](https://cloud.google.com/storage/docs/using-cors)" - - ```json - [ - { - "origin": ["lakefs.endpoint"], - "responseHeader": ["ETag"], - "method": ["PUT", "GET", "HEAD"], - "maxAgeSeconds": 3600 - } - ] - ``` - - -!!! example "[Azure blob storage](https://learn.microsoft.com/en-us/rest/api/storageservices/cross-origin-resource-sharing--cors--support-for-the-azure-storage-services)" - - ```xml - - - lakefs.endpoint - PUT,GET,HEAD - * - ETag,x-ms-* - 3600 - - - ``` - diff --git a/docs/src/security/rbac.md b/docs/src/security/rbac.md deleted file mode 100644 index b1e63831f1f..00000000000 --- a/docs/src/security/rbac.md +++ /dev/null @@ -1,595 +0,0 @@ ---- -title: Role-Based Access Control (RBAC) -description: This section covers authorization (using RBAC) of your lakeFS server. -status: enterprise -search: - boost: 2 ---- - - -# Role-Based Access Control (RBAC) - -!!! info - Available in **lakeFS Cloud** and **lakeFS Enterprise** - - - - -## RBAC Model - -Access to resources is managed very much like [AWS IAM](https://docs.aws.amazon.com/IAM/latest/UserGuide/intro-structure.html){:target="_blank"}. - -There are five basic components to the system: - -1. **Users** - Representing entities that access and use the system. A user is given one or more **Access Credentials** for authentication. -2. **Actions** - Representing a logical action within the system - reading a file, creating a repository, etc. -3. **Resources** - A unique identifier representing a specific resource in the system - a repository, an object, a user, etc. -4. **Policies** - Representing a set of **Actions**, a **Resource** and an effect: whether or not these actions are `allowed` or `denied` for the given resource(s). -5. **Groups** - A named collection of users. Users can belong to multiple groups. - -Controlling access is done by attaching **Policies**, either directly to **Users**, or to **Groups** they belong to. - -## Authorization process - -Every action in the system - be it an API request, UI interaction, S3 Gateway call, or CLI command - requires a set of actions to be allowed for one or more resources. - -When a user makes a request to perform that action, the following process takes place: - -1. Authentication - the credentials passed in the request are evaluated and the user's identity is extracted. -1. Action permission resolution - lakeFS then calculates the set of allowed actions and resources that this request requires. -1. Effective policy resolution - the user's policies (either attached directly or through group memberships) are calculated. -1. Policy/Permission evaluation - lakeFS will compare the given user policies with the request actions and determine whether or not the request is allowed to continue. - -## Policy Precedence - -Each policy attached to a user or a group has an `Effect` - either `allow` or `deny`. -During evaluation of a request, `deny` would take precedence over any other `allow` policy. - -This helps us compose policies together. For example, we could attach a very permissive policy to a user and use `deny` rules to then selectively restrict what that user can do. - - -## Policy Conditions - -lakeFS policies support optional conditions that provide additional control over when a policy statement is in effect. - -Conditions are specified using condition operators that evaluate to true or false based on the request context. When a condition evaluates to false, the policy statement does not apply. - -### Condition Structure - -Conditions are added to policy statements using the optional `condition` field: - -```json -{ - "statement": [ - { - "action": ["fs:ReadObject"], - "effect": "allow", - "resource": "arn:lakefs:fs:::repository/myrepo/object/*", - "condition": { - "IpAddress": { - "SourceIp": ["203.0.113.0/24", "198.51.100.25/32"] - } - } - } - ] -} -``` - -### Supported Condition Operators - -#### IpAddress / NotIpAddress - -The `IpAddress` condition operator matches the client's source IP address against one or more IP addresses or CIDR blocks. The `NotIpAddress` condition operator matches when the client's source IP address does NOT match any of the specified IP addresses or CIDR blocks (negation of `IpAddress`). - -**Supported Fields:** - -- `SourceIp` - The IP address of the client making the request - -**Value Format:** -- Single IP address: `"203.0.113.5"` -- CIDR notation: `"203.0.113.0/24"` -- Array of IPs and/or CIDRs: `["203.0.113.0/24", "198.51.100.25/32"]` - -**Example - Allow access only from specific IP range:** - -```json -{ - "statement": [ - { - "action": ["fs:*"], - "effect": "allow", - "resource": "*", - "condition": { - "IpAddress": { - "SourceIp": ["10.0.0.0/8", "172.16.0.0/12"] - } - } - } - ] -} -``` - -**Example - Deny access from specific IPs:** - -```json -{ - "statement": [ - { - "action": ["fs:*"], - "effect": "deny", - "resource": "*", - "condition": { - "IpAddress": { - "SourceIp": ["192.0.2.0/24"] - } - } - } - ] -} -``` - -**Example - Deny access from IPs NOT in allowed ranges:** - -```json -{ - "statement": [ - { - "action": ["fs:*"], - "effect": "deny", - "resource": "*", - "condition": { - "NotIpAddress": { - "SourceIp": ["10.0.0.0/8", "172.16.0.0/12", "192.168.0.0/16"] - } - } - } - ] -} -``` - -**IP Address Extraction:** - -lakeFS extracts the client IP address from the request using the following priority: - -1. `X-Forwarded-For` header (first IP in the list) - for requests through proxies/load balancers -2. `X-Real-IP` header - as a fallback -3. Remote address from the TCP connection - -This ensures that IP-based conditions work correctly even when lakeFS is deployed behind a load balancer or reverse proxy. - -#### StringLike / StringNotLike - -The `StringLike` condition operator matches a context value against one or more wildcard patterns. The `StringNotLike` condition operator matches when the context value does NOT match any of the specified patterns (negation of `StringLike`). - -Wildcard characters: `*` matches zero or more characters, `?` matches exactly one character. - -For supported fields and examples of using `StringLike` conditions with Iceberg catalog operations, see [Iceberg List Operations Filtering](../integrations/iceberg.md#list-operations-filtering). - - -## Resource naming - ARNs - -lakeFS uses [ARN identifier](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_identifiers.html#identifiers-arns){:target="_blank"} - very similar in structure to those used by AWS. -The resource segment of the ARN supports wildcards: use `*` to match 0 or more characters, or `?` to match exactly one character. - -Here are a some **examples** of valid ARNs within lakeFS and their meaning: - -| ARN | Meaning | -|--------------------------------------------------------|---------------------------------------| -| `arn:lakefs:auth:::user/jane.doe` | A specific user | -| `arn:lakefs:auth:::user/*` | All users | -| `arn:lakefs:fs:::repository/myrepo/*` | All resources under `myrepo` | -| `arn:lakefs:fs:::repository/myrepo/object/foo/bar/baz` | A single object ARN | -| `arn:lakefs:fs:::repository/myrepo/object/*` | All objects in `myrepo` | -| `arn:lakefs:fs:::repository/*` | All repositories | -| `arn:lakefs:fs:::*` | All resources under the fs ARN prefix | -| `arn:lakefs:catalog:::namespace/{repositoryId}/{namespace}` | An Iceberg namespace | -| `arn:lakefs:catalog:::table/{repositoryId}/{namespace}/{table}` | An Iceberg table | -| `arn:lakefs:catalog:::view/{repositoryId}/{namespace}/{view}` | An Iceberg view | - -Note that Iceberg catalog ARNs are **branch-agnostic**, the branch is not part of the ARN. A policy granting access to a namespace, a table or a view applies to that resource on every branch in the repository. - -Additionally, the current user's ID is interpolated in runtime into the ARN using the `${user}` placeholder. - -This allows us to create fine-grained policies affecting only a specific subset of resources. - -See below for a full reference of ARNs and actions. - - -## Actions and Permissions - -For the full list of actions and their required permissions, see the following table: - -| Action name | required action | Resource | API endpoint | S3 gateway operation | -|--------------------------------------------------|---------------------------------------------|--------------------------------------------------------------------------|---------------------------------------------------------------------------------------|------------------------------------------------------------------------| -| List Repositories | `fs:ListRepositories` | `*` | GET `/repositories` | ListBuckets | -| Get Repository | `fs:ReadRepository` | `arn:lakefs:fs:::repository/{repositoryId}` | GET `/repositories/{repositoryId}` | HeadBucket | -| Get Commit | `fs:ReadCommit` | `arn:lakefs:fs:::repository/{repositoryId}` | GET `/repositories/{repositoryId}/commits/{commitId}` | - | -| Create Commit | `fs:CreateCommit` | `arn:lakefs:fs:::repository/{repositoryId}/branch/{branchId}` | POST `/repositories/{repositoryId}/branches/{branchId}/commits` | - | -| Get Commit log | `fs:ReadBranch` | `arn:lakefs:fs:::repository/{repositoryId}/branch/{branchId}` | GET `/repositories/{repositoryId}/branches/{branchId}/commits` | - | -| Create Repository | `fs:CreateRepository` | `arn:lakefs:fs:::repository/{repositoryId}` | POST `/repositories` | - | -| Namespace Attach to Repository | `fs:AttachStorageNamespace` | `arn:lakefs:fs:::namespace/{storageNamespace}` | POST `/repositories` | - | -| Import From Source | `fs:ImportFromStorage` | `arn:lakefs:fs:::namespace/{storageNamespace}` | POST `/repositories/{repositoryId}/branches/{branchId}/import` | - | -| Cancel Import | `fs:ImportCancel` | `arn:lakefs:fs:::repository/{repositoryId}/branch/{branchId}` | DELETE `/repositories/{repositoryId}/branches/{branchId}/import` | - | -| Delete Repository | `fs:DeleteRepository` | `arn:lakefs:fs:::repository/{repositoryId}` | DELETE `/repositories/{repositoryId}` | - | -| List Branches | `fs:ListBranches` | `arn:lakefs:fs:::repository/{repositoryId}` | GET `/repositories/{repositoryId}/branches` | ListObjects/ListObjectsV2 (with delimiter = `/` and empty` prefix) | -| Get Branch | `fs:ReadBranch` | `arn:lakefs:fs:::repository/{repositoryId}/branch/{branchId}` | GET `/repositories/{repositoryId}/branches/{branchId}` | - | -| Create Branch | `fs:CreateBranch` | `arn:lakefs:fs:::repository/{repositoryId}/branch/{branchId}` | POST `/repositories/{repositoryId}/branches` | - | -| Delete Branch | `fs:DeleteBranch` | `arn:lakefs:fs:::repository/{repositoryId}/branch/{branchId}` | DELETE `/repositories/{repositoryId}/branches/{branchId}` | - | -| Merge branches | `fs:CreateCommit` | `arn:lakefs:fs:::repository/{repositoryId}/branch/{destinationBranchId}` | POST `/repositories/{repositoryId}/refs/{sourceBranchId}/merge/{destinationBranchId}` | - | -| Diff branch uncommitted changes | `fs:ListObjects` | `arn:lakefs:fs:::repository/{repositoryId}` | GET `/repositories/{repositoryId}/branches/{branchId}/diff` | - | -| Diff refs | `fs:ListObjects` | `arn:lakefs:fs:::repository/{repositoryId}` | GET `/repositories/{repositoryId}/refs/{leftRef}/diff/{rightRef}` | - | -| Stat object | `fs:ReadObject` | `arn:lakefs:fs:::repository/{repositoryId}/object/{objectKey}` | GET `/repositories/{repositoryId}/refs/{ref}/objects/stat` | HeadObject | -| Get Object | `fs:ReadObject` | `arn:lakefs:fs:::repository/{repositoryId}/object/{objectKey}` | GET `/repositories/{repositoryId}/refs/{ref}/objects` | GetObject | -| List Objects | `fs:ListObjects` | `arn:lakefs:fs:::repository/{repositoryId}` | GET `/repositories/{repositoryId}/refs/{ref}/objects/ls` | ListObjects, ListObjectsV2 (no delimiter, or "/" + non-empty` prefix) | -| Upload Object | `fs:WriteObject` | `arn:lakefs:fs:::repository/{repositoryId}/object/{objectKey}` | POST `/repositories/{repositoryId}/branches/{branchId}/objects` | PutObject, CreateMultipartUpload, UploadPart`, CompleteMultipartUpload | -| Delete Object | `fs:DeleteObject` | `arn:lakefs:fs:::repository/{repositoryId}/object/{objectKey}` | DELETE `/repositories/{repositoryId}/branches/{branchId}/objects` | DeleteObject, DeleteObjects`, AbortMultipartUpload | -| Revert Branch | `fs:RevertBranch` | `arn:lakefs:fs:::repository/{repositoryId}/branch/{branchId}` | PUT `/repositories/{repositoryId}/branches/{branchId}` | - | -| Get Branch Protection Rules | `branches:GetBranchProtectionRules` | `arn:lakefs:fs:::repository/{repositoryId}` | GET `/repositories/{repository}/branch_protection` | - | -| Set Branch Protection Rules | `branches:SetBranchProtectionRules` | `arn:lakefs:fs:::repository/{repositoryId}` | POST `/repositories/{repository}/branch_protection` | - | -| Delete Branch Protection Rules | `branches:SetBranchProtectionRules` | `arn:lakefs:fs:::repository/{repositoryId}` | DELETE `/repositories/{repository}/branch_protection` | - | -| Create User | `auth:CreateUser` | `arn:lakefs:auth:::user/{userId}` | POST `/auth/users` | - | -| List Users | `auth:ListUsers` | `*` | GET `/auth/users` | - | -| Get User | `auth:ReadUser` | `arn:lakefs:auth:::user/{userId}` | GET `/auth/users/{userId}` | - | -| Delete User | `auth:DeleteUser` | `arn:lakefs:auth:::user/{userId}` | DELETE `/auth/users/{userId}` | - | -| Get Group | `auth:ReadGroup` | `arn:lakefs:auth:::group/{groupId}` | GET `/auth/groups/{groupId}` | - | -| List Groups | `auth:ListGroups` | `*` | GET `/auth/groups` | - | -| Create Group | `auth:CreateGroup` | `arn:lakefs:auth:::group/{groupId}` | POST `/auth/groups` | - | -| Delete Group | `auth:DeleteGroup` | `arn:lakefs:auth:::group/{groupId}` | DELETE `/auth/groups/{groupId}` | - | -| List Policies | `auth:ListPolicies` | `*` | GET `/auth/policies` | - | -| Create Policy | `auth:CreatePolicy` | `arn:lakefs:auth:::policy/{policyId}` | POST `/auth/policies` | - | -| Update Policy | `auth:UpdatePolicy` | `arn:lakefs:auth:::policy/{policyId}` | POST `/auth/policies` | - | -| Delete Policy | `auth:DeletePolicy` | `arn:lakefs:auth:::policy/{policyId}` | DELETE `/auth/policies/{policyId}` | - | -| Get Policy | `auth:ReadPolicy` | `arn:lakefs:auth:::policy/{policyId}` | GET `/auth/policies/{policyId}` | - | -| List Group Members | `auth:ReadGroup` | `arn:lakefs:auth:::group/{groupId}` | GET `/auth/groups/{groupId}/members` | - | -| Add Group Member | `auth:AddGroupMember` | `arn:lakefs:auth:::group/{groupId}` | PUT `/auth/groups/{groupId}/members/{userId}` | - | -| Remove Group Member | `auth:RemoveGroupMember` | `arn:lakefs:auth:::group/{groupId}` | DELETE `/auth/groups/{groupId}/members/{userId}` | - | -| List User Credentials | `auth:ListCredentials` | `arn:lakefs:auth:::user/{userId}` | GET `/auth/users/{userId}/credentials` | - | -| Create User Credentials | `auth:CreateCredentials` | `arn:lakefs:auth:::user/{userId}` | POST `/auth/users/{userId}/credentials` | - | -| Delete User Credentials | `auth:DeleteCredentials` | `arn:lakefs:auth:::user/{userId}` | DELETE `/auth/users/{userId}/credentials/{accessKeyId}` | - | -| Get User Credentials | `auth:ReadCredentials` | `arn:lakefs:auth:::user/{userId}` | GET `/auth/users/{userId}/credentials/{accessKeyId}` | - | -| List User Groups | `auth:ReadUser` | `arn:lakefs:auth:::user/{userId}` | GET `/auth/users/{userId}/groups` | - | -| List User Policies | `auth:ReadUser` | `arn:lakefs:auth:::user/{userId}` | GET `/auth/users/{userId}/policies` | - | -| Attach Policy To User | `auth:AttachPolicy` | `arn:lakefs:auth:::user/{userId}` | PUT `/auth/users/{userId}/policies/{policyId}` | - | -| Detach Policy From User | `auth:DetachPolicy` | `arn:lakefs:auth:::user/{userId}` | DELETE `/auth/users/{userId}/policies/{policyId}` | - | -| List Group Policies | `auth:ReadGroup` | `arn:lakefs:auth:::group/{groupId}` | GET `/auth/groups/{groupId}/policies` | - | -| Attach Policy To Group | `auth:AttachPolicy` | `arn:lakefs:auth:::group/{groupId}` | PUT `/auth/groups/{groupId}/policies/{policyId}` | - | -| Detach Policy From Group | `auth:DetachPolicy` | `arn:lakefs:auth:::group/{groupId}` | DELETE `/auth/groups/{groupId}/policies/{policyId}` | - | -| Attach External Principal to a User | `auth:CreateUserExternalPrincipal` | `arn:lakefs:auth:::user/{userId}` | POST `/auth/users/{userId}/external/principals` | - | -| Delete External Principal Attachment from a User | `auth:DeleteUserExternalPrincipal` | `arn:lakefs:auth:::user/{userId}` | DELETE `/auth/users/{userId}/external/principals` | - | -| Get the User attached to an External Principal | `auth:ReadExternalPrincipal` | `arn:lakefs:auth:::externalPrincipal/{principalId}` | GET `/auth/external/principals` | - | -| Read Storage Config | `fs:ReadConfig` | `*` | GET `/config/storage` | - | -| Get Garbage Collection Rules | `retention:GetGarbageCollectionRules` | `arn:lakefs:fs:::repository/{repositoryId}` | GET `/repositories/{repositoryId}/gc/rules` | - | -| Set Garbage Collection Rules | `retention:SetGarbageCollectionRules` | `arn:lakefs:fs:::repository/{repositoryId}` | POST `/repositories/{repositoryId}/gc/rules` | - | -| Prepare Garbage Collection Commits | `retention:PrepareGarbageCollectionCommits` | `arn:lakefs:fs:::repository/{repositoryId}` | POST `/repositories/{repositoryId}/gc/prepare_commits` | - | -| List Repository Action Runs | `ci:ReadAction` | `arn:lakefs:fs:::repository/{repositoryId}` | GET `/repositories/{repository}/actions/runs` | - | -| Get Action Run | `ci:ReadAction` | `arn:lakefs:fs:::repository/{repositoryId}` | GET `/repositories/{repository}/actions/runs/{run_id}` | - | -| List Action Run Hooks | `ci:ReadAction` | `arn:lakefs:fs:::repository/{repositoryId}` | GET `/repositories/{repository}/actions/runs/{run_id}/hooks` | - | -| Get Action Run Hook Output | `ci:ReadAction` | `arn:lakefs:fs:::repository/{repositoryId}` | GET `/repositories/{repository}/actions/runs/{run_id}/hooks/{hook_run_id}/output` | - | -| Get Pull Request | `pr:ReadPullRequest` | `arn:lakefs:fs:::repository/{repositoryId}` | GET `/repositories/{repository}/pulls/{pull_request}` | - | -| Create Pull Request | `pr:WritePullRequest` | `arn:lakefs:fs:::repository/{repositoryId}` | POST `/repositories/{repository}/pulls` | - | -| Update Pull Request | `pr:WritePullRequest` | `arn:lakefs:fs:::repository/{repositoryId}` | PATCH `/repositories/{repository}/pulls/{pull_request}` | - | -| Merge Pull Request | `pr:WritePullRequest` + Merge Branches | `arn:lakefs:fs:::repository/{repositoryId}` | PUT `/repositories/{repository}/pulls/{pull_request}/merge` | - | -| List Pull Requests | `pr:ListPullRequests` | `arn:lakefs:fs:::repository/{repositoryId}` | GET `/repositories/{repository}/pulls` | - | -| List Namespaces | `catalog:ListNamespaces` | `arn:lakefs:catalog:::namespace/{repositoryId}/{namespace}` | GET `/iceberg/api/v1/{prefix}/namespaces` | - | -| Get Namespace | `catalog:GetNamespace` | `arn:lakefs:catalog:::namespace/{repositoryId}/{namespace}` | GET `/iceberg/api/v1/{prefix}/namespaces/{namespace}` | - | -| Create Namespace | `catalog:CreateNamespace` | `arn:lakefs:catalog:::namespace/{repositoryId}/{namespace}` | POST `/iceberg/api/v1/{prefix}/namespaces` | - | -| Update Namespace | `catalog:UpdateNamespace` | `arn:lakefs:catalog:::namespace/{repositoryId}/{namespace}` | POST `/iceberg/api/v1/{prefix}/namespaces/{namespace}/properties` | - | -| Delete Namespace | `catalog:DeleteNamespace` | `arn:lakefs:catalog:::namespace/{repositoryId}/{namespace}` | DELETE `/iceberg/api/v1/{prefix}/namespaces/{namespace}` | - | -| List Tables | `catalog:ListTables` | `arn:lakefs:catalog:::namespace/{repositoryId}/{namespace}` | GET `/iceberg/api/v1/{prefix}/namespaces/{namespace}/tables` | - | -| Create Table | `catalog:CreateTable` | `arn:lakefs:catalog:::table/{repositoryId}/{namespace}/{table}` | POST `/iceberg/api/v1/{prefix}/namespaces/{namespace}/tables` | - | -| Read Table | `catalog:ReadTable` | `arn:lakefs:catalog:::table/{repositoryId}/{namespace}/{table}` | GET `/iceberg/api/v1/{prefix}/namespaces/{namespace}/tables/{table}` | - | -| Update Table | `catalog:UpdateTable` | `arn:lakefs:catalog:::table/{repositoryId}/{namespace}/{table}` | POST `/iceberg/api/v1/{prefix}/namespaces/{namespace}/tables/{table}` | - | -| Delete Table | `catalog:DeleteTable` | `arn:lakefs:catalog:::table/{repositoryId}/{namespace}/{table}` | DELETE `/iceberg/api/v1/{prefix}/namespaces/{namespace}/tables/{table}` | - | -| List Views | `catalog:ListViews` | `arn:lakefs:catalog:::namespace/{repositoryId}/{namespace}` | GET `/iceberg/api/v1/{prefix}/namespaces/{namespace}/views` | - | -| Create View | `catalog:CreateView` | `arn:lakefs:catalog:::view/{repositoryId}/{namespace}/{view}` | POST `/iceberg/api/v1/{prefix}/namespaces/{namespace}/views` | - | -| Read View | `catalog:ReadView` | `arn:lakefs:catalog:::view/{repositoryId}/{namespace}/{view}` | GET `/iceberg/api/v1/{prefix}/namespaces/{namespace}/views/{view}` | - | -| Update View | `catalog:UpdateView` | `arn:lakefs:catalog:::view/{repositoryId}/{namespace}/{view}` | POST `/iceberg/api/v1/{prefix}/namespaces/{namespace}/views/{view}` | - | -| Delete View | `catalog:DeleteView` | `arn:lakefs:catalog:::view/{repositoryId}/{namespace}/{view}` | DELETE `/iceberg/api/v1/{prefix}/namespaces/{namespace}/views/{view}` | - | -| Login as Organization Admin _(Cloud only)_ | `admin:Login` | `*` | POST `/admin/login` _(part of lakefs cloud, not lakefs endpoint)_ | - | - - -Some APIs may require more than one action. For instance, to create a repository (`POST /repositories`), -you need permission to `fs:CreateRepository` for the _name_ of the repository and also -`fs:AttachStorageNamespace` for the _storage namespace_ used. - -## Preconfigured Policies - -The following `Policies` are created during initial setup: - -### FSFullAccess - -```json -{ - "statement": [ - { - "action": [ - "fs:*" - ], - "effect": "allow", - "resource": "*" - } - ] -} -``` - -### FSReadAll - -```json -{ - "statement": [ - { - "action": [ - "fs:List*", - "fs:Read*" - ], - "effect": "allow", - "resource": "*" - } - ] -} -``` - -### FSReadWriteAll - -```json -{ - "statement": [ - { - "action": [ - "fs:Read*", - "fs:List*", - "fs:WriteObject", - "fs:DeleteObject", - "fs:RevertBranch", - "fs:CreateBranch", - "fs:CreateTag", - "fs:DeleteBranch", - "fs:DeleteTag", - "fs:CreateCommit" - ], - "effect": "allow", - "resource": "*" - } - ] -} -``` - -### AuthFullAccess - -```json -{ - "statement": [ - { - "action": [ - "auth:*" - ], - "effect": "allow", - "resource": "*" - } - ] -} -``` - -### AuthManageOwnCredentials - -```json -{ - "statement": [ - { - "action": [ - "auth:CreateCredentials", - "auth:DeleteCredentials", - "auth:ListCredentials", - "auth:ReadCredentials" - ], - "effect": "allow", - "resource": "arn:lakefs:auth:::user/${user}" - } - ] -} -``` - -### RepoManagementFullAccess - -```json -{ - "statement": [ - { - "action": [ - "ci:*" - ], - "effect": "allow", - "resource": "*" - }, - { - "action": [ - "retention:*" - ], - "effect": "allow", - "resource": "*" - } - ] -} -``` - -### RepoManagementReadAll - -```json -{ - "statement": [ - { - "action": [ - "ci:Read*" - ], - "effect": "allow", - "resource": "*" - }, - { - "action": [ - "retention:Get*" - ], - "effect": "allow", - "resource": "*" - } - ] -} -``` - -### AdminFullAccess (lakeFS Cloud only) - -```json -{ - "statement": [ - { - "action": [ - "admin:*" - ], - "effect": "allow", - "resource": "*" - } - ] -} -``` - -## Additional Policies - -You can create additional policies to further limit user access. Use the web UI or -the [lakectl auth](../reference/cli.md#lakectl-auth-policies-create) command to create policies. - -Here is an example to define read/write access for a specific repository: - -```json -{ - "statement": [ - { - "action": [ - "fs:ReadRepository", - "fs:ReadCommit", - "fs:ListBranches", - "fs:ListTags", - "fs:ListObjects" - ], - "effect": "allow", - "resource": "arn:lakefs:fs:::repository/" - }, - { - "action": [ - "fs:RevertBranch", - "fs:ReadBranch", - "fs:CreateBranch", - "fs:DeleteBranch", - "fs:CreateCommit" - ], - "effect": "allow", - "resource": "arn:lakefs:fs:::repository//branch/*" - }, - { - "action": [ - "fs:ListObjects", - "fs:ReadObject", - "fs:WriteObject", - "fs:DeleteObject" - ], - "effect": "allow", - "resource": "arn:lakefs:fs:::repository//object/*" - }, - { - "action": [ - "fs:ReadTag", - "fs:CreateTag", - "fs:DeleteTag" - ], - "effect": "allow", - "resource": "arn:lakefs:fs:::repository//tag/*" - }, - { - "action": ["fs:ReadConfig"], - "effect": "allow", - "resource": "*" - } - ] -} -``` - -## Multiple Resources Statements - -lakeFS supports specifying multiple resources in a single RBAC statement. This is available on lakeFS Cloud, or on lakeFS Enterprise if starting at version lakeFS v1.54.0 and Fluffy v0.12.0 -In addition to a single resource. The resource field can contain a string representing a JSON-encoded list of resources. - -```json -{ - "statement": [ - { - "action": [ - "fs:Read*" - ], - "effect": "allow", - "resource": "[\"arn:lakefs:fs:::repository/repo1\",\"arn:lakefs:fs:::repository/repo2\"]" - } - ] -} -``` - -The list must be properly encoded as a JSON string: quote each resource, and escape those quotes as shown. -Otherwise, the policy cannot be parsed. - -### Multi-Resource Policy Creation Using Python SDK - -Here is how you can leverage Python SDK to create a multiple resource policy: - -```python -import lakefs_sdk -from lakefs_sdk.client import LakeFSClient -from lakefs_sdk import models - -configuration = lakefs_sdk.Configuration( - host=lakefsEndPoint, - username=lakefsAccessKey, - password=lakefsSecretKey, -) -clt = LakeFSClient(configuration) - -clt.auth_api.create_policy( - policy=models.Policy( - id='FSReadTwoRepos', - statement=[models.Statement( - effect="deny", - resource=json.dumps(["arn:lakefs:fs:::repository/repo1","arn:lakefs:fs:::repository/repo2"]), - action=["fs:ReadRepository"], - ), - ] - ) -) -``` - -## Preconfigured Groups - -lakeFS has four preconfigured groups: - -* Admins -* SuperUsers -* Developers -* Viewers - -They have the following policies granted to them: - -| Policy | Admins | SuperUsers | Developers | Viewers | -|---------------------------------------------------------|--------|------------|------------|---------| -| [`FSFullAccess`](#fsfullaccess) | ✅ | ✅ | | | -| [`AuthFullAccess`](#authfullaccess) | ✅ | | | | -| [`RepoManagementFullAccess`](#repomanagementfullaccess) | ✅ | | | | -| [`AuthManageOwnCredentials`](#authmanageowncredentials) | | ✅ | ✅ | ✅ | -| [`RepoManagementReadAll`](#repomanagementreadall) | | ✅ | ✅ | | -| [`FSReadWriteAll`](#fsreadwriteall) | | | ✅ | | -| [`FSReadAll`](#fsreadall) | | | | ✅ | -| [`AdminFullAccess` (_Cloud only)_](#adminfullaccess) | ✅ | | | | - -## Pluggable Authentication and Authorization - -Authorization and authentication is pluggable in lakeFS. - -If lakeFS is attached to a [remote authentication server](./remote-authenticator.md) (or you are using lakeFS Cloud) then the role-based access control user interface can be used. - -If you are using RBAC with your self-managed lakeFS then the lakeFS configuration element `auth.ui_config.rbac` should be set to `external`. - -An enterprise (paid) solution of lakeFS should set `auth.ui_config.rbac` as `internal`. diff --git a/docs/src/security/remote-authenticator.md b/docs/src/security/remote-authenticator.md deleted file mode 100644 index e07c6d8039f..00000000000 --- a/docs/src/security/remote-authenticator.md +++ /dev/null @@ -1,179 +0,0 @@ ---- -title: Remote Authenticator -description: Create a pluggable remote authenticator to integrate lakeFS with your existing security infrastructure. ---- - -# Remote Authenticator - -Remote Authenticator is a pluggable architecture for lakeFS which allows you to use existing organizational identity policies and infrastructure with the authentication mechanism of lakeFS. The Remote Authenticator's job is to abstract away the complexities of existing infrastructure and implement a standard interface, which lakeFS can use to resolve user identity and manage access to lakeFS. This loose coupling allows you to implement federated identity without providing lakeFS with direct access to your identity infrastructure. - -## Architecture - -Here's the authentication flow that lakeFS uses when configured with a remote authenticator: - -```mermaid -sequenceDiagram - participant A as lakeFS Client - participant B as lakeFS Server - participant C as Remote Authenticator - participant D as IdP - A->>B: Submit login form - B->>C: POST user credentials - C->>D: IdP request - D->>C: IdP response - C->>B: Auth response - B->>A: auth JWT -``` - -## The Interface - -To configure lakeFS to work with a Remote Authenticator add the following YAML to your lakeFS configuration: - -```yaml -auth: - remote_authenticator: - enabled: true - endpoint: - default_user_group: "Developers" - ui_config: - logout_url: /logout - login_cookie_names: - - internal_auth_session -``` - -!!! info - **lakeFS OSS** uses a single user: only the admin user created during initialization exists. When using Remote Authenticator with OSS, authentication is limited to this admin user. Successful authentication is only possible if the Remote Authenticator returns an `external_user_identifier` that matches the admin user name created at setup. - - **lakeFS Enterprise** supports multiple users. With Remote Authenticator enabled, both existing and new users authenticated by the Remote Authenticator can log in to lakeFS and will be associated with the configured default user group (if specified). This allows organizations to manage access for multiple users and leverage their existing identity infrastructure. - -- `auth.remote_authenticator.enabled` - set lakeFS to use the remote authenticator -- `auth.remote_authenticator.endpoint` - an endpoint where the remote authenticator is able to receive a POST request from lakeFS -- `auth.remote_authenticator.default_user_group` - the group assigned by default to new users -- `auth.ui_config.logout_url` - the URL to redirect the browser when clicking the logout link in the user menu -- `auth.ui_config.login_cookie_names` - the name of the cookie(s) lakeFS will set following a successful authentication. The value is the authenticated user's JWT - -A Remote Authenticator implementation should expose a single endpoint, which expects the following JSON request: - -```json -{ - "username": "testy.mctestface@example.com", - "password": "Password1" -} -``` - -and returns a JSON response like this: - -```json -{ - "external_user_identifier": "TestyMcTestface" -} -``` - -### Example Request & Responses - -#### Request - -```http -POST https://remote-authenticator.example.com/auth -Content-Type: application/json - -{ - "username": "testy.mctestface@example.com", - "password": "Password1" -} -``` - -#### Successful Response - -```http -HTTP/1.1 200 OK -Content-Type: application/json - - -{ - "external_user_identifier": "TestyMcTestface" -} -``` - -#### Unauthorized Response - -```http -HTTP/1.1 401 Unauthorized -Content-Type: application/json - -{ - "external_user_identifier": "" -} -``` - -If the Remote Authenticator returns any HTTP status in the 2xx range, lakeFS considers this a successful authentication. Any HTTP status < 200 or > 300 is considered a failed authentication. If the Remote Authenticator returns a non-empty value for the `external_user_identifier` property along with a success HTTP status, lakeFS will show this identifier instead of an internal lakeFS user identifier in the UI. - -## Sample Implementation - -Here is a sample Remote Authenticator implemented using [node](https://nodejs.org/) and [express](https://expressjs.com/) and written in TypeScript. This example implementation doesn't integrate with any real IdP but illustrates the expected request/response patterns that you need to implement. - -```javascript -import dotenv from "dotenv"; -import express, { Express, Request, Response } from "express"; -import { StatusCodes } from "http-status-codes"; - -type AuthRequestBody = { - username: string; - password: string; -}; - -type AuthResponseBody = { - external_user_identifier: string; -}; - -const DEFAULT_PORT = 80; - -dotenv.config(); - -const port = process.env.PORT || DEFAULT_PORT; -const app: Express = express(); - -app.post( - "/auth", - (req: Request, res: Response) => { - const { username, password } = req.body; - if (!username?.length || !password?.length) { - return res.status(StatusCodes.BAD_REQUEST).json({ - external_user_identifier: "", - }); - } - - // 👇🏻 This is where you would implement your own authentication logic - if ( - username === "testy.mctestface@example.com" && - password === "Password1" - ) { - return res.status(StatusCodes.OK).json({ - external_user_identifier: "TestyMcTestface", - }); - } else { - return res.status(StatusCodes.UNAUTHORIZED).json({ - external_user_identifier: "", - }); - } - } -); - -app.listen(port, () => { - console.log(`Remote Authenticator listening on port ${port}`); -}); -``` - -To run this service on the sub-domain `idp.example.com`, use a lakeFS configuration that looks like this: - -```yaml -auth: - remote_authenticator: - enabled: true - endpoint: https://idp.example.com/auth - default_user_group: "Developers" - ui_config: - logout_url: /logout - login_cookie_names: - - internal_auth_session -``` diff --git a/docs/src/security/sso.md b/docs/src/security/sso.md deleted file mode 100644 index 59dc6a55d5c..00000000000 --- a/docs/src/security/sso.md +++ /dev/null @@ -1,442 +0,0 @@ ---- -title: Single Sign On (SSO) -description: How to configure Single Sign On (SSO) for lakeFS Cloud and lakeFS Enterprise. -status: enterprise -search: - boost: 2 ---- - -# Single Sign On (SSO) - -!!! info - Available in **lakeFS Cloud** and **lakeFS Enterprise**
- If you're using the open-source version of lakeFS you can read more about the [authentication options available](./authentication.md). - -## SSO for lakeFS Cloud - -lakeFS Cloud uses Auth0 for authentication and thus supports the same identity providers as Auth0 including Active Directory/LDAP, ADFS, Azure Active Directory Native, Google Workspace, OpenID Connect, Okta, PingFederate, SAML, and Azure Active Directory. - -=== "Okta" - - !!! note - This guide is based on [Okta's Create OIDC app integrations guide](https://help.okta.com/en-us/Content/Topics/Apps/Apps_App_Integration_Wizard_OIDC.htm). - - **Steps:** - - 1. Login to your Okta account - 2. Select **Applications > Applications**, then **Create App Integration**. - 3. Select Create New App and enter the following: - 1. For **Sign-in method**, choose OIDC. - 2. Under **Application type**, choose **Web app**. - 3. Select Next. - 4. Under General Settings: - 1. **App integration name**, enter a name for your application. (i.e lakeFS Cloud) - 5. In the **Sign-in redirect URIs** field, enter https://lakefs-cloud.us.auth0.com/login (United States) or https://lakefs-cloud.eu.auth0.com/login (Europe). - 6. Under **Sign-in redirect URIs**, click **Add URI**, enter https://lakefs-cloud.us.auth0.com/login/callback (United States) or https://lakefs-cloud.eu.auth0.com/login/callback (Europe). - 7. Under **Assignments**, choose the wanted **Controlled access**. (i.e Allow everyone in your organization to access) - 8. Uncheck **Enable immediate access with Federation Broker Mode**. - 9. Select **Save**. - - Once you finish registering your application with Okta, save the **Client ID**, **Client Secret** and your **Okta Domain**, send this to Treeverse's team to finish the integration. - -=== "Active Directory Federation Services (AD FS)" - - **Prerequisites:** - - * Client's AD FS server should be exposed publicly or to Auth0's IP ranges (either directly or using Web Application Proxy) - - **Steps:** - - 1. Connect to the AD FS server - 2. Open AD FS' PowerShell CLI as Administrator through the server manager - 3. Execute the following: - ```sh - (new-object Net.WebClient -property @{Encoding = [Text.Encoding]::UTF8}).DownloadString("https://raw.github.com/auth0/adfs-auth0/master/adfs.ps1") | iex - - AddRelyingParty "urn:auth0:lakefs-cloud" "https://lakefs-cloud.us.auth0.com/login/callback" - ``` - - !!! note - If your organization data is located in Europe, use `lakefs-cloud.eu.auth0.com` instead of `lakefs-cloud.us.auth0.com`. - - Once you finish registering lakeFS Cloud with AD FS, save the **AD FS URL** and send this to Treeverse's team to finish the integration. - -=== "Azure Active Directory (AD)" - - **Prerequisites:** - - * Azure account with permissions to manage applications in Azure Active Directory - - !!! note - If you've already set up lakeFS Cloud with your Azure account, you can skip the [Register lakeFS Cloud with Azure](#register-lakefs-cloud-with-azure) and [Add client secret](#add-a-secret) and go directly to [Add a redirect URI](#add-a-redirect-uri). - - **Register lakeFS Cloud with Azure** - - **Steps:** - - 1. Sign in to the Azure portal. - 2. If you have access to multiple tenants, use the Directories + subscriptions filter in the top menu to switch to the tenant in which you want to register the application. - 3. Search for and select Azure Active Directory. - 4. Under Manage, select App registrations > New registration. - 5. Enter a display Name for your application. Users of your application might see the display name when they use the app, for example during sign-in. You can change the display name at any time and multiple app registrations can share the same name. The app registration's automatically generated Application (client) ID, not its display name, uniquely identifies your app within the identity platform. - 6. Specify who can use the application, sometimes called its sign-in audience. - - !!! note - don't enter anything for Redirect URI (optional). You'll configure a redirect URI in the next section. - - 7. Select Register to complete the initial app registration. - - When registration finishes, the Azure portal displays the app registration's Overview pane. You see the Application (client) ID. Also called the client ID, this value uniquely identifies your application in the Microsoft identity platform. - - Important: new app registrations are hidden to users by default. When you are ready for users to see the app on their My Apps page you can enable it. To enable the app, in the Azure portal navigate to Azure Active Directory > Enterprise applications and select the app. Then on the Properties page toggle Visible to users? to Yes. - - **Add a secret** - - Sometimes called an application password, a client secret is a string value your app can use in place of a certificate to identity itself. - - **Steps:** - - 1. In the Azure portal, in App registrations, select your application. - 2. Select Certificates & secrets > Client secrets > New client secret. - 3. Add a description for your client secret. - 4. Select an expiration for the secret or specify a custom lifetime. - 1. Client secret lifetime is limited to two years (24 months) or less. You can't specify a custom lifetime longer than 24 months. - 2. Microsoft recommends that you set an expiration value of less than 12 months. - 5. Select Add. - 6. Record the secret's value for use in your client application code. This secret value is never displayed again after you leave this page. - - **Add a redirect URI** - A redirect URI is the location where the Microsoft identity platform redirects a user's client and sends security tokens after authentication. - - You add and modify redirect URIs for your registered applications by configuring their platform settings. - - Enter https://lakefs-cloud.us.auth0.com/login/callback as your redirect URI. - - Settings for each application type, including redirect URIs, are configured in Platform configurations in the Azure portal. Some platforms, like Web and Single-page applications, require you to manually specify a redirect URI. For other platforms, like mobile and desktop, you can select from redirect URIs generated for you when you configure their other settings. - - **Steps:** - - 1. In the Azure portal, in App registrations, select your application. - 2. Under Manage, select Authentication. - 3. Under Platform configurations, select Add a platform. - 4. Under Configure platforms, select the web option. - 5. Select Configure to complete the platform configuration. - - Once you finish registering lakeFS Cloud with Azure AD send the following items to the Treeverse's team: - - 1. **Client ID** - 2. **Client Secret** - 3. **Azure AD Domain** - 4. **Identity API Version** (v1 for Azure AD or v2 for Microsoft Identity Platform/Entra) - -## SSO for lakeFS Enterprise - -Starting from v1.63.0, authentication in lakeFS Enterprise is handled directly by the lakeFS Enterprise service. lakeFS Enterprise supports the following identity providers: - -* Active Directory Federation Services (AD FS) (using SAML) -* OpenID Connect -* LDAP -* External AWS Authentication (using IAM) - -If you're using an authentication provider that is not listed, please [contact us](https://lakefs.io/contact-us/) for further assistance. - -=== "Active Directory Federation Services (AD FS) (using SAML)" - - !!! note - AD FS integration uses certificates to sign and encrypt requests going out from lakeFS Enterprise and decrypt incoming requests from AD FS server. - - If you'd like to generate a self-signed certificates using OpenSSL: - - ```sh - openssl req -x509 -newkey rsa:2048 -keyout myservice.key -out myservice.cert -days 365 -nodes -subj "/CN=lakefs.company.com" - ``` - In order for SAML authentication to work, configure the following values in your chart's `values.yaml` file: - - ```yaml - ingress: - enabled: true - ingressClassName: - hosts: - - host: - paths: - - / - - enterprise: - enabled: true - auth: - saml: - enabled: true - createCertificateSecret: true # NEW: Auto-creates secret - certificate: - samlRsaPublicCert: | # RENAMED: from saml_rsa_public_cert - -----BEGIN CERTIFICATE----- - ... - -----END CERTIFICATE----- - samlRsaPrivateKey: | # RENAMED: from saml_rsa_private_key - -----BEGIN PRIVATE KEY----- - ... - -----END PRIVATE KEY----- - - image: - privateRegistry: - enabled: true - secretToken: - - lakefsConfig: | - blockstore: - type: local - auth: - logout_redirect_url: https:// - cookie_auth_verification: - auth_source: saml - # claim name to display user in the UI - friendly_name_claim_name: displayName - # claim name from IDP to use as the unique user name - external_user_id_claim_name: samName - default_initial_groups: - - "Developers" - providers: - saml: - post_login_redirect_url: https:// - sp_root_url: https:// - sp_sign_request: true - # depends on IDP - sp_signature_method: "http://www.w3.org/2001/04/xmldsig-more#rsa-sha256" - # url to the metadata of the IDP - idp_metadata_url: "https:///federationmetadata/2007-06/federationmetadata.xml" - # IDP SAML claims format default unspecified - idp_authn_name_id_format: "urn:oasis:names:tc:SAML:1.1:nameid-format:unspecified" - # depending on IDP setup, if CA certs are self signed and not trusted by a known CA - #idp_skip_verify_tls_cert: true - ``` - -=== "OpenID Connect" - - In order for OIDC to work, configure the following values in your chart's `values.yaml` file: - - ```yaml - ingress: - enabled: true - ingressClassName: - hosts: - - host: - paths: - - / - - enterprise: - enabled: true - auth: - oidc: - enabled: true - # secret given by the OIDC provider (e.g auth0, Okta, etc) - client_secret: - - image: - privateRegistry: - enabled: true - secretToken: - - lakefsConfig: | - blockstore: - type: local - auth: - logout_redirect_url: https://oidc-provider-url.com/logout/example - oidc: - friendly_name_claim_name: - default_initial_groups: ["Developers"] - providers: - oidc: - post_login_redirect_url: / - url: https://oidc-provider-url.com/ - client_id: - callback_base_url: https:// - # the claim name that represents the client identifier in the OIDC provider (e.g Okta) - logout_client_id_query_parameter: client_id - # query parameters used to redirect the user to the OIDC provider (e.g., Okta) after logout. - # If you are using `auth.ui_config.login_url_method: select` and want to redirect - # back to the login selection page, set the return address to lakeFS: - # ["returnTo", "https:///"] - logout_endpoint_query_parameters: - - returnTo - - https:///oidc/login - ``` - -=== "LDAP" - - lakeFS Enterprise provides direct LDAP authentication by querying the LDAP server for user information and authenticating the user based on the provided credentials. - - **Important:** An administrative bind user must be configured. It should have search permissions for the LDAP server. - - ```yaml - ingress: - enabled: true - ingressClassName: - hosts: - - host: - paths: - - / - - enterprise: - enabled: true - auth: - ldap: - enabled: true - bindPassword: - - image: - privateRegistry: - enabled: true - secretToken: - - lakefsConfig: | - blockstore: - type: local - auth: - providers: - ldap: - server_endpoint: ldaps://ldap.company.com:636 - bind_dn: uid=,ou=Users,o=,dc=,dc=com - username_attribute: uid - user_base_dn: ou=Users,o=,dc=,dc=com - user_filter: (objectClass=inetOrgPerson) - connection_timeout_seconds: 15 - request_timeout_seconds: 7 - # RBAC group for first time users - default_user_group: "Developers" - ``` - - ### Troubleshooting LDAP issues - - #### Inspecting Logs - - If you encounter LDAP connection errors, inspect the lakeFS container logs to get more information. - - #### Authentication issues - - Auth issues (e.g. user not found, invalid credentials) can be debugged with the `ldapwhoami` CLI tool. - - The examples are based on the configuration above: - - To verify that the main bind user can connect: - - ```sh - ldapwhoami -H ldaps://ldap.company.com:636 -D "uid=bind-user-name,ou=Users,o=org-id,dc=company,dc=com" -x -W - ``` - - To verify that a specific lakeFS user `dev-user` can connect: - - ```sh - ldapwhoami -H ldaps://ldap.company.com:636 -D "uid=dev-user,ou=Users,o=org-id,dc=company,dc=com" -x -W - ``` - - #### User not found issue - - Upon a login request, the bind user will search for the user in the LDAP server. If the user is not found it will be presented in the logs. - - We can search the user using [ldapsearch](https://docs.ldap.com/ldap-sdk/docs/tool-usages/ldapsearch.html) CLI tool. - - Search ALL users in the base DN (no filters): - - !!! note - `-b` is the `user_base_dn`, `-D` is `bind_dn` and `-w` is `bind_password` from the lakeFS configuration. - - ```sh - ldapsearch -H ldaps://ldap.company.com:636 -x -b "ou=Users,o=org-id,dc=company,dc=com" -D "uid=bind-user-name,ou=Users,o=org-id,dc=company,dc=com" -w 'bind_user_pwd' - ``` - - If the user is found, we should now use filters for the specific user the same way lakeFS does it and expect to see the user. - - For example, to reproduce the same search as lakeFS does: - - user `dev-user` set from `uid` attribute in LDAP - - Configuration values: `user_filter: (objectClass=inetOrgPerson)` and `username_attribute: uid` - - ```sh - ldapsearch -H ldaps://ldap.company.com:636 -x -b "ou=Users,o=org-id,dc=company,dc=com" -D "uid=bind-user-name,ou=Users,o=org-id,dc=company,dc=com" -w 'bind_user_pwd' "(&(uid=dev-user)(objectClass=inetOrgPerson))" - ``` - -=== "External AWS Authentication" - - lakeFS Enterprise supports authentication using AWS IAM credentials. This allows users to authenticate using their AWS credentials via GetCallerIdentity. - - ```yaml - ingress: - enabled: true - ingressClassName: - hosts: - - host: - paths: - - / - - lakefsConfig: | - auth: - external_aws_auth: - enabled: true - # the maximum age in seconds for the GetCallerIdentity request - #get_caller_identity_max_age: 60 - # headers that must be present by the client when doing login request - required_headers: - # same host as the lakeFS server ingress - X-LakeFS-Server-ID: - ``` - -### Common Configuration - -All authentication methods share some common configuration options: - -```yaml -# Enable enterprise features -enterprise: - enabled: true - -# Common lakeFS configuration -lakefsConfig: | - # Basic auth configuration - auth: - encrypt: - secret_key: # Set via secrets.authEncryptSecretKey - login_duration: 24h # Session duration - login_max_duration: 168h # Maximum session duration -``` - -### Secrets Management - -The Helm chart will automatically create Kubernetes secrets for sensitive values: - -```yaml -secrets: - # Required: encryption key for auth cookies - authEncryptSecretKey: - - # For database connection (if using external DB) - databaseConnectionString: - -# Or use existing secrets -secrets: - existingSecret: my-lakefs-secrets - # Define the keys in your secret: - authEncryptSecretKeyName: authEncryptSecretKey - databaseConnectionStringKeyName: databaseConnectionString -``` - -Authentication provider secrets are managed separately via the `enterprise.auth.*` configuration. - -### Environment Variables - -All configurations can also be set via environment variables: - -```bash -# SAML -LAKEFS_AUTH_PROVIDERS_SAML_SP_ROOT_URL=https://lakefs.company.com -LAKEFS_AUTH_COOKIE_AUTH_VERIFICATION_EXTERNAL_USER_ID_CLAIM_NAME=samName - -# OIDC -LAKEFS_AUTH_PROVIDERS_OIDC_CLIENT_ID=your-client-id -LAKEFS_AUTH_OIDC_FRIENDLY_NAME_CLAIM_NAME=name - -# LDAP -LAKEFS_AUTH_PROVIDERS_LDAP_SERVER_ENDPOINT=ldaps://ldap.company.com:636 -LAKEFS_AUTH_PROVIDERS_LDAP_BIND_DN=uid=bind-user,ou=Users,o=org,dc=company,dc=com - -# External AWS Auth -LAKEFS_AUTH_EXTERNAL_AWS_AUTH_ENABLED=true -``` \ No newline at end of file diff --git a/docs/src/security/sts-login.md b/docs/src/security/sts-login.md deleted file mode 100644 index 79c5c36dff6..00000000000 --- a/docs/src/security/sts-login.md +++ /dev/null @@ -1,143 +0,0 @@ ---- -title: Short-lived token (STS like) Authentication for lakeFS -description: Authenticate with lakeFS using Secure Token Service (STS) by leveraging a remote authenticator. This feature enables integration with Identity Providers (IdPs) for secure and efficient user authentication. -status: enterprise -search: - boost: 2 ---- - -# Short-lived token (STS like) - -!!! info - Available in **lakeFS Cloud** and **lakeFS Enterprise**
- -Secure Token Service (STS) authentication in lakeFS enables users to authenticate to lakeFS using temporary credentials obtained from an Identity Provider (IdP) via the OpenID Connect (OIDC) Authentication workflow. -This document outlines the process of setting up the STS authentication flow and using the temporary credentials to interact with lakeFS through the [high-level Python SDK](../integrations/python.md). - -## Login - -Initiate a client session with temporary credentials using the [high-level Python SDK](../integrations/python.md): - -```python -import lakefs - -my_client = lakefs.client.from_web_identity(code = '', state = '' , redirect_uri = '', ttl_seconds = 7200) -``` - -## Setup - -### Prerequisites -Ensure you have a way to generate the code, redirect_uri, and state values that are required to initiate a new client session using the STS login feature. -For a reference implementation, see the [sample implementation](#sample-implementation-to-generate-the-code-redirect_uri-and-state) section. - -### Configuration - -To enable STS authentication, configure your lakeFS instance with the endpoint of the external Authentication Service. - -```yaml - -auth: - authentication_api: - endpoint: - -``` - -The endpoint value should point to the external Authentication Service described at [authentication.yml](https://github.com/treeverse/lakeFS/blob/master/api/authentication.yml). -Make sure to replace with the actual URL of your Authentication Service. - - -### Sample implementation to generate the code, redirect_uri, and state -The following code snippet demonstrates how to generate the values that are required to initiate a new client session using the STS login feature. - -!!! info - Replace `` with the path to your IdP authorize endpoint. - - !!! example "Examples" - - Auth0: The authorize endpoint will be `https:///authorize` - - Entra ID: The authorize endpoint will be `https:///oauth2/v2.0/authorize` - -```javascript -import crypto from 'crypto'; - -import express from 'express'; -import axios from 'axios'; -import url from 'url'; -import jsonwebtoken from 'jsonwebtoken'; - -const app = express(); -// the local script will will spin up the server and the IdP provider will return to this endpoint the response. -const callback = "http://localhost:8080/oidc/callback" -const authorizeEndpoint = "" - -// step 1 -// Create a code_verifier, which is a cryptographically-random, Base64-encoded key that will eventually be sent to Auth0 to request tokens. -function base64URLEncode(str) { - return str.toString('base64') - .replace(/\+/g, '-') - .replace(/\//g, '_') - .replace(/=/g, ''); -} -var verifier = base64URLEncode(crypto.randomBytes(32)); -console.log(`verifier: ${verifier}`); - -// step 2 -// Generate a code_challenge from the code_verifier that will be sent to Auth0 to request an authorization_code. -function sha256(buffer) { - return crypto.createHash('sha256').update(buffer).digest(); -} - -var challenge = base64URLEncode(sha256(verifier)); -console.log(`challenge: ${challenge}`); - - -const authorizeURL = `${authorizeEndpoint}?response_type=code&code_challenge=${challenge}&code_challenge_method=S256&client_id=${auth0ClientId}&redirect_uri=${callback}&scope=openid&state=${verifier}` - -console.log(`authorizeURL: ${authorizeURL}`) - -// Endpoint for OIDC callback -app.get('/oidc/callback', async (req, res) => { - try { - const code = req.query.code; - const state = req.query.state; - console.log(`code: ${code}`); - console.log(`state: ${state}`); - // Return a success response - res.status(200).json({ code, state, redirect_uri: callback, python-cmd: `lakefs.client.from_web_identity(code = ${code} redirect_uri = ${callback} state = ${state}, ttl_seconds = 7200) ` }); - return - } catch (err) { - console.error(err); - res.status(500).json({ message: 'Internal server error' }); - } -}); - -// Start the server -const PORT = 8080; -app.listen(PORT, () => { - console.log(`Server is running on port ${PORT}`); -}); -``` - - -## Architecture - -The STS authentication flow involves several components that facilitate secure communication between the lakeFS client, lakeFS server, the remote authenticator, and the IdP. - -```mermaid -sequenceDiagram - participant A as lakeFS Client - participant B as lakeFS Server - participant C as Remote Authenticator - participant D as IdP - A->>B: Call STS login endpoint - B->>C: POST idp code state and redirect uri - C->>D: IdP request - D->>C: IdP response - C->>B: Auth response - B->>A: auth JWT -``` - -- lakeFS Client: Initiates the authentication process by providing IdP credentials. -- lakeFS Server: Facilitates the authentication request between the client and the remote authenticator. -- Remote Authenticator: Acts as a bridge between lakeFS and the IdP, handling credential validation. -- IdP (Identity Provider): Validates the provided credentials and returns the authentication status. - diff --git a/docs/src/understand/architecture.md b/docs/src/understand/architecture.md deleted file mode 100644 index e94de5c2a75..00000000000 --- a/docs/src/understand/architecture.md +++ /dev/null @@ -1,145 +0,0 @@ ---- -title: Architecture -description: lakeFS architecture overview. Learn more about lakeFS components, including its S3 API gateway. ---- -# lakeFS Architecture - -lakeFS is distributed as a single binary encapsulating several logical services. - -The server itself is stateless, meaning you can easily add more instances to handle a bigger load. - -![Architecture](../assets/img/architecture.png) - -### Object Storage - -lakeFS manages data stored on various object storage platforms, including: - -- AWS S3 -- Google Cloud Storage -- Azure Blob Storage -- MinIO -- NetApp StorageGRID -- Ceph -- Any other S3-compatible storage - -With [lakeFS Enterprise](../enterprise/index.md), you can leverage [multiple storage backend support](../howto/multiple-storage-backends.md) -to manage data across multiple storage locations, including on-prem, hybrid, and multi-cloud environments. - -### Metadata Storage - -An auxiliary Key Value storage is used for storing metadata, with supported databases including: - -- PostgreSQL -- DynamoDB -- CosmosDB -- MemoryDB (or other Redis-compatible options) 🚀 - -See the [installation guide](../howto/deploy/index.md) and [configuration reference](../reference/configuration.md#database) on how to setup lakeFS with any of the above options - -!!! abstract "Learn More" - More information about how lakeFS manages its versioning metadata is available in [Versioning internals](./how/versioning-internals.md) and [Internal database structure](./how/kv.md) - -### Load Balancing - -Accessing lakeFS is done using HTTP. -lakeFS exposes a frontend UI, an [OpenAPI server](#openapi-server), as well as an S3-compatible service (see [S3 Gateway](#s3-gateway) below). -lakeFS uses a single port that serves all three endpoints, so for most use cases a single load balancer pointing -to lakeFS server(s) would do. - -## lakeFS Components - -Internally, the lakeFS server is composed of a few key pieces that make up the single binary that lakeFS is distributed as: - - -![Server Components](../assets/img/server-components.png) - -### S3 Gateway - -The S3 Gateway is the layer in lakeFS responsible for the compatibility with S3. It implements a compatible subset of the S3 API to ensure most data systems can use lakeFS as a drop-in replacement for S3. - -See the [S3 API Reference](../reference/s3.md) section for information on supported API operations. - -### OpenAPI Server - -The Swagger ([OpenAPI](https://swagger.io/docs/specification/basic-structure/){:target="_blank"}) server exposes the full set of lakeFS operations (see [Reference](../reference/api.md)). This includes basic CRUD operations against repositories and objects, as well as versioning related operations such as branching, merging, committing, and reverting changes to data. - -### Storage Adapter - -The Storage Adapter is an abstraction layer for communicating with any underlying object store. -Its implementations allow compatibility with many types of underlying storage such as S3, GCS, Azure Blob Storage, or non-production usages such as the local storage adapter. - -See the [roadmap][roadmap] for information on the future plans for storage compatibility. - -### Graveler - -The Graveler handles lakeFS versioning by translating lakeFS addresses to the actual stored objects. -To learn about the data model used to store lakeFS metadata, see the [versioning internals page](how/versioning-internals.md). - -### Authentication & Authorization Service - -The Auth service handles the creation, management, and validation of user credentials and [RBAC policies](https://en.wikipedia.org/wiki/Role-based_access_control){:target="_blank"}. - -The credential scheme, along with the request signing logic, are compatible with AWS IAM (both [SIGv2](https://docs.aws.amazon.com/general/latest/gr/signature-version-2.html) and [SIGv4](https://docs.aws.amazon.com/general/latest/gr/signature-version-4.html)). - -Currently, the Auth service manages its own database of users and credentials and doesn't use IAM in any way. - -### Hooks Engine - -The Hooks Engine enables CI/CD for data by triggering user defined [Actions][data-quality-gates] that will run during commit/merge. - -### UI - -The UI layer is a simple browser-based client that uses the OpenAPI server. It allows management, exploration, and data access to repositories, branches, commits and objects in the system. - -## lakeFS Clients - -Some data applications benefit from deeper integrations with lakeFS to support different use cases or enhanced functionality provided by lakeFS clients. - -### OpenAPI Generated SDKs - -OpenAPI specification can be used to generate lakeFS clients for many programming languages. -For example, the [Python lakefs-sdk](https://pypi.org/project/lakefs-sdk/) or the [Java client](https://central.sonatype.com/artifact/io.lakefs/api-client) are published with every new lakeFS release. - -### lakectl - -[lakectl](../reference/cli.md) is a CLI tool that enables lakeFS operations using the lakeFS API from your preferred terminal. - -### lakeFS Mount (Everest) - -!!! info - lakeFS Mount is available in **lakeFS Cloud** and **lakeFS Enterprise** - -[lakeFS Mount](../reference/mount.md) allows users to virtually mount a remote lakeFS repository onto a local directory. Once mounted, users can access the data as if it resides on their local filesystem, using any tool, library, or framework that reads from a local filesystem. - -### Spark Metadata Client - -The lakeFS [Spark Metadata Client](../reference/spark-client.md) makes it easy to perform -operations related to lakeFS metadata, at scale. Examples include [garbage collection](../howto/garbage-collection/gc.md) or [exporting data from lakeFS](../howto/export.md). - -### lakeFS Hadoop FileSystem - -Thanks to the [S3 Gateway](#s3-gateway), it's possible to interact with lakeFS using Hadoop's S3AFIleSystem, -but due to limitations of the S3 API, doing so requires reading and writing data objects through the lakeFS server. -Using [lakeFSFileSystem][hadoopfs] increases Spark ETL jobs performance by executing the metadata operations on the lakeFS server, -and all data operations directly through the same underlying object store that lakeFS uses. - -## How lakeFS Clients and Gateway Handle Metadata and Data Access - -When using any of the native integrations such as the Python SDK, lakectl, Everest or the lakeFS Spark client - these clients communicate with the lakeFS server to retrieve metadata. - -For example, they may query lakeFS to understand which version of a file is needed or to track changes in branches and commits. -This communication does not include the actual data transfer, but instead involves passing only metadata about data locations and versions. - -Once the client knows the exact data location from the lakeFS metadata, it **directly accesses the data in the underlying object storage** (potentially using [presigned URLs](../security/presigned-url.md)) without routing through lakeFS. - - -!!! example - if data is stored in S3, the Spark client will retrieve the S3 paths as pre-signed URLs from lakeFS, then directly read and/or write to those URLs in S3 without involving lakeFS in the data transfer. - - -![lakeFS Clients vs Gateway Data Flow](../assets/img/native-vs-gw-integrations.png) - -[data-quality-gates]: use_cases/cicd_for_data.md#using-hooks-as-data-quality-gates -[dynamodb-permissions]: ../howto/deploy/aws.md#grant-lakefs-permissions-to-dynamodb -[roadmap]: ../project/index.md -[hadoopfs]: ../integrations/spark.md#lakefs-hadoop-filesystem diff --git a/docs/src/understand/data-structure.md b/docs/src/understand/data-structure.md deleted file mode 100644 index 512ade1f4f1..00000000000 --- a/docs/src/understand/data-structure.md +++ /dev/null @@ -1,64 +0,0 @@ ---- -title: Data Structure -description: Understand the data structure in lakeFS ---- - -# How Does lakeFS Store Your Data -lakeFS being a data versioning engine, requires the ability to save multiple versions of the same object. As a result, lakeFS stores objects in the object store -in way that allows it to version the data in an efficient way. -This might cause confusion when trying to understand where our data is actually being stored. This page will try to shed a light on this subject. - -## lakeFS Repository Namespace Structure -lakeFS stores repository data and metadata under the repository's namespace. The lakeFS repository namespace is a dedicated path under the object store used by lakeFS to manage a repository. -Listing a repository storage namespace in the object store will provide the following output: - -```shell -aws s3 ls s3:/// - PRE _lakefs/ - PRE data/ -``` - -lakeFS stores the actual user data under the `data/` prefix. The `_lakefs/` prefix is used to store commit metadata which includes [range and meta-range](../understand/how/versioning-internals.md) files and internal lakeFS data. -Since lakeFS manages immutable data, objects are not saved using their logical name - these might get overwritten, violating the immutability guarantee. This means that when you upload a csv file called `allstar_games_stats.csv` to branch main, lakeFS will generate a random physical -address under the `data/` prefix and upload it to there. -Mapping from a path to an object changes as you upload, commit, and merge on lakeFS. When updating an object, lakeFS will create a new physical address for that version preserving other versions of that object. -lakeFS will link between the object's logical address and its physical address - and store that relation under the given commit metadata (range and meta-range) - -lakeFS uses its object store immutably i.e. anything uploaded is never changed or overridden (Refer to [GC](../howto/garbage-collection/gc.md) for explanation on how and when lakeFS actually deletes data from the storage). -To find data, lakeFS uses the logical address e.g. `lakefs://my-repo/main/allstar_games_stats.csv`, indicating a repository and branch. -Using the [KV metadata store](../understand/how/versioning-internals.md#representing-references-and-uncommitted-metadata), lakeFS will first try to find any uncommitted version of the object in the given branch. If no uncommitted version exist, it will take the latest committed version from the branch head (which is the top commit of the branch) - -1. In the KV metadata store under the current staging token of branch main. This will return any uncommitted changes for the given object -2. Read it from the branch's head meta-range and range (which are saved under the `_lakefs` prefix in the object store. This will return the metadata for the object as it was stored in the latest commit for branch main. -The physical path returned will be in the form of `s3:///data/gp0n1l7d77pn0cke6jjg/cg6p50nd77pn0cke6jk0`. The same object in lakeFS might have several physical addresses, one for each version where it exists. - -## Finding an object's location on your object store -One way to determine the physical location of an object is using the `lakectl fs stat` command: - -```bash -lakectl fs stat --pre-sign=false lakefs://my-repo/main/allstar_games_stats.csv -Path: allstar_games_stats.csv -Modified Time: 2024-08-02 10:13:33 -0400 EDT -Size: 0 bytes -Human Size: 0 B -Physical Address: s3://niro-test/repos/docs/data/data/geh1jurck6tfom0s1t8g/cqmej33ck6tfom0s1tvg -Checksum: d41d8cd98f00b204e9800998ecf8427e -Content-Type: application/octet-stream -``` - -lakeFS can show any version of an object. For example: to see an object's physical location on branch `dev` from 3 versions ago, use reference dev~3: - -```bash -lakectl fs stat lakefs://my-repo/dev~3/allstar_games_stats.csv -Path: allstar_games_stats.csv -Modified Time: 2024-08-02 10:11:49 -0400 EDT -Size: 916393 bytes -Human Size: 916.4 kB -Physical Address: s3:///data/data/geh1jurck6tfom0s1t8g/cqmei9bck6tfom0s1tt0 -Checksum: 48e04a4c072acdcf932ee6c43f46ef14 -Content-Type: application/octet-stream -``` - -This can be done using any lakeFS reference type. - -To learn more about the internals of lakeFS and how it stores your data, follow [this blog post](https://lakefs.io/blog/where-is-my-data/) diff --git a/docs/src/understand/faq.md b/docs/src/understand/faq.md deleted file mode 100644 index 56586f2f7c5..00000000000 --- a/docs/src/understand/faq.md +++ /dev/null @@ -1,51 +0,0 @@ ---- -title: FAQ -description: Have a question about lakeFS? Check out this list of Frequently Asked Questions ---- - -# lakeFS Frequently Asked Questions (FAQ) - -### 1. Is lakeFS open-source? - -lakeFS is free, open-source, and licensed under the [Apache 2.0](https://www.apache.org/licenses/LICENSE-2.0) License. Code and issues are managed publicly on [GitHub](https://github.com/treeverse/lakeFS) and a [Slack channel](https://lakefs.io/slack) for open discussions. - -### 2. How does lakeFS data versioning work? - -lakeFS uses zero-copy branching to avoid data duplication. That is, creating a new branch is a metadata-only operation: no objects are actually copied. Only when an object changes does lakeFS create another [version of the data](https://lakefs.io/blog/data-versioning/) in the storage. - -!!! info - For more information, see [Versioning internals](how/versioning-internals.md). - -### 3. How do I get support for my lakeFS installation? - -We are extremely responsive on our Slack channel, and we make sure to prioritize the most pressing issues for the community. For SLA-based support, please contact us at [support@treeverse.io](mailto:support@treeverse.io). - -### 4. Do you collect data from your active installations? - -We collect anonymous usage statistics to understand the patterns of use and to detect product gaps we may have so we can fix them. This is optional and may be turned off by setting `stats.enabled` to `false`. See the [configuration reference][config-ref] for more details. - - -The data we gather is limited to the following: - -1. A `UUID` which is generated when setting up lakeFS for the first time and contains no personal or otherwise identifiable information, -1. The lakeFS version currently running, -1. The OS and architecture lakeFS is running on, -1. Metadata regarding the database used (version, installed extensions and parameters such as DB Timezone and work memory), -1. Periodic aggregated action counters (e.g. how many "get_object" operations occurred). - -### 5. How is lakeFS different from Delta Lake / Hudi / Iceberg? - -Delta Lake, Apache Hudi, and Apache Iceberg all define dedicated, structured data formats that allow deletes and upserts. lakeFS is format-agnostic and enables consistent cross-collection versioning of your data using Git-like operations. Read our [comparison](https://lakefs.io/blog/hudi-iceberg-and-delta-lake-data-lake-table-formats-compared/) for a more detailed comparison. - -### 6. What inspired the lakeFS logo? - -The [Axolotl](https://en.wikipedia.org/wiki/Axolotl){:target="_blank"} – a species of salamander, also known as the Mexican Lake Monster or the Peter Pan of the animal kingdom. It's a magical creature, living in a lake - just like us! :) - -![Axolotl](https://upload.wikimedia.org/wikipedia/commons/f/f6/AxolotlBE.jpg) - - - [copyright](https://en.wikipedia.org/wiki/Axolotl#/media/File:AxolotlBE.jpg) - - -[config-ref]: ../reference/configuration.md#reference -[roadmap]: ../project/index.md diff --git a/docs/src/understand/glossary.md b/docs/src/understand/glossary.md deleted file mode 100644 index ed0fe85680d..00000000000 --- a/docs/src/understand/glossary.md +++ /dev/null @@ -1,112 +0,0 @@ ---- -title: Glossary -description: Glossary of all terms related to lakeFS technical internals and the architecture. ---- - -# Glossary -This page has definition and explanations of all terms related to lakeFS technical internals and the architecture. - - -## Auditing -Data auditing is data assessment to ensure its accuracy, security, and efficacy for specific usage. It also involves assessing data quality through its lifecycle and understanding the impact of poor quality data on the organization's performance and revenue. Ensuring data reproducibility, auditability, and governance is one of the key concerns of data engineers today. lakeFS commit history helps the data teams to keep track of all changes to the data, supporting data auditing. - -## Branch - -Branches in lakeFS allow users to create their own "isolated" view of the repository. [Read more][branches]. - -## Collection -A collection, roughly speaking, is a set of data. Collections may be structured or unstructured; a structured collection is often referred to as a table. - -## Commit - -Using commits, you can view a [repository][repository] at a certain point in its history and you're guaranteed that the data you see is exactly as it was at the point of committing it. [Read More][commit]. - -## Cross-Collection Consistency -It is unfortunate that the word 'consistency' has multiple meanings, at least four of them according to Martin Kleppmann. Consistency in the context of lakeFS and data versioning is, the guarantee that operations in a transaction are performed accurately, correctly and most important, atomically. - -A repository (and thus a branch) in lakeFS, can span multiple tables or collections. By providing branch, commit, merge and revert operations atomically on a branch, lakeFS achieves consistency guarantees across different logical collections. That is, data versioning is consistent across multiple collections within a repository. - -It is sometimes referred as multi-table transactions. That is, lakeFS offers transactional guarantees across multiple tables. - - - -## Data Lake Governance ### -The goal of data lake governance is to apply policies, standards and processes on the data. This allows creating high-quality data and ensuring that it’s used appropriately across the organization. Data lake governance improves the data quality and increases data usage for business decision-making, leading to operational improvements, better-informed business strategies, and stronger financial performance. lakeFS Cloud offers advanced data lake management features such as: [Role-Based Access Control](../security/rbac.md), [Branch Aware Managed Garbage Collection](../howto/garbage-collection/gc.md), [Data Lineage and Audit log](../reference/auditing.md). - -## Data Lifecycle Management -In data-intensive applications, data should be managed through its entire lifecycle similar to how teams manage code. By doing so, we could leverage the best practices and tools from application lifecycle management (like CI/CD operations) and apply them to data. lakeFS offers data lifecycle management via [isolated data development environments](use_cases/etl_testing.md) instead of shared buckets. - -## Data Pipeline Reproducibility -Reproducibility in data pipelines is the ability to repeat a process. An example of this is recreating an issue that occurred in the production pipeline. Reproducibility allows for the controlled manufacture of an error to debug and troubleshoot it at a later point in time. Reproducing a data pipeline issue is a challenge that most data engineers face on a daily basis. Learn more about how lakeFS supports data pipeline [reproducibility](use_cases/reproducibility.md). Other use cases include running ad-hoc queries (useful for data science), review, and backfill. - -## Data Quality Testing -This term describes ways to test data for its accuracy, completeness, consistency, timeliness, validity, and integrity. lakeFS hooks can be used to implement and run data quality tests before promoting staging data into production. - -## Data Versioning -To version data means creating a unique point-in-time reference for data that can be accessed later. This reference can take the form of a query, an ID, or also commonly, a DateTime identifier. Data versioning may also include saving an entire copy of the data under a new name or file path every time you want to create a version of it. More advanced versioning solutions like lakeFS perform versioning through zero-copy data operations. lakeFS also optimizes storage usage between versions and exposes special operations to manage them. - -## Git-like Operations -lakeFS allows teams to treat their data lake as a Git repository. Git is used for code versioning, whereas lakeFS is used for data versioning. lakeFS provides Git-like operations such as branch, commit, merge and revert. - -## Graveler -Graveler is the core versioning engine of lakeFS. It handles versioning by translating lakeFS addresses to the actual stored objects. See the [versioning internals section](how/versioning-internals.md) to learn how lakeFS stores metadata. - -## Hooks -lakeFS hooks allow you to automate and ensure that a given set of checks and validations happens before important lifecycle events. They are similar conceptually to [Git Hooks](https://git-scm.com/docs/githooks), but in contrast, they run remotely on a server. Currently, lakeFS allows executing hooks when two types of events occur: pre-commit events that run before a commit is acknowledged and pre-merge events that trigger right before a merge operation. - -## Isolated Data Snapshot -Creating a branch in lakeFS provides an isolated environment containing a snapshot of your repository. While working on your branch in isolation, all other data users will be looking at the repository's main branch. So they won't see your changes, and you also won't see the changes applied to the main branch. All of this happens without any data duplication but metadata management. - -## Main Branch -Every Git repository has the main branch (unless you take explicit steps to remove it) and it plays a key role in the software development process. In most projects, it represents the source of truth - all the code that works has been tested and is ready to be pushed to production. Similarly, main branch in lakeFS could be used as the single source of truth. For example, the live production data can be on the main branch. - -## Metadata Management -Where there is data, there is also metadata. lakeFS uses metadata to define schema, data types, data versions, relations to other datasets, etc. This helps to improve discoverability and manageability. lakeFS performs data versioning through metadata operations. - -## Merge -lakeFS merge command, similar to the Git merge functionality, allows you to merge data branches. Once you commit data, you can review it and then merge the committed data into the target branch. A merge generates a commit on the target branch with all your changes. lakeFS guarantees atomic merges that are fast, given they don’t involve copying data. [Read More][merge]. - -## Object Metadata - -In lakeFS, each object can have two types of metadata: - -* **System metadata**: Automatically captured attributes such as object path, size, last modified time, and the committer who made the change. -* **User-defined metadata**: Custom key-value pairs (e.g., labels, annotations, tags) added during data ingestion, processing, or curation to -enrich context. - -Like data itself, object metadata is versioned in lakeFS. This means metadata evolves alongside your data and can be easily -managed, queried, and reproduced. - -**S3 Compatibility**: When using the S3 Gateway, lakeFS stores user-defined metadata keys in lowercase to comply with the -[S3 specification](https://docs.aws.amazon.com/AmazonS3/latest/userguide/UsingMetadata.html#UserMetadata), which states -"Amazon S3 stores user-defined metadata keys in lowercase". For example, if you upload an object with metadata key `MyKey`, -it will be stored and retrieved as `mykey`. - -## Repository - -In lakeFS, a _repository_ is a set of related objects (or collections of objects). [Read More][repository]. - -## Rollback -A rollback is an atomic operation reversing the effects of a previous commit. If a developer introduces a new code version to production and discovers that it has a critical bug, they can simply roll back to the previous version. In lakeFS, a rollback is an atomic action that prevents the data consumers from receiving low-quality data until the issue is resolved. Learn more about how lakeFS supports the [rollback](use_cases/rollback.md) operation. - -## Storage Namespace -The storage namespace is a location in the underlying storage dedicated to a specific repository. -lakeFS uses it to store the repository's objects and some of its metadata. - -## Underlying Storage -The underlying storage is a location in some object store where lakeFS keeps your objects and some metadata. - -## Tag - -Tags are a way to give a meaningful name to a specific commit. [Read More][tags]. - -## Fluffy - -lakeFS Enterprise Single-Sign-On service, it's delegated with lakeFS authentication requests and replies back to lakeFS with the authentication response. - - -[branches]: model.md#branches -[commit]: model.md#commits -[repository]: model.md#repository -[merge]: model.md#merge -[tags]: model.md#tags diff --git a/docs/src/understand/how/kv.md b/docs/src/understand/how/kv.md deleted file mode 100644 index 3debdc9e973..00000000000 --- a/docs/src/understand/how/kv.md +++ /dev/null @@ -1,89 +0,0 @@ ---- -title: Internal database structure -description: Brief introduction to lakeFS over KV ---- -# Internal database structure - - -Starting at version **0.80.2**, lakeFS abandoned the tight coupling to [PostgreSQL](https://en.wikipedia.org/wiki/PostgreSQL) and moved all database operations to work over [Key-Value Store](https://en.wikipedia.org/wiki/Key%E2%80%93value_database) - -While SQL databases, and Postgres among them, have their obvious advantages, we felt that the tight coupling to Postgres is limiting our users and so, lakeFS with Key Value Store is introduced. - -Our KV Store implements a generic interface, with methods for _Get_, _Set_, _Compare-and-Set_, _Delete_ and _Scan_. Each entry is represented by a [_partition_, _key_, _value_] triplet. All these fields are generic byte-array, and the using module has maximal flexibility on the format to use for each field - -Under the hood, our KV implementation relies on a backing DB, which persists the data. Theoretically, it could be any type of database and out of the box, we already implemented drivers for [DynamoDB](https://en.wikipedia.org/wiki/Amazon_DynamoDB), for AWS users, and [PostgreSQL](https://en.wikipedia.org/wiki/PostgreSQL), using its relational nature to store a KV Store. - -More databases will be supported in the future, and lakeFS users and contributors can develop their own driver to use their own favorite database. For experimenting purposes, an in-memory KV store can be used, though it obviously lack the persistency aspect - -In order to store its metadata objects (that is _Repositories_, _Branches_, _Commits_, _Tags_, and _Uncommitted Objects_), lakeFS implements another layer over the generic KV Store, which supports serialization and deserialization of these objects as [protobuf](https://en.wikipedia.org/wiki/Protocol_Buffers). - -As this layer relies on the generic interface of the KV Store layer, it is totally agnostic to whichever store implementation is in use, gaining our users the maximal flexibility - -!!! info "Further Reading" - For a deeper explanation, see to our [KV Design](https://github.com/treeverse/lakeFS/blob/master/design/accepted/metadata_kv/index.md) - -## Optimistic Locking with KV - -One important key difference between SQL databases and Key Value Store is the ability to lock resources. - -While this is a common practice with relational databases, Key Value stores not always support this ability. -When designing our KV Store, we tried to support the most simplistic straight-forward interface, with flexibility in backing DB selection, and so, we decided not to support locking. - -This decision brought some concurrency challenges we had to overcome. Let us take a look at a common lakeFS flow, _Commit_, during which several database operations are performed: - -* All relevant (_Branch_ correlated) uncommitted objects are collected and marked as committed -* A new _Commit_ object is created -* The relevant _Branch_ is updated to point to the new commit - -The _Commit_ flow includes multiple database accesses and modifications, and is very sensitive to concurrent executions: If 2 _Commit_ flows run in parallel, we must guarantee correctness of the data. - -lakeFS with PostgreSQL simply locks the _Branch_ for the entire _Commit_ operation, preventing concurrent execution of such flows. - -Now, with KV Store replacing the SQL database, this easy solution is no longer available. Instead, we implemented an [Optimistic Locking](https://en.wikipedia.org/wiki/Optimistic_concurrency_control) algorithm, which leverages the KV Store _Compare-And-Set_ (_CAS_) functionality to remember the _Branch_ state at the beginning of the _Commit_ flow, and updating the branch at the end, only if it remains unchanged, using _CAS_, with the former _Branch_ state, used as a comparison criteria. - -If the sampled _Branch_ state and the current state differ, it could only mean that another, later, _Commit_ is in progress, causing the first _Commit_ to fail, and give the later _Commit_ a chance to complete. - -Here's a running example: - - * _Commit_ A sets the _StagingToken_ to tokenA and samples the _Branch_, - * _Commit_ B sets the _StagingToken_ to tokenB and samples the _Branch_, - * _Commit_ A finishes, tries to update the _Branch_ and fails due to the recent modification by _Commit_ B - the _StagingToken_ is set to tokenB and not tokenA as expected by _Commit_ A, - * _Commit_ B finishes and updates the branch, as tokenB is set as _StagingToken_ and it matches the flow expectation - -An important detail to note, is that as a _Commit_ starts, and the _StagingToken_ is set a new value, the former value is added to a list of 'still valid' _StagingToken_s - _SealedToken_ - on the _Branch_, which makes sure no _StagingToken_ and no object are lost due to a failed _Commit_ - -!!! info "Further Reading" - You can read more on the Commit Flow in the [dedicated section in the KV Design](https://github.com/treeverse/lakeFS/blob/master/design/accepted/metadata_kv/index.md#graveler-metadata---branches-and-staged-writes) - -## DB Transactions and Atomic Updates - -Another notable difference is the existence of DB transactions with PostgreSQL, ability that our KV Store lacks. - - This ability was leveraged by lakeFS to construct several DB updates, into one "atomic" operation - each failure, in each step, rolled back the entire operation, keeping the DB consistent and clean. -With KV Store, this ability is gone, and we had to come up with various solutions. As a starting point, the DB consistency is, obviously, not anything we can risk. On the other hand, maintaining the DB clean, and as a result smaller, is something that can be sacrificed, at least as a first step. Let us take a look at a relatively simple flow of a new _Repository_ creation: - -A brand new _Repository_ has 3 objects: The _Repository_ object itself, an initial _Branch_ object and an initial _Commit_, which the _Branch_ points to. - -With SQL DB, it was as simple as creating all 3 objects in the DB under one transaction (at this order). Any failure resulted in a rollback and no redundant leftovers in our DB. -With no transaction in KV Store, if for example the _Branch_ creation fails, it will leave the _Repository_ without an initial _Branch_ (or a _Branch_ at all), yet the _Repository_ will be accessible. -Trying to delete the _Repository_ as a response to _Branch_ creation failure is ony a partial solution as this operation can fail as well. - -To mitigate this we introduced a per-_Repository_-partition, which holds all repository related objects (the _Branch_ and _Commit_ in this scenario). -The partition key can only be derived from the specific _Repository_ instance itself. In addition we first create the _Repository_ objects, the _Commit_ and the _Branch_, under the _Repository_'s partition key, and then the _Repository_ is created. -The _Repository_ and its objects will be accessible only after a successful creation of all 3 entities. - -A failure in this flow might leave some dangling objects, but consistency is maintained. - -The number of such dangling objects is not expected to be significant, and we plan to implement a cleaning algorithm to keep our KV Store neat and clean - -## So, Which Approach is Better? - -This documents provides a peek into our new database approach - Key Value Store instead of a Relational SQL. It discusses the challenges we faced, and the solutions we provided to overcome these challenges. Considering the fact that lakeFS over with relational database did work, you might ask yourself why did we bother to develop another solution. The simple answer, is that while PostgreSQL was not a bad option, it was the only option, and any drawback of PostgreSQL, reflected on our users: - -* PostgreSQL can only scale vertically and that is a limitation. At some point this might not hold. -* PostgreSQL is not a managed solution, meaning that users had to take care of all maintenance tasks, including the above mentioned scale (when needed) -* As an unmanaged database, scaling means downtime - is that acceptable? -* It might even get to the point that your organization is not willing to work with PostgreSQL due to various business considerations - -If none of the above apply, and you have no seemingly reason to switch from PostgreSQL, it can definitely still be used as an excellent option for the backing database for the lakeFS KV Store. If you do need another solution, you have DynamoDB support, out of the box. DynamoDB, as a fully managed solution, with horizontal scalability support and optimized partitions support, answers all the pain-points specified above. It is definitely an option to consider, if you need to overcome these -And, of course, you can always decide to implement your own KV Store driver to use your database of choice - we would love to add your contribution to lakeFS diff --git a/docs/src/understand/how/merge.md b/docs/src/understand/how/merge.md deleted file mode 100644 index b55f33cb825..00000000000 --- a/docs/src/understand/how/merge.md +++ /dev/null @@ -1,103 +0,0 @@ ---- -title: Merge -description: Using lakeFS, you can merge different commits and references into a branch. The purpose of this document is to explain how to use this feature. ---- - -# Merges in lakeFS - -The merge operation in lakeFS is similar to Git. It incorporates changes from a _merge source_ (a commit/reference) into a _merge destination_ (a **branch**). - -## How does it work? - -lakeFS first finds the [merge base](https://git-scm.com/docs/git-merge-base#_description): the nearest common ancestor of the two commits. -It can now perform a _three-way merge_, by examining the presence and identity of files in each commit. In the table -below, "A", "B" and "C" are possible file contents, "X" is a missing file, and "conflict" -(which only appears as a result) is a merge failure. - -| **In base** | **In source** | **In destination** | **Result** | **Comment** | -|:-----------:|:-------------:|:------------------:|:----------:|:-----------------------------------------------| -| A | A | A | A | Unchanged file | -| A | B | B | B | Files changed on both sides in same way | -| A | B | C | conflict | Files changed on both sides differently | -| A | A | B | B | File changed only on one branch | -| A | B | A | B | File changed only on one branch | -| A | X | X | X | Files deleted on both sides | -| A | B | X | conflict | File changed on one side, deleted on the other | -| A | X | B | conflict | File changed on one side, deleted on the other | -| A | A | X | X | File deleted on one side | -| A | X | A | X | File deleted on one side | - -## Merge Strategies - -The [API](../../reference/api.md) and [`lakectl`][lakectl-merge] allow passing an optional `strategy` flag with the following values: - -### `source-wins` - -In case of a conflict, merge will pick the source objects. - -!!! example - ```bash - lakectl merge lakefs://example-repo/validated-data lakefs://example-repo/production --strategy source-wins - ``` - -When a merge conflict arises, the conflicting objects in the `validated-data` branch will be chosen to end up in `production`. - -### `dest-wins` - -In case of a conflict, merge will pick the destination objects. - -!!! example - ```bash - lakectl merge lakefs://example-repo/validated-data lakefs://example-repo/production --strategy dest-wins - ``` - -When a merge conflict arises, the conflicting objects in the `production` branch will be chosen to end up in `validated-data`. The `production` branch will not be affected by object changes from `validated-data` conflicting objects. - -The strategy will affect all conflicting objects in the merge if it is set. Currently it is not possible to treat conflicts individually. - -As a format-agnostic system, lakeFS currently merges by complete files. Format-specific and -other user-defined merge strategies for handling conflicts are on the roadmap. - -## Async Merge (Enterprise) {#async-merge} - -!!! info - Available in **lakeFS Cloud** and **lakeFS Enterprise** from v1.76.0. - -lakeFS Enterprise supports asynchronous merge operations for improved scalability. - -### Overview - -In lakeFS Enterprise, merge operations execute asynchronously: - -1. The API returns immediately with a task ID -2. The merge executes in the background -3. Clients poll for completion status -4. On success, the status response includes the merge commit information (same as a synchronous merge response) -5. On failure, the status response includes the error with its status code (same as a synchronous merge error) - -### Client Support - -Async merge is supported by: - -- **lakectl** - Uses async merge automatically when connected to lakeFS Enterprise -- **lakeFS UI** - Uses async merge automatically -- **Python (lakefs-sdk)** - Supports async operations via the API. Support in the high-level Python SDK will be added soon. - -**Backwards compatibility**: Older clients that don't support async operations will continue to work, as both sync and async APIs are supported. - -### lakectl and UI behavior - -When using lakeFS Enterprise: - -- `lakectl merge` uses async merge by default -- The lakeFS UI uses async merge by default -- Both handle polling automatically, so the experience is seamless - -### API usage - -For direct API access, use the experimental async endpoints: - -- `POST /repositories/{repo}/refs/{source}/merge/{dest}/async` - Start async merge -- `GET /repositories/{repo}/refs/{source}/merge/{dest}/async/{id}/status` - Poll status - -[lakectl-merge]: ../../reference/cli.md#lakectl-merge diff --git a/docs/src/understand/how/versioning-internals.md b/docs/src/understand/how/versioning-internals.md deleted file mode 100644 index e3a9671b7b0..00000000000 --- a/docs/src/understand/how/versioning-internals.md +++ /dev/null @@ -1,93 +0,0 @@ ---- -title: Versioning Internals -parent: How lakeFS Works ---- - -# Versioning Internals - -## Overview - -Since commits in lakeFS are immutable, they are easy to store on an immutable object store. - -Older commits are rarely accessed, while newer commits are accessed very frequently, a tiered storage approach can work very well - the object store is the source of truth, while local disk and even RAM can be used to cache the more frequently accessed ones. - -Since they are immutable - once cached, you only need to evict them when space is running out. There’s no complex invalidation that needs to happen. - -In terms of storage format, commits are be stored as [SSTables](https://en.wikipedia.org/wiki/Log-structured_merge-tree){: target="_blank" }, compatible with [RocksDB](https://rocksdb.org/){: target="_blank" }. - -SSTables were chosen as a storage format for 3 major reasons: - -1. Extremely high read throughput on modern hardware: using commits representing a 200m object repository (modeled after the S3 inventory of one of our design partners), we were able to achieve close to 500k random GetObject calls / second. This provides a very high throughput/cost ratio, probably as high as can be achieved on public clouds. -1. Being a known storage format means it’s relatively easy to generate and consume. Storing it in the object store makes it accessible to data engineering tools for analysis and distributed computation, effectively reducing the silo effect of storing it in an operational database. -1. The SSTable format supports [delta encoding for keys](https://github.com/facebook/rocksdb/wiki/PlainTable-Format#prefix-encoding){: target="_blank" } which makes them very space efficient for data lakes where many keys share the same common prefixes. - -Each lakeFS commit is represented as a set of contiguous, non-overlapping SSTables that make up the entire keyspace of a repository at that commit. - -## SSTable File Format ("Graveler File") - -lakeFS metadata is encoded into a format called **"Graveler"** - a standardized way to encode content-addressable key value pairs. This is what a Graveler file looks like: - -![Graveler File](../../assets/img/graveler1.png) - -Each Key/Value pair (**"ValueRecord"**) is constructed of a `key`, `identity`, and `value`. - -A simple identity could be, for example, a sha256 hash of the value’s bytes. It could be any sequence of bytes that uniquely identifies the value. As far as the Graveler is concerned, two `ValueRecord`s are considered identical if their key and identity fields are equal. - -A Graveler file itself is content-addressable, i.e., similarly to Git, the name of the file is its identity. -File identity is calculated based on the identity of the ValueRecords the file contains: - - -valueRecordID = h(h(valueRecord.key) || h(valueRecord.Identity))
-fileID = h(valueRecordID1 + … + valueRecordIDN) - -## Constructing a consistent view of the keyspace (i.e., a commit) - -We have two additional requirements for the storage format: - -1. Be space and time efficient when creating a commit - assuming a commit changes a single object out of a billion, we don’t want to write a full snapshot of the entire repository. Ideally, we’ll be able to reuse some data files that haven’t changed to make the commit operations (in both space and time) proportional to the size of the difference as opposed to the total size of the repository. -1. Allow an efficient diff between commits which runs in time proportional to the size of their difference and not their absolute sizes. - -To support these requirements, we decided to essentially build a 2-layer [Merkle tree](https://en.wikipedia.org/wiki/Merkle_tree){: target="_blank" } composed of a set of leaf nodes (**"Range"**) addressed by their content address, and a **"Meta Range"**, which is a special range containing all ranges, thus representing an entire consistent view of the keyspace: - -![Metarange to ranges relationship](../../assets/img/graveler2.png) - -Assuming commit B is derived from commit A, and only changed files in range `e-f`, it can reuse all ranges except for SSTable #N (the one containing the modified range of keys), which will be recreated with a new hash representing the state as exists after applying commit B’s changes. This will, in turn, also create a new Metarange since its hash is now changed as well (as it is derived from the hash of all contained ranges). - -Assuming most commits usually change related objects (i.e., that are likely to share some common prefix), the reuse ratio could be very high. We tested this assumption using S3 inventory from 2 design partners - we partitioned the keyspace to an arbitrary number of simulated blocks and measured their change over time. We saw a daily change rate of about 5-20%. - -Given the size of the repositories, it's safe to assume that a single day would translate into multiple commits. At a modest 20 commits per day, a commit is expected to reuse >= 99% of the previous commit blocks, so acceptable in terms of write amplification generated on commit. - -On the object store, ranges are stored in the following hierarchy: - -``` - - _lakefs/ - - - - ... - - - - ... - - - - ... -``` - -*Note: This relatively flat structure could be modified in the future. Looking at the diagram above, it imposes no real limitations on the depth of the tree. A tree could easily be made recursive by having Meta Ranges point to other Meta Ranges - and still provide all the same characteristics. For simplicity, we decided to start with a fixed 2-level hierarchy.* - -## Representing references and uncommitted metadata - -lakeFS always stores the object data in the storage namespace in the user's object store, committed and uncommitted data alike. - -However, the lakeFS object metadata might be stored in either the object store or a key-value store. - -Unlike committed metadata which is immutable, uncommitted (or "staged") metadata experiences frequent random writes and is very mutable in nature. This is also true for "refs" - in particular, branches, which are simply pointers to an underlying commit, are modified frequently: on every commit or merge operation. - -Both these types of metadata are not only mutable, but also require strong consistency guarantees while also being fault tolerant. If we can’t access the current pointer of the main branch, a big portion of the system is essentially down. - -Luckily, this is also much smaller set of metadata compared to the committed metadata. - -References and uncommitted metadata are currently stored on a key-value store (See [supported databases](../../reference/configuration.md)) for consistency guarantees. diff --git a/docs/src/understand/images/1.0-is-coming.jpeg b/docs/src/understand/images/1.0-is-coming.jpeg deleted file mode 100644 index 4f7e56f3b15..00000000000 Binary files a/docs/src/understand/images/1.0-is-coming.jpeg and /dev/null differ diff --git a/docs/src/understand/images/1.0-is-coming.jpg b/docs/src/understand/images/1.0-is-coming.jpg deleted file mode 100644 index 18e32ba6082..00000000000 Binary files a/docs/src/understand/images/1.0-is-coming.jpg and /dev/null differ diff --git a/docs/src/understand/model.md b/docs/src/understand/model.md deleted file mode 100644 index f99437c5da7..00000000000 --- a/docs/src/understand/model.md +++ /dev/null @@ -1,123 +0,0 @@ ---- -title: Concepts and Model -description: The lakeFS object model blends the object models of Git and of object stores such as S3. Read this page to learn more. ---- - -# lakeFS Concepts and Model - -lakeFS blends concepts from object stores such as S3 with concepts from Git. This reference defines the common concepts of lakeFS. - -## Objects - -lakeFS is an interface to manage objects in an object store. - -!!! tip - The actual data itself is not stored inside lakeFS directly but in an [underlying object store](#concepts-unique-to-lakefs).
- lakeFS manages pointers and additional metadata about these objects. - -## Version Control - -lakeFS is spearheading version control semantics for data. Most of these concepts will be familiar to Git users: - -### Repository - -In lakeFS, a _repository_ is a set of related objects (or collections of objects). In many cases, these represent tables of [various formats](https://lakefs.io/blog/hudi-iceberg-and-delta-lake-data-lake-table-formats-compared/){:target="_blank"} for tabular data, semi-structured data such as JSON or log files - or a set of unstructured objects such as images, videos, sensor data, etc. - -lakeFS represents repositories as a logical namespace used to group together objects, branches, and commits - analogous to a repository in Git. - -lakeFS repository naming requirements are as follows: - -- Start with a lower case letter or number -- Contain only lower case letters, numbers and hyphens -- Be between 3 and 63 characters long - -### Commits - -Using commits, you can view a [repository](#repository) at a certain point in its history and you're guaranteed that the data you see is exactly as it was at the point of committing it. - -These commits are immutable "checkpoints" containing all contents of a repository at a given point in the repository's history. - -Each commit contains metadata - the committer, timestamp, a commit message, as well as arbitrary key/value pairs you can choose to add. - -!!! info "Identifying Commits" - A commit is identified by its _commit ID_, a digest of all contents of the commit.
- Commit IDs are by nature long, so you may use a unique prefix to abbreviate them. A commit may also be identified by using a textual definition, called a _ref_.

- Examples of refs include tags, branch names, and expressions. - -### Branches - -Branches in lakeFS allow users to create their own "isolated" view of the repository. - -Changes on one branch do not appear on other branches. Users can take changes from one branch and apply it to another by [merging](#merge) them. - -#### Zero-copy branching - -Under the hood, branches are simply a pointer to a [commit](#commits) along with a set of uncommitted changes. -Creating a branch is a **zero-copy operation**; instead of duplicating data, it involves creating a pointer to the source commit for the branch. - -### Tags - -Tags are a way to give a meaningful name to a specific commit. -Using tags allow users to reference specific releases, experiments, or versions by using a human friendly name. - -Example tags: - -- `v2.3` to mark a release. -- `dev-jane-before-v2.3-merge` to mark Jane's private temporary point. - -Tag names adhere to the same rules as [git ref names](https://git-scm.com/docs/git-check-ref-format). - -### History - -The _history_ of the branch is the list of commits from the branch tip through the first -parent of each commit. Histories go back in time. - -### Merge - -_Merging_ is the way to integrate changes from a branch into another branch. -The result of a merge is a new commit, with the destination as the first parent and the source as the second. - -!!! info - To learn more about how merging works in lakeFS, see the [merge reference](how/merge.md) - - -### Ref expressions - -lakeFS also supports _expressions_ for creating a ref. These are similar to [revisions in -Git](https://git-scm.com/docs/gitrevisions#_specifying_revisions); indeed all `~` and `^` -examples at the end of that section will work unchanged in lakeFS. - -- A branch or a tag are ref expressions. -- If `` is a ref expression, then: - - `^` is a ref expression referring to its first parent. - - `^N` is a ref expression referring to its N'th parent; in particular `^1` is the - same as `^`. - - `~` is a ref expression referring to its first parent; in particular `~` is the - same as `^` and `~`. - - `~N` is a ref expression referring to its N'th parent, always traversing to the first - parent. So `~N` is the same as `^^...^` with N consecutive carets `^`. - -## Concepts unique to lakeFS - -The **underlying storage** is a location in an object store where lakeFS keeps your objects and some immutable metadata. - -When creating a lakeFS repository, you assign it with a **storage namespace**. The repository's -storage namespace is a location in the underlying storage where data for this repository -will be stored. - -We sometimes refer to underlying storage as **physical**. The path used to store the contents of an object is then termed a **physical path**. -Once lakeFS saves an object in the underlying storage it is never modified, except to remove it -entirely during some cleanups. - -A lot of what lakeFS does is to manage how lakeFS paths translate to **physical paths** on the -object store. This mapping is generally **not** straightforward. Importantly (and contrary to -many object stores), lakeFS may map multiple paths to the same object on backing storage, and -always does this for objects that are unchanged across versions. - -### `lakefs` protocol URIs - -lakeFS uses a specific format for path URIs. The URI `lakefs:////` is a path -to objects in the given repo and ref expression under key. - -This is used both for path prefixes and for full paths. -In similar fashion, `lakefs:///` identifies the repository at a ref expression, and `lakefs://` identifies a repo. diff --git a/docs/src/understand/performance-best-practices.md b/docs/src/understand/performance-best-practices.md deleted file mode 100644 index dbb4e5fd851..00000000000 --- a/docs/src/understand/performance-best-practices.md +++ /dev/null @@ -1,59 +0,0 @@ ---- -title: Performance Best Practices -description: This section suggests performance best practices to work with lakeFS. ---- -# Performance Best Practices - -## Overview - -Use this guide to achieve the best performance with lakeFS. - -## Avoid concurrent commits/merges - -Just like in Git, branch history is composed by commits and is linear by nature. -Concurrent commits/merges on the same branch result in a race. The first operation will finish successfully while the rest will retry. - -## Perform meaningful commits - -It's a good idea to perform commits that are meaningful in the senese that they represent a logical point in your data's lifecycle. While lakeFS supports arbirartily large commits, avoiding commits with a huge number of objects will result in a more comprehensible commit history. - -## Use zero-copy import - -To import object into lakeFS, either a single time or regularly, lakeFS offers a [zero-copy import][use-zero-copy-import] feature. -Use this feature to import a large number of objects to lakeFS, instead of simply copying them into your repository. -This feature will create a reference to the existing objects on your bucket and avoids the copy. - -## Read data using the commit ID - -In cases where you are only interested in reading committed data: - -* Use a commit ID (or a tag ID) in your path (e.g: `lakefs://repo/a1b2c3`). -* Add `@` before the path `lakefs://repo/main@/path`. - -When accessing data using the branch name (e.g. `lakefs://repo/main/path`) lakeFS will also try to fetch uncommitted data, which may result in reduced performance. -For more information, see [how uncommitted data is managed in lakeFS][representing-refs-and-uncommitted-metadata]. - -## Operate directly on the storage - -Sometimes, storage operations can become a bottleneck. For example, when your data pipelines upload many big objects. -In such cases, it can be beneficial to perform only versioning operations on lakeFS, while performing storage reads/writes directly on the object store. -lakeFS offers multiple ways to do that: - -* The [`lakectl fs upload --pre-sign`][lakectl-upload] command (or [download][lakectl-download]). -* The lakeFS [Hadoop Filesystem][hadoopfs]. -* The [staging API][api-staging] which can be used to add lakeFS references to objects after having written them to the storage. - -Accessing the object store directly is a faster way to interact with your data. - -## Zero-copy - -lakeFS provides a zero-copy mechanism to data. Instead of copying the data, we can check out to a new branch. -Creating a new branch will take constant time as the new branch points to the same data as its parent. -It will also lower the storage cost. - -[hadoopfs]: ../integrations/spark.md#lakefs-hadoop-filesystem -[zero-copy-import]: ../howto/import.md#zero-copy-import -[lakectl-upload]: ../reference/cli.md#lakectl-fs-upload -[lakectl-download]: ../reference/cli.md#lakectl-fs-download -[api-staging]: ../reference/api.md#operations-objects-stageObject -[representing-refs-and-uncommitted-metadata]: how/versioning-internals.md#representing-references-and-uncommitted-metadata diff --git a/docs/src/understand/use_cases/cicd_for_data.md b/docs/src/understand/use_cases/cicd_for_data.md deleted file mode 100644 index 4d593f2e75a..00000000000 --- a/docs/src/understand/use_cases/cicd_for_data.md +++ /dev/null @@ -1,109 +0,0 @@ ---- -title: Data Contract Enforcement -description: In this tutorial, we will explore how to use lakeFS to automate Data Contract Enforcement for data lakes. ---- - -# Data Contract Enforcement - -## Why Does Data Contract Enforcement Matter? - -Modern data pipelines continuously move data from data lakes to downstream consumers such as business intelligence dashboards, analytics systems, -and machine learning models. As organizations increasingly rely on data to drive business-critical decisions, ensuring data reliability and trust becomes essential. - -Production data must consistently adhere to defined quality standards and governance policies. These requirements can range -from simple validations — such as file format checks and schema enforcement—to more advanced controls like PII (Personally -Identifiable Information) detection and removal across organizational datasets. - -To maintain quality throughout the data lifecycle, teams implement data quality gates. Similar to software development practices, -data changes should go through an audit before being published to production. Automated checks verify -that data meets defined contracts and governance requirements. Only validated data is allowed to move forward. - -As a best practice, every update to production data should trigger automated validation tests. If the data passes all checks, -it can be safely published. If it fails, the changes are blocked — preventing unreliable or non-compliant data from reaching -downstream consumers. - -## How Do I Automate Data Contract Enforcement with lakeFS? - -lakeFS enables automated data contract enforcement through a built-in mechanism called [hooks](../../howto/hooks/index.md). - -Hooks allow you to automatically validate data changes when specific repository events occur, such as: -* `pre-merge` -* `pre-commit` -* `post-merge` -* `post-commit` -* `pre-create-branch` -* `post-create-branch` - -Conceptually similar to Git hooks, lakeFS hooks are executed remotely and are guaranteed to run when the configured event -is triggered. This makes them reliable enforcement points for validating data contracts and governance policies. - -By using `pre-commit` and `pre-merge` hooks, you can enforce data contracts before changes are finalized or promoted to -production. For example, you can: -* Validate schema compatibility -* Enforce file format policies -* Detect or block PII -* Run data quality checks -* Ensure naming, partitioning, or structural conventions - -![lakeFS hooks - Promotion workflow](../../assets/img/promotion_workflow.png) - -Hook behavior is defined declaratively in an `actions.yaml` file. This file specifies: -* The triggering event (for example, pre-merge) -* The branches the rule applies to -* The validation logic to execute - -When the configured event occurs, lakeFS runs all validations defined in `actions.yaml`. If any validation fails, the operation -(such as a merge into main) is blocked — preventing data that violates the contract from reaching production. - -Below is an example actions.yaml file that enforces a file format contract on the main branch, allowing only Parquet and -Delta Lake files under a specific prefix: - -```yaml -name: ParquetOnlyInProduction -description: This webhook ensures that only parquet files are written under production/ -on: - pre-merge: - branches: - - main -hooks: - - id: production_format_validator - type: webhook - description: Validate file formats - properties: - url: "http://lakefs-hooks:5001/webhooks/format" - query_params: - allow: ["parquet", "delta_lake"] - prefix: analytics/ -``` -In this example, any attempt to merge changes into main that violate the defined data contract will be rejected. - -## Example: Automating Data Contract Enforcement with lakeFS - -The sample below provides a lakeFS environment, a Jupyter notebook, and a server on which for the lakeFS webhooks to run. - -### Prerequisites & Setup - -Before we get started, make sure [Docker](https://docs.docker.com/engine/install/) is installed on your machine. - -* Start by cloning the lakeFS samples Git repository: - -```bash -git clone https://github.com/treeverse/lakeFS-samples.git -cd lakeFS-samples -``` - -* Run following commands to start the components: - -```bash -git submodule init -git submodule update -docker compose up -``` - -Open the [local Jupyter Notebook](http://localhost:8888) and go to the `hooks-demo.ipynb` notebook. - -## Resources - -To explore different checks and validations on your data, refer to [pre-built hooks config](https://github.com/treeverse/lakeFS-hooks#included-webhooks) by the lakeFS team. - -To understand the comprehensive list of hooks supported by lakeFS, refer to the [documentation](https://github.com/treeverse/lakeFS-hooks). diff --git a/docs/src/understand/use_cases/etl_testing.md b/docs/src/understand/use_cases/etl_testing.md deleted file mode 100644 index f979eda87ef..00000000000 --- a/docs/src/understand/use_cases/etl_testing.md +++ /dev/null @@ -1,205 +0,0 @@ ---- -title: Isolated Dev & Test Environments -description: In this tutorial, we will explore how to safely run ETL testing using lakeFS to create isolated dev/test data environments to run data pipelines. ---- - -# Isolated Dev & Test Environments - -## Why are Isolated Environments Important? - -When making changes to a data lake, teams must test those changes against real production data to ensure reliable results. This requires isolated environments -that provide access to production data without impacting it, or the consumers who depend on it. - -Running pipelines, transformation jobs, or model updates directly in production without proper testing introduces significant risk. -Sooner or later, data issues can propagate into dashboards, ML models, and downstream systems, leading to costly errors and loss of trust. - -The most common way to avoid changing production directly is to create separate development and testing environments. In practice, -this usually means copying large volumes of data into dedicated dev environments for experimentation and validation. - -However, without lakeFS, creating and maintaining these environments is time-consuming and expensive. Large datasets must be duplicated, -increasing storage costs. Teams often end up sharing limited dev environments, which creates coordination overhead and slows development. -And because these environments rely on data copies rather than true isolation, they still don’t guarantee hermetic separation from production. - -## How does lakeFS Help with Dev/Test Environments? - -lakeFS makes it fast and cost-effective to create truly isolated dev and test environments for ETL jobs, transformations, and ML workflows. -Instead of copying large volumes of data, lakeFS uses zero-copy branching to create new environments instantly - without duplicating objects. - -In a lakeFS repository, all data lives on a branch. You can think of each branch as an independent environment. Branches are fully isolated: -changes made on one branch do not affect other branches unless you explicitly merge them. This allows teams to experiment, validate changes, -and iterate safely — without impacting production or other developers. - -Because lakeFS creates branches using metadata pointers rather than physical copies, unchanged objects are shared across branches. -**Only new or modified data consumes additional storage**. This eliminates the high costs and operational burden of maintaining multiple -copied environments. - -When changes are validated and ready to be promoted, you can use a merge operation to apply them to another branch (for example, -from a dev branch into production). This makes the promotion process controlled, explicit, and versioned. - -## Using Branches as Development and Testing Environments - -The key difference when using lakeFS for isolated data environments is that you can create them immediately before testing a change. And once new data is merged into production, you can delete the branch - effectively deleting the old environment. - -This is different from creating a long-living test environment used as a staging area to test all the updates. With lakeFS, **we create a new branch for each change to production** that we want to make. One benefit of this is the ability to test multiple changes at one time. - -![dev/test branches as environments](../../assets/img/iso_env_dev_test_branching.png) - -## Try it out: Creating Dev/Test Environments with lakeFS - -lakeFS supports UI, CLI (`lakectl` command-line utility) and several clients for the [API](../../reference/api.md) to run the Git-like operations. Let us explore how to create dev/test environments using each of these options below. - -There are two ways that you can try out lakeFS: - -* lakeFS Cloud - fully managed lakeFS with a free trial -* Local Docker-based [quickstart](../../quickstart/index.md) and [samples](https://github.com/treeverse/lakeFS-samples/) -* Self-hosted lakeFS Enterprise [quickstart](../../enterprise/getstarted/quickstart.md) - -### Example: Using lakeFS Cloud - -In this tutorial, we will use [a lakeFS Cloud environment](https://lakefs.cloud/) to create dev/test data environments for ETL testing. This -allows you to spin up a lakeFS instance in a click, create different data environments by simply branching out of your data repository and -develop & test data pipelines in these isolated branches. - -First, let us spin up a [cloud](https://lakefs.cloud/) instance. Once you have a live environment, login to your instance -with access and secret keys. Then, you can work with the sample data repository `my-repo` that is created for you. - -![sample repository](../../assets/img/iso_env_myrepo.png) - -Click on `my-repo` and notice that by default, the repository has a `main` branch created and `sample_data` preloaded to work with. - -![main branch](../../assets/img/iso_env_sampledata.png) - -You can create a new branch (say, `test-env`) by going to the _Branches_ tab and clicking _Create Branch_. Once it is successful, you will see two branches under the repository: `main` and `test-env`. - -![test-env branch](../../assets/img/iso_env_testenv_branch.png) - -Now you can add, modify or delete objects under the `test-env` branch without affecting the data in the main branch. - -### Trying out lakeFS with Docker and Jupyter Notebooks - -This use case shows how to create dev/test data environments for ETL testing using lakeFS branches. The following tutorial provides a lakeFS environment, a Jupyter notebook, and Python SDK API to demonstrate integration of lakeFS with [Spark](../../integrations/spark.md). You can run this tutorial on your local machine. - -Follow the tutorial video below to get started with lakeFS Cloud and Jupyter notebook, or follow the instructions on this page. - - - -#### Prerequisites - -Before getting started, you will need [Docker](https://docs.docker.com/engine/install/) installed on your machine. - -#### Running lakeFS and Jupyter Notebooks - -Follow along the steps below to create dev/test environment with lakeFS. - -* Start by cloning the lakeFS samples Git repository: - - ```bash - git clone https://github.com/treeverse/lakeFS-samples.git - cd lakeFS-samples - ``` - -* Run following commands to download and run Docker container which includes Python, Spark, Jupyter Notebook, JDK, Hadoop binaries, lakeFS Python SDK and Airflow (Docker image size is around 4.5GB): - - ```bash - git submodule init && git submodule update - docker compose up - ``` - -* Open the [local Jupyter Notebook](http://localhost:8888) and go to the `spark-demo.ipynb` notebook. - -#### Configuring lakeFS Python Client - -Setup lakeFS access credentials for the lakeFS instance running. The defaults for these that the samples repository Docker Compose uses are shown here: - -```python -lakefs_access_key = 'AKIAIOSFODNN7EXAMPLE' -lakefs_secret_key = 'wJalrXUtnFEMI/K7MDENG/bPxRfiCYEXAMPLEKEY' -lakefs_endpoint = 'http://lakefs:8000' -``` - -Next, setup the storage namespace to a location in the bucket you have configured. The storage namespace is a location in the underlying storage where data for this repository will be stored. - -```python -storageNamespace = 's3://example/' -``` - -You can use lakeFS through the UI, API or `lakectl` command-line. For this use-case, we use python `lakefs` to run lakeFS core operations. - -```python -import lakefs -from lakefs import Client - -# lakeFS credentials and endpoint -client = Client( - host=lakefs_endpoint, - username=lakefs_access_key, - password=lakefs_secret_key -) -``` - -lakeFS can be configured to work with Spark in two ways: - -* Access lakeFS using the [S3-compatible API][spark-s3a] -* Access lakeFS using the [lakeFS-specific Hadoop FileSystem][hadoopfs] - -#### Upload the Sample Data to Main Branch - -To upload an object to the `my-repo`, use the following command. - -```python -import os -import lakefs - -with open('/data/lakefs_test.csv', 'rb') as f: - lakefs.repository("my-repo", client=client).branch("main").object(filenName).upload(data=f.read()) -``` - -Once uploaded, commit the changes to the `main` branch and attach some metadata to the commit as well. - -```python -lakefs.repository("my-repo", client=client).branch("main").commit(message="Added my first object!", metadata={'using': 'python'}) -``` - -In this example, we use lakeFS S3A gateway to read data from the storage bucket. - -```python -dataPath = f"s3a://my-repo/main/lakefs_test.csv" -df = spark.read.csv(dataPath) -df.show() -``` - -#### Create a Test Branch - -Let us start by creating a new branch `test-env` on the example repository `my-repo`. - -```python -lakefs.repository("my-repo", client=client).branch("test-env").create(source_reference="main") -``` - -Now we can use Spark to write the csv file from `main` branch as a Parquet file to the `test-env` of our lakeFS repository. Suppose we accidentally write the dataframe back to "test-env" branch again, this time in append mode. - -```python -df.write.mode('overwrite').parquet('s3a://my-repo/test-env/') -df.write.mode('append').parquet('s3a://my-repo/test-env/') -``` - -What happens if we re-read in the data on both branches and perform a count on the resulting DataFrames? -There will be twice as many rows in `test-env` branch. That is, we accidentally duplicated our data! Oh no! - -Data duplication introduce errors into our data analytics, BI and machine learning efforts; hence we would like to avoid duplicating our data. - -On the `main` branch however, there is still just the original data - untouched by our Spark code. This shows the utility of branch-based isolated environments with lakeFS. - -You can safely continue working with the data from main which is unharmed due to lakeFS isolation capabilities. - -## Further Reading - -!!! quote " " - - * Case Study: [How Enigma use lakeFS for isolated development and staging environments](https://lakefs.io/blog/improving-our-research-velocity-with-lakefs/) - * Tutorial: [ETL Testing Tutorial with lakeFS: Step-by-Step Guide](https://lakefs.io/blog/etl-testing-tutorial/) - * [ETL Testing: A Practical Guide](https://lakefs.io/blog/etl-testing/) - * [Top 5 ETL Testing Challenges - Solved!](https://lakefs.io/wp-content/uploads/2023/03/Top-5-ETL-Testing-Challenges-Solved.pdf) - - [hadoopfs]: ../../integrations/spark.md#lakefs-hadoop-filesystem - [spark-s3a]: ../../integrations/spark.md#s3-compatible-api diff --git a/docs/src/understand/use_cases/reproducibility.md b/docs/src/understand/use_cases/reproducibility.md deleted file mode 100644 index 85b02b194d8..00000000000 --- a/docs/src/understand/use_cases/reproducibility.md +++ /dev/null @@ -1,67 +0,0 @@ ---- -title: Reproducibility -description: In this tutorial, we will explore how to use lakeFS for reproducibility of data. ---- - -## The Benefits of Reproducible Data - -Data changes frequently. This makes the task of keeping track of its exact state over time difficult. Oftentimes, people maintain only one state of their data - its current state. - -This has a negative impact on the work, as it becomes hard to: - -* Debug a data issue -* Validate machine learning training accuracy (re-running a model over different data gives different results) -* Comply with data audits, and model audits in particular - -In comparison, lakeFS exposes a Git-like interface to data that allows keeping track of more than just the current state of data. This makes reproducing its state at any point in time straightforward. - -## Achieving Reproducibility with lakeFS - -To make data reproducible, we recommend taking a new commit of your lakeFS repository every time the data in it changes. As long as there’s a commit taken, the process to reproduce a given state is as simple as reading the data from a path that includes the unique `commit_id` generated for each commit. - -To read data at it’s current state, we can use a static path containing the repository and branch names. To give an example, if you have a repository named `example` with a branch named `main`, reading the latest state of this data into a Spark Dataframe is always: - -!!! example - ```python - df = spark.read.parquet("s3://example/main/") - ``` - - The code above assumes that all objects in the repository under this path are stored in parquet format. If a different format is used, the applicable Spark read method should be used. - -### Using Commits - -In a lakeFS repository, we are capable of taking many [commits](../../understand/glossary.md#commit) over the data, making many points in time reproducible. - -![Commit History](../../assets/img/reproduce-commit-history.png) - -In the repository above, a new commit is taken each time a model training script is run, and the commit message includes the specific run number. - -If we wanted to re-run the model training script and reproduce the exact same results for a historical run, say run #435, we could copy the commit ID associated with the run and read the data into a dataframe like so: - -```python -df = spark.read.parquet("s3://example/296e54fbee5e176f3f4f4aeb7e087f9d57515750e8c3d033b8b841778613cb23/training_dataset/") -``` - -The ability to reference a specific `commit_id` in code simplifies reproducing the specific state a data collection or even multiple collections. This has many applications that are common in data development, such as historical debugging, identifying deltas in a data collection, audit compliance, and more. - -### Using Tags - -In addition to commits, lakeFS supports [tags](../../understand/glossary.md#tag). A tag is a human-readable label that points to a specific commit. - -Tags are useful when you want to mark important points in time, such as: -* A production data release -* A specific model training dataset -* A dataset used for an audit - -Instead of referencing a non-readable `commit_id`, you can reference the tag directly in your code. For example: -```python -df = spark.read.parquet("s3://example/v1.0/training_dataset/") -``` - -Here, `v1.0` is a tag that points to a specific commit. While commits in lakeFS are immutable, a tag is simply a reference -to one of those immutable commits. Once created, a tag cannot be updated to point to a different commit (it can only be -deleted and recreated). - -As a result, reading data through a tag will always return the exact same data state for as long as that tag exists. - -Using tags makes it easier to work with reproducible datasets in a way that is readable, shareable, and stable over time. diff --git a/docs/src/understand/use_cases/rollback.md b/docs/src/understand/use_cases/rollback.md deleted file mode 100644 index 00f00c330f1..00000000000 --- a/docs/src/understand/use_cases/rollback.md +++ /dev/null @@ -1,57 +0,0 @@ ---- -title: Rollback -description: In this tutorial, we will explore how to use lakeFS for rollback operations. ---- - -# Rollback - -## What Is a Rollback? - -A rollback operation is used to fix critical data errors immediately. - -What is a critical data error? Think of a situation where erroneous or misformatted data causes a significant issue with an important service or function. In such situations, the first thing to do is stop the bleeding. - -Rolling back returns data to a state in the past, before the error was present. You might not be showing all the latest data after a rollback, but at least you aren’t showing incorrect data or raising errors. - -## Why Rollbacks Are Useful - -A Rollback is used as a stopgap measure to “put out the fire” as quickly as possible while RCA (root cause analysis) is performed to understand 1) exactly how the error happened, and 2) what can be done to prevent it from happening again. - -It can be a pressured, stressful situation to deal with a critical data error. Having the ability to employ a rollback relieves some of the pressure and makes it more likely you can figure out what happened without creating additional issues. - -!!! example - As a real world example, the [14-day outage](https://devops.com/what-sres-can-learn-from-the-atlassian-outage-of-2022/) some Atlassian users experienced in May 2022 could have been an uninteresting minor incident had rolling back the deleted customer data been an option. - -## Performing a Rollback with lakeFS - -lakeFS lets you develop in your data lake in such a way that rollbacks are simple to perform. This starts by taking a commit over your lakeFS repository whenever a change to its state occurs. - -Using the lakeFS UI or CLI, you can set the current state, or HEAD, of a branch to any historical commit in seconds, effectively performing a rollback. - -To demonstrate how this works, let's take the example of a lakeFS repo with the following commit history: - -![Commit History](../../assets/img/rollback-commit-history.png) - -As can be inferred from the history, this repo is updated every minute with a data sync from some data source. An example data sync is a typical ETL job that replicates data from an internal database or any other data source. After each sync, a commit is taken in lakeFS to save a snapshot of data at that point in time. - -### How to Rollback From a Bad Data Sync? - -Say a situation occurs where one of the syncs had bad data and is causing downstream dashboards to fail to load. Since we took a commit of the repo right after the sync ran, we can use a `revert` operation to undo the changes introduced in that sync. - -![Copy Commit ID](../../assets/img/rollback-copy-id.png) - -Step 1: Copy the `commit_id` associated with the commit we want to revert. As the screenshot above shows, you can use the _Copy ID to Clipboard_ button to do this. - -Step 2: Run the revert command using [lakectl](../../reference/cli.md), the lakeFS CLI. In this example, the command will be as follows: - -```bash -lakectl branch revert "lakefs://example/main" 9666d7c9daf37b3ba6964e733d08596ace2ec2c7bc3a4023ad8e80737a6c3e9d -``` - -This will undo the changes introduced by this commit, completing the rollback! - -![Rollback Commit](../../assets/img/rollback-revert-commit.png) - -The rollback operation is that simple, even if many changes were introduced in a commit, spanning acrossmultiple data collections. - -In lakeFS, rolling back data is always a one-liner.