From 1cd440f7db63543ea385d183f77be08829bc5aa9 Mon Sep 17 00:00:00 2001 From: Jeffrey Aven Date: Fri, 14 Feb 2025 11:08:09 +1100 Subject: [PATCH 01/10] Removed virtual environment from repo --- .gitignore | 1 + README.md | 6 +- .../databricks/all-purpose-cluster/README.md | 28 ++-- .../all-purpose-cluster/convenience.sh | 6 +- .../iam/cross_account_role.iql} | 0 .../s3/workspace_bucket.iql} | 0 .../s3/workspace_bucket_policy.iql} | 0 .../resources/aws/vpc/elastic_ip.iql | 56 ++++++++ .../vpc/get_main_route_table_id.iql} | 0 .../vpc/inet_gateway.iql} | 0 .../vpc/inet_gw_attachment.iql} | 0 .../vpc/inet_route.iql} | 0 .../resources/aws/vpc/nat_gateway.iql | 53 +++++++ .../vpc/security_group.iql} | 0 .../vpc/security_group_rules.iql} | 0 .../vpc/subnet.iql} | 0 .../vpc/subnet_rt_assn.iql} | 0 .../vpc/tag_main_vpc_route_table.iql} | 0 .../{aws_vpc.iql => aws/vpc/vpc.iql} | 0 .../credentials.iql} | 0 .../databricks_account/get_users.iql | 6 + .../network.iql} | 0 .../storage_configuration.iql} | 0 .../update_group_membership.iql | 6 + .../workspace.iql} | 0 .../databricks_account/workspace_group.iql | 31 +++++ .../workspace_permission_assignments.iql | 32 +++++ .../all_purpose_cluster.iql | 52 +++++++ .../all-purpose-cluster/stackql_manifest.yml | 130 ++++++++++++++---- stackql_deploy/cli.py | 1 + stackql_deploy/cmd/base.py | 1 + stackql_deploy/cmd/build.py | 1 + stackql_deploy/cmd/teardown.py | 1 + stackql_deploy/cmd/test.py | 1 + stackql_deploy/lib/bootstrap.py | 1 + stackql_deploy/lib/config.py | 23 ++++ stackql_deploy/lib/templating.py | 1 + stackql_deploy/lib/utils.py | 1 + 38 files changed, 392 insertions(+), 46 deletions(-) rename examples/databricks/all-purpose-cluster/resources/{aws_iam_cross_account_role.iql => aws/iam/cross_account_role.iql} (100%) rename examples/databricks/all-purpose-cluster/resources/{aws_s3_workspace_bucket.iql => aws/s3/workspace_bucket.iql} (100%) rename examples/databricks/all-purpose-cluster/resources/{aws_s3_workspace_bucket_policy.iql => aws/s3/workspace_bucket_policy.iql} (100%) create mode 100644 examples/databricks/all-purpose-cluster/resources/aws/vpc/elastic_ip.iql rename examples/databricks/all-purpose-cluster/resources/{aws_get_main_route_table_id.iql => aws/vpc/get_main_route_table_id.iql} (100%) rename examples/databricks/all-purpose-cluster/resources/{aws_vpc_inet_gateway.iql => aws/vpc/inet_gateway.iql} (100%) rename examples/databricks/all-purpose-cluster/resources/{aws_vpc_inet_gw_attachment.iql => aws/vpc/inet_gw_attachment.iql} (100%) rename examples/databricks/all-purpose-cluster/resources/{aws_vpc_inet_route.iql => aws/vpc/inet_route.iql} (100%) create mode 100644 examples/databricks/all-purpose-cluster/resources/aws/vpc/nat_gateway.iql rename examples/databricks/all-purpose-cluster/resources/{aws_vpc_security_group.iql => aws/vpc/security_group.iql} (100%) rename examples/databricks/all-purpose-cluster/resources/{aws_vpc_security_group_rules.iql => aws/vpc/security_group_rules.iql} (100%) rename examples/databricks/all-purpose-cluster/resources/{aws_vpc_subnet.iql => aws/vpc/subnet.iql} (100%) rename examples/databricks/all-purpose-cluster/resources/{aws_vpc_subnet_rt_assn.iql => aws/vpc/subnet_rt_assn.iql} (100%) rename examples/databricks/all-purpose-cluster/resources/{aws_tag_main_vpc_route_table.iql => aws/vpc/tag_main_vpc_route_table.iql} (100%) rename examples/databricks/all-purpose-cluster/resources/{aws_vpc.iql => aws/vpc/vpc.iql} (100%) rename examples/databricks/all-purpose-cluster/resources/{databricks_credentials.iql => databricks_account/credentials.iql} (100%) create mode 100644 examples/databricks/all-purpose-cluster/resources/databricks_account/get_users.iql rename examples/databricks/all-purpose-cluster/resources/{databricks_network.iql => databricks_account/network.iql} (100%) rename examples/databricks/all-purpose-cluster/resources/{databricks_storage_configuration.iql => databricks_account/storage_configuration.iql} (100%) create mode 100644 examples/databricks/all-purpose-cluster/resources/databricks_account/update_group_membership.iql rename examples/databricks/all-purpose-cluster/resources/{databricks_workspace.iql => databricks_account/workspace.iql} (100%) create mode 100644 examples/databricks/all-purpose-cluster/resources/databricks_account/workspace_group.iql create mode 100644 examples/databricks/all-purpose-cluster/resources/databricks_account/workspace_permission_assignments.iql create mode 100644 examples/databricks/all-purpose-cluster/resources/databricks_workspace/all_purpose_cluster.iql diff --git a/.gitignore b/.gitignore index 8c87ce0..213615b 100644 --- a/.gitignore +++ b/.gitignore @@ -84,3 +84,4 @@ instance/ docs/_build/ .DS_Store +myenv/ diff --git a/README.md b/README.md index c295d43..15065dd 100644 --- a/README.md +++ b/README.md @@ -265,14 +265,16 @@ To distribute **stackql-deploy** on PyPI, you'll need to ensure that you have al First, ensure you have the latest versions of `setuptools` and `wheel` installed: -``` +```bash +python3 -m venv venv +source venv/bin/activate # pip install --upgrade setuptools wheel pip install --upgrade build ``` Then, navigate to your project root directory and build the distribution files: -``` +```bash rm dist/stackql_deploy* python3 -m build # or diff --git a/examples/databricks/all-purpose-cluster/README.md b/examples/databricks/all-purpose-cluster/README.md index 6a80f71..404f7bc 100644 --- a/examples/databricks/all-purpose-cluster/README.md +++ b/examples/databricks/all-purpose-cluster/README.md @@ -26,7 +26,7 @@ Now, is is convenient to use environment variables for context. Note that for o ```bash #!/usr/bin/env bash -export ASSETS_AWS_REGION='us-east-1' # or wherever you want +export AWS_REGION='us-east-1' # or wherever you want export AWS_ACCOUNT_ID='' export DATABRICKS_ACCOUNT_ID='' export DATABRICKS_AWS_ACCOUNT_ID='' @@ -46,28 +46,20 @@ export AWS_ACCESS_KEY_ID='' Now, let us do some sanity checks and housekeeping with `stackql`. This is purely optional. From the root of this repository: ``` - source examples/databricks/all-purpose-cluster/convenience.sh - stackql shell - ``` This will start a `stackql` interactive shell. Here are some commands you can run (I will not place output here, that will be shared in a corresponding video): ```sql - registry pull databricks_account v24.12.00279; - registry pull databricks_workspace v24.12.00279; -- This will fail if accounts, subscription, or credentials are in error. select account_id FROM databricks_account.provisioning.credentials WHERE account_id = ''; - - select account_id, workspace_name, workspace_id, workspace_status from databricks_account.provisioning.workspaces where account_id = ''; - ``` For extra credit, you can (asynchronously) delete the unnecessary workspace with `delete from databricks_account.provisioning.workspaces where account_id = '' and workspace_id = '';`, where you obtain the workspace id from the above query. I have noted that due to some reponse caching it takes a while to disappear from select queries (much longer than disappearance from the web page), and you may want to bounce the `stackql` session to hurry things along. This is not happening on the `stackql` side, but session bouncing forces a token refresh which can help cache busting. @@ -77,20 +69,20 @@ For extra credit, you can (asynchronously) delete the unnecessary workspace with Time to get down to business. From the root of this repository: ```bash - +python3 -m venv myenv source examples/databricks/all-purpose-cluster/convenience.sh - -source ./.venv/bin/activate - - +source venv/bin/activate +pip install stackql-deploy ``` +> alternatively set the `AWS_REGION`, `AWS_ACCOUNT_ID`, `DATABRICKS_ACCOUNT_ID`, `DATABRICKS_AWS_ACCOUNT_ID` along with provider credentials `AWS_ACCESS_KEY_ID`, `AWS_SECRET_ACCESS_KEY`, `DATABRICKS_CLIENT_ID`, `DATABRICKS_CLIENT_SECRET` + Then, do a dry run (good for catching **some** environmental issues): ```bash stackql-deploy build \ examples/databricks/all-purpose-cluster dev \ --e AWS_REGION=${ASSETS_AWS_REGION} \ +-e AWS_REGION=${AWS_REGION} \ -e AWS_ACCOUNT_ID=${AWS_ACCOUNT_ID} \ -e DATABRICKS_ACCOUNT_ID=${DATABRICKS_ACCOUNT_ID} \ -e DATABRICKS_AWS_ACCOUNT_ID=${DATABRICKS_AWS_ACCOUNT_ID} \ @@ -105,7 +97,7 @@ Now, let use do it for real: ```bash stackql-deploy build \ examples/databricks/all-purpose-cluster dev \ --e AWS_REGION=${ASSETS_AWS_REGION} \ +-e AWS_REGION=${AWS_REGION} \ -e AWS_ACCOUNT_ID=${AWS_ACCOUNT_ID} \ -e DATABRICKS_ACCOUNT_ID=${DATABRICKS_ACCOUNT_ID} \ -e DATABRICKS_AWS_ACCOUNT_ID=${DATABRICKS_AWS_ACCOUNT_ID} \ @@ -128,7 +120,7 @@ We can also use `stackql-deploy` to assess if our infra is shipshape: ```bash stackql-deploy test \ examples/databricks/all-purpose-cluster dev \ --e AWS_REGION=${ASSETS_AWS_REGION} \ +-e AWS_REGION=${AWS_REGION} \ -e AWS_ACCOUNT_ID=${AWS_ACCOUNT_ID} \ -e DATABRICKS_ACCOUNT_ID=${DATABRICKS_ACCOUNT_ID} \ -e DATABRICKS_AWS_ACCOUNT_ID=${DATABRICKS_AWS_ACCOUNT_ID} \ @@ -151,7 +143,7 @@ Now, let us teardown our `stackql-deploy` managed infra: ```bash stackql-deploy teardown \ examples/databricks/all-purpose-cluster dev \ --e AWS_REGION=${ASSETS_AWS_REGION} \ +-e AWS_REGION=${AWS_REGION} \ -e AWS_ACCOUNT_ID=${AWS_ACCOUNT_ID} \ -e DATABRICKS_ACCOUNT_ID=${DATABRICKS_ACCOUNT_ID} \ -e DATABRICKS_AWS_ACCOUNT_ID=${DATABRICKS_AWS_ACCOUNT_ID} \ diff --git a/examples/databricks/all-purpose-cluster/convenience.sh b/examples/databricks/all-purpose-cluster/convenience.sh index 81f73c7..d4913f6 100644 --- a/examples/databricks/all-purpose-cluster/convenience.sh +++ b/examples/databricks/all-purpose-cluster/convenience.sh @@ -10,9 +10,9 @@ then source "${REPOSITORY_ROOT}/examples/databricks/all-purpose-cluster/sec/env.sh" fi -if [ "${ASSETS_AWS_REGION}" = "" ]; +if [ "${AWS_REGION}" = "" ]; then - ASSETS_AWS_REGION='us-east-1' + AWS_REGION='us-east-1' fi if [ "${AWS_ACCOUNT_ID}" = "" ]; @@ -57,7 +57,7 @@ then exit 1 fi -export ASSETS_AWS_REGION +export AWS_REGION export AWS_ACCOUNT_ID export DATABRICKS_ACCOUNT_ID export DATABRICKS_AWS_ACCOUNT_ID diff --git a/examples/databricks/all-purpose-cluster/resources/aws_iam_cross_account_role.iql b/examples/databricks/all-purpose-cluster/resources/aws/iam/cross_account_role.iql similarity index 100% rename from examples/databricks/all-purpose-cluster/resources/aws_iam_cross_account_role.iql rename to examples/databricks/all-purpose-cluster/resources/aws/iam/cross_account_role.iql diff --git a/examples/databricks/all-purpose-cluster/resources/aws_s3_workspace_bucket.iql b/examples/databricks/all-purpose-cluster/resources/aws/s3/workspace_bucket.iql similarity index 100% rename from examples/databricks/all-purpose-cluster/resources/aws_s3_workspace_bucket.iql rename to examples/databricks/all-purpose-cluster/resources/aws/s3/workspace_bucket.iql diff --git a/examples/databricks/all-purpose-cluster/resources/aws_s3_workspace_bucket_policy.iql b/examples/databricks/all-purpose-cluster/resources/aws/s3/workspace_bucket_policy.iql similarity index 100% rename from examples/databricks/all-purpose-cluster/resources/aws_s3_workspace_bucket_policy.iql rename to examples/databricks/all-purpose-cluster/resources/aws/s3/workspace_bucket_policy.iql diff --git a/examples/databricks/all-purpose-cluster/resources/aws/vpc/elastic_ip.iql b/examples/databricks/all-purpose-cluster/resources/aws/vpc/elastic_ip.iql new file mode 100644 index 0000000..d4dd982 --- /dev/null +++ b/examples/databricks/all-purpose-cluster/resources/aws/vpc/elastic_ip.iql @@ -0,0 +1,56 @@ +/*+ exists */ +SELECT COUNT(*) as count FROM +( +SELECT allocation_id, +json_group_object(tag_key, tag_value) as tags +FROM aws.ec2.eip_tags +WHERE region = '{{ region }}' +GROUP BY allocation_id +HAVING json_extract(tags, '$.Provisioner') = 'stackql' +AND json_extract(tags, '$.StackName') = '{{ stack_name }}' +AND json_extract(tags, '$.StackEnv') = '{{ stack_env }}' +) t + +/*+ create */ +INSERT INTO aws.ec2.eips ( + NetworkBorderGroup, + Tags, + ClientToken, + region +) +SELECT +'{{ region }}', +'{{ tags }}', +'{{ idempotency_token }}', +'{{ region }}' + +/*+ statecheck, retries=3, retry_delay=5 */ +SELECT COUNT(*) as count FROM +( +SELECT allocation_id, +json_group_object(tag_key, tag_value) as tags +FROM aws.ec2.eip_tags +WHERE region = '{{ region }}' +GROUP BY allocation_id +HAVING json_extract(tags, '$.Provisioner') = 'stackql' +AND json_extract(tags, '$.StackName') = '{{ stack_name }}' +AND json_extract(tags, '$.StackEnv') = '{{ stack_env }}' +) t + +/*+ exports, retries=3, retry_delay=5 */ +SELECT allocation_id as eip_allocation_id, public_ip as eip_public_id FROM +( +SELECT allocation_id, public_ip, +json_group_object(tag_key, tag_value) as tags +FROM aws.ec2.eip_tags +WHERE region = '{{ region }}' +GROUP BY allocation_id +HAVING json_extract(tags, '$.Provisioner') = 'stackql' +AND json_extract(tags, '$.StackName') = '{{ stack_name }}' +AND json_extract(tags, '$.StackEnv') = '{{ stack_env }}' +) t + +/*+ delete */ +DELETE FROM aws.ec2.eips +WHERE data__Identifier = '{{ eip_public_id }}|{{ eip_allocation_id}}' +AND region = '{{ region }}' diff --git a/examples/databricks/all-purpose-cluster/resources/aws_get_main_route_table_id.iql b/examples/databricks/all-purpose-cluster/resources/aws/vpc/get_main_route_table_id.iql similarity index 100% rename from examples/databricks/all-purpose-cluster/resources/aws_get_main_route_table_id.iql rename to examples/databricks/all-purpose-cluster/resources/aws/vpc/get_main_route_table_id.iql diff --git a/examples/databricks/all-purpose-cluster/resources/aws_vpc_inet_gateway.iql b/examples/databricks/all-purpose-cluster/resources/aws/vpc/inet_gateway.iql similarity index 100% rename from examples/databricks/all-purpose-cluster/resources/aws_vpc_inet_gateway.iql rename to examples/databricks/all-purpose-cluster/resources/aws/vpc/inet_gateway.iql diff --git a/examples/databricks/all-purpose-cluster/resources/aws_vpc_inet_gw_attachment.iql b/examples/databricks/all-purpose-cluster/resources/aws/vpc/inet_gw_attachment.iql similarity index 100% rename from examples/databricks/all-purpose-cluster/resources/aws_vpc_inet_gw_attachment.iql rename to examples/databricks/all-purpose-cluster/resources/aws/vpc/inet_gw_attachment.iql diff --git a/examples/databricks/all-purpose-cluster/resources/aws_vpc_inet_route.iql b/examples/databricks/all-purpose-cluster/resources/aws/vpc/inet_route.iql similarity index 100% rename from examples/databricks/all-purpose-cluster/resources/aws_vpc_inet_route.iql rename to examples/databricks/all-purpose-cluster/resources/aws/vpc/inet_route.iql diff --git a/examples/databricks/all-purpose-cluster/resources/aws/vpc/nat_gateway.iql b/examples/databricks/all-purpose-cluster/resources/aws/vpc/nat_gateway.iql new file mode 100644 index 0000000..27c7136 --- /dev/null +++ b/examples/databricks/all-purpose-cluster/resources/aws/vpc/nat_gateway.iql @@ -0,0 +1,53 @@ +/*+ exists */ +SELECT COUNT(*) as count FROM +( +SELECT nat_gateway_id, +json_group_object(tag_key, tag_value) as tags +FROM aws.ec2.nat_gateway_tags +WHERE region = '{{ region }}' +GROUP BY allocation_id +HAVING json_extract(tags, '$.Provisioner') = 'stackql' +AND json_extract(tags, '$.StackName') = '{{ stack_name }}' +AND json_extract(tags, '$.StackEnv') = '{{ stack_env }}' +) t + +/*+ create */ +INSERT INTO aws.ec2.nat_gateways ( + AllocationId, + SubnetId, + Tags, + region +) +SELECT + '{{ eip_allocation_id }}', + '{{ aws_vpc_subnet1_id }}', + '{{ tags }}', + '{{ region }}'; + +/*+ statecheck, retries=3, retry_delay=5 */ +SELECT COUNT(*) as count FROM +( +SELECT nat_gateway_id, +json_group_object(tag_key, tag_value) as tags +FROM aws.ec2.nat_gateway_tags +WHERE region = '{{ region }}' +GROUP BY allocation_id +HAVING json_extract(tags, '$.Provisioner') = 'stackql' +AND json_extract(tags, '$.StackName') = '{{ stack_name }}' +AND json_extract(tags, '$.StackEnv') = '{{ stack_env }}' +) t + +/*+ exports, retries=3, retry_delay=5 */ +SELECT nat_gateway_id, +json_group_object(tag_key, tag_value) as tags +FROM aws.ec2.nat_gateway_tags +WHERE region = '{{ region }}' +GROUP BY allocation_id +HAVING json_extract(tags, '$.Provisioner') = 'stackql' +AND json_extract(tags, '$.StackName') = '{{ stack_name }}' +AND json_extract(tags, '$.StackEnv') = '{{ stack_env }}' + +/*+ delete */ +DELETE FROM aws.ec2.nat_gateways +WHERE data__Identifier = '{{ nat_gateway_id }}' +AND region = '{{ region }}'; \ No newline at end of file diff --git a/examples/databricks/all-purpose-cluster/resources/aws_vpc_security_group.iql b/examples/databricks/all-purpose-cluster/resources/aws/vpc/security_group.iql similarity index 100% rename from examples/databricks/all-purpose-cluster/resources/aws_vpc_security_group.iql rename to examples/databricks/all-purpose-cluster/resources/aws/vpc/security_group.iql diff --git a/examples/databricks/all-purpose-cluster/resources/aws_vpc_security_group_rules.iql b/examples/databricks/all-purpose-cluster/resources/aws/vpc/security_group_rules.iql similarity index 100% rename from examples/databricks/all-purpose-cluster/resources/aws_vpc_security_group_rules.iql rename to examples/databricks/all-purpose-cluster/resources/aws/vpc/security_group_rules.iql diff --git a/examples/databricks/all-purpose-cluster/resources/aws_vpc_subnet.iql b/examples/databricks/all-purpose-cluster/resources/aws/vpc/subnet.iql similarity index 100% rename from examples/databricks/all-purpose-cluster/resources/aws_vpc_subnet.iql rename to examples/databricks/all-purpose-cluster/resources/aws/vpc/subnet.iql diff --git a/examples/databricks/all-purpose-cluster/resources/aws_vpc_subnet_rt_assn.iql b/examples/databricks/all-purpose-cluster/resources/aws/vpc/subnet_rt_assn.iql similarity index 100% rename from examples/databricks/all-purpose-cluster/resources/aws_vpc_subnet_rt_assn.iql rename to examples/databricks/all-purpose-cluster/resources/aws/vpc/subnet_rt_assn.iql diff --git a/examples/databricks/all-purpose-cluster/resources/aws_tag_main_vpc_route_table.iql b/examples/databricks/all-purpose-cluster/resources/aws/vpc/tag_main_vpc_route_table.iql similarity index 100% rename from examples/databricks/all-purpose-cluster/resources/aws_tag_main_vpc_route_table.iql rename to examples/databricks/all-purpose-cluster/resources/aws/vpc/tag_main_vpc_route_table.iql diff --git a/examples/databricks/all-purpose-cluster/resources/aws_vpc.iql b/examples/databricks/all-purpose-cluster/resources/aws/vpc/vpc.iql similarity index 100% rename from examples/databricks/all-purpose-cluster/resources/aws_vpc.iql rename to examples/databricks/all-purpose-cluster/resources/aws/vpc/vpc.iql diff --git a/examples/databricks/all-purpose-cluster/resources/databricks_credentials.iql b/examples/databricks/all-purpose-cluster/resources/databricks_account/credentials.iql similarity index 100% rename from examples/databricks/all-purpose-cluster/resources/databricks_credentials.iql rename to examples/databricks/all-purpose-cluster/resources/databricks_account/credentials.iql diff --git a/examples/databricks/all-purpose-cluster/resources/databricks_account/get_users.iql b/examples/databricks/all-purpose-cluster/resources/databricks_account/get_users.iql new file mode 100644 index 0000000..2a978d7 --- /dev/null +++ b/examples/databricks/all-purpose-cluster/resources/databricks_account/get_users.iql @@ -0,0 +1,6 @@ +/*+ exports, retries=3, retry_delay=5 */ +SELECT +JSON_GROUP_ARRAY(JSON_OBJECT('value', id)) as databricks_workspace_group_members +FROM databricks_account.iam.users +WHERE account_id = 'ebfcc5a9-9d49-4c93-b651-b3ee6cf1c9ce' +AND userName in {{ users | sql_list }}; \ No newline at end of file diff --git a/examples/databricks/all-purpose-cluster/resources/databricks_network.iql b/examples/databricks/all-purpose-cluster/resources/databricks_account/network.iql similarity index 100% rename from examples/databricks/all-purpose-cluster/resources/databricks_network.iql rename to examples/databricks/all-purpose-cluster/resources/databricks_account/network.iql diff --git a/examples/databricks/all-purpose-cluster/resources/databricks_storage_configuration.iql b/examples/databricks/all-purpose-cluster/resources/databricks_account/storage_configuration.iql similarity index 100% rename from examples/databricks/all-purpose-cluster/resources/databricks_storage_configuration.iql rename to examples/databricks/all-purpose-cluster/resources/databricks_account/storage_configuration.iql diff --git a/examples/databricks/all-purpose-cluster/resources/databricks_account/update_group_membership.iql b/examples/databricks/all-purpose-cluster/resources/databricks_account/update_group_membership.iql new file mode 100644 index 0000000..375d926 --- /dev/null +++ b/examples/databricks/all-purpose-cluster/resources/databricks_account/update_group_membership.iql @@ -0,0 +1,6 @@ +/*+ command */ +update databricks_account.iam.groups +set data__schemas = '["urn:ietf:params:scim:api:messages:2.0:PatchOp"]', +data__Operations = '[{"op": "replace", "path": "members", "value": {{ databricks_workspace_group_members }} }]' +WHERE account_id = '{{ databricks_account_id }}' +AND id = '{{ databricks_group_id }}'; diff --git a/examples/databricks/all-purpose-cluster/resources/databricks_workspace.iql b/examples/databricks/all-purpose-cluster/resources/databricks_account/workspace.iql similarity index 100% rename from examples/databricks/all-purpose-cluster/resources/databricks_workspace.iql rename to examples/databricks/all-purpose-cluster/resources/databricks_account/workspace.iql diff --git a/examples/databricks/all-purpose-cluster/resources/databricks_account/workspace_group.iql b/examples/databricks/all-purpose-cluster/resources/databricks_account/workspace_group.iql new file mode 100644 index 0000000..4d3494a --- /dev/null +++ b/examples/databricks/all-purpose-cluster/resources/databricks_account/workspace_group.iql @@ -0,0 +1,31 @@ +/*+ exists */ +SELECT COUNT(*) as count +FROM databricks_account.iam.groups +WHERE account_id = '{{ databricks_account_id }}' +AND displayName = '{{ display_name }}' + +/*+ create */ +INSERT INTO databricks_account.iam.groups ( +account_id, +data__displayName +) +SELECT +'{{ databricks_account_id }}', +'{{ display_name }}' + +/*+ statecheck, retries=3, retry_delay=5 */ +SELECT COUNT(*) as count +FROM databricks_account.iam.groups +WHERE account_id = '{{ databricks_account_id }}' +AND displayName = '{{ display_name }}' + +/*+ exports */ +SELECT id AS databricks_group_id +FROM databricks_account.iam.groups +WHERE account_id = '{{ databricks_account_id }}' +AND displayName = '{{ display_name }}' + +/*+ delete */ +DELETE FROM databricks_account.iam.groups +WHERE account_id = '{{ databricks_account_id }}' AND +id = '{{ databricks_group_id }}'; \ No newline at end of file diff --git a/examples/databricks/all-purpose-cluster/resources/databricks_account/workspace_permission_assignments.iql b/examples/databricks/all-purpose-cluster/resources/databricks_account/workspace_permission_assignments.iql new file mode 100644 index 0000000..00387e3 --- /dev/null +++ b/examples/databricks/all-purpose-cluster/resources/databricks_account/workspace_permission_assignments.iql @@ -0,0 +1,32 @@ +/*+ exists */ +SELECT COUNT(*) as count +FROM databricks_account.iam.workspace_permission_assignments +WHERE account_id = '{{ databricks_account_id }}' AND +workspace_id = '{{ databricks_workspace_id }}' +AND JSON_EXTRACT(principal, '$.principal_id') = {{ databricks_group_id }} + +/*+ createorupdate */ +INSERT INTO databricks_account.iam.workspace_permission_assignments ( +account_id, +principal_id, +workspace_id, +data__permissions +) +SELECT +'{{ databricks_account_id }}', +'{{ databricks_group_id }}', +'{{ databricks_workspace_id }}', +'["ADMIN"]' + +/*+ statecheck, retries=3, retry_delay=5 */ +SELECT COUNT(*) as count +FROM databricks_account.iam.workspace_permission_assignments +WHERE account_id = '{{ databricks_account_id }}' AND +workspace_id = '{{ databricks_workspace_id }}' +AND JSON_EXTRACT(principal, '$.principal_id') = {{ databricks_group_id }} + +/*+ delete */ +DELETE FROM databricks_account.iam.workspace_permission_assignments +WHERE account_id = '{{ databricks_account_id }}' AND +principal_id = '{{ databricks_group_id }}' AND +workspace_id = '{{ databricks_workspace_id }}' \ No newline at end of file diff --git a/examples/databricks/all-purpose-cluster/resources/databricks_workspace/all_purpose_cluster.iql b/examples/databricks/all-purpose-cluster/resources/databricks_workspace/all_purpose_cluster.iql new file mode 100644 index 0000000..44b3703 --- /dev/null +++ b/examples/databricks/all-purpose-cluster/resources/databricks_workspace/all_purpose_cluster.iql @@ -0,0 +1,52 @@ +/*+ exists */ +SELECT COUNT(*) as count +FROM databricks_workspace.compute.clusters +WHERE deployment_name = '{{ databricks_deployment_name }}' +AND cluster_name = '{{ cluster_name }}' + +/*+ create */ +INSERT INTO databricks_workspace.compute.clusters ( +deployment_name, +data__cluster_name, +data__num_workers, +data__is_single_node, +data__kind, +data__spark_version, +data__node_type_id, +data__data_security_mode, +data__runtime_engine, +data__single_user_name, +data__aws_attributes, +data__custom_tags +) +SELECT +'{{ databricks_deployment_name }}', +'{{ cluster_name }}', + {{ num_workers }}, + {{ is_single_node }}, +'{{ kind }}', +'{{ spark_version }}', +'{{ node_type_id }}', +'{{ data_security_mode }}', +'{{ runtime_engine }}', +'{{ single_user_name }}', +'{{ aws_attributes }}', +'{{ custom_tags }}' + +/*+ statecheck, retries=3, retry_delay=5 */ +SELECT COUNT(*) as count +FROM databricks_workspace.compute.clusters +WHERE deployment_name = '{{ databricks_deployment_name }}' +AND cluster_name = '{{ cluster_name }}' + +/*+ exports */ +SELECT cluster_id AS databricks_cluster_id, +state AS databricks_cluster_state +FROM databricks_workspace.compute.clusters +WHERE deployment_name = '{{ databricks_deployment_name }}' +AND cluster_name = '{{ cluster_name }}' + +/*+ delete */ +DELETE FROM databricks_workspace.compute.clusters +WHERE deployment_name = '{{ databricks_deployment_name }}' +AND cluster_id = '{{ databricks_cluster_id }}' diff --git a/examples/databricks/all-purpose-cluster/stackql_manifest.yml b/examples/databricks/all-purpose-cluster/stackql_manifest.yml index 4d1d463..1e6b99d 100644 --- a/examples/databricks/all-purpose-cluster/stackql_manifest.yml +++ b/examples/databricks/all-purpose-cluster/stackql_manifest.yml @@ -30,7 +30,7 @@ resources: # ==================================================================================== # AWS IAM # ==================================================================================== - - name: aws_iam_cross_account_role + - name: aws/iam/cross_account_role props: - name: role_name value: "{{ stack_name }}-{{ stack_env }}-role" @@ -137,7 +137,7 @@ resources: PolicyName: "{{ stack_name }}-{{ stack_env }}-policy" exports: - aws_iam_cross_account_role_arn - - name: databricks_credentials + - name: databricks_account/credentials props: - name: credentials_name value: "{{ stack_name }}-{{ stack_env }}-credentials" @@ -151,7 +151,7 @@ resources: # ==================================================================================== # AWS VPC Networking # ==================================================================================== - - name: aws_vpc + - name: aws/vpc/vpc props: - name: cidr_block values: @@ -171,11 +171,11 @@ resources: value: 019447a0-b84a-7b7f-bca5-2ee320207e51 exports: - vpc_id - - name: aws_get_main_route_table_id + - name: aws/vpc/get_main_route_table_id type: query exports: - route_table_id - - name: aws_tag_main_vpc_route_table + - name: aws/vpc/tag_main_vpc_route_table type: command props: - name: tags @@ -183,8 +183,8 @@ resources: - Key: Name Value: "{{ stack_name }}-{{ stack_env }}-route-table" merge: ['global_tags'] - - name: aws_vpc_subnet1 - file: aws_vpc_subnet.iql + - name: aws/vpc/subnet1 + file: aws/vpc/subnet.iql props: - name: availability_zone value: "us-east-1a" @@ -204,8 +204,8 @@ resources: - global_tags exports: - subnet_id: aws_vpc_subnet1_id - - name: aws_vpc_subnet2 - file: aws_vpc_subnet.iql + - name: aws/vpc/subnet2 + file: aws/vpc/subnet.iql props: - name: availability_zone value: "us-east-1b" @@ -225,7 +225,7 @@ resources: - global_tags exports: - subnet_id: aws_vpc_subnet2_id - - name: aws_vpc_inet_gateway + - name: aws/vpc/inet_gateway props: - name: tags value: @@ -236,10 +236,10 @@ resources: value: 019447a5-f076-75f8-9173-092df5a66d35 exports: - internet_gateway_id - - name: aws_vpc_inet_gw_attachment + - name: aws/vpc/inet_gw_attachment props: [] - - name: aws_vpc_subnet_rt_assn1 - file: aws_vpc_subnet_rt_assn.iql + - name: aws/vpc/subnet_rt_assn1 + file: aws/vpc/subnet_rt_assn.iql props: - name: subnet_id value: "{{ aws_vpc_subnet1_id }}" @@ -247,8 +247,8 @@ resources: value: 019447aa-1c7a-775b-91dc-04db7c49f4a7 exports: - route_table_assn_id: aws_vpc_subnet1_rt_assn_id - - name: aws_vpc_subnet_rt_assn2 - file: aws_vpc_subnet_rt_assn.iql + - name: aws/vpc/subnet_rt_assn2 + file: aws/vpc/subnet_rt_assn.iql props: - name: subnet_id value: "{{ aws_vpc_subnet2_id }}" @@ -256,11 +256,34 @@ resources: value: 019447ab-1302-754a-a580-99071f1ad814 exports: - route_table_assn_id: aws_vpc_subnet2_rt_assn_id - - name: aws_vpc_inet_route + - name: aws/vpc/inet_route props: [] exports: - inet_route_indentifer - - name: aws_vpc_security_group + - name: aws/vpc/elastic_ip + props: + - name: tags + value: + - Key: Name + Value: "{{ stack_name }}-{{ stack_env }}-eip" + merge: ['global_tags'] + - name: idempotency_token + value: 01945908-b80d-7e51-b52c-5e93dea9cbdb + exports: + - eip_allocation_id + - eip_public_id + - name: aws/vpc/nat_gateway + props: + - name: tags + value: + - Key: Name + Value: "{{ stack_name }}-{{ stack_env }}-nat-gateway" + merge: ['global_tags'] + - name: idempotency_token + value: 019447a5-f076-75f8-9173-092df5a66d35 + exports: + - nat_gateway_id + - name: aws/vpc/security_group props: - name: group_name value: "{{ stack_name }}-{{ stack_env }}-sg" @@ -273,7 +296,7 @@ resources: merge: ['global_tags'] exports: - security_group_id - - name: aws_vpc_security_group_rules + - name: aws/vpc/security_group_rules props: - name: security_group_ingress value: @@ -302,7 +325,7 @@ resources: FromPort: -1 ToPort: -1 IpProtocol: "-1" - - name: databricks_network + - name: databricks_account/network props: - name: databricks_network_name value: "{{ stack_name }}-{{ stack_env }}-network" @@ -318,7 +341,7 @@ resources: # ==================================================================================== # AWS Storage # ==================================================================================== - - name: aws_s3_workspace_bucket + - name: aws/s3/workspace_bucket props: - name: bucket_name value: "{{ stack_name }}-{{ stack_env }}-root-bucket" @@ -344,7 +367,7 @@ resources: exports: - aws_s3_workspace_bucket_name - aws_s3_workspace_bucket_arn - - name: aws_s3_workspace_bucket_policy + - name: aws/s3/workspace_bucket_policy props: - name: policy_document value: @@ -364,7 +387,7 @@ resources: Resource: - "{{ aws_s3_workspace_bucket_arn }}/*" - "{{ aws_s3_workspace_bucket_arn }}" - - name: databricks_storage_configuration + - name: databricks_account/storage_configuration props: - name: storage_configuration_name value: "{{ stack_name }}-{{ stack_env }}-storage" @@ -376,7 +399,7 @@ resources: # ==================================================================================== # DBX Workspace # ==================================================================================== - - name: databricks_workspace + - name: databricks_account/workspace props: - name: workspace_name value: "{{ stack_name }}-{{ stack_env }}-workspace" @@ -392,3 +415,64 @@ resources: value: PREMIUM exports: - databricks_workspace_id + - name: databricks_account/workspace_group + props: + - name: display_name + value: "{{ stack_name }}-{{ stack_env }}-workspace-admins" + exports: + - databricks_group_id + - name: databricks_account/get_users + type: query + props: + - name: users + value: + - "javen@stackql.io" + - "krimmer@stackql.io" + exports: + - databricks_workspace_group_members + - name: databricks_account/update_group_membership + type: command + props: [] + - name: databricks_account/workspace_permission_assignments + props: [] + - name: databricks_workspace/all_purpose_cluster + props: + - name: cluster_name + value: single-user-single-node-cluster + - name: num_workers + value: 0 + - name: is_single_node + value: true + - name: kind + value: CLASSIC_PREVIEW + - name: spark_version + value: 15.4.x-scala2.12 + - name: node_type_id + value: m7g.large + - name: data_security_mode + value: SINGLE_USER + - name: runtime_engine + value: PHOTON + - name: single_user_name + value: javen@stackql.io + - name: aws_attributes + value: + ebs_volume_count: 1 + ebs_volume_size: 100 + - name: custom_tags + description: Additional tags for cluster resources (max 45 tags) + value: + Provisioner: stackql + StackName: "{{ stack_name }}" + StackEnv: "{{ stack_env }}" + exports: + - databricks_cluster_id + - databricks_cluster_state + + # "spark_conf": { + # "spark.databricks.cluster.profile": "singleNode", + # "spark.master": "local[*, 4]" + # }, + # "spark_env_vars": { + # "PYSPARK_PYTHON": "/databricks/python3/bin/python3" + # }, \ No newline at end of file diff --git a/stackql_deploy/cli.py b/stackql_deploy/cli.py index be2b275..11794a8 100644 --- a/stackql_deploy/cli.py +++ b/stackql_deploy/cli.py @@ -1,3 +1,4 @@ +# cli.py import click import os import sys diff --git a/stackql_deploy/cmd/base.py b/stackql_deploy/cmd/base.py index 6b38893..fda4343 100644 --- a/stackql_deploy/cmd/base.py +++ b/stackql_deploy/cmd/base.py @@ -1,3 +1,4 @@ +# cmd/base.py from ..lib.utils import ( perform_retries, run_stackql_command, diff --git a/stackql_deploy/cmd/build.py b/stackql_deploy/cmd/build.py index 1851ce1..c374586 100644 --- a/stackql_deploy/cmd/build.py +++ b/stackql_deploy/cmd/build.py @@ -1,3 +1,4 @@ +# cmd/build.py import datetime from ..lib.utils import ( catch_error_and_exit, diff --git a/stackql_deploy/cmd/teardown.py b/stackql_deploy/cmd/teardown.py index 6aeda1c..600cc85 100644 --- a/stackql_deploy/cmd/teardown.py +++ b/stackql_deploy/cmd/teardown.py @@ -1,3 +1,4 @@ +# cmd/teardown.py import datetime from ..lib.utils import ( catch_error_and_exit, diff --git a/stackql_deploy/cmd/test.py b/stackql_deploy/cmd/test.py index 35d4b12..dbd19b0 100644 --- a/stackql_deploy/cmd/test.py +++ b/stackql_deploy/cmd/test.py @@ -1,3 +1,4 @@ +# cmd/test.py import datetime from ..lib.utils import ( catch_error_and_exit, diff --git a/stackql_deploy/lib/bootstrap.py b/stackql_deploy/lib/bootstrap.py index d1b79b9..3ace615 100644 --- a/stackql_deploy/lib/bootstrap.py +++ b/stackql_deploy/lib/bootstrap.py @@ -1,3 +1,4 @@ +# lib/bootstrap.py import logging # Set up logging at the root level diff --git a/stackql_deploy/lib/config.py b/stackql_deploy/lib/config.py index 22f0fab..c6087e6 100644 --- a/stackql_deploy/lib/config.py +++ b/stackql_deploy/lib/config.py @@ -1,3 +1,4 @@ +# lib/config.py import os import yaml import json @@ -92,6 +93,27 @@ def generate_patch_document(properties): return json.dumps(patch_doc) +def sql_list(input_data): + # If the input is already a string representation of a list, parse it + if isinstance(input_data, str): + try: + import json + # Parse the string as JSON array + python_list = json.loads(input_data) + except json.JSONDecodeError: + # If it's not valid JSON, treat it as a single item + python_list = [input_data] + else: + python_list = input_data + + # Handle empty list case + if not python_list: + return '(NULL)' + + # Convert each item to string, wrap in quotes, join with commas + quoted_items = [f"'{str(item)}'" for item in python_list] + return f"({','.join(quoted_items)})" + # END jinja filters def to_sql_compatible_json(value): @@ -282,6 +304,7 @@ def setup_environment(stack_dir, logger): env.filters['base64_encode'] = base64_encode env.filters['generate_patch_document'] = generate_patch_document env.filters['from_json'] = from_json + env.filters['sql_list'] = sql_list env.globals['uuid'] = lambda: str(uuid.uuid4()) logger.debug("custom Jinja filters registered: %s", env.filters.keys()) return env diff --git a/stackql_deploy/lib/templating.py b/stackql_deploy/lib/templating.py index cc73ca8..85d0efb 100644 --- a/stackql_deploy/lib/templating.py +++ b/stackql_deploy/lib/templating.py @@ -1,3 +1,4 @@ +# lib/templating.py import json import os from .utils import catch_error_and_exit diff --git a/stackql_deploy/lib/utils.py b/stackql_deploy/lib/utils.py index 59d041a..a1a1b06 100644 --- a/stackql_deploy/lib/utils.py +++ b/stackql_deploy/lib/utils.py @@ -1,3 +1,4 @@ +# lib/utils.py import time import json import sys From c6bc6ef3e767eefbd34c9465bd66428eb5896238 Mon Sep 17 00:00:00 2001 From: Jeffrey Aven Date: Sat, 26 Apr 2025 13:29:46 +1000 Subject: [PATCH 02/10] fixed databricks example --- .../{cross_account_role.iql => iam_role.iql} | 2 +- .../aws/vpc/get_main_route_table_id.iql | 2 +- .../resources/aws/vpc/nat_gateway.iql | 2 +- .../resources/aws/vpc/nat_inet_route.iql | 41 +++ .../resources/aws/vpc/route_table.iql | 54 ++++ .../aws/vpc/tag_main_vpc_route_table.iql | 2 +- .../resources/aws/vpc/vpc_endpoint.iql | 60 ++++ .../databricks_account/workspace.iql | 6 +- .../all-purpose-cluster/stackql_manifest.yml | 293 +++++++++++++++--- 9 files changed, 413 insertions(+), 49 deletions(-) rename examples/databricks/all-purpose-cluster/resources/aws/iam/{cross_account_role.iql => iam_role.iql} (93%) create mode 100644 examples/databricks/all-purpose-cluster/resources/aws/vpc/nat_inet_route.iql create mode 100644 examples/databricks/all-purpose-cluster/resources/aws/vpc/route_table.iql create mode 100644 examples/databricks/all-purpose-cluster/resources/aws/vpc/vpc_endpoint.iql diff --git a/examples/databricks/all-purpose-cluster/resources/aws/iam/cross_account_role.iql b/examples/databricks/all-purpose-cluster/resources/aws/iam/iam_role.iql similarity index 93% rename from examples/databricks/all-purpose-cluster/resources/aws/iam/cross_account_role.iql rename to examples/databricks/all-purpose-cluster/resources/aws/iam/iam_role.iql index f7e8750..ba2d140 100644 --- a/examples/databricks/all-purpose-cluster/resources/aws/iam/cross_account_role.iql +++ b/examples/databricks/all-purpose-cluster/resources/aws/iam/iam_role.iql @@ -49,7 +49,7 @@ AND path = '{{ path }}'; /*+ exports, retries=3, retry_delay=5 */ SELECT -arn as aws_iam_cross_account_role_arn +arn as aws_iam_role_arn FROM aws.iam.roles WHERE data__Identifier = '{{ role_name }}' diff --git a/examples/databricks/all-purpose-cluster/resources/aws/vpc/get_main_route_table_id.iql b/examples/databricks/all-purpose-cluster/resources/aws/vpc/get_main_route_table_id.iql index 72595ff..7679dd2 100644 --- a/examples/databricks/all-purpose-cluster/resources/aws/vpc/get_main_route_table_id.iql +++ b/examples/databricks/all-purpose-cluster/resources/aws/vpc/get_main_route_table_id.iql @@ -1,6 +1,6 @@ /*+ exports, retries=3, retry_delay=5 */ SELECT -route_table_id +route_table_id as main_route_table_id FROM aws.ec2.route_tables WHERE region = '{{ region }}' AND vpc_id = '{{ vpc_id }}'; \ No newline at end of file diff --git a/examples/databricks/all-purpose-cluster/resources/aws/vpc/nat_gateway.iql b/examples/databricks/all-purpose-cluster/resources/aws/vpc/nat_gateway.iql index 27c7136..081fbd2 100644 --- a/examples/databricks/all-purpose-cluster/resources/aws/vpc/nat_gateway.iql +++ b/examples/databricks/all-purpose-cluster/resources/aws/vpc/nat_gateway.iql @@ -20,7 +20,7 @@ INSERT INTO aws.ec2.nat_gateways ( ) SELECT '{{ eip_allocation_id }}', - '{{ aws_vpc_subnet1_id }}', + '{{ nat_subnet_id }}', '{{ tags }}', '{{ region }}'; diff --git a/examples/databricks/all-purpose-cluster/resources/aws/vpc/nat_inet_route.iql b/examples/databricks/all-purpose-cluster/resources/aws/vpc/nat_inet_route.iql new file mode 100644 index 0000000..9e750f6 --- /dev/null +++ b/examples/databricks/all-purpose-cluster/resources/aws/vpc/nat_inet_route.iql @@ -0,0 +1,41 @@ +/*+ exists */ +SELECT COUNT(*) as count FROM +( +SELECT data__Identifier +FROM aws.ec2.routes +WHERE region = '{{ region }}' +AND data__Identifier = '{{ route_table_id }}|0.0.0.0/0' +) t + +/*+ create */ +INSERT INTO aws.ec2.routes ( + DestinationCidrBlock, + NatGatewayId, + RouteTableId, + region +) +SELECT + '0.0.0.0/0', + '{{ nat_gateway_id }}', + '{{ route_table_id }}', + '{{ region }}'; + +/*+ statecheck, retries=5, retry_delay=5 */ +SELECT COUNT(*) as count FROM +( +SELECT data__Identifier +FROM aws.ec2.routes +WHERE region = '{{ region }}' +AND data__Identifier = '{{ route_table_id }}|0.0.0.0/0' +) t + +/*+ exports, retries=3, retry_delay=5 */ +SELECT data__Identifier as nat_inet_route_indentifer +FROM aws.ec2.routes +WHERE region = '{{ region }}' +AND data__Identifier = '{{ route_table_id }}|0.0.0.0/0'; + +/*+ delete */ +DELETE FROM aws.ec2.routes +WHERE data__Identifier = '{{ inet_route_indentifer }}' +AND region = '{{ region }}'; \ No newline at end of file diff --git a/examples/databricks/all-purpose-cluster/resources/aws/vpc/route_table.iql b/examples/databricks/all-purpose-cluster/resources/aws/vpc/route_table.iql new file mode 100644 index 0000000..7b0aa76 --- /dev/null +++ b/examples/databricks/all-purpose-cluster/resources/aws/vpc/route_table.iql @@ -0,0 +1,54 @@ +/*+ exists */ +SELECT COUNT(*) as count FROM +( +SELECT route_table_id, +json_group_object(tag_key, tag_value) as tags +FROM aws.ec2.route_table_tags +WHERE region = '{{ region }}' +GROUP BY route_table_id +HAVING json_extract(tags, '$.Provisioner') = 'stackql' +AND json_extract(tags, '$.StackName') = '{{ stack_name }}' +AND json_extract(tags, '$.StackEnv') = '{{ stack_env }}' +AND json_extract(tags, '$.Name') = '{{ route_table_name }}' +) t + +/*+ create */ +INSERT INTO aws.ec2.route_tables ( + VpcId, + Tags, + region +) +SELECT + '{{ vpc_id }}', + '{{ tags }}', + '{{ region }}'; + +/*+ statecheck, retries=3, retry_delay=5 */ +SELECT COUNT(*) as count FROM +( +SELECT route_table_id, +json_group_object(tag_key, tag_value) as tags +FROM aws.ec2.route_table_tags +WHERE region = '{{ region }}' +GROUP BY route_table_id +HAVING json_extract(tags, '$.Provisioner') = 'stackql' +AND json_extract(tags, '$.StackName') = '{{ stack_name }}' +AND json_extract(tags, '$.StackEnv') = '{{ stack_env }}' +AND json_extract(tags, '$.Name') = '{{ route_table_name }}' +) t + +/*+ exports, retries=3, retry_delay=5 */ +SELECT route_table_id, +json_group_object(tag_key, tag_value) as tags +FROM aws.ec2.route_table_tags +WHERE region = '{{ region }}' +GROUP BY route_table_id +HAVING json_extract(tags, '$.Provisioner') = 'stackql' +AND json_extract(tags, '$.StackName') = '{{ stack_name }}' +AND json_extract(tags, '$.StackEnv') = '{{ stack_env }}' +AND json_extract(tags, '$.Name') = '{{ route_table_name }}' + +/*+ delete */ +DELETE FROM aws.ec2.route_tables +WHERE data__Identifier = '{{ route_table_id }}' +AND region = '{{ region }}'; \ No newline at end of file diff --git a/examples/databricks/all-purpose-cluster/resources/aws/vpc/tag_main_vpc_route_table.iql b/examples/databricks/all-purpose-cluster/resources/aws/vpc/tag_main_vpc_route_table.iql index f307613..cc03c2a 100644 --- a/examples/databricks/all-purpose-cluster/resources/aws/vpc/tag_main_vpc_route_table.iql +++ b/examples/databricks/all-purpose-cluster/resources/aws/vpc/tag_main_vpc_route_table.iql @@ -4,4 +4,4 @@ set data__PatchDocument = string('{{ { "Tags": tags } | generate_patch_document }}') WHERE region = '{{ region }}' -AND data__Identifier = '{{ route_table_id }}'; \ No newline at end of file +AND data__Identifier = '{{ main_route_table_id }}'; \ No newline at end of file diff --git a/examples/databricks/all-purpose-cluster/resources/aws/vpc/vpc_endpoint.iql b/examples/databricks/all-purpose-cluster/resources/aws/vpc/vpc_endpoint.iql new file mode 100644 index 0000000..d40f522 --- /dev/null +++ b/examples/databricks/all-purpose-cluster/resources/aws/vpc/vpc_endpoint.iql @@ -0,0 +1,60 @@ +/*+ exists */ +SELECT COUNT(*) as count FROM +( + SELECT id, + json_group_object(tag_key, tag_value) as tags + FROM aws.ec2.vpc_endpoint_tags + WHERE region = '{{ region }}' + AND service_name = '{{ service_name }}' + GROUP BY id + HAVING json_extract(tags, '$.Provisioner') = 'stackql' + AND json_extract(tags, '$.StackName') = '{{ stack_name }}' + AND json_extract(tags, '$.StackEnv') = '{{ stack_env }}' +) t; + +/*+ create */ +INSERT INTO aws.ec2.vpc_endpoints ( + ServiceName, + VpcEndpointType, + VpcId, + RouteTableIds, + Tags, + region +) +SELECT + '{{ service_name }}', + '{{ vpc_endpoint_type }}', + '{{ vpc_id }}', + '{{ route_table_ids }}', + '{{ tags }}', + '{{ region }}'; + +/*+ statecheck, retries=5, retry_delay=5 */ +SELECT COUNT(*) as count FROM +( + SELECT id, + json_group_object(tag_key, tag_value) as tags + FROM aws.ec2.vpc_endpoint_tags + WHERE region = '{{ region }}' + AND service_name = '{{ service_name }}' + GROUP BY id + HAVING json_extract(tags, '$.Provisioner') = 'stackql' + AND json_extract(tags, '$.StackName') = '{{ stack_name }}' + AND json_extract(tags, '$.StackEnv') = '{{ stack_env }}' +) t; + +/*+ exports, retries=3, retry_delay=5 */ +SELECT id as s3_gateway_endpoint_id, +json_group_object(tag_key, tag_value) as tags +FROM aws.ec2.vpc_endpoint_tags +WHERE region = '{{ region }}' +AND service_name = '{{ service_name }}' +GROUP BY id +HAVING json_extract(tags, '$.Provisioner') = 'stackql' +AND json_extract(tags, '$.StackName') = '{{ stack_name }}' +AND json_extract(tags, '$.StackEnv') = '{{ stack_env }}'; + +/*+ delete */ +DELETE FROM aws.ec2.vpc_endpoints +WHERE data__Identifier = 's3_gateway_endpoint_id' +AND region = 'us-east-1'; \ No newline at end of file diff --git a/examples/databricks/all-purpose-cluster/resources/databricks_account/workspace.iql b/examples/databricks/all-purpose-cluster/resources/databricks_account/workspace.iql index 8ba84f7..9da2dea 100644 --- a/examples/databricks/all-purpose-cluster/resources/databricks_account/workspace.iql +++ b/examples/databricks/all-purpose-cluster/resources/databricks_account/workspace.iql @@ -8,7 +8,6 @@ AND workspace_name = '{{ workspace_name }}' INSERT INTO databricks_account.provisioning.workspaces ( account_id, data__workspace_name, -data__network_id, data__aws_region, data__credentials_id, data__storage_configuration_id, @@ -17,7 +16,6 @@ data__pricing_tier SELECT '{{ databricks_account_id }}', '{{ workspace_name }}', -'{{ network_id }}', '{{ aws_region }}', '{{ credentials_id }}', '{{ storage_configuration_id }}', @@ -28,14 +26,14 @@ SELECT COUNT(*) as count FROM databricks_account.provisioning.workspaces WHERE account_id = '{{ databricks_account_id }}' AND workspace_name = '{{ workspace_name }}' -AND network_id = '{{ network_id }}' AND aws_region = '{{ aws_region }}' AND credentials_id = '{{ credentials_id }}' AND storage_configuration_id = '{{ storage_configuration_id }}' AND pricing_tier = '{{ pricing_tier }}' /*+ exports */ -SELECT workspace_id AS databricks_workspace_id +SELECT workspace_id AS databricks_workspace_id, +deployment_name AS databricks_deployment_name FROM databricks_account.provisioning.workspaces WHERE account_id = '{{ databricks_account_id }}' AND workspace_name = '{{ workspace_name }}' diff --git a/examples/databricks/all-purpose-cluster/stackql_manifest.yml b/examples/databricks/all-purpose-cluster/stackql_manifest.yml index 1e6b99d..7a6a4bd 100644 --- a/examples/databricks/all-purpose-cluster/stackql_manifest.yml +++ b/examples/databricks/all-purpose-cluster/stackql_manifest.yml @@ -31,6 +31,7 @@ resources: # AWS IAM # ==================================================================================== - name: aws/iam/cross_account_role + file: aws/iam/iam_role.iql props: - name: role_name value: "{{ stack_name }}-{{ stack_env }}-role" @@ -136,7 +137,7 @@ resources: Version: '2012-10-17' PolicyName: "{{ stack_name }}-{{ stack_env }}-policy" exports: - - aws_iam_cross_account_role_arn + - aws_iam_role_arn: aws_iam_cross_account_role_arn - name: databricks_account/credentials props: - name: credentials_name @@ -148,6 +149,127 @@ resources: exports: - databricks_credentials_id - databricks_role_external_id + - name: aws/iam/databricks_compute_role + file: aws/iam/iam_role.iql + props: + - name: role_name + value: "{{ stack_name }}-{{ stack_env }}-compute-role" + - name: assume_role_policy_document + value: + Version: "2012-10-17" + Statement: + - Action: "sts:AssumeRole" + Effect: "Allow" + Principal: + AWS: "{{ 'arn:aws:iam::314146311478:root' if trustInternalAccount == 'true' else 'arn:aws:iam::414351767826:root' }}" + Condition: + StringEquals: + sts:ExternalId: "{{ databricks_account_id }}" + - name: description + value: 'allows Databricks to access compute resources in ({{ stack_name }}-{{ stack_env }})' + - name: path + value: '/' + - name: policies + value: + - PolicyName: "Base" + PolicyDocument: + Version: "2012-10-17" + Statement: + - Sid: "CreateEC2ResourcesWithRequestTag" + Effect: "Allow" + Action: + - "ec2:CreateFleet" + - "ec2:CreateLaunchTemplate" + - "ec2:CreateVolume" + - "ec2:RequestSpotInstances" + - "ec2:RunInstances" + Resource: ["*"] + Condition: + StringEquals: + aws:RequestTag/Vendor: "Databricks" + - Sid: "AllowDatabricksTagOnCreate" + Effect: "Allow" + Action: ["ec2:CreateTags"] + Resource: ["*"] + Condition: + StringEquals: + ec2:CreateAction: + - "CreateFleet" + - "CreateLaunchTemplate" + - "CreateVolume" + - "RequestSpotInstances" + - "RunInstances" + - Sid: "UpdateByResourceTags" + Effect: "Allow" + Action: + - "ec2:AssignPrivateIpAddresses" + - "ec2:AssociateIamInstanceProfile" + - "ec2:AttachVolume" + - "ec2:AuthorizeSecurityGroupEgress" + - "ec2:AuthorizeSecurityGroupIngress" + - "ec2:CancelSpotInstanceRequests" + - "ec2:CreateFleet" + - "ec2:CreateLaunchTemplate" + - "ec2:CreateLaunchTemplateVersion" + - "ec2:CreateVolume" + - "ec2:DetachVolume" + - "ec2:DisassociateIamInstanceProfile" + - "ec2:ModifyFleet" + - "ec2:ModifyLaunchTemplate" + - "ec2:RequestSpotInstances" + - "ec2:RevokeSecurityGroupEgress" + - "ec2:RevokeSecurityGroupIngress" + - "ec2:RunInstances" + Resource: ["*"] + Condition: + StringEquals: + ec2:ResourceTag/Vendor: "Databricks" + - Sid: "GetByResourceTags" + Effect: "Allow" + Action: ["ec2:GetLaunchTemplateData"] + Resource: ["*"] + Condition: + StringEquals: + ec2:ResourceTag/Vendor: "Databricks" + - Sid: "DeleteByResourceTags" + Effect: "Allow" + Action: + - "ec2:DeleteFleets" + - "ec2:DeleteLaunchTemplate" + - "ec2:DeleteLaunchTemplateVersions" + - "ec2:DeleteTags" + - "ec2:DeleteVolume" + - "ec2:TerminateInstances" + Resource: ["*"] + Condition: + StringEquals: + ec2:ResourceTag/Vendor: "Databricks" + - Sid: "DescribeResources" + Effect: "Allow" + Action: + - "ec2:DescribeAvailabilityZones" + - "ec2:DescribeFleets" + - "ec2:DescribeIamInstanceProfileAssociations" + - "ec2:DescribeInstances" + - "ec2:DescribeInstanceStatus" + - "ec2:DescribeInternetGateways" + - "ec2:DescribeLaunchTemplates" + - "ec2:DescribeLaunchTemplateVersions" + - "ec2:DescribeNatGateways" + - "ec2:DescribeNetworkAcls" + - "ec2:DescribePrefixLists" + - "ec2:DescribeReservedInstancesOfferings" + - "ec2:DescribeRouteTables" + - "ec2:DescribeSecurityGroups" + - "ec2:DescribeSpotInstanceRequests" + - "ec2:DescribeSpotPriceHistory" + - "ec2:DescribeSubnets" + - "ec2:DescribeVolumes" + - "ec2:DescribeVpcs" + - "ec2:GetSpotPlacementScores" + Resource: ["*"] + exports: + - aws_iam_role_arn: databricks_compute_role_arn # ==================================================================================== # AWS VPC Networking # ==================================================================================== @@ -156,7 +278,7 @@ resources: - name: cidr_block values: prd: - value: "10.0.0.0/16" + value: "10.53.0.0/16" sit: value: "10.1.0.0/16" dev: @@ -171,27 +293,36 @@ resources: value: 019447a0-b84a-7b7f-bca5-2ee320207e51 exports: - vpc_id - - name: aws/vpc/get_main_route_table_id - type: query - exports: - - route_table_id - - name: aws/vpc/tag_main_vpc_route_table - type: command + - name: aws/vpc/nat_subnet + file: aws/vpc/subnet.iql props: + - name: availability_zone + value: "us-east-1a" + - name: cidr_block + values: + prd: + value: "10.53.0.0/24" + sit: + value: "10.1.0.0/19" + dev: + value: "10.2.0.0/19" - name: tags value: - Key: Name - Value: "{{ stack_name }}-{{ stack_env }}-route-table" - merge: ['global_tags'] - - name: aws/vpc/subnet1 + Value: "{{ stack_name }}-{{ stack_env }}-nat-subnet" + merge: + - global_tags + exports: + - subnet_id: nat_subnet_id + - name: aws/vpc/cluster_subnet1 file: aws/vpc/subnet.iql props: - name: availability_zone - value: "us-east-1a" + value: "us-east-1b" - name: cidr_block values: prd: - value: "10.0.0.0/19" + value: "10.53.160.0/19" sit: value: "10.1.0.0/19" dev: @@ -203,16 +334,16 @@ resources: merge: - global_tags exports: - - subnet_id: aws_vpc_subnet1_id - - name: aws/vpc/subnet2 + - subnet_id: cluster_subnet1_id + - name: aws/vpc/cluster_subnet2 file: aws/vpc/subnet.iql props: - name: availability_zone - value: "us-east-1b" + value: "us-east-1c" - name: cidr_block values: prd: - value: "10.0.32.0/19" + value: "10.53.192.0/19" sit: value: "10.1.32.0/19" dev: @@ -224,7 +355,7 @@ resources: merge: - global_tags exports: - - subnet_id: aws_vpc_subnet2_id + - subnet_id: cluster_subnet2_id - name: aws/vpc/inet_gateway props: - name: tags @@ -238,28 +369,70 @@ resources: - internet_gateway_id - name: aws/vpc/inet_gw_attachment props: [] + - name: aws/vpc/nat_route_table + file: aws/vpc/route_table.iql + props: + - name: route_table_name + value: "{{ stack_name }}-{{ stack_env }}-nat-route-table" + - name: tags + value: + - Key: Name + Value: "{{ stack_name }}-{{ stack_env }}-nat-route-table" + merge: ['global_tags'] + exports: + - route_table_id: nat_route_table_id + - name: aws/vpc/nat_route_to_inet + file: aws/vpc/inet_route.iql + props: + - name: route_table_id + value: "{{ nat_route_table_id }}" + exports: + - inet_route_indentifer: nat_inet_route_indentifer + - name: aws/vpc/nat_subnet_rt_assn + file: aws/vpc/subnet_rt_assn.iql + props: + - name: subnet_id + value: "{{ nat_subnet_id }}" + - name: route_table_id + value: "{{ nat_route_table_id }}" + - name: idempotency_token + value: 3eaf3040-1c8e-41a6-8be6-512ccaf5ff4e + exports: + - route_table_assn_id: nat_subnet_rt_assn_id + - name: aws/vpc/private_route_table + file: aws/vpc/route_table.iql + props: + - name: route_table_name + value: "{{ stack_name }}-{{ stack_env }}-private-route-table" + - name: tags + value: + - Key: Name + Value: "{{ stack_name }}-{{ stack_env }}-private-route-table" + merge: ['global_tags'] + exports: + - route_table_id: private_route_table_id - name: aws/vpc/subnet_rt_assn1 file: aws/vpc/subnet_rt_assn.iql props: + - name: route_table_id + value: "{{ private_route_table_id }}" - name: subnet_id - value: "{{ aws_vpc_subnet1_id }}" + value: "{{ cluster_subnet1_id }}" - name: idempotency_token value: 019447aa-1c7a-775b-91dc-04db7c49f4a7 exports: - - route_table_assn_id: aws_vpc_subnet1_rt_assn_id + - route_table_assn_id: cluster_subnet1_rt_assn_id - name: aws/vpc/subnet_rt_assn2 file: aws/vpc/subnet_rt_assn.iql props: + - name: route_table_id + value: "{{ private_route_table_id }}" - name: subnet_id - value: "{{ aws_vpc_subnet2_id }}" + value: "{{ cluster_subnet2_id }}" - name: idempotency_token - value: 019447ab-1302-754a-a580-99071f1ad814 - exports: - - route_table_assn_id: aws_vpc_subnet2_rt_assn_id - - name: aws/vpc/inet_route - props: [] + value: c19c9077-c25d-46a4-a299-7bd93d773e58 exports: - - inet_route_indentifer + - route_table_assn_id: cluster_subnet2_rt_assn_id - name: aws/vpc/elastic_ip props: - name: tags @@ -283,6 +456,14 @@ resources: value: 019447a5-f076-75f8-9173-092df5a66d35 exports: - nat_gateway_id + - name: aws/vpc/nat_inet_route + props: + - name: route_table_id + value: "{{ private_route_table_id }}" + - name: nat_gateway_id + value: "{{ nat_gateway_id }}" + exports: + - nat_inet_route_indentifer - name: aws/vpc/security_group props: - name: group_name @@ -300,15 +481,15 @@ resources: props: - name: security_group_ingress value: - - FromPort: 1025 + - FromPort: 0 ToPort: 65535 SourceSecurityGroupOwnerId: "{{ aws_account }}" IpProtocol: tcp SourceSecurityGroupId: "{{ security_group_id }}" - - FromPort: 1025 + - FromPort: 0 ToPort: 65535 SourceSecurityGroupOwnerId: "{{ aws_account }}" - IpProtocol: udp + IpProtocol: "udp" SourceSecurityGroupId: "{{ security_group_id }}" - CidrIp: "3.237.73.224/28" FromPort: 443 @@ -320,19 +501,39 @@ resources: IpProtocol: "tcp" - name: security_group_egress value: + - FromPort: 0 + ToPort: 65535 + IpProtocol: "tcp" + DestinationSecurityGroupId: "{{ security_group_id }}" + Description: "Allow all TCP outbound access to the same security group" - CidrIp: "0.0.0.0/0" Description: Allow all outbound traffic FromPort: -1 ToPort: -1 IpProtocol: "-1" + - CidrIp: "0.0.0.0/0" + FromPort: 3306 + ToPort: 3306 + IpProtocol: "tcp" + Description: "Allow accessing the Databricks metastore" + - FromPort: 0 + ToPort: 65535 + IpProtocol: "udp" + DestinationSecurityGroupId: "{{ security_group_id }}" + Description: "Allow all UDP outbound access to the same security group" + - CidrIp: "0.0.0.0/0" + FromPort: 443 + ToPort: 443 + IpProtocol: "tcp" + Description: "Allow accessing Databricks infrastructure, cloud data sources, and library repositories" - name: databricks_account/network props: - name: databricks_network_name value: "{{ stack_name }}-{{ stack_env }}-network" - name: subnet_ids value: - - "{{ aws_vpc_subnet1_id }}" - - "{{ aws_vpc_subnet2_id }}" + - "{{ cluster_subnet1_id }}" + - "{{ cluster_subnet2_id }}" - name: security_group_ids value: - "{{ security_group_id }}" @@ -387,6 +588,23 @@ resources: Resource: - "{{ aws_s3_workspace_bucket_arn }}/*" - "{{ aws_s3_workspace_bucket_arn }}" + - name: aws/vpc/vpc_endpoint + props: + - name: service_name + value: "com.amazonaws.{{ region }}.s3" + - name: vpc_endpoint_type + value: "Gateway" + - name: route_table_ids + value: + - "{{ private_route_table_id }}" + - name: tags + value: + - Key: Name + Value: "{{ stack_name }}-{{ stack_env }}-s3-vpc-endpoint" + merge: + - global_tags + exports: + - s3_gateway_endpoint_id - name: databricks_account/storage_configuration props: - name: storage_configuration_name @@ -414,7 +632,8 @@ resources: - name: pricing_tier value: PREMIUM exports: - - databricks_workspace_id + - databricks_workspace_id + - databricks_deployment_name - name: databricks_account/workspace_group props: - name: display_name @@ -468,11 +687,3 @@ resources: exports: - databricks_cluster_id - databricks_cluster_state - - # "spark_conf": { - # "spark.databricks.cluster.profile": "singleNode", - # "spark.master": "local[*, 4]" - # }, - # "spark_env_vars": { - # "PYSPARK_PYTHON": "/databricks/python3/bin/python3" - # }, \ No newline at end of file From 50493251bad09a6d4540e40461ba8fe6fac46d60 Mon Sep 17 00:00:00 2001 From: Jeffrey Aven Date: Tue, 24 Jun 2025 16:33:23 +1000 Subject: [PATCH 03/10] updates --- .gitignore | 3 +- CHANGELOG.md | 7 +- .../all-purpose-cluster/stackql_manifest.yml | 333 +++++++++++++++++ examples/snowflake/entitlements/README.md | 63 ++++ .../entitlements/resources/databases.iql | 83 +++++ .../entitlements/resources/grants.iql | 23 ++ .../resources/masking_policies.iql | 20 ++ .../entitlements/resources/roles.iql | 21 ++ .../entitlements/resources/schemas.iql | 87 +++++ .../entitlements/resources/statements.iql | 17 + .../entitlements/resources/tables.iql | 49 +++ .../entitlements/resources/warehouses.iql | 33 ++ .../entitlements/stackql_manifest.yml | 337 ++++++++++++++++++ get-contributors.iql | 10 + get-contributors.sh | 1 + setup.py | 2 +- stackql_deploy/__init__.py | 2 +- stackql_deploy/cli.py | 30 ++ stackql_deploy/cmd/base.py | 3 +- stackql_deploy/inc/contributors.csv | 23 ++ stackql_deploy/lib/config.py | 240 ++++++------- stackql_deploy/lib/filters.py | 131 +++++++ start-stackql-server.sh | 9 + stop-stackql-server.sh | 12 + 24 files changed, 1400 insertions(+), 139 deletions(-) create mode 100644 examples/snowflake/entitlements/README.md create mode 100644 examples/snowflake/entitlements/resources/databases.iql create mode 100644 examples/snowflake/entitlements/resources/grants.iql create mode 100644 examples/snowflake/entitlements/resources/masking_policies.iql create mode 100644 examples/snowflake/entitlements/resources/roles.iql create mode 100644 examples/snowflake/entitlements/resources/schemas.iql create mode 100644 examples/snowflake/entitlements/resources/statements.iql create mode 100644 examples/snowflake/entitlements/resources/tables.iql create mode 100644 examples/snowflake/entitlements/resources/warehouses.iql create mode 100644 examples/snowflake/entitlements/stackql_manifest.yml create mode 100644 get-contributors.iql create mode 100644 get-contributors.sh create mode 100644 stackql_deploy/inc/contributors.csv create mode 100644 stackql_deploy/lib/filters.py create mode 100644 start-stackql-server.sh create mode 100644 stop-stackql-server.sh diff --git a/.gitignore b/.gitignore index 1dce1b0..c87aec8 100644 --- a/.gitignore +++ b/.gitignore @@ -12,6 +12,7 @@ testcreds/ *.log venv/ .venv/ +nohup.out # Byte-compiled / optimized / DLL files __pycache__/ @@ -87,4 +88,4 @@ docs/_build/ venv/ .DS_Store -myenv/ +myenv/ diff --git a/CHANGELOG.md b/CHANGELOG.md index be70b7a..5febd97 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,9 +1,14 @@ # Changelog +## 1.8.5 (2025-06-30) + +- Added support for resource scoped variables +- Added developer credits in `info` + ## 1.8.3 (2025-02-08) - Added walkthrough for databricks bootstrap on aws. -- Bugfix for expport variables on dry run. +- Bugfix for export variables on dry run. ## 1.8.2 (2025-01-16) diff --git a/examples/databricks/all-purpose-cluster/stackql_manifest.yml b/examples/databricks/all-purpose-cluster/stackql_manifest.yml index 7a6a4bd..bb26561 100644 --- a/examples/databricks/all-purpose-cluster/stackql_manifest.yml +++ b/examples/databricks/all-purpose-cluster/stackql_manifest.yml @@ -270,6 +270,339 @@ resources: Resource: ["*"] exports: - aws_iam_role_arn: databricks_compute_role_arn +# ==================================================================================== +# UC Metastore with KMS Encryption +# ==================================================================================== + - name: aws/kms/metastore_key + props: + - name: description + value: "KMS key for {{ stack_name }}-{{ stack_env }} Unity Catalog metastore encryption" + - name: key_policy + value: + Version: "2012-10-17" + Statement: + - Sid: "Enable IAM User Permissions" + Effect: "Allow" + Principal: + AWS: "arn:aws:iam::{{ aws_account }}:root" + Action: "kms:*" + Resource: "*" + - Sid: "Allow Metastore Role to Use Key" + Effect: "Allow" + Principal: + AWS: "arn:aws:iam::{{ aws_account }}:role/{{ stack_name }}-{{ stack_env }}-metastore-role" + Action: + - "kms:Decrypt" + - "kms:Encrypt" + - "kms:GenerateDataKey" + - "kms:DescribeKey" + - "kms:CreateGrant" + - "kms:RetireGrant" + Resource: "*" + - Sid: "Allow Databricks to Use Key" + Effect: "Allow" + Principal: + AWS: "arn:aws:iam::{{ databricks_aws_account_id }}:root" + Action: + - "kms:Decrypt" + - "kms:GenerateDataKey" + - "kms:DescribeKey" + Resource: "*" + Condition: + StringEquals: + "kms:ViaService": "s3.{{ region }}.amazonaws.com" + - name: tags + value: + - Key: Purpose + Value: "UC Metastore Encryption" + merge: + - global_tags + exports: + - key_id: metastore_kms_key_id + - key_arn: metastore_kms_key_arn + + - name: aws/kms/metastore_key_alias + props: + - name: alias_name + value: "alias/{{ stack_name }}-{{ stack_env }}-metastore" + - name: target_key_id + value: "{{ metastore_kms_key_id }}" + + - name: aws/s3/metastore_bucket + props: + - name: bucket_name + value: "{{ stack_name }}-{{ stack_env }}-metastore" + - name: ownership_controls + value: + Rules: + - ObjectOwnership: "BucketOwnerPreferred" + - name: bucket_encryption + value: + ServerSideEncryptionConfiguration: + - BucketKeyEnabled: true + ServerSideEncryptionByDefault: + SSEAlgorithm: "aws:kms" + KMSMasterKeyID: "{{ metastore_kms_key_arn }}" + - name: public_access_block_configuration + value: + BlockPublicAcls: true + IgnorePublicAcls: true + BlockPublicPolicy: true + RestrictPublicBuckets: true + - name: versioning_configuration + value: + Status: "Enabled" + - name: lifecycle_configuration + value: + Rules: + - Id: "DeleteOldVersions" + Status: "Enabled" + NoncurrentVersionExpiration: + NoncurrentDays: 30 + AbortIncompleteMultipartUpload: + DaysAfterInitiation: 7 + - name: logging_configuration + value: + TargetBucket: "{{ stack_name }}-{{ stack_env }}-logs" + TargetPrefix: "s3-access-logs/metastore/" + - name: tags + value: + - Key: Purpose + Value: "Unity Catalog Metastore" + - Key: DataClassification + Value: "Metadata" + merge: + - global_tags + exports: + - bucket_name: aws_s3_metastore_bucket_name + - bucket_arn: aws_s3_metastore_bucket_arn + + - name: aws/iam/metastore_access_role + file: aws/iam/iam_role.iql + props: + - name: role_name + value: "{{ stack_name }}-{{ stack_env }}-metastore-role" + - name: assume_role_policy_document + value: + Version: "2012-10-17" + Statement: + - Effect: "Allow" + Principal: + AWS: + - "arn:aws:iam::414351767826:role/unity-catalog-prod-UCMasterRole-14S5ZJVKOTYTL" + Action: "sts:AssumeRole" + Condition: + StringEquals: + sts:ExternalId: "0000" # Placeholder + - name: description + value: 'Unity Catalog metastore access role for ({{ stack_name }}-{{ stack_env }})' + - name: path + value: '/' + - name: policies + value: + - PolicyName: "MetastoreS3Access" + PolicyDocument: + Version: "2012-10-17" + Statement: + - Sid: "S3MetastoreBucketAccess" + Effect: "Allow" + Action: + - "s3:GetObject" + - "s3:PutObject" + - "s3:DeleteObject" + - "s3:ListBucket" + - "s3:GetBucketLocation" + - "s3:GetLifecycleConfiguration" + - "s3:PutLifecycleConfiguration" + - "s3:ListBucketMultipartUploads" + - "s3:ListMultipartUploadParts" + - "s3:AbortMultipartUpload" + Resource: + - "{{ aws_s3_metastore_bucket_arn }}/*" + - "{{ aws_s3_metastore_bucket_arn }}" + - Sid: "AssumeRoleSelfTrust" + Effect: "Allow" + Action: ["sts:AssumeRole"] + Resource: ["arn:aws:iam::{{ aws_account }}:role/{{ stack_name }}-{{ stack_env }}-metastore-role"] + - PolicyName: "MetastoreKMSAccess" + PolicyDocument: + Version: "2012-10-17" + Statement: + - Sid: "KMSKeyAccess" + Effect: "Allow" + Action: + - "kms:Decrypt" + - "kms:Encrypt" + - "kms:GenerateDataKey" + - "kms:DescribeKey" + - "kms:CreateGrant" + - "kms:RetireGrant" + Resource: + - "{{ metastore_kms_key_arn }}" + Condition: + StringEquals: + "kms:ViaService": "s3.{{ region }}.amazonaws.com" + - PolicyName: "MetastoreFileEvents" + PolicyDocument: + Version: "2012-10-17" + Statement: + - Sid: "ManagedFileEventsSetupStatement" + Effect: "Allow" + Action: + - "s3:GetBucketNotification" + - "s3:PutBucketNotification" + - "sns:ListSubscriptionsByTopic" + - "sns:GetTopicAttributes" + - "sns:SetTopicAttributes" + - "sns:CreateTopic" + - "sns:TagResource" + - "sns:Publish" + - "sns:Subscribe" + - "sqs:CreateQueue" + - "sqs:DeleteMessage" + - "sqs:ReceiveMessage" + - "sqs:SendMessage" + - "sqs:GetQueueUrl" + - "sqs:GetQueueAttributes" + - "sqs:SetQueueAttributes" + - "sqs:TagQueue" + - "sqs:ChangeMessageVisibility" + - "sqs:PurgeQueue" + Resource: + - "{{ aws_s3_metastore_bucket_arn }}" + - "arn:aws:sqs:{{ region }}:{{ aws_account }}:csms-*" + - "arn:aws:sns:{{ region }}:{{ aws_account }}:csms-*" + - Sid: "ManagedFileEventsListStatement" + Effect: "Allow" + Action: ["sqs:ListQueues", "sqs:ListQueueTags", "sns:ListTopics"] + Resource: "*" + - Sid: "ManagedFileEventsTeardownStatement" + Effect: "Allow" + Action: ["sns:Unsubscribe", "sns:DeleteTopic", "sqs:DeleteQueue"] + Resource: + - "arn:aws:sqs:{{ region }}:{{ aws_account }}:csms-*" + - "arn:aws:sns:{{ region }}:{{ aws_account }}:csms-*" + - name: tags + value: + - Key: Purpose + Value: "Unity Catalog Storage Credential" + merge: + - global_tags + exports: + - aws_iam_role_arn: metastore_access_role_arn + + - name: databricks_account/metastore + props: + - name: name + value: "{{ stack_name }}-{{ stack_env }}-metastore" + - name: storage_root + value: "s3://{{ aws_s3_metastore_bucket_name }}" + - name: region + value: "{{ region }}" + exports: + - metastore_id: databricks_metastore_id + + - name: databricks_account/uc_storage_credentials + props: + - name: metastore_id + value: "{{ databricks_metastore_id }}" + - name: credential_info + value: + name: "{{ stack_name }}-{{ stack_env }}-storage-credential" + comment: "Storage credential for {{ stack_name }} {{ stack_env }} metastore S3 access" + read_only: false + aws_iam_role: + role_arn: "{{ metastore_access_role_arn }}" + skip_validation: false + exports: + - credential_id: storage_credential_id + - external_id: storage_credential_external_id + + - name: aws/iam/update_metastore_role_trust_policy + type: command + props: + - name: role_name + value: "{{ stack_name }}-{{ stack_env }}-metastore-role" + - name: assume_role_policy_document + value: + Version: "2012-10-17" + Statement: + - Effect: "Allow" + Principal: + AWS: + - "arn:aws:iam::414351767826:role/unity-catalog-prod-UCMasterRole-14S5ZJVKOTYTL" + - "arn:aws:iam::{{ aws_account }}:role/{{ stack_name }}-{{ stack_env }}-metastore-role" + Action: "sts:AssumeRole" + Condition: + StringEquals: + sts:ExternalId: "{{ storage_credential_external_id }}" + + - name: databricks_account/validate_storage_credential + type: command + props: + - name: credential_id + value: "{{ storage_credential_id }}" + - name: metastore_id + value: "{{ databricks_metastore_id }}" + + - name: databricks_account/external_location + props: + - name: metastore_id + value: "{{ databricks_metastore_id }}" + - name: name + value: "{{ stack_name }}-{{ stack_env }}-metastore-location" + - name: url + value: "s3://{{ aws_s3_metastore_bucket_name }}/" + - name: credential_name + value: "{{ stack_name }}-{{ stack_env }}-storage-credential" + - name: comment + value: "External location for {{ stack_name }} {{ stack_env }} metastore root" + exports: + - external_location_id + + - name: databricks_account/catalog + props: + - name: metastore_id + value: "{{ databricks_metastore_id }}" + - name: name + value: "{{ stack_name }}_{{ stack_env }}" + - name: comment + value: "Main catalog for {{ stack_name }} {{ stack_env }} environment" + - name: storage_root + value: "s3://{{ aws_s3_metastore_bucket_name }}/catalogs/{{ stack_name }}_{{ stack_env }}" + exports: + - catalog_id + + - name: databricks_account/metastore_assignment + props: + - name: workspace_id + value: "{{ databricks_workspace_id }}" + - name: metastore_id + value: "{{ databricks_metastore_id }}" + - name: default_catalog_name + value: "{{ stack_name }}_{{ stack_env }}" + + - name: databricks_account/catalog_workspace_binding + props: + - name: catalog_name + value: "{{ stack_name }}_{{ stack_env }}" + - name: workspace_id + value: "{{ databricks_workspace_id }}" + + - name: databricks_account/catalog_permissions + props: + - name: catalog_name + value: "{{ stack_name }}_{{ stack_env }}" + - name: principal + value: "{{ databricks_group_id }}" + - name: privileges + value: + - "USE_CATALOG" + - "CREATE_SCHEMA" + - "CREATE_TABLE" + - "CREATE_FUNCTION" + + # ==================================================================================== # AWS VPC Networking # ==================================================================================== diff --git a/examples/snowflake/entitlements/README.md b/examples/snowflake/entitlements/README.md new file mode 100644 index 0000000..78215d4 --- /dev/null +++ b/examples/snowflake/entitlements/README.md @@ -0,0 +1,63 @@ +# `stackql-deploy` starter project for `snowflake` + +> for starter projects using other providers, try `stackql-deploy examples/snowflake/entitlements --provider=aws` or `stackql-deploy examples/snowflake/entitlements --provider=google` + +see the following links for more information on `stackql`, `stackql-deploy` and the `snowflake` provider: + +- [`snowflake` provider docs](https://stackql.io/registry/snowflake) +- [`stackql`](https://github.com/stackql/stackql) +- [`stackql-deploy` PyPI home page](https://pypi.org/project/stackql-deploy/) +- [`stackql-deploy` GitHub repo](https://github.com/stackql/stackql-deploy) + +## Overview + +__`stackql-deploy`__ is a stateless, declarative, SQL driven Infrastructure-as-Code (IaC) framework. There is no state file required as the current state is assessed for each resource at runtime. __`stackql-deploy`__ is capable of provisioning, deprovisioning and testing a stack which can include resources across different providers, like a stack spanning `azure` and `aws` for example. + +## Prerequisites + +This example requires `stackql-deploy` to be installed using __`pip install stackql-deploy`__. The host used to run `stackql-deploy` needs the necessary environment variables set to authenticate to your specific provider, in the case of the `snowflake` provider, `SNOWFLAKE_PAT` must be set, for more information on authentication to `snowflake` see the [`snowflake` provider documentation](https://snowflake.stackql.io/providers/snowflake). + +## Usage + +Adjust the values in the [__`stackql_manifest.yml`__](stackql_manifest.yml) file if desired. The [__`stackql_manifest.yml`__](stackql_manifest.yml) file contains resource configuration variables to support multiple deployment environments, these will be used for `stackql` queries in the `resources` folder. + +The syntax for the `stackql-deploy` command is as follows: + +```bash +stackql-deploy { build | test | teardown } { stack-directory } { deployment environment} [ optional flags ] +``` + +### Deploying a stack + +For example, to deploy the stack named examples/snowflake/entitlements to an environment labeled `sit`, run the following: + +```bash +stackql-deploy build examples/snowflake/entitlements sit \ +-e SNOWFLAKE_ORG=OKXVNMC -e SNOWFLAKE_ACCOUNT=VH34026 +``` + +Use the `--dry-run` flag to view the queries to be run without actually running them, for example: + +```bash +stackql-deploy build examples/snowflake/entitlements sit \ +-e SNOWFLAKE_ORG=OKXVNMC -e SNOWFLAKE_ACCOUNT=VH34026 \ +--dry-run +``` + +### Testing a stack + +To test a stack to ensure that all resources are present and in the desired state, run the following (in our `sit` deployment example): + +```bash +stackql-deploy test examples/snowflake/entitlements sit \ +-e SNOWFLAKE_ORG=OKXVNMC -e SNOWFLAKE_ACCOUNT=VH34026 +``` + +### Tearing down a stack + +To destroy or deprovision all resources in a stack for our `sit` deployment example, run the following: + +```bash +stackql-deploy teardown examples/snowflake/entitlements sit \ +-e SNOWFLAKE_ORG=OKXVNMC -e SNOWFLAKE_ACCOUNT=VH34026 +``` \ No newline at end of file diff --git a/examples/snowflake/entitlements/resources/databases.iql b/examples/snowflake/entitlements/resources/databases.iql new file mode 100644 index 0000000..3f39f52 --- /dev/null +++ b/examples/snowflake/entitlements/resources/databases.iql @@ -0,0 +1,83 @@ +/*+ exists */ +SELECT COUNT(*) as count +FROM snowflake.database.databases +WHERE name = '{{ database_name }}' +AND endpoint = '{{ endpoint }}'; + +/*+ statecheck, retries=1, retry_delay=2 */ +SELECT COUNT(*) as count +FROM snowflake.database.databases +WHERE name = '{{ database_name }}' +AND endpoint = '{{ endpoint }}' +AND kind = '{{ kind }}' +AND comment = '{{ comment }}' +AND data_retention_time_in_days = {{ data_retention_time_in_days }} +AND log_level = '{{ log_level }}' +AND max_data_extension_time_in_days = {{ max_data_extension_time_in_days }} +AND suspend_task_after_num_failures = {{ suspend_task_after_num_failures }} +AND trace_level = '{{ trace_level }}' +AND user_task_managed_initial_warehouse_size = '{{ user_task_managed_initial_warehouse_size }}' +AND serverless_task_min_statement_size = '{{ serverless_task_min_statement_size }}' +AND serverless_task_max_statement_size = '{{ serverless_task_max_statement_size }}' +AND user_task_timeout_ms = {{ user_task_timeout_ms }} +; + +/*+ create */ +INSERT INTO snowflake.database.databases ( +data__name, +data__kind, +data__comment, +data__data_retention_time_in_days, +data__log_level, +data__max_data_extension_time_in_days, +data__suspend_task_after_num_failures, +data__trace_level, +data__user_task_managed_initial_warehouse_size, +data__serverless_task_min_statement_size, +data__serverless_task_max_statement_size, +data__user_task_timeout_ms, +endpoint +) +SELECT +'{{ database_name }}', +'{{ kind }}', +'{{ comment }}', + {{ data_retention_time_in_days }}, +'{{ log_level }}', + {{ max_data_extension_time_in_days }}, + {{ suspend_task_after_num_failures }}, +'{{ trace_level }}', +'{{ user_task_managed_initial_warehouse_size }}', +'{{ serverless_task_min_statement_size }}', +'{{ serverless_task_max_statement_size }}', + {{ user_task_timeout_ms }}, +'{{ endpoint }}' +; + +/*+ update */ +REPLACE snowflake.database.databases +SET +kind = '{{ kind }}', +comment = '{{ comment }}', +data_retention_time_in_days = '{{ data_retention_time_in_days }}', +default_ddl_collation = '{{ default_ddl_collation }}', +log_level = '{{ log_level }}', +max_data_extension_time_in_days = '{{ max_data_extension_time_in_days }}', +suspend_task_after_num_failures = '{{ suspend_task_after_num_failures }}', +trace_level = '{{ trace_level }}', +user_task_managed_initial_warehouse_size = '{{ user_task_managed_initial_warehouse_size }}', +serverless_task_min_statement_size = '{{ serverless_task_min_statement_size }}', +serverless_task_max_statement_size = '{{ serverless_task_max_statement_size }}', +user_task_timeout_ms = '{{ user_task_timeout_ms }}' +WHERE +name = '{{ database_name }}' +AND data__name = '{{ database_name }}' +AND endpoint = '{{ endpoint }}'; + +/*+ exports */ +SELECT '{{ database_name }}' as database_name; + +/*+ delete */ +DELETE FROM snowflake.database.databases +WHERE name = '{{ database_name }}' +AND endpoint = '{{ endpoint }}'; \ No newline at end of file diff --git a/examples/snowflake/entitlements/resources/grants.iql b/examples/snowflake/entitlements/resources/grants.iql new file mode 100644 index 0000000..93c65b7 --- /dev/null +++ b/examples/snowflake/entitlements/resources/grants.iql @@ -0,0 +1,23 @@ +/*+ createorupdate */ +INSERT INTO snowflake.role.grants ( +data__securable, +data__securable_type, +data__grant_option, +data__privileges, +name, +endpoint +) +SELECT +'{{ securable }}', +'{{ securable_type }}', +{{ grant_option }}, +'{{ privileges }}', +'{{ role_name }}', +'{{ endpoint }}' +; + +/*+ delete */ +DELETE FROM snowflake.role.grants +WHERE name = '{{ role_name }}' +AND data__securable_type = '{{ securable_type }}' +AND endpoint = '{{ endpoint }}'; \ No newline at end of file diff --git a/examples/snowflake/entitlements/resources/masking_policies.iql b/examples/snowflake/entitlements/resources/masking_policies.iql new file mode 100644 index 0000000..108d59b --- /dev/null +++ b/examples/snowflake/entitlements/resources/masking_policies.iql @@ -0,0 +1,20 @@ +/*+ createorupdate */ +INSERT INTO snowflake.sqlapi.statements ( +data__statement, +data__timeout, +data__database, +data__schema, +"User-Agent", +endpoint +) +SELECT +'{{ statement }}', +{{ timeout }}, +'{{ database }}', +'{{ schema }}', +'{{ "User-Agent" }}', +'{{ endpoint }}' +; + +/*+ exports */ +SELECT '{{ masking_policy_name }}' as masking_policy_name; \ No newline at end of file diff --git a/examples/snowflake/entitlements/resources/roles.iql b/examples/snowflake/entitlements/resources/roles.iql new file mode 100644 index 0000000..cc8e2b0 --- /dev/null +++ b/examples/snowflake/entitlements/resources/roles.iql @@ -0,0 +1,21 @@ +/*+ createorupdate */ +INSERT INTO snowflake.role.roles ( +data__name, +data__comment, +endpoint, +createMode +) +SELECT +'{{ role_name }}', +'{{ comment }}', +'{{ endpoint }}', +'orReplace' +; + +/*+ exports */ +SELECT '{{ role_name }}' as role_name; + +/*+ delete */ +DELETE FROM snowflake.role.roles +WHERE name = '{{ role_name }}' +AND endpoint = '{{ endpoint }}'; \ No newline at end of file diff --git a/examples/snowflake/entitlements/resources/schemas.iql b/examples/snowflake/entitlements/resources/schemas.iql new file mode 100644 index 0000000..55a72e6 --- /dev/null +++ b/examples/snowflake/entitlements/resources/schemas.iql @@ -0,0 +1,87 @@ +/*+ exists */ +SELECT COUNT(*) as count +FROM snowflake.schema.schemas +WHERE database_name = '{{ database_name }}' +AND name = '{{ schema_name }}' +AND endpoint = '{{ endpoint }}'; + +/*+ statecheck, retries=1, retry_delay=2 */ +SELECT COUNT(*) as count +FROM snowflake.schema.schemas +WHERE database_name = '{{ database_name }}' +AND name = '{{ schema_name }}' +AND endpoint = '{{ endpoint }}' +AND kind = '{{ kind }}' +AND managed_access = {{ managed_access }} +AND data_retention_time_in_days = {{ data_retention_time_in_days }} +AND log_level = '{{ log_level }}' +AND max_data_extension_time_in_days = {{ max_data_extension_time_in_days }} +AND suspend_task_after_num_failures = {{ suspend_task_after_num_failures }} +AND trace_level = '{{ trace_level }}' +AND user_task_managed_initial_warehouse_size = '{{ user_task_managed_initial_warehouse_size }}' +AND serverless_task_min_statement_size = '{{ serverless_task_min_statement_size }}' +AND serverless_task_max_statement_size = '{{ serverless_task_max_statement_size }}' +AND user_task_timeout_ms = {{ user_task_timeout_ms }}; + +/*+ create */ +INSERT INTO snowflake.schema.schemas ( +data__name, +data__kind, +data__managed_access, +data__data_retention_time_in_days, +data__log_level, +data__max_data_extension_time_in_days, +data__suspend_task_after_num_failures, +data__trace_level, +data__user_task_managed_initial_warehouse_size, +data__serverless_task_min_statement_size, +data__serverless_task_max_statement_size, +data__user_task_timeout_ms, +database_name, +endpoint +) +SELECT +'{{ schema_name }}', +'{{ kind }}', +{{ managed_access }}, +{{ data_retention_time_in_days }}, +'{{ log_level }}', +{{ max_data_extension_time_in_days }}, +{{ suspend_task_after_num_failures }}, +'{{ trace_level }}', +'{{ user_task_managed_initial_warehouse_size }}', +'{{ serverless_task_min_statement_size }}', +'{{ serverless_task_max_statement_size }}', +{{ user_task_timeout_ms }}, +'{{ database_name }}', +'{{ endpoint }}' +; + +/*+ update */ +REPLACE snowflake.schema.schemas +SET +kind = '{{ kind }}', +managed_access = {{ managed_access }}, +data_retention_time_in_days = {{ data_retention_time_in_days }}, +log_level = '{{ log_level }}', +max_data_extension_time_in_days = {{ max_data_extension_time_in_days }}, +suspend_task_after_num_failures = {{ suspend_task_after_num_failures }}, +trace_level = '{{ trace_level }}', +user_task_managed_initial_warehouse_size = '{{ user_task_managed_initial_warehouse_size }}', +serverless_task_min_statement_size = '{{ serverless_task_min_statement_size }}', +serverless_task_max_statement_size = '{{ serverless_task_max_statement_size }}', +user_task_timeout_ms = {{ user_task_timeout_ms }} +WHERE +database_name = '{{ database_name }}' +AND name = '{{ schema_name }}' +AND data__name = '{{ schema_name }}' +AND endpoint = '{{ endpoint }}'; + +/*+ exports */ +SELECT '{{ schema_name }}' as schema_name; + +/*+ delete */ +DELETE FROM snowflake.schema.schemas +WHERE database_name = '{{ database_name }}' +AND name = '{{ schema_name }}' +AND endpoint = '{{ endpoint }}'; \ No newline at end of file diff --git a/examples/snowflake/entitlements/resources/statements.iql b/examples/snowflake/entitlements/resources/statements.iql new file mode 100644 index 0000000..18782c0 --- /dev/null +++ b/examples/snowflake/entitlements/resources/statements.iql @@ -0,0 +1,17 @@ +/*+ createorupdate */ +INSERT INTO snowflake.sqlapi.statements ( +data__statement, +data__timeout, +data__database, +data__schema, +"User-Agent", +endpoint +) +SELECT +'{{ statement }}', +{{ timeout }}, +'{{ database }}', +'{{ schema }}', +'{{ "User-Agent" }}', +'{{ endpoint }}' +; diff --git a/examples/snowflake/entitlements/resources/tables.iql b/examples/snowflake/entitlements/resources/tables.iql new file mode 100644 index 0000000..5411d68 --- /dev/null +++ b/examples/snowflake/entitlements/resources/tables.iql @@ -0,0 +1,49 @@ +/*+ exists */ +SELECT COUNT(*) as count +FROM snowflake.table.tables +WHERE database_name = '{{ database_name }}' +AND schema_name = '{{ schema_name }}' +AND name = '{{ name }}' +AND endpoint = '{{ endpoint }}'; + +/*+ statecheck, retries=1, retry_delay=2 */ +SELECT COUNT(*) as count +FROM snowflake.table.tables +WHERE database_name = '{{ database_name }}' +AND schema_name = '{{ schema_name }}' +AND name = '{{ name }}' +AND endpoint = '{{ endpoint }}' +AND kind = '{{ kind }}' +AND comment = '{{ comment }}'; + +/*+ create */ +INSERT INTO snowflake.table.tables ( +data__name, +data__kind, +data__columns, +data__constraints, +data__comment, +database_name, +schema_name, +endpoint +) +SELECT +'{{ name }}', +'{{ kind }}', +'{{ columns }}', +'{{ constraints }}', +'{{ comment }}', +'{{ database_name }}', +'{{ schema_name }}', +'{{ endpoint }}' +; + +/*+ exports */ +SELECT '{{ name }}' as table_name; + +/*+ delete */ +DELETE FROM snowflake.table.tables +WHERE database_name = '{{ database_name }}' +AND schema_name = '{{ schema_name }}' +AND name = '{{ name }}' +AND endpoint = '{{ endpoint }}'; \ No newline at end of file diff --git a/examples/snowflake/entitlements/resources/warehouses.iql b/examples/snowflake/entitlements/resources/warehouses.iql new file mode 100644 index 0000000..70858ec --- /dev/null +++ b/examples/snowflake/entitlements/resources/warehouses.iql @@ -0,0 +1,33 @@ +/*+ createorupdate */ +INSERT INTO snowflake.warehouse.warehouses ( +data__name, +data__warehouse_type, +data__warehouse_size, +data__scaling_policy, +data__auto_suspend, +data__auto_resume, +data__initially_suspended, +data__comment, +createMode, +endpoint +) +SELECT +'{{ name }}', +'{{ warehouse_type }}', +'{{ warehouse_size }}', +'{{ scaling_policy }}', +{{ auto_suspend }}, +'{{ auto_resume }}', +'{{ initially_suspended }}', +'{{ comment }}', +'orReplace', +'{{ endpoint }}' +; + +/*+ exports */ +SELECT '{{ name }}' as warehouse_name; + +/*+ delete */ +DELETE FROM snowflake.warehouse.warehouses +WHERE name = '{{ name }}' +AND endpoint = '{{ endpoint }}'; \ No newline at end of file diff --git a/examples/snowflake/entitlements/stackql_manifest.yml b/examples/snowflake/entitlements/stackql_manifest.yml new file mode 100644 index 0000000..8854b97 --- /dev/null +++ b/examples/snowflake/entitlements/stackql_manifest.yml @@ -0,0 +1,337 @@ +version: 1 +name: snowflake_entitlements +description: entitlements framework for snowflake +providers: + - snowflake +globals: + - name: endpoint + description: snowflake endpoint (org-account) + value: "{{ SNOWFLAKE_ORG }}-{{ SNOWFLAKE_ACCOUNT }}" + - name: global_tags + value: + provisioner: stackql + stack_name: "{{ stack_name }}" + stack_env: "{{ stack_env }}" +resources: + - name: main_database + file: databases.iql + props: + - name: database_name + value: "{{ stack_name|upper }}_{{ stack_env|upper }}" + - name: kind + value: PERMANENT + - name: comment + value: "Main database for {{ stack_name }} {{ stack_env }}" + - name: data_retention_time_in_days + value: 1 + - name: log_level + value: 'OFF' + - name: max_data_extension_time_in_days + value: 14 + - name: suspend_task_after_num_failures + value: 10 + - name: trace_level + value: 'OFF' + - name: user_task_managed_initial_warehouse_size + value: MEDIUM + - name: serverless_task_min_statement_size + value: XSMALL + - name: serverless_task_max_statement_size + value: X2LARGE + - name: user_task_timeout_ms + value: 3600000 + exports: + - database_name: main_database_name + + # shared warehouse + - name: shared_warehouse + file: warehouses.iql + props: + - name: name + value: ANALYST_WH + - name: warehouse_type + value: STANDARD + - name: warehouse_size + value: XSMALL + - name: scaling_policy + value: ECONOMY + - name: auto_suspend + value: 300 + - name: auto_resume + value: 'true' + - name: initially_suspended + value: 'true' + - name: comment + value: "Analyst warehouse for {{ stack_name }} {{ stack_env }}" + exports: + - warehouse_name: shared_warehouse_name + + # schemas + - name: bronze_schema_src1 + file: schemas.iql + props: + - name: database_name + value: "{{ main_database_name}}" + - name: schema_name + value: "BRONZE_SRC1" + - name: kind + value: PERMANENT + - name: managed_access + value: true + - name: data_retention_time_in_days + value: 1 + - name: log_level + value: "OFF" + - name: max_data_extension_time_in_days + value: 14 + - name: suspend_task_after_num_failures + value: 10 + - name: trace_level + value: "OFF" + - name: user_task_managed_initial_warehouse_size + value: "MEDIUM" + - name: serverless_task_min_statement_size + value: "XSMALL" + - name: serverless_task_max_statement_size + value: "X2LARGE" + - name: user_task_timeout_ms + value: 3600000 + exports: + - schema_name: bronze_schema_src1_name + + # roles + - name: basic_access_role + file: roles.iql + props: + - name: role_name + value: "{{ stack_name|upper }}_{{ stack_env|upper }}_BASIC_ACCESS_ROLE" + - name: comment + value: "Basic access role" + exports: + - role_name: basic_access_role_name + + - name: pci_access_role + file: roles.iql + props: + - name: role_name + value: "{{ stack_name|upper }}_{{ stack_env|upper }}_PCI_ACCESS_ROLE" + - name: comment + value: "PCI access role" + exports: + - role_name: pci_access_role_name + + # grants + - name: basic_access_role_db_usage + file: grants.iql + props: + - name: role_name + value: '{{ basic_access_role_name }}' + - name: securable + value: + name: '{{ main_database_name }}' + - name: securable_type + value: DATABASE + - name: grant_option + value: false + - name: privileges + value: ["USAGE"] + + - name: basic_access_role_schema_usage + file: grants.iql + props: + - name: role_name + value: '{{ basic_access_role_name }}' + - name: securable + value: + database: '{{ main_database_name }}' + name: '{{ bronze_schema_src1_name }}' + - name: securable_type + value: SCHEMA + - name: grant_option + value: false + - name: privileges + value: ["USAGE"] + + - name: basic_access_role_warehouse_usage + file: grants.iql + props: + - name: role_name + value: '{{ basic_access_role_name }}' + - name: securable + value: + name: '{{ shared_warehouse_name }}' + - name: securable_type + value: WAREHOUSE + - name: grant_option + value: false + - name: privileges + value: ["USAGE"] + + - name: pci_access_role_db_usage + file: grants.iql + props: + - name: role_name + value: '{{ pci_access_role_name }}' + - name: securable + value: + name: '{{ main_database_name }}' + - name: securable_type + value: DATABASE + - name: grant_option + value: false + description: >- + If true, allows the recipient role to grant the privileges to other + roles. + - name: privileges + value: ["USAGE"] + + - name: pci_access_role_schema_usage + file: grants.iql + props: + - name: role_name + value: '{{ pci_access_role_name }}' + - name: securable + value: + database: '{{ main_database_name }}' + name: '{{ bronze_schema_src1_name }}' + - name: securable_type + value: SCHEMA + - name: grant_option + value: false + - name: privileges + value: ["USAGE"] + + - name: pci_access_role_warehouse_usage + file: grants.iql + props: + - name: role_name + value: '{{ pci_access_role_name }}' + - name: securable + value: + name: '{{ shared_warehouse_name }}' + - name: securable_type + value: WAREHOUSE + - name: grant_option + value: false + - name: privileges + value: ["USAGE"] + + # masking policies + - name: create_pci_masking_policy + file: masking_policies.iql + props: + - name: masking_policy_name + value: '{{ stack_name|upper }}_{{ stack_env|upper }}_PCI_MASKING_POLICY' + - name: '"User-Agent"' + value: stackql + - name: statement + value: | + CREATE MASKING POLICY IF NOT EXISTS {{ stack_name|upper }}_{{ stack_env|upper }}_PCI_MASKING_POLICY + AS (val STRING) RETURNS STRING -> + CASE + WHEN CURRENT_ROLE() IN (''{{ pci_access_role_name }}'') THEN val + ELSE ''***MASKED***'' + END + - name: timeout + value: 10 + - name: database + value: '{{ main_database_name }}' + - name: schema + value: '{{ bronze_schema_src1_name }}' + exports: + - masking_policy_name: pci_masking_policy_name + + # customer data table + - name: customer_data_table + file: tables.iql + props: + - name: database_name + value: '{{ main_database_name }}' + - name: schema_name + value: '{{ bronze_schema_src1_name }}' + - name: name + value: 'CUSTOMER_DATA' + - name: kind + value: 'PERMANENT' + - name: comment + value: 'Table with PCI masked data' + - name: columns + value: + - name: customer_id + datatype: 'INTEGER' + nullable: false + - name: customer_name + datatype: 'VARCHAR(100)' + nullable: false + - name: email + datatype: 'VARCHAR(100)' + nullable: false + - name: credit_card_number + datatype: 'VARCHAR(19)' + nullable: true + comment: 'PCI sensitive data - masked for non-PCI roles' + - name: purchase_amount + datatype: 'NUMBER(10,2)' + nullable: false + - name: purchase_date + datatype: 'DATE' + nullable: false + - name: constraints + value: + - name: pk_customer_id + column_names: ["customer_id"] + constraint_type: "PRIMARY KEY" + exports: + - table_name: customer_data_table_name + + - name: apply_pci_masking_policy + file: statements.iql + props: + - name: '"User-Agent"' + value: stackql + - name: statement + value: | + ALTER TABLE {{ main_database_name }}.{{ bronze_schema_src1_name }}.{{ customer_data_table_name}} + MODIFY COLUMN credit_card_number + SET MASKING POLICY {{ pci_masking_policy_name }} + - name: timeout + value: 10 + - name: database + value: '{{ main_database_name }}' + - name: schema + value: '{{ bronze_schema_src1_name }}' + + - name: basic_access_customer_data_table_usage + file: grants.iql + props: + - name: role_name + value: '{{ basic_access_role_name }}' + - name: securable + value: + database: '{{ main_database_name }}' + schema: '{{ bronze_schema_src1_name }}' + name: '{{ customer_data_table_name }}' + - name: securable_type + value: TABLE + - name: grant_option + value: false + - name: privileges + value: ["SELECT"] + + - name: pci_access_customer_data_table_usage + file: grants.iql + props: + - name: role_name + value: '{{ pci_access_role_name }}' + - name: securable + value: + database: '{{ main_database_name }}' + schema: '{{ bronze_schema_src1_name }}' + name: '{{ customer_data_table_name }}' + - name: securable_type + value: TABLE + - name: grant_option + value: false + - name: privileges + value: ["SELECT"] + diff --git a/get-contributors.iql b/get-contributors.iql new file mode 100644 index 0000000..e673431 --- /dev/null +++ b/get-contributors.iql @@ -0,0 +1,10 @@ +SELECT login FROM ( +SELECT login, SUM(contributions) total_contributions FROM +(SELECT login, contributions +FROM github.repos.contributors +WHERE owner = 'stackql' +AND repo IN ('stackql', 'stackql-deploy', 'pystackql', 'google-discovery-to-openapi') +) t +GROUP BY login +ORDER BY total_contributions DESC +) t1 \ No newline at end of file diff --git a/get-contributors.sh b/get-contributors.sh new file mode 100644 index 0000000..c7bd7c7 --- /dev/null +++ b/get-contributors.sh @@ -0,0 +1 @@ +./stackql exec --infile get-contributors.iql --output csv -f stackql_deploy/inc/contributors.csv -H \ No newline at end of file diff --git a/setup.py b/setup.py index 7ce9d62..2d47f31 100644 --- a/setup.py +++ b/setup.py @@ -10,7 +10,7 @@ setup( name='stackql-deploy', - version='1.8.3', + version='1.8.5', description='Model driven resource provisioning and deployment framework using StackQL.', long_description=readme, long_description_content_type='text/x-rst', diff --git a/stackql_deploy/__init__.py b/stackql_deploy/__init__.py index 5369601..31e8d61 100644 --- a/stackql_deploy/__init__.py +++ b/stackql_deploy/__init__.py @@ -1 +1 @@ -__version__ = '1.8.3' +__version__ = '1.8.5' diff --git a/stackql_deploy/cli.py b/stackql_deploy/cli.py index 11794a8..25a9980 100644 --- a/stackql_deploy/cli.py +++ b/stackql_deploy/cli.py @@ -290,6 +290,36 @@ def info(ctx): for provider in providers: click.echo(f" {provider['name']}: {provider['version']}") + # Read and display contributors + contributors = read_contributors(logger) + if contributors: + click.echo("\n" + click.style("✨ Special Thanks to our Contributors ✨", fg="green", bold=True)) + + # Display 4 contributors per line + for i in range(0, len(contributors), 4): + # Get up to 4 contributors for this line + line_contributors = contributors[i:i+4] + # Join with commas + line = ", ".join(line_contributors) + # Display the line + click.echo(f" {line}") + +def read_contributors(logger): + """Read contributors from CSV file and return as list of dicts.""" + try: + # Look for contributors.csv in package directory + package_dir = os.path.dirname(os.path.abspath(__file__)) + contributors_path = os.path.join(package_dir, 'inc', 'contributors.csv') + + with open(contributors_path, 'r', encoding='utf-8') as f: + contributors = [line.strip() for line in f if line.strip()] + + return contributors + + except Exception as e: + logger.debug(f"Failed to read contributors: {str(e)}") + return [] + # # shell command # diff --git a/stackql_deploy/cmd/base.py b/stackql_deploy/cmd/base.py index fda4343..876a16f 100644 --- a/stackql_deploy/cmd/base.py +++ b/stackql_deploy/cmd/base.py @@ -8,7 +8,8 @@ show_query, check_all_dicts, ) -from ..lib.config import setup_environment, load_manifest, get_global_context_and_providers +from ..lib.config import load_manifest, get_global_context_and_providers +from ..lib.filters import setup_environment class StackQLBase: def __init__(self, stackql, vars, logger, stack_dir, stack_env): diff --git a/stackql_deploy/inc/contributors.csv b/stackql_deploy/inc/contributors.csv new file mode 100644 index 0000000..11a0e5f --- /dev/null +++ b/stackql_deploy/inc/contributors.csv @@ -0,0 +1,23 @@ +jeffreyaven +general-kroll-4-life +derek10cloud +yunchengyang515 +mxrch +jthegedus +Iqbalabdi +tomekz +soysaucewaso +sanketmp +ryukinoz +ryuichi-maeda +rameshgkwd05 +pinalbaldha +kieranrimmer +gsusI +filipnavara +drawdrop +datwiz +cuishuang +claude[bot] +Racso-3141 +BulkBeing diff --git a/stackql_deploy/lib/config.py b/stackql_deploy/lib/config.py index c6087e6..cbeb249 100644 --- a/stackql_deploy/lib/config.py +++ b/stackql_deploy/lib/config.py @@ -2,119 +2,11 @@ import os import yaml import json -import base64 import pprint -import uuid import sys from .utils import pull_providers, catch_error_and_exit -from jinja2 import Environment, FileSystemLoader, TemplateError - -# jinja filters - -def from_json(value): - return json.loads(value) - -def base64_encode(value): - return base64.b64encode(value.encode()).decode() - -def merge_lists(list1, list2): - # Helper function to ensure we have Python lists, not JSON strings - def ensure_list(input_data): - if isinstance(input_data, str): - try: - # Attempt to decode a JSON string - decoded = json.loads(input_data) - if isinstance(decoded, list): - return decoded - except json.JSONDecodeError: - pass # If it's not a JSON string, keep it as a string - elif isinstance(input_data, list): - return input_data - raise ValueError("(config.merge_lists) input must be a list or a JSON-encoded list string") - - # Ensure both inputs are lists - list1 = ensure_list(list1) - list2 = ensure_list(list2) - - # Convert lists to sets of JSON strings to handle unhashable types - set1 = set(json.dumps(item, sort_keys=True) for item in list1) - set2 = set(json.dumps(item, sort_keys=True) for item in list2) - - # Merge sets - merged_set = set1 | set2 - - # Convert back to list of dictionaries or original items - merged_list = [json.loads(item) for item in merged_set] - return merged_list - -def merge_objects(obj1, obj2): - # Helper function to ensure we have Python dicts, not JSON strings - def ensure_dict(input_data): - if isinstance(input_data, str): - try: - # Attempt to decode a JSON string - decoded = json.loads(input_data) - if isinstance(decoded, dict): - return decoded - except json.JSONDecodeError: - pass # If it's not a JSON string, keep it as a string - elif isinstance(input_data, dict): - return input_data - raise ValueError("(config.merge_objects) input must be a dict or a JSON-encoded dict string") - - # Ensure both inputs are dicts - obj1 = ensure_dict(obj1) - obj2 = ensure_dict(obj2) - - # Merge the two dictionaries - merged_obj = {**obj1, **obj2} - - return merged_obj - -def generate_patch_document(properties): - """ - Generates a patch document for the given resource. This is designed for the AWS Cloud Control API, which requires - a patch document to update resources. - """ - patch_doc = [] - for key, value in properties.items(): - # Check if the value is already a string (indicating it's likely already JSON) and leave it as is - if isinstance(value, str): - try: - # Try to parse the string to confirm it's a JSON object/array - parsed_value = json.loads(value) - patch_doc.append({"op": "add", "path": f"/{key}", "value": parsed_value}) - except json.JSONDecodeError: - # If it's not a JSON string, treat it as a simple string value - patch_doc.append({"op": "add", "path": f"/{key}", "value": value}) - else: - # If it's not a string, add it as a JSON-compatible object - patch_doc.append({"op": "add", "path": f"/{key}", "value": value}) - - return json.dumps(patch_doc) - -def sql_list(input_data): - # If the input is already a string representation of a list, parse it - if isinstance(input_data, str): - try: - import json - # Parse the string as JSON array - python_list = json.loads(input_data) - except json.JSONDecodeError: - # If it's not valid JSON, treat it as a single item - python_list = [input_data] - else: - python_list = input_data - - # Handle empty list case - if not python_list: - return '(NULL)' - - # Convert each item to string, wrap in quotes, join with commas - quoted_items = [f"'{str(item)}'" for item in python_list] - return f"({','.join(quoted_items)})" - -# END jinja filters +from jinja2 import TemplateError +from .filters import merge_lists, merge_objects def to_sql_compatible_json(value): """ @@ -196,28 +88,121 @@ def render_globals(env, vars, global_vars, stack_env, stack_name, logger): return global_context +# def render_properties(env, resource_props, global_context, logger): +# prop_context = {} + +# logger.debug("rendering properties...") +# for prop in resource_props: +# try: +# if 'value' in prop: +# rendered_value = render_value(env, prop['value'], global_context, logger) +# logger.debug( +# f"(config.render_properties) setting property [{prop['name']}] to " +# f"{to_sql_compatible_json(rendered_value)}" +# ) +# prop_context[prop['name']] = to_sql_compatible_json(rendered_value) +# elif 'values' in prop: +# env_value = prop['values'].get(global_context['stack_env'], {}).get('value') +# if env_value is not None: +# rendered_value = render_value(env, env_value, global_context, logger) +# logger.debug( +# f"(config.render_properties) setting property [{prop['name']}] using value for " +# f"{env_value} to {to_sql_compatible_json(rendered_value)}" +# ) +# prop_context[prop['name']] = to_sql_compatible_json(rendered_value) +# else: +# catch_error_and_exit( +# f"(config.render_properties) no value specified for property '{prop['name']}' " +# f"in stack_env '{global_context['stack_env']}'.", +# logger +# ) + +# if 'merge' in prop: +# logger.debug(f"(config.render_properties) processing merge for [{prop['name']}]") +# base_value_rendered = prop_context.get(prop['name'], None) +# base_value = json.loads(base_value_rendered) +# base_value_type = type(base_value) +# logger.debug( +# f"(config.render_properties) base value for [{prop['name']}]: " +# f"{base_value_rendered} (type: {base_value_type})" +# ) +# for merge_item in prop['merge']: +# if merge_item in global_context: +# merge_value_rendered = global_context[merge_item] +# merge_value = json.loads(merge_value_rendered) +# merge_value_type = type(merge_value) +# logger.debug( +# f"(config.render_properties) [{prop['name']}] merge value [{merge_item}]: " +# f"{merge_value_rendered} (type: {merge_value_type})" +# ) + +# # Determine if we're merging lists or objects +# if isinstance(base_value, list) and isinstance(merge_value, list): +# base_value = merge_lists(base_value, merge_value) +# elif isinstance(base_value, dict) and isinstance(merge_value, dict): +# base_value = merge_objects(base_value, merge_value) +# elif base_value is None: +# # Initialize base_value if it wasn't set before +# if isinstance(merge_value, list): +# base_value = merge_value +# elif isinstance(merge_value, dict): +# base_value = merge_value +# else: +# catch_error_and_exit( +# f"(config.render_properties) unsupported merge type for '{prop['name']}'", +# logger +# ) +# else: +# catch_error_and_exit( +# f"(config.render_properties) type mismatch or unsupported merge operation " +# f"on property '{prop['name']}'.", +# logger +# ) +# else: +# catch_error_and_exit( +# f"(config.render_properties) merge item '{merge_item}' not found in global context.", +# logger +# ) + +# prop_context[prop['name']] = to_sql_compatible_json(base_value) + +# except Exception as e: +# catch_error_and_exit(f"(config.render_properties) failed to render property '{prop['name']}']: {e}", logger) + +# return prop_context + def render_properties(env, resource_props, global_context, logger): prop_context = {} + # Create a resource_context that starts with a copy of global_context + # This will be used for rendering and updated as we go, but not returned + resource_context = global_context.copy() logger.debug("rendering properties...") for prop in resource_props: try: if 'value' in prop: - rendered_value = render_value(env, prop['value'], global_context, logger) + # Use resource_context for rendering, which includes both global vars and + # properties that have already been processed + rendered_value = render_value(env, prop['value'], resource_context, logger) logger.debug( f"(config.render_properties) setting property [{prop['name']}] to " f"{to_sql_compatible_json(rendered_value)}" ) prop_context[prop['name']] = to_sql_compatible_json(rendered_value) + # Update resource_context with the new property + resource_context[prop['name']] = to_sql_compatible_json(rendered_value) elif 'values' in prop: env_value = prop['values'].get(global_context['stack_env'], {}).get('value') if env_value is not None: - rendered_value = render_value(env, env_value, global_context, logger) + # Use resource_context for rendering + rendered_value = render_value(env, env_value, resource_context, logger) logger.debug( f"(config.render_properties) setting property [{prop['name']}] using value for " f"{env_value} to {to_sql_compatible_json(rendered_value)}" ) prop_context[prop['name']] = to_sql_compatible_json(rendered_value) + # Update resource_context with the new property + resource_context[prop['name']] = to_sql_compatible_json(rendered_value) else: catch_error_and_exit( f"(config.render_properties) no value specified for property '{prop['name']}' " @@ -228,15 +213,16 @@ def render_properties(env, resource_props, global_context, logger): if 'merge' in prop: logger.debug(f"(config.render_properties) processing merge for [{prop['name']}]") base_value_rendered = prop_context.get(prop['name'], None) - base_value = json.loads(base_value_rendered) + base_value = json.loads(base_value_rendered) if base_value_rendered else None base_value_type = type(base_value) logger.debug( f"(config.render_properties) base value for [{prop['name']}]: " f"{base_value_rendered} (type: {base_value_type})" ) for merge_item in prop['merge']: - if merge_item in global_context: - merge_value_rendered = global_context[merge_item] + # Use resource_context for lookups during merge + if merge_item in resource_context: + merge_value_rendered = resource_context[merge_item] merge_value = json.loads(merge_value_rendered) merge_value_type = type(merge_value) logger.debug( @@ -268,11 +254,14 @@ def render_properties(env, resource_props, global_context, logger): ) else: catch_error_and_exit( - f"(config.render_properties) merge item '{merge_item}' not found in global context.", + f"(config.render_properties) merge item '{merge_item}' not found in context.", logger ) - prop_context[prop['name']] = to_sql_compatible_json(base_value) + processed_value = to_sql_compatible_json(base_value) + prop_context[prop['name']] = processed_value + # Update resource_context with the merged property + resource_context[prop['name']] = processed_value except Exception as e: catch_error_and_exit(f"(config.render_properties) failed to render property '{prop['name']}']: {e}", logger) @@ -292,23 +281,6 @@ def load_manifest(stack_dir, logger): except Exception as e: catch_error_and_exit("(config.load_manifest) failed to load manifest: " + str(e), logger) -def setup_environment(stack_dir, logger): - logger.debug("(config.setup_environment) setting up environment...") - if not os.path.exists(stack_dir): - catch_error_and_exit("(config.setup_environment) stack directory does not exist.", logger) - env = Environment( - loader=FileSystemLoader(os.getcwd()), - autoescape=False - ) - env.filters['merge_lists'] = merge_lists - env.filters['base64_encode'] = base64_encode - env.filters['generate_patch_document'] = generate_patch_document - env.filters['from_json'] = from_json - env.filters['sql_list'] = sql_list - env.globals['uuid'] = lambda: str(uuid.uuid4()) - logger.debug("custom Jinja filters registered: %s", env.filters.keys()) - return env - def get_global_context_and_providers(env, manifest, vars, stack_env, stack_name, stackql, logger): # Extract the global variables from the manifest and include stack_env logger.debug("(config.get_global_context_and_providers) getting global context and pulling providers...") diff --git a/stackql_deploy/lib/filters.py b/stackql_deploy/lib/filters.py new file mode 100644 index 0000000..1a8e324 --- /dev/null +++ b/stackql_deploy/lib/filters.py @@ -0,0 +1,131 @@ +# lib/filters.py +import os +import json +import base64 +import uuid +from jinja2 import Environment, FileSystemLoader +from .utils import catch_error_and_exit + +def from_json(value): + return json.loads(value) + +def base64_encode(value): + return base64.b64encode(value.encode()).decode() + +def merge_lists(list1, list2): + # Helper function to ensure we have Python lists, not JSON strings + def ensure_list(input_data): + if isinstance(input_data, str): + try: + # Attempt to decode a JSON string + decoded = json.loads(input_data) + if isinstance(decoded, list): + return decoded + except json.JSONDecodeError: + pass # If it's not a JSON string, keep it as a string + elif isinstance(input_data, list): + return input_data + raise ValueError("(config.merge_lists) input must be a list or a JSON-encoded list string") + + # Ensure both inputs are lists + list1 = ensure_list(list1) + list2 = ensure_list(list2) + + # Convert lists to sets of JSON strings to handle unhashable types + set1 = set(json.dumps(item, sort_keys=True) for item in list1) + set2 = set(json.dumps(item, sort_keys=True) for item in list2) + + # Merge sets + merged_set = set1 | set2 + + # Convert back to list of dictionaries or original items + merged_list = [json.loads(item) for item in merged_set] + return merged_list + +def merge_objects(obj1, obj2): + # Helper function to ensure we have Python dicts, not JSON strings + def ensure_dict(input_data): + if isinstance(input_data, str): + try: + # Attempt to decode a JSON string + decoded = json.loads(input_data) + if isinstance(decoded, dict): + return decoded + except json.JSONDecodeError: + pass # If it's not a JSON string, keep it as a string + elif isinstance(input_data, dict): + return input_data + raise ValueError("(config.merge_objects) input must be a dict or a JSON-encoded dict string") + + # Ensure both inputs are dicts + obj1 = ensure_dict(obj1) + obj2 = ensure_dict(obj2) + + # Merge the two dictionaries + merged_obj = {**obj1, **obj2} + + return merged_obj + +def generate_patch_document(properties): + """ + Generates a patch document for the given resource. This is designed for the AWS Cloud Control API, which requires + a patch document to update resources. + """ + patch_doc = [] + for key, value in properties.items(): + # Check if the value is already a string (indicating it's likely already JSON) and leave it as is + if isinstance(value, str): + try: + # Try to parse the string to confirm it's a JSON object/array + parsed_value = json.loads(value) + patch_doc.append({"op": "add", "path": f"/{key}", "value": parsed_value}) + except json.JSONDecodeError: + # If it's not a JSON string, treat it as a simple string value + patch_doc.append({"op": "add", "path": f"/{key}", "value": value}) + else: + # If it's not a string, add it as a JSON-compatible object + patch_doc.append({"op": "add", "path": f"/{key}", "value": value}) + + return json.dumps(patch_doc) + +def sql_list(input_data): + # If the input is already a string representation of a list, parse it + if isinstance(input_data, str): + try: + import json + # Parse the string as JSON array + python_list = json.loads(input_data) + except json.JSONDecodeError: + # If it's not valid JSON, treat it as a single item + python_list = [input_data] + else: + python_list = input_data + + # Handle empty list case + if not python_list: + return '(NULL)' + + # Convert each item to string, wrap in quotes, join with commas + quoted_items = [f"'{str(item)}'" for item in python_list] + return f"({','.join(quoted_items)})" + +# +# exported functions +# + +def setup_environment(stack_dir, logger): + logger.debug("(config.setup_environment) setting up environment...") + if not os.path.exists(stack_dir): + catch_error_and_exit("(config.setup_environment) stack directory does not exist.", logger) + env = Environment( + loader=FileSystemLoader(os.getcwd()), + autoescape=False + ) + env.filters['merge_lists'] = merge_lists + env.filters['base64_encode'] = base64_encode + env.filters['generate_patch_document'] = generate_patch_document + env.filters['from_json'] = from_json + env.filters['sql_list'] = sql_list + env.globals['uuid'] = lambda: str(uuid.uuid4()) + logger.debug("custom Jinja filters registered: %s", env.filters.keys()) + return env \ No newline at end of file diff --git a/start-stackql-server.sh b/start-stackql-server.sh new file mode 100644 index 0000000..1ac8bf5 --- /dev/null +++ b/start-stackql-server.sh @@ -0,0 +1,9 @@ +# start server if not running +echo "checking if server is running" +if [ -z "$(ps | grep stackql)" ]; then + echo "starting server" + nohup ./stackql -v --pgsrv.port=5444 srv & + sleep 5 +else + echo "server is already running" +fi \ No newline at end of file diff --git a/stop-stackql-server.sh b/stop-stackql-server.sh new file mode 100644 index 0000000..762f6e8 --- /dev/null +++ b/stop-stackql-server.sh @@ -0,0 +1,12 @@ +#!/bin/bash + +# Find the process ID of the StackQL server +PID=$(pgrep -f "stackql") + +if [ -z "$PID" ]; then + echo "stackql server is not running." +else + echo "stopping stackql server (PID: $PID)..." + kill $PID + echo "stackql server stopped." +fi \ No newline at end of file From 79efeea775afb8fabac186f9d82e678598e6cc65 Mon Sep 17 00:00:00 2001 From: Jeffrey Aven Date: Sun, 20 Jul 2025 08:21:33 +1000 Subject: [PATCH 04/10] added inline sql to command res type --- MANIFEST.in | 1 + .../all-purpose-cluster/stackql_manifest.yml | 1022 -------------- .../README.md | 0 .../assets/auto-provisioned-worskpace.png | Bin .../awaiting-subscription-resources.png | Bin ...apture-cross-databricks-aws-account-id.png | Bin .../assets/capture-databricks-account-id.png | Bin .../create-aws-databricks-subscription.png | Bin .../assets/create-cicd-agent.png | Bin .../assets/generate-secret-ui.png | Bin .../assets/grant-account-admin-cicd-agent.png | Bin .../convenience.sh | 0 .../resources/aws/iam/iam_role.iql | 1 + .../resources/aws/s3/workspace_bucket.iql | 0 .../aws/s3/workspace_bucket_policy.iql | 0 .../resources/aws/vpc/elastic_ip.iql | 0 .../aws/vpc/get_main_route_table_id.iql | 0 .../resources/aws/vpc/inet_gateway.iql | 0 .../resources/aws/vpc/inet_gw_attachment.iql | 0 .../resources/aws/vpc/inet_route.iql | 0 .../resources/aws/vpc/nat_gateway.iql | 0 .../resources/aws/vpc/nat_inet_route.iql | 0 .../resources/aws/vpc/route_table.iql | 0 .../resources/aws/vpc/security_group.iql | 0 .../aws/vpc/security_group_rules.iql | 0 .../resources/aws/vpc/subnet.iql | 0 .../resources/aws/vpc/subnet_rt_assn.iql | 0 .../aws/vpc/tag_main_vpc_route_table.iql | 0 .../resources/aws/vpc/vpc.iql | 0 .../resources/aws/vpc/vpc_endpoint.iql | 0 .../databricks_account/credentials.iql | 4 +- .../databricks_account/get_users.iql | 0 .../resources/databricks_account/network.iql | 0 .../storage_configuration.iql | 0 .../update_group_membership.iql | 0 .../databricks_account/workspace.iql | 0 .../databricks_account/workspace_group.iql | 0 .../workspace_permission_assignments.iql | 0 .../all_purpose_cluster.iql | 0 .../sec/.gitignore | 0 .../databricks/classic/stackql_manifest.yml | 1059 +++++++++++++++ examples/databricks/serverless/README.md | 245 ++++ .../assets/auto-provisioned-worskpace.png | Bin 0 -> 151759 bytes .../awaiting-subscription-resources.png | Bin 0 -> 83728 bytes ...apture-cross-databricks-aws-account-id.png | Bin 0 -> 383112 bytes .../assets/capture-databricks-account-id.png | Bin 0 -> 212857 bytes .../create-aws-databricks-subscription.png | Bin 0 -> 75342 bytes .../serverless/assets/create-cicd-agent.png | Bin 0 -> 162313 bytes .../serverless/assets/generate-secret-ui.png | Bin 0 -> 223347 bytes .../assets/grant-account-admin-cicd-agent.png | Bin 0 -> 179843 bytes examples/databricks/serverless/convenience.sh | 72 + .../serverless/resources/aws/iam/iam_role.iql | 60 + .../aws/iam/update_metastore_access_role.iql | 7 + .../resources/aws/kms/metastore_key.iql | 50 + .../serverless/resources/aws/s3/s3_bucket.iql | 61 + .../resources/aws/s3/s3_bucket_policy.iql | 36 + .../resources/aws/vpc/elastic_ip.iql | 56 + .../aws/vpc/get_main_route_table_id.iql | 6 + .../resources/aws/vpc/inet_gateway.iql | 54 + .../resources/aws/vpc/inet_gw_attachment.iql | 39 + .../resources/aws/vpc/inet_route.iql | 41 + .../resources/aws/vpc/nat_gateway.iql | 53 + .../resources/aws/vpc/nat_inet_route.iql | 41 + .../resources/aws/vpc/route_table.iql | 54 + .../resources/aws/vpc/security_group.iql | 41 + .../aws/vpc/security_group_rules.iql | 27 + .../serverless/resources/aws/vpc/subnet.iql | 43 + .../resources/aws/vpc/subnet_rt_assn.iql | 34 + .../aws/vpc/tag_main_vpc_route_table.iql | 7 + .../serverless/resources/aws/vpc/vpc.iql | 60 + .../resources/aws/vpc/vpc_endpoint.iql | 60 + .../databricks_account/credentials.iql | 41 + .../databricks_account/get_users.iql | 6 + .../resources/databricks_account/network.iql | 46 + .../storage_configuration.iql | 35 + .../update_group_membership.iql | 6 + .../databricks_account/workspace.iql | 44 + .../databricks_account/workspace_group.iql | 32 + .../workspace_permission_assignments.iql | 32 + .../storage_credential.iql | 43 + examples/databricks/serverless/sec/.gitignore | 2 + .../serverless/stackql_manifest.yml | 1173 +++++++++++++++++ setup.py | 2 + stackql_deploy/cmd/build.py | 23 +- stackql_deploy/lib/templating.py | 39 + website/docs/manifest_fields/index.js | 1 + website/docs/manifest_fields/resources.mdx | 1 + .../docs/manifest_fields/resources/sql.mdx | 86 ++ .../docs/manifest_fields/resources/type.mdx | 3 +- website/src/pages/index.js | 32 +- website/static/img/logo-original-OLD.svg | 3 + website/static/img/logo-original.svg | 4 +- 92 files changed, 3851 insertions(+), 1037 deletions(-) delete mode 100644 examples/databricks/all-purpose-cluster/stackql_manifest.yml rename examples/databricks/{all-purpose-cluster => classic}/README.md (100%) rename examples/databricks/{all-purpose-cluster => classic}/assets/auto-provisioned-worskpace.png (100%) rename examples/databricks/{all-purpose-cluster => classic}/assets/awaiting-subscription-resources.png (100%) rename examples/databricks/{all-purpose-cluster => classic}/assets/capture-cross-databricks-aws-account-id.png (100%) rename examples/databricks/{all-purpose-cluster => classic}/assets/capture-databricks-account-id.png (100%) rename examples/databricks/{all-purpose-cluster => classic}/assets/create-aws-databricks-subscription.png (100%) rename examples/databricks/{all-purpose-cluster => classic}/assets/create-cicd-agent.png (100%) rename examples/databricks/{all-purpose-cluster => classic}/assets/generate-secret-ui.png (100%) rename examples/databricks/{all-purpose-cluster => classic}/assets/grant-account-admin-cicd-agent.png (100%) rename examples/databricks/{all-purpose-cluster => classic}/convenience.sh (100%) rename examples/databricks/{all-purpose-cluster => classic}/resources/aws/iam/iam_role.iql (93%) rename examples/databricks/{all-purpose-cluster => classic}/resources/aws/s3/workspace_bucket.iql (100%) rename examples/databricks/{all-purpose-cluster => classic}/resources/aws/s3/workspace_bucket_policy.iql (100%) rename examples/databricks/{all-purpose-cluster => classic}/resources/aws/vpc/elastic_ip.iql (100%) rename examples/databricks/{all-purpose-cluster => classic}/resources/aws/vpc/get_main_route_table_id.iql (100%) rename examples/databricks/{all-purpose-cluster => classic}/resources/aws/vpc/inet_gateway.iql (100%) rename examples/databricks/{all-purpose-cluster => classic}/resources/aws/vpc/inet_gw_attachment.iql (100%) rename examples/databricks/{all-purpose-cluster => classic}/resources/aws/vpc/inet_route.iql (100%) rename examples/databricks/{all-purpose-cluster => classic}/resources/aws/vpc/nat_gateway.iql (100%) rename examples/databricks/{all-purpose-cluster => classic}/resources/aws/vpc/nat_inet_route.iql (100%) rename examples/databricks/{all-purpose-cluster => classic}/resources/aws/vpc/route_table.iql (100%) rename examples/databricks/{all-purpose-cluster => classic}/resources/aws/vpc/security_group.iql (100%) rename examples/databricks/{all-purpose-cluster => classic}/resources/aws/vpc/security_group_rules.iql (100%) rename examples/databricks/{all-purpose-cluster => classic}/resources/aws/vpc/subnet.iql (100%) rename examples/databricks/{all-purpose-cluster => classic}/resources/aws/vpc/subnet_rt_assn.iql (100%) rename examples/databricks/{all-purpose-cluster => classic}/resources/aws/vpc/tag_main_vpc_route_table.iql (100%) rename examples/databricks/{all-purpose-cluster => classic}/resources/aws/vpc/vpc.iql (100%) rename examples/databricks/{all-purpose-cluster => classic}/resources/aws/vpc/vpc_endpoint.iql (100%) rename examples/databricks/{all-purpose-cluster => classic}/resources/databricks_account/credentials.iql (88%) rename examples/databricks/{all-purpose-cluster => classic}/resources/databricks_account/get_users.iql (100%) rename examples/databricks/{all-purpose-cluster => classic}/resources/databricks_account/network.iql (100%) rename examples/databricks/{all-purpose-cluster => classic}/resources/databricks_account/storage_configuration.iql (100%) rename examples/databricks/{all-purpose-cluster => classic}/resources/databricks_account/update_group_membership.iql (100%) rename examples/databricks/{all-purpose-cluster => classic}/resources/databricks_account/workspace.iql (100%) rename examples/databricks/{all-purpose-cluster => classic}/resources/databricks_account/workspace_group.iql (100%) rename examples/databricks/{all-purpose-cluster => classic}/resources/databricks_account/workspace_permission_assignments.iql (100%) rename examples/databricks/{all-purpose-cluster => classic}/resources/databricks_workspace/all_purpose_cluster.iql (100%) rename examples/databricks/{all-purpose-cluster => classic}/sec/.gitignore (100%) create mode 100644 examples/databricks/classic/stackql_manifest.yml create mode 100644 examples/databricks/serverless/README.md create mode 100644 examples/databricks/serverless/assets/auto-provisioned-worskpace.png create mode 100644 examples/databricks/serverless/assets/awaiting-subscription-resources.png create mode 100644 examples/databricks/serverless/assets/capture-cross-databricks-aws-account-id.png create mode 100644 examples/databricks/serverless/assets/capture-databricks-account-id.png create mode 100644 examples/databricks/serverless/assets/create-aws-databricks-subscription.png create mode 100644 examples/databricks/serverless/assets/create-cicd-agent.png create mode 100644 examples/databricks/serverless/assets/generate-secret-ui.png create mode 100644 examples/databricks/serverless/assets/grant-account-admin-cicd-agent.png create mode 100644 examples/databricks/serverless/convenience.sh create mode 100644 examples/databricks/serverless/resources/aws/iam/iam_role.iql create mode 100644 examples/databricks/serverless/resources/aws/iam/update_metastore_access_role.iql create mode 100644 examples/databricks/serverless/resources/aws/kms/metastore_key.iql create mode 100644 examples/databricks/serverless/resources/aws/s3/s3_bucket.iql create mode 100644 examples/databricks/serverless/resources/aws/s3/s3_bucket_policy.iql create mode 100644 examples/databricks/serverless/resources/aws/vpc/elastic_ip.iql create mode 100644 examples/databricks/serverless/resources/aws/vpc/get_main_route_table_id.iql create mode 100644 examples/databricks/serverless/resources/aws/vpc/inet_gateway.iql create mode 100644 examples/databricks/serverless/resources/aws/vpc/inet_gw_attachment.iql create mode 100644 examples/databricks/serverless/resources/aws/vpc/inet_route.iql create mode 100644 examples/databricks/serverless/resources/aws/vpc/nat_gateway.iql create mode 100644 examples/databricks/serverless/resources/aws/vpc/nat_inet_route.iql create mode 100644 examples/databricks/serverless/resources/aws/vpc/route_table.iql create mode 100644 examples/databricks/serverless/resources/aws/vpc/security_group.iql create mode 100644 examples/databricks/serverless/resources/aws/vpc/security_group_rules.iql create mode 100644 examples/databricks/serverless/resources/aws/vpc/subnet.iql create mode 100644 examples/databricks/serverless/resources/aws/vpc/subnet_rt_assn.iql create mode 100644 examples/databricks/serverless/resources/aws/vpc/tag_main_vpc_route_table.iql create mode 100644 examples/databricks/serverless/resources/aws/vpc/vpc.iql create mode 100644 examples/databricks/serverless/resources/aws/vpc/vpc_endpoint.iql create mode 100644 examples/databricks/serverless/resources/databricks_account/credentials.iql create mode 100644 examples/databricks/serverless/resources/databricks_account/get_users.iql create mode 100644 examples/databricks/serverless/resources/databricks_account/network.iql create mode 100644 examples/databricks/serverless/resources/databricks_account/storage_configuration.iql create mode 100644 examples/databricks/serverless/resources/databricks_account/update_group_membership.iql create mode 100644 examples/databricks/serverless/resources/databricks_account/workspace.iql create mode 100644 examples/databricks/serverless/resources/databricks_account/workspace_group.iql create mode 100644 examples/databricks/serverless/resources/databricks_account/workspace_permission_assignments.iql create mode 100644 examples/databricks/serverless/resources/databricks_workspace/storage_credential.iql create mode 100644 examples/databricks/serverless/sec/.gitignore create mode 100644 examples/databricks/serverless/stackql_manifest.yml create mode 100644 website/docs/manifest_fields/resources/sql.mdx create mode 100644 website/static/img/logo-original-OLD.svg diff --git a/MANIFEST.in b/MANIFEST.in index 29faca7..b4d760a 100644 --- a/MANIFEST.in +++ b/MANIFEST.in @@ -1,3 +1,4 @@ # MANIFEST.in include README.rst recursive-include stackql_deploy/templates *.template +include stackql_deploy/inc/contributors.csv diff --git a/examples/databricks/all-purpose-cluster/stackql_manifest.yml b/examples/databricks/all-purpose-cluster/stackql_manifest.yml deleted file mode 100644 index bb26561..0000000 --- a/examples/databricks/all-purpose-cluster/stackql_manifest.yml +++ /dev/null @@ -1,1022 +0,0 @@ -version: 1 -name: "databricks-all-purpose-cluster" -description: creates a databricks workspace and all-purpose cluster -providers: - - aws - - databricks_account - - databricks_workspace -globals: - - name: databricks_account_id - description: databricks account id - value: "{{ DATABRICKS_ACCOUNT_ID }}" - - name: databricks_aws_account_id - description: databricks AWS account id - value: "{{ DATABRICKS_AWS_ACCOUNT_ID }}" - - name: aws_account - description: aws_account id - value: "{{ AWS_ACCOUNT_ID }}" - - name: region - description: aws region - value: "{{ AWS_REGION }}" - - name: global_tags - value: - - Key: Provisioner - Value: stackql - - Key: StackName - Value: "{{ stack_name }}" - - Key: StackEnv - Value: "{{ stack_env }}" -resources: -# ==================================================================================== -# AWS IAM -# ==================================================================================== - - name: aws/iam/cross_account_role - file: aws/iam/iam_role.iql - props: - - name: role_name - value: "{{ stack_name }}-{{ stack_env }}-role" - - name: assume_role_policy_document - value: - Version: "2012-10-17" - Statement: - - Sid: "" - Effect: "Allow" - Principal: - AWS: "arn:aws:iam::{{ databricks_aws_account_id }}:root" - Action: "sts:AssumeRole" - Condition: - StringEquals: - sts:ExternalId: "{{ databricks_account_id }}" - - name: description - value: 'allows Databricks to access resources in ({{ stack_name }}-{{ stack_env }})' - - name: path - value: '/' - - name: policies - value: - - PolicyDocument: - Statement: - - Sid: Stmt1403287045000 - Effect: Allow - Action: - - "ec2:AllocateAddress" - - "ec2:AssociateDhcpOptions" - - "ec2:AssociateIamInstanceProfile" - - "ec2:AssociateRouteTable" - - "ec2:AttachInternetGateway" - - "ec2:AttachVolume" - - "ec2:AuthorizeSecurityGroupEgress" - - "ec2:AuthorizeSecurityGroupIngress" - - "ec2:CancelSpotInstanceRequests" - - "ec2:CreateDhcpOptions" - - "ec2:CreateInternetGateway" - - "ec2:CreateKeyPair" - - "ec2:CreateNatGateway" - - "ec2:CreatePlacementGroup" - - "ec2:CreateRoute" - - "ec2:CreateRouteTable" - - "ec2:CreateSecurityGroup" - - "ec2:CreateSubnet" - - "ec2:CreateTags" - - "ec2:CreateVolume" - - "ec2:CreateVpc" - - "ec2:CreateVpcEndpoint" - - "ec2:DeleteDhcpOptions" - - "ec2:DeleteInternetGateway" - - "ec2:DeleteKeyPair" - - "ec2:DeleteNatGateway" - - "ec2:DeletePlacementGroup" - - "ec2:DeleteRoute" - - "ec2:DeleteRouteTable" - - "ec2:DeleteSecurityGroup" - - "ec2:DeleteSubnet" - - "ec2:DeleteTags" - - "ec2:DeleteVolume" - - "ec2:DeleteVpc" - - "ec2:DeleteVpcEndpoints" - - "ec2:DescribeAvailabilityZones" - - "ec2:DescribeIamInstanceProfileAssociations" - - "ec2:DescribeInstanceStatus" - - "ec2:DescribeInstances" - - "ec2:DescribeInternetGateways" - - "ec2:DescribeNatGateways" - - "ec2:DescribePlacementGroups" - - "ec2:DescribePrefixLists" - - "ec2:DescribeReservedInstancesOfferings" - - "ec2:DescribeRouteTables" - - "ec2:DescribeSecurityGroups" - - "ec2:DescribeSpotInstanceRequests" - - "ec2:DescribeSpotPriceHistory" - - "ec2:DescribeSubnets" - - "ec2:DescribeVolumes" - - "ec2:DescribeVpcs" - - "ec2:DescribeVpcAttribute" - - "ec2:DescribeNetworkAcls" - - "ec2:DetachInternetGateway" - - "ec2:DisassociateIamInstanceProfile" - - "ec2:DisassociateRouteTable" - - "ec2:ModifyVpcAttribute" - - "ec2:ReleaseAddress" - - "ec2:ReplaceIamInstanceProfileAssociation" - - "ec2:ReplaceRoute" - - "ec2:RequestSpotInstances" - - "ec2:RevokeSecurityGroupEgress" - - "ec2:RevokeSecurityGroupIngress" - - "ec2:RunInstances" - - "ec2:TerminateInstances" - Resource: - - "*" - - Effect: Allow - Action: - - "iam:CreateServiceLinkedRole" - - "iam:PutRolePolicy" - Resource: - - arn:aws:iam::*:role/aws-service-role/spot.amazonaws.com/AWSServiceRoleForEC2Spot - Condition: - StringLike: - "iam:AWSServiceName": spot.amazonaws.com - Version: '2012-10-17' - PolicyName: "{{ stack_name }}-{{ stack_env }}-policy" - exports: - - aws_iam_role_arn: aws_iam_cross_account_role_arn - - name: databricks_account/credentials - props: - - name: credentials_name - value: "{{ stack_name }}-{{ stack_env }}-credentials" - - name: aws_credentials - value: - sts_role: - role_arn: "{{ aws_iam_cross_account_role_arn }}" - exports: - - databricks_credentials_id - - databricks_role_external_id - - name: aws/iam/databricks_compute_role - file: aws/iam/iam_role.iql - props: - - name: role_name - value: "{{ stack_name }}-{{ stack_env }}-compute-role" - - name: assume_role_policy_document - value: - Version: "2012-10-17" - Statement: - - Action: "sts:AssumeRole" - Effect: "Allow" - Principal: - AWS: "{{ 'arn:aws:iam::314146311478:root' if trustInternalAccount == 'true' else 'arn:aws:iam::414351767826:root' }}" - Condition: - StringEquals: - sts:ExternalId: "{{ databricks_account_id }}" - - name: description - value: 'allows Databricks to access compute resources in ({{ stack_name }}-{{ stack_env }})' - - name: path - value: '/' - - name: policies - value: - - PolicyName: "Base" - PolicyDocument: - Version: "2012-10-17" - Statement: - - Sid: "CreateEC2ResourcesWithRequestTag" - Effect: "Allow" - Action: - - "ec2:CreateFleet" - - "ec2:CreateLaunchTemplate" - - "ec2:CreateVolume" - - "ec2:RequestSpotInstances" - - "ec2:RunInstances" - Resource: ["*"] - Condition: - StringEquals: - aws:RequestTag/Vendor: "Databricks" - - Sid: "AllowDatabricksTagOnCreate" - Effect: "Allow" - Action: ["ec2:CreateTags"] - Resource: ["*"] - Condition: - StringEquals: - ec2:CreateAction: - - "CreateFleet" - - "CreateLaunchTemplate" - - "CreateVolume" - - "RequestSpotInstances" - - "RunInstances" - - Sid: "UpdateByResourceTags" - Effect: "Allow" - Action: - - "ec2:AssignPrivateIpAddresses" - - "ec2:AssociateIamInstanceProfile" - - "ec2:AttachVolume" - - "ec2:AuthorizeSecurityGroupEgress" - - "ec2:AuthorizeSecurityGroupIngress" - - "ec2:CancelSpotInstanceRequests" - - "ec2:CreateFleet" - - "ec2:CreateLaunchTemplate" - - "ec2:CreateLaunchTemplateVersion" - - "ec2:CreateVolume" - - "ec2:DetachVolume" - - "ec2:DisassociateIamInstanceProfile" - - "ec2:ModifyFleet" - - "ec2:ModifyLaunchTemplate" - - "ec2:RequestSpotInstances" - - "ec2:RevokeSecurityGroupEgress" - - "ec2:RevokeSecurityGroupIngress" - - "ec2:RunInstances" - Resource: ["*"] - Condition: - StringEquals: - ec2:ResourceTag/Vendor: "Databricks" - - Sid: "GetByResourceTags" - Effect: "Allow" - Action: ["ec2:GetLaunchTemplateData"] - Resource: ["*"] - Condition: - StringEquals: - ec2:ResourceTag/Vendor: "Databricks" - - Sid: "DeleteByResourceTags" - Effect: "Allow" - Action: - - "ec2:DeleteFleets" - - "ec2:DeleteLaunchTemplate" - - "ec2:DeleteLaunchTemplateVersions" - - "ec2:DeleteTags" - - "ec2:DeleteVolume" - - "ec2:TerminateInstances" - Resource: ["*"] - Condition: - StringEquals: - ec2:ResourceTag/Vendor: "Databricks" - - Sid: "DescribeResources" - Effect: "Allow" - Action: - - "ec2:DescribeAvailabilityZones" - - "ec2:DescribeFleets" - - "ec2:DescribeIamInstanceProfileAssociations" - - "ec2:DescribeInstances" - - "ec2:DescribeInstanceStatus" - - "ec2:DescribeInternetGateways" - - "ec2:DescribeLaunchTemplates" - - "ec2:DescribeLaunchTemplateVersions" - - "ec2:DescribeNatGateways" - - "ec2:DescribeNetworkAcls" - - "ec2:DescribePrefixLists" - - "ec2:DescribeReservedInstancesOfferings" - - "ec2:DescribeRouteTables" - - "ec2:DescribeSecurityGroups" - - "ec2:DescribeSpotInstanceRequests" - - "ec2:DescribeSpotPriceHistory" - - "ec2:DescribeSubnets" - - "ec2:DescribeVolumes" - - "ec2:DescribeVpcs" - - "ec2:GetSpotPlacementScores" - Resource: ["*"] - exports: - - aws_iam_role_arn: databricks_compute_role_arn -# ==================================================================================== -# UC Metastore with KMS Encryption -# ==================================================================================== - - name: aws/kms/metastore_key - props: - - name: description - value: "KMS key for {{ stack_name }}-{{ stack_env }} Unity Catalog metastore encryption" - - name: key_policy - value: - Version: "2012-10-17" - Statement: - - Sid: "Enable IAM User Permissions" - Effect: "Allow" - Principal: - AWS: "arn:aws:iam::{{ aws_account }}:root" - Action: "kms:*" - Resource: "*" - - Sid: "Allow Metastore Role to Use Key" - Effect: "Allow" - Principal: - AWS: "arn:aws:iam::{{ aws_account }}:role/{{ stack_name }}-{{ stack_env }}-metastore-role" - Action: - - "kms:Decrypt" - - "kms:Encrypt" - - "kms:GenerateDataKey" - - "kms:DescribeKey" - - "kms:CreateGrant" - - "kms:RetireGrant" - Resource: "*" - - Sid: "Allow Databricks to Use Key" - Effect: "Allow" - Principal: - AWS: "arn:aws:iam::{{ databricks_aws_account_id }}:root" - Action: - - "kms:Decrypt" - - "kms:GenerateDataKey" - - "kms:DescribeKey" - Resource: "*" - Condition: - StringEquals: - "kms:ViaService": "s3.{{ region }}.amazonaws.com" - - name: tags - value: - - Key: Purpose - Value: "UC Metastore Encryption" - merge: - - global_tags - exports: - - key_id: metastore_kms_key_id - - key_arn: metastore_kms_key_arn - - - name: aws/kms/metastore_key_alias - props: - - name: alias_name - value: "alias/{{ stack_name }}-{{ stack_env }}-metastore" - - name: target_key_id - value: "{{ metastore_kms_key_id }}" - - - name: aws/s3/metastore_bucket - props: - - name: bucket_name - value: "{{ stack_name }}-{{ stack_env }}-metastore" - - name: ownership_controls - value: - Rules: - - ObjectOwnership: "BucketOwnerPreferred" - - name: bucket_encryption - value: - ServerSideEncryptionConfiguration: - - BucketKeyEnabled: true - ServerSideEncryptionByDefault: - SSEAlgorithm: "aws:kms" - KMSMasterKeyID: "{{ metastore_kms_key_arn }}" - - name: public_access_block_configuration - value: - BlockPublicAcls: true - IgnorePublicAcls: true - BlockPublicPolicy: true - RestrictPublicBuckets: true - - name: versioning_configuration - value: - Status: "Enabled" - - name: lifecycle_configuration - value: - Rules: - - Id: "DeleteOldVersions" - Status: "Enabled" - NoncurrentVersionExpiration: - NoncurrentDays: 30 - AbortIncompleteMultipartUpload: - DaysAfterInitiation: 7 - - name: logging_configuration - value: - TargetBucket: "{{ stack_name }}-{{ stack_env }}-logs" - TargetPrefix: "s3-access-logs/metastore/" - - name: tags - value: - - Key: Purpose - Value: "Unity Catalog Metastore" - - Key: DataClassification - Value: "Metadata" - merge: - - global_tags - exports: - - bucket_name: aws_s3_metastore_bucket_name - - bucket_arn: aws_s3_metastore_bucket_arn - - - name: aws/iam/metastore_access_role - file: aws/iam/iam_role.iql - props: - - name: role_name - value: "{{ stack_name }}-{{ stack_env }}-metastore-role" - - name: assume_role_policy_document - value: - Version: "2012-10-17" - Statement: - - Effect: "Allow" - Principal: - AWS: - - "arn:aws:iam::414351767826:role/unity-catalog-prod-UCMasterRole-14S5ZJVKOTYTL" - Action: "sts:AssumeRole" - Condition: - StringEquals: - sts:ExternalId: "0000" # Placeholder - - name: description - value: 'Unity Catalog metastore access role for ({{ stack_name }}-{{ stack_env }})' - - name: path - value: '/' - - name: policies - value: - - PolicyName: "MetastoreS3Access" - PolicyDocument: - Version: "2012-10-17" - Statement: - - Sid: "S3MetastoreBucketAccess" - Effect: "Allow" - Action: - - "s3:GetObject" - - "s3:PutObject" - - "s3:DeleteObject" - - "s3:ListBucket" - - "s3:GetBucketLocation" - - "s3:GetLifecycleConfiguration" - - "s3:PutLifecycleConfiguration" - - "s3:ListBucketMultipartUploads" - - "s3:ListMultipartUploadParts" - - "s3:AbortMultipartUpload" - Resource: - - "{{ aws_s3_metastore_bucket_arn }}/*" - - "{{ aws_s3_metastore_bucket_arn }}" - - Sid: "AssumeRoleSelfTrust" - Effect: "Allow" - Action: ["sts:AssumeRole"] - Resource: ["arn:aws:iam::{{ aws_account }}:role/{{ stack_name }}-{{ stack_env }}-metastore-role"] - - PolicyName: "MetastoreKMSAccess" - PolicyDocument: - Version: "2012-10-17" - Statement: - - Sid: "KMSKeyAccess" - Effect: "Allow" - Action: - - "kms:Decrypt" - - "kms:Encrypt" - - "kms:GenerateDataKey" - - "kms:DescribeKey" - - "kms:CreateGrant" - - "kms:RetireGrant" - Resource: - - "{{ metastore_kms_key_arn }}" - Condition: - StringEquals: - "kms:ViaService": "s3.{{ region }}.amazonaws.com" - - PolicyName: "MetastoreFileEvents" - PolicyDocument: - Version: "2012-10-17" - Statement: - - Sid: "ManagedFileEventsSetupStatement" - Effect: "Allow" - Action: - - "s3:GetBucketNotification" - - "s3:PutBucketNotification" - - "sns:ListSubscriptionsByTopic" - - "sns:GetTopicAttributes" - - "sns:SetTopicAttributes" - - "sns:CreateTopic" - - "sns:TagResource" - - "sns:Publish" - - "sns:Subscribe" - - "sqs:CreateQueue" - - "sqs:DeleteMessage" - - "sqs:ReceiveMessage" - - "sqs:SendMessage" - - "sqs:GetQueueUrl" - - "sqs:GetQueueAttributes" - - "sqs:SetQueueAttributes" - - "sqs:TagQueue" - - "sqs:ChangeMessageVisibility" - - "sqs:PurgeQueue" - Resource: - - "{{ aws_s3_metastore_bucket_arn }}" - - "arn:aws:sqs:{{ region }}:{{ aws_account }}:csms-*" - - "arn:aws:sns:{{ region }}:{{ aws_account }}:csms-*" - - Sid: "ManagedFileEventsListStatement" - Effect: "Allow" - Action: ["sqs:ListQueues", "sqs:ListQueueTags", "sns:ListTopics"] - Resource: "*" - - Sid: "ManagedFileEventsTeardownStatement" - Effect: "Allow" - Action: ["sns:Unsubscribe", "sns:DeleteTopic", "sqs:DeleteQueue"] - Resource: - - "arn:aws:sqs:{{ region }}:{{ aws_account }}:csms-*" - - "arn:aws:sns:{{ region }}:{{ aws_account }}:csms-*" - - name: tags - value: - - Key: Purpose - Value: "Unity Catalog Storage Credential" - merge: - - global_tags - exports: - - aws_iam_role_arn: metastore_access_role_arn - - - name: databricks_account/metastore - props: - - name: name - value: "{{ stack_name }}-{{ stack_env }}-metastore" - - name: storage_root - value: "s3://{{ aws_s3_metastore_bucket_name }}" - - name: region - value: "{{ region }}" - exports: - - metastore_id: databricks_metastore_id - - - name: databricks_account/uc_storage_credentials - props: - - name: metastore_id - value: "{{ databricks_metastore_id }}" - - name: credential_info - value: - name: "{{ stack_name }}-{{ stack_env }}-storage-credential" - comment: "Storage credential for {{ stack_name }} {{ stack_env }} metastore S3 access" - read_only: false - aws_iam_role: - role_arn: "{{ metastore_access_role_arn }}" - skip_validation: false - exports: - - credential_id: storage_credential_id - - external_id: storage_credential_external_id - - - name: aws/iam/update_metastore_role_trust_policy - type: command - props: - - name: role_name - value: "{{ stack_name }}-{{ stack_env }}-metastore-role" - - name: assume_role_policy_document - value: - Version: "2012-10-17" - Statement: - - Effect: "Allow" - Principal: - AWS: - - "arn:aws:iam::414351767826:role/unity-catalog-prod-UCMasterRole-14S5ZJVKOTYTL" - - "arn:aws:iam::{{ aws_account }}:role/{{ stack_name }}-{{ stack_env }}-metastore-role" - Action: "sts:AssumeRole" - Condition: - StringEquals: - sts:ExternalId: "{{ storage_credential_external_id }}" - - - name: databricks_account/validate_storage_credential - type: command - props: - - name: credential_id - value: "{{ storage_credential_id }}" - - name: metastore_id - value: "{{ databricks_metastore_id }}" - - - name: databricks_account/external_location - props: - - name: metastore_id - value: "{{ databricks_metastore_id }}" - - name: name - value: "{{ stack_name }}-{{ stack_env }}-metastore-location" - - name: url - value: "s3://{{ aws_s3_metastore_bucket_name }}/" - - name: credential_name - value: "{{ stack_name }}-{{ stack_env }}-storage-credential" - - name: comment - value: "External location for {{ stack_name }} {{ stack_env }} metastore root" - exports: - - external_location_id - - - name: databricks_account/catalog - props: - - name: metastore_id - value: "{{ databricks_metastore_id }}" - - name: name - value: "{{ stack_name }}_{{ stack_env }}" - - name: comment - value: "Main catalog for {{ stack_name }} {{ stack_env }} environment" - - name: storage_root - value: "s3://{{ aws_s3_metastore_bucket_name }}/catalogs/{{ stack_name }}_{{ stack_env }}" - exports: - - catalog_id - - - name: databricks_account/metastore_assignment - props: - - name: workspace_id - value: "{{ databricks_workspace_id }}" - - name: metastore_id - value: "{{ databricks_metastore_id }}" - - name: default_catalog_name - value: "{{ stack_name }}_{{ stack_env }}" - - - name: databricks_account/catalog_workspace_binding - props: - - name: catalog_name - value: "{{ stack_name }}_{{ stack_env }}" - - name: workspace_id - value: "{{ databricks_workspace_id }}" - - - name: databricks_account/catalog_permissions - props: - - name: catalog_name - value: "{{ stack_name }}_{{ stack_env }}" - - name: principal - value: "{{ databricks_group_id }}" - - name: privileges - value: - - "USE_CATALOG" - - "CREATE_SCHEMA" - - "CREATE_TABLE" - - "CREATE_FUNCTION" - - -# ==================================================================================== -# AWS VPC Networking -# ==================================================================================== - - name: aws/vpc/vpc - props: - - name: cidr_block - values: - prd: - value: "10.53.0.0/16" - sit: - value: "10.1.0.0/16" - dev: - value: "10.2.0.0/16" - - name: tags - value: - - Key: Name - Value: "{{ stack_name }}-{{ stack_env }}-vpc" - merge: - - global_tags - - name: idempotency_token - value: 019447a0-b84a-7b7f-bca5-2ee320207e51 - exports: - - vpc_id - - name: aws/vpc/nat_subnet - file: aws/vpc/subnet.iql - props: - - name: availability_zone - value: "us-east-1a" - - name: cidr_block - values: - prd: - value: "10.53.0.0/24" - sit: - value: "10.1.0.0/19" - dev: - value: "10.2.0.0/19" - - name: tags - value: - - Key: Name - Value: "{{ stack_name }}-{{ stack_env }}-nat-subnet" - merge: - - global_tags - exports: - - subnet_id: nat_subnet_id - - name: aws/vpc/cluster_subnet1 - file: aws/vpc/subnet.iql - props: - - name: availability_zone - value: "us-east-1b" - - name: cidr_block - values: - prd: - value: "10.53.160.0/19" - sit: - value: "10.1.0.0/19" - dev: - value: "10.2.0.0/19" - - name: tags - value: - - Key: Name - Value: "{{ stack_name }}-{{ stack_env }}-subnet-1" - merge: - - global_tags - exports: - - subnet_id: cluster_subnet1_id - - name: aws/vpc/cluster_subnet2 - file: aws/vpc/subnet.iql - props: - - name: availability_zone - value: "us-east-1c" - - name: cidr_block - values: - prd: - value: "10.53.192.0/19" - sit: - value: "10.1.32.0/19" - dev: - value: "10.2.32.0/19" - - name: tags - value: - - Key: Name - Value: "{{ stack_name }}-{{ stack_env }}-subnet-2" - merge: - - global_tags - exports: - - subnet_id: cluster_subnet2_id - - name: aws/vpc/inet_gateway - props: - - name: tags - value: - - Key: Name - Value: "{{ stack_name }}-{{ stack_env }}-inet-gateway" - merge: ['global_tags'] - - name: idempotency_token - value: 019447a5-f076-75f8-9173-092df5a66d35 - exports: - - internet_gateway_id - - name: aws/vpc/inet_gw_attachment - props: [] - - name: aws/vpc/nat_route_table - file: aws/vpc/route_table.iql - props: - - name: route_table_name - value: "{{ stack_name }}-{{ stack_env }}-nat-route-table" - - name: tags - value: - - Key: Name - Value: "{{ stack_name }}-{{ stack_env }}-nat-route-table" - merge: ['global_tags'] - exports: - - route_table_id: nat_route_table_id - - name: aws/vpc/nat_route_to_inet - file: aws/vpc/inet_route.iql - props: - - name: route_table_id - value: "{{ nat_route_table_id }}" - exports: - - inet_route_indentifer: nat_inet_route_indentifer - - name: aws/vpc/nat_subnet_rt_assn - file: aws/vpc/subnet_rt_assn.iql - props: - - name: subnet_id - value: "{{ nat_subnet_id }}" - - name: route_table_id - value: "{{ nat_route_table_id }}" - - name: idempotency_token - value: 3eaf3040-1c8e-41a6-8be6-512ccaf5ff4e - exports: - - route_table_assn_id: nat_subnet_rt_assn_id - - name: aws/vpc/private_route_table - file: aws/vpc/route_table.iql - props: - - name: route_table_name - value: "{{ stack_name }}-{{ stack_env }}-private-route-table" - - name: tags - value: - - Key: Name - Value: "{{ stack_name }}-{{ stack_env }}-private-route-table" - merge: ['global_tags'] - exports: - - route_table_id: private_route_table_id - - name: aws/vpc/subnet_rt_assn1 - file: aws/vpc/subnet_rt_assn.iql - props: - - name: route_table_id - value: "{{ private_route_table_id }}" - - name: subnet_id - value: "{{ cluster_subnet1_id }}" - - name: idempotency_token - value: 019447aa-1c7a-775b-91dc-04db7c49f4a7 - exports: - - route_table_assn_id: cluster_subnet1_rt_assn_id - - name: aws/vpc/subnet_rt_assn2 - file: aws/vpc/subnet_rt_assn.iql - props: - - name: route_table_id - value: "{{ private_route_table_id }}" - - name: subnet_id - value: "{{ cluster_subnet2_id }}" - - name: idempotency_token - value: c19c9077-c25d-46a4-a299-7bd93d773e58 - exports: - - route_table_assn_id: cluster_subnet2_rt_assn_id - - name: aws/vpc/elastic_ip - props: - - name: tags - value: - - Key: Name - Value: "{{ stack_name }}-{{ stack_env }}-eip" - merge: ['global_tags'] - - name: idempotency_token - value: 01945908-b80d-7e51-b52c-5e93dea9cbdb - exports: - - eip_allocation_id - - eip_public_id - - name: aws/vpc/nat_gateway - props: - - name: tags - value: - - Key: Name - Value: "{{ stack_name }}-{{ stack_env }}-nat-gateway" - merge: ['global_tags'] - - name: idempotency_token - value: 019447a5-f076-75f8-9173-092df5a66d35 - exports: - - nat_gateway_id - - name: aws/vpc/nat_inet_route - props: - - name: route_table_id - value: "{{ private_route_table_id }}" - - name: nat_gateway_id - value: "{{ nat_gateway_id }}" - exports: - - nat_inet_route_indentifer - - name: aws/vpc/security_group - props: - - name: group_name - value: "{{ stack_name }}-{{ stack_env }}-sg" - - name: group_description - value: "security group for {{ stack_name }} ({{ stack_env }} environment)" - - name: tags - value: - - Key: Name - Value: "{{ stack_name }}-{{ stack_env }}-sg" - merge: ['global_tags'] - exports: - - security_group_id - - name: aws/vpc/security_group_rules - props: - - name: security_group_ingress - value: - - FromPort: 0 - ToPort: 65535 - SourceSecurityGroupOwnerId: "{{ aws_account }}" - IpProtocol: tcp - SourceSecurityGroupId: "{{ security_group_id }}" - - FromPort: 0 - ToPort: 65535 - SourceSecurityGroupOwnerId: "{{ aws_account }}" - IpProtocol: "udp" - SourceSecurityGroupId: "{{ security_group_id }}" - - CidrIp: "3.237.73.224/28" - FromPort: 443 - ToPort: 443 - IpProtocol: "tcp" - - CidrIp: "54.156.226.103/32" - FromPort: 443 - ToPort: 443 - IpProtocol: "tcp" - - name: security_group_egress - value: - - FromPort: 0 - ToPort: 65535 - IpProtocol: "tcp" - DestinationSecurityGroupId: "{{ security_group_id }}" - Description: "Allow all TCP outbound access to the same security group" - - CidrIp: "0.0.0.0/0" - Description: Allow all outbound traffic - FromPort: -1 - ToPort: -1 - IpProtocol: "-1" - - CidrIp: "0.0.0.0/0" - FromPort: 3306 - ToPort: 3306 - IpProtocol: "tcp" - Description: "Allow accessing the Databricks metastore" - - FromPort: 0 - ToPort: 65535 - IpProtocol: "udp" - DestinationSecurityGroupId: "{{ security_group_id }}" - Description: "Allow all UDP outbound access to the same security group" - - CidrIp: "0.0.0.0/0" - FromPort: 443 - ToPort: 443 - IpProtocol: "tcp" - Description: "Allow accessing Databricks infrastructure, cloud data sources, and library repositories" - - name: databricks_account/network - props: - - name: databricks_network_name - value: "{{ stack_name }}-{{ stack_env }}-network" - - name: subnet_ids - value: - - "{{ cluster_subnet1_id }}" - - "{{ cluster_subnet2_id }}" - - name: security_group_ids - value: - - "{{ security_group_id }}" - exports: - - databricks_network_id -# ==================================================================================== -# AWS Storage -# ==================================================================================== - - name: aws/s3/workspace_bucket - props: - - name: bucket_name - value: "{{ stack_name }}-{{ stack_env }}-root-bucket" - - name: ownership_controls - value: - Rules: - - ObjectOwnership: "BucketOwnerPreferred" - - name: bucket_encryption - value: - ServerSideEncryptionConfiguration: - - BucketKeyEnabled: true - ServerSideEncryptionByDefault: - SSEAlgorithm: "AES256" - - name: public_access_block_configuration - value: - BlockPublicAcls: true - IgnorePublicAcls: true - BlockPublicPolicy: true - RestrictPublicBuckets: true - - name: versioning_configuration - value: - Status: "Suspended" - exports: - - aws_s3_workspace_bucket_name - - aws_s3_workspace_bucket_arn - - name: aws/s3/workspace_bucket_policy - props: - - name: policy_document - value: - Version: "2012-10-17" - Statement: - - Sid: Grant Databricks Access - Effect: Allow - Principal: - AWS: "arn:aws:iam::{{ databricks_aws_account_id }}:root" - Action: - - "s3:GetObject" - - "s3:GetObjectVersion" - - "s3:PutObject" - - "s3:DeleteObject" - - "s3:ListBucket" - - "s3:GetBucketLocation" - Resource: - - "{{ aws_s3_workspace_bucket_arn }}/*" - - "{{ aws_s3_workspace_bucket_arn }}" - - name: aws/vpc/vpc_endpoint - props: - - name: service_name - value: "com.amazonaws.{{ region }}.s3" - - name: vpc_endpoint_type - value: "Gateway" - - name: route_table_ids - value: - - "{{ private_route_table_id }}" - - name: tags - value: - - Key: Name - Value: "{{ stack_name }}-{{ stack_env }}-s3-vpc-endpoint" - merge: - - global_tags - exports: - - s3_gateway_endpoint_id - - name: databricks_account/storage_configuration - props: - - name: storage_configuration_name - value: "{{ stack_name }}-{{ stack_env }}-storage" - - name: root_bucket_info - value: - bucket_name: "{{ aws_s3_workspace_bucket_name }}" - exports: - - databricks_storage_configuration_id -# ==================================================================================== -# DBX Workspace -# ==================================================================================== - - name: databricks_account/workspace - props: - - name: workspace_name - value: "{{ stack_name }}-{{ stack_env }}-workspace" - - name: network_id - value: "{{ databricks_network_id }}" - - name: aws_region - value: "{{ region }}" - - name: credentials_id - value: "{{ databricks_credentials_id }}" - - name: storage_configuration_id - value: "{{ databricks_storage_configuration_id }}" - - name: pricing_tier - value: PREMIUM - exports: - - databricks_workspace_id - - databricks_deployment_name - - name: databricks_account/workspace_group - props: - - name: display_name - value: "{{ stack_name }}-{{ stack_env }}-workspace-admins" - exports: - - databricks_group_id - - name: databricks_account/get_users - type: query - props: - - name: users - value: - - "javen@stackql.io" - - "krimmer@stackql.io" - exports: - - databricks_workspace_group_members - - name: databricks_account/update_group_membership - type: command - props: [] - - name: databricks_account/workspace_permission_assignments - props: [] - - name: databricks_workspace/all_purpose_cluster - props: - - name: cluster_name - value: single-user-single-node-cluster - - name: num_workers - value: 0 - - name: is_single_node - value: true - - name: kind - value: CLASSIC_PREVIEW - - name: spark_version - value: 15.4.x-scala2.12 - - name: node_type_id - value: m7g.large - - name: data_security_mode - value: SINGLE_USER - - name: runtime_engine - value: PHOTON - - name: single_user_name - value: javen@stackql.io - - name: aws_attributes - value: - ebs_volume_count: 1 - ebs_volume_size: 100 - - name: custom_tags - description: Additional tags for cluster resources (max 45 tags) - value: - Provisioner: stackql - StackName: "{{ stack_name }}" - StackEnv: "{{ stack_env }}" - exports: - - databricks_cluster_id - - databricks_cluster_state diff --git a/examples/databricks/all-purpose-cluster/README.md b/examples/databricks/classic/README.md similarity index 100% rename from examples/databricks/all-purpose-cluster/README.md rename to examples/databricks/classic/README.md diff --git a/examples/databricks/all-purpose-cluster/assets/auto-provisioned-worskpace.png b/examples/databricks/classic/assets/auto-provisioned-worskpace.png similarity index 100% rename from examples/databricks/all-purpose-cluster/assets/auto-provisioned-worskpace.png rename to examples/databricks/classic/assets/auto-provisioned-worskpace.png diff --git a/examples/databricks/all-purpose-cluster/assets/awaiting-subscription-resources.png b/examples/databricks/classic/assets/awaiting-subscription-resources.png similarity index 100% rename from examples/databricks/all-purpose-cluster/assets/awaiting-subscription-resources.png rename to examples/databricks/classic/assets/awaiting-subscription-resources.png diff --git a/examples/databricks/all-purpose-cluster/assets/capture-cross-databricks-aws-account-id.png b/examples/databricks/classic/assets/capture-cross-databricks-aws-account-id.png similarity index 100% rename from examples/databricks/all-purpose-cluster/assets/capture-cross-databricks-aws-account-id.png rename to examples/databricks/classic/assets/capture-cross-databricks-aws-account-id.png diff --git a/examples/databricks/all-purpose-cluster/assets/capture-databricks-account-id.png b/examples/databricks/classic/assets/capture-databricks-account-id.png similarity index 100% rename from examples/databricks/all-purpose-cluster/assets/capture-databricks-account-id.png rename to examples/databricks/classic/assets/capture-databricks-account-id.png diff --git a/examples/databricks/all-purpose-cluster/assets/create-aws-databricks-subscription.png b/examples/databricks/classic/assets/create-aws-databricks-subscription.png similarity index 100% rename from examples/databricks/all-purpose-cluster/assets/create-aws-databricks-subscription.png rename to examples/databricks/classic/assets/create-aws-databricks-subscription.png diff --git a/examples/databricks/all-purpose-cluster/assets/create-cicd-agent.png b/examples/databricks/classic/assets/create-cicd-agent.png similarity index 100% rename from examples/databricks/all-purpose-cluster/assets/create-cicd-agent.png rename to examples/databricks/classic/assets/create-cicd-agent.png diff --git a/examples/databricks/all-purpose-cluster/assets/generate-secret-ui.png b/examples/databricks/classic/assets/generate-secret-ui.png similarity index 100% rename from examples/databricks/all-purpose-cluster/assets/generate-secret-ui.png rename to examples/databricks/classic/assets/generate-secret-ui.png diff --git a/examples/databricks/all-purpose-cluster/assets/grant-account-admin-cicd-agent.png b/examples/databricks/classic/assets/grant-account-admin-cicd-agent.png similarity index 100% rename from examples/databricks/all-purpose-cluster/assets/grant-account-admin-cicd-agent.png rename to examples/databricks/classic/assets/grant-account-admin-cicd-agent.png diff --git a/examples/databricks/all-purpose-cluster/convenience.sh b/examples/databricks/classic/convenience.sh similarity index 100% rename from examples/databricks/all-purpose-cluster/convenience.sh rename to examples/databricks/classic/convenience.sh diff --git a/examples/databricks/all-purpose-cluster/resources/aws/iam/iam_role.iql b/examples/databricks/classic/resources/aws/iam/iam_role.iql similarity index 93% rename from examples/databricks/all-purpose-cluster/resources/aws/iam/iam_role.iql rename to examples/databricks/classic/resources/aws/iam/iam_role.iql index ba2d140..eebcfcd 100644 --- a/examples/databricks/all-purpose-cluster/resources/aws/iam/iam_role.iql +++ b/examples/databricks/classic/resources/aws/iam/iam_role.iql @@ -49,6 +49,7 @@ AND path = '{{ path }}'; /*+ exports, retries=3, retry_delay=5 */ SELECT +'{{ role_name }}' as aws_iam_role_name, arn as aws_iam_role_arn FROM aws.iam.roles WHERE data__Identifier = '{{ role_name }}' diff --git a/examples/databricks/all-purpose-cluster/resources/aws/s3/workspace_bucket.iql b/examples/databricks/classic/resources/aws/s3/workspace_bucket.iql similarity index 100% rename from examples/databricks/all-purpose-cluster/resources/aws/s3/workspace_bucket.iql rename to examples/databricks/classic/resources/aws/s3/workspace_bucket.iql diff --git a/examples/databricks/all-purpose-cluster/resources/aws/s3/workspace_bucket_policy.iql b/examples/databricks/classic/resources/aws/s3/workspace_bucket_policy.iql similarity index 100% rename from examples/databricks/all-purpose-cluster/resources/aws/s3/workspace_bucket_policy.iql rename to examples/databricks/classic/resources/aws/s3/workspace_bucket_policy.iql diff --git a/examples/databricks/all-purpose-cluster/resources/aws/vpc/elastic_ip.iql b/examples/databricks/classic/resources/aws/vpc/elastic_ip.iql similarity index 100% rename from examples/databricks/all-purpose-cluster/resources/aws/vpc/elastic_ip.iql rename to examples/databricks/classic/resources/aws/vpc/elastic_ip.iql diff --git a/examples/databricks/all-purpose-cluster/resources/aws/vpc/get_main_route_table_id.iql b/examples/databricks/classic/resources/aws/vpc/get_main_route_table_id.iql similarity index 100% rename from examples/databricks/all-purpose-cluster/resources/aws/vpc/get_main_route_table_id.iql rename to examples/databricks/classic/resources/aws/vpc/get_main_route_table_id.iql diff --git a/examples/databricks/all-purpose-cluster/resources/aws/vpc/inet_gateway.iql b/examples/databricks/classic/resources/aws/vpc/inet_gateway.iql similarity index 100% rename from examples/databricks/all-purpose-cluster/resources/aws/vpc/inet_gateway.iql rename to examples/databricks/classic/resources/aws/vpc/inet_gateway.iql diff --git a/examples/databricks/all-purpose-cluster/resources/aws/vpc/inet_gw_attachment.iql b/examples/databricks/classic/resources/aws/vpc/inet_gw_attachment.iql similarity index 100% rename from examples/databricks/all-purpose-cluster/resources/aws/vpc/inet_gw_attachment.iql rename to examples/databricks/classic/resources/aws/vpc/inet_gw_attachment.iql diff --git a/examples/databricks/all-purpose-cluster/resources/aws/vpc/inet_route.iql b/examples/databricks/classic/resources/aws/vpc/inet_route.iql similarity index 100% rename from examples/databricks/all-purpose-cluster/resources/aws/vpc/inet_route.iql rename to examples/databricks/classic/resources/aws/vpc/inet_route.iql diff --git a/examples/databricks/all-purpose-cluster/resources/aws/vpc/nat_gateway.iql b/examples/databricks/classic/resources/aws/vpc/nat_gateway.iql similarity index 100% rename from examples/databricks/all-purpose-cluster/resources/aws/vpc/nat_gateway.iql rename to examples/databricks/classic/resources/aws/vpc/nat_gateway.iql diff --git a/examples/databricks/all-purpose-cluster/resources/aws/vpc/nat_inet_route.iql b/examples/databricks/classic/resources/aws/vpc/nat_inet_route.iql similarity index 100% rename from examples/databricks/all-purpose-cluster/resources/aws/vpc/nat_inet_route.iql rename to examples/databricks/classic/resources/aws/vpc/nat_inet_route.iql diff --git a/examples/databricks/all-purpose-cluster/resources/aws/vpc/route_table.iql b/examples/databricks/classic/resources/aws/vpc/route_table.iql similarity index 100% rename from examples/databricks/all-purpose-cluster/resources/aws/vpc/route_table.iql rename to examples/databricks/classic/resources/aws/vpc/route_table.iql diff --git a/examples/databricks/all-purpose-cluster/resources/aws/vpc/security_group.iql b/examples/databricks/classic/resources/aws/vpc/security_group.iql similarity index 100% rename from examples/databricks/all-purpose-cluster/resources/aws/vpc/security_group.iql rename to examples/databricks/classic/resources/aws/vpc/security_group.iql diff --git a/examples/databricks/all-purpose-cluster/resources/aws/vpc/security_group_rules.iql b/examples/databricks/classic/resources/aws/vpc/security_group_rules.iql similarity index 100% rename from examples/databricks/all-purpose-cluster/resources/aws/vpc/security_group_rules.iql rename to examples/databricks/classic/resources/aws/vpc/security_group_rules.iql diff --git a/examples/databricks/all-purpose-cluster/resources/aws/vpc/subnet.iql b/examples/databricks/classic/resources/aws/vpc/subnet.iql similarity index 100% rename from examples/databricks/all-purpose-cluster/resources/aws/vpc/subnet.iql rename to examples/databricks/classic/resources/aws/vpc/subnet.iql diff --git a/examples/databricks/all-purpose-cluster/resources/aws/vpc/subnet_rt_assn.iql b/examples/databricks/classic/resources/aws/vpc/subnet_rt_assn.iql similarity index 100% rename from examples/databricks/all-purpose-cluster/resources/aws/vpc/subnet_rt_assn.iql rename to examples/databricks/classic/resources/aws/vpc/subnet_rt_assn.iql diff --git a/examples/databricks/all-purpose-cluster/resources/aws/vpc/tag_main_vpc_route_table.iql b/examples/databricks/classic/resources/aws/vpc/tag_main_vpc_route_table.iql similarity index 100% rename from examples/databricks/all-purpose-cluster/resources/aws/vpc/tag_main_vpc_route_table.iql rename to examples/databricks/classic/resources/aws/vpc/tag_main_vpc_route_table.iql diff --git a/examples/databricks/all-purpose-cluster/resources/aws/vpc/vpc.iql b/examples/databricks/classic/resources/aws/vpc/vpc.iql similarity index 100% rename from examples/databricks/all-purpose-cluster/resources/aws/vpc/vpc.iql rename to examples/databricks/classic/resources/aws/vpc/vpc.iql diff --git a/examples/databricks/all-purpose-cluster/resources/aws/vpc/vpc_endpoint.iql b/examples/databricks/classic/resources/aws/vpc/vpc_endpoint.iql similarity index 100% rename from examples/databricks/all-purpose-cluster/resources/aws/vpc/vpc_endpoint.iql rename to examples/databricks/classic/resources/aws/vpc/vpc_endpoint.iql diff --git a/examples/databricks/all-purpose-cluster/resources/databricks_account/credentials.iql b/examples/databricks/classic/resources/databricks_account/credentials.iql similarity index 88% rename from examples/databricks/all-purpose-cluster/resources/databricks_account/credentials.iql rename to examples/databricks/classic/resources/databricks_account/credentials.iql index d83abc6..c0d8327 100644 --- a/examples/databricks/all-purpose-cluster/resources/databricks_account/credentials.iql +++ b/examples/databricks/classic/resources/databricks_account/credentials.iql @@ -27,7 +27,9 @@ AND JSON_EXTRACT(aws_credentials, '$.sts_role.role_arn') = '{{ aws_iam_cross_acc ) t /*+ exports */ -SELECT credentials_id as databricks_credentials_id, +SELECT +'{{ credentials_name }}' as databricks_credentials_name, +credentials_id as databricks_credentials_id, JSON_EXTRACT(aws_credentials, '$.sts_role.external_id') as databricks_role_external_id FROM databricks_account.provisioning.credentials WHERE account_id = '{{ databricks_account_id }}' diff --git a/examples/databricks/all-purpose-cluster/resources/databricks_account/get_users.iql b/examples/databricks/classic/resources/databricks_account/get_users.iql similarity index 100% rename from examples/databricks/all-purpose-cluster/resources/databricks_account/get_users.iql rename to examples/databricks/classic/resources/databricks_account/get_users.iql diff --git a/examples/databricks/all-purpose-cluster/resources/databricks_account/network.iql b/examples/databricks/classic/resources/databricks_account/network.iql similarity index 100% rename from examples/databricks/all-purpose-cluster/resources/databricks_account/network.iql rename to examples/databricks/classic/resources/databricks_account/network.iql diff --git a/examples/databricks/all-purpose-cluster/resources/databricks_account/storage_configuration.iql b/examples/databricks/classic/resources/databricks_account/storage_configuration.iql similarity index 100% rename from examples/databricks/all-purpose-cluster/resources/databricks_account/storage_configuration.iql rename to examples/databricks/classic/resources/databricks_account/storage_configuration.iql diff --git a/examples/databricks/all-purpose-cluster/resources/databricks_account/update_group_membership.iql b/examples/databricks/classic/resources/databricks_account/update_group_membership.iql similarity index 100% rename from examples/databricks/all-purpose-cluster/resources/databricks_account/update_group_membership.iql rename to examples/databricks/classic/resources/databricks_account/update_group_membership.iql diff --git a/examples/databricks/all-purpose-cluster/resources/databricks_account/workspace.iql b/examples/databricks/classic/resources/databricks_account/workspace.iql similarity index 100% rename from examples/databricks/all-purpose-cluster/resources/databricks_account/workspace.iql rename to examples/databricks/classic/resources/databricks_account/workspace.iql diff --git a/examples/databricks/all-purpose-cluster/resources/databricks_account/workspace_group.iql b/examples/databricks/classic/resources/databricks_account/workspace_group.iql similarity index 100% rename from examples/databricks/all-purpose-cluster/resources/databricks_account/workspace_group.iql rename to examples/databricks/classic/resources/databricks_account/workspace_group.iql diff --git a/examples/databricks/all-purpose-cluster/resources/databricks_account/workspace_permission_assignments.iql b/examples/databricks/classic/resources/databricks_account/workspace_permission_assignments.iql similarity index 100% rename from examples/databricks/all-purpose-cluster/resources/databricks_account/workspace_permission_assignments.iql rename to examples/databricks/classic/resources/databricks_account/workspace_permission_assignments.iql diff --git a/examples/databricks/all-purpose-cluster/resources/databricks_workspace/all_purpose_cluster.iql b/examples/databricks/classic/resources/databricks_workspace/all_purpose_cluster.iql similarity index 100% rename from examples/databricks/all-purpose-cluster/resources/databricks_workspace/all_purpose_cluster.iql rename to examples/databricks/classic/resources/databricks_workspace/all_purpose_cluster.iql diff --git a/examples/databricks/all-purpose-cluster/sec/.gitignore b/examples/databricks/classic/sec/.gitignore similarity index 100% rename from examples/databricks/all-purpose-cluster/sec/.gitignore rename to examples/databricks/classic/sec/.gitignore diff --git a/examples/databricks/classic/stackql_manifest.yml b/examples/databricks/classic/stackql_manifest.yml new file mode 100644 index 0000000..f9be4d1 --- /dev/null +++ b/examples/databricks/classic/stackql_manifest.yml @@ -0,0 +1,1059 @@ +version: 1 +name: "databricks-all-purpose-cluster" +description: creates a databricks workspace and all-purpose cluster +providers: + - aws + - databricks_account + - databricks_workspace +globals: + - name: databricks_account_id + description: databricks account id + value: "{{ DATABRICKS_ACCOUNT_ID }}" + - name: databricks_aws_account_id + description: databricks AWS account id + value: "{{ DATABRICKS_AWS_ACCOUNT_ID }}" + - name: aws_account + description: aws_account id + value: "{{ AWS_ACCOUNT_ID }}" + - name: region + description: aws region + value: "{{ AWS_REGION }}" + - name: global_tags + value: + - Key: Provisioner + Value: stackql + - Key: StackName + Value: "{{ stack_name }}" + - Key: StackEnv + Value: "{{ stack_env }}" +resources: +# ==================================================================================== +# AWS IAM +# ==================================================================================== + + - name: aws/iam/cross_account_role + file: aws/iam/iam_role.iql + props: + - name: role_name + value: "{{ stack_name }}-{{ stack_env }}-role" + - name: assume_role_policy_document + value: + Version: "2012-10-17" + Statement: + - Sid: "" + Effect: "Allow" + Principal: + AWS: "arn:aws:iam::{{ databricks_aws_account_id }}:root" + Action: "sts:AssumeRole" + Condition: + StringEquals: + sts:ExternalId: "{{ databricks_account_id }}" + - name: description + value: 'allows Databricks to access resources in ({{ stack_name }}-{{ stack_env }})' + - name: path + value: '/' + - name: policies + value: + - PolicyDocument: + Statement: + - Sid: Stmt1403287045000 + Effect: Allow + Action: + - "ec2:AllocateAddress" + - "ec2:AssociateDhcpOptions" + - "ec2:AssociateIamInstanceProfile" + - "ec2:AssociateRouteTable" + - "ec2:AttachInternetGateway" + - "ec2:AttachVolume" + - "ec2:AuthorizeSecurityGroupEgress" + - "ec2:AuthorizeSecurityGroupIngress" + - "ec2:CancelSpotInstanceRequests" + - "ec2:CreateDhcpOptions" + - "ec2:CreateInternetGateway" + - "ec2:CreateKeyPair" + - "ec2:CreateNatGateway" + - "ec2:CreatePlacementGroup" + - "ec2:CreateRoute" + - "ec2:CreateRouteTable" + - "ec2:CreateSecurityGroup" + - "ec2:CreateSubnet" + - "ec2:CreateTags" + - "ec2:CreateVolume" + - "ec2:CreateVpc" + - "ec2:CreateVpcEndpoint" + - "ec2:DeleteDhcpOptions" + - "ec2:DeleteInternetGateway" + - "ec2:DeleteKeyPair" + - "ec2:DeleteNatGateway" + - "ec2:DeletePlacementGroup" + - "ec2:DeleteRoute" + - "ec2:DeleteRouteTable" + - "ec2:DeleteSecurityGroup" + - "ec2:DeleteSubnet" + - "ec2:DeleteTags" + - "ec2:DeleteVolume" + - "ec2:DeleteVpc" + - "ec2:DeleteVpcEndpoints" + - "ec2:DescribeAvailabilityZones" + - "ec2:DescribeIamInstanceProfileAssociations" + - "ec2:DescribeInstanceStatus" + - "ec2:DescribeInstances" + - "ec2:DescribeInternetGateways" + - "ec2:DescribeNatGateways" + - "ec2:DescribePlacementGroups" + - "ec2:DescribePrefixLists" + - "ec2:DescribeReservedInstancesOfferings" + - "ec2:DescribeRouteTables" + - "ec2:DescribeSecurityGroups" + - "ec2:DescribeSpotInstanceRequests" + - "ec2:DescribeSpotPriceHistory" + - "ec2:DescribeSubnets" + - "ec2:DescribeVolumes" + - "ec2:DescribeVpcs" + - "ec2:DescribeVpcAttribute" + - "ec2:DescribeNetworkAcls" + - "ec2:DetachInternetGateway" + - "ec2:DisassociateIamInstanceProfile" + - "ec2:DisassociateRouteTable" + - "ec2:ModifyVpcAttribute" + - "ec2:ReleaseAddress" + - "ec2:ReplaceIamInstanceProfileAssociation" + - "ec2:ReplaceRoute" + - "ec2:RequestSpotInstances" + - "ec2:RevokeSecurityGroupEgress" + - "ec2:RevokeSecurityGroupIngress" + - "ec2:RunInstances" + - "ec2:TerminateInstances" + Resource: + - "*" + - Effect: Allow + Action: + - "iam:CreateServiceLinkedRole" + - "iam:PutRolePolicy" + Resource: + - arn:aws:iam::*:role/aws-service-role/spot.amazonaws.com/AWSServiceRoleForEC2Spot + Condition: + StringLike: + "iam:AWSServiceName": spot.amazonaws.com + Version: '2012-10-17' + PolicyName: "{{ stack_name }}-{{ stack_env }}-policy" + exports: + - aws_iam_role_name: aws_iam_cross_account_role_name + - aws_iam_role_arn: aws_iam_cross_account_role_arn + + - name: databricks_account/credentials + props: + - name: credentials_name + value: "{{ stack_name }}-{{ stack_env }}-credentials" + - name: aws_credentials + value: + sts_role: + role_arn: "{{ aws_iam_cross_account_role_arn }}" + exports: + - databricks_credentials_name + - databricks_credentials_id + - databricks_role_external_id + + - name: aws/iam/databricks_compute_role + file: aws/iam/iam_role.iql + props: + - name: role_name + value: "{{ stack_name }}-{{ stack_env }}-compute-role" + - name: assume_role_policy_document + value: + Version: "2012-10-17" + Statement: + - Action: "sts:AssumeRole" + Effect: "Allow" + Principal: + AWS: "{{ 'arn:aws:iam::314146311478:root' if trustInternalAccount == 'true' else 'arn:aws:iam::414351767826:root' }}" + Condition: + StringEquals: + sts:ExternalId: "{{ databricks_account_id }}" + - name: description + value: 'allows Databricks to access compute resources in ({{ stack_name }}-{{ stack_env }})' + - name: path + value: '/' + - name: policies + value: + - PolicyName: "Base" + PolicyDocument: + Version: "2012-10-17" + Statement: + - Sid: "CreateEC2ResourcesWithRequestTag" + Effect: "Allow" + Action: + - "ec2:CreateFleet" + - "ec2:CreateLaunchTemplate" + - "ec2:CreateVolume" + - "ec2:RequestSpotInstances" + - "ec2:RunInstances" + Resource: ["*"] + Condition: + StringEquals: + aws:RequestTag/Vendor: "Databricks" + - Sid: "AllowDatabricksTagOnCreate" + Effect: "Allow" + Action: ["ec2:CreateTags"] + Resource: ["*"] + Condition: + StringEquals: + ec2:CreateAction: + - "CreateFleet" + - "CreateLaunchTemplate" + - "CreateVolume" + - "RequestSpotInstances" + - "RunInstances" + - Sid: "UpdateByResourceTags" + Effect: "Allow" + Action: + - "ec2:AssignPrivateIpAddresses" + - "ec2:AssociateIamInstanceProfile" + - "ec2:AttachVolume" + - "ec2:AuthorizeSecurityGroupEgress" + - "ec2:AuthorizeSecurityGroupIngress" + - "ec2:CancelSpotInstanceRequests" + - "ec2:CreateFleet" + - "ec2:CreateLaunchTemplate" + - "ec2:CreateLaunchTemplateVersion" + - "ec2:CreateVolume" + - "ec2:DetachVolume" + - "ec2:DisassociateIamInstanceProfile" + - "ec2:ModifyFleet" + - "ec2:ModifyLaunchTemplate" + - "ec2:RequestSpotInstances" + - "ec2:RevokeSecurityGroupEgress" + - "ec2:RevokeSecurityGroupIngress" + - "ec2:RunInstances" + Resource: ["*"] + Condition: + StringEquals: + ec2:ResourceTag/Vendor: "Databricks" + - Sid: "GetByResourceTags" + Effect: "Allow" + Action: ["ec2:GetLaunchTemplateData"] + Resource: ["*"] + Condition: + StringEquals: + ec2:ResourceTag/Vendor: "Databricks" + - Sid: "DeleteByResourceTags" + Effect: "Allow" + Action: + - "ec2:DeleteFleets" + - "ec2:DeleteLaunchTemplate" + - "ec2:DeleteLaunchTemplateVersions" + - "ec2:DeleteTags" + - "ec2:DeleteVolume" + - "ec2:TerminateInstances" + Resource: ["*"] + Condition: + StringEquals: + ec2:ResourceTag/Vendor: "Databricks" + - Sid: "DescribeResources" + Effect: "Allow" + Action: + - "ec2:DescribeAvailabilityZones" + - "ec2:DescribeFleets" + - "ec2:DescribeIamInstanceProfileAssociations" + - "ec2:DescribeInstances" + - "ec2:DescribeInstanceStatus" + - "ec2:DescribeInternetGateways" + - "ec2:DescribeLaunchTemplates" + - "ec2:DescribeLaunchTemplateVersions" + - "ec2:DescribeNatGateways" + - "ec2:DescribeNetworkAcls" + - "ec2:DescribePrefixLists" + - "ec2:DescribeReservedInstancesOfferings" + - "ec2:DescribeRouteTables" + - "ec2:DescribeSecurityGroups" + - "ec2:DescribeSpotInstanceRequests" + - "ec2:DescribeSpotPriceHistory" + - "ec2:DescribeSubnets" + - "ec2:DescribeVolumes" + - "ec2:DescribeVpcs" + - "ec2:GetSpotPlacementScores" + Resource: ["*"] + exports: + - aws_iam_role_name: databricks_compute_role_name + - aws_iam_role_arn: databricks_compute_role_arn + +# ==================================================================================== +# UC Metastore with KMS Encryption +# ==================================================================================== + + # - name: aws/kms/metastore_key + # props: + # - name: description + # value: "KMS key for {{ stack_name }}-{{ stack_env }} Unity Catalog metastore encryption" + # - name: key_policy + # value: + # Version: "2012-10-17" + # Statement: + # - Sid: "Enable IAM User Permissions" + # Effect: "Allow" + # Principal: + # AWS: "arn:aws:iam::{{ aws_account }}:root" + # Action: "kms:*" + # Resource: "*" + # - Sid: "Allow Metastore Role to Use Key" + # Effect: "Allow" + # Principal: + # AWS: "arn:aws:iam::{{ aws_account }}:role/{{ stack_name }}-{{ stack_env }}-metastore-role" + # Action: + # - "kms:Decrypt" + # - "kms:Encrypt" + # - "kms:GenerateDataKey" + # - "kms:DescribeKey" + # - "kms:CreateGrant" + # - "kms:RetireGrant" + # Resource: "*" + # - Sid: "Allow Databricks to Use Key" + # Effect: "Allow" + # Principal: + # AWS: "arn:aws:iam::{{ databricks_aws_account_id }}:root" + # Action: + # - "kms:Decrypt" + # - "kms:GenerateDataKey" + # - "kms:DescribeKey" + # Resource: "*" + # Condition: + # StringEquals: + # "kms:ViaService": "s3.{{ region }}.amazonaws.com" + # - name: tags + # value: + # - Key: Purpose + # Value: "UC Metastore Encryption" + # merge: + # - global_tags + # exports: + # - key_id: metastore_kms_key_id + # - key_arn: metastore_kms_key_arn + + # - name: aws/kms/metastore_key_alias + # props: + # - name: alias_name + # value: "alias/{{ stack_name }}-{{ stack_env }}-metastore" + # - name: target_key_id + # value: "{{ metastore_kms_key_id }}" + + # - name: aws/s3/metastore_bucket + # props: + # - name: bucket_name + # value: "{{ stack_name }}-{{ stack_env }}-metastore" + # - name: ownership_controls + # value: + # Rules: + # - ObjectOwnership: "BucketOwnerPreferred" + # - name: bucket_encryption + # value: + # ServerSideEncryptionConfiguration: + # - BucketKeyEnabled: true + # ServerSideEncryptionByDefault: + # SSEAlgorithm: "aws:kms" + # KMSMasterKeyID: "{{ metastore_kms_key_arn }}" + # - name: public_access_block_configuration + # value: + # BlockPublicAcls: true + # IgnorePublicAcls: true + # BlockPublicPolicy: true + # RestrictPublicBuckets: true + # - name: versioning_configuration + # value: + # Status: "Enabled" + # - name: lifecycle_configuration + # value: + # Rules: + # - Id: "DeleteOldVersions" + # Status: "Enabled" + # NoncurrentVersionExpiration: + # NoncurrentDays: 30 + # AbortIncompleteMultipartUpload: + # DaysAfterInitiation: 7 + # - name: logging_configuration + # value: + # TargetBucket: "{{ stack_name }}-{{ stack_env }}-logs" + # TargetPrefix: "s3-access-logs/metastore/" + # - name: tags + # value: + # - Key: Purpose + # Value: "Unity Catalog Metastore" + # - Key: DataClassification + # Value: "Metadata" + # merge: + # - global_tags + # exports: + # - bucket_name: aws_s3_metastore_bucket_name + # - bucket_arn: aws_s3_metastore_bucket_arn + + # - name: aws/iam/metastore_access_role + # file: aws/iam/iam_role.iql + # props: + # - name: role_name + # value: "{{ stack_name }}-{{ stack_env }}-metastore-role" + # - name: assume_role_policy_document + # value: + # Version: "2012-10-17" + # Statement: + # - Effect: "Allow" + # Principal: + # AWS: + # - "arn:aws:iam::414351767826:role/unity-catalog-prod-UCMasterRole-14S5ZJVKOTYTL" + # Action: "sts:AssumeRole" + # Condition: + # StringEquals: + # sts:ExternalId: "0000" # Placeholder + # - name: description + # value: 'Unity Catalog metastore access role for ({{ stack_name }}-{{ stack_env }})' + # - name: path + # value: '/' + # - name: policies + # value: + # - PolicyName: "MetastoreS3Access" + # PolicyDocument: + # Version: "2012-10-17" + # Statement: + # - Sid: "S3MetastoreBucketAccess" + # Effect: "Allow" + # Action: + # - "s3:GetObject" + # - "s3:PutObject" + # - "s3:DeleteObject" + # - "s3:ListBucket" + # - "s3:GetBucketLocation" + # - "s3:GetLifecycleConfiguration" + # - "s3:PutLifecycleConfiguration" + # - "s3:ListBucketMultipartUploads" + # - "s3:ListMultipartUploadParts" + # - "s3:AbortMultipartUpload" + # Resource: + # - "{{ aws_s3_metastore_bucket_arn }}/*" + # - "{{ aws_s3_metastore_bucket_arn }}" + # - Sid: "AssumeRoleSelfTrust" + # Effect: "Allow" + # Action: ["sts:AssumeRole"] + # Resource: ["arn:aws:iam::{{ aws_account }}:role/{{ stack_name }}-{{ stack_env }}-metastore-role"] + # - PolicyName: "MetastoreKMSAccess" + # PolicyDocument: + # Version: "2012-10-17" + # Statement: + # - Sid: "KMSKeyAccess" + # Effect: "Allow" + # Action: + # - "kms:Decrypt" + # - "kms:Encrypt" + # - "kms:GenerateDataKey" + # - "kms:DescribeKey" + # - "kms:CreateGrant" + # - "kms:RetireGrant" + # Resource: + # - "{{ metastore_kms_key_arn }}" + # Condition: + # StringEquals: + # "kms:ViaService": "s3.{{ region }}.amazonaws.com" + # - PolicyName: "MetastoreFileEvents" + # PolicyDocument: + # Version: "2012-10-17" + # Statement: + # - Sid: "ManagedFileEventsSetupStatement" + # Effect: "Allow" + # Action: + # - "s3:GetBucketNotification" + # - "s3:PutBucketNotification" + # - "sns:ListSubscriptionsByTopic" + # - "sns:GetTopicAttributes" + # - "sns:SetTopicAttributes" + # - "sns:CreateTopic" + # - "sns:TagResource" + # - "sns:Publish" + # - "sns:Subscribe" + # - "sqs:CreateQueue" + # - "sqs:DeleteMessage" + # - "sqs:ReceiveMessage" + # - "sqs:SendMessage" + # - "sqs:GetQueueUrl" + # - "sqs:GetQueueAttributes" + # - "sqs:SetQueueAttributes" + # - "sqs:TagQueue" + # - "sqs:ChangeMessageVisibility" + # - "sqs:PurgeQueue" + # Resource: + # - "{{ aws_s3_metastore_bucket_arn }}" + # - "arn:aws:sqs:{{ region }}:{{ aws_account }}:csms-*" + # - "arn:aws:sns:{{ region }}:{{ aws_account }}:csms-*" + # - Sid: "ManagedFileEventsListStatement" + # Effect: "Allow" + # Action: ["sqs:ListQueues", "sqs:ListQueueTags", "sns:ListTopics"] + # Resource: "*" + # - Sid: "ManagedFileEventsTeardownStatement" + # Effect: "Allow" + # Action: ["sns:Unsubscribe", "sns:DeleteTopic", "sqs:DeleteQueue"] + # Resource: + # - "arn:aws:sqs:{{ region }}:{{ aws_account }}:csms-*" + # - "arn:aws:sns:{{ region }}:{{ aws_account }}:csms-*" + # - name: tags + # value: + # - Key: Purpose + # Value: "Unity Catalog Storage Credential" + # merge: + # - global_tags + # exports: + # - aws_iam_role_arn: metastore_access_role_arn + + # - name: databricks_account/metastore + # props: + # - name: name + # value: "{{ stack_name }}-{{ stack_env }}-metastore" + # - name: storage_root + # value: "s3://{{ aws_s3_metastore_bucket_name }}" + # - name: region + # value: "{{ region }}" + # exports: + # - metastore_id: databricks_metastore_id + + # - name: databricks_account/uc_storage_credentials + # props: + # - name: metastore_id + # value: "{{ databricks_metastore_id }}" + # - name: credential_info + # value: + # name: "{{ stack_name }}-{{ stack_env }}-storage-credential" + # comment: "Storage credential for {{ stack_name }} {{ stack_env }} metastore S3 access" + # read_only: false + # aws_iam_role: + # role_arn: "{{ metastore_access_role_arn }}" + # skip_validation: false + # exports: + # - credential_id: storage_credential_id + # - external_id: storage_credential_external_id + + # - name: aws/iam/update_metastore_role_trust_policy + # type: command + # props: + # - name: role_name + # value: "{{ stack_name }}-{{ stack_env }}-metastore-role" + # - name: assume_role_policy_document + # value: + # Version: "2012-10-17" + # Statement: + # - Effect: "Allow" + # Principal: + # AWS: + # - "arn:aws:iam::414351767826:role/unity-catalog-prod-UCMasterRole-14S5ZJVKOTYTL" + # - "arn:aws:iam::{{ aws_account }}:role/{{ stack_name }}-{{ stack_env }}-metastore-role" + # Action: "sts:AssumeRole" + # Condition: + # StringEquals: + # sts:ExternalId: "{{ storage_credential_external_id }}" + + # - name: databricks_account/validate_storage_credential + # type: command + # props: + # - name: credential_id + # value: "{{ storage_credential_id }}" + # - name: metastore_id + # value: "{{ databricks_metastore_id }}" + + # - name: databricks_account/external_location + # props: + # - name: metastore_id + # value: "{{ databricks_metastore_id }}" + # - name: name + # value: "{{ stack_name }}-{{ stack_env }}-metastore-location" + # - name: url + # value: "s3://{{ aws_s3_metastore_bucket_name }}/" + # - name: credential_name + # value: "{{ stack_name }}-{{ stack_env }}-storage-credential" + # - name: comment + # value: "External location for {{ stack_name }} {{ stack_env }} metastore root" + # exports: + # - external_location_id + + # - name: databricks_account/catalog + # props: + # - name: metastore_id + # value: "{{ databricks_metastore_id }}" + # - name: name + # value: "{{ stack_name }}_{{ stack_env }}" + # - name: comment + # value: "Main catalog for {{ stack_name }} {{ stack_env }} environment" + # - name: storage_root + # value: "s3://{{ aws_s3_metastore_bucket_name }}/catalogs/{{ stack_name }}_{{ stack_env }}" + # exports: + # - catalog_id + + # - name: databricks_account/metastore_assignment + # props: + # - name: workspace_id + # value: "{{ databricks_workspace_id }}" + # - name: metastore_id + # value: "{{ databricks_metastore_id }}" + # - name: default_catalog_name + # value: "{{ stack_name }}_{{ stack_env }}" + + # - name: databricks_account/catalog_workspace_binding + # props: + # - name: catalog_name + # value: "{{ stack_name }}_{{ stack_env }}" + # - name: workspace_id + # value: "{{ databricks_workspace_id }}" + + # - name: databricks_account/catalog_permissions + # props: + # - name: catalog_name + # value: "{{ stack_name }}_{{ stack_env }}" + # - name: principal + # value: "{{ databricks_group_id }}" + # - name: privileges + # value: + # - "USE_CATALOG" + # - "CREATE_SCHEMA" + # - "CREATE_TABLE" + # - "CREATE_FUNCTION" + +# ==================================================================================== +# AWS VPC Networking +# ==================================================================================== + + # - name: aws/vpc/vpc + # props: + # - name: cidr_block + # values: + # prd: + # value: "10.53.0.0/16" + # sit: + # value: "10.1.0.0/16" + # dev: + # value: "10.2.0.0/16" + # - name: tags + # value: + # - Key: Name + # Value: "{{ stack_name }}-{{ stack_env }}-vpc" + # merge: + # - global_tags + # - name: idempotency_token + # value: 019447a0-b84a-7b7f-bca5-2ee320207e51 + # exports: + # - vpc_id + + # - name: aws/vpc/nat_subnet + # file: aws/vpc/subnet.iql + # props: + # - name: availability_zone + # value: "us-east-1a" + # - name: cidr_block + # values: + # prd: + # value: "10.53.0.0/24" + # sit: + # value: "10.1.0.0/19" + # dev: + # value: "10.2.0.0/19" + # - name: tags + # value: + # - Key: Name + # Value: "{{ stack_name }}-{{ stack_env }}-nat-subnet" + # merge: + # - global_tags + # exports: + # - subnet_id: nat_subnet_id + + # - name: aws/vpc/cluster_subnet1 + # file: aws/vpc/subnet.iql + # props: + # - name: availability_zone + # value: "us-east-1b" + # - name: cidr_block + # values: + # prd: + # value: "10.53.160.0/19" + # sit: + # value: "10.1.0.0/19" + # dev: + # value: "10.2.0.0/19" + # - name: tags + # value: + # - Key: Name + # Value: "{{ stack_name }}-{{ stack_env }}-subnet-1" + # merge: + # - global_tags + # exports: + # - subnet_id: cluster_subnet1_id + + # - name: aws/vpc/cluster_subnet2 + # file: aws/vpc/subnet.iql + # props: + # - name: availability_zone + # value: "us-east-1c" + # - name: cidr_block + # values: + # prd: + # value: "10.53.192.0/19" + # sit: + # value: "10.1.32.0/19" + # dev: + # value: "10.2.32.0/19" + # - name: tags + # value: + # - Key: Name + # Value: "{{ stack_name }}-{{ stack_env }}-subnet-2" + # merge: + # - global_tags + # exports: + # - subnet_id: cluster_subnet2_id + + # - name: aws/vpc/inet_gateway + # props: + # - name: tags + # value: + # - Key: Name + # Value: "{{ stack_name }}-{{ stack_env }}-inet-gateway" + # merge: ['global_tags'] + # - name: idempotency_token + # value: 019447a5-f076-75f8-9173-092df5a66d35 + # exports: + # - internet_gateway_id + + # - name: aws/vpc/inet_gw_attachment + # props: [] + + # - name: aws/vpc/nat_route_table + # file: aws/vpc/route_table.iql + # props: + # - name: route_table_name + # value: "{{ stack_name }}-{{ stack_env }}-nat-route-table" + # - name: tags + # value: + # - Key: Name + # Value: "{{ stack_name }}-{{ stack_env }}-nat-route-table" + # merge: ['global_tags'] + # exports: + # - route_table_id: nat_route_table_id + + # - name: aws/vpc/nat_route_to_inet + # file: aws/vpc/inet_route.iql + # props: + # - name: route_table_id + # value: "{{ nat_route_table_id }}" + # exports: + # - inet_route_indentifer: nat_inet_route_indentifer + + # - name: aws/vpc/nat_subnet_rt_assn + # file: aws/vpc/subnet_rt_assn.iql + # props: + # - name: subnet_id + # value: "{{ nat_subnet_id }}" + # - name: route_table_id + # value: "{{ nat_route_table_id }}" + # - name: idempotency_token + # value: 3eaf3040-1c8e-41a6-8be6-512ccaf5ff4e + # exports: + # - route_table_assn_id: nat_subnet_rt_assn_id + + # - name: aws/vpc/private_route_table + # file: aws/vpc/route_table.iql + # props: + # - name: route_table_name + # value: "{{ stack_name }}-{{ stack_env }}-private-route-table" + # - name: tags + # value: + # - Key: Name + # Value: "{{ stack_name }}-{{ stack_env }}-private-route-table" + # merge: ['global_tags'] + # exports: + # - route_table_id: private_route_table_id + + # - name: aws/vpc/subnet_rt_assn1 + # file: aws/vpc/subnet_rt_assn.iql + # props: + # - name: route_table_id + # value: "{{ private_route_table_id }}" + # - name: subnet_id + # value: "{{ cluster_subnet1_id }}" + # - name: idempotency_token + # value: 019447aa-1c7a-775b-91dc-04db7c49f4a7 + # exports: + # - route_table_assn_id: cluster_subnet1_rt_assn_id + + # - name: aws/vpc/subnet_rt_assn2 + # file: aws/vpc/subnet_rt_assn.iql + # props: + # - name: route_table_id + # value: "{{ private_route_table_id }}" + # - name: subnet_id + # value: "{{ cluster_subnet2_id }}" + # - name: idempotency_token + # value: c19c9077-c25d-46a4-a299-7bd93d773e58 + # exports: + # - route_table_assn_id: cluster_subnet2_rt_assn_id + + # - name: aws/vpc/elastic_ip + # props: + # - name: tags + # value: + # - Key: Name + # Value: "{{ stack_name }}-{{ stack_env }}-eip" + # merge: ['global_tags'] + # - name: idempotency_token + # value: 01945908-b80d-7e51-b52c-5e93dea9cbdb + # exports: + # - eip_allocation_id + # - eip_public_id + + # - name: aws/vpc/nat_gateway + # props: + # - name: tags + # value: + # - Key: Name + # Value: "{{ stack_name }}-{{ stack_env }}-nat-gateway" + # merge: ['global_tags'] + # - name: idempotency_token + # value: 019447a5-f076-75f8-9173-092df5a66d35 + # exports: + # - nat_gateway_id + + # - name: aws/vpc/nat_inet_route + # props: + # - name: route_table_id + # value: "{{ private_route_table_id }}" + # - name: nat_gateway_id + # value: "{{ nat_gateway_id }}" + # exports: + # - nat_inet_route_indentifer + + # - name: aws/vpc/security_group + # props: + # - name: group_name + # value: "{{ stack_name }}-{{ stack_env }}-sg" + # - name: group_description + # value: "security group for {{ stack_name }} ({{ stack_env }} environment)" + # - name: tags + # value: + # - Key: Name + # Value: "{{ stack_name }}-{{ stack_env }}-sg" + # merge: ['global_tags'] + # exports: + # - security_group_id + + # - name: aws/vpc/security_group_rules + # props: + # - name: security_group_ingress + # value: + # - FromPort: 0 + # ToPort: 65535 + # SourceSecurityGroupOwnerId: "{{ aws_account }}" + # IpProtocol: tcp + # SourceSecurityGroupId: "{{ security_group_id }}" + # - FromPort: 0 + # ToPort: 65535 + # SourceSecurityGroupOwnerId: "{{ aws_account }}" + # IpProtocol: "udp" + # SourceSecurityGroupId: "{{ security_group_id }}" + # - CidrIp: "3.237.73.224/28" + # FromPort: 443 + # ToPort: 443 + # IpProtocol: "tcp" + # - CidrIp: "54.156.226.103/32" + # FromPort: 443 + # ToPort: 443 + # IpProtocol: "tcp" + # - name: security_group_egress + # value: + # - FromPort: 0 + # ToPort: 65535 + # IpProtocol: "tcp" + # DestinationSecurityGroupId: "{{ security_group_id }}" + # Description: "Allow all TCP outbound access to the same security group" + # - CidrIp: "0.0.0.0/0" + # Description: Allow all outbound traffic + # FromPort: -1 + # ToPort: -1 + # IpProtocol: "-1" + # - CidrIp: "0.0.0.0/0" + # FromPort: 3306 + # ToPort: 3306 + # IpProtocol: "tcp" + # Description: "Allow accessing the Databricks metastore" + # - FromPort: 0 + # ToPort: 65535 + # IpProtocol: "udp" + # DestinationSecurityGroupId: "{{ security_group_id }}" + # Description: "Allow all UDP outbound access to the same security group" + # - CidrIp: "0.0.0.0/0" + # FromPort: 443 + # ToPort: 443 + # IpProtocol: "tcp" + # Description: "Allow accessing Databricks infrastructure, cloud data sources, and library repositories" + + # - name: databricks_account/network + # props: + # - name: databricks_network_name + # value: "{{ stack_name }}-{{ stack_env }}-network" + # - name: subnet_ids + # value: + # - "{{ cluster_subnet1_id }}" + # - "{{ cluster_subnet2_id }}" + # - name: security_group_ids + # value: + # - "{{ security_group_id }}" + # exports: + # - databricks_network_id + +# ==================================================================================== +# AWS Storage +# ==================================================================================== + + # - name: aws/s3/workspace_bucket + # props: + # - name: bucket_name + # value: "{{ stack_name }}-{{ stack_env }}-root-bucket" + # - name: ownership_controls + # value: + # Rules: + # - ObjectOwnership: "BucketOwnerPreferred" + # - name: bucket_encryption + # value: + # ServerSideEncryptionConfiguration: + # - BucketKeyEnabled: true + # ServerSideEncryptionByDefault: + # SSEAlgorithm: "AES256" + # - name: public_access_block_configuration + # value: + # BlockPublicAcls: true + # IgnorePublicAcls: true + # BlockPublicPolicy: true + # RestrictPublicBuckets: true + # - name: versioning_configuration + # value: + # Status: "Suspended" + # exports: + # - aws_s3_workspace_bucket_name + # - aws_s3_workspace_bucket_arn + + # - name: aws/s3/workspace_bucket_policy + # props: + # - name: policy_document + # value: + # Version: "2012-10-17" + # Statement: + # - Sid: Grant Databricks Access + # Effect: Allow + # Principal: + # AWS: "arn:aws:iam::{{ databricks_aws_account_id }}:root" + # Action: + # - "s3:GetObject" + # - "s3:GetObjectVersion" + # - "s3:PutObject" + # - "s3:DeleteObject" + # - "s3:ListBucket" + # - "s3:GetBucketLocation" + # Resource: + # - "{{ aws_s3_workspace_bucket_arn }}/*" + # - "{{ aws_s3_workspace_bucket_arn }}" + + # - name: aws/vpc/vpc_endpoint + # props: + # - name: service_name + # value: "com.amazonaws.{{ region }}.s3" + # - name: vpc_endpoint_type + # value: "Gateway" + # - name: route_table_ids + # value: + # - "{{ private_route_table_id }}" + # - name: tags + # value: + # - Key: Name + # Value: "{{ stack_name }}-{{ stack_env }}-s3-vpc-endpoint" + # merge: + # - global_tags + # exports: + # - s3_gateway_endpoint_id + + # - name: databricks_account/storage_configuration + # props: + # - name: storage_configuration_name + # value: "{{ stack_name }}-{{ stack_env }}-storage" + # - name: root_bucket_info + # value: + # bucket_name: "{{ aws_s3_workspace_bucket_name }}" + # exports: + # - databricks_storage_configuration_id + +# ==================================================================================== +# DBX Workspace +# ==================================================================================== + + # - name: databricks_account/workspace + # props: + # - name: workspace_name + # value: "{{ stack_name }}-{{ stack_env }}-workspace" + # - name: network_id + # value: "{{ databricks_network_id }}" + # - name: aws_region + # value: "{{ region }}" + # - name: credentials_id + # value: "{{ databricks_credentials_id }}" + # - name: storage_configuration_id + # value: "{{ databricks_storage_configuration_id }}" + # - name: pricing_tier + # value: PREMIUM + # exports: + # - databricks_workspace_id + # - databricks_deployment_name + + # - name: databricks_account/workspace_group + # props: + # - name: display_name + # value: "{{ stack_name }}-{{ stack_env }}-workspace-admins" + # exports: + # - databricks_group_id + + # - name: databricks_account/get_users + # type: query + # props: + # - name: users + # value: + # - "javen@stackql.io" + # - "krimmer@stackql.io" + # exports: + # - databricks_workspace_group_members + + # - name: databricks_account/update_group_membership + # type: command + # props: [] + + # - name: databricks_account/workspace_permission_assignments + # props: [] + + # - name: databricks_workspace/all_purpose_cluster + # props: + # - name: cluster_name + # value: single-user-single-node-cluster + # - name: num_workers + # value: 0 + # - name: is_single_node + # value: true + # - name: kind + # value: CLASSIC_PREVIEW + # - name: spark_version + # value: 15.4.x-scala2.12 + # - name: node_type_id + # value: m7g.large + # - name: data_security_mode + # value: SINGLE_USER + # - name: runtime_engine + # value: PHOTON + # - name: single_user_name + # value: javen@stackql.io + # - name: aws_attributes + # value: + # ebs_volume_count: 1 + # ebs_volume_size: 100 + # - name: custom_tags + # description: Additional tags for cluster resources (max 45 tags) + # value: + # Provisioner: stackql + # StackName: "{{ stack_name }}" + # StackEnv: "{{ stack_env }}" + # exports: + # - databricks_cluster_id + # - databricks_cluster_state diff --git a/examples/databricks/serverless/README.md b/examples/databricks/serverless/README.md new file mode 100644 index 0000000..409894d --- /dev/null +++ b/examples/databricks/serverless/README.md @@ -0,0 +1,245 @@ +# `stackql-deploy` example project for `databricks` + +This exercise is to bootstrap a databricks / aws tenancy using `stackql-deploy`. It is an important use case for platform bootstrap and we are excited to perform it with the `stackql` toolchain. We hope you enjoy and find this valuable. Please drop us a note with your forthright opinion on this and check out our issues on github. + +## A word of caution + +Please take the greatest care in performing this exercise; it will incur expenses, as it involves creating (and destroying) resources which cost money. Please be aware that you **must** cancel your databricks subscription after completing this exercise, otherwise you will incur ongoing expenses. That is, do **not** skip the section [Cancel databricks subscription](#cancel-databricks-subsription). We strongly advise that you verify all resources are destroyed at the conclusion of this exercise. Web pages and certain behaviours may change, so please be thorough in your verification. We will keep this page up-to-date on a best effort basis only. It is very much a case of owner onus applies. + +## Manual Setup + +Dependencies: + +- aws Account Created. +- Required clickops to set up databricks on aws: + - Turn on aws Marketplace `databricks` offering, using [the aws manage subscriptions page](https://console.aws.amazon.com/marketplace/home#/subscriptions), per Figure S1. + - Follow the suggested setup flow as directed, from this page. These clickops steps are necessary at this time for initial account setup. The way I followed this, it created a workspace for me at setup, per Figure S3. We shall not use this one and rather, later on we shall dispose of it; because we do not trust auto-created resources out of hand. In the process of creating the databricks subscription, a second aws account is created. + - Copy the databricks account id from basically any web page in the databricks console. This is done by clicking on the user icon at the top RHS and then the UI provides a copy shortcut, per Fugure U1. Save this locally for later use, expanded below. + - We need the aws account id that was created for the databricks subscription. It is not exactly heralded by the web pages, nor is it actively hidden. It can be captured in a couple of places, including the databricks storage account creatted in the subscription flow, per Figure XA1. copy and save this locally for later use, expanded below. + - Create a service principal to use as a "CICD agent", using the page shown in Figure S4. + - Grant the CICD agent account admin role, using the page shown in Figure S5. + - Create a secret for the CICD agent, using the page shown in Figure S6. At the time you create this, you will need to safely store the client secret and client id, as prompted by the web page. These will be used below. +- Setup your virtual environment, from the root of this repository `cicd/setup/setup-env.sh`. + +Now, is is convenient to use environment variables for context. Note that for our example, there is only one aws account apropos, however this is not always the case for an active professional, so while `DATABRICKS_AWS_ACCOUNT_ID` is the same as `AWS_ACCOUNT_ID` here, it need not always be the case. Create a file in the path `examples/databricks/serverless/sec/env.sh` (relative to the root of this repository) with contents of the form: + +```bash +#!/usr/bin/env bash + +export AWS_REGION='us-east-1' # or wherever you want +export AWS_ACCOUNT_ID='' +export DATABRICKS_ACCOUNT_ID='' +export DATABRICKS_AWS_ACCOUNT_ID='' + +# These need to be created by clickops under [the account level user managment page](https://accounts.cloud.databricks.com/user-management). +export DATABRICKS_CLIENT_ID='' +export DATABRICKS_CLIENT_SECRET='' + +## These can be skipped if you run on [aws cloud shell](https://docs.aws.amazon.com/cloudshell/latest/userguide/welcome.html). +export AWS_SECRET_ACCESS_KEY='' +export AWS_ACCESS_KEY_ID='' + +``` + +## Optional step: sanity checks with stackql + +Now, let us do some sanity checks and housekeeping with `stackql`. This is purely optional. From the root of this repository: + +``` +source examples/databricks/serverless/convenience.sh +stackql shell +``` + +This will start a `stackql` interactive shell. Here are some commands you can run (I will not place output here, that will be shared in a corresponding video): + + +```sql +registry pull databricks_account v24.12.00279; +registry pull databricks_workspace v24.12.00279; + +-- This will fail if accounts, subscription, or credentials are in error. +select account_id FROM databricks_account.provisioning.credentials WHERE account_id = ''; +select account_id, workspace_name, workspace_id, workspace_status from databricks_account.provisioning.workspaces where account_id = ''; +``` + +For extra credit, you can (asynchronously) delete the unnecessary workspace with `delete from databricks_account.provisioning.workspaces where account_id = '' and workspace_id = '';`, where you obtain the workspace id from the above query. I have noted that due to some reponse caching it takes a while to disappear from select queries (much longer than disappearance from the web page), and you may want to bounce the `stackql` session to hurry things along. This is not happening on the `stackql` side, but session bouncing forces a token refresh which can help cache busting. + +## Lifecycle management + +Time to get down to business. From the root of this repository: + +```bash +python3 -m venv myenv +source examples/databricks/serverless/convenience.sh +source venv/bin/activate +pip install stackql-deploy +``` + +> alternatively set the `AWS_REGION`, `AWS_ACCOUNT_ID`, `DATABRICKS_ACCOUNT_ID`, `DATABRICKS_AWS_ACCOUNT_ID` along with provider credentials `AWS_ACCESS_KEY_ID`, `AWS_SECRET_ACCESS_KEY`, `DATABRICKS_CLIENT_ID`, `DATABRICKS_CLIENT_SECRET` + +Then, do a dry run (good for catching **some** environmental issues): + +```bash +stackql-deploy build \ +examples/databricks/serverless dev \ +-e AWS_REGION=${AWS_REGION} \ +-e AWS_ACCOUNT_ID=${AWS_ACCOUNT_ID} \ +-e DATABRICKS_ACCOUNT_ID=${DATABRICKS_ACCOUNT_ID} \ +-e DATABRICKS_AWS_ACCOUNT_ID=${DATABRICKS_AWS_ACCOUNT_ID} \ +--dry-run +``` + +You will see a verbose rendition of what `stackql-deploy` intends to do. + + +Now, let use do it for real: + +```bash +stackql-deploy build \ +examples/databricks/serverless dev \ +-e AWS_REGION=${AWS_REGION} \ +-e AWS_ACCOUNT_ID=${AWS_ACCOUNT_ID} \ +-e DATABRICKS_ACCOUNT_ID=${DATABRICKS_ACCOUNT_ID} \ +-e DATABRICKS_AWS_ACCOUNT_ID=${DATABRICKS_AWS_ACCOUNT_ID} \ +--show-queries +``` + +The output is quite verbose, concludes in: + +``` +2025-02-08 12:51:25,914 - stackql-deploy - INFO - 📤 set [databricks_workspace_id] to [482604062392118] in exports +2025-02-08 12:51:25,915 - stackql-deploy - INFO - ✅ successfully deployed databricks_workspace +2025-02-08 12:51:25,915 - stackql-deploy - INFO - deployment completed in 0:04:09.603631 +🚀 build complete +``` + +Success!!! + +We can also use `stackql-deploy` to assess if our infra is shipshape: + +```bash +stackql-deploy test \ +examples/databricks/serverless dev \ +-e AWS_REGION=${AWS_REGION} \ +-e AWS_ACCOUNT_ID=${AWS_ACCOUNT_ID} \ +-e DATABRICKS_ACCOUNT_ID=${DATABRICKS_ACCOUNT_ID} \ +-e DATABRICKS_AWS_ACCOUNT_ID=${DATABRICKS_AWS_ACCOUNT_ID} \ +--show-queries +``` + +Again, the output is quite verbose, concludes in: + +``` +2025-02-08 13:15:45,821 - stackql-deploy - INFO - 📤 set [databricks_workspace_id] to [482604062392118] in exports +2025-02-08 13:15:45,821 - stackql-deploy - INFO - ✅ test passed for databricks_workspace +2025-02-08 13:15:45,821 - stackql-deploy - INFO - deployment completed in 0:02:30.255860 +🔍 tests complete (dry run: False) +``` + +Success!!! + +Now, let us teardown our `stackql-deploy` managed infra: + +```bash +stackql-deploy teardown \ +examples/databricks/serverless dev \ +-e AWS_REGION=${AWS_REGION} \ +-e AWS_ACCOUNT_ID=${AWS_ACCOUNT_ID} \ +-e DATABRICKS_ACCOUNT_ID=${DATABRICKS_ACCOUNT_ID} \ +-e DATABRICKS_AWS_ACCOUNT_ID=${DATABRICKS_AWS_ACCOUNT_ID} \ +--show-queries +``` + +Takes its time, again verbose, concludes in: + +``` +2025-02-08 13:24:17,941 - stackql-deploy - INFO - ✅ successfully deleted AWS_iam_cross_account_role +2025-02-08 13:24:17,942 - stackql-deploy - INFO - deployment completed in 0:03:21.191788 +🚧 teardown complete (dry run: False) +``` + +Success!!! + +## Optional step: verify destruction with stackql + +Now, let us do some sanity checks and housekeeping with `stackql`. This is purely optional. From the root of this repository: + +``` + +source examples/databricks/serverless/convenience.sh + +stackql shell + +``` + +This will start a `stackql` interactive shell. Here are some commands you can run (I will not place output here): + + +```sql + +registry pull databricks_account v24.12.00279; + +registry pull databricks_workspace v24.12.00279; + + + +select account_id, workspace_name, workspace_id, workspace_status from databricks_account.provisioning.workspaces where account_id = ''; + +``` + +## Cancel databricks subsription + +This is **very** important. + +Go to [the aws Marketplace manage subscriptions page](https://console.aws.amazon.com/marketplace/home#/subscriptions), navigate to databricks and then cancel the subscription. + +## Figures + + +![Create aws databricks subscription](/examples/databricks/serverless/assets/create-aws-databricks-subscription.png) + +**Figure S1**: Create aws databricks subscription. + +--- + +![Awaiting aws databricks subscription resources](/examples/databricks/serverless/assets/awaiting-subscription-resources.png) + +**Figure S2**: Awaiting aws databricks subscription resources. + +--- + +![Auto provisioned workspace](/examples/databricks/serverless/assets/auto-provisioned-worskpace.png) + +**Figure S3**: Auto provisioned workspace. + +--- + +![Capture databricks account id](/examples/databricks/serverless/assets/capture-databricks-account-id.png) + +**Figure U1**: Capture databricks account id. + +--- + +![Capture cross databricks aws account id](/examples/databricks/serverless/assets/capture-cross-databricks-aws-account-id.png) + +**Figure XA1**: Capture cross databricks aws account id. + +--- + +![Create CICD agent](/examples/databricks/serverless/assets/create-cicd-agent.png) + +**Figure S4**: Create CICD agent. + +--- + +![Grant account admin to CICD agent](/examples/databricks/serverless/assets/grant-account-admin-cicd-agent.png) + +**Figure S5**: Grant account admin to CICD agent. + +--- + +![Generate secret for CICD agent](/examples/databricks/serverless/assets/generate-secret-ui.png) + +**Figure S6**: Generate secret for CICD agent. + +--- diff --git a/examples/databricks/serverless/assets/auto-provisioned-worskpace.png b/examples/databricks/serverless/assets/auto-provisioned-worskpace.png new file mode 100644 index 0000000000000000000000000000000000000000..a9fbcb6a0fcdd4774259d21c602a0c1ae0c96cc2 GIT binary patch literal 151759 zcmeFZcQ~9|`#&lPAw=1F2_}eMB6^SL(R(L)2BSu21c^R+iJl-tkKRdRbkVy>7^C+x z7|a=a@Av(_=bS%&ul?US*LSXKJj*lBde*FUm(P9Q>+?*MmWC1`J}o{L78aq3vb+u! z*8NZ{tlRJL?qbfEFNyGCVd0kp<>a(fwvUw3a| zlfQlfxaGwlqx+4BknnD#dVFwWyt%TlHL{$w?&|U~SjaBqaWXL$d9+(7AUQ8?kLHKv z{-aTDEG<-G)9+F4UhGDIS~3$3)5VL>mG9P4*7Ue-e~MN)S0$rGS2 zqjnJsr11hR8HWa~18dfW)JWLaRPTIC(8dv~#Vw(c^`K-MAk45&eDNeWDcSB;;@H42 z{D*q&>s2zAyewf6-%K(EuvxPPrHFOr+l-FiW88yy$yKTBE1!!q*m8^w(`Y&3*$A3F zF0sj8+Z`s4lXs=04*5_N?kk?PNzAw50jq=K zeB`wbf&w=1`g?DrI|RfM4+2%v8UuM$Og>3kzC-ZEJJ?6`ui8Ikgb&PXozWES-Ign+ zaeI1KS6Tl20$;MdW*6%&>0Oc# zruVl9-xJ&qq4|9KKP%qfKD2y>I;NgoNziP2h(Y z?DwPJE`4B8zTf*k^{4+Q63+0x4|lXEjs#v2wcKBLE&e`2i%$@*J*?vk`@8#NFX*SS z8$vQ3(-DO-|9b02+J-$8a`=nKjmGRAW5njK{ym;1vYimi@67D4nLezs2c=L%M=ia7 zrse)gK83uVR{u4pf_}cE7UYw`xRf5TBi=C$L_v4tejUXuJ^kxA`NI*_pJgLiBP(kK zYvQj6&KX*$q++k)KD?;oPooyOPem4{@{PL-Zu6W!g5QDPkU!@gctDApQWctMZT|Vz zw2?EuH;%V}H*o{y+?(w$Css;sqS<$cNLND$zV5pjHwDh~&b!Y)nm0F-*&)k)GxdFL z`Et+QmtUI7GFm3QGqN*=@k{(4DR|x3BG2$-pBibfGd*AuBy}M>zh@(Fm(MX0MlGxM zu#!3L52r}OD9y-S6_%u1y{UrnEKC)TQWG_jDwF+H@_IRK37$l>z2;_ieaQGwB#|)* zrpr!Fh95(!)SK`8K~K9L@rm|hi(37&<4{LpdIgaW zp6kFPrgIK|s>_(nI9gNnPYo&+irba5pIXwyRn0$HytgP@EV)t$`|!Igv9wyfz+$DF zv~b#ST1g=m+9!l$gsS(m2qPdzu?Xr4!BSy=TeZjbv}|;{f-XV~Li|Ee!ZR;*Tn|R| z7E+utZA?JtKVq#Bb`3wuN4Gk}CbNOLjvdg8I2`BSwu#Q#R_=484X+x=jd!ZI-o4FO z5m%Kg^Dt<{tUM?cqz{^KQg0+`7^<&q1l!oyk~!247EK^pE0RH(+YjfU-kjbc-p$?+ z@7*n)t+Nw~6C^!55tzv70quiDaT9TTdZf6tTfX?9`|R5I*3sZhm+^+#vgDdIoOHKl z?qimUP52WLfvQ$(vv%{Trd*%PEyPyZig(|(rVkfV4{5W*=a4l-IV3IEI{f`h*sA-N z0%-DYn%!ntEmRd2v#P&-oNd=b`kAQq?lfYH{KWl)&ehbl1Zljh9Y^OtQQV8Wvb?MN zYiy@%iEiC=2Q@JKg|D}2)^!@z8~ip{7mF3Z{=)RBh#|(I8MsH>F~4ny(}0~A_ARV0 zEEm@lTQ!Vs^^522Rp-1z+sb{j{rPhel5d1F38REs^Lkw zP&RFc=!MZK6mK^&KN6Z~pIFm_VDI{bqph!9Fd{wDH6q0?%wJ~h(&gA4ZB4i2=C17? zv8;$d4Z-+3gG0tbFL2BW)Tww)eQgpE`E?3Zlw7sukJ*n%C<$;$rATAQELr_nK$^5_C(n7+8A#pbSMnPA%p(j;U=_quFnoFWr4gV-R`aMGn@ogZSn|74C zzIVWu&bECfcZOmnFHMn0s$I=5!`FDuBW5KljTnBqa#44?J+w35@8eaU7gvB`wIRI` zVTFd#LR+_+`eNo){gqREC3B^!Int>T)aXhj~clhdH5^)ULgK6bdCGZXIF0OUB z!-&@yP=NWhr~9W81S~D)sSm{O8hJMs3TAB{u6FIX`l0a-{6O+7Y(KdV>~@>m{4pYQMGS zdpDl!sJAL1@lNI!`e#jRH61K}ckrPUP>c`uWV8%{I>!Da0gq9?V&t?VOoFYi^t_A? z-G2XeRr;ai9~Vv!D)A^O6)y@Z|3q7vrccaZ>2@)6FOQ5+$Uq3!alQU6+gFvDUPBou zdftn3P45thSkDybcJR*on9K7iY$I)oaEfgTDfmP9RW^a-)co3_?+MkWWnA`@jHSEm z@v{+yrLMM^<#Z2Th@eVlI4_&|j+4dw#p&~bR20vl$!yhK^LFsy?rf@o_vXh!JN6&#I{xNCV^$>~((Z-0B&y07{=D^fB8N^d8u0@}1h;SqYFvRxYeAc20;j z))sKpY|0`-cXDw@?JV8a55^8y#QSrgfj9CZH1Dp4lwvi#nL9#uIG`f~}x z6`vQ{6Pv6w?pNM&CsxJmU5(EnZgQCLHQLTd#a>+&~C&Z)0Ia0I{(DzD5IcynZEM-q(HpI^IbN$HK+@M~Zp-zQ6sitM7-tzw@v5 z?f00^uw-@RR8%lWT^kQOI~UKFuCK_ZzcpY^+;dYl_Qb-Xe02T3rJ}>Khq?b0P|xU< zk-D0=jVp-P%GTA|j@K9Dc6}c#NndeH6J+`R@Saw zucVlmt_S+}>#y%==L`Iwkz73go)%_;eAl1w@$)|B`}e&uT_vy2ifaLV?VOF}fgsG9 zVaAXa7I`B1=k@=uPyT1b|LAG-KRpGWJpR9R{g03SpI!Am?L6dML6|XLN&k<${vP)~ zKm5C+B;WPa|6?isTIWB{VisB&Uy|?NLX*Z9&%{#1$ngPCUQ-Wq#Aw;|>y{Sg5Bpz7 zO#2oaB}~4^2n*{emWsTrp6{)#1)tXxD>EX$0=U|h>#Y?a<~HTkFQ%ru!t-xY1mst@ zbuS**B6-=TyA}h;xlU;Ru(_iht(;tQoJCWUWp4Dsia^yvy(Yju*KgKr^)))1(PwBJ zDA4y^_BGb6+t_#{fTuTU{Dk9pV9RD+1lWe%xG!d)5VfZyKX60-$;h80@$f>qnOsvq zq&NG@f6WhDHt_CEC;Mm5n8??F9;O4u8PSb1_gJo>=Z_D^7M#b28ejB!~A5ml0=dnp!epw>@@!s1e z^65jMg1IO3`KagS){u#`*rA+RL1SXs1Xk4KH1!SE=U;y9ap&!1R?YZy^uAr&{^S(D z^Xb|deeSX4$AGEnSIeo^WjuzE22dv7&j*A;$|Qv!YzI~U)%D-*?*H5n%zSEcxts`< zi7w8)6zuEo-?UrE&dxp^BXa6yXssNxEq#L*I^J*UM0#^nd-}ra-n`6dd(&#jhhs{t zjAOCUr^;19!jVA%l`@+Zik+0$z*imw{{(oBAMPEC*eoOFEFf0jm8PJt4zq1icg&af zHzV%v+|ifaBKWcupd5CP znf(v&_LFOfQr;>1IdNb?M{!Qo**QZUaI2$V{7|S!TAUzsJi?lJNc&_NsV(^{Gjep4 zT@>EbWA5LqXttnp^T6Q6Z+yYGB+75Ue8UUF3)Nc_*`GR4AzPbz@P##0wcM{P|_|`xONv_{8o)(%wuhLtF@q0-4Bb z$Zw|c6zG>xR%1-0dWg2HdxNWr+Rv|}6mSCwx-`xUsPR_~+aHbGftUCI$%U07w(Ma1&{_*8uRVNJ{ zTlT?=l=Sqe4P&}8T@4KlGw}Xm^(cN0ot=tof})khXNBi5UykUV7XCiy1-T!cGv!-c zMmn(=K7CNlfi`pgC$zry`R}>Ju@AcBTQI(ZfUOjk#-z2hup6t=)h6~R;76HjJJm4D z!vw+mH2|f4N*?P~kVw3Y%jZR=!{ftb4f+S)!{aRyprAeevRAvb=@!$qU#C>4NU(wA zh%?hd=Tj=}SE$s)4g@bu3ZGa;%%inRcuJ*D8vQuhrJ1`=5lq#*U=aCD4o%ryRwXgT z?{Z^P{gVIaaZq<`)8(SlQvYw5!JKcp2EEPpL<@AcrHW*Gu0E;(Wa5Bi)5s(xV^fa{ z248~O(7jarS5r|F-4zW7(IXC>3z>ml2`Jo7DjyhHqrP3FKIYEJ!sCL#7DNNH#UIqL`|U@uckDK>=RKA_n4DwBM?Iht zQ{~k~sjsQr*kP*cyqG_=Tt2^rR5~|t=U!~K*{VNmsNQ(qZzwo;e0*qS3H`3wNp8~( zsoI)qUbc3Bm3NuHY`x7jmpR%y?Vh~+v*50R$-R#pjF^1TeU7lbz_VDGux0QqCAQc} zT@3BfSNoicS%NERC*9;`-aKKU=L`(gUBtxE*#;HN!Bt@eFB&ZfIyz~_3Qj-Rc0}w9 zAbMbqtL$4o&*Wu)hYkZ-ZVWWsf*~biMbM8T_m!Uk$ZDhtKZKb#%spwiS`JUl$`Y_d zadL6RtXc+f<$~AiSFBcY^%lA_bt~ynAuLY{2AMV2i@&vneyew>1>8GN> zK_X>`lAc*lNo-xjA#PRhGo^ylT+{r(gC9NUu|@6A!w(b3TEL?+E6Y%Y{r8&%TPWB3 zndT|h!v@eBwoD``bMOVfhV;s~FQ{kJeI4D(eggB!^CKR;v7Mj`Zh!n}=MF*#ELp-J zJ=n8#jx-VU(*kL`4SG599U6$%%bf`8zH#7;sl69FP6_Qko7*ooZsF zykR_(W;R}eH}vz|&u$O5A1F$mEji7^9UdMoor2p7=5$oY`^f@j4vL#LCS|pCbTS7U zH&3Lj=LSVe)0;PKlKurk(nXGSV*dgm!iL3X1fhb{WIRk{ni4Nj>}b$)IPVM(K6*F* z8inpI_?@NnYF~WW);<^yn-S+>H1Q245#Fr!3Pf%DqzokyLjT9`&3N8V6)AqsLY`doFF%T-+?^Ou&KzegO+3QQUYrHZ*+MKA_OvswD` zbkObFsAWkrw^V(0rrbI;M^Yd}5#NV9Vy}?WNeixv<;K~bqlqIJybwEa9iU^&5f=?7 zWHc{+d&Eo-QYc|tpt{TWE0Ml1c`5Cxgp(DO}irw zOAsHKK1vG*i2icICGy=eYk2Tskl7r1k)4mPYLX4}y7E4it)73PYT#7m@7`}7wmcS0 zG@L06TSHbOdFS-o+qH(Eaaj){9*BJ&a)K?Of378A%Z7I#LD}9z1+{}nsJcP4faZ*t zPBF&&@(zjaREHT zD1DUN$?KqBY$r=q`o*Nk2YnNnI;+LiDBS~cZ&g_H4X zw>amIu$>OJhK*{wqj{%c(T#VV@~z(6OW%E9ao@gu!^s$Z=Z7g-4BY7f-3;p0^#B#O zJw}_;m5gTwUO?BO$1#;T5|d4H828tep|X-dBM|M_)@jt*;C>RNr0C+}0zoRp(bA{S z|CG6xD1SnXw)F45H{%4!p)1+{J8Cgnoj_1x8-peuEsYZRv%(yPbD7Md&-p( zBq15?(!tUf9{dLeq{!a3$H%o13il&2-LLKu@Zjm_>5*?wF%5~KLqD0T(`4$$ZZ87&zAEjH4a-1vRC#HfD(daaTZd-dzg(dP zh18NN55N5Sy1!-<4<(j~jil)XWBkvtkpxZWSe(QUai=ON=&`D*>T>g{Wn{o^Fd&>5 zE#4hVPnRR^9h+)k!hbT;>adl)B_$&h+^|2~zGr>J=%ys-x+uA`6+GvRMDZj6yNIJ4?5=vq?=h_qozF3*MeE=6KIJXiTykTRYU7>vt+6Q|4bbduD;!%6ltu zvfgZH<~}pM;4$x%t)~^j3-Mru>DkUG7g8OB>WkFmen+) zUrQ_xcn(#x#8)&!1z86^5#aX))ost@!-~A6ORwU;Be$wh8f~ixX4s4&N#2gFaQ`y?kqDal|j_ zi0(4EaQRyMLF?fKpO^}N=L~%^zm#*zF76ZOvXEBNU`chuI7*N{M75HUgjw-28??42jp{1p;*qh;LU}C}HmwigT92<) z&ouezpPdFyPq~kM$w0rp^62NLVSC`d7g%8k%R$i#u!9+-N`}UUXt99??-#L)z3EqQ5OFDQKiW;#`d!O=9;u|G>^52^f8>?9xb)zxT6KVP|9Ws#udb z8-iL%Hwyj^DJU!yJcs#vIyY_$&y=no`_nm7FGJC^tJ!{v4@Qy0wc7~PZgAwb&#V}M ze|gIW=l&07VtoSt!aElJXQ`r1yB}tzRe4(g{@b0FE0V=I?gsN>Yn5B)nOuDFQpoA{ z0}Fp06BF8iqj?eO)4lK94-OCs!SW_n%u)Vry z_? zXR9OCSBhD-peYM4g{?$vs|Pn#f}juq-ez7_wd`!r(b4j`!qgDGQ~mm@fo-Jp0~mx_ zf2I?ZHJLaxlJ8gB*I=wU`lUx5z>yYC~Q5c$r%_?DJ$&{kRM}ADpycB*fsm#}<%k0(#{n z1+AyLXrBzCE3l!(?lnbWGK?$6+UN8u$*l4_Px_U<%0lHaxrP4Rvza}<{IwG<=Ac1y z#~F6fE!RJ~9%)PNwXoCegW#1-j^qqrof8wU7wdCXiX-po@-J2s6UR!N$RD`*!d)B8 zNrih$W-GLZTz7+&vb}cvMldLFy4LQK|Ni}Zj|E*#8G*ZtUOwf`-5dJ@$?=8_hS_Fm zdTmV`nVU6^416+ZXYN+##%R+C3%;hcCF=8?fa=*@Fcp=#n}xUQ#&}8fq<^roj>%Z9 zn=&nF$@=NJB|4f+Q~FWamiyw2LzjulG3034b2q3~Y^+^se~sCACCM0?{wO3{Fmm5T zCx^Mh;9yHvQ_s6(7|;Vl?-q)l_b_v=R{GZr5=nHWTN1?t`R`B|nt7{Cm_EeQfqcig zSro0H`0GtAUrhc|hHNC)kTk~`gEzS1b8$!w73lf8%wM60{|X?56! zWUx9JoCP))ycJU5*rLBGESn%s#ygE|Ok&#(DVPDKD`1iY?Sr)i?Ta5le+U#gOo-#7 za;TeC`3yk^qf?g3q4Xk(XH6N897g*X-{L;_!!J17*t{U$bEffo!5Tuf=9jX@rf_2C zs;u^2aXa$?nyll~+MH39#7>)2;Q7p|aeZu^qvAw?qe6_}TJ=HSLfK+mboFL=ySL=o z^!JIK!OcGbLpoweO`EW#Aoyt7BgT)gq)o=}0B!`T@T%<;9p$70)7X3CraRAw>1qWR?)Zgs|#(2o)ZSDr^=BO;)m(X$o3v$%`gC_ z7A^n#AyjFR)l@$q_quqxmYY>@RAI=3kIzgPNWSHzC2v*hc*)6I6U{_S7`voopH|ol z3q)nyN*anWeAR2ADig#PjcZ0{2Mhi)I-YG0Z)^IMAG6$@H`9FU!vio_ad#K`fbXjE_S7i&UNrN+uWzhcm ze9Msc?zT^o%sgu7{+#6HX+ia*iPO+zalX~*l%-NUs9~5Fm#9hVI+OLbz{rOf79=6= zvtw3mTW|OeY~sQY&kQ{F<<#Xz{7mh|_TFN3VB<%+qvnn)7kRUwP4gLAF7DP>4`5Y3 zVU;3Py?@6eK#K*0U#BAp9C20E^-F0n-rUDTB2LN!;d2H<{X&TzZ$;E5^hmOm*+q1< zHb6`(ov3AG6HGep9WU?@*v+Oe&vqsdy`hipRK|@G+lTWov9XyD zGyME5!r;yy1GAZMsv`j3qdgk2wO0oTTOZm=QPAIWVvW%SrN>yethT(Ef{9S zAxyG4gn$_Xc54=H59>4D(Ue)OK84pNdgYcf;XUymC=}gGnB!WNK-HPsU_yX_O4rWA z<0jX=)>Pz%f6XMVD)h`@+h7Xl_<#>jhgo%5C`}Umk{lM`l%knQa%Q?ijf3&{V)Wwr zb5GZQPUZXlglG$IMD&<@cd?6}PG1Lj9fugSKQpHUaI6LC!7Ccw>)nB(EIF<4w@{{H zuPpZIV%L-ov_T43vTlSkwC#M>$^DCLP)!iMw=&EqfLC8A?rd}4xO2g0PN=f=ysyt; z#&K?Yx$L(kG@Qx~)?(g{z^ccNl0oygziyAM&jG?-n7l8Gi&7itn_@P*iB0Q@WJha=bUeU))Xw>z&| z{*}*5dMc3Et_8rlfvb`xVwPFLgUbjff2CE8ih{a2ZjDn^*#4P}lKx^drgG=8O`b5X%pH>ItpC+~@9WM32fK}|%$b=r?2&a8^@Us-~ zkw$?&w#s+g?#>Gjet2s7=)&NB)89qrNW@?kRB4wOGFf3_7c?x2%BFUMet9|8 z;&nf0^Z4ah5u)?WwbMJjh~di*LY)}DXQG$fNw-`=(m7{eeBg$3(j(L1t5rgkGN9SI zrp?@d0&e$3@2m=&w=3zx=b-9|hW#qnjwn#WBIi!ib%2%}YowcE0HZWOiM zx~;DH{?jK>4e{Lrc)-xg3_?SEV|WBq@(9s9@^Ckhgjn**Y|=H)yfJ=I*vvK8<~rdw zb3c4vZfRj*VFsSOm)OBOu>9{59?t*=UXn%|f>yQ5j%q9Cq5v(%?>!F}z2Nidg7=PX zwjuVRE@V=|mLG=>#|1+G%IchupK0M@9+aC#ppOUDGD;)nB8uyqe2N;VI2Er1aAN1g z(8Rg?NGv;8vLrh3B7}3=4;C5v%@L`3wXa4F3(`%AXQc9@1O0Jb-plSvFWnMY{+66n z3UC#Eu8`2HTlAx4)0KLxSTlYZ?eCoJcHy3i`m_$e&cW0h*Af?6wvu9OI)hGzhGfo9 zm#4krbB&d4P@u-BIhW>=Coi@6hecpuI*AM5)H_U7&Dn{59{JOEeZ>$H)B_m6dmTnT zIbNLM`W?9!$g!o|fZhIYY`YzoigwfRQm4w8{>pd8Iq<%IK1e%qw$?+fs~3|7kVP;Y$R=@pl5YE&ZyN;6=Ml~h__V|qb(x{hZ(!!VE?Q}+^Xdfy^wWsV_4b>B%K`B`c zO;lyhDnHXw(q^(FpupbX&e`(a&F+rY?Z?CXgbNP|?H_o+zlie*Gy;^x&t%($;}%h_ zDHVq&KV6q%4;ji1GaF&PS~|c&1QVWDju}Z|Whj9t*s-dD*=PS_!TaIr#74yVggpmp zeQdF=DS)0JVo7SY+`#7z5r&rFhX!U=Zyix3>(;9aC$WO3)g$3_-M>(~C0ib* z=v(fX_}O6!wcF_W;4`|T`ozSkD}@EV*KO(wT`@GHKwlj6znm;LHV`Vbi6Ba~38s;e z_MWSC2t+O*tACKjKsnfQs7;U867`6HRF*_^l)wZ`z*MNzDMuV7pea-D;jE$pyf{mc zTV|~4NE;051_o<(yU;A88MA^P2ytHR$4@QI6YxgDz*(8wXSuRI@>W*IZbNtJ(EN&* zN4kXpE$4mxHZg-D{h{2zr^`bjVKw!K2OhOzv`lzO(gP-&6^z%#gB%H;IL~2m<}x>( zgg21~hg2@lsz_(=-O$v9@YOKRd#K|g91|(@?;z*>=BBNeH(;_=?!N*BJ1)9^`oh=K zYyQAFJ98gWQBug7tU%a=hj03imW0_%V=68tFDzse>S%lHsCMX`Dy3`jzN7zW!E<%J-t}E^i&6r@Gi&u&RAx^U{g$G@yORaH=|rX%l`93t%pLtmF2RKe6-7dji3M`klqz zu^r8RdGWnGRQc-;uKZVUgu&(*36&Ibn*tLDXy|Y{9Qz`Ap-%Nbwl8-hYlo!x2%fiz z!5OOuMpX^tBv#u9mL}&=h8B&kFlmlv0kJcJ3PC3)j4L+_I8HV0`A{>~sX0obOnX;F z?%{f38oT3Ik-FNu$G>4xOrws>hL&Cm1{8%g{9-C{45%#_m-H2UtPdeLuFY>a+tkO& z1!X2)WCYDMRBY+GA6(%wc7t(`;(%jCcIty!A{biJY}eX|0Q$-KX0;NV#%{NST!f+= zjx28nyryX z>vzb`!4b2p(cv0$hdqdRR?r(}mm|LI=Msh^izpiVg6xCF#|V<>9Q2L-A@;}F+!iek zijh(bG-qhqeEM5f`(W=2J7%~2pb^Hrne5HpflOof`@P=-oRmC3O0wg7&xjEC>)jth zbfSvb{f=jBud*>Zg9HoZ7^nm(==YG7>D#0%cf7tuvwXh}9K zg??t|%Tf_pJ^Gxhi=lO!R*61wnngp19=Ns~%~cf_!2o8tuF~42Q}USnU})W?WP5;2 zU&GX-?NH@xRYWwTh8AAxfd}gj+Io5^3mS6FKs@-*j-aIXy&;6O*eX+PJKL`$bEK!PQ5ko>xSkAcluI zyBMe4ol-JZv$K$9!gS?7eM{R&ODpR)WYl34zCMCVxSH{KPiOa4oHq%~7WC&{J1INx z6DEEAV7qFwc)gjv|7Ek_=u(6^NlWQ#Zu>PAVnU8SnRVbk1QRjC>zpZ8RM?q{G*v?% zwz5q~+24yFc*oF1ypVBmf51BtiBix1^}c}FXMF`>W2oNfL~Bhg<*$a>q|xKHJ90TlO)ht9!0X4XuoE`EZHR^^p%jt)lB|(jzT)F*uo34{;YpgOw%E z2G|Ij<=Y3_596E^Iywbm;gg}Vk_KK}T;)0i7CbUns_j=Z+AK?>;N*;*7 zq{|T6R=UDVbL<_Lr7SE-jBkVDVzM8lmo!nRh_gJm@aH6mP0>7ks=rotSl+n97;q zg$llL3>q-jdGKghlDsQyH}ZfZnc4MHyn9k}_E2&EP&Uq{>6yofxP3Fx@P8K%Mrz7YnX3zMAFN14= z2w)6mz!1VTOW&wLU|?0ww=8d^O&XnPDopAlD>16GJ7vOSVCvV^)8B6n&#kupUezYd zUDI%;eB3MM_=yEcp#`=2v;X#<|FI_~h!dicTnz0;pFUai-Q1)W4m`RI0%C~N zm`aslbVY-i&};*+A{4rZA>0?{L;it&1Ab!T zU>+m;m1V8^A42}G^)4h68(Y>A%>X_a_B`^Pp)4>yz z#Zc&2Pm88W|B<*@F}?qx(PL-6e+^J33)FRv`X}PjO2+h7=bZgVdZMoNl%()p2SjXetBd{?df}{BfGzv{d4EA& zIrkYy{1IamABNomNB91Y`Cbp+eZ}(heH1=iUPD9P<$&uROu^!Si%&%4;4mo$y|kQu zFWKf>AxEm_G$vJhxlrm?=e)?R!iZoS&NK8IzG+RYo{XJ?2a=zk^iDiTQSA)mua=Q{ zRj@4(e*!X9f}Vi#zlH+39@%M|WnL9p5r@R%`&MD&T~y(*JjzIVtSoEcqLayi>_mJR z;{@1%Ge`uYqiY>D5-uWGF5^{d3y)H6O4L55Q0{EZx?&?^x6M$i!z_!*qFkf6(`Iz8O5UR$<3!&+a|8qJB?w{oVzDzcmnAt>w z+h^`ae8zZ%=2-^S1Ee{W^-7;DZ#Y=nm&m;C2`N0CY(1=uH0-B+nCkPNdi<{OsfG?k zp#te$4rR_a+?>#!Jg9<+!E-!YZ9nK%@=ajkSEv4a4GP&Jid04IC{6&nf{|!g;q}w+ z_~eLHg_v(emh|wy6>Fr;uhyt!Ziz6)+WTe`!A5X?ekz+#Q+N&?r}?ODVjw)#yTF3+ zP9e<%@D+q&zr9~#mfk&Jv=YXiVo!n24fPah#*!utFDJ-0UX1iG#ET!=4)JkE888LM~x|>K!~>Iek7TTk6&61-pE@%ef=~C z8-bw{zI|H6_Amh+{HI(#$%JGpe*+9=8BiB;Kd%e;_^;mrxOWvK;qmGqVPzz!`B8zf zmF%U|=ZqU7vJoJ}1Xs2%2_K+4N)q`TK!6P*!T1owqXdJyz??U-9?4ThZfaK`lh`x6 zXLT+!OlhVqs=CujQaAEQB&T^)pS(y|2t!iRQZI+YZedpMsT@8=O!ig@;bsL5p7As? z{H&T8v@t#w+~Pcw4GrIqZWvL$zlGySft_KXN2~DYBViMvF4^@UZ=YI$E$Y|@%9_kx zRxt-NP+@$A&09Ol_%xnOp1L5TcQ;XMjKtA+0|IzDW;&F*G0(3AzR_I!TfwHM{ogLw zdxk-KUWkS-jm%0)#ya;LCn(b6F52EQs%6YsEZl4|d!0;=F}$%tU>Bw&d)2x0TMUB$ zKUuInJUsG2F`;i;(t|JeJZr#y<<$o@1YV4kH)NCllDX|k__vqQl%ux^&LJ&^9jOKG zZ?D}owys}k?LJf5qRydmS^ykorC^qbkmGMBM6h`}MJ!{dN)XCj?(?PPW>#cR_0EQ* zkh|pe6S0!JqY2RV;b6>9n}G`+rbia|yU?Os8(qRGtvs%mH05blA*Zs74!y0_gHQm0 z+(PEfhC=W@h60r34DYBkPN1Vc@B_|(Jq5$Obn-Ab6jNUcQP6&2Wq^apZ^>o&PtPfzI@&rdqbbq3=K>b)rVfXIQZI&ECCT?$KeUx+`NLy*$XDV9;bRS)Vv zQTi3E^WM%1Ob%ZaKCi_*2_@c)bF-LXK=*w&pl6)sk+zwM@bFi!?Vnm9knqgLB|jM2 z!}dbBg1vR#chD}G@8zogeCdgJ;E$$L;Cx{@=(|vhLT%`UBa(}^<7_{jTFlb`P zMSiu*#Bkp6=T!0HDHCtU;fgclFn*f9!N|4iuK6$=8;|?lQw*TjIU5|p7zu=JwiPjT zmmw9tn}Gm?L(7K5c4>UcmUxA*Bfc~QBE};OPqV2p)kmGo*oCcST@*s?FDv^kR*%XY zVPeM_uoF+$0BH;AbA92hSu$j#mw`oTH%Ht>Fmaay`kbTHr?%|6Tg;Gc4=`twuQun|9V5989lQH7d?_>Y@zxdmaVZZ;ojZh5`s5 zIa%C3=KEP{EDK*<8At!{%+MyWUH7^Rooq z;|-KIN|!@s?+s95XNVWDM5{U&RDW6^hm4h>$>eOF9wajadCvgOS!Dv%#;xJ!23;?uCHYP-PN)U{<^KMRddCEd3?K%mtZGQ$s{?hw2*r#FU ze^9T~;tH7w1?U!~%L6k2J#9yo9j?mv!Dq|mrsy#wWM@I#kZyD{w$=K_+P!Kk9e&$2 zDjE5t}q1Th?qY7cd~o4)`R@_xO8oR}Vi~fqI#JH6mK| z$1RBqX>g-idbFK=0DW$`4=jeUON2Q%YB%^w=*%Nfw!BWQcq@Zw7I^t`BHyinpMo$i z@KSf_%)PK`nQWM7+oZcRs%wLbmjUJ6u0cNZVd>lWy2Ac+SzcGID{%~Ca(fz!Rmo8A zm56yj^R!QvR}Hez8e(j@It85Eue?`y+poEKq@@`Usd+O7Pzc)VT6)Pv6l@>fvef_l z5m#jJ2g{`g8f}iWEqXN%&VpK)R_JpG`(MD<{Q7ccj^8S6li$hn=j*rts~K!FSDb4f zPcOr78H?IRb6}=qj3>kJLEr1T{yWWGrJnlg-jgM zQGDuEh7P$E51>$7-KZk%OW%z?x#iqd=}3v(K#{VOM1xBVAFdFpxy;%nT}(7Egq-tU z5cS_xuRT1PDpu)=7L4RCXksaI!`RV6?FJK2AznoKOnC9qT7J?8QW)Bu3f;xfh@FVc z3Mu$l(ZbA=#(uqpeTq{(gM(2y!e{0NU-PZ=*5&oNLIb5d%pL^HF!S4O#2U5q50EGq zp9shSfUt**LCH9JqlXw6<0M)DeK&eiqVr@6RlUDfmS?|f<-ZFr4DI2~s>sc?SDFCy zjGE6r8kP~e`aJujdW5#WI|V3E^Q)f<7B_V6tufikQ&Oi>|LnPmA3Wi3cX+4xL(D>h z5wn2?XLVt!;o|A34C^M^C1b!AQ7RA|oT8_9Hm4u2M7yEP6|UzS_k1zzm2;N^FX7aE z$yURapMnA&Lm+{&hC&E%B4u#W_~9(;gzBOyXL;eUsh$~aKX0|s{AsXM*;^0F@e&Vr zHtfOfJF~fE>Tnl#($s6c>D;vyx~k#@VdiDX zUSM=XfU8GGb7~G(7a1s5k--loIwecytG{k6)Ew4XcU7{@GhmQ1ex60hLxJ?@H0X)p z#B$r5W#lT1CQWF&^U~ja+#*YFv68mwK#s13{g|G1Vi)-=Zx!se>fHL z;~V|lEyT7%17t7QNZb)y2%vrCcTv+Z((+s(N${s9f@k>A@8tFB(I+`eZ|*ddKQQsK z1lst!B3TBsk3XH80reAWlabX+O#&qzPv8Zv%$IVnO!7eab4xM$^Uq7C|1ZkEGOEg` z>sAqzl#=ceC8fJTN+b^*(%sU1=<@ z+H21_*IernJ@C5AysCsLqu5`BZX^Gf|{xRSs)} zWinl5GnN0k85p7?rycuWZ!tNkP2Wo7+Gu@?2CSo5C_obO+l~kraj35~3z!m1>ZXKI z!C$^YzUJzz$cms|y3|;YlOJ&%x0zw#@7X_nFJn!znb$uy7+-P{I#z|)L+PR_1`z5E zhhvp*BxpU9P#g&-?Z;=lpbphciO8;0>9}Vu*s2n~NP~z*%9l4!1v=|()ki~j2ep&x zwm_mb-UfN)`Glr>wX$eXmm=D&KOcfzpk^y;nLnl?I~E@{-S}wA1 zSv;k#=%&*f#J_8oI82hw-Xf?75R1h2)0;X(|H2{C)X$iGO@#uwuHBs*=;@LaG@R0R zm6yDb;z!kw?WZ=KjC>P&Ywm{ZtY>l|>p8ZbujmTQqoGUx;dQ>wXnVqSZM1EF_QjVG zAXF4C&;8YcLyiPxF_-1=m$@L(u{{Rh#!_>e)alVWHEDX@?EQn#Y`4|!RhHD{3i=V! z(2~S}p%>U_iT^c@1qgRU>*k=d@l4Wd&0iA$qVIx_HJGjmOzYV{oV*}b?VlN5G zHAibvk%Ql8KXAHjU4&kUA2do@G;LK?eL5Na*nvx>u)B;#PFkfqlXt`fc~5EkCDy_`||AAsKZJBAS}o`GGp zR6{wM{4gqjZ)`+dY%|J24rsioZwW(s-IS!2kHs|BkIP2n1>LK3z79oK^WJDQzXt`p zgS=)a`vM96t^Sy;R|asp_3LGFV)xygKZNGH6pi78u!_KqisRD-C~%PN zx1y#3zG6OBm-V<&r#JO-_;#!m)o!%1o}||J`Yy*49?s&ef}`irDvxO7a(Ud3>8)wc zg258zD(9X$+rwb!H0Q?8H_N?Osjv0Zp<5>=+MFyS)tO(}7_y@U|8kP>y-ae696OD$ z|0Z$%`AkZbw-l+&&R_)=j0`Xz67)Km9-i4$-BuYZtFq+D{iyl0Ji66j;D=XdL}iyN z?Nq}BU}1aCXokKRo-3@jo7ug_+$0R%6IjMp(7AEV4wme0Q%Mm_Xzk=|KN{( z^@BPpaU))##N*a6LyNVquTSz!`sV4OoYsltk+kSHDHeXNq<^R+A7l^Oa(8w(?w z-Msrev=|_k8fiMOpeqc+e3il^%2KPsMj1{3A}~VM{PMI(O&LitxU~A|wNThAa&h?3 z);E)rH1W9imktOz7r6DWp^-YH&>BO|$dTR{8iw4I&t(?~mJuA<(}fW;Qwa^pP`o(b?%)87Na32I; zBFcIHcfW$AS32XxO_+@|Y<@&+XT5-HvG+kJJtwnlcY>n??<-q?NrxX{PPPu`tv#Qp z_g+2u6GZBD@4ZT}pQMdNVFO{IMt<6g{K0V~5V>1?wSHDAJ~v}*?-w&%?qQvR8ot#b;?+ER;Jr<2i9oy^H=8cZ zI4DBIirfE$XAL?NfqcJdMii_UP%(v4m5^s)HA`M17U_{$YCq2fVGe368>&CmI&&D6 z@)cf&?Rrg^{Yi=uQ%8(vQZ%Dhj08Z|R|7Na z54j!TUgbZ%LeNyLKhf)!DXhD= zlYavLctl~Vzp|zXCJlW(DN?K(YJ2~SxYmvE`^-}`-ZrFob9s3>GWSAht%{S zZUw3kAB07SY6Oe6%Jv+bJi9gi0ROsF>qmkL&tbJv^V6uiAZ(_zI)=LGV}2iZwB?^> z#2XTcZSP`k-Nxm^QtGt`%#p#kd~fPLg!AGJ4tF_Q?O!rO)8w93a+uS5S^%?X|bG|E{L}On3a3c0V-4AbQDy{PKQg41$ zuo6x5CqE_DXr=;&WwERh$y4)KjQnwF!_fDyuuVKr28_j<$7a9W8;Wd7$kpB>FSy(w zORjzXRiiyguOH?Un)zDDm7Oj`Z&uO7=Pg2sgozNC%BzSpFh>eE0TW+2ms#R6oyGQe z)SiB!N{Y+5h%|zA-9Zvww4HQH<_MSxGTY#KUx^)~#+4n-F53Rlu5~P=$VN&QOQF(A z#KG8Xk?#Q;ZmhOkN^=H|(jzuipiHsGC5_pWXIbNK9%5Z;94ri#~($|5B`nAb!tz#V|gGRYB*y?=R|GfX>msx)Fd7bWPzP`HkLsIleiz~mx zX3#jzyVLsx%Ld2o$~sw^PZG6A&65oASXk!;lkACwG=u=)9hnj-M$NI$mkufoWH6ie z8B{A4#bzyyQ_MIkrl-oxR2hwutj>!FL_f43*-*ohFuCB5%FJkz{vrG!mb$j3h@Q$% zzG)DaJ`8<`g7y8Q0+wx#IBR(HeMZIi$SLZc0bW;@*9>5M*yw&51zoYZGfQfw?^8yW zT0^wkiThDo``7sT*asuv52t#fqJtR8wVvydR$dS(DscvLp%^ThUfptqU?nE>9J-I| z_^6ZV#hyB9id`MYhs#`2UC{xpgVWto-^9SQ-B&Z)RC|{{Ld9i0YOVCqI(K%nz=E+q zRm8xm(P4r5dm$c4*-sKI>R+^5aK@F7rtf$rdLu*N#!UCSNvfxaJMplVqFdV*_i^M& z_Mslpv9?xaih?-s1xs2S)2Q*j7f;rW251`^dv;d;p8b@4G>H_eJtG2<*@?&5Xi^}{*=_T$GBcYU@9e3l+x+4o5UC!~ zOkJLQXFyTGr7srl4fkqqhVVR(2qPux#BWJmWiS*X#=Mi7kf#JK95F>C=5xbQjv_*O zGbQ%>!z#W01y+#-85Tn>m7GuVUKh)1;Kb?aN*~ezucH`9ip#s6#uS%62B+JhC=54R z;P+{s5E_^9bJ6p+!y}d|2%IP-VOG5(MZ(%jGQpe?1*lRK;wBn_hW*ld$*dzP=-cKtrQSkCOoA2u#Zv+;qUL1Bg++L4nC|=EfsX&Z%mA#CCgUxHX6#1Z zM2yJU>a7UOU)F(Z)A5*irdMBjuTMX2g**RSfnJ#VQTt7%N%3jIJlce5 z%zp2x3@m*rwGM#XF`ar$qPqFE2cq~2aI1XIo{5%$hWmsL7r~Rq_Eks84dtbx);4M= z_l28@v6${-H0|8=(9p+aITVtNk_Y%IZAN_xs%aQ)X37*Z9k0bJmj+W|e0RBOmnE=% z6rnMX`<*;C!ROV19;VgMF^03}VGD~8ERmEiQMVDbM>rOSC3NwMe`^=Grk@6-$waDV z?#SlOS`b57i7q${b_*rH85#s4MtO%W@lQ(%q)Q|2z+j{x5_HQfBiB*+lK%QUh$;VH zg1rB`-rkr9pWxR-QGFAIeU3%jK7vV~URtjfgI_FXKThZeoJiq5D8}ci+nzruO4o-<2^vTfp@!3L2!_BO(-^5bLa_8#+UGhrhg7LV zz<9ST)J#X+;cl`cJN0nRtJmtqQA`khIB5xCNJ>~5RHhhN57}NqESwNB_L&xokST!N zKyQCP=G)K?+E5ul*;tUV)bjjZrX`1j+k5xt4mHE5VxYGVY2f^R6;MY!lV*6HKe{#g z+EZMBk`l;P_6v$wA9;nL=97%=E}n(F=wtQdSy4Qw9yK(i=t_m{^3`v_0NIftxI2p% zuv+i{pX|--L^qQPB}TF#WCV#H6rx+eP?PXX?cjmnWc5VfK39s+-EXRIY8&EFr*Pzk zNXTi({Qz?Voj)9~!esBr{TxuEQ-Ns|qBAZE|D5#Ubzi;~625tPa`EowEnM1r__gil z*X0u#<%@NMP2TBV&Ba0JGYg8Iw+OKb$6aOmDli23ph}Z$8vTg_Hl7h%Z2;bG#X(3d z$S77mz+*70bW|&>+@ry-A0eV%Qd8pll9FW&*(?0(SrU{$`UH*vJB4j<};Oyb9DIy48_Hzo^?tB~H}NzdQ@Ttnw}TDp74~EHL?!E(^#1 z`@?!y0}s1)AR9C-{&E}BCWSO;#Jw0o%6uI^A6a2C&SbIRMa>He4v`_-b<1U-4fTybTBb6Z{#R zGjANsv;4~fL~t*Qb3O$8Pz>>{kYAC8b0mg_@%5COjZZKnV~tX{dF;mVro%kf|A!)j zP$(%0fUPbXw*Tk!IUPibUotFhj;F~v1{>S^?$0~6uUjeSY!t)NEU=HQT zih;~^6B+FH;hBT$HsS~Llfld}yZvw)JKoY#Nt)rSj<^37{3`+<+emx8&MMFIKc0xe ze8qu{hPvF|p=iHpy3Hn7|MfT3pt1UlSe2b1AL7^iTDFN}ffMp9QN~QIx2SHMXX!zu zP_HRuf4t&;jZ7S}+8W7z*q`>1f*oic*+a6(u{j;%w7W<$l}P%eYqNWR;Oy+2boawn zzpo0*WTM7@Fz*MS3#@#OXyvZ)n|}n|KF`@Nd`X|X3WnVB+Y%8t4beocb{lnGEH!!D z8#?vmeEcI)kjlMO!NGBMX@KK?-{8oth-UCRV|}#1+ACEfgUOIwDv?Ha+`2qRG#PQm zYbDb(vACFaD1#e2*9@0Yr$w~gpa>o9TUkszqct&|8s{`?d9@V~}uJo_ET@GS>NZse@RD&RH;x-9lleH{zn#l$!q+DUH7t@;e%w_c|2@y}ng>?D?O^lqG#9OqK?LUE5nDBtvUt zF-8PSz%v=neQ`cH$wJ`Mn4(jK+7%TIFLlpd63A75edPunsqoZ7#=A*f^ynT!r|8Li z&Lrz*u=H5}3F=KEYnEwcaRk;hOxAx|^dHwW_0O7Ki8}MWv+;ac@D>c8f&JPgubs36 zdF{a(vpfps-3|4>9G_bwrE1zR>`0VBDfoba#?v?PCKB~V*-W@Dx!lB|E;P~iA0d^_`Y#e3F4L)IN z_H(2cN3%qh>g@Hq(>zCu&`70Smi<)6M6WPnA2U$#%p&y<qzZ-H-j*$0ek`v;X0_^dGod=Y67G!`}Y0sdRl z^A|w&7WjxJ1$sXD?&SaAJD8jbe8Wx}jWYL!@4HpOrGS{3#O4uFG~94{y_RP(mt9*q zVAQ-98UM-Z;6tisv;NjWqseq-b&IJQ@d6YR0kgB-VqW9){JdkyjF|N&X@`K--r4&qI zEkYO2)*NV%)rxkxKAJD^_c;=9_NJCiCl~fR3BqQh!Fd10yQ$IsS4YRXVgXxttIIxi z1QE|mwSFETP1XmY^95X`Z}i1uj^>E7gg;M&=k!FZgIyUZzc@TUy>d8|N2C5qc=$Mw z_Hn)7t1&*~(mg6+=c`M15?*(BSwpg64()}8-b9W_BSUU)f`3BKH*aBu$>G;FS0l1e z>`6t|KBSD)-Vax9&d@J-ZiFV$h(^;`i5h&x2YKLZfq5c5MjiIF)1bE(JR|N-!9=uq z;+qS>mHQV&54@(sPWFprwpqaC?RS@$aSlZS@6;a@w3C)kko*;l-r3NheTEa{oya)O z;sVTwiql6)%$E7VvS2u4Sz@M3JP!5x{UEM$Y+NYX+#(T%)rdwI?x^kFj*!Q=(JaLB z&F>$rBNL1-(Gb9#W(r~k{WW;14JJ(K{2p5-xG~hy0o=8aoX@oxD~CkCRyk)!4-=P? zKJ^j0O6Io1zqvZ__G9oontSENs1Ac5yEBMucbi5kAt?A_Z^Amvf#7MhpoWg8&f51# zi(9SkGG4z&_FG$K*33^!XrJ10IU^OaVu3OW;KD`LZTB06$_!A;W{^uF&bI}@I&CcF zmTK0%2J-7D_+7s5WPqQNR6Je8m8H7rD(3!UL|wTyG(t!uQ2#Q;!TD){u!V_ueRnrF z+aGB)(dtJurKH|^ncy^)Ak^s4^-Bg9L28`^8z0NM50Hv`O9A(B3ae-^@Uk%|jF#8! z8Pyj34MA-FmyYD>ZNdnd6iNjAiQ@2-NiT3>Vq%AFH&MBEYj;EId%d{}HT8zhhT(>z zqcX4r&4=+E^KIEGj-g);|Ae6Y`~)Rnge!p3F+`^1{*b6Qt!t?>k7Jlk{j6DtDw zdi~ri8bu6sdT~Gg=6zY$!1Qv@^*k~d_EE+NjdDkMi1iGL0*23ih#WKrk!{pIYdjP` z>F4}S$d_b4?-*;KNW#U4qzrFqs5x_DSzZe%muiP{qu|fm9L_gRu8QB_Rc**&QCX=+ zNXC62L);oR$NVr`Yl*2qDQkphta(f3WyT>PU4Z)A8@m;#XgTgXS(!LE2?bXxnkjXMCcViK5h(} zboksQ42n1IcDw_E-|u9muGM76Y z!Z6&RXncK;z#i-Z@Y=#BMJ$4?fy8oB^C72a&M7DM5*-|W#4YhbZj=iKORkf8ozdLr zMp;K*=Nq(-V+O3@@!=mad$QbTne#mnglo*^j@I%TLVjdeJv7EtbN?l1~Oe6357Ra|XpH@xx=k#g`=T|eU_Z&&vs7~TPPcx@A1q~ z=MC^Q3T*6hBS;WZBbGY1^y}rgRLBh^u~9y*f9_NQ85*1p4J1@n#mK|S(QJMVqhz8W zO)E%sd|EU<((5Z5aK39lW$O&be~UG_V5j-8qup@7K{d4K9@1=lq&vOKlW)&Tla3*& z?`H0$C;m26oWI;=Z4Y{!I;80ZQ{<_)$bbE_Wcy<>8}V5|Xn0N{iQWZb%OV9X{m`fSs0}Sb~$BaK#@AiNr!v8q@MPmLWiJ5_5gziBz!)G{Y$(3PCqJ4Vu^P3WI|(6P`znEY>S8T&q3W*9y|sbRy1#05x}^kFiN-^ zgY)%s((i}mX#$(1i?}=syVo24u-Y~kIHl%Dxe*$V!smHJmCFtgh}cGvEb6!!xBx}J zgvQeZ`UbvDbvBu2C9hJ zEmSS$8{P(EP}N-Q(gM=mXttP`=yA|nU$_hc*h*vSY55WfT~M<=#=^qF#lTp?{S}EI zz+YuNs>qc6k+20*CW=U>T>&6gq6U2nAggM;R9bPz64krB}Rph#!g#=$|XslgUaDp^bA{0;0(`3J>3J2Cp89FhV?5BGEmr>FJ?m;Hn# zL-l@WB9;C7G+qaM42jC=wa$oeB8?{@KloKk$7j{j_w3fQM&pcFT4$Ssz6O%9Ynua! zoGy1Y%7>lY6;y8+G+0So?6#|teTn`FF4?^ISwRN(It3QrCkQ)V>fS$C;xL)bo<=J8 zo!f}C?;N+Ba^(mkyP|!w@g?j{eV>nA7DTx83gi38yiT#K?p?S2-FwKE4A>ECOsy`Q zmV=~4a9v*GwDT*jDF2+bBEt`C;!ngm<+4gXF#3ghU(OeLV^~vK=4;~GL<{=dzIbG~ zY2`~US#QW=i^TQOI|vB8o%zOMpdJX8AnqX;*15|O1*~?14~H{B-CWTWhRBD>z15?s zegdC421-GOqxWIb;=@dZ!##g?jkFnLA^}4)eIy{BYRe<>Fy zETP!l6-(6fJQKIBgL9|?SZ^z>KodMOOTTzNtltj{_=SsGsgt}uw#j0ul<|}x?bD8J z73tnKwEkVcbKi;#c1QX!B>6XkE-SYI2Cm09D3wJp(Y$KR2TM<6lO+Qa))UABDrI9F z=C$=(CN#xn1pWTW#N6XMY)}bC1%tBhan36%~)XJFYu^H<{nUVmzEB zSE=B9xffrg!@kk+SoXu~b35!Q{XM(Y99YMTAk!nxde^;`oMgXTtr8Xk`4hXF5Zd~a zv+X*$@zB8ynK?G4R1(@Bx)BIrR;UtXvYd%Aq#Y?VMOr7DyPJ&_M`M$EC;hy~wl7yM zub7(Y3(JN*lnRH6iaMa`k*C}oK(kV*y*!bC5tqzw2xC{g5?(3Uwp#zvmuYMGwA;$k zW3s9%Kjd8mn6&$qGyopoqwG@{hP$ z)ej!8m+=tgp2PXA=K>)Z3WZU>@PCpMhUn1JgrY>5+Vvf`+wpt6Zv!jsmM4evM}1!_ zs8RkwFo#Wk9XKRwL;5r^0~v3M_CjkPI=~#`g+UP?(^IW0v`N+2K z52Y#GX=X+kB@_KL#K)2uH&Ag58HgK#BN0LlsS1YG?!VSTvYk#PhK&}C=DohvVALys z?2#Xjp!Vftfgum%ScV&#D4xsUds%@r#Up#&>uhy+QAqypB|Gh67z{o=)eQw~&>3Zb z($S4u4^^0|-4}tpI=Uo&_Pfcx{ATI1A!#^*BFz{z{{X}y50~+ld&A#E)Q8;w)THnE z32ihXBSgs5l*6*!vW9w#;1H9#ippZ?1^eUgY3G@U0c&C@%$OkAG713CW%z{gzXgQ0 z0t8NTG=uFUz7HyuA-hJxMP4fsZ4}w{^?A>w5Yc#Yna{kg4>M!N5Aa&T@E&(p^#`%> zwX})ksfhBp8oOul6~@P&`Z#m7R>A3fKU41T*-d@&22_B%HOFLCIElwR<*rBXL#oGc z`mG7c013a{gwb-?N6cE(n{XZ&B=9?$B$DcUna{Xb4>l8E4A@zyb*pl1JNHNozZN&0 zPSXpFq{?Y#gT5??M^bFP3;{={x2MMe%Jf|>I7kVDsV;pHnhCTBCzM6P38k=^`aOBL zX>=2)1R&oN`35GxLb>zYC-u+BAiFYPuA}==<{fP7wNx2r?N9p zY;7T%1YAl%m6G2!_WZ}$$*9+H%l=8-C(VTev%tr2nJR@@ri(*211Rd(E-q1*n>--C z#H>;M*o*nI&uH3UymKhFj~``sDYt)eD!&p!^m*TtAs>V?y>T@d{!Ww3N#%H6Bw0st|p&+i?jznSg-53^1F@RexhX^eAF7$ni{Kp9Wir zk!8JgI}Sm9XqIF!kVPlDA6gWFw(_S{hgX&6hix{p64wsC3y5CFFKm;~S^HR9AwA1) zUh^sJ;*GdI8YO3(%YUjQH-+BSuZ6Vl?pyi7c5kqK!QM)M!BtPiv!+78=| z4FETb#hSO#6k^PdsZ+!0JdsUsp>s;hA9U)F^S`jFkONe^FO`~OYdBf=THkBEj~^R0 zn&xeu5~m1FFm9?+yK1d_bdgz*Z7VFIUXQFEW;QPK2?uM5&NSyljpxn@Iw9}(nTbSl z7v@+?fF>Yt(P`AQ<%fjwXZiVfLe$=*vRh9==>`C?CQJXGJ;Ac*CzHpP#Xwz&-zmKB z6n#qaT?q%}7Xz(XQ5Z>_;q*@^kH+Ih4@x-^MY8Nt?`T72S@LHt2zcIqO%EyKa|P6I ziqGHExLrraj2SP;kCzj|&52&KZG3Yv&Wj0e3hXv|fRaB_e2(x@T4!P}BDde_)P<5! z<53@X#qF}3UJV9bG+ayLMFchSnylrX^=D=x_Y5t`x&3gCzDn50k+GsWH^8>i8Q09G8I{Rrm0MR zpbX04D54vMSg6w}_Mmurr75AS%@*XcZ}dFvXQ`-;Mvf*bFi|!`RGE}PaLLu1;HB_C z=feUST(aPVvgq0GH#WOwo)zOr6GRrzSE7-Tq9#vguW7+!OP~c}3(I8ZgRgpC@Sy*u zcif;^q^GBvL#W=6ZE_v2-i6|}UUHAo6Xvb<1JQJ`%S#O|<9fQZ^<2RrcdreFT^FBA z5G=82M>+DO{d>lFh}p=opk3k}3$JH#B}r;TikC~R=M$EP6e&<^pf9ADR0kI`!DDES z@uL2f-C=1~N`%lFcOYzL`s?}h`TN$(b!?uyQ?p~njVH~6j{?i+#6!pkpu|92KZ zj?`ud`{NW5+dgX>P!jsGXqR5SN8!fE$SB>KL)yE6;FT@hSe0NKp$uFvH?3FV!OU0| z5ZBINA_8+|1|Pat=3-KDJ`RSlf6!_$7*51|C#Vj7me#qqYE6_=L+4gRR zOf-^MX1N9$2Vp<6pq$aOQ26z^9e2!bi{8(Edr&umyVh*wTGux`a7OF+(p=zy$qH<$ zv-Jh9Qg<*Ak%NHUO1L(qE-T$uUpxyC?7#Hb{hL2&87gS=S_n`L{CzH~%nkC~%73kI zm-DB}qT>HvbbYCxkm{9O%5NGvW-3=K$6T`HB~!eXc}^K-JOrNQE$DMf1U-} zmXs8Ov49HgYlJ8X=e4O0oEuy3+tdc&l5Od7=&Pj)KMcnsLRy=9+%9C_A=w=(bBag& zep7gVZ@MCYJI>3&Ocfl$-2dEn55X28*b+RNV5;q>(TH50iWq-|eipW&#${GIkSBKe zAbC0*ow~zj-)g8TmmY~ciqE{<5n5JGez0bdF6q94Mz7Os5p&T z3xpZ1T)E7>;Bj_@<6WoJ2IqE)kj5mix@H);%NusC(%vn!zJ4aNef*IZV z>dc9(0q|P#J;#?7in)E+8{IY3hGoh(Hb17vLWYHmqvF_@#INEOgG z^ar(*1Obuu)62c-Qs1*pDGIAJPLkAaBj6YWHH28pskaDs*_;7$Fh@RRiL6i6hUT{n z&qiH~FH!6}9&ceusES!Pp5t^US8rj2Oo8|=Dl>k@Au<5p2OhdyUoRUQ3R!#auegMw7@HX$7p@X$U5gRX z(Rt5ux2dzlcPXVGd&63{v!tP!#d_wdpV9N7em2t3m?2YaBU{ z5%c>9Fe^ zpcCiYGc8x8?#VJWB8os%CSvd=txA?>j!}LKoV`)DO%{xLh98A;nY#Yma)AnJjg>Bc zzIIN&YNcJRX_`Bl*W;KA>}JPJmvmx|ZFNHax}pADZmV3~Z|J*Hi+LolyHrw}JQ}6Z zZ`=m^?XtA?3HDMQl%hTKxH_k0&$wbGtd}pZ#=Dut!8fNh-$MN~JbM%1cE|ETeS4_S zH}y`$;zChUSpB+dHv$JldgIe2h6Hq)HJ$m-0AkJ$p`Ci=?%`p3F@vB9bwrsiTlQAM zaoJk;HI~f~2BXVn@O1>o7L=fl*OdafWFo39pmK9K5hoNUNkpvsQAjJ%I~Z2xpf(dW zdMKSm1!Hu(^6IweGton}X?4rI(MPX0EQS)1C2Gv(!(4z8@kj3)-51?;mt*2;wq*luRVBdo*~KclRTS_(K}xo0Xzgxn47Hf|2Ue z&DJ+4o`0cKQP}>5pSuEz+BVO-(l>=|K7Mbj3WCZmy}qJt004YdrfGRJN8KoH2%Cft zYpMn)HDaEHeP?clTJ}7)`lIiou7ih*Uvp z(R_)uQc0qxgLy)huNYlALU*&JIDubn)R*)yzDwJ1wQz7>9riTGMYnfZyyE*cmSqyG zp{INu;I4;Js@Pdl6u7x*nOX`Sv0{)YZzmWF6N>tHh(v0*5QJMT3_6&>xCkL~8Sidi zxtp!M1)m+I|GdHl)Q0iyH$A98T#F=c|7{ckMr8qUy`cj#W&qv&Zt!~c+2wyygJL8z z8?_BBy2+L4VU6?e%lRL;-(BFv6!d*VWCR9z!Fsq|PejDqFF=jIs#q^oyavk6Y=c@= z7GekU)?dRtrMeK^eqnR{T6y_60;n|ujR$Z-xoh1%d^~jeFd6{5w*4N~JQA8yImVck z{CQBlZF$)ix6`>viSVOR;S2o9@=&^D7Ca}lDIz!_SI1+pqoul9H(VXF-EWeeX|Je3 zG+Ru8{W{ZgnM5*;w9mOgcDn_HYur8N(YA#SH1MJr3kL`1@HofM(QL91+hnJEPtNL} zEPCEiAyTRo+H_^M|Foz>eFd(7z<@ov(k+{x*$eqR3BAv;DP1%e=aB z9$gh)SRj#3zj)>A)A!1g9By{yjf$x0-1XeW8T+jc#s~mj`1msmLmTzR+nCiS6T5Tj zS2rfb=SR^t$n@IZ0 zk+=o%N*!f&np*dRhLyQtz(y;1&ihx{Ml1AYc_XyZo?2%T-ipJ>w&?4wRPLcE;QS%r znSZVd7%-eB;DC%y?pF`g1^}I;J-zw7GHy-tRud7I*Q88O1iZ~!e;e%a0fex z?th>o2n!MGccj0)adL!H&FY7Pk<#>p+a^m8 zl&KQ?2h{KTT!fZ@@eq}mS1_cePAE|pWsZ}3dTf(+q(Tx&94Y`^))vDpiW#etc~hcZ zjcvWugmAWi-rUUO)~y7{BJ{mIHl%+U!GD`Jg{4Rvd`ao03WQ39`)WcE2PXrcs6kY| zZR*8Urt&$03YyK^zW5^SW+XQQH<_>~K+VlBgVwMuD-?BPZ#eT2Lob;}uVF;>)?Bi| z4>8Z5-~bdEMMI!qNl`)C3y5R2pTNIOEdVjUn~Sj2t=L>Auk3MeaodF3h+yi1HqW1o zTV_e0OZ3YI{$9ikGJ@TP;w1Ina|@g?Xh+N%V=8(i0@gajQ3s(YNUt14Zc-4jkOpu3 zi7OPr{HsO)?B;FnHvotNe2;F~9?q(a;V%F#+{3?Cf=jrgs9QNb&wP&2S4oshDyMOk z_+$W72yuVz6mF(mkOpa^bX9d!WUEL--!o(%X+T0HQg7|aD1)(HvT*$9XaE%;i#KTu zCh+2aX7jiv%4dRCV0VN0UYvq}qZCyLFi-X#$-vN`TS@4AS^P7dKYCiC(p9Q8qPN`>uum(kg#@+VM#sa2(=R{U}d`$qmm)x$yK_meYxA0{Ufx0@$a8$HqHP# zfq+@Tevi<)s zSacj<7<&PB04koz!ClFv<-AiSPy%D`c`uvr+v=vzHB)nX5qgbAtNdlWtTHEnLTxNJ zpWkDB=m%7_!h~t7s5Q`dI9WvQ4tGDVpn%%w>kmIL+?m?(8v8#*dD`D7m#1+4R)&ZR z)UP@gsTt*E{n67~oGqtC+u>QbvHg@xacfpSB^)=K;oYp&WQ8V5 zWAPBj7`*7gJi4u&xJwQ*n>52Npit~a@^c41m%Qr}R)A`WFuLnNJk9$6wtk;e2%-c) z%W5mclljf*$O!NX_!&FzmitYHO`qyQacd76JR1y?-wPQ$%rZxAjT-K0TL{?BS22DV z7Jsb)CJor8on*_eVe~dxBIb16B~y=FE`kd*XquT;5+ZkSnQ^{&U$*GRu$Vtp{24p0 z7em%fXQO%ak7C~c0V5{bjIsOuHE)yr*9{50SBb}WnfZvsyOxF-F+qg<$e(EgUHUtI zI+Vts10u!5Pr#R*OT$Zk{h_oK;$1BTYOl1q49yo@$0)K{|AnMPa1oie7p^Hiq{LLQ z4xpVMb<-GVOvE}e&BpQ*%O4SlBv(HEfBcRZwh=IkjTsMF{d{v9<#Am%D3L-#w6X5i ze7Q4+M>IF9>=*TTC5(%4HPdL$k^eQLNH&XJ{4EK1j?Ge_!Fr+wE`d%%7k?j667~~^ zQiM_RUj~H3A>m}X>^laeI~D)Yy8AG?=pL7u;mLo65b-$bPNz2~obS@c)5LXjo_g)1 zX4JR?zN5E9To5?>w}iZY9`|ooRw?G6dxSD-0I7RtwmGzA_Y=IrPbGxkNz9|n3>ERO z!&CKVL*m&*Hg5e;2$c6p1avW6FMxL!&w{Lxcj~Hpj%O?n6^xnd~;*t|Rr$w>;}ql0v}a#Ne2F7zx;2rK3Mus*01NaJ(f8pyv-j zs^|Bk&xMF2lVD`ZG}fFTuLryto?vV}Y}H0G?`0YThy-q*Ak`8#TSq1cFcjTa4wOqyLttuIQ!VtY5yBdtTI>Z&5b z@IML;DjWJ&g*^BHD}bFlKHGCf>6zKDNHHEp-3C|j3-&5WhKDF}?y^O%2qOsOH>OBe zR9JA%H}I9cabz0^j4O9U-)$v(t?(+KaSGl7e!9Q83P#ra8{nw+PA-Y*Alh zufAO;LlgAfim!7U&KjO4WRapJHs6|JD40PY9ZD)7^9v)uI;6vM$)E%}?%en0_(OIb zKQbcZ_}My%rL!`P78oh_@(5T|A|4z(pv^?1^))Ep*0@EZO?1{4oXS0FMZNc8q~s-^ zraiWge@RedMm{(6?dBJ$#3$18cYm?ZiS0{cRB$hm!LZf~9EKFdT;IEEv1#JwFB}b~ zk7foE&qpLt`9x;xI+u~Lal6dxzkE?icBN<5M^-5~UG_vI*}0B-eHMdoILa>Hse228 zVW%wjyB#D_-`6_S4>~R{zt)>jotL5@m?{zc19jG0fuU*2;bypOdLOJ7Tf!gwL)J(2 z=c~XuUL*m4L$6A6V7pA>5&;1vO!*pWwD>yJw8~(}@3J^i8phXyU8?~p(HXsWkwxBlO*G{jUx8r)Gua4uzflW4TutH zRcW%y?v z{IprF%_l_+G^~YC@J&c&iu(~~K{kSO11c~7Seo=i5sUqCbB_V6Yf>!ys>Lj02>{Ju zZ?VSBr>RNi29n@)MMNO}yl1B!3#B+CfHn;U3H)&h&Hg|#C3~4HOOtLP;6m_f%d7A! zP=U?U(fKw|gFvA#yzf32MGL7CLlH4VdTc-sUk0^A9qJg9bp8~XzSPRk<1N6>8#nP- zvpL$r>K^d*sLeLz`yv@z)JIISj;=5?c3sQ;J#y7QYF;e&#PVOuB+%NjpojXAB7o-S|l)`HT;7YD`m=iLtyt_UgV^eoh3#e8{bIY0OrEA zO$m50n9m*)9#1((9Gn1J{#7(+|JN?)E#h-b20xbPCi^9YdGI^x(h~Z~#V(7q&P1WS z?bZ$1Wh6Q%zD5*!&dL6EMs2-z6Y7ZWM#|w8! znPRDh1wx_F)w4#$sB=mCcXm)m0ZfV&`Ei+#U#pQ9ZxT3Flxg349;55n&z%M6r3B*RqiViq4EcpQA5U2f>NQD@;xl(Zm6Gfo;y~tW%j#H7x{M1dJ#&%Q#WqRyC z*%O5R+UYeHfLeM^1f)GvW%`r$Npk^XF)0C?w)VY759C;&-dQ%qxV1j;5W=Z_ul7PYp->zW3A2nsw+sE3wCKp>w)N< z$4U)#fw$$j3h3Z8;_1t`n&6XPEV44~yrAr?63w@Uzduuk*y$F z?zv~jrQUngzsr=2bN}8qc7r4QXa$h07k47H`5>P!b)c$?LTL-U5Mk@vp@*4~zV3=v z?hE-=SKODnN=4DTK=K0AeD@tS1f+#GlXc%CUcqzk`$ z{6_xXVeYFFvCQYBk28U1WPCCpH|o6T-_Owai3Ryc`ogRq!D{P}6;&Qrq$u>5-%nRu zxG0|et~Y_(;?FBQ6KVPlaIt8^7hS1uxq5l=Xkv+nL204yXE>&eTJjT73!K#bWjXq` zff|l{KGud?W9dD(W|GwV@p~6&`sC=c_;lI24saSi!a^pW&-45NX-y_#PlyufwGHp3 z!E>~~94PKJNZsPLQ~siRu32_NRxSUUjf|IL0h>+dg;HJ3a@W8c#_UxM3nj*G)3tuz zOjqb6i+?J7TD}DU!=fRLEECdGHpjQ=6PgiFg=)x?Z-&0cF^PfqTU5R%^xWhs?TF*o z!N1YizAkVwndA2fS^v!T(;iC7k1dAAD~wsogOblax?bY_jq78jHUy8|IY27XX0f-= zCdMr0Ng4Hbox0v*5I5+hzE$MPR`Yv3C3q_Ol5g=W7?Goy01C67*p2Q}uU76K<7B;j z+$XMC>UuFUckVG2Dyt)shqTWB=66sXGFw6~9ZJQbS=L$lNO}d@SaF8?9H2!lt}gc< zXa{~sZ1_6i{u7ixcmJSi-kgxot(r_oVFUTu?zr$WT8{!uK|!#kTcpp^pgZJ>8WK?u zeaHPJ!(kSRZTl5pGgajA9%x*V)b{zR{kro5oChaK)9sB@qPyDazXjn`EkQ)s@xJQT z2Hm;2_4UnN@u%`x+YPGlDHsE%^BNuXh6G~a9Z^4}JyqqEZ5~j$)G8Urush|y;Cdc! zqe|TT?u+2*!J8!ul$>_VtaVPylZGPA@CkWJo-*98PEOM$Kf?LsoeN&q7YSNCpAR>E zPsE&`{L&{;7hrd13+tvepd!~~BQ8hF-I3mzQjm5ghIm=>R?THXc*x=uhtN!RaJKXV z$?=`d<=BtQRK#icCOawz4;qe-Dt{vPn2#&b-YqbJbJHMQqFGZDE9O6l@`q*^^SQkm z$#5}@R{$GZ@N-;V#nhHtfOu$gA@w9hgMjlc9^gZbZ^s#>|Y)u8p z_iFvrI}8a3V1XuwE`zU%i^~{cDF-dvAm8`^QNqBi@xyGjzn`o<)>{N;C;Hfn@sBE% zI_XdZ*87>1ofh$$V_P=8NsE+o5S4z_kG_^7IJ7uX#0{7wdObPzr=!Vy7?k{# zz0{$;n+z!RrBD{NOG

c>&zn`RJ0%2CY%LfEB+nR)X{F)4i_3`<>V6VT#hpS6!Z$ z^A@l=HwwG-PTrzadoKyTAJ_<6evyCw?!WlAs=pdD+i?mUN_*2SROVi ze9n3yc3F4PB{x&6h|A~dIg!jq`$gZ;Bjh@)S`y=--ymK6HZZ#ZD0g$O0rk3Por@_t z(Y|9nOc1|W@>TudbX}l7GP<7@l*iPYxBP$zck7@3oZkp#d#g*{O8Q#`3Qs<`b3kA* z@4Ujd-5$MS!P|CoE}huzzXdr;DU12Do0BKQrT_#stC=)ibAAzbZ9L3b&+Yi|u2R9} z(u;7zu8;bbfN@Y-s-dA_dEU$B;3V;_REu}+A{x*k29xB#Z8Na{7@2To}NP~Iu* zNzaJL`uXj8;_H=tB)N`>_hr&5Po8=Aw^#78q3>c=w&xfhJkP%uC&Z25`QY+bfTagF z-Tqk#!MP_4aYL^*hVg)akyRI3Myndj8f*8m|8j+*FL*HGI3Fo?c zn={Q<`61{k6K%cFuDcwddTqkrN?%GB01{!=jZ*Dp-mlkB-+;);#%$tJmfB;9!%fX$ z!SrLR%}(vp;}PLf7`Y4f3iRDBi&hE29tCHQ?~AYm4$<~f46Ump1(aJebp@?=8DmTLt7eTkWL$DT0P+*3y~`R8$Xct7uyokg)VCcb zALMY6^386v{VeB`-LYR9CjoUSJwcr357bg_)Sn8DPA6`ZIhul@F^$xd;+rH%g%SgV z(NY!%0*Esg@d;jV<3r6R%CH_P-78wP0xqNprS*J!5q|uOYc}6#&YkSc#7Cc4%FzBr zIf*>p4P@1>hH85rz7(DTrHv^BWPqUEE5dR7!o`>ckLD!mPr$a%cj(dm*(u^?9L3~X z1=A4}j^kN(n?X?-;)sB($VuS%RY@>6YBv@Vo+Ra0P8TYiMDy;ufWzhmRqOcz{N%=4 zfQLZJ-jrNU2f?u@c zqhUn2Ve)+zlbX2(iN|;(Y0tm1mQA1y%yDam{w#>ldazjzf!S>g`LdHTjFhXT&v%wf z)0duP@+G6*DU*F47%oBvYW=V+ENV&FDDn{9JV|5YI)g2R5H;pEx!twTj<8vq+nUQpkLx8f|^NNOyOL^w)rmHcW_{F z0z0tSOM%~A8su>EE{$s>sH@7{0aroKBs9n-r321A)h($ zMvOX(hv{vJVJd!4Z5)tVN?*hxALGr;dxE%p2JjlRte4TF z>Y&Yq!>o09_Rlsx`+{=(>3Z={_PRR(dfb01!&Q%s`*_nE)b95l_Dt9LlW`T5J09ui zq3=e^R+a~GTZ}{BEMEzk^srT{aPX*k?X&k{NVCM`>dV44_k|9x^Wd+$OWiuhpZ(rZ zvt*Y)ET{mXo@A&WaNTE4y)SbO^c^kiFK%1oN~1FnIh_?sh(|Aq8?_7YTVB;j?Jjn) zf^hRQqtbBai8<#tsAL~CW5Phr8LMlx9(-;(ugpM*H+lb z-rh;{kqaTUfTBm>eEf~(4@4g!aZ%jJB)H&r8H0jc{S`Z=J2t>RX9##$gfS@*B>E6~ z7umn9!nI=gJ&;rwbl0JGz$=3gI2(d4BZF^VEih};ZSO_PIyIBAywmd|jyNuc{Si59 z$xk}r1H1u&2z}6x&g-(-!I+5kUIpnof*v_siomGCD!>|-aRS!Ia%r?F*wxvBR}#q& zwAGsIG>|-RezH5crN6WQneM3ob<^xkSG{=uJ(*W&Y4n(-qamonn;oT>j}-?e)?FBA zO}e7>!${C-p;ddezDu`(&2jaK+0c(R^KatRF?6;JpMe*EsU0kSJ+*7zv#kpwB6mKm zeP(l#Ot!x|WTz$h>c^HR2Em zWRQ}K>7{aSI{e}vClgdfZ3oo!);{d{=Fr66c0S>TF5oL_ML^vIA0y!6p0^uw`L6T* z(bV8q`&tmSf;R%;cp@+1fxZYz&oimMp7yUcS@+?7>}ac867WPkd7P=a^ht2DASx>Q z&wSXss)HL4{8_FToq@R)#Os-P+0h@i6d+A63QmCQ^mbY& zi`)i^gZ5LL_vwgM2VN=GWk8(kGK3t?u&rxmMmYl?)|e9!hFL=9S0wd zXV$51cYPIyWxinhaM$HH*e6qB2@vqq<0Y$dzmck@2+vdY7p zEP1WsD+knq{r#Wl-Uk!ZT_z8jULGI@MMpP5r7=nta8j)#H!&W};RdFe%EX)gcIQ-J zmUnul3Vy3Ra}urO4hundEHsyXttz?!Hne=bkD}p4e%+bk)4A`VAo-5cyry9#SMUgSIY z)xSC2ggt$KgYBNt8#%DiZy}(`*jEB~@57C=OG6$O9m@9%Fc^V;n2=m>Kl zeB0a*+dMcZa%z5yPx7j{7GE+O`>s}A)6qWllQda!Kub@O{BUY22Ur#r4D|GgRrZ*- zZGX^s&cYG_cC4kLIr_Icf4D1QTKDt@`;tjurGkxqDiG!(A@^z|?&9!80?;I*o|Cbr zr>17NN)vUVzIMoe^VsE(#w{qbF^nzCxV329;q(xHnak*{s4t?B*-e|KDCs&gI)-iGvKiG^X0k2r- zpfPsaha6(r+)(ZRTZ^bd7XXPx4+MvEOL$n&Y{nCMmTkKDJ+oG}4RpV7wfJ@1YU5|F zP>ofu2087WY?on7PlU%P1@ftC$6?A7Cf?`*v%t^{6;maNKw=!POQ$~5b?<2~Em@`iTvevcA*<4aXI!R%W86^rrnljNRF2Tc12n#pBif)U>^!v4~$b0^!ON@qE} z%d#Vu%cFH2B9hTG52bFL^4|3i)~HHpQ+uB3DvFHo_rE;f8WY4{f^Hah5tdLW(7xlA zbTA(MIGMz8LjwkZe5Qlfir`-VMrQT^Pv;`!x`IM2vuB#*M)@-qn4^2=v&m?uowX=A z?C3VSqYfTD!}U?8g?5X5;oa3di!4cBaKlGlN2O6m=mX25o9FwcNoVST136mZkvj$> zYY>=@Rp6isq{MQ@r!_tz^UUC&{tblaog0=XbPIju1r|0Q)cwLQ{%}9Q;SGpnK`W7! zyJ=^?yMT?a2zA@HId)X$$jKgC06r|eTgsQoNi`A4NcQAQ`|DQHy1IO61GK>==bjU5 z-|l){GHLvRr68v*LIzxn&UJyiSmBj7+Ywtjb=A8Qxwg@QaqMtDyVd-&?o|0y_GIY{ z=aSrIbnQ%Y1Y2S$dY(y*b2)P1#tj=;g9)=p4nvhL8nIQ^noE1MnG3y3J&yL%PQ&@e zd3NV{E#wqQAMZ;&8F-Ma*VrVM~teAi^djY_dfm<^=)|zqZwh>Z%%5WuE-fKF!AAW$%8h64|?Z4f_Pm| z9U?5Vy#NE;bU!@LETXP&-jUOe&}KCWH0SvdHJa1(iGH9rSg5xcpQONYhEBgDOqOCG z%P!s!7YkBGD@;_&*RGE9%i9CCv8o87vhn1r$0t$2gB3MKT~0jcq(AnCprR~X+Q+$n zLTzOS+_6$*erlJkD?+)(%Wss*dNChzsz^}D&8EUD86%jl&>+w(CD7vA`Uo5oaEDw=s<|AF_TGA20>vomT6GTuilXJ(o zJ^YsomX~MKm84>M3yyb})1^Wgmb>fxk7shkj+Yj+Z1$Gn$+FQZBV1YG>8R=9ua`X| zj)wU=VJ8RF&vW&fdcVHmh?Kf#9Ag^s#_fC#!Iy(?>CC-gO8QW7kTXk(bJizrQRunQ z>24m9;{e?FP6FTE>G6?`e(ZL>!Ao|_Xuwp24gwpsS%pr*f%0n3&FlPz>R!MWq&q)rF@ZmxG<(W>Df%5J~5;OXI;xRHnk#HKwDzmO^Z=B>TsQ@ zm6&~Y%-XCzsv(?mF;5cS!%YXz z5Au!7GaQR?(QXU!^q;r-M>Yl%8>rSYPF@yV>Cqoll3!^V(i$n`$*WY}GeL(Y`7z^d zOI9}Qt&~ly7XQ3>V!Aj9)1E(@ZpnFkx};Fp){#@@dhVKiQiflQA&^rov_vB+Pj}0$ z^g7lB-R4`#3ru?2ePm>4VMN?l`S2Xz?$CFLl9F4$XxIL*f9}C}5M11quRF;ri3aAK z!(*w=dhkaVu^`T}U#zxPZ}${sKg7|A)Rp)mT zLewIbQ$)wfgp1*3$G5cdHCV2B_ltzIkLpY0dUN)N`x(<=Y>0B#0g5Gj<;apz2&PGM? zDQKQLFmIv#;imeRdfA9Hiv?FhUl&f(6q5neQrxtP7nCmf)~#D<*6r~aPhhii%B~%D zF|HRJA!9odq>wEktEYXY-fy{o*e+!bXu1pu(CxO@KHFFcEE+GAooG9H31>j$o@h|5 zr;E9vku|h@g=YEqX`M5z=X)yya8yh@vwE?lSjgs+JG7JcG3w+w&;EPr^zijk_kA23 z9OILOyqDj$w2*^jUlOsxZ#bX%$Y+O(-E|ip#lI(S=ew;Zn?WF!i%Qqh3}uK=1-AM* zIHP9Pzjn3W*?@)EMi(swCue+B*O}q%gMT+mXI+?xWmg)AsZ`eek!<6RyT5e1XPtZP z;G|lpH}QbBP%F{r>SNvE-sm8|>>6Wwyq%$iynJv5A_u>9sSLl%L}vlcuczl;9YSlU z)3>DlrF01QXH9`pp*urXdn29`eJ39z)=J3Yom9%5 z_P(8vX7q>Pf4{+?{JiD-yrocVKhbt%|7DS@04${OwUKDmWo!tn%)RygFP?FKo`udY ztKj6dsbo#lz^1QYKaBMx-BQ4>wN2c*4N)yMjy_kvX^U4|&?sJzF|rKJp7~BKXTMf| zX#1j)if!E~FG#HjskGy?kv9e!C1k)`!bi;{KQC}2$G=KYxyYn6`93ewjeTXIz9=y@anfj$wsp4cYkmTegK^e5FqP;Hga3fn{;++ z+qJ4$l%>cK+SznaIyNYuvGxhIa_JmC-*cO`EOpy(IcOQR|6#MF$KZKSI;^$O7p;(G zKxycLCWhb>*05n~5(D+SZ^Z2NTk6+?{qyI~A9ia|tt&t*T^zF>T?3AUT$S^>z?<<*?jv6!PG}GRs!f&4t7%U^|HJW0Yg`3_BADegK6pgLlsXbt$1MnLS9Aw zOsV|}Drk-Rd5M+&*p&YopIw@m2&W>X*M-

<pXOe51nzcC4F~QgEcxzS&T|<=8Twi;?gJk780N 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 z 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ν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 literal 0 HcmV?d00001 diff --git a/examples/databricks/serverless/assets/capture-cross-databricks-aws-account-id.png b/examples/databricks/serverless/assets/capture-cross-databricks-aws-account-id.png new file mode 100644 index 0000000000000000000000000000000000000000..6fdb3c46804bf2ef839656e855f1da7b0b7a2fda GIT binary patch literal 383112 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 |k2oKS{)-m6a`RNu6Py_vR3Kkg#X+n0S3aezDwn z=E*{*)uyQlRLa$0HII$kaagmAZuht@Tqh3dPeq%WY|i~XuKZ_oKNQd+A1>IFaj0o;fxIjzv>L-}u-MQ! z-ItOF1Yy_ET0G|8y65ktH~_ulT#+;z>cs{6ET=K^)}*1BHMPKCxJASG#AbiV$7gr@ zjH;+8aX|2VgwST;sOAg+iM=uTTy&x1z9;_&+E5a?ETbtL>enhcA|;wCx>0Y3(W!B{o-x7U9FzDlIg`5*)(5|HF+1fV#c1|}vJ&bn=5O(f3V zo0|po+oPL!9H-XL@W(J9=XVQ`ELEAt}DvfVd zL0nE>70;BZs4lvktQaxz2dSDf`)GCKW~mDfc62|3-khwn$0<}uu+~T5k0rxy$-RHl ztR6Fy<{l8GJY*|ZEp54dx`$&=$YB?BI{e#v1o^VQ9=9j^bm^yvn>c{nX8f&`gYa7H z182*R>zT>83Ys`axIJ)Y4|?v$4|lUxR&e83BRsltH$_fs{PE@LwS5l(%{AIuE91Hx z^fkQ)olB#!q-9tD6vu=3CQ-QH;mT>=pQ%h^&|m4-_jQ#lnU+++@7HU}QwPiwiR|_K!0qf< zs(`Q%We8ILLcD;*W;Xo>mqYB3eceG(Dtwg_S}=v=^PJsx0WDB|iTj7r)(txd|DXuh z!&;gw6w+y{CVNddF3|~CwUBT@hhAn@42)-vcL-nJyd6J_|2mHg4E|jo%o2K~P{U%- zE2bgha7l?q;uhH(Nt9XXK=5ocVzXK00MkN{nvm?}rE)dI*<3MbOw|a@hkJIvPp@p^?=FX#h~W69kI+XG5Pz4T=GuS@)J)|*a!q}7ku z`1BRDm*qvGQMgmuDrqVey%BPR+M1TI>DqZl4$ts=ImAJ6tk0{8=XwS+2g=hna^5gp zR!#Ri-SqH>*mx|!q>OAGEJOt$Tt|GcIs!jfDM;he+Zmi9XR)|B{kmU#bf{+|`=l^5 zd%T0MVCK(F_xUr$vXM`qGh0M7(zhcdb8>k~-7#71HcaCeNX6qbo8IAJNh|lOy_jAB z)v?r|w@Fo6@{I!j`HG5IC+PZmqa%jy!21*3=%2|(iz}Vpx)uFJxuZ%0i^5nCpLnQrw^J}&$z-I`8ULI*yVQlmdGs4>Ox@wqaf5uW)W(xd0g$9UZl$0&WB zwaIPj7Bpol)oEHy4O=@l!yVvTAZ^KT%nJ&t_3iTh?&cZPef_f)Qbn*%=5tJMUZ8)p zMm->Wf7MxNFepm?ZnUbI0L*$6_P9NryFQ$6MYJObZm^w=Y1#NeQ3(2USrM-<97dsh z{{l=%!(`|cP<#SL8%nI77tv2Fm_BN%tEU`WXD}Bn;AO%6XkcSIaGsb5G}-kYNiKzb z2@Y-|f1%U)`SM;*+$xz-GbXx7UcWR0=T`C?)HtW3q`@~izrUB{`%2;iM{wGeG`x@+ zia}4s412c2?YefAQri<#L*ecV^sNW`K3ZHwRMU_;zp5c*7^_HUFh&^5WK`6=}4&B;s!-{JxBjKP1PdNahlw zZqFPrC6vv2CBGG)DQIJ3;{y<8&M5cG;;0^;mvC@mc9ieXH`NKiozF)Vbhwi{zp`3%>FS3@4jS*6r819X2%K&}rWe5_QaFvRIc7_?Rct zY;F%H0b|R&z+A>BNI45aw?&=Rn*!m>UHP36#&6+wn7uuA27BIFpTx&|Z?}La1k5S^ z|JZxWsJOOmYZM4U0|X1f-5nC#6I_EkBsf6}x59$Ey99T4cXti$65L(h%D!ixefHV= zd-t^O-hc14RzGM}MODo?#+YkJ?|tP-OLlf8*_lpfoT5|ib0?^+&)qt`g1|al1+i*P z=ZGNf721^?{HWHb4Sq@DGVF+SwHolg@$zAwZa936bays_UoJZkbEssc_89`{`P3-N zF4?VKZ}zCl{t;ODZ1;dmmmfhBk_@!;$5+6>HQQuSfS!)n3=`fmw|Pqz+qe z10-)@|Xl6Z;TZj;&*TovSp?w(gs!JmIC!H@xw973zowKRuRv2~a zrMiPK<96CTX(h_5tCb2^tb7!bQjz&cEzrWyjYOGMlJW4TxAS(Xs!NI;U9b%Ywge)3 z!w3rtn-QGzFB?&PaXEl4aUffDMm8OB&w``lTQA9*#9>VHJqbQ`=!^sfA>4m0XeM&o z_?Qv33g6IgbsG&Q#+U-Rs77tVsB<2i+tl`lUp%FQg+h(ceW7X^rRkD~Eh95w7ac4O z{=)_)=AZ-+ibj#x5E=fq7dK5TyXz-hOziw6;evdl(bNyTDyeTF|9rUqRzaylvlt9~ ze7w704)pG)R!QDQZ` zfW{8C1Q!3KiINRi3QiriGQ87WSSE(SshiyeP}=Q3&s1SyrD%3KsPiDHS(3o z4cC*X(R(J1@VO?sC7&O!rvdQ%6zO!amO?QtCIRf0N=7pwtzRL2*8*^(<Lx`CfXgvLM zr`~>`-S1^!mXPOAfc41MV9fVv+BcJ4!jdK(Stb}b&aBMHQDpaIKXY zK8IeLZO*hnJAPF$@v77V%Gkf?i%;E)Q8Le*I&6j$HEwpPt%|!RH zV6$%C@Mnq1gcc5gEYVql&3yQe{HTtR7CtK#a7HPU>O&*j(pW+ayLTsi5*S!I!A}}c zS1?pc04Do=G-EeM+w=V8*S&^1#VbM{f%jjhqP1=j8+|Wv{folx7h-qFc5eiElVeDATAD6)im=b(n( z;EDiGafvznGL8I+s9f2uYQwm}?!Y&hq@vPB@_lKH{LRjnfgKh;{oqgI<9k;!GBQ9G z228)FesyHKX==4v3ewDpbe3Hg=_LEe&joRs&LVD_BhFV=(6c3Ca)7zs7q+`=S%Naf zW_7z$kI%J3+8wj)FUq1p{T(g5i@Y%m6gxR30)IY5#p0k!by{;wDsv`1S{|qOchUnY z3Q068c=x=W- zOo+0vn~sSQ-2XV$yO7XihXpGZYYH!Iu66o#MUj))bK2g#KBZ;o26Pqft`8|I23m6V z*Ms^CXG;ed9|`!JsmucdhbZPf@CcYH?e1&p4shK5T5wSdd9=no8eFI{|J;_C$8 zL?{>C^&ZqqCvt_f?9B+{YZlrz*xs@LnW2JOmkS*fK)&o>UM7wufN!Otp|La6ly-!l z);IK6z!mk-D?a zGGfI-5j(piATQZXjekWUd$eeZtHR+3(Om%nt9^0Pz#c;QSO~Y?M@;!@eTeR%LXpK- z8IQ*{9)KlL*Cw4UIIgdFDw$44@ZMbz3OwI1#sDOa@N&I#m|HyM`|F@y$SZs%)k;yf z_qA_X-(Ah7U50!Kc$Rs(ksNxSbtHdY+UPImtowF73Q76!%nt?=Xs9tfxvMUhCLf#u zFjjvZzAc)*^I&uCqCfOo=)$QWiJCU*&#?fK7p3u45%op?^ZXb<5sQ2dbT?kKRQOnR zh;$T5BXM)cy-v6prN=u90MkAVZZm(nXSc{&Hlr-p-sCPZV=!dhJ-1_w0I?X#`BmVC zej#ADMk`it7BPuD4p`E0D6=iIS{)PIn{TGQM0)`mh-H4&7H~M>l$1Z2Bj1gH836Df zgDR3$1&M}}*w9gLd<=+s^A&P8i86rRLLV+KL9pULZ(PyGZ%y(Hf$9E*vn4b^B&%Do zTpZh(HH7_CZbzMJJWU91FxbI%{@y$mzDrqY-QJiCpEF7@T5j)hc4oU?_&V086PRTV zi4|Uq8?LWDNyx#LvZr1u&-t$0^0;>2+T^dQXhS>kWD;42u(7cze$=!vLB;4`_e$vc zIvG3sr7V)TY$N}zV>hD>xz2Kv>A5ho2jZWD(!)b}wI>9ZgnQre3xqHVCoWFu#t^=% zd&Xj>@x2YNysI_8{e!Aq4fn=n&mi90QlwCo85`ZsgL<1G@aJl7B9BD20H@fFYh`lD zXhpV6e-~6sB#5;U#5g)M)^n%6{WXJBI1im3pH{OZUWb})#=($#%1f3N#5YuO0xe&- zuU3MdVy`R9FWb5PS{g{8|EMtMj-lGPo|yzDD1|qvw)-0Q-@OeWQ#mpe{6b^7$vP5? z*MU_rwpAW80u#4Gz9+Fmx#!0QkbEpK70fd~mN$96HJZvXKwQdkAJ!4L?t-SJ+J4DF z`t3PTX{y1%rrNuH=+&=zzEh>qIFJJ+L3?rpol@95$5T^QesUn8`86_O7`RJr-5w7a zlZ&!{xBK$yU_mzK>&*90{2>_FX@%%U^2{n77E2lLNj|{9YEb!j7de`RxInVcUF=#9 zeH&@A0^nYzCxSM2=hxU>?JAm8?SxoDLV19kz`9x;F(T~sC#aH}CP%N`JG=ee9;DN* zvF4UTT8hXSS*R&(se;DU(K(P8>2eq#)&Vs4t_}e#`C<_*&@;(FS*SwO`|i3~e|m2F zhoZx470-`|5NqggTyDO5Y{nw3A&)*d?~5p(#wX-k9#l$lRz8XVQ~$e!iw)%WN?GIH5(s8iVW|_Z7$syUi3gPOHig`%^9%XK@?jv^6$c5xm9ip308}b!WGZ+W ze}%Wm_ z2bSX0gJR3KLOsT`i*X}zXJy0D3EMCp4vW14;5jpyzW5^4g+%l3vqU{eWHCZMP+fde zMmCPC#iCyv=SgxU8bC^v8IdzA39F%};R z8Z~AOOXuaEUO_1sJqR+$j3_oc+f`Ig%TAc=#xPa8e1QtnYIK;aTG=5RLY~~!rU)Ej z1NirmY@HwDLhg4?k5^G(%%Z~;2`tbP%CqJ|HA3yU;W38<^Buo8xNBk>!gJ?z$OA-S??Xhxn5 z&W8#^L1uEp7K4&2+nV5^hvY^G|J=euQ4UN zgSz!i`G~yu9ACxOcVG*cPJg8uUFyw+UTVS?aS?tUfL6xxc>*J9*fDwB=#aaAXi+8< z`Ag&?Qxu=^Z@KwzJ^EN^wD%C-P@DmRrRmBR?cT(xBn~qjMabvAh8=^FFt*kwaufm!dFEY!`E{^Kj=Z65&65PQLx%(!V{E z@KvFPxpqWT!|XA}?&oPrrSu6cpN}_>V_8V#?T5KoZ=pKg@2s8=#2IV+#)}{IPnq;v zt-oyWlv<%WQc~Ent`%YjGCc64uq(3pDNJYGt$xW>B)V zoPLQ>wF)n-a_|InIhgxAILY z=yamHYRaA3I-Cz>b=8GyBRx2^*`>P%cg`IcN>+(MFP&#W5gZ+@BUTo%XlyE3Ga67Q zksMd8q(7A(C8@xq@Coa<>48C>wH6Pt$gUPPPj?DeG^@%2cXM;|0WLk782D~!zjD>| zupbn-j)TNye-+mX--X&4Nz1LsmMrW&rB{oTfq9uf2(NZZttM342q;$U$4=gNNS>yg zrmvCe8T@Fm#^>bbE_6$LXDO&s(k;ccb`+a7Q=*<I_jm7bO5d=~SmY9>Go^JiArpFTz8+ZvJub%>TImP1|cElW%BsA)Qouy=Ok1#$GS zo)*EA+k5u)iQVOlI$ZPyo0L0XeARewX@~|fk@e}tl0ASu8GCtsBJqUR;J%bZzz;6k z5Avylw_@r8V9J}c78+I}`#*XIPVPdIYP;+lC>~|f;3>e}+0cR3Y7c?3Yeqlep8Uh! z-uc$PvRV6r9_vMUuD8v13{a`P3uN{M#$+gIQ5 zp4-}Akc^T02VyXg7;0OgS3)#}o4j|*nQA0KOM}J6j?-nv?MeUaEv!D0p>Ju#Slfzi zuW-n=o=Z5@P*d^snt{2npTS(A$S$?o4k+F?6IYb7(l-Ugj{_iiYd7Cpd-&J9HDVtx zQP^v0?ZWZT!h7*2WfBj80W9N%hL9t~Zl$kJX?C6$LUWXA)wdMli!mPqNKat-t2*2agA>qjUAYeZmzYzGP@bSoE zScFFyDfc417_^xlh&eFX26nTHiys?hx8;`2M9l5h#~K-_o-W*tvXz6K(k>IiVUKLAxh*ArWz@euTfD)E3p6MH{q`$RPqZfDMX7`Ol zb!XSJxgsPXxm&eNvmP}5=uQbgOiQr~@O5)(`mp^pz&Fg)t!ck9dP)qfW_zu`x7RtT zRR7A+G?6FjhZ0adz6lU0P%nhEyE#+X8_y;+sbmKzE%7(gwGOfo4D>=5yyBEHF#YDC z1l+`|0c10j;lv+cP$Le70UR;FUWr^^Qb|S3jZr{A!O_`kjTCue5qU)tCYPB1T@0yj z>nx_Q$^eif0f;kM0pAVn4q_xGUq#~4i8D9#z3C`O zY#)}zOa13{jRX7a!{(uu+|Y$id?3bItS6xlqSL3DA~kvo=Ytz@9439}moN!A#`ii4 z%AiIM=XJ`pC(TI)v4^NX!0 zUNhi9S2+GeJFRRbsn&uT!TK}OU!VYMwa9PfYG3b^OS{SOvo*eQ7Lun&GoNoL@A;p#+6Sn)dx)Qiy3E+xh`rD>T=Y zp9X%NB2Pm61|w1cyOrIgzwx8}93ZX2+=v|VtfhNagAr~DsDxIvUEhBsIqe$j(zxz}2uO=5zf_>CvRLh7@#JQkP+Ef0eO9fKXh>D6L-5N~`1E841qOhFW(eHK=o@+x;1Q7BuS4nN0}v|GXE_UbZ5ki#@H&nmsQE+A_6p#FT`&?zc0{?QIrvg4(!gTp{Hb(C{g zP@E7|^~j79@uruU54M;_4e_q{qrjguZGN#Yx}Zw6n@J=~yLd3aGW&Nf3~C_n{o+62 z^Es0-qxiY?lIZ?Cm(4R$^Gy0Al#&(IN4j`5RtLNZ$PNtk_X+_ncab6+!nA4S`=E*A4NTxxvD? z(%ojdrNp&J;%jjVI8X zjnNAKa^oKIgBkj}hEWF$&}qhL0Y+o8I)4}jVj#MtqUX0KC%3yz)Mn=huIIGays;mg zzqvt{nCH;3L8cie9p&U$sx1tb$}vWaFVWYTBE@_!LVzJ20}$4Pfbx36KxQn}RcP7? zrc(N_)GIAEae%VvZ&%1!pmDX^5aL=#i#&Qi+&-!iog0@%-!Luq2O&Px{zMs-aj zIB`ORI*Gruq#&T>8z5x0|1V@Tfypcxz~@d4g$BfWGaA)X#VgGcKn-kvuN1h6v1)`l ze?aKU&@=ij^8CTd>~DU`-)w>!k&SbUqb4_Wr2J}orl>97CKRCTtBkV$b4?r&zy)k4 z2!PN2Wdr{CClM#KL@br~Ly?fijT#L9q`+UZ-rsBo%EWM;nRN}%l|uB+J7Pd<%0wiyUd*drR(Zsh7t7NF60ySzf12?z66Hx z0q`kA;bs32CTR4WaSPp)Q>++xPP-Q(IdQ7 zP8a|Viwp@t;^gL3cycYF@FXniXeWe4CPY({I_*}yyQgl){CBCce~{mRz!Ss$rM-)r zMp^>(3vS_z`b%>9Hp@CCU)_V%^Oqzupdgcf$7OZ)Pha>WT(j_j{7Z}ryiUgAo|O`Y zq4Ix@D|RQ7`9BqUH78D5w! zST4ty!sY21{`iBrUP!{9vam42m$N7Yj6FA9o@?2YhONaJ`XR+{P&Vxy><#U&*;y?O zm*1fgd7??C6QK*NOB|@2b&IEeLsv~pWzg$+qN&^-Vp!AZn5Be7Bl^pO3JDq@S(QL> zA>#batABm}uV*~hMTuH&n$cGLp|9wm+#gvb-!N*E49h1(94s)_X02Uh>65i+TJI%Rc!1HpeBk$(y6KLXcNUep6vvsUz(_kZ)n|5*@9-~z5gZO%M!O#J`yt^e^$RCdto z3st6CdwhX}AOAOeQ2;7C0Kx%+TDrX7@_*+S#y}5DnN+DL=RdH3G5!Z0`7izzjRv&{ znHBw!jNkh|I{E$^%cWnS{c;)H+6R{Z9hVXMqW>yvzVamzrz+&FOkaP%TG@%14@Y*87$q#_C?T_Z%>f^)^2&S7ONr4K1VlGgSun zx|6O|x9i;;gU;Y53Y8=AH1oZp!-CGwA`QI`c-BU|MY}v3rUmf7;$4!6YUT@5h4S3f zt0k~7*m*bcxYrLYmND0=WVjK-%kjNI!)wM&5I8?m$`&2o2I*$&$B>>9bH0woUas#4 zxv69K;ouRAUXU@^z8XNkTzg*mJ>G*{uQP}J6DQhS;&E9g5Ofe_P`C2nK+A{+42 z%gyMr%W$G*c}~97lskY?V|lYe<=7sC3&Po1X1-5tw7))gXyvsD8q&D*dw3Wvte`tA z^=hWl5*7Biyvt)6M}?0@fEqf^Cc(Kyy?w3A%}OZHBn?GYCi+@e103eRjdmUZpisko zMGt7F74{@GfdRjc%q3KbJ2IEf1*%VI&I?}|Vq167d#meI3&h@!7uq>@en{z_wxZdEVX%$ z&}P|B2u*p_sDmaOw@}dg{VAWCe_UmrZ-ZE2fAeBU2tQ zr!g_5=Ud`qSZ|S3W5r1du&w|h8ZXQj7g0?=jH9Ex<)$V~LrWPYwXpj)e!#yhm=6y{ z@<`1cl6f+AWc&1S1vAA%gSEE*WmM}_zkV{b{I}iAS>A6DgZ{i^8HhIt)3iB# z0rbb?0fd-5w?&{Igu$QBxS3EA0w2#}G2~r-e_M(pFrLV3QKa=z&=`lta zc%TKJCZ(MyRRJZ`m^#olYhDt5p6>cC<8qF zR8?Q+C1T7hllS<^78Fx*5J;UeH?osG#;tZh;hZa!MqdX)1=X;+)E+(MZRe$ zsfjN)llNwCV3W*5o~a*8Rpi0jLlktFSHmD3KSjbnMWn;3Rm8^uza-;DJg^#?z=S=&QfAOoB2&}%sF!E zCuN7g0?qF^L#k)eClNf1B!Iz!;KG;1)1gsy!Hj|t-756&AZu6=LqZ9}J)k8}A#1iI zKk3JM$(n!;Amz&qr}1dLGUJz*a4$IaN^g+5%< zXi-k%^l0F{HS|7QmkRS=mRr2JMlIfE*i_vZTi3*Qj^c0X=SdYk-$LT+aclm@H8-r2 z*Q!F!kq(b)9H%NXif46l@gouQ$e2QauTKaJ*PxiLx-}Pu#VDlt2BE$Rf`^-bkB+H& zFtW3dGXF)QDr&lGFs8V#f*jQSK9Tm|`kfxAqu)%&*b$wR=<9*hOFu@mi_hWr%hkt_ z@(UJ@EPW+(RYd3%+vYZ;;tyqcP`&KL|~w>|4T%oNx5P z-1BuVySF!2RyO)ZI)(B{(AMrQ9J;n4Yw6lmqH^=Yxf?$h)my-Vh&@3i;^}1QfCc-@ zdmX}JAr=zGBQv;x>U%=U!~AvvuaW$CArfb1X1gVqmI|G#VP8%(Vm23HxMZ1qNwBRs zS02s;qe)lF9Rh9bC`BH!K{uYOSiTAU=~vk*@D{LRhsQ}IG!*pu#vp8o{o&6e*Q=68 zdA^W8C8QFJp7F8};$tZsEUZe_d0ax*J1JCM9Qejr0|HvF7o&p{IK0erp4P||VnW}R zVVo7l*@qIok_$w<8(ou)33F~u=1ZawfqrLE@s0rXQ^Ek@i|!`JL9``kb*KFTh&Ps= z_up?Oy1`8LL+eT@#Ol-h>(c=0YmG#~($W6&^#*nr(WaDF$528p)WJK30ps=BCTNE~ zg~Wc%WCKG(96d(5E(8+MF#osr3bd=p-Q)~R?PM~fSiK;t59q8=(P7LV`aKZDh_uh` zYk1`9J-3ogf$Pr>A7b?D z@ctEoI=@0txJs0ZiWGkCOhdRxCvC19>LkoL%?G_8 z=tWV?t0S;jYHv(CnSP=wnr<^+>^tl?@EDfBRkE8Kd}Ciu3>=_l94r`sH6x_~YewR` zXCECZxhG}23GKFem)8KdC_ySVD#d}=#X6CdU7fIf`8~4$M(AqUZStU?(ahx-T;oQS z>_~?!_Tg92#Equg_*s;qiWo9YAaCfZ)M2atmpLC~_=5gyPUc_cJQaEJ^Eb(C4|(4^ zX0upn{|%YreQ}0%QnPlnbP+|r(ekmm_3lrKY44qp)>khP_e0!~V}gA)c%H3%J?yP^ zc}`Syp}>p!Hr;JHRQ~ibF-<|-VU4xwuStj>_|_M*Uo^pvcvH0A3)Z@U!CDMc!IXQ1R*_VLM z%8QBbgU6}g$}yMdJ_nHDkBb!GyLgzTHmlCKJ{9U4n9Y`jKQ+l6O1-E)c`t@IuT}Sz zcLM0ZY<_6llH>@I6S-mGi)QED`972bJN1%|RDDJtI|Ahp&1ON|sHu$70d-gg#wBg- z0G+m1a-p+OVxyT>;&Kyuu0>1#X-Jv{eBnITAdU`01ARlt^~D2r0Agn)8>d=+gSXoS z%3V(w!mL?y|C3=epRztSGCT(VFMnW^xe+O+T+OxNr559^1TDOg-#T$Kxa`%_U)Zx# z=Ww=5I^dGo4L%(DA&T>X3=++s7qZm!*k`cD_28DJ3kuakX4bZO40jcp!ggr6y^}5_ zP#`R|(dv38_cd`c{t_t5 zW2kX9>oDj0Nk>-7NhJr^xddo(@Mw~-WZre_)lfiqM{2sPAhNfJ1S*H-q^ii)EnIaGFcLQbLOwS7qj>q5k7`b%p5? zONcu@T@isMR~f$0yMm?^fr>-#YrQknY_f2=kf4Jfa#sxfu<=}2H3;ZOq@jvysV1}+ zJ5W#vPL}<~m+2Nw2icUSmRMzNNWe+oC(9RGIHyQc%_G6am_V$yQ1e5tI8!*2q{NjR zpJ-f^P3lpTWrksD7{|7cD5LMuL{mLls3ozQUH6M@M3^;=92z=$$Q%F>Hm|mA^lz8- zLBJ&A<6G|d_=9|0cZ*$?U>BJn)njb*1T8Fz(Yo)rz-@F2-y__aD2n!-RBVq!G9xyv zLUy1GbpK+5^voXF>nzErHRmc4ReF}@$L|*^Dv6Ws4UA$`JUo8C4kCW2+ZfbX1JbGQ z^ovCt)G9`d{flMtHJ0jwEF@Sz0PSn}aTO7k8jBeEI~BB7_Lg34mzx%1GKH$$n@9(J z-)vD;7$h4mN+|IgrXqvs6Dn+%4FhDUNbPXrqTbw-4}4E4=+{7Dj8T%TNpNu&r9whp zbCf6i>R=cL_r01|5-J1jGE}%=HZCMi!hF7O=H>bOQp>*ErJ~uL&30NeDj4Xq!Q(B{ znQ(-Vq`bF&a=q@4x#nEFN|~ZRexf{qG#AY22e(I~=&Gc7P)r;5=TEsS4}C_1vZ=+7 zaR!f-n5Q{TW)6~Ar3A^J31Y()cYVZ$lAbUo3% z$jnz+*};)*spxRXEX3UyTx9C z_x1gjoIRP)J*#h7@62f`4M!t%+;J(tDkuaUBc2b7=~ALmA#s&V%uxIY7#~gtvbcW) zC6Or<_h%^ouc7v9H_TC*4h{#aCKoDeNjp6B9*=tp zW;qT&H_KhWiO2GC*h{%bSrDdt`*sm@+^pZ;AzVT1$|Up6;YXpc&73UkF`Z_WSdL5* zgGSIAM3wGh-86@$J~`!dOy<08tfAd?g!6kG$rMv0@)k3pZ;ZltM*Vw8&;0{ci4N3}hAwc{lb$$t@ zjGHY~$gNQnm!JWIdV?wsYOiR#!O6-NE*@F3N$VLLiaC4Pu>qJ#>~TFP{0y`(D3Md8 ztrK*iSJ5giiwT#`uh=-w{5!M1bO+A#c+ssiIoVvXp9BLZ8;hswnaiMxcHB*YwiY)C z!fC-GfmI`R$vKk?ffr7Qr_sM}!3M*DR;7ea8izg7-EcV8e8Cp#bKAjCjmj!BGv`vR z9j()GF*|(`GygM*il&X0R7VI#U+NFA;2xq0nb0K~nb3RZ7t?TxpV1-<#ZyW|CC~c( zehOhN7+gMsDgRl%+q@kgXn=gG2rZaq&I1lpl^glQ|L#tE`gbB3IpBa$lPcuhO9VzBdt-~qZ zz%=YA8e3?wePA2LCdH*_DP^%ax0t@}QBPA~S=b;k*0^fj{GyiU=57hx9QxRjrsTGF z-k-{2+R;Q|v{_PGc7#tKwc*OPc8u3?y8rAH9<SWWwYdbZ_d1a5E~$4V)cq;WdHm(hpq+|N_E*xMZQngOOU|jeOxPqD z8ZW-6HJH^moz5(PZ}F^@_hiGk)?afz#giJ06Oz(M zQA3U2CVEyt<$AX<)aI$V#??5+`Vv;!Gf_&3PKXo!8E&Shel0$1&ZV^3HvNSAw(iWr z{eI~hv_W5cxOz1-DH}7$*sNG~1_9H}5fu?ZTsT`4!Ps(_#&iA!x^WiTXEY*GMQ|sUP@y=XXGp$ z^|4Q#9Sxb)CUtYZen;6C)|+Yz(jIY`Ykt_&%Pakesgg+f4rTr=K_7caU{P>!typk)-mIMm@&tF_44#)?srtkkpL*$d2cJzzjOpa*&v&Q95Y$;$wch zw(u!)tK^;lPCYLEJe_B7KimDrBv{j?Q`(7>8uj|hvN4Uv^||?~q!-_&3J-i?O}^gj zFe|yOA|f#Jp(lxGqRH0`C)dDa$tEqbnD#lw;8>e{%kcD4y)i;jUO zzD;pUVb7+a$#s7^(l~E)ySM*!R-I`sp&s=HKlN}OGR41*qB)mPfU`NAS4`k=s#tUy zb#s#868Is@^N?O;S{)WcSfcmZJlHk`uf_JKeEq@R*COwC$EEZ24y4ojN$ zL6m6`*&kpA5sITS@rprh?ehCYB>=z79!=$YMziMOlZx0G`J=&kkvrMpLa9NgEWatm z3dPoy1^wxCL4VI_tA@H~5fkV4Q;jiaUV?9Tw$~O~kN7jXJ41mnv<4^Pvs;fSe74Fw z+k!-@t-eJERtKltukui?Ly;f9f6zWHM%i~PqPJbuILZ2f-bdRSH}3q7!u`Rex47a7 zWob^?z~iwJUw~-;G>-nbdEe~5AVoF?XUWAlX&kzai%uQvz+~CFMZvjNr54xH+Sf0YgezGt_?Kpi%U!tCuO& zuDFa}TOYJ)N@XT5LOgYZEsbE>U0K$7O_qxi)E+rMXIvb*JDt=VOoA-2nGeh>HCn;m z{fBtSLRjqD4k1%TpE^sloeq%_*xjFyM~)gc*nZm2Bp5!=Vd)GA6i>EcD5jaDf^Oks zS=VG(sz$1vFHHvPhCFsUW@osz-WT~$uzBh6q3zpK%njfA`lo~E|b=}UT6`B$j=du7+Yej5|jdx5e~ z8{tYp)`1vOXs8o+#1pD;nmv6b%T{XLol#8aUTBlG$X+1S=964D^Waj}k<7qo70~ zwGPX*hD*SSPV3Frt4}>qH(^S>bDL|wU;}qR*Q?suujQyu7k~ysW|Q8Zb+@@3qd0t- zCFREh|rmr0^O*?CIqge{#;OLFpfc9fz}yBqJK>NyL|+P zMESqBBa>InTFu&g4fW&03N*C|f4ns=n&oLoQ!BzhFPJ)JRhIi1vX%w`lQ#qYPv9I*1tW{VX>na0MY zA?hvKlt8CGSR9nxc;$9mCl1Sz3Zq;uelCrJ9qXfDo+-z$N-j;Zdp1t75|=GawFbkM zZq#U&Wg6T)nNj){dW#C%jNUhDP0l4p56rR@!;f=EanmUpT!d2!&V+86MbbLd&vYrq zCPK~5CLhwg&yA(*mLzUAu2(RNqOtmkLKPC(FsZ;x(BZ}#1S$L7JvR|+o}SBvLY*QN z;4?C{s~Oz8M7gF7^X9s-7iK4V*4{}+^FgG|1_V6r9HrJ4vf{>LV`o?}wj0>XC>VIA0&E-M5oYaTXcH`&#&F=f4)h?Lwv`> zjfY4<@qh&bO zUR>@3p;dg^?Jhd7XUun^m&b2#U5bsAs|=vSXA`K&rjIetmo#|%7M2BCP%v1kt8EH4 zhV0D=?kglv%9qc`QZ%Ij?mwQ_1)|JpnuzaINDNDTcP0OFlSLj5{MqXGB+9g(UtwmD zKWf(LOfBV0c-GDfAys`hQ{Uhx-Rxu#*c_XmOPWR{Bo5tqDttJpLVp4Umky8dBjcvo ziZ<19GroIyl!Ur^;?$UDSe`@LY-VHA?F=_J*Q+_r^eCGMU)?eVLMd$%gwGk3rRU<5 z>I(%sFR}Vpo`+c6+X-Kt)NRBj*}PJ=zy4(S{h&=(qYArBXxZYuF9tvHjI-6$YGKD$7=@heK@d&}?KFmz4_#QpOXN|9W6)OMxy+B1g>BJ!S2D?|{W{fGXT~{5@Q{^)jPm9?^-QKV8dzNnoDPb`@{~ zl6ppX`}Q+fyNf2Nl+AfC_?0CoR?Z`uD_iRQnA>%qiPmWUKIZ03l0_dgF=L)W|KtWk z-OudK16U<~M?w>@IZD1V^O3Q%6-7zDlKU}DMVTJvG9>F3bM z7*cR}f#?zCv>l7sc?rHj=Z~Ki>oKEtkipX63DMVmFyPoeu&ts|9!ecP%Icb~^z7K@ zmkvg$*^RPaR!QbLl?s(nUo{};Xkop`Vc==4eIB~F2svvb4ZE8?g67hRE@tB2`{*9u zvCBHF$H3nXqF98Vka%>y%#tll1#O$;O6*LIRxF)#ES);QA<|O6)+u4 z(gQbD2e^kJzV^*DUMWV0ik8~CpEi6rPbEhqi;898^B()}KzA7?49GN#B zgj7EWVZ&?`dz2a!YYCNNNMt{`9nUvT**v<>K#GcyF5PYnnrvhbf)5RD()6-=+wl#y zD|}eaTZQ4?hgk`&Elg%U|8y7EX)XFzTF7wBSi9_`5(<%yXuOaUGMD1`V2w)Yp}G7l zzu@yWlu3+ZLU)z4TGQT5B_3jxVhAHgCT`>92drIL`z>(ReZ)ba!n0D=_2B4H5v$B~ zitEWK`3#P_hNkicS>*jPonDIzhMqt1TPGDlzL4-fLzab(CC zK_?&{WimlOoYHln5M4!Oknm!_Tr6UgUm}IIetu z*cjHtd1E48peeqL{Zy{`cLS&Q9- zt6y8dZlgzf;&@LZaOnHH?J(WO;;b-HYE$UAXuj(VFy&*^KM`gE{|{4V;TH8DeR&D# z6j3@PrBh@E7!c|192)8F7Dhlo329;Il5id0X6TNc?{9aX-G5=`c|PxZ&v~75 zZRm;avFR2~#%i^2gRwXr$Q&vUoTwQ(y^w)E9DU7w4`x5SI* zbt^87Li-l6=d#M|!F)568h@UY-V^jwXv)%N;Rqsxo6FJQuLnveU?|f57cS+2%!>bn z$NjhZY3FUfkM>Mj4x>{;YIYw=ejaj8W(A_z!2aZO=(qkAj*}!1n;)$L4tO=2^;C5H zjOR3{myL02UKk~9T+sBw2+lc*ACta&^4yiXlK%yGp?m+H7$QenvRF=YX(y1xRI(Gg zp_)4dw|h9iWnkX;bb81w9dYlA_6XG?v6H*4UWtA`s6{bg9L16%y1_S1Yg^*}`TY2L z*{20`YaUhZdK%^V;sKH7q|_8eusnNz#PE|+aEOyP)g)d^FTJn4bpeXad_r*`Ol z)=5^T=&eWxUpHR?d!`!w?DNv(97XkwEq<+0mdD$XhEuJ>LC?B|=trooG+j));1Sp_ zFgFa}!SxMBcus~3Qioss+L+Vl7ieRzBFmj>4YJv$KojCInq=O$5uGhDu##_MCf%;U zKC~Z4#n65SZcIEE5Z*NxVqF&1-ZqS>b7c?ZERgc*$taQ{|x*^%$2lCb4swh zqEz)j7$37b^`yo;oUsR;Y%T!4i&bFLb&Zb7+Mpe?4M?YayFnMe+KaA76`Fhv5Wws> zX{8D<8`a|Fb$-qOB2J8PA$SF2DK_lR+`5gjl|wZ3(oWginA(-AFlP0(74Ps3uUkw+ z)ZQNte2?BvOQ%-mb9ghD#qIIS?H~JF9Kem;AA2?BwC7uc*_eB+S^tY*#_4iSe1xCu z2iumljzagfV!>aR3XjsM84R4CZ7Op!(;k9rzg?Z|(FO_>U>=meCUcMfHL02Od~KXS z|HjEGh3cCWRpt47IUj5cZW|?KKMk{aml`eOS=n_J2cIb4A{yZA&{=sFw;^6cc@Zx% zj&Xf3VqN3&YCiH_wGMVxn|QxKzChWE*>Nzi9Lk1Oo}v0e(K@CBc!3|!Ke_~}`C^dq z>;*R*rqvC7&2GnKU<5d8yC2P=iJA<=76aznXb5kd^eF0()q3rw41DLS|M*+>_#Xfa zknNSOV{%gnv!4PpHk9g`+ssThBzd{8W?twPYe_~-1+$WuOfs5F{rPL-yHd{H$*7=tI zCez@%t2xlf^Wr?d@9KWl0}%2fsbk zi=X2eVIwP-hr?65#>FEeALW)3xEk6(pOf;+>+cI%W)iOirG{ik0^>kCj|_Dsnl;#T znM&j=ZrWV&9nVuz!C6tA1W7lA5g!RuutfSZ48(C**$Kr?I;q+#8;u&t#Wo}*fH)Yw zYqAB22ei;G#!+Mk-r&EECs%FHqa3tI=CSpGb!B6hy)2z^-ZklnL5xY%!+tYh@+^E}dbGIG(vj^88WvnFex(Gnq!+tzWEI#Z*#5lT_1cCF>7Q`+4T5_$I7otTc%ATpU z1{btbpYPKMG=hk)Sbk%fiwhTpq}O?jsLMTD{g^&{D$29Hja99ShCfY6Vg6h$+7`jV zdPH9MjjfnZBu;6(-5=oov>qt}+Oupzlmi`@0(3L7+3{p3wh(^bHyD2lypiHzT8_}s z`OrkoHmw%UuEVRW{IRBe+UXbTRA2t@AJ<#0_lAG#;yYx8^s4{TW^MEyt3acaK#4D}*I~)%Hu4sq%Q3KFn zj~gy{mIJDWcd>1()p#wZhz^UvVMtz=rOv?QoDuN^Hr@9jMXQVZF?wl#OVgTFqwBnceB^bXQpzi|XS1NENPV}3OWO4?HS#ZJ%F zTZZ0!SLp>5kGHnxsiZRCI+AlJ(HuLi`!)3`?7eib3UlijHRC~& z0}f}j7#W@jPtRyV`^%D`k2Q z?+txd4uLH0IEl%6Luk~Srll{)maveW*WhJ3e^jJsT+L$NOwDPoS18$G;k{~+91pxF z5&v?4>T!FFLH-c-%Q=H+ai0{?Y}ylMb~&{9oKEEN{0t8~eZ^vjgN1kYt`+w6<$!8n zcl*RGi-O@TI&PgrX1ryU@(W(jY`b%y)Q6`w@tu_qx>xrP#J7lJC(B1Cei2b}f8VZs z>~AEC6Ig~pxks6wh(=%Mao<-2J)L^70uFynDaydRyNKf_LUzU_Tcso+p1MDJQxQQo zgUal7K^;?iWyT#Vp6y=8*dK3hG@QbDcDa9>%T4BEc-O?j-U%la@8>-jAEmoKW!e3IDV1Qb9Ni95*h7WXE!1T@kf4l@dMb3FYtxt4 zKSxZSw8|VAB;$2xefUS_05@G{CdxWp^rW%9lZBCEt ztv+~LCgw2{sPuc*hTb8K=H0P6LA)|%2B+XJEeU#o%Po!)I6b_1m`XZn3sw zZT&@n@MWoEuUV+cb-58>E-{gaa8U+=o7k5}BRW-jB+9ML)Dtdh=7LvV>)j8#9O1#8l02;s74^Wx{HqYS?$VgV)G?W@7pFEw2yCg83wFVIYt`H^9?)Y6OAhEu8^r^qV z>tZ7MsG2QY0Pk@aFEpHVPpKH*9r_}&o2odT4w?#dY6p&-e|PX+I+$IYcj!zFZdkQ# zv0wKMD?fYFP7#2}5ak#Vv{}|2+8>BQ~o|i|B$?)1K7^_w5YoLk5dYx$H#CxHk~$H19X{U7lz$8NOFO;6$IMwvb_S zWL&$dYZ{Z<`Rm0#OyjqZ9dn)S%xibDhtifWq9-T0Pjq=}Ex8PJt4sl$D!Gy#&}LeY zX~++4WfB&ZBnK55Vc?pUKQ2 z%EUMQ<*&<0g!X7H19V^x_&)w61me&4nR?7tuya7NXu3jmJXpVimz|)mektMt*25D5-M4-GEf5c%$YI+8J^U&hSleBtqJL+ys0b$ zuW0J`JZdlFHO>`4qhsY_`e3E)N*$}ti4ykfmbN+pCn)3Uk8uQ5-Q@7_n~no%2J)Px znQLbnV=iTix+2!7FHY5@r(cv-=yJmf;O z#voOTR`+`h%$ag%dKC9qGmnRAe?``|m4t=YN&ZA%&*+ciD^l~d~jB0@yU;WUtZ3oP_RAkGi&2up|MmTBx%Hax0HRe7Q#7^}? z={P{l^VP#$+RP=^}TNC}lMk2}#H$ePeHDq%uoJY+3`%k+v8bk;CG4_(AVs zov_+|YfQc4kax0DhoyM#SXU1eP(Ev5U`KN!uN`oi1}CbP8?pt~E}GuU_Y99sW2??s ztTXg59`6=EiF54{snN381NpJATjb5wiBg=}sX5CG5atdvd9cL(fT zHHU8&qj7}F9XF1u4!F0*JKT1K*@cBGhi)2jJI;^I^T#gG{_UbSzfCBdC&%9*f|dQ9 zDNLWUw&Y%ZTWiSiokP5Bd4CX`idZ3*QT*a^cRS{xR)ECo%o@P=0X51g)I}{E*^WV} zNkZ0?rA9R$`tyb#7F)V@O}%K2h#<{e8~Dc~`}|)9+6cv{TqfPdolM8nlyd^`&PV-v zymaXoVKVLBH&rYgj$mQJFY|53Nt6{0cW$n()s1{ND96LBKcfFsI(WVfk}9qd4r9vx zCzFPIr=t}by6CvFq~jEn^jD{xJ_;1rc_&e-AMM*zl6g3K6`Qv0fhybgTk2J^s)Q|7 zP+952k#b2#Mdn2@*O_y(rsxiZp6J;XbT-MW6h?fx{cs^H8^uE9RXTH+h51|5FIwbk zda62Tsa|`|D97W(DkEs(Wm6At$JNKJOX5F>9^@_e)fg$v5Ra=YE<6$px`x9NuAEYM zxv0~V|Lx`&sO*?%S}B*>x&GjquBJr0_|Ih+PPNSx5|xFB7Y6q(hhQKgsP9Z@{Lc2N z;h3;D;cip(dr>Jy;xQ?Tc$)_?8arbXQm~}KpM{sPIQpL1OgJD?_iFX1#Y=}mLPOy7 z!mezIWu8)7-!Jvt`qITp<$wbazHxk8zD-dUj;(JA0SZQdzYf?B>VG;Y;~8MHitDEM zB6vH&W(xg`X6HY!ZP&E4(cS>`rZ3s3ZZ}HB_d>L<2Swe7z?P(UU7ANDyYPa?tB+9mU%4q;E!#(tgn(R{H z3CdZC@oeOOIYEj(T-Unz%ypDQ71e#&n~XX9yRO(3_O-;~`EgN~cB0wiaQpgnbDL)7 zC&P1An+KBjy7Tq9kO;cE-34-J>JsUZlycKkcUJOWd$+^?av91qbL(h;0GND0c4 zNKNGDh_oZwhmdQB>7s0t-8iW~5ZV&lJ`?&(=got?@)-QPa-=j)Uv_0ve48K5^{Q5h zrwg$I#28wvTT$K}pP|kI5;aUl9FB_bBJKv$p+LvgjQ24j@Ras!==53g*Ie_w?55uEJ{YCaonG9<%?N)7don z*&3{2V4+O}dSm(4&m6qmVvaf>GBen>m@xZ59HF7sm-{;3-{&e+LR26T@%KE*p z0MspEu2Aojy3J>cxJEf=Kj0mtAvH!uppLOi@LvZ3>jz?N?!S#)t2Zk=)d}_$FOgim<(Zc@&rDrvge7{8} z`XT7T{(8gE<7>gAr;>Ap&AVS>yDEA-c^v{x7Cclb8V|Zly|vq4%0SI*ODQ@Yr~}sA zAD5>j5E)&n3J*G4PLdkEc;W8~MpZ)a`#%*IHvypBfF%a#SIa zImdz&`COe_MPL!Wqh;{-Abs=Z3Nfa0p z7_+Qmsd2WPc=tPy$~5O^zr#|!Ub;yro#ugz|K9uXHr1T_-mGlOik3dA!a}EnsTOEW zkNCH}Pm84Gv7IRF7aUZVgr^CrxncI{{0e+RPSst3`}|h&P0g1h^sa9)aG4L*(wcXT z$<9hKFEN=OyO$i*-)2y193e?&Px6`?E-27ISC`xu*(>pZ2eZXTb23;{6=Y^-Chyz~7N%jb6T5Q~hE-9(TAr%J~oM=ydw>z?LZJ<3wZE`yUH_h3fgo za@Cf%_Ii(-cE9*czA@H`>dh+6qNpE;c`Ua8Q1X&BML)9y|G<7fLzF3t_l6mDnB1}U zmhIxEh)_3pr-o4GvwP5mnhf?6&sTW;SF;@C*lJxEfJ;5_%LdW_;8{6>&Ch9$MOh~5J#Naylb zZq|ctmap!@P4U~jB8Z+C&?O6Rqe$537)cD!GhC~H=l!3S^2#~sTX)0^OaGynGX~($ zQ09f>hjGwWrdXS=d>Y!)FvIn#mHbVX4BlUt7C~_%b5yJYCCAG@NKqM%l&j;f=!PK} zh}k?BhWOo-RtTvb1OpPz(};6~Xgz*2T-bGg0#ZG;vkP~0MxASMYFqdE`|*13qMw#I zkRI;UGEw?Vhq~GR_H%LUvhHx0-rb+yJ=3C*_KF0CKzKm$#JWG&#wSnt4~^xO(dhYE z!|O&@q5<&FyVKDT5v1GwYQ{3qKv(aT-nZq^VQQb5hXuKoXyZBjj&-Eq9cI;~ z`t`jP=60d)y9yzPkWoIzV5{o-0B!E01$QS7TJFiwb zp$u?~CPrWF@G3LELiKKNH*M7i5kN^rXoYljZ2w}@kxj!D^I$j2ZLAE0Cv|J}PK`?5j!zrY@%;n^V|RnB!1c>py%NYLAd* z*Y=E>AHv7ci_&>d+c{Kbz!J~CZ#4N@>?Sr*hfCc38|eCiq`tYNria)=Qqfstr-)%Y z(yqM5K>2BIPNG={ys|pvxNB9f?ETjQAMc3zVdMNt(TlL3Vo}@o?o_61>afqiX$~b_ z%MwYjp+o2Y)Rh10#;?^OV#Yu^IHRf^@u+*_I4epFI0S=)hUXLyxr0CeS2mGSmyzSXIPr)x;##@@mBX8CfI$*Z_#b zfX{g4I9Y{-RH0#r0?rR8o#tN*)DwDN>LmDh!LGlyIH1KM%Yn@;v6!(x)i(`NH}-wS zBrD~>U%-LfV8i(W#!-&{(SUkD1G9R4pECC`skX7-G=42d?`vy;zO95B#=2JVRKFlm zgCN%k?GOwHf3Ki;t(0jc~#DhfMI{DgS1_er7zI~!eT;1fw>^n{X@C)oWo z47Jg${W+sMD>d`Ux3L;*{bkaG!ItmFr^51;$vF*lxV52=(sqTLn665M z8R=8!AE~`FYlGhEfwmPEn$4o8#g3KrL=WDVz1*2Qk8?>6_s-8=vDJgiUz@X zy;qcZeD>W`!-KBNgvu1XVwC0Ot3TYR0n|`^2z)6OaUujz7#FWTP6}R>NI)WVxq>>M z&}OL3B?t$u*)^jv@hxbccuty+yH>h+$;1!tLP8v~4L-wYf~>jGF^5fa02s|ZChFQZ z=y4_=d)JpIlXb-H^m{G{lfAvck(aL3Zu( z>cLIfu{~htXjxZRnK$9ySr;`1Nr2}wI#DaOMW{|@e~Xn(;HA7uMM2DxUh_$z-0MfZ zGdSzQN3T?Y_9MJhe%1bnhc;QnKFEWAcPH86u=|;A`rl)S-%7%d=h=B-d!ll$eqhfO zt{Ki`^3Ooq21(vUJPEhbt03U!BK|;l7x;%W)NnX0J*;|)(>o&K$Ed)B+~hjREUYbr zDk?`o>NmyNBwgBTYJX;T$MJsC>~dW0{mfiKc3l}2<@AmRCTCGO_Q@9?1_ZkZuu zWX);c`y^`YRwSMBTTI9DzX9%!+R*mpfW2(qL538e?3hlWi?+&`ii%Hqs_86W8MVq8 zyN*ys{}Z}_a6FaIkjI-VJTV)4MJ(viL?P0THC_vEZ= zCP0sLGq%aO+TfsWb_XENJwkNUg5>;{=fbU)pTrc zQF>l~$-SG>;ArXQ47+=nw#nC5JojUZTL+_lJkc4nR4!u%rzlS&Yv@m$is^o{y6-1~ zwD)}IX?a17TExUW81%i}S?duIOr!pMu6aP%u}s4&rs(L?Us~tKZMHg2SuVfH@7%8W z^MAszT<3fsTdlbju?oP|4C>Wv?@#{g6-JlL)$W%f&+WarVo2ebwC`3mMa;Yafy!R} zX`QUx@Ra)V$F4uBj)|D1UuQ3uX$nlD*W4TQv$OYiu|*p`Vq2o7C(i{tpDvynYU`B# zsSN^xNlT$nb9LF?q%x6?q^ekt6K)F*gZ;WN6!UAMRrpv2 zFJ2|UN|w9h>7wlzk63f^j^GnZjYr{kQg)r4J-pAp!PHO7@{Z0=8*VE1mgtjgp5Mir zU2O<#PLVt;R?s)FBt7BFL?y$inIGw|XoURS5zM;6`5!6rB=E+&ghG0eaffvC$=7hx zIufh#(~E~Gl{+L|IpVfEQq%gC)SRD>@8A0~_8YU#pZqDG_Zztl8wd1ueLolaIiF!7 zClsxP4IiEXuX%EG2nqu^o^l^;2GD0n(_np}jdt01yd@cdFE3q6h6Z_vM2S{bmWXS% zov~d#hKp2{=HK>OG<-=jAy+&94xhZsK;++kHJ#iDi^>1g7QnHpXQTm|Av}C<$$nT) zai94PyY6?By{+RPk49OFi+gbjqsK(XIz-*n5Y}{8C29&k=s}rOd0ao>FOC1qa}ZX(Q@$ zSv1lRX^b_6`Gb*6ls_{EJ@Tl_(6i282W|{~8N`Mi41gu|6?Tn0EN(wl*vlJ0>30c= zxY06X*FW@2VoX7_ZFG_V^p|}3-HL`x%r9^7c9UUz!4;kkd}$)%aJ%l|MF5iP2w-7d ztwd$VP}s5J!6stI&T;&1mGiIbU_T`VAL8%T&ndKv1O$#Wgjs^JsDk~)g`=*>wI}g} z?hjw!;_bL#jLA>=6Ow<87M$Y^yIXES#GD+uImhsA$6jF?`0NaontU83kP#ZV7KYky z9)uK8n#GbIB$J5;ySl>es4ais@=p>&l6Xu=FwnL_ws`>AhEQ^94c%UmU+?9qYw5OG zGQdO&$19iHZ!^v}Q7+AD2`fp^4y?&|_PhbtaNYT43T9(WmLR%Jq;1*tvSlgSXXkp{ zAUo-YNP3n>rF@zGaL!xfSbTmf*|4D@E#rV}G_ij9w!mZs*9x&;%NjbMnGST=f^=KT zVBFYDb=IvYQ+{zMgtl~^oc%mxmW8(x6=NIC^Iw-4A=x-41cggQ^h!2bV$U;|2vme< zN7|c)lte%n{YZ9nFf7~9k5r4R&na!F=I@tF%ZW7Op)fsMfwHgzp(MvPfNWpb&+3!?>--HP ze5NX;$b2jRc)zev+CL?_w}rbed0APO|E$NJ&mV7=RCJs!L0F{bZC)NrS@E!rkqg;i z&N;PS*3(K?g0XxsQ*j}+d)l?V9%`4VSh;i7y5q)O^NiYM3`a;+wxuTkN`VpgX%!n{1rYsk z*4vv5UT?@>_UjbgqCZe)^?Od|nNZ1W4Ce#rYfOLe<2bNiN9Y?4`zH*~Ch?Ic)^KK4 zIVP6gAHGerjJ2Zo^4(ZG8{eGW^NvtPEoQarYtM}rZ~t|iHY=Au%i?pU(zE>W+RHlu zIcehGNK(GA4EmT44GKWUF_GV(*#4~eU@=TIEw!^c$w~<40nL2eIJpkDc)PTiMA|kkOo{a)w&$8d17MfwY|kB4 z*8DqdN&Eq^CHD`n)s}EK?&AYd4+OmB;t1U09J^ykw$kJ$9qr7Kuor09+I6|qv%;^k zy2n+{6T3NI2DBd64t;=NBQV|3AQMmS+d^AkD%-ZV01xJsmHbsjQ%#kTzW)?PN%N^2 zRfgNj2%;a%A2}9{JULEBQ@$T5*7|C0`Fsl(*iqyOdU_lKeF2k!gK@bVs{g`bdaGCs z#O<!XW@FV&+bL}~J5@vm}wkyeraaKcaAB)Pi|Baq}`Z4eWK2Nc$0CW|dt zBHJ5KH=;Uw$PeQ&&w&3Zy9VEAOZ!?fS!hWpO59fy(<)zw)|VSF;*R~zGbL-C+f)JB z?cQ{C8;zo~6e^{BoX}f>H)2s@>>n+0OAoc7Ax^vmE~wwE@{sTA;6YD0emKE8|Vvqx~Uj0T|qczRr^Ani^Kj#d;kTAP! zo=6h@YA_Da=4x6KAqTlcHc17PszH49K?c@yRd?@4ZW#tx-)yQys<)??xWe+aSU?O) zcP@yBqxhKJlm{2(v6UyYmoIIW-sFwJL@AN4UvylbMHWXZayoVnd`AryrS@r|+f)kc z;GfQX2nJvu-0T^PlUW1vila#jSTEyb5empkuK!z6%Bqas%E@VVBdy<26ILWxcx;Gv zy)+9rVZSK-yMw8)X%yqFv*@g4>`8MGUTN}&7N#=9B$P~=xm-XhTgM7PY2;#TJn5bZ zb-}f-488c~V$N{avc6;R7_DnBy#MbZw91A`qZDe+j19G~qstj2SWnAC$?8hO!v z&t$bM&3!Ifv)G_4yBFeRY>vt@^z;{PG-=Q+C>~Mh&nD#Mr_P0NZTRu<=%82qCF3oa zo)F2`Co+}n`nq7p>=^5;SKd!}85#x+mz~|p(B75EnKLmTeg29gnowWSdL>=XKa~A~ zEDsW#EfCxli4F0ne93$*a#C4dln<@x9n|&TYk3zD&T~LsUY!T4yw2XPnJaT$lkjv0 z`GM|32wnq6MI2K2^d_CA!#Xg&!gOCOQ$zizz{^WRmfoL#{M$}8+6cc`q;y)mo!*~v zaAtnJG|%@&J};|#{+b9Nu^h;6TZ_NaZA(2LM#28q{LQmz^GjyDgt9$%wrFPkTiude zwq}9AU-}*iIQaU*e`v#GhY}I8>S-hvj~7my6{XboNtzC;N`I*Qqw^jC)60HmYASAw z3Eji})?{XD7ga1!`&+JMQ4G9yj>sTZ-yR|e%j?~>=!I-F%#Vi^aoNS43KTe-$o@%S zXI06@S1%H};DOHK0H&kM|w&c%?b zIpuUFehh*SdV8KWA%=ff#jd~X>Tx?HPDJkoS;EmIIq}Wd9Xtwxe5cobFR#D1re9X$ zYP{G3eas}mtM#{=Z>b+fPyf{9(IbeqwOCS~aQYh~gZAQ=QYRM1)L}@w=WSOD;s)|> zRJg(`x-lGrwp4e{@?uTc%KcosqgyngXR|-L%1KO12g7%7f*R9Byujq8tB@Z0QWBF!3XGE67FS~G?EsHX(~~r4Q0dzD4m$xyu4BJ!Jwl)Jk?$o>Ku{M0;1hx4`RpU4I$)VhWt7ecoElQyor=q~ zze`x);@P|XT?FkZ$>7*UxW>{Z zUzdt1#2TFc*rrk~|HO0!Hg*$Hc?cgKefI$W72KfOAp(n%1DmDN`gj`mXDOX{I&Qkk zxgp`LJI1@7>aiE`24pRhG#>m|i+tG(o|ly(H7ZXe-h)l0uE#=C@BYEyJPAqMs2G@k>ZOrQ1P4_)sqJeAS-Xt zE1O1@igVY$AZ9mVNN^Hzu;_qo5#QWD_0x_3&l>DxvfGJ{UJGFM-moh+v%%Y9?9+>Ze75P?EA1YG@4!snxthy` ziT0`Y6)Y;T(gG~S`%zzu*%~Uwe0LV)DNkc;fOoIl zYm7#Ct6q3IGiP>&X92O^pBbwLAaD6N2w6UB$sD9_q;EMbWY*C6e#u??30jQylSIEE zPTt}AdI)7?f|5B0kI<(xHSwi>#@lxt=4bi*L5Ep+x@35+t}To?Pd;}Guw4$(y8qh+ zV0rqBDR5kOgai#l*Pl7nb}d))Maf0KRPnDT^9qq1 z<-Wl-m2FzY&qKM;yE=>BqEn-TOUL3gRonV*dCgT`o%%Ap3fwe-IcVihXuDSCMxoQU zl38bCaY!O9>@&R%t%QD8C$cK27F6ZRguyG!ztI!p;hfYEr6&Wey}oecp646@khQ*j z6Vr(f{qi2r^kMu7q~=BI;ZWid9Km>^^E!a}LB@{fgp{Oo40ugt>=lWk>iElC!qQ1% zs29wM8=^QK7H~Y09TM?c;?c4880_3~r0&EcyrtW}sdB~=xF+n#(v?u4REEEWvGa13 zzQJveEB0FtzNfWti;T)Dg-0T7`(x$|R9Q5?rWN=QuRUEO*+gN4KD}nDvfHWhFZbP5L92Q=sxz zHh+VaHhI(N@qTj|A+mu^nq6aS+^fb)o`J(hua#=Pk%ds&+_D(6Nx_5N0lUnghv1ix zUi8XH=kbe{#tP87TVp+c$nn=KAaXmWxsY|_OKyqr9n4z|s&nqv8S`|MADS3iRSk#c z3kJB%o2p~tjVd*m?EWSw8<*CY!r!s1kb(E}TB8#Z7y=rOV5%*#8CBKVD_&KfcV!l`z_wQ&-DuHJtW8U$i zi=m!nH%`4c?A-MIgZ2u^1D`y3E%>BN&y6tJaOXaXF)pbQm zr#L;+*7GOjY=iH1Na(^{imt!i|1i8}y#Gn0xLfpZs{PJVcNJIHR>t-ZVS>@~u+1Cu z7+&@*g}n-JT1S?{lJ))av1xYZL!X8C+w*aAl`U3W$P>)Rv@gv>hO;5%)sV&yd~D@D zchgPX={s2-j*R~=qUyr1R`=EHM!N_ZMrPDv{Z#z@9MFHA=&7QV@R*rScMsx~_yhN9 z%~O8TE`S~3YkR?~A8mRJFMle(Z#se)pa(T(y7trlY8-Q^2D7~D#6L<0QQ_KVrORv! zO&U92F0RS*MrjV}YC@zBi=V9!fEOjKzfXvK%{p5tp(?wq2LAhJ2-#K!5CA zsmj)r5bq5kefbhSU!el^U0bqvksKD$&2Cy-o0pFdV!Q4e=4j_I%%P>t$;)c#9|tWA z6ZK2V1@kMp)GQ8i3l2WrA42)1xo4L18;s7^cju4#VmS|6Y(Mv|a2GZ7`;6E$v#{D$ zY_UXLFBPUMeKq7af+{!En(USS7(H2tVdsUVmDg=q4f9iRR5l{R2_-hKGMVXdC6yUD zcxtUIA^Y)t8sXvosQ*?3V$A8)O5_N`-Q>8VKt5tXJ5Kj$wi*z z!m0r>pER7XDPgNjCL>+@uwF`qO%~+@g9HgW1;G#LZS4cNqPn%{qTM7wj(KtCA@zpc z+ZK`p)KeJ)0#>VK7Si_;+oLV<^*`WB_aC_ONx0UpY6G#4!B=k+9VWttLx(ebR)fKV zwSI7J&AW8JJ!f_LsibrPMg6MterJ=<&{HmFzs(;M{CxozIB%Px{UI9st>2_v^02#i zVsviN92rE@_>tGLLNz|<_q?%qI2Ul4v`{1XWHK#?MGmRFbqE!&G~LpA`U;v{$k+f< zch-IW8(8_y>O8VC$z**NCxdjickDCWumOzyrYjht`Lx08K9TS=ZRQGUHc>aW6{{kI zg0h96LhWyz#50w{o65-BU#yr0h81QZ1Op(3(B|DU!kelzd=f4Ur;d9u(eveVy$@ol zMye;>E*GF6&_7Z(JRzlTHHA29E15DTXkTEyQx$&q0pIEb5;@Ut**~=+*PC+6=-ilu z%HW?rT@WhKy=BJSlX;)Q!ef7de>9-%jtXgiJu!?_F{rY5yU=A$YqoCo>{P#Q)|N4X zlSagfVoE>hc(&+XMedYnW|}{}`iHhVzYsB;^ME3x>v5qUR*U$`^E02)dy`x3y)La< zve+Lm-#Zzj8)$M*pXS-9^8-q+_$?FpXPoMk>Bav9E%IHe1QD^j z>a!hUIWHo~$u)e>O`M_Wb=Dxd5!nM3WuF0updRxsr!Jil57=gY&Plg;>8=}?##+7}#8|AG66j?2 z~XkouKAOMUyD-TV-3C7<`EgIA=Kv58gjcJJFk&O5H4Z0_{&FFo2N>b=r~r;$Hd zC~DEz&?*Z&Ds{CyU^MhW2hl@*Y9TRs;dk13VBQk)b9H5?aSPOT8>lEWg4%y ze7$rN#N@%_A@yf+;=@3Y96P`xk5t7gZ(1tKVsw;UuHBQsh(^k<|KsrFkXFf&gW_BZ z{N%m9r1wh6L-04C$No+|`^ls3U>e3ZbNjTqeP!rQi5s4pI4TIz9aKrX!_dV_bN)6x zI&>;nd<|_4a}Aeh6tfEzkWfPscjP_UcJ?vEkNTX@W0KtXb-8td`=k(MyKO%?T#gQl z#hj?#y~CD)lvQVlQ^Ap7GFdK&dELHQ0!IK#RaLbP9mPb!$h3*zcv0V~=@a?i3_k07 zVefh0oM@bbw>>LxrMH-+uC{3V8AgF-JzO|BOp<}9S)i>bJ60c^>1}! zlUViDpZbIOKg^$AUPWD=h#%UI&clo+^v|++%cfWAkCJ#T)Fj@?7HVjc?Y%g2-e14u zT(W00zFkF(&3^jzaersK1SY;AxD<@u!&KWpXZG244{09T3&QsyBv%ftzwuvk**8~t z7j><8Ism2M9(iz;*m}MU6@%ALIsscTael*{3cVEPY-k8Qe#SL-V#vQYftSo-m}b|k zCj!u37QfFj#^)+tzL8qwn!dRgpBIIkXgr1R-mt12C_KMkAQO;Rgo!_r?J`T;#?L1J zaD{CbOA4@oDnjtHo#=i=>^@mo&n&_jHiYYgog>=%pijAej@KsO5OMM*{6yGq>hCT zNxMvZ&y}@@)}B>a*jJ1zrxAEGqFe`zu%FuU?c3M#Ynno9G3eiGf49)w{;dXI75f&F zRC7xI)k8c$7-8TGnU?R2CEfun3!Df@dd`9(mR_V>cjx502sgaMpeqdPDxUTh{8lCpk9r>Fr9*{XwyF_n(k5wDwef z9vQMt_~p;eYA1=n>|G@jv{~@C%s@Wa%NG8oh9_hh+FnR0g%gbaG~n$;orL8NID!oI zGpQ+R;8$RmNXiw`Hse>ANdM2dNc8`C{2oHW4fo#fTShHD`u_ANvVmLa!*Qk$h~kMk zXSIK6s>t1Lm?(@)ZQ`w#F?yx^$D+Ao`;lTdosDvXOesj~Cr%<_6K9lE8_&zh$7DOa z)fwZk6YSmZ6!#7@#B**qTe6~y54FCvzJlC#g0+RtGz-34X0)&1^#-S!U7vfAc9Y-+ zeU+pD(=U&IJ<)b5D8EV&9iZq&jPZ>7Rcv2^V#YA*E%K{~S&&ybWG4A&{$@qBgk(Jr zHjM~mG{?oDQ_7d~SvA=J>;l#PqDJ@ZzT?9p-UfG;M2C$QM5#QpRZF*9dLgqS@+Fc) zBOE%zEe_-`IBzjBD_`A_P1B%n8-pto(97@@Kd6?-i%OSp00Elk!ASr$R(!p-SMyvO zduSBV;!2;P!;S*{lo*0F;3UqUM%#^geTu;fO4}~UmQL0Yrkrl{0R*cOz_?2Wi9_RG zsGvAHVmte6;WFxv(y=U#t1)SLB5Pz-NJ(kA*UhuE8-pLTzV{5!RD_tgkm0}9c4#`@Lm*#QhxB-Z`$O3ypDtF2^;2v>=MQLv3~@-)jpR zf3-K%gA#??6BBp+1i@HRYY&bpr!;DOQg8vCh_WsB>QsCrmul{8ek?0>$zAbJh_{O5(wC$rr3S3Kl;3BLxm zzutav?3N`-_W_cuxw4|yX1~}xt*~+lOnBW96t%Q?&rq`u=3C9&)^ZV7O)UP7{O2BnC-!5eIje5+J|7EXF)2(+Q6BwxfxuV_M6LA+Twx~P`kH=HXM`qVJH~4} zC5p>SX;k|gUb}#%&;*$zr&cxh8OJ8Qc7Wg<6@keX?=?Auy7esiX#?qn2m&MLhRzZks{R6&u~h5gGdgxt!b+wh+ds!hWN}nUrv*z z7YaTCD0%iHlofl5-v)i3RVsuIS_ljZyK`<6!Qi*&zv`7b+%1F8l5Ba3AJKy@XvC2p zQax=DyT++G=hP9fs$@gKK6>ueApRk)@$IR>J@Z~|PA6Bg-Zg!{jv%Kb@yRq}){nT` zrWi7t z&e9A*x+gWzN!t4noEHXHb-x#qqQNbLl;nsv^%22MIssfy_em(bRr8I0Qa#OW!}|_O zv^SISI6rparvf`$%f6g$Bd$m^_T*WXu#$~)7_ z7tp|7VtlyQ+6x}HS3dp_;t`|w$Wk6MLT|yp+MMM-3J|&(1n+TvT|n=^g($JG&2d<`?zsCH@Q z_hi_zZcD6De=rZ`D(eH;awAQ2B9rgkSrbIZnr$qWGs%fxVDBLfiP%by*2S+|r?hEY zgoRq-mR>Emz?8fqoQ40!yKaA#j+nnD%HBmhSoaitAYjd91J6To)%^2(iyPl`_SO69 zr}v4$P6(r-E~-?U`-M|`9vT_y8{eyi6(->hXn)rIOs6LZ6Xcv2qH6nDIoC62jDW5D zppo$gVV}x~E+yHKl^zp5RwOotY)vWym@Z3nl33sK_=)sJ&V+Ryp=9?x@`JgzPf*c5z&iw?V32&b-eTfbZKnOUaI^{nWdsk_H!@#fG zjegoWcO13}?>YL`6GP0EDLjmN^Qv{97}P--CtN(4Ick$2RW|+gZVwLY#jB$C;l;J| zwIbs|r(T*{qx5^R2eG0+%1Ri4pf?4pXOhPqE05v5*T7Lp3*BYD-7_PQQqO+E&JGZ$ z4?AoMhkD``C%L}sVUYt3=KS|HRmMwb`wh^p35N?UCHhJEKMzV?tnfA%Bql~9)mRF$ z?M`QxKNzQSdBUSLTmA2HKF8AVaBQ=WJ$TkC)BiZNk&?5pq_!WcuoHrQUZ*x%r}W7X zl3-lK`-%heJS4{g98E88Sf7&E1K|xJMnpz>z1}o1A}YxU8O}yEfZ{Y8!2X*0iHi$5 z*6?nUv%)c)9eUsut2!-Lw&uJh0#Edq%i0JRAyb^~U2h-_@o+^BmdyBPk`iFK&II<3 z_z4>w!uwk5JixT>-e&CmkU}9kDONZJ>M0oi{Bvf{idDjy*V!-_O zwy6{Or2c=JF5^puMb5L#5;W%idgWke+YQ=>4N?1SVKWBYn26a@G`&Q`CG`89-p{}!95y7j|5LACZrb4^ z*MpJp7zyApn-OBr+UL8HFo^nBO0T`%WFFO0wI(h|H%_n~xQyrr9~oFAFT_N=gP84K zpq+6Q$d7dPo=lKE`5B3coa)_!AgflEC>n;j1`!n%l7LvqR11StYJax;>8n4;d$+bG znRpkz<#mu@W{Z1xcnMy0`{{YP!MbI5>tCoS+#az!U5@&~y0lw}^X6!Er`)8wxAd`K zEDiATT?5Sii=tbAU;r~hwEH>yA9s}HL7+(KZ5e?)52giqq1y&n);nb~>0)@ZR{PF- zBk#HTmF5kKDeOG+DG{`Biw;zaFE3FYXE9GaqSQrCeh+;4o<}$^6{Yn!4n&Lb+icnr z!Nymwg}&2UU^y=ntO<;6MBN+rP|?R90>SMCn#3ESlaw3=EOyYwt$6sfQzZjljJ`G; zYsIB=iF7|K=~bLnr}v-{mYkG*=Ob2gW;hSLVIe|IDmf1X>?g$KFw;G> zfBv^d*a-40a2c8K6^b1g;9O2Gst!f3Z-TB~q1xGpQVH*GL_W6eCw^$Ll-GCPu%B?~F&lunx zDMN%RzLxi_)3#+BVsS;r7s9Mj7Z~3h>h(chr5QifUb!;0P$A?HVrqQnYt*^^GafAz zspb;}x-pI|(So~{-K~z_>0A>q){UQaFgO0%p79^@cS=(-mc4l`=GBJ->1Ly|HAjmZ z>9G^Lk52D*y>#FOnfh~uODPhg9}VV5L}M)n0jDd2r#UBscYm@Z(_#Y0v*tJ5=B}}w zZj`RY0^5t>itmVdI9L^10|m?)74%WQ3Hy-i&))Heh2V|QB?{Jn=ey9lh)=174HVo6 z(=>JksdqBk+w9SD3yv5O3tgnydmsSo8|=e|dmNINgg>6C2Rte=9X))y#mF<$gJ!Y4 zi7;ctO9Q&?VPHtcgiYVu8dp`_>BJ6N@E&<)XKe3HXAd2zQvb<9?s)I}ZM6P(!T93| zsp8bT}SN&2H*I-ATDL#GX!FDIqbRnze&)$KaL4z`cAJMX^} z0`{DvB{uzxZ}x9zFAeqn?(^T_#8+92ph~<3C@<}nNz1+5>pJ{;v5T$+k5I^dCSE78 z@BFg>riA;ljW_JG;0;6b?CZTPpX**>0lgzzI`~2%3BtHUVies8w$TMTd70PDwutYU zjJGyaHGNo7SA`wW@*bSFaGT$licC7#8BQ?8ARZ6~-IOJgXijzbFq%@J7Tklzg*r9@ z**ne}6`C7z-13hxZwp77+NBxS+f?>%|MXtycK&`sxwqgWeYk^Pq|{tS$-XJra9^i> zolkop8eIK2`Qg8uK58Qq@1t-MCZK!~2l(xT?!iA$^EjT->A!sQXD$0%7VxwlR0r6PqxX6?MiMh+4CEfz``B-g-R?=eRfL0QRP9@Huibf&jp!P4ug3tcyK z)5GoA*itwB5AD)noEVfxrTgf$r)I2Lk4>k>c@);J-y~Ycwgex^z3T?63kI9%asxZb z_&mCp$v@O)^f3<*ZcxT_*$+G#M`tr96r3>uYi~3JCP|X1buy>7#UTG8I!Gw$;(NOI`?VDsE``O=I|;CGz{ zKD%izY!pmFIW>0Bo%7Cb;Q+ptuI&sOBu{Ax8u^sM90=X6IAwHq0@;lsY0HGdgQW2N z&{;{Lbo~-k*Fe5xKX!2dn`Xn0@=j4WJQSHQ2^NnQHATl?qXws(`bUP4KUe##1&olo z!&I&eh#Op!cgW_iC!LXeZtFQlt|%POYpZ;QU?0>DnH{ zt9SQFSmHB@0NQWS{*B%?89kQ$rQNVKs9d8s5lV0FKj+2)3GEOs-ua?XkH~K=U+Hw( zKg<}~riu5odHEkf{p8h`EWsreP(O0jSDJi(v*lq(X$?`ZSt1FqR#lRq;R`zLI*TV7 zohG4D%EYtZt0wpucJvD~;nv1ADm)XzQ=8Sgt%{akb-mcWwXo2{k%-Q%+!k-UP3D32 zX8V9IePTYZS3lIZ|NXU^6hcBu%a?pwUdTglouit762sbm_r7pa>qkI?i`dn21Nd*1faQ4+K$c-;cA=quvBYkx zax1?KF#hd9)gtl2X?fN)ufBJVxrCx4w#;>lj8DJBdbZfXlI;uUu{BlQna7eP@NK=K z2A3(R{bs->kYA`~D_G4@w8k0#Y(Sa#fj^}t5BNRdQmwb%?3C7RhfRUBAs}UJP3%sI zRlXqB-kKh5TAf(Zgh7K;!spztqa=NC};X_Fe{&(dNSz_M^s9-Jraq)?DwAFS1fsW_QDm2N9yP=T`bK37!?B=G4`J zp{O9O0xp0uKqdP%@pBTwsG${}&nCvU{IJWTI%h}mN83L*?ulZiEO*&O`j0M#b2Cjt zng5W0!Yb%=^y1KcjLInRaYvkiIYTBd#+T6YMcPZV8KG`*y9|Nfg#Z$*1waZCE(XOv zk-?Nqp#T_@-)$Go@I7pkt5deHpod*26RVZS`qHPQBU(nw!5-I} ztJVdKWu9Z+E#$-fZjx`c;<8!1>&14RXsHLw7hoku0f3^FJbqdOF$VQCKX;4t)VeWN zKLh2~E-dIkYgjks4-lT%kiZOeErl&CGGyxBDe^DgbvR9>M}N$(_iKa6xWm{L`}h{F zYnb(ovnPV>8x^*bta#fS9qA{4UTe3CvXlq?*PNx@=v(Q`i%6ku8=TELgz{+ zE7Bw_*u8~T;VW6ht+)H9nG^yUpJ)1QuZ2>!^`Qu7mx*j$lg7-BubOWmNBnvbtYhSb ztHC4!51THbnRhyVqG*?0=o{^lbZ#%n-?F`ka=bn;@wR3~69#XSHf8_H7CkdP>SWJo zPR1i8;0{I|=&kQEA9ONmRyxD}i0h4$0{eWQpq6RJ)3x#IY+Y)xDG1)UnlcOB1*AVMG8{pX>69k34ck2Pcs?y6&m2gN zp2ZbPtX`(*p5uV~B^Qh1=eZ%5_gp6n`TC_ShTB5%*Skfz$qs_`yu)%vmdQE`ta3x? zPINKr>K-;+Qzr(R;0mX04Ku(n23!b*JYN=S$!uU%^C`CVznZ*NlZ(%b!)(})LA=bK zMHkV$w!bHYl@_}oQ0|^hajqk_DvC;-2Oi*#W|G2%yCZt7b}Eo|7AH&c{;OVoO1$y3 zMF&ve5F3hpoAzwELEv@Rl<#;~@rWIB>Hd2?-C8}MTt-W$_C_8z)5+>LQWCH#r|Xw4 zX{O7QH*=6FE>G?m_w8S`;tz`UwChy*p3ol{lH3mAZmiyq;qg_U>QAa$LeqJyJ{uyz zB5ClWzmCR+u$Tf;`ZlbNNY*=%!mubJoqA=WbE^R)Oe!@UvCn9o%D87b<>M};p1k{e zlrNQe*YO#Cd{3|_gYlVAnHf(JGRwU(v3W8pYfA1L_RkHDv!u6Ayjuw4?5n^$UpN>l z9nU22pmzrR?I__ZUYbXO1UZRTZ+60_Xj%(73(4 zc`8Xp@YDH~lLa>l%^dWpf;5RbKkF+JUe$Cl&yRijbfX>ZU~K#~6$#&jse5KxTOniS zHmw_8*H+6LvH=jjUB5M%R^o_X!r@EcBpVr{{2^KO^>FyMB>I$yGKE~ESh$;&(JZ7w z$>i82qDD@tRDslM%?2cUp>Tdxu}_Yx79(k_E{>^~s`nfeI3S}1tcT>Nk^Kxrz~P`j z)1tvZIt-SmQ8q4e-iI65%YKPsd(P@xDeRhWj|KHMo|iA6t>1Jhi!>73P6o@bgAqETti)4L{M6vNYkHl6(g4Hj)t@}NxDoVG4eHh(4` zS!@ib9Aqx=1%J{y&kwV_>jcVyqnZCcO8yopwT4>%Dt?jd`cH0U z$DR@!ewuz5-v-muV2QdeUAQWP4LhndY zVCI`p-ZK*0ef!^NEWPDoya5j4^adjFSt`K#yYjvtzwpS)g}h96N-yWEdp$QOaMjTK z4;AOYjOb^AfhiK6XGMpv`Xy*jpDHnQ`6Z01cf0Zno5ChY+PCM z^bymux%~vHzH{n{hoT5Lw+VUArQKd?oivfr;~s=#o~2o=#G*!z%26?PD~pM zSJ324Mos$?+U4v!fQUWwVKj>RF-T4DN&k2Bjx45 zim>yTib1Sc!PXio{_EMqiP3nS(g!rZ9}dheWWldUJy6Y6J|iRPrUW_E{$g+u--jI= zrMeH~u^l|wt7?h;rI;;gBjTa?JQIk=puA*LUGh%~*hcp%wX&X9VW#x2Zue~{~2!l%vv>iIGE|xZha}s;H^k4P`SZ*JIR!s1tMlV(yOy>ns<}R^K&QqhUE8}&ukL0IjLMu*SOXT`(mDZOBUQN zmE#9y-1CUsg49rgYt#N9*`m1Z#V#srJ`6sz|>Gq2_A&|WJ!hjc7QR?=5SR0cNxu!%3uzH@y*PEfsJyE1zKZU}W*;yj$_wCJ{*`a2czp?j#$sv+* zu=d<6?$r)g42i_&ldmaW3JtVa-lBYlM>UEwtrqI&MFqMj-_l>#Gjxhm@<^vY8(Jm? zT495$G`Lc2DJT+N%0sRwN=_F)F`%}bH$^Pa)HVg*L64pN)OQ%WLkqhK z%=QJ)yo%CkFezF2w8~KyohP2m=kGBt3@uv{4ol z{LXQ}P zpQ7~my1zGZojV*<&p$Bn+Ym?W*A)R`c4^!(-6t#uv(8^2AZjc=tqx}{SxJbLWZL8? z#j1&zsDVFd7v0g+nPs1<16aGn3sFb5`d4NK0uHb68?0wzDM9f#-7{U`6rC>cN#+yj z3YbFw040`?e6H)jo<>FM0itriHK&T(Har7s1-k}Wc_ULzrowMP|N?f`1LJSv>dC_uwtvXsnV)^YhmYi8?oj zUVj6*Z7-an$lkvoT+QstXv2cL!G1ojfBHiIpOs(jplZ^q-31(0(;$-Nv}~mw%1bTQroG6+i^QiR zaIxyrBQQJ?8h4wXl0r*TwFv2AH>fYRn2AoS7pH~YqmVZnB{VR~kaYcK1dNiKm|92cV|5_MF|PIrT~*0_lG6HmYLZgC^OTP&-iJcIh5Z`^DqQ>rC; zl3zJ%h$gjD?=vOwst-lsBPo>3()A#Mj})g5wo$7LNqD7Fv5=8DBlzDiK9y34jg{9R zg$?g~e|95W`UNeWLGfHlMx@9W*2m!Aj$cazcr3_sg14vO4|3>Ggln$dnBt@VWJOX5 ziH&4M<)l^kA{Y*es%RnDr`;5nkQKtf->Br}%efj+ESGQ5C6J3G)2sR4p96-f_H(+U zsa@DqE~OpO0MvySevc9GY-2(t7c#EWsc=JJ{jjv#8rbYFz5k|b6{K;{$6aku=$(x^9}fuNoBJw}a47^LU^K><*SyU6XG z@KB@n8qyVX%OT$RYkvkjqxyxL{GoSM90%sE;^4f@Zj)9+q&mo%|J#PYXIfeNi~DKu z5@x5uU3N?A#A6{z5sR)8;?tMkg@N#;lI_Pr8fH>MtkScsN-}lMLjnRv{qxsH;dblT zYeG2U1t|csYyP|Qg$;mti{I^go9m})|M1^PUz z^eAfXkX0E~HTpo*=d=s2gB(aNz{)2Tr~o7Vk97(;UpNH!b$1cp$8*7+3!^Tm$e#g8 zOzeedl9jq^CjushpRqidl@B1uVV+$#7fcsOvi}pouLSE6rs?0EPrghDvHCf9h2E26 zG6Y?Im(koV6pPyJ>3g~BtP3{ekoM9C`!2=6y_qOhWh#HbngO>o-gnb319LD6p{gS0|WPeg=jpGE8^(8dbKmRPO~5PPVn<-1wSPf zov@%mFP=!6%X2$ox5TGs>P#-Ap6BtHrl%?~!)ddK zEmli@W}ajqx1zkr^{_#_Dwj#C>_)uWBRCTgVMHGEUj_iq3uxa$W~E2{RwW8Xc*XF> z;Tt~WFhH%POOaUQo^i4)e2SnKdPMO0*6As+#Cf7N+o7KYNK$is#GEnUzO-2Ge^Hsc zXbWV}^Tc>tyOMxZwJ|KWJHm65-;$mwt;^W}-UE)ot0~{I&F9TAuCn=LJ#Yz0Z-jc^ z`uKNqv>xheSrDXjD~gQ3=EHw85qK*sB%u4wnY)?)$+cc$N-DcHjZk>F^X-wH=^TeD zkVrwpy#ZeuF|RX^6PdJo%1%-=strsW;)dKljpA$V{Jdy?qh0eE)St1SU#KH;#D}<>2?*)VSjECGV|FBgWdN=bELpV6GQrJ>Kd8o>AC= zK!?@1yS4~va+>PrR1HkP7drKwFRG`1w+oMK99rkNX|dy4>~e+OSta9#AU2Pu4H;^O zz}jqmlhfs=uYq|pqDhB4@uHp@y#E_Ud={hpn$WcsoU8_5%S)kPWg7XJ8-dI(=5)|6 zO@cB1dxobv*Y$lECLia$Yn=?_&L6xmwp|!3<0IGWbOT1*!lG5}fg{m44tlHjp<1}I z*K(j=>4`?$`QcTnHSYnE5af@53ba_%BAse#@;;^IvGp_F!?aNl_KT6qKO;w{O=BOp^#qrNba zb$B~VJc>ZS-7U@@Oy;Q0g7idu`*g5nO1;pFbRURX!ApXg#{~U3N@M6?0{+J8;8YuA zGSAd8QApAH>o=%a#YN#AgUD5J>N_+7WB5%7}%I<(crR`3F zL<6XF#<>~Zv7zRXMwu?lX}pJX$TH|fGw6BH***KRF?tosXGqj0+4!X-<9AU$YI2$NPVip5puI-zaR64ju!*k3z3|G5#}rLa2mfCFQk%Q)XvEvCVZkV}v4|6y5mR)K@C>?CFc<~Dr!&%_iGJ zR#^r<8{n;J!TbWCgp zv@E`TSJ70VdkN2wGYZt&~=I6UEETHy_@tPgk^lyH%AJ3tDv_Bwr+auYu2KAkJ^ z^d0FB1~9Dy8QQli!S>r%7uT1{rf@0cTdK_s5sa5_``-4O)UGBk`m+QX9Gt%OM^T*G zQ08k>lV#l*!llcwn5x(dd-^vA)5`%lQ?1>wEf-k|8O_ytB9@ePd+eiPfDqdQL$y-t z!3j`UubJ&4<=#c{(N}q}AnEbdJPDWUWy!z&fS04fR=1)J*h$Hp%eMu?k>-)&o24n% zGv+srYt5EHKCHJE%^?IA>u4ORW=kc@*JcNig&D?YZmqAdB4VBXEkpweeDRceUa8D) zI$k$(se8Uds7N~;w`+$VDoS9}!MaVV!vnUQzGf(KxySaa5qZ~91>T`y3Lf&Ay0>9` z{PS`7k^fREFL75mtNavjN(0f4+5>w*B1bZ6gK;j*(k~|XCtBko?UEiCOY7YZ+Cwe- z1#xNx25*N+aWBdeuYh9-bilE~o%enIGlk#xCy&*JyVNa+@CdbZ;>1BMi=0Av*xW+x zIi0)5CM1;&nA-6<@*X1-0!e8ISfY1mV@M<}z*oe=T|GUidOq>=>TcexiDOYyp`zA;8@}=&;oT>1p$vD&1mn@6d$QGLt zI&uOt^Jr#vgjW!d;zgkTbPLe$hco(0bKgWKjnd&1Ndz8dE-llQ}%enY|+p zv@#9K>WLkFRs~Ebbr-T~6%=JbMnxF%>wcrHOMf4d!cJbFa~wL}CJ%+KJi2DEUiP405s`jlaJk0rj~ZQut_WOky(gh0e4MLsuyfQ{ zTsvA{sih!=FgxUDf5yixVb+7wM=2KDgXaAx)1hqUg93Q>_iP3M>`)-83V44ujR%y1 z?JtMPjG9ZPrQ%Q5bpwcqpkzq!PRN8sFJruN%{`7Bam%OqXtD8EgL&lUF~_}h>gswM z7$l3gt&|D6gh}1@Or_NEq*eqGZR$V1w)%>SRrZ$Na|!?rTn7zH7^o}#W^J4hc`UzDN=+C-J}(Q^9H=hxMvz* zKCXwy55Rrg%NIyt3!8nsSOXZpCJQ$FSC^{8?*(DTNqFAaqm;m*SCsn{JjNZ}IN1sm zp5ga=FKSZd8b$~?IjY4hh5hZ(`h=T1n6Uk-0_GP20o zLRcuq6C`+m_+lhrcmBnNQU5e`&3jPc_IO43=%%{kU>4iwBx8KiPMZ6#W>Lz*s+jkE zah-8s*MMgJ_zJMdS29W|*TZwEbJcIs_gsf*e#7tio@9aE3FNYpdB57eftH4LO4Egf zFtC|t%7Hc6IQg?b62+nZMyE}hA_9!8$k7aZl3 zov2AEKo?he*E^|{BEs*#z6E`e$8nnRy&EGDz`#Y@CK&C5E13COIeMlh)9=X#JZe|l z-pxigS4R|!!Q6X)`g&UNSXxsP=zJB@th|FaWFxMNN9RQVMb_?}-5Q(6wM7p_FmsI} zh*LZev-YvCu!0swX3;MHo9r;k9YR!7Hgns@a0c!CH6mP4_7?h+hr=zrH;~?)i4D!z zX7N3kdhg?5TV6Z!qPYn#=FKjcDYiff371tK&QH|${M}ab)6dWv95_YevKf@hmoSm- z$(dq)0@aAe5udIGLRRj6FTOj3Eq*QN^ZIm*BbKG=m)o_Z#$TLg#;Ef4XWOEsI-62R z7qlU_S%|f#U%m#vtL2G%sx$`tn0Yxj-z%YnlmGi3C`b(?Q6Q+}7Qup(r^q&&rm6Jio^@X(4hIHC7b_`@Z|qZEL-eS3a{ zb4bEX`!^vLvV^;P6*HoL*#7|$-R=QnpT-qNL#4dWR`2*<2=DIB1?^Mem28aye^)Kc z2p+2|mSjo3U59_pXXm$z*g;;{N6;wUMRx7sUzn|XSDLO0*(n=wi&N>BC(pH0)541B zr2rN?;E-02YSthn3!I@W-ycvi%-%{1fJ9<69y&67G1SHfLsiOXd8cCKg1$e8Lq+Dt zS^8KP{C>qoEpH?j9U6*VnBae5N*DAk|F@U<9F=)Y$a5hme8c4XFh?-+kW2m(c1&JN z8N-xpfrK{xf_PXk`wV#ZCubJ;F;hZ$ZVwFF{hGM4glW#E%o(BtrLS<06KV%Y34Rg$jc# zML-!#UW|7#>svfApGWv#NmP;B9IVzJA)-D1@gHTKuXgK=?+3vUlVVis_10i}nTrhP zLg;482chki$VYPq=ljJ2Fm#i7rk@W=hp|P&+C=hH=Jhu*m)@M#%zntZD1)6X1v~wGa51TMMn@X`Cu&ZR}+G0IyROj zxNKW^)e4d-EZG>dihTt}r*ny>ha&J-?WE*_E}#OhZT0E)?P!>%zSTlB5ePJ!=-TsR zL3v;R9pt@_R=%2|G+{QHFQ}zWopO&+;W%T*sxcJE#(vDRJeizoNGk$lio*ZOpvbp{ zh;sJ_v6~NNptR=w4GWd-;(+7)Y8|nP9ZE2?(FUJKf!=2mgepHB>pe|7Ra~0_wVK-; zXlS6!bdw4mGRy||9u3+G_X%-6Rd-tTRO*-M)vJ|0j}xfO8t7YIjG%+=GuS~-O;)at zMzmy$i7ZRH*ULuyPIX3Q*y=~m`>x{Muj&^u7@$IVhi_?M|MxS1zoJ(QdX9Zle50QT zbPyScFgEHw#KsZ^*d&DL#`5ooM;R#$ny6xByHJ!~P;`kfnDLqU?-*PYyGcEYv$0+} z#2^ht7>jjK9!{`)(E=RPausq3d z9(0;IO@qVp>wZgiQLyZOTUMK}ydlOGKh6O(3^i7V1knyrr{%EsXN6oYWevWsN7jHm z>|hSB#urp)%p$bg@lE&51&Ammf3&JY@f8fLsk*yAsrJg+CHHy!(RqiF`Ohr*S0(fx zwMilQ4(_J?)9KiyI$vdRe#a~*5!dT4+;Der7(Pn^dom1OKkdqAtLQ38U(wDoMdk_q zz*1@v=it`mFTjEvdOu$=YPG`rXg|;gFh4`t5#DExU44uTvE2nlF6C zlM$Nr3WLYUiNnKhPw1pJO64dXI5VLSw{F>MqVhM%1jW_fpY~sqKe;K}n^r{;`E#M!|*qdGm!LU8h?DDKOd_u4M(x)znO2gdVhl)rJs4y3k>egx=Y z?>4D#3)O?vvg3)C1OAbU7tg!}f(1Tj9gM8wAa%=hkG>sQ63*`J39+r8l*U)#J*Fzz z0}g1aru}62zz8Mmo08@$#l}agA72J6Hz=As#sVuU{0oP7o?{A1riJf48c4=<)UuU+%^wLXM9lq)$(MyoB8i&_p(+RxXk##CgBtrFWA@4R)M z65#u~PV##))cqU3Y6(I2vjopz-vK<|3U|L~KgOwb$@rcSDP$sP*-KRE!-H%OhUV1> zAlPzV)!5Xfr%|6XQcnF}g2(fOP{Xuc;5j2|$$MY#O(k6doPChTVr}d*4yA zba>|=;=4k!;V!MG0Cv4lP5}HMWL&-ZWc;114H^elCtN2yraS~%iP%3^{9i}(e~rS;P=ppn7ZX-}#8e-mHeh(?U{Np&b)q z#2scC0lB<5KU6?nO(ai1;7^wa^2SWmldTk5#q48pZ_73CLgn!A?d6UVHe5P(2zZfL zkBB;(ExB`7wbc@0K4&+<(C72z(Py*6=l-yv%@T1#$l^5<$ofCDeRV*T-PSK42!aYo zDXmDCNH>B=gVG(+&CorBfOLbz0Md$nLpY?=-X*Hvgbe7_%&=N~9;+~i_iW&NC7oPMSOHHgVL%{7a;RE?H& zmIvLY5#}Ul7MuH=FGm;I=Ob*;ymyVzu?7pmSnUF{57wqkqFqY1+<3N=0d$x0-Vr>CH;U^45 zmaOIJCfhn{q%r_&!%Z?(RDRt=vjLEi6YEg(lff+8GgyA3Ed5IUA?<$(fTo9-RWIu``DQ2kLOZ{J4 z19pjC_ja@lSy87O+aN24S}>+;y=v*=Oh4c`6rK@1$kCD12B zGzXN%kqTmeR#N<$WbJi68d4#4L#8HceZ9u%kX-%nHn6zPPQv`|7>AqkG;gEctblF8 zq?@4_D$m$(Q%m~ZGUn16AD_40icA@`x&s_wuF_&meX z>pmc7VZSoJq+mTiWy_ZkNR%H$w$~pBp&Xv->%{f=!eLBo7vyNwj^#Y z>Jt~@e1E^A1l|`}7`|ePv{r_xO#mPeQu4mS^KvhK)9b(sUJ)Bn(F&-P*-{#fdei#l zx*&9048pFx6e)n_KSAlugu^rQZMI<}GY|c1LLGz(V30ZN6QBHoqGXe638`T5^3ciZ zh-_B&vj5J7Z{62LA}=K{|I}Qac>240`M{*R3wX z`wdvjrdQ-VAZKiKL`=dUtM5B>;V7Qw)?#(rq4SmDHn~rhv!BE+$@K*O;|Y4gyzprQ z7C?vh_?{e%?`>px;|cK%!?Zt{Gj=Lm1?(@J>q$X2t^O*@Md&wget;-`ROt&wBX zJ3-({n_z+4%cgb^?%JLxSU%%~cgT0k7hbmZ#<=W6 zi6Xu5eAw{aE^D3Ra@>>;M_63nP&UloC2Q@Gb(PC9M#AtrENl%X^F4vBir4BK)9J_l zC^@u8MMhIYh&>1mvQlP=WoZe3z7_1hCFHbq!xCw{^k9kPbG8=vVM3J4*(K-Ay>kkz zD~rB@1;CTig)SyKh9^s8mhDd;v5RG7tP(V|w){AaPApL$MJftGh8bIKH&8`n=;*~4 zAGo!J-|YwM*t<KHJaECQ{crBdyq%}nS zqA|0gNGL-p)uVoCzl{EFpZ~Zyd7D8qK47e-HsSFq{EWSAfrKO=&hYF?eg)i;i4(^k-Cu}z}xM0g2x|HtY9<|-&jyq1b= zOIlY!)N<=`DPEAcOizY0xiSu&spw#4?)9oUoWyOthf|uM^Fes{iHQ8!6iY!~+SG&P z9!v%c67+&WS-TD06jzW$f*fcK1;Y77bd(9)S^IC=KhxU?R<+Vvv|=C%Lar_bZiqmMcD zmW5S2U622f_fRt~v5kBv2NmJ8crE6Ef%bFzo8k2G9fBM!Imz^B&np*b6~y{PBo|70 zMBoC1PO?;hEh8u&XNm{-ZvX;nsXm1`B9ICSEY_c%j_2p*jvO>PnF5b7)&1&f%q#3G z2AXJ3FIJ<#W2KEaJM|pE5rn=+-_YI|P-8@8QGd%bQT)hzCfOGb<(+1y!LVU7G z^CXxPfVIJyq{Culq-adCujRNz@4$bx(wqc*pIR%T0mEoHGBTT!mm zjdUqueD7a|3yRKcpWQz=&CA4eBFWn>B)w04aVC#{^ME(L`o7|Nf*>>TOJhJvabj*SMx)QUQjx|qnwV~rS@FZ)CZ1B7yf+?|x+t0rq* zL`H*3Xal!*tU5c?2)ySqq$!qNtRzr6BWYPiPjs}CJ|>OY{5@U~#Ug9s%0$;pL(dbd z3r3Irs~X?y8#|Abs?{r}XB5D#TGflFWCoW_@{{^TCf&-%d1YS|$wFM524<4n>`wcb zY+5f5s#E*LsaWbHEUu&puARo|6lR{dd{~M}Pcr3vrMX1?5^I3q+XBCRM*umr(FarU z)pw48&^b(RXI*1r7!Mo;GC%Ra$;CrRP+O$K&C#G#)7KZlS+xkRVSI`GoXDq&(xig5*1YqEd zFsTu1@97+nX#tX;u$gQ)Ad~;n9DoG4bd)5P2y1v6+*HI{LgAve0iG zULN%_MfVX|Ve~h6^WnV;<=uBfj6Um*Odm=(%5Lv$MV{~J*iAzV;X!WiC)1i5JOq(7 zORPR;o&pW#WJD}lQF}rsw3#n4GSZ_@Nmyk{Zfdg!g>@Q-vKO<<)@2jYd_E1Ov+h^f zG!i6r(sYQX3j{j`n;IW)?6UB+g$Auhy9#V~Pd9phuYi1cW@?r>GqbVspc9Gk4fzFr86>o7|bDX&F1Y;jr zQ=QAHD5}tg+S#uz&4zzUVxh~fnIq+LqmuCTNF&>of@xShRZ_9^?c{vr_pu5ZOWsVp zxDMGUFXBPoBz(}N?!_p5;l{4{h$v*Pfxh#tV7Zi_Rd<1<>Z(ZL27oq56fs0LjrVyl z)bRQ3d2hj3Q6%Zl`|!EieG^?Gt8xq+2m|kV?R%kPyD!`4B0%5(jsv<+kut3%MW#09 zb6tiA44RE+-ez9?mo_f?4hLJPm*M>t292z5=?direN z(_KRmjQnIEp2s__4K8(@ryTy|IhIHH5W#h;J7RYB70mip4UgmJOu)0UgzgL13+sxJ z@&`c2mFuB(xdetc=BJv^)=#yZwt^2Tn9l?T>ul!(>o5lij6#q26rEPHC0}nnt}UY6 zZ>UEKTTFa=b+=Dv!J zrXca>t90R1jQ&8976 zIBGV@hvc)iUzptSr9(lpP3w$VT{j0rXBbYIBu-F=lU_?dPCBKS6^rKjB^RZJ4_(+H zjp7)UHmxG_0_=(}I&k+x1>Fwg;u*iL5Po*BS}7{X5GUic%VxAOVMzk`C_?B*Zk)y; z-6de>%aexoZt{5Mu+j%-M7EEKFg4a6BVN+CuzLvoDd zlQqu7CSn&fr6SGBs5NjFWrQjmA~$s$*SHOQd88HJ_6V}Itub+YdNOdcM!_40ECV1a zjrRxooAYbjL|EUFQ04{-UX9gNR$Cm6aqoN#%B)O2uwS>DQX0Cj$lx_>J%FDL=M}dc zVPF_O-4Uk}OuMRHtHmYzsm*kKZ)>4|*N(;7WQHCmzx&CNCt>vY{d0(d`I$c9&Rm+^ zqsArt=&PXkcR$yeg9%usI}a53J+I!MX8Uxbd1qg+#}3<$F5QDP8V}wsYDi#^GMq1g z>4|cp`?Oyuo;{SJyXS%G5jn8JPwYW()KQ+=t&rrsLrTUyqhrgSCt{cyi6h=COWxXVeK@OXVUz;76sgFuPr~;~gv05ovM;I7p__ z1pOR^Es4P^4=hQPHwSc5l+dD$J2wqsl-k1Ql1u0FK`)Z3;vT)3*PlTHBRNm_vrgK!^PK3XVy}DU5&8o8o(74hu8dW;II=oG}#voscua@4$jOmFmzKg z@ZWyUX(vExC}4H^bfBRP#Xg(MyPdvl_lzU@jQD1bqknMM9>DrN>@Z{|00b#$H7#C; z<>VKWS3jdTS-(;Z4Epc}S9J74f=|?BbYx!ZHdi$JhYCs}7QJ9>jY8?>yHt5hE&dd( zH^h|XkXy|%tEt7B{5Oa`}o)6ZXbH)FGybGK~xuo?Tyi5CPcP=(XpD4LUH>vL)WV& zVS6+K9Hx=++**}a)q=9nWs>N(}Cc7>il9~~z9gz0}Ior#rUvW4Tl>U9=zAvbRRBK>UKL*fMy zvcwc4tQc7hLh}^ulYjC%g;d(NORA_ZpNGBS#79L#g5bsH@;5|(*9ZDl(Z3eq7dsQ} zl>JTa(@$QC;SfZP&n4fS2qtkC$MZh0{1gX0rqODQLIP|7eEW|p+K&80AsFKbv;x@~bTJPP2g`eZ6Ys4ibw#ZiVbQNPg`rxag zbccY9U~s7}{fU$qZ6Hc=V7*n>DM>~nQ3^Bs*?_mM;o2}pP!P_FeP>F$a#lbqMg{>s zI~+BX9+MNI0*?r}i=;tQw3Pn(bwPPcDK`OwAkXJ(B*t2_auqqgZ=LRAbINR&F8z}p zPV4k{pAE(U0kT4E^*!W$_M^E`l;|xz;7JLlkYnwlr-iQuIUmxjG6mzcJ=N(0=a+f6 z)D5gFNY;{nmPl=&6Ap=Yc*0|;q%4JNn5rVVg7w@l$$XCCYBk?7m9AT=%bxT`GD!r@ zRvzZrHY;NMGH;N4cb_1g14V>}(}z9pyCcI`5=UxFM=rCa1r=)glf?JKW}iaHvx8^a zU0?2;h2Y#7lQYy06OpJsjv#8i>s?IFJ`#55;u~whRgwjW`#rzNCjHqU!buZIEHV}q z9>?1dO977^o<z5b^j)3e)v?`S5+C^k-#5!*+)vz>$|1rx4Js_pQ5UW zjriT&f(++G(K_2@UwLLARvSl++wlXzwB$Fn23|^fO{#NsDT3J`Ckxx7My)b#2sM_; z?l|843;n&4qMnYelzDU3e2Qv7XBLP2inEn>hsD;b%qUO4UvY^eC{=I8DL5ArWzfQo z8z<_b{x`L$3Ot8~j8{y@Zw}lvc`)iMuG1U+qVw$aC3kfks_>ooKDhxK02%xZ3UX-F z&*)^55!6w~Z`ae!fmEK~xb>V@F&sO4Yo2j#5Nc??1g^As?W7{lgz;W6nQ;@{Nip{r zBZ1<@T%Z(u{GrW0{q$_7cFVrb*dmP6(D4*IRPhN}@rl3b9kVPO1 z5X9JCpp=|ar@JnmwNft7f4PJLGTYWNEPyQwZyfs{uMUzOQ()oV8BZ~8$_Ts>G!GWM z2FZXQfIB_~@plkB!W~jNeDMn2Y*gdAC?G;>TAqHMnBEdOEK>4Jcs{S10k{GIMr6h` zr;JSeIO)!(+J;2uGeS!GxFZM!ABqNKT!_DK}*5BM#n3s`2OY5t%LvZE{iw*An4Tb z#I0YZ|CtdvP$h~y_TI;npVv;a0RA<8nI{{OdVK~F&JGy--mlm)9R^6V*|2^a3OiOI~MM)Kprc*s(lkeu6+k!iW^4V6@D@J?Y;*3T_BbP)d>~L`706rv-kILdvP8Z^zh*d zO&uFQlNR(&(=&ZyTK<9|1(K3;>OR)D+_BKn4(+`6c9tQ@Yh22Z9JumI2c#Cpj3!VX z&77X98Sr9cBVxSBxk!1UbTg{7ebfIa*;6tkHGI_6)kU* z4LoI%l5H1L<#T%B89l5YD4myL7-&zHe@H>JxgUr!l)Cz!hT2epQd8gQH3=sV-G1gb zY@giKI1|EkuaEl=$=m;$3Uds}%|W7tEtUA8~pom`!1_pRrQ?<_-#(a{D!=84mWGG(M8Ux15} zQAAy{a_F19d*7DtAP$vt@7|7p_Alr9U-K+>=|(vLXC%DhCbeT&yR1s{FXTtNY+9-K zwB&~F3$FBk7BF35#JN`p*v6A_j0guWYxs&B==0_=Ry548rQUbZ7W=yL2rxeG)eFye%^TOe%*?QvivGN$0hDJ(86`RpLUFC=BzL zY`f&OV=I~GO09*EGdR%i5+9M09knA7PE`2zLbg61&WF*x+7S#6ATidp==JXfi=>q_ z7^VMM7kfP9y{Ky|YS zWq%^SKapv)YI8smx;_Kz95Kj&2y=<-dD&1SabuiAe!+}fM5uYt?@F9J2I;M*3KfwR z3i-$sX3g=Dq&Lc^!`*K6w2#psL_@Y}zNKxy26ej@&UXQ{DKsIC>S&T5i^0aCrMy3U zv#QNjLhZ*ncfUA@}83C2|rVheZDuIdlzh=EZ9$)20NvoMG5rqsG31mKbrWfwK zgja|@$y$%kpwh%OS*8;ro5&(_M#A%B-P05i7VmR@tP-=g>=#ufKd&C0%T#oUapG%jR(8zPpNo9*n; zK~Sjgzy2k91Ke31gez@e14VV`v?*{$|EH&o|DuX{Eqk1|vAp^_)Z6gf7 z^x8jO^fE86_*AMKtt^!J4;7ccK;#i9R?gtJp)hs9id>Zb?o9rsrvCr@7n~Q*u)0$A zf4*S`w9p7YCcl@CyB16Tgxi1Ey8N~84AE6l-|Zetx~u`xKIccV_)q@x z=l|Ug{{0yhbdfiQilXEz{flw`uaEwZ|4C@`Ly_KHrlI*uBh!GqnE;3)pZSlC{%Z*S z(=`k}sHibx?NaZg|3bI90RBmlrgzob?BT0N;OP2Z_Rm)$+Jx((`s6C+Y@sP<$-SLD z1J&ae`pP&Eqrr1pEUvP%$L|Y+c58sX&%-B{)*9q&}b=8QuurT zLa@DbcUUC<$>|O>h=#qY-f;9(^P7c?{4l!2($jkCwZy7;SI8pI<@{F(@)o&}nFi~U zs(W?+mudP>Hu@(t(6YUcLya+CN+ok^eZ`qU&QUORt?c*G$JYxn!Dra_7;umQGF}#e zSeN-c`U8;vG?LKwWV3S7sKI6dR6x?#t?x>FN*_pLC*>+>6KzDG>KRkLiQ!n&z z^xt>(@A&-n;e8((E&ku^rF-$c#@+q;Kp?};=!{t%BjstxCFCiIuW#!w%XAVP{H2b| zie+`&qjtkhdzSn-^$89!tNp7eLLrYmVGIm`b((n!<3e>3W;mN=ZQ zus0_2%ptW8yf4Pq=p?&v0*{D8kwZ<$ToU15B5!}iCQ|Mt6Y-P!FO95BmWRZv!Hjm6 z;TC}S&rhQLWVvFpq&lQI;=kWzEIbAbe@|RL`Lx=XitR??LWtoOGOjg*4F!-d|Tz7ovZ5TYm;(ViMRBIw%`)f(6}YM}yWs8q3v}Ee9S&1#j?Jl@6n<- zUVTde^qp~%T18ne*pqst2L7dSu)y*cK#oIt8y_3R#I?qVw3D>chrfi63)YdUa>158 zf6Geb`qFfmKRmC5Y^?E=nQY3#K;WO&iGM#B{L)q$Ok1u#sBXKZmUvDv84w(xd730)t^Y#!r-61%+CQve$a#%sV z={5=>Cq$kXW1WRx)-o^f$WQ2IYT?%uPmIovO^@9=?E$-l`M_%IU()c%|Mmbg5cyv% zBdG5$UK!H4zj~>R@>Mg1+sic<{NqE;`l=Kq`2Lf}{O)4pJ{$O>CDUd-Y#-{w&??&R z%yfMg6*%k`uHlIl=AC?3OT2t+*HhERA&~lk>Ey9@p!;HXTqd53L$&I?aa%7@l$jG; z#(rF%5E#cR@RY~banD_&3*kl{Wjy2f4ICNT5?yx<0mGXQ+w2nyk^^2aV#SH{Q97BV z`)pa3ECl1IW66IxHd?suYwr$cZ_`aMIhes+3%~*5c^%v}@?E8m8|OUoA{4Ip%9J*( z)(19GN4R^O!<($yI_4CdWSvxGl~z*BGouBMTG-!3xL2RwH-CGfw^t@DFXZh?eW+>%HCO&-?Zb z{AS=3mAm(WcGI)i)JPxXR7-a`#jR5@kwTTZGRKd zmI_&^?8_MTJ!)9LbeT4yvGq6^+pKi|8J3r=U2j9os>5ZS%UR?*lM%A#Lr(iA7o@+9 zNg)pq2nZd z@iemZo67UwEbT0#$lPqz<`t~%xzY2L5HB;l4toNaRj^EEt2Qgoh6M>HcrQRyivs+V z-X7{nt0kDFWXm^eFl&m?ZKJa0Ji52P;Q}lY&@2<9KCVV9yzYorQ4|q*JOj+kKHHmf zS(MIf^Kpx+0J%B}K_{wDz`#ZP^#P1G%2_XKeJ1UFpS610s@H(>^`YmS;GQAios@ir zP#!~1+sz?`Ip`#DChI25tr%DIVC8x}^Ntd1QqF9!HJC!iYraQC4!216fEA^T3}(j5!)FT*0qg^6a)a|+bi z>fa>@%qq4o+<&~l?#K+>5P0@_BgJB=MJu6SminrVkJ--4?wy@`Vw;z<RD~ z)4E-IC`3-_Zi6aWkZjkuM{F zS`@nKw*DnYglc-x!Kn^(O7DF>ntKgpulOwDQx|EU;q)%ob+36s24!PcDG>WYI0bgV zK2#}kj~d)A$oq?43ijaUvuW?Ds^HPM`3iUpZb$<5eD~kc;eIgHih1A*ziNd-*LPt# zu1AEz&1K$s@mgm|y%m@Wk$EXP;*>-Z)Qz_bCooc_N?&~+pl^q8k^3;& z`itNe%Ggd3FPlX+HsKmG z>WyrK8i?>zXZOiqxNtAZ_{Z8CIM_KKj`7>ILdxN$MbQ(}v*sB|71sS^><_&d+3uhf z#?UI$#HUj_6*}pOfH_fue9NiQJ(7KuR~uK;cXYu*Pa>><>(cZNVmnROWd^tBJr}Fw@XZIUTZ4?Kz7N>&Qr-=e+@cajZV~mk4e9wzXxvJ z$lQNXpDCD8V*lfaIOU}x)ZF|o+qBXFpk=rvO0(TlG#wQk;#=cUWAovHJvlgCqUZ|L zyxe$`NoH>+>L#Rdl=f!`&)=^Rv&Cvb++hNy7q5u864mbt+29;2D>OL6RHqiJ7ma~M zktv*J#HHwQFj784#LlF3^@63ssTcHg6ENh$tA-7%v7P5pGWK43smAj`DT4!0dys zZ7O@VPFjz=nVZU+4@s+?Ax(C5Wnm?ygDHCLM_%>1>nW-hE3MJQYK2-}ZgPO~fh4Ji zFmS054B+J&g@{N`zRm6L=rZrCycO7v)~FxN_NdlOwLI?maJDvCiSsdeXu8N5){T^@ zxg9E1T^=FY%|ob;^;2!iA)(v?uT-8Dfmc(k$7-0Fhn(Fd^fNc+-V0A=1D7|QwvV2z zgFTdd1tz66*KGt@*S>qcia@p1)#Fd-Dwrja} zdLJ`IAmKbWvSt`rX_RS{M?N*L@&|QEDdu^i4?#M;b~?3@G;aIkKAv@qo_cy3TZe9k zciXT5$ad8Bp3m<^W;7}MNrI8b94DLW@7>j$50*{miV8x&)$f_}(^JDo#dJp*4FFwmp66 zTZSpt3)F=NUCdFsGuCK?Ir*%D8lh?;%7!^|H^hK*N@j8Dp9h!QW)lo3aq2mIF70f9 z@f_x)@6gFbm9_FCJMGZh`YWY@X;2-a37|yx@U_=namDL6`&?pPNA`z6D zHetF-Jjk*-skEV*$^1#$GoI$Z6ZsXpFTA?Cza3 zE|LNZh)kl|t#n1;v9Kkt=F5{`TOuYg={k6K((6lZHQ6*nx^drW+Ujxae zYU~yT>Sps-)$Z9VA^{ASmFDudZ~+8wm@RX<=L?Os+AnT4dW5GGtDi;H{gKNg3I%T>0By30ork|L%AH#D}acw0OG2R%1~4ocEc6 zweyKzU^EL~1s!vMs!j99WsFBW{-DIN>kk<#mxA{bmsw}pHZPmka|xnZ3kM*jF3f%` zy1KWo85=_@9xdnbOn0QHJ##d@Dw~rGap_n8#AkIyRN|kz?$-9cPFDI5Ufia%w@f=` z^|&Y^t&WeBK-h5cz_sY^Z@Ue>2PQisMx%J5pDIk@%3oew z{bJ^T)n$<|)Z`Yb#%-puwpcX2#@Cj;aqh=J)2r*Mcu&GlqGKNPknvx{o#pr>?WSOp ztzz`*h>}4NajNp`Yvp_NNnVus=IS&*BV9)0sxog*{S$NxAe>-nDA8NTi$@oFR$vJU z{+;AMVZ6U@c(PnEwgwq*FmF``^qLY{`}CTH)$EYwt6elGs;_T3NZdMjUxM?AMZcw? zf0sqO;ak7)BcCjm=OZIDqX<%*g}a3aZ!)PvePT4}#2d(nh;kNn;`!R$F~?c;Jo8PC zX}HKQdLb$#yZDT=uIbS*p5h>N<1VLg2j( z7+PH$Uqq%wxLB#mWsG;{Dkb5YWWqU8$w|iG`I-ymuHa5Hx`67BsLCyuaRw zr;SC!SpHe6dg5t@5w5EIe)Uu99$Vt&F5cAj{-lOfH-VCnP7w%sY*Xw5?u20<`Frxr z?z)bh_hS#Wpr>~UL`LDN(CcJW863Pt?U9tdb^JGHEIm)rmebV zGZ;#vu?r6t;{Ro5y)JB^J3DMUS5|`T;=^qCO(23-&^P13vl=_C3ki@l^({4gM{aRF z4G4Rslc?_YBM~uB`Z!KU>!pT<)iTYy7A-C~2h!P84)N%4|8T%G>*O`u1|Nzy;2 zI)$b4mD=}Nfd?prsH;1>rpRhTW2usYq&;1&i9&#NDu)Sia7FeT(aV|f#NMP%D#61B zpF9|>Sh^!rM0kFq`39oF6A@odnYjpbIS6onMKHp@RvmPeuhP5)J#$)(@|FyW3<@7m zU)|L`Y{D)eI&ftnv5@_mp>nma?9j5Nh<(3o{wvE!Y(_|k?*#LqkEPiHkMp}0-Xfcx zI6_j-)y2k>b8!9Vy0U?-50yhrOYD=|U(2`4e10qT0K?x|^a_8uvH+P43_r7=3$Q1yckM(@gZyfX2FAip6bsQgD~>y7@c#ewpHNurx2o7<}GMpL@! zlUDX}gM%8Y{VB^umbMnRk=8m_eJlM zf3tTDil)z`Bn7rW?Ky1c`Y_Vt=@i&z>_3CFas6x>jkZkBG)O-(T`ZfsmR~H}=26-M zea+hJmgOy0daHSck2DtC0UIsXdq?ypB?w+mNr&8~@6ynHH)Lk;?kbJd7+NqJ;A-37 z`Ct>w90cjTu0r6pPY6?jOZ(%{1a_Tvg;mzZ;ypL`y%KR8fBASiMFVm&H&z_m4MlJF z>o7c-IVENfXV!XIsl)V-%a&?!x-z%zX<87|w83Kb5*=m3&AD;juzjjKK09}l9`^Q- z*Qm+CSbki++eR*ndQ!i!Vp5Mdpm|-+vy#2gyxWzVCZLm#pwIN=`4wo?rckxwtOYR- zy+%|4_nH}#O&duTMI{S=hEe~tU3qgu@{Qt~0b<4rytrQ8d=x!@M4q5^VeH#+61-4! z!FzpUQ>7>|T%do$7Szb5T_x1tehi$j0~K>$FQ`MZy&a54!cA9Wt=Qq`hVxTH)ziuL zIds#L+x(FiNPPx~PB(7UUPeLFQJ&Vx-b~e`bKPQtLIUnS+;e1tp?*Z_vMB`_`f|Zd zq#e3{xbS>gf9}V|n^V)R7E>ssCRW{P)_C6)+Jv~7&V^fXK>H_Wq`?;DgQ*5}$_nM> zp&3Yn#O;mvrZ~%9E@1rT4qONxXK`Z3nmerxz}@di$s`ZLO)p z5-QkEKJZ%p%JXqTF>Q!ZI|a7Eb;b2cF3NW#;T_aizFdfaU(S6SoiVr+bp;Psnnn*Y z31lW6!699Pw|bT1Rg%>W*E5eCL)Jp^oz^~;^!D6i2ZwDhr;yY?2H}U?IoimBYF~OO zdQ$o#U-gBajlWxF?e`VIMA)nA0+uHltTkuZYck1oh{ZhI);ebpYaD=qYR#o@~i*?5IhT0?BaVQK2(^*Xpgr91^7QBNcdewc^dJAn8f9Q)2~>Tx{lr zex>nmo?P$M-2TdW44antDE!KKOx0ROS(ZQ2vjeuVe2>*Hw_mJUc!I0;@KCPVElM!c z;A9LTmB|w7#>swZU;QDCY1mF^(z0#)b-ZA(yUNfjdpLkGk238&S-KtIlZ1&$$Sg8D_fiK z1y#GWHq}SjQ_iuL1KoR=UT|))MH(z}=6xKWz2zzE&!{C7K*m`K-xd{@WhlO0_}*E_bMl7N#Gkrs@&*fO zyV^lvVe>%fJZtP6lYz29krM41*>*a9GW;}5Q{S#95qh@WXTWKP``DLjSYVyG65)HR zAzSObJ9d3_54Ugm4xlp#609GCG9v5z?bC^d#&A|HH1}S1e5+Dp*aP^wOsPo>S1Jq; z)!QOttS9Y*Ryd808+IVav`J*DX;xq~&nFztkJ~0B*bbVv_&~4puKZ#SVQ0gBqd_t; z>$=VZSkPxidnU7&+A;p|5?)1{S{i!u+wR0$jpmj{)SRe#bLW$uAh{eDKb&%IPJz;RzIR@ z>_u7ZsPbFfX@n1BSmdl`#;RlqBe0#j8oTGHyzO~XA`U%a`uicpCOW;eIR*n|sv>sN zpzljw5d3KaCy(>pYFpa4B9(%k3by9g!@@_+CsXrB>H--h*GB_g>*v*NMD6V-N|Iev zt@S%Z)A}x2=iqa-<-FNb`67rSJ<^$A>Yd(ManEb2qjLuJ#B$MUe&v!Gs z4G^BzdG9bE&hWY}d4$MbSgT0FwB(rWy}68K&X=-WY~mk8=f?E)_m9bEn3$QlL|^W6 zRlJstoBJYSZrQ?XY1AU>@uB7ii(Z2Gb28J68`jr8M9fD@T7(3m`sozlxV!=5@eA!f zBzG(4Ay+O1aTk?j*x&QvK8lq2|V!2t)y%=-=4(wJLdIoNg-N9QHx*Ftz6@vRBd2jiHZ@1egUwb2&!%3vm@Q;?Xwhy)2lUE%A zIDWaI=^R{6Zd@ZmLcnZ^(DG5fG2O9r!auA7f07`4D@J4d zegd)w(jWzAt^Z}k%a(wNddbdcj@S8NtK>n;_~T0R_Qh+E!Zm z@KPX&0nC6!ujwTWQmJ!LyL}jo#+#>&>}?#K&+7Jcc)`*a0vzH=7LaQ3`~4cbB#>ND z6u99}cJx2ju`B>qu2`Sny{jQ#(!S5rZ6ETpq_Dknm5do(C{bpSWpdZ6ql@bW^-6Xu zbdr53TQOV8%X!F|o0OrlJg|KH*NUs2qwjfR#4P0gs+E(!cK;xRP+Zr3U{ql{ zFG=bpK~zG^mEaAzxaq67DsAnp`JKXt|D76BP|ng z*1s*^{a2evu3WL!`(nsa14`cXSw3-UMtE#*>i=TzEraUXnyq0V5Zo;Z9w0b`5Zv9} zg9Qlg?rb1If;++8Ex2w7PH=a3ch`6Ec-=bZo|ALGAK#CsiXW?}+Iz3HX7}jPqr2zq zEcz9=`Pb6FQb=1EMc#EVeF@^JG1{xLXz)vNs`AMFzqRCDLWm_;15J4wcCMYrZVo0} z*Qz_bAygs#Jw!3aN`K`>k;#VABsHI?=9Fg?i_LZ#)lJETuX%NSt_M^E zcd~htfBo*gtAx{lXl>T3B;iVkOb8*)LFH_-4yZc}o+XNRCf#RGtyHf3vsF&BZ2EkY zQ@OIYuG_K{zqRy#^yA*+=uhqRDx0nKjT`Yb8=YDVeZdr>efd$AC{tyE_&^MsQa#F) zac7oD%ZK|%&-#o~j#WQe+H&E|ANQt4=kSR?=d)G9%w-4_)k(&b zZDuqIQH2pN^w_Hr^k;L9Lz%`Fwe`4q^KT&e^D!p6o=+T>uV=L%=t1>s=H*>@)l9r_ zYb+o9=xigETt{X&pz{h5w^Xe?OS;f-xXvO-tr^(VDodkq%C>D{*eJ>&!>Y7;xXj}8 zq<{J^-N5@--XfR~Chs$zOZ@q}{`WHF89?^xjlIj;_yYs{?eDIlBZg3z&6xQEF8SLQ zKUNNO!P9*<4gHl2>Yw)^Hwy(tTt!#F{foH#x5wn8Lxl7C??eB}lK&r9nyj~rGGUO=V5xQS8TLXr1k}e z<$^E}acO%lh8tZfrmWkL^;Sbz190d*jEOfpj2rjXo2oVZ3)u?agg?Bl+s?r=cvN6_ zIjQ{i?tJwduNA-h)$-b2F3=}AT&90(yx62wX*S6+Q)z-(tWguFwAfhZJFg-=JN>Wk z`Gbq^EO4|M)wHp+>aT)u=t6xFaXTAbPW2DwT!3cKIdc!oP>b1O%=yVf96a;y+L?%+ zYa7H6kx@s||L{FZbZ;!^Y2!@f^3-Ual!u?ez(%ktEJ!CmDJtHXtf`Z~Q)v6wtN6o< zY?^QZBCUG+z>;0ZuQJIT(Fc5HY(P2al>mFlKX73P4QiVqX}a0o5-0xCNyaxOBg;4O zT)Z2DI^ojP4BCxkQF7WCy|D~o-FG^Fp07xYq^S#?8ukPIr?JBY%Du*;IntFD4KkHh zi!2=W#;Ma*U=?{d;MB>Q(NBMO6z?i^;(Ouu9`z0yP8KOSb-yrhAq<^>o3AMRPw@Js zKqDsrARW0q6O!*=!bvG$$mv@k$6ta;cz8Ik=%N0%e<6F|^WtL!=9KiPcYXzB{$;u3 zWI$jMU~QB8OP}t5hUN>*&-+VQ6CDmjCHQ$H!9QLe&N=}SM5G|&PG3v|V!9KHTJS>%+krqOnxsc2JCk)YHF};&vEhm2!JNS7HSPt)fWm%Ue=^<0qk- zd(@@tk5Z&m>hmkM`f(qZ^1<(MhWGFdYuigE!_JpRsTyw&%}SffXCS&;p24=e&ewNT zhVc&Q#I@o-HKE;kUWefN-BUC@gjmIt1}-;%(ZJAr2vVBIowdrg!e>ZUo9S~uH2XD7ve9Pm4*e#ABKb$SMO=9v!ehL_Ela-qT?)~e{9(Q zzR!gEr~MmTphTK#b|AxrMyqz~ZD#T*jCg4>Kg{!}Oq8rNHv-xeV&auu+<{4`<0I0rj$P7)fSN^5iUrThd9_Ak8}q91*y#&Y?oS{0 zz>_J;+Po_vtom0pr5j;2R+IFh*CX=R_pA%*dzk`+iY-rVF3IVz#>fgLFJc)zZ|>ZZR%U zfVAeop`%RSA(r~Fl`mK$1RIX)&)!GPPyQG+TRCu zqgeRKg`3Rb*h9#>-M+e-1_`S&ZF&97;e0OkFtdK&$e)KuF-MAujeNeBToR{ibP%b3 zGS?<&v-Z%)@#p0DC;iUg_~Yi~HYOg@)%iY(s?j>T+&%88Dyv0cXGVX6)Wn^cSFE1y zjW;v9)4PhCQSUA*yPnT8S(xL)?g8_>qo7h?v~y=}Hi_M?{BmdCX(8my#c8d3YbagN z9K0S|X0YKTRIdYOS!}E)`4k2|znDF~1kFVzx52Jq-l3uW$LHtm1j0V3{|F;%GIUom3@)J6Mysw< z1|*ui(%RE?%+MemZCjhCfvpZfAd*dXGI*Zvx_cntH(n0lO+&PhH#fdNXxvT7+i}cZ zYPYDllSnB|J9VP$U_0`pme%^QeOgJ%tSM))^;_=6ngvhMCYF2J zVE5hgTDKvv%`mEGQmHJS4)1R8-W?)!;k5YR#pC@J#qm!HrUEV+7{*9N1Ro_@L|nSS zUXY!Erqg{$JYP>_p#SMDo<*fD*Vzwn*>q0g#;z^iAc_Zllgoo|gaE&CjKhRF1psBf zKvjIOr1C_(eq(iebkzs3IS#C&d|$LNvtR`@A05scq*U2>lvpf=i1J-!?r9?vHm+P= z0a`0%VdXC=VBxrVH>s_IspS{ucLzJWE77AerSI+{3=_2Z7;ql)WJthk&67N^CGYPd zW@`5@I9IzF2vjqF2)TOSC2oQ^c^YoDrx}$m1zbKLuQehzDWVCy;MHxV_T?=|)K~5j z345uSS%=lYQ=B7bqa1>zBF?a)s_e>duQC#aC9aJ}l}##s++~Okrt~=LGxoTN&va z37QrpuCr5{&go4RyazFhY@?MF{!8U)b1m)~Wk$#HD{^#*1>{n?% zHIznmB}3wu*L~%u)pFLp(F@6|iry!Mro;W;-uURv@mL^6$OHa>}N9k&8p z@&p*O#fOsR=6;WPM}t(E9gzxJm}H_MK{m&adMoiOd9SxCrZJ$wvM#!EdfIH4nw{xg z6l}?+aIrU??;oll!~nf!>=#oWHB&CR1ep%IDlpQa&a3@bqdE^Na;oDp2pD7bFkw$| zA;oiJx*&nN?nat*nrws`4!f5$3|psvH8bpuaDCXiWN$3p>Nf@g7_q52AueyZeHUV3FD0&i3Gj zvT;@KfrTA8VUVax+^wh5VY}!#50!>iQD!fxrgWwUSO@Q29S!{AnT!l{GD@8v*o{(O z?v~7Er_}?A!Sy|`M*?GtYyI2GlP&$Qt{7F#SYC>n<90>aO_tL|SiC>QQ}#!Y0VfrowVt7G zq(${K$L-y`)8n(_$>v8UGnI!K`S^#xn0i;spmSxd`T5H^jqRfr*kb2_5pO}%moKcq zS}z9bZd3S$pYhcBjYu$6Ohd(vAD$4Ru-QGC?fg_mk)brwIOlH<$;%7~n@$kykuq^$+VQ$FTspI^(Y6rSM zQ9>!vNqdydNWM;py(jhd%j@;*xUS@ydnV9;-JmK;qx)k6ZYLFm2Rmn&z1|JGcr&cF z`*t&<$w<~+m5IJ|DT8sJOeR|QJ?m@MDaZIUIm2a&Uz7Iv1hnXPhP~|%MXC|iSAeH!@=R>7&L@8+h9KGz( zOAx__oWkS!s`g=KaeeTo1uzQwz;<6`XWKA+7^maT<7zcbqvQ0?aC+xCBj)G!I{lw} z0kn8i5E9_;&(<*H$rkFKP3K$jYt69l2A6iM$K97J+|#Gdlk&V^ElGQrDJ<=4O4627 zw=|mRBI;6^Jy0t#?AZ86Tve0%8sT`a{Ar z^HwCWW2J+p6|#<{v|*!w?YbS)w&D5^k^WBm?mo3o6wfjO%d0D%Hm(+f3obIx4FsE&->braERk_6y5UqKDeI5Vou5 zlkMk*Oh|O;DER9i|;R0{0!YC1;Ek=ztzrAxXJ+RIq?uFG~pyPPF6JKWmFy2;r z+MMj~82`Mne8hN=_i$I*7CXGW+=)bV-$BOm{F+VWd@M?l^K@>P{k-U>B} z$%oz28g0Pmnd9{k0+sp(lTObo0$J*IOJdqyWs2hJoTs}#OXhGW!g>(vVx9Xgy4R?< zZrwQ|^*x<224LD9$6bVqCf&fS>Ipf_^AykOx6TnNyKJ96u78xh-YuBXR=*<<^fX;oPGE_-Fz4EDJA-Fv|vadpS6B#2xx7Hdqksv>7nb-d(e z1bYh9{9v;Tv#IiGiFtA!3zhp$E!!3Q=`{{rLHi-&rKsy#JFnu^q635RY48YF$@9=w zuH3TIOe%v*^`v~nG)qolu)jC-TI2yG{Tkw=1(ryu-VT{20A&5kO_pE4hnE@Yo^MoG3EiK9Wjh!915Mr`8y6+me0 zB&RcZQ4xgjF$0sy5-t8yll5?BxRFT0CX_dh{%i@U1_x)GF@X={W!|&dsV!I6HNI zZt%3#*MKH%ZRXW&OYNND*=~)fCuhy^E=@_Wmg77rCUhN7j!a@~A^i1j< zzT?)943hA|k|ut*thK`w$X{uZ+)+(4xObd<3l5>ffY=_^|IADXwAAV&%&0Xw+w4^h zdc!!3?^l{mlU)^(b`#E8HdyFS4qk*{opi@6mo_GN=<*bgMfL#GNPPr7Akg)d{^@LC z1LKo~(oMhFkyP?z(XH?3IqH>fn9>lKIKnPsX!4 zTm*XY^l#wHg+c&Tvtpzlj!QKVcZfXP#j;}fI2?AAF_39CFJ<1U)F+ z8zx#La5jz{Vr{%kRR5agE2{#lR4}uD!rO+MbQw~6AKLJ=c^J%OmeEe6j`piK zt>Z+gAM4-ydLI@8_ixQrtz~A^M|WwM^D>6vve3k+sm|n^)`0B+dWkCjS&;uz4nK4T zogf6Y{28@VwZ3A0Qm0vAzCZ;Sb#qi^pkf2fm+a!~v92crVZ96}_G=G-+`BPtR^Ypg z)Ki>K@}W|IZDFXNk|h|2!g{8)uN13hMk$yTMuYUVXECZeG*ec2$v|*cHQ@PtaO5hEn055m`-Jtc(ZOiT9*VQI>390yZ*$PZg?F#&t3q+TOQqA^f5jN*B zszSFH`=^`5+vnGQ=Ic1Z@Q)bzM0JBFTWsGFjeWdDF zUTHP6Xt|$7=mb=j3tgXdXNDO$<;o=Dl!AFO?$WPLj=Qk;N_Pg3S??KT*tTh6T8Rp0 zWIR%J@BsS>zCHkiIeS+G*15afW|f<}-HBP6j^oSY^nj}=Zh zOY)jpFL>0xe}ohe2#3A|rhXc#)zakxape(QX!* z?kYH)3>_<`&57X`U4WB{Zor3q2cdI^gsTYm3eRDo*zfMP#G3}%iHlS-}``LPd8uTv)>8cJ9Z)mE03 z+;Blj$jHUbO$TGUaa6Ha$mu;W0`Bo1}=1G;E3t+Wv+u(f3p z-amw^(CbLuI$C4`M`Vg^I(ovi{}F$z`))fE`O~k!MNoBJYo7 zYRMRCeiz?M0r{sB!!~r zZ`ql0r|(Zs&zaw+mr61;EIgL`W@&W%ph~po{Hs5N;v=b<=2n4t4kiBFnKj zA*YDb@jzq}>XSE=Te4b>XQqj#$EV~OW-94~F@-Z=RA~DU@42WJhvB#UTI=BkgI`j)oUGNWWo$DU0_tBF@^SU+sb~HZz%GWO zfRoY60|Qezt`24ztpj^o6w7u5n_o6z!SjtSK>~t;=fhUC_==mwq|ewK@1V6B?We=5 z6#X5QYGmjdK*&3j%+Z|gYm{1bJ62x@W0+uLJe#A*iw=TcF~#~J;ptwP=Pfwgm8uI% zp6`w`xDem|cUl-|P1bf& zC}=*2zxqe)i7AHP?0@NMzp$V^R%D|8q0%}3{TzTLigl<33defFU%4UYYHgxW2-pR} zhm!Drh@JTqjIHk3zTUTH~JRZuhpP!9v?jF?XMAzKV2CO zrVNh<8BtlxyjPh1hH!Olz^X)m_Cm}zC?!P84Np*4d8GFkauMeEj}tnTuM!@msVkvin>k)%^m9m>cx)0Y4LW z#CSPh+w@Qxj|=my8>B0ykB+Kb{+b3O;0_lwI*N^Bmm6J_u)a z24@1%Rnd@vK{%^J59^`N{%|J#=J6phGMQJE*L^Zb?R$DvgVUixq9eiA>-B*c$)s5- zY(_-4M&04@#%ZQJ$KqEK5!5j>)IP6q-19nDLMKwIa)Elp$St`fW$H2@0gZfyMcqod z3jV%Hj00Nhk4kj3SS-SFyME`xV?L4;NhU7P5!fV3E{R3KP%72lN=e`AQ@Z|GqLldE zJP6nAo*h6ZN#CijPSCH$O6j<|$jER!@-AF*tE1^OaF_$={<^Dr{ooW>N=EZKD%)E; zRQ=Gbi^=WsI*8L*;ksnrEt=OT)TQgf!lbi^yA~QkPy?D&5vEk;MExXE;!d4hu7Q2t=jiy|H-ZV+Had7-V7}113ekUy84!&t8s#!$Le>-S$8bOykCbm8XUH>oTURSNmD&d7i2F+6mISnhKo~xHJ2n}G5`1> zYy!_W>#Ya1L@|2f_|f zq72*R>3Q}vQ_jeo`e?qubvX(VR!Tegk1@P7N+v z$!zA`i|-A`-U<>;7YbGvseh%os!)Ay6hZ-pbX`D^EfyhA;5Q0T(?Y4SL9%wX ziz12az-aQIFp?meMo?bNJAa1eEs;3}Fu6o@K)utx)UA_MuB8^wBt`S_6X&RYUasc6 zGo+!w%37dMm%%e*SgSohlVfsIAOCo{=qboqZJt%2OfA1NmM`5~M!Z`gt3j2j`LKY8!JO4u2QP^_f)T6`<$%z3mzPlU}qkgIBX7Roisa2 z2eV?Y_r&)q+3OcJSj;$N0nt(|(q-lDxb2q8Y=SnHO?3|%`uRwDn`p;zy_k5^o6MDt z1;sA{zc*w^4p?P8(_Oll;mdX2+R3;X`t3mMnqC@a^6oLDy!h1ux^(S zwhJRKYHbbY;^sz`L2+@`vLODNiO1>M&TV;wyq=7wjh`R2!)Q{`UG|g04z<#EuY7B< zVpcM;FQJ5-C1;O0F9hY}!cVS^yw$y-t^;m$2LZF!o)>%OJtg(=d`DX1a%Vhfp0G-f zN$?CAnveJbeX8LyU?jiXAgHTpAYJtDD1ia#ZY0Tu761vw)};qQT>uS<77z{50I{><`Lw<1b?HV-dDm9P~le& zT#T>KAiO7`-%cYKK|MKRI|0PL5FmP_$ms^M31uGCW8DEV08nj&3v2fivXFWR2@iq z;?4!CHIAD27&l1&A1oU^1q5V3Z$w6G9$I${lRujKT7U%l8q9C5mbX&^-$G*@<@@(z z(Jc?pfTOZ$`yyl6Y+h6AlmwF(&Hqeftzil9_|w+wttJDwmYS#65cltXW(dPru9W3C zHQr;UnrXh?0Naa9GB((A`!rcyrTw>8`L|HIoe>JntG(=*-@)%D-(H3AjqWe`yF!!G zMvVrBKc^A99uWul_z*@kxJjIx_3^1!T*=LIFjD~vUj&QCbs#SRhkf)wax?LcvzVvn zG?naurV{uAxviaD=4by=ab$=xj3aNVV3T&}I+>K#oEz=bHqb4(60kvSbhW zd3fT1&^r>%sVc)vQ~d{+^)F{Tl0gGJEt#$F1=;Vif^V2F*j=G4=If(;1dB3|Dw6Cr z>2gr^d9y{3cN55IY-m)AGZ|Okpd(5s>C3|pyMAc2hw(TyaJm6ME@HhhJy$6Iv@9hN z)kzJpT-hQhGBTj$w%z>rpja4DZMQ+6b+Rs@*u3Z}dHlOK@IMs}KKD1_Z+TEr^nVWt z095!c`>|_)J0g&`*3T$CU0{ween6+z_`~v9yq!sV-f`rWU?L;&5{JilVGY^CP|hh2 zBF}S_R|0bs8Y`$(eXA6*V_N3?|8%84z>uY6VhB{?!*<cG8Rp5 z@j)Vvo(||S^P$&ilBhYHtHN?W-@)!r0DA#RO9gqT6VPZT3+%5Dv%@AwB!ud^L$=sBzmrnno1`pbrdB30;8?3{ms>ts;hjCL&z)iS@^UM&Z`eE=j5; zv(1aKEE_?|xzXG~A1O0!EI$t2IszG*v!Xn#?T1Qr9NY_XI%jKLKC1B8~Jt6fJB zdfq;NkC4BK76189ZzmrJ=s$YZNqnbQ(xdQ71kxN$soJ;XPtbfNPVXC157ol z_vD;nic76n#P3=ns1$S3idyjkxDk;Nt7(Y{v_Sc>@>rH~~?(n0bs zNBoZqs|3D;_a<3yrk{27#xc-Bp8egQYVr93R99J-$IOI`qOj@7UtmkreQ4mNsnyZ(@OJA$141*V_S)Wn>cE z6o>ZSZ06gWP&~TdzEwtHVm7uf^xE}Oxb)gNoUOg0H)n*=KYOEm2)Qa}*XYXfycgbm zIvNsX$0|`OC#?S^*@Qv+C0` zl;E2LV?r-rcnb%`y=o`I?uq++CFsQU0W{*%8Jd_TRVg3!O$*2q^EK5sRiu@7TX25E z#P`qx0s_*8_1_HljPLFlRK(+8k-6Qk1yd!T8OO8P=-s%<@!pil^42>@;>3RO^BXQ0 z-!&f>WmaA?#+)2{aUfjExgOFD-*Sp+?z%hFHcbpa-j45WLxJU15p^m+O01_j)4S&7@ITfH5_xiEew^P>JiE0;DsPw;5%5Y{B#M9N) z^&7PRrZzn)?{;%WMW<61SxX3}(=HEwezy<@NHZC-?~wfy&wQCe33wyw9S?*6r+-gp zgv0LKZQWMOrekcJN81~yx{0;d3p$rW?zm#ZL za(IE+bOu!nwR&*5;c%o9{@3e(Qs|W;STr}-Pjgq|IZ=fc zF)!ble<>zw|IF7&{)5KGac?f9-u}?!dKPR{+S_@1ca509ZWo%~1SrxkS2WSfT>Ci` zk6|b8kCsVi8Vxim6PI0cq!O2{xf>i0(W8`5*ppJ3s?CSz!aJo3=L)d(P+!s|HOoe z`8p5%cnzmGncFQCg)mx`eLP2>=r^z;iR1^Nqij;8Yx)`o0#^5~l(JGo?4IvuT=}ch z()2T_Rmjt^{E95xB%$mwE*D#>RxFG7qs_r8{=Lt?1qHtW7krIx!r7WaEyupu=vB2= zuWiJ(AD}(HL^vdJgd|~Hz^JvRGK3*!GI}YjhP*qOoh2SspF|bZ1QZB#YZj_@S%yY) zWvL7#T!a-Ge5Eje_6AAd#GOo({n>;pKrde$B<&Vb$yAPF@j0E-g66>egX@&-)kxunfqrC7bh|fq>7IS-R zilZhJ$z{c!@f_RM`#QyBj{cAv5+LUHfnFnNbf0Uoo5ZNGo8&RQ7q>f>>X-i7V14{f zI@z+Zs|M@pQKmO65jaYHm;5jZc#s?d&PzE%D~1lvTot4YhEhKYnFJZx6lleW*DzF| zCa!26Ff1S=`Diyf^BWCnqouH{!(iBM4&>u>{4Embefjaq<}mm1;QAtw0VyR+FUv*= z0g44q6YLsd*q1<&&0?w+7l=*wx`X7%5l*w&Gist}p7=|3Zobf0J*83^WProT*V>R}@iDUp9y*KVr5-3hY7ZhmZ#yYo@FJRzOtKhF&SLB4y*$f;6zu=CY2{?=; z6E{cf%OIsU8~g6f4^eL3(ft0?QR-7zGHM91ec~@4iGN`35^{xunYWp;CDvtLzRQ{v zZ9ZLwL5v%|gOS8S$sJ5m{6c)XDV5&-b@5=`!F+#`6V%#{4$+ccx;4>;JA7b~@dchT zcXC&}ZMXypTPO$u5s4)kE@J1Z!1FoPUG+2Y=3LI|gRTUtj5cB>B5UgCR%ra9V~t*; z2TmhC4yeE-OCsxlqsl{-odX8Z7YX`gbC3p}59(Q|;%L~c!tf=+u!9YV=!Ns=DMhhQ zv2UbJZyHyP-kbIbQSrusZBA7_bpgBm)1eVN)y-jo8lX!wk8`yeF2$d1 zT?-qbhb{;(Dfq&PL8l-d%CK5aJ?<}cG&?gUw|~uaA|PkR_lF82tepHlAfei|cQfjBwBkflMqDF$ zk+fxO-mm_QqG;EKK_TLnaI##?)^M_dsu1 z9}EYo03vcNKgK%4yWCc9<*H3H8U(IogsFFTQ80}cs3*UgDBV2j?VfkL7@4r(+}bMB zx7Qxq-Q1OYs#Yg37bs>2Vn^p}GN=hHuLy^j9>&q~16}QkpL1r-AR#MFMsYao4!Dvr zL4cgtK^?Ks8m?jFj>0EVo!@0%0>40jh zeljz={1e_iG>Oecf@_ag)Mzj@7k5xc&Qc!rvJlYfN6IE9u`xGAgoJ=^ecm*y z(2Ko!isMxzA|*;$_B(f%N!?Y~zBm5Sl-hI492t=|!;uCGjt5qQg!5#Oa7Ih+B|url z$aFX|`%FA2EZcGXNB*dh@x5P&>DwNShlL?LM72bC zS2#YEw+z9|5Fny#PgfYlHa0dJm7dq}SDULxf33ZfYDr->mlKuhJkR2Nd?i6bBAZ>r z1=*z1ZyNnpSHM8n+(PeD)T+zt@9`d|%B(9*EqbARgQcEmgv!O6&)w|e**)C*m|yst zX_uerB=Fdk=t6@~cXGKv@5zXP9PxV^Mu zhSxxIHiN#pPo#d3<1Dj!c*irzxZ=0TNBt{4 z<7N}$cW3L_Lefh>HGb?c%v+DSmEcTMYJ-*O!pnMTi6r}enN(!-$HV=T1m9miQVSo2 z#ps*RE#R*;%R0JDD!QGU3R2vWA049$3+aHg+Zf0N#nI&e#+xS|yWd=>f*JJDd8C%E z!FF6nJb@KNf=#XF)fr02?~90C8KV_H#=A7wEY6U!e0(qi_U{Z$%?qGv+M4jKzqnE; z*c^mxp2hO|uJ*BKZ2Qct`C)~m)&X0o#0y;a7P0ymlVWrcgpvjnw`p|mo3$73DU*So z$Lh>fw@1FrE*UvC|1aHzi?+?I=5xSayaPGdk~op2Xytt=OmPqBE5w$nW=U}{Y`u?K z;(#cbp8gruBntVK)^PiwV^UA}2<-R%(QGn$HTPs^@sJe|`;EFcckD7Be>6wyXBic- z^g+FR7@cXi$;_mMn08u9t41(bWOZ`{s9G@zPdz%Mx3}M*SaAY#JMM06{o|5% z_SfRsY8rvGGeW{xHc_XuMbx`G%i+fOcQ(R0T|>I0*_0mYRKsN93|534qoP3lKiYNa z2MHV>+3P16r;!Tk&L^QG{I16H-f-t!8r8K_ES+`Sy~sQ_;KgI7w2G{4g*|SnLr6Fh)MD?%vd!CD0}NJ=b9Ujf;Hqr!$MT;2fC7 zQF0QZFtT>2=i>;Uq@N%ABeb>9v2nm5Oq*jIo%M+Uavqt*aD2Sv@RDuv;O3OLZ z4;kn$&o-4$oW-P&p^mz=FdQPE13QJ)U*3H<4sS^zdR@WPswmWel5En^qpU#G-;>Pc z@F76{`OtR~5MJbD>Eb8VyL5&h+K3$P3o(wC^G~&%aSECgk`JH>?PFtIu`!|V-#%@R ztS7vU;GnHEWK7bzT!T+uF6LBQLsX( zuD%3)W5#zU|8Db{vv{Rq34=rdEF8k~yBm!%fsDqPY;|zoZZun{25WK9SfZr;V91Z% zNn|Lz3Larr%jU06=ogh3nAM-Y9&73Y81c|aXtFV&^U>sDy*IAX{knOK-+AC`fyZ1C zd_Rs4&A2nhdyojP>6l!ILbYili-L|yqG5F^kkYT;`Urpez=SzrJX(hOl(<^?K*$zc z6)&c~cWD*t2`9NvG=8U2J$$nI=4?&;`)h^si<6Ab5IiwV+(ngKeY55T9Mnogr~wQ% zdvRx-20iQ?RT}f;Z+qs+hZ1$CtZn3ud+439AU_t_Pq%k+tnwK`?F_HZ za0m%ycrUJfV`-CeW#4_7#(VA-Z#@REalw1gV~9eI)V3UYiY6gCx-K<+9VMYi7y)ZU z)58v;pjNMHQ6<&Gl8s$*fiEwpmMpr85qfpG`if}CONwMw)7E58C#epiy=-!wg~mXL)xA2q z$jcWvCsH_savV-OX)5~lA=`FsmBW-GcV!T8y106{KZUUYxzg9 z%n8qtucSj;=14bmY&cT(;lMsJclH2C!XZm)REQ1QMLels0?V9g{1xXfMDBJEeT z8z6^bqU=<)mbF#3^l-POH*H_Q^wTo}e;JT03r2Eb^y5xhPuaLYdiO)LY14fIB; zr;Z+4EOlS=&9l%rVn`H^B7v~ z;POvDX*);(4~^ujD?bdn#5(M%-xRTmgq(r;eRU*&9qL#DqV=0I)csZ&W;>biF4=y1 z>#QiazKRaZKL~#2Lzw`e3vHP(^1JN>$H#JAII3+$F!>Y3FsQ0r_ong^xfu2ltHer_ zHqthe&T)jjWaU58Z&d0BSVXq39xcxE^ zD|Q8dUZIX4Y;4r{UP=&cUiUXf(rn2%m6wm?%Pnbxr5+}|6Z;BvZK5IfYq;5;pQA>c z*bv(pTD@YjtyLQ?i+)X6w{uwPJok;u;koaZFE37ZNvAYg+kYx%Z$SZD|7XExeyuT| zyI6cg%4~kWzgTOdh%R-uH!MwUhGXsIgd25+hvw$nox+`nrp<+$;pO{Y7>@p|Q=9av zmgONY!k9PJR;tE)T4ayW&zInXzHVUr`MrMH+V$tbxKz)((59W~&uZ>%on3`4K@;tb zN_a<`i>=)EMzLI`jnfm;cA2{OuF*6`DA_$g9viv9Br(rXm6s=zC!hBbvVwjpxPiQ# z;{)WE1jeY`-1^<}eIPB_E;{;_Sw$T~jRDG;E>OuA67Sdv{J@XlHvW-;LA}Co7$?X+ zRh40XrVbPNX7+~tKe-r|8ZSeFcQ|7C48B6`BD?v91 zz$Gd@+CBG3<=z?DuJAJ5x-1ZoK$N+DSmRn`=@WDDh)ggDJGD{Gq|^&Iedf3fkz@dS z>~Dqw#a8b}YHE}61CWaIj3WecF6U?;UT}K8I|dg|^aSn7zJO~d^VVn$N}u-OE-{Tt z?YEq-RxF@5lHsj)zb+uRJdGtl^HMYZ2>1qRIE5^Ifx`8(eCw!A;jWZt zK#Gk??h8ly?l!BV>%D0^8sOxnKtD@P-@?LJzN8a#PdPFi+6vv5xiqn72>wbw$r*X`nRck%0fGykP)Se?7&o}<12KctO zeiR24XnbaSjCuooCNq@6du0FDK7#Q(*;}rowSfVRHuhQyv)9LE z3KrepBXA(Qk0SK5;9>6AnND*uW2DQncK9>XN1p@j)5zv8&lQDFeFW_>j>^hjjElcY<_5moBNtJ@HURn3gAWO{Gd`UZ7 z4~i4`w3GgwMymiC8(Uv@xn$w$6`)mH*dN>plL&zeopq0o#0sP7XjL}o8K$B8AM zrfystKmm1_`H`<>scL9yk`?b7VcGmilXI&sGF552SZ))wKbwM=Y^4~EVJ5yO2DAo!jwtwCueo#yR60E#J<;lNCB$EHaRFYA-_u^_q~-jn zla{5kn8O@wC=vhOdu5$}-$>3HnxOtJxMabDKl?N*Eu-n@miiUVjO|W-g7EaliEXC) zo7YheqMx_3$G2Y@NJM>;SbrC&n$mn1_P~Ah(SN-qzn}uc1&~nJ|+&WdYKQsL{Vi|iT zo)`KR7w00h?A#tss}Wl!&XPNKHcVSVC4yD-4Qs*c9qRB7W`U$Q^vB_*puw$gTc}J+ z&9}1J3I$kSDedap*LJr>`g?NHE2%;j)k_~pPjFKd2Q*RR;O5Xh#>-dRO??#=Y-=Xx zYLbxBjr80LvZdq0sn;qF=TClQ8~NZ?z)@VVwch_+kBPQ*X`nI~&3$(v3v4pbZ(UFP zqM&n=(9Q_4@zLi>O$+VZwn+#cGd%UmzBY1Od zIVIr4nIe0TI+qj`Pv7oK<^z{f*fY1wY0sN{Hb-5ALGzb$d2-cRO8IG=2E9iKA;nGg zu6xxp{O)rkZ}rx8JLI@VvNQLZ)TzK%_l{1o;+MYR-%3rK3#$~!g8+4Dy-I#6tP9$i z3>>brm?Z-k@O+8V)EF% zxif|0nlR|l;~^CLx^CnTPpaw6P2(Yvv)A4+-h*h+H^ z);S$Qy0{rBq-+8$#ndB%8DLNA1g1guN{5qHGXIVSiYie0|KsZ|fT9k=wQoca6_FB9 zkdRbTKsqG^q@;UMx{=OhLAn*BVNtrfQ(AKA?(SOHC3ctZ?>X<8Io~_yyfX|lFwDRL z|L3{y>;7HW{d>Kd70P>BS*+H|w%VIgoRa%)67wL;_I30p>+aI+k=s@beHwwU#s zgoqasvupaIpU8^Jk)j+|+KPQ0i(!@niEqq3&MFw>Viiw(uI3_}zCV*-69#XmpQm;1 zylj`dgb%7H2m22!`=ssCaJkw2zuMUbsALPN|66)cE@UxCAr3DBAi-ZRV||FCVR-cP zifKc@7#T&PSNgh3`#rf_#b;?YthE*a$7N@EtT=_1@4UA8-nB&$NyMdiq-6r@32r>Z zp>sn6?JAWRBsmwOMmQd9{?XB*Tr0JRL&j`=o>r0Wt9e4ej=fy0oo{D5S->1FF)6dH zC)HrzP6q-Nx$Cw3a_S~wtWen<-!3;iyPwKu3FRNy_DdKbBfusac}e^`#f`bs2XU++ z`rC?ae}2owezeM1UCDWL0q8#&$ow1D7f0(42ELAV(M{}+=PBD#p4jEEZjL7IxU_w^ zw3&ZhWYC-k^a3*EF@g+OYmY`VJ?vCb;4Dg?XLF6V^;hhhS&c3`#bW~q(^uq!P>!_C z0GWZ$ET1EFMx`H09)6Z4dFU_sgyb`~|MFF^>mE{3eoVCT^L~w9jq5dQm*e_ac6m7q zIftIgitn5eF@+UA+~fAod+iSMESd12S=X3#wAE}_<+=yLpXnB!2utWEz2Wg4uK2vH zIo}4ZKfS6=*8TOX766VPIVukp%GIlAHf!_gx0w)d=+sZ0h2G63?>LL#M2!mM4 zLGz5}cPm;4KV9vyRWYOGhk`ECzG`k7{->Xg2IOc=;W(pL%&jv9r^UTfNPmbB&)UzkDVbEmV2Ny{e_LP~-4Lc+4MH zeBQK|tty5RlSD*V&Omb;&!T+~YsTZl*QE-l$SND#%;gVdqQqZDSGt1eu6Zm4Wt4@o$n@Y^Kot{i?cI<2AY7?5G?`5OB> zp477}j;`!I-K8$qb+oFBgT^fW0Zv{7uKMG9VX-)$C&Gy+E3P<~#=?cdKoA;=6R?s) zIO%8!RIl(W!tCAWek1*gTkgt-QjYAOMd&)785-YXId6V^edc*TNbtRFK6dBNRY5h6;)uQ7;+s8=tjG4^a>zSf z*CcJ)M|mu;C}iTiFtfwMta2)|U#j92pcUSN`5Uk=@jYi(*}OF&x#D)tl(5{bu>xgh2GE88`D?aLz=caeAI4b zYwt~`amQMWV%htolvlWdo<|}?vuLS&)Y*oUr!EShmNr7w9MzPSH*NI2qxtYF@0Esa!=f(?(4Y=_Jk+35j%m(=z?is#2}$BH6#}OoBwSCGaxC4@%=4Xg`ImxsrXR zB$lz`XR!BxKALHeq6LeDJfSdQg^Jo)00U$)7$MlYQ?U4t%y3_4EWoC{i4UC;JaX^M z*}M3X?LFCQD`#KRVC;kuk70902t!#M32AuLMGY2g8z7n@f|kcp=2>8XT`N{g{C5G6 zRo3r*>FOg{v9*e(c(;06=C$4ymzmjR!ga4L-=gvrm+-Gtzcm&;~lG?1nM}jOcQ2cP6e^N~RmQRODQGua@%9(YKvm6VKMda=+c394=R@wkSS-Ba6Ig z3T4D{>OnV5`e*$4{v|uNhhNb4sf015_@QdyST}RN z-rk&;T%JsZ1Z+h&xf5J&%pYli}i7tDc0M;}gLvP%HeSOhy5+JYxReZrJh4a6oev(l{VM*9TpwdE( zKKJ#W;n(=@pviY9MN=m9sVL`iy@_5Ew~fO@-?GKA^1nlF#a!rg`%s;YHHBRi{is$i zdh)U4(2b|E(&^;FZSKdt?5t-N<&*$k^JAcbPWHrFX860j((%l^76fAdcHq{cuTPsP zW_t?X&$Ct-I%v(G_o*^2eR)!={_-p)$aH=2YmO0^#$YFpBbNN;JSGH5D`<7P+6gt{ zvG_};)d5oW26MI3iMt@!0dhd4WmceV_WR>BoTf+bVOQbtJw?&e6cK!x{SfVsseDTY#3b>vzA24Hf%C>xHtkFH-)gBL*Y9z^pWtlNpSQ?+8NJ z4Nhlh=DEIkg;Qw7m1aFJ^$L|NWI&FWYX0QuQ?;9%$C5xOy5fDzOZxD{;ej*8s!_}H zZoFz=3#S(Py_r_O2v;pl@dp6ssjZDgjetp-t4HgBZ5Cx;E$+@f*ANuTX4{dsq7rOC+lZ-g)1-Wg77|F8oY@nhNB|b=;79xGNZc?7nC-tXO zir(UOCLe^TVzn-QiaRk5Rt+1ROm%md9$*^aQ4PiW`kCJbH(Xh-x)#pf~oav2Q|4u%yYhu zinpO{f?S>FJxMEUGpc|ybDV{$b0bK1d%9G_{b0+|L^?ED4JTM1Rx>6B3K{t~aQxqh z+&^15>$zA#Z`=UmAG1!_x2yb=gEen5Tr=X?Q?#UbRJ?QT1T#uvIqU~?4CU; zZ5F(wWCiPl0s;c-2b35BUefYYvqz<$IzS6HsZ}IL7jrhB=JJ$MzBzASWGlVkWko-F z*ixpXAIB5^XVaRO=?u@OWbl>t)o^N$9I-gS12ckZCzrdQfHQ7Rqx9f_hTbB~cxQ2- zgKF`#t8IwR5iQ~86H;hcissgf-U$5(~Kt$hS1*T}x zV=1qKsDIRg8Fq0A4BUXP+(f9bipJ(>78!W$hHna)?qT{SbL=R4(jwYg3xf1?zbl8m zQfGe?`_y1(( zb~5H%eq3LZdu&J!I9(yv)qm-g_{3NZv`}lWVyZK*>|`FE2<$k7Xe6IbX4n4cWK-yh zD}1Bne312|>}7Ku$6+7%-?>xH!0$N635_>WFVj0-YFF*=Vbs7F!JvHjWL%)hRawsC z*q01nfBGlsFn{ENmY!mZ`?mktiCk91E3aDy2<=FU@4JQuBJ*69@H4Te_)S_HkEVeC zM$K>LgKb=oBmq{k(6jeU-V)8BHh7lUN>L&3lIMk zxD5w*2L<%xH1*Q0pk?_+EVYO=5#+Sn72&Xce9U<~?C?o)m7s?qr>=e94=9u_OGt`W zGDRS2rRsA$wzRa4PO-ZRC^XsYo6o&ktU-SanErgjZ#{kEacrobc_r?A_17uxDv)A+ z-IAPU{nl!y44mWLwEE50xLMbe%l^!XG#3guomrP(U+aa~ES7<=I*%&e%Gi=gyk-gK z0FE!i1?Cf4QP&`5<&-zFaE}iE6-Zvxi_*x~XW*-!0Ivs6Z&m(Dy7I*?jo&dzRIkLK zJ!OBg?3LHMAC%mWWOjt`xac}S-)gk0WYo@#4CK8+{=mp6 zG77QS&UIYatI8+3BhM_uu2*HI4OI)aCMVf|M+Q^p29LfqWu(_Xf^(2BRwcb8|FIjL zS$o<%1URX6zN?>X z`Io=*n6mGS9D>(3ROgeu-M{|2q8hBShLhW@6c%r;1yWhAebkIHcHbLTD}R3DY;y&i zUi)Pl283r)Z|mj~*f3-J>cVH(qGf4v!tjmr(=mo5f@mE#gG!U!-)%s@KZb0*eZFoS zhVnL`2d$#dCt?%(ac*3F){d8&MuQYI5~fBbedkY-f;tU`|0%D`LbYJjZl$#l`L93! zUe&5H>FN}hmwN29r+QSTqr2jy`59G%_wWP7WR@2MR6O7RNip4gj))&T0qxTHTGb8K!9Vx|JB!hlf0^k3crC zmp>d}Q>_jqBxkEQ!+8YS)36Qr;rVWCTMIcy+B=vu-T!y!;N(5}wIg)VhTMFxc=~+M zUBz;Phl0~k8!-i;o`-xKc4ear4GDQes?PH$Kv8q}P9LlE$|G7cDz@Vfrag{ze@%2K zAegzR)UY;Yf2LGcl(-w}jq759Slgu8To!L|#^heG5C3)_ZzTa^(@>Q`^`FY({IsNr&LW8mt^J8KJD^ zr%A3COdjzPrtDX{LR$~)#mp~tJEd@@QhzEd^F_9i>rbN4MT~84;#qJBY&d+@<+-|< z)GB*SfYo$02*0vt@2Udp>3^=Ps1dG(&Ma zoied}JU49bJ%3n$GrOS(=!;}ug64`)EuA;r{k)Th5dsp>XT>U?+!6EM1Dk3WnV)6> zkNbx+8%t}+!_!(Wd;(3=vj*NgW4%mV6<@AyZS6%%rDVZjbq>`}D|Pl1e3*g&CY9zc zn#Z(zP`pb27N41zpInX(CTqf~I8UE-hNTIV(nvM{gBTY1`1(c=)OGo|S~V#774KO! zD;v$v9FEz zv|VrP#|Skno6l%Q?w)iobkl!2U+1wAu5*mVTA_f8iE?rN=EIb{v(c5KlJ%7sL^c+k zIZnyH(l;Z1NQEzkAw!m;^wjME-vaqPdDd4S*H3uJsS4b${&LHDc4l%-sbq??gewUG zU|5k&)p%%f3#|^-y6m6X>Htq#b>1-mlm3>)t9z6ZA zP?7rfz>=Mcn%w{2VF^*GZ6{ppE6Z45qkmu9zSQjg3qkEe1ks+O5%*>6HpgQJNv5OA zoDlVLM@b9|;qm!YG7czIzD6JH=ZQVWFO$7n2qjWT$-A~fE}n>pl1+@JoYsP}6t?Fd z5^pB0Jdn@CEenL`Xx@`|jY(?7(EZ1F{C_?;|J34S@gH>7+V^?di#2%=6Nctf()@Dn zLRH*~u&`L203_FZ%|U^ve9YNPgWo_;FA;v$jRraaw)mintyF>A?=|f{Y#1XBW%dH&@0(o^A`06$(#w9} zme6luLj%R?>-=cQj~#qvIQ1L zEgW;ZZed8Ds2+k?6GPbi^$m=vYE9*dwSvCco_0n z%;gtRXJF}WB>EVmO%*cYQvU$E@1#BYBB2>&H06<9cwcp=9eOYw~ zf9k^oM8UjLG*nuNb&)H75N9Fs%Q??KOchdwyI{ZV~KQyHVdAG`jm-qGZM(Kjvt6{95BF8ff-E z7^6xi?TN@^H8OK|x!Vl1oLu^`j7i1Mn*g!%WAP&+D z?=~WAUcbFE0rBmTh`|~+F>jPERn4J@@b#QJmdHN=i%1rmrCZV5uVVyqi=gEpgH#Cq zvQJaZNxkH{izMS~f6A(@6f@KIGl>-i0Z)-=dE3tgPDj^Im!n02^)&Rf6whmn&|~ zRzLPp95d)A>3NcsCTXMxeqrzhQPJ7?(q}s#&R%7Ca_?q8ZMnt==4Y;@(s&|6tO-vx}9WsXEltacF*5627 zydqEDuJOq_9vVs8-Z%p*29EPxl5pReymwQeBU-w#PlzQVz+J2_(;T^GrEsl(=w7oW z?kiCXc)*OwK%jJPM34z=dD2UJQlPQbp<6yR)Q6rmNmabwLCjadmwk45a@N%BYr!)d zNjhzkxA4d3sK(3Ng*n@UWSYZcv0KIfAqi4eqoSZmySb_p#Wj~5u5p63F%?JlxSfRM z+G))a>~b=Q)kMv$4tguRC4KrP-eR7eA8F)7yL0H)()Lm{#3J^`A@!P`Rl%^h%QvdtwA{CNSIfEw zXK@no^B#0eL6*%bT^7E#Ler|FNfSA3 z5GBmNeD0MafNsoDttaFBzQU@@Gf0}TVXjTP{y*RM|Dg|=g!qdFGFZ$5!)3(bm{y5q z%QsNlcO55m-At0orEPx|SvNgVDd1958BAh-Te9Ec1Sc1EM+Na8P%UJNyVU(I&5Nd* zNLK55at6dpnLm#gCyiBe{1 zRWD84oJ-GUJrY`}{7rAUpaX3cpTi|)G#e2AES3CQsais|p z0p)44Iaz&y=KkKELWW3fzK{!rd{2>1`A1+OM#6gfBP$)K&LEuitUtc}`q5{b+y9)Y zLfU7F)DncB$ya&6%ezEF@3rD9<_(D^iJoZUk)(4y}IKpj>Gbs34T&KUEq z@sq~C$qp7o>1Lc~6CT9-k>FZ7OkYS-iaV$0zP!sj|JZ@*V?*=XXeN1@koa_c?Y-z5 zV5zR(!+9*eoKF7iVst#p&pC{#BOoK_Q0h<287uT)+A)#2EkhWbcooYsH(6>BFK(x+ zdM;|3FU;7wfitgj`Kt}TG`_`i`KG9=V}RC&-dc;Bn(uYW$MXW>wC_gEZ1^-~i+(Cw zkS4p`^@F{u>0JuWuTRdd^l&nWq3?jZb}af=Qm2m`{rQ=^6cYLuIXSIu>dy5EV5Qdr z=HtrqQB*m-mat?Q-^|JxCcY1zvSZ=aC2tVOp%$(^#g=e5dtA8+ILVNF+q8^N`~f?5 z|2f2ID(!i59r&LqubU8C)aw>#gv-Nc7SnP|Jh~Z^!Z~# zuxNmx?P1E--wl`<%B0(xslNHw6aAAn3WMtRlqDfxn8IAJ)e7-MlH0cU$lQS^qW3S& z>l3RMuBtv<#Gkib`$|RHwIr2tPZ3#J0y-B4B9)m3JGZnTYFcuEM-{p@1379B0v^O} zPXnDjn7Oak-tl-Y4wqTq=ar~`LGO-yG^Li+aZ8WQ&(pVHnKS(XVqeUSarNUWL5T9% z6It6EmzgQ#1`rUyg6<>$e9&aD$_1O|FLN`3a^dv*Tzp(GI1|N7m%@+SZTI zaM@D>%=`af9{x|)W|$uK83-#5@D>XDoEHqf2EEnux{gmA&LDr^P-5B?F?2HrL?9Y* z_5}jkj4I@gSCjP*7YUGY$!YkhK54zH=P~%-tY&=(`%tXIpyVr9qk4ZS;6C2o&|I}9 z9mKDizEWJ}~&6ioGCJqtji{}I{_@zF!0SWvz4-O~!0FGo_R- z5O!8In@2fWx6jNh?d?tE4+Ig}w|lL3FN5(C+B<_EkJhhT(9sSLqHZp2##(O)yK~}X zAH4sEB=2Ru%CwCqe)niIe)}Nyw_i_{RZ5sMk=k5U>af^t;4jv1Lv!Mmy5?0lrQe$IMHxPxSNy*jnIjk4SBN~;5OxQybu|7x4Sm+cZ%9tW44VZ#x6>< zqy28(r{*&<`)^g-m}@JN&_Pt16)yK8oP_yT%^MPhlA(cS8!RWZXmwvetN-rN2tzRz zqj;>5ghLR3DjG_EUb<11+7yM>#5-rJS69zWt64L!deKVwNdbdTfoCbe>4K5V=V#=u50F7e}k_-|%m9;2q`i~0KX}$Xb`OELZG}Eth@S9e{ zAbQ&;Myq&+R25MM;4I)Vv`ZulNaymlZiE46<(B!Q844X4#W23|G61lPJuW{e7xOSA zm5O8<)YhjYBqXE&DG{m%de?F|?T-Mig(;)KM2W5#U7HN#h5o-f^t)nG`D>W8XpoLw zD>4>uWErC3xm64x*9K^q`?CC{HPlmKSAZZ5srI#7~#!tXL8Z?!Z6)AvA zCB)kg&9G;Ts=qxX1|ROvsU{h{q9M@w7$yT&4G!6x6DW17&EKW*uG5 zy|h?@{mMR-4dE5MsmI$(T261r%;SYPe4(5!8VK09)+4q*$%(RzRy#bQpY8D2eQhV4NCQuv$%=%<+d{IY9-%I>jhC4O$Z7o0+Iop6Nqbqj8Fg@LU?&~qur z8(SxE6XkRg_-wIqC(;7>VB|mNfyh7&=9sK9BjIFkhtKzhZwL$uW<1)%;5&SdI+q6N zsd1J5Sme!*p0Oqyi{6(0M!D@RLY=R!KT<;ftF-VqOu+m(Pxe&ft-f8V`OZ8k~-Z3nzl2JL^Q-7C|lmh2fqstZ*9+~7V)q)0i9G? z`QN2if{c+lUijn@TFWKHUn`Mu5n48%g3q^J8@IJ=ZX79_gtG$9nzr>abi;FsND09F zAqiN_)|9HbwV9=FE-p5ZE9xiW?H}z?*E16Dyars0^lN#{$+^M>SAdw?1nx7|FTjzf z71ITTuJ*7lTIW=8lbyl`9SVf$-hO{f!IoQc4&+^{AWxR^xqRI7X_lIvpU+3W=D?u? z7?s2-L$YOA&!MpwwB^EW<_G+Rpr?RkVu>g}Rz5?xRxp3ypJO*C2QWy!p)c5E<}%EQ za(w$0FxF~(A$JM>#~e%AG5*2EMKtA+wPQ|~k~ACR)I=$%ZfPgLtU7fyrw_DKfeb+< zAn`UIpu2v!^H7wR3E3jBoe0hnCKJ+y(9dF@AEHf;nxcWN0^a=-k5xk`1-=wrf!R!5 z_*4s}h*wRwILbzu9!q zwM)Ou2X)lCZrr;06fOQmUW}6d-HHGC!EH#XK6vLF(=82tKw!fI$oY62$2!@V@!+xg zCH-+XedMgk9M3?p`>l7=SW%|0X^D>_QX&sc0adt!fVu)%H&qqgnETDv6MhT6j&MO&;!6q?j_O+R$d}3hMjiTK%r^9{E zN+7Z9D?z|uQh7v=fVO;s7V1~}X|KM5C~{C51`Q$Mx;Q^Vw#$3j;ik9N)oEo`pZR7` zQk!zoHM(roX#SX!6TO?91H41IqD^Ls-!u83g4RY#J1M${EI?GwY<94i%jJJ)zM^m1 z!ioGLlLgRqF{l5^0y)^}fv*F91@(;isRSQNokd8VB8x;I0U@L;3~zBs1avv<6zoiKbxBlj?9zqb3vUTYy>rXSTm7veZ#bZ_2jpS~kvCrYU7^ z_NAKId5J>jZRzK06P&ft+nlgYzL&Xd{=m_W;N+<^L42eafm+$%^Lw{Jjeh8V}IwOnZRwHj=FE=pf{33%@*SGmLvs z;%30)QSD27YrvS9=SjAQ?8Bnub-?B@s-xHT#(cURS^&mptes@`FHcrTu@iCeDJCk` zvI}5bVC&QGU*6gGvR67Ik6%;cfm=sH(gf^HT&i~6DoNG=HZy_ZlvtFFGeTQi$$5&Z zJjDHKR}Jj?v-6)b*8-$&GaY7#)k!c_YBV^y355~Nb)x;t-^Kt(5v}+rKcP4wvW#kyJx3N^b(gF7S(Fx!)yY_{d%A5g|j$S zSVn~q?8{pN-oI=gsfrh56ST#)_W}lRxWUvd&PDAI|7S<>*TauEJ#%4z$#^`-sVfXu zR)6ClqIz8)m;COLD0%07on)Q)?#Whn@A=b6+S-!u+C}HnT}iHT4`mML*qlaM72w0K zBgp}DUL`iOF(i0S&^-gpDw{Nt@vW^WGvMR4l8We_L{bvfR{vqT#}Az`nZBcDmUvpD zmu)7;J>%@+%_>R^1d}}hyHHEc!TI&HdL-_o=S52&v^>4Q|!Mb%{&1ms@fi> z7>+qYb;|^fWL&_Mot3eYfP=S3BywH7FEJ7qrv{(qE4|OzXnT3sNF!)3@LV0tUa=}c zPF$#6sP5IH5lpFF|DR2kLOfIM3gp243RR-t3SwVpiacvj6>qW>LV^5o&A9Dj#CJyF z!Y~sF}Eae9@n!mjmNi7B{bD+5VPfI*1 zw)NJ(yhxN*5W|Q=68By5;Ul(qG2DB&??e0riAy8gv2aG3p7h2Zc`L&mCArlx1h}aMNPx)<*(#^5Vn`cI)TZu(Q1l9tp(4 zen{v4-`~06ds?bZ8pVpOJhm#@U0L=uEv50MuxPg8571Eh@EyUL4|R@XPlni(=6fJD z`do&7_Sa4q+i#F18MDIfkZ<;=DRdSb*iP4KbwJ<4Nn0SEV*_7|Y?e7R>mfT)xXvq? zCk|>B5AE}_pAmfbLhRkin+B517q8q<8hK(GOPz0iZkna=G+Ge-Wh-ZQ7`wI^e8=lO zDGv`V>Q(+Aw%1K+BX$SL1eZ-89o3#~>8GoRU2al#SRPGDj6?#jW0Luo2d*o{uxq7x zv4H2FR*B@K4Q0u`p_BnZm zTJzxzc`Lk3L?ir|cFm>aguAq|tfR-p0#?Eu&?DBE$2X#wX3zC`8#VQs7JM}P@i*B! z@y14OT;e6E&2;NZz7Y+5HFUF~o!M|q$)cvupZC!rsG9fHpdgP@6@@I)b4N(q-kd;_ zd!a+uvHl43vCo+Ibe+V~A@vGzVKn|O^4-PJN4p#(vW?H+WA6HA7vsvJ4}CeFx77}| zg}&RQI9UPAcl!Io`Z;p3mqLgIhq`?YQ@;`Y+WQ=KsH0juvjdfrTJxK~ua$@9KJOix zI)3%nl*9^P#xHR)&l?S#P>+|rkAu>pgwF}*B`Q6)o$(tx=pbH7~kuaBXf; zKuh4<&fRZ4+~UbR>sf5&)W;=x^%m1E_iJZX;vC!NHigRS5;_9MZS6398+XLRA)}wH zhgUZA&xQPUM>}}jhhD29m)en6*(-9id>s>QWuovE3Y*sJq2FConPj#vyF=W`8c z+Nn&c8)z4Dw5Y4sE@MIj`dJ&ewpdfQU5krf_1>Bx)In%SpNZQ1alv6 zbGUxFlCT=eH~Xoa%HD|5yLG-vBAxIa4v{3*|Mf25GkL)+BD$kw{Ld`cHAa@ifyZ$1 zJZ)w0_}e$i+MSUU4v!_Tw2QFgSLLmkyoURnHkuAS1caz98U+Of9>}R@O)qU(Q}X90 z1ltX3H<|t8ci_)$SH{b`(3c|iMJ2}d^NV{9ttB9IW5N#xF%GQ{DdAVCza>vR^Yzqx z6>V%HPM9sx-{5VwnAbdV4p;4Io4HBGWN2w+BPKp3S#owktr0QHFGgDP;N}O6?B3_b z=begNgV6%$56;fc2ZtK<4n|uIdc0c~6WfZh`WQN+odCaCC)kq5fSO#2$ib3detzr? z-h58Lee>?HHRtYG?qT5xSqdoEU}E{{%iD3b@_`JGMGH*9W@~n3zB)DA+?){K{6rBv zraa{+FNRs>&#y(2~RjW1eTe}LRIjWhSZ1BmtBfTp7G%w#<-!3i)z4y+F zB-=@8W< zb&O}!H*Xi%sdZ7EW^v=WJx5XMjku#%9<7|V{&+pIm#<%*pdws7C_xJu_w{2-u+}KX z4wSg@3>IzuOGWpBVrCHMc%+{2>=w>-cOnoMmu}W8_Hle-B1Z=Xon{owP=X_x6>XJ1 zPl!0GV=K~e^D8w4g(PFe?mtQp!Xu=x3`c+gJZ- z$nb&j3oW5;KMF`_Bs{p%AU(YJOLBsINqJRyn!Nv~Q1ZEtMk#hK=6s9I-1y7ym-cOV zqc94NH{M{(?#9+OTsf-oUUyF7yPnDnB|6BCO5@eIE#={*Q*}%N{)mB<1N{cNq}*c( zHar~fhbAfIfBYEnw+m7#q_+V6w(VC}x3D`?Uf#MZ%Ed#9cJbKk|K733%=U{@F!1d2o%W!}5Cv~uRURwzCFaxc>iP0MZGj)(PFwnwzNDsR0+#GHp>8E2(@ojf z2nPtuTbCEjte}m1BcI?t8mfaMH%0>}@yoO{hYE2n)pS8nZz^mQIFa{&Tz~|ImG(nQ zA$yEMTxy)1IsK@}ts`H1WN<1>W(KqSvA9gaFV^;W=c+xme>XVzwzSRmSEGgXsKRh6 z8d+T4_Cr;>%(*ukA9148bQtS*aAF`FzJT`m(e_~mjrt%oYz9*LNckE46fq{pwz-r` zyKDW1`jaH2O;z+u47=YEN4`g@msJl-rv8kG&qfbL28+aPPx+A+o8sRs9YZ$Dj7G^2 zLMjumrJAOp;UzfuI>V^F{`DJ<1mn9EScd5$KIQ7~_{*azFPFSltEG~HvY`+5m$wZM zJ{f_x%$-k+Y20seJE-fI&RDMDOZEMq;mi55cf%Z_gSX4on;E&lB?A!zcf6TyzmFdI z&|Y2FHptC+lkve@KO)`Zcur;ElA~tR=jrhI`Ypyi_IkuD+N(Xy1Ld^coQT64ay-4l zUpK!Zkb=qZ9(Xizu(F6uO$7Pu^NxWjm4LN-D+!@Am^2NylV$LHG=QpwHzyt--;uHueu=-tT#!L*ak zEXwVY7QVOuPP!btHE?KBYlEC2Hz%};&9nC`Jw1c212>6z{1%CsXMcsd{q1MT7&TMO z_)~7bn_ah_W?^*jrxx3}oAP&;{ms61UxK9BA|Syc#SZ;Dv6jU$Ht(zCCG{yI3nH zabU)Nhd}RNQ-F$yvG~kR=~BFho)r4>QB$$> zXmNbJ;ha24c3Ih;^EJ7_(oivRg7s0!Id$If?s_GOy8Ywd`;|BF+Uc&c?3sgOVq$ee zMgJpUadycc%4P>sD1(wglJSk0?Ruz@G0QirKcSAJp{>T5m(L-~rE^PloR0H9UuF6= z=|g=m=9Wnh8g_H2Rz%njcCZOZe&ZxcCiiRqfX*uOZzp;^Kpa+qvtoM_KgQde^a%7! zcZq*ssgQHWPspm0MlkPq9TSgfe+_Saf6L9E+gvhI@)XEX{HddJR8OO?TJ2I}ffWYb z7#DIn?~DM)*?tp0Jnzpl8Iv<&8po+_7_7jo9c$TM7~G?4Qseb&xG(vx zU~`sAU@)iShcTQt?5f)*<=(vXS<+*|RgSSl-iE8+EL|1vw9|V;-qrl^^V^ zO76XC+)8QDzx_qk931?YOI5YN1)}ItbFovByMvrL%S?O1aZ^w}l=+ta#L;!Z;bsJ(IxM2Bv-4&(nU_@wI9QjncFX%Q2z%^lZe*LlU=?F z>A|qIF46d$OP3|tBt!EyIcf%3S=p+7rPQ*LlD6sVy6l5tw4Hr@?hBp^m)u);jYZ!m zmV2{Os%K9B_QF>zd5djrcBI{Vvs9wWyL*dspJxs@CbVh zFBksM&~>fxeA$QA6B8|Q@pq*(O>0i??S+_S??vG>EM1JpHtQBlI9JREJ(8@Y6d8Iz zP_gUyZP3}-V{%rk9EyyqLxBwg>GlMHRFpYE9S;FTW&NiA&G z+bcOn)5+`#HwDG60w;yh92{uqMrtu2w-DntGZoOCA zwl$oR?^NcD*dfv*|qeN)_Jip#!yAr3CeQSmG9kLYBSpX0)Kn(QsS<#v3X&N z2R&=8aw=!*YO{bi+J34w1z{g`*5$X{PvIsJT6W)VLX69%oXH@;Y_?;CPA| zZ9A~_>+sr{e%`AQ2`#LQCYZuj<+^da9H>`Jbqo6jw12J-?zQqByNm+Dpf~dO3JVMQX_1nDTB zWcg91XX|NFvL+2j$BT1g+Go09DhCWKG38C+@1?*aeHS)vGO6N#jb+*+ed z?092eAK1CHh&njPh+=n}s;(!b{Asa&mo?l@XgzRXj!dxpAG$lB*|Rdbck(25T8yI9 z!}*>vuaWk4D^>Z)_lpr1ft7Qgm0|5q0n6rbB!<`$=>AyQK;y+Npi%x=d$8Z;lici3 z!O?!UO>*r!tPiW;a~VN$HH}tBlL6o9SN7xGT1*ie=a2Se5d|AW*3H0b$DZ>ZlFMou zC--Ll==CkLD%5OAwpumwO1Sx%BXc8qvri`lYl$sGIGlN7E}?hSBQ9N|gMGKV!evBU z`nc@?ndL!f?;v#7QoR+>zG#nacQ7)ZhxS};YgQsU5Gtjag?ANmC1uB^(h1+os>>p^ zzKAI$T!bX$FtSW(2ixDH`xQVfkwNQd?s!VA(hmCK+;KauP^wS&h(}F zwRnOfP^(vhYzOj2eb%SFh0KawDH|y|Gm7gqh1RW( z!3SX&AEzYA=gmH%9ThFhi~WALh@z;}OWcg@)aGOfyW?cP4dwcQf33#gv^}%N?zC`t zj6|EwH(Pi2vXWa9aK_~<@gnxk+_3<2!CLYgxtYh@mI$TmofVoAf!hx*5(dqxp3@#G z@dps6(knml8QAoVmu~g_cbcx)hdw8*#@X|m*(}qu+6y6t8Zkwc*BKtIM|&p?|U@y3#f#i9$OLUr9RVuoy*rJ?{DsMlnRJXx^Ymv5;%5j&k zurBKadDB+D0?Wy(ahT?Vw18@(1ML6n+WPPMq7id{J%Q6;dwtj7zjx-eRPnskq1zkL@8& z@}Kn{M*{}o>rJ71{8g(oDr#z#cCZ0{(x=rW3KULGtvMbif_pPM5)v1W9=}8vv;sX+ z0=4~28Me^ZUw@;-KsU$}mcZc*s)ID$AEwM-EG&1zXz~LZ#C&??+x@`ipS)B1>82Z+ zR|UxRjEnz2_TDm}s;vtf-5?-H3JTI7rKGg6Qjj5T#SPd(+(_N=nD3 zL23h=?&dB$dS1^tzVE^B-hcP|w^?hk)|_LGnqxd;OaNfs5ot;1l<^)7nK%1GqT{fc znYP`_Kv}NAn$WdTO^UCEK)uMBo7iz$*aWYlYWWI#ZjE9F$w+kd1m#goMS;SQIa9>A zz)fWo|72Q4iK&D#xub%DrZGpQ)}i?Ml-1Qq4|(V458iW=ng;LN{CnARtc6k2=Y0*1 z*KAnHq12s79(L&H+3VqXP z34;33fJCYs}-c8 zSRdrBFhas*s^*n_LiM>Zn}75Ic)G2IwKSGDp+yeJ_hCnRy#sTlWesFhW9Eq;yjM){ zu?>K;5I)NaXb@LgJ`+?8>z2#7g$(XbV2iHeBm$mk^O zf}OX&mD+ZZONj^ov&V9jb5u+@93O2*7`S_Mwso?5?R^c6jG5V=s#&oun`d7aus0>R zv2wV__s)!gIOH@Q@VtiH|s+O-E zPFPk-tA%|acP1N0HqJXjCyyk0W zievO1lTc;xvSV*n)}3ghVrS##yj4{m8|Z|G$vu#$x0{CtTvIvBqZ&TsfJU}UDkq_d zJ&;%wxGd8E7;Y)geKL34e@23T1cp)hy+$pM317_Wi>^{zos9F)rXO{WF0I6sQ=u-B zRwOvjSi`&CuAS`!zOyYrIo&GFZfU(Loy$fseCuwTzw0#))#?6-+&n!LtQBq3 z4c|2qf#*`Mfkc{4{>>Z0Hf&(`vV;;(w1-{}|z) zLF^MIFz8K#*pGB#hvJsDbN3YAiJ2-J_2P*sh_Ame}N zgGI;)oEaJt-5(V3{{4F$D&5+j2lPi?3+#J+xRj@Vxno+`ByT8Fc&fb4T2VYV-rMK; zpJe#^ApX3OgMVfyo935?L#b_7ZT~v$?_bG9zd=CIadxUisG+E+sJ7~A zlHH~}2JCoKg0ix*l=%oSss55@`{zJGh>gr((8I!Wqpcd=jem^sPpbVOr`Hf3s(D?8 z3E{6-eN;rpgBZnAR7^}wq|{q>RIfG;@7GWMcp-2X6$Kdc%dbj?{=cH2Fpa#HmPJ5? z=~JjOxg#`R30BxWvP?IJ^s9&eat$1O4F`mq#=_t9E2%-%@LJ5eV`@c{PLn6tIy0jS zCkY8riUzBlzKZ)-A;UpcxES-!Yop=6eDXUVc`@MJRJ!SJJq=c}5;qMjt*oSPrLLB+ zGfnU*|5q0EN+O^DQ7?KRf&M}L3u1A2EiUHh_=koLb%PY1Jh`clOR5=RPu;^vi2WDY z{U-yUQuI6qn1AU`0n+KOUJd>rhlqx@sVogN)eP0FaX8K%jOkpN)TD66V)8?Cd#(%= zD*bAWBD z0NGP$VWIe-X8nv}uDL+VJzM5$zx>a?kR1#Mc)hQ>zBKTcs;ma})vH&nrP*P5wk+p zGgw8-t;zC=+KKrdwz+z@u<*aX+t>||TeYe8?7v*?9t*_GPNB!u4wzy7{!GQkV-QlN zr7!hvuZyh}eFihiWiImtVz0t-9!#TOKkBuI0~|;e?6O`Zf<%R*WgpN-IFhSn^Af8NaDxJr79#&dGs81 z#N_x2_zuax>g!+Xj*C&CVqGZ3S$o6qON{^5kM#H<0~+cR3z??GujX}`YhKeh6d>yR zT1Mi2zha96JFKNjlSuW1!P@=n?%^)B`F-~RcJKRwR@ z$=htW%k&G^@v?7qzexf5R1nAEb15PF4I68C~u~z6R4BnOX?>mI9J3YyW;7N~jJ=H23dn3EF@9~Aw zDo>Qx#uRS^X=R95`ZLM<7u=>_{be~WC71vVeUvLR`_KX?vE1qCB^-3jS^xkQT?&rtG71>Ri;{j zbb=|;OQ682kKAE zBx*U_8JK65uGlRD>c;NzP362<%Mn_+Y*?;1FPjcjpM?8H&d7R@< zjGL6yGMkUrJv68eW*1ZGTF0wOP|u7>ZPdiR`Ga8K%vl`xXf{+HNRdj{4PD>?f7880 z6rq3!_!OB!EdW+8gAK$S>W!ARC746LJMiFHq#YtP1%;V5q!j3A2$ip-tLu6*=Yu?a z^iq3j%XfT_u3ToJf7%Z8m>`YPTxkWQ+Szkv#<@L?hh1Ro>34VDD+6uug8SEITsrO7 z_5Mp35Itk;gIZ0ex+?kQ)ADcW58E`?mvy44K-NJHN)Hg={ ziTeL8zdcpRqx>L!Kt+-WY6N6B(v!358t~plF+wK1jk@w9Ef@76UWvF%IY8A9TmBt0$_OfXZ`(G)>Ms+%+XpVF@$yky5?4QUWa?c?(K`S~qCbIvzmM|I3cxygwKkW6OH zX1)4%0sJdt|3`Wb)F}q0FdaVaMZO0IUL|vd^fr>Ov4%%Rw!3*aiB7t$yX_lB@_B*{ z4APxsIv_2{BEG!fpv7N@jV__n@~Ch&2*Jv(#Zn1wYw1MJOH0{o0Oq={LOW$=9SR*y z466~b>C^*4PNC6NgSKB%jI@Fm7mazI_k|>^uGXb^Ve>i6Nka2A(}DaZ8Ybr3_hj!* zyM!j`)GN#@A{#t54{dfHjt^1Y|69UW2ok?wbh zxy>UX5E3~8z~|Fn@Xuz`J9+}ZMYdMZOCwfQN4kO)Lc`(=JeX>$4`fs;Eb0cwi&|tu zOcd#$V>>`~0OS$7FE(lUvP>+OYG6E9`lO!Vk#SY+c_Uk9*G-|yr_Q^}OAu&9;f@D+ zTd_gneWm>BE!Ebp3c%zKcvPmwRBs(A5*cGqZulJ1?JluN*C^rVH z`R(q8VC@O3`1LhU)hW%w7SpARLfp(3q#t6IEfCRV1~%-{565ru7053+d#8> zAOMn@*b$jG7FRB$UMCI!rJ7U=OeyK;R1%zzRJ+&61X2XxKkV%9@;y=@*mxS_GhgV1 z2p_`W{KRqs^RH06g~qR@Wl(pt(UGoCQu97*$jTZn$;(rYWYNC6e{v`+H{JBfZ+89@ z-a>2K2)q8u`^SA{rb>_Girb#xwi*C~?bivm8#Q+*LG$KNeG{^k;7`xFU^XH08Iois~v_a>`CYb@7v(2p+ zaBDy#c5!L;Fw$td9!7j>{`8{!>Zp{Vp*`rKn%dhb->7)aU1!rKqNlwTmb!JY7tX!5 zoO|mdB~WL9ZUmn0YF%9%2~Z#la`j|JkR_)hy6D# z^tb1ba=;%lFrMy?z!IQl3tvn++i{blX$-sGFPL;xn0I$6tEtvl)P)^V(bG#YH>{)( zHIh3&$K>jHL~$1rNQb9el&h8y=8=FxM_yr2#j>**oT_N6>jk}o(}?(D*pO^(ZN(c* zy*3vd5n4Gl9dduhGW24y@~+6F)4m61d1m^N5NbxV4c920Va=RK9w&gP6fn_Ay~h4 z+D^4{14D8VPusM_dAt}v1I@R0Q}fZOaJYyCkqM;9xmpsk>b@u8Tza@P!PjNG($XPV z#Fl9+{|R7Dh(Duxg#|ZEo1q5%ntpRpOKVTEw?NBN1gv$&h?NzMk+K?awc|Q7kW#VP zNkf~#nkiy0UTh>fkymw+SB|wd*?46L?hOqMWkl~*qc}a@FByv6YRJ&Pb=VztZXY8E zTVa26uNCFcaMsXNJ(5rYz>375uD$-kG!{1qB*gR|9Cq8%GZB$2T&QkJTXDpSy?-^3Pc>e<1@tk3R;gR$1`HwG@$u|EQ1-H z(X`Xa3Lih_RB&c|1w6qEuuYo}=G2QEQyni98ME45=BnB9SZX%5z7mgjXir|u^?FDN zHmh9_t#>{7#{Y5*4dsDtBUv^xuxSw~()eoW$3}ok|3f!x_o% z%Tr?uZ2?;c9LKx#^r2rKxtWzAg6*`QeRb~@9HZgom9nT?Wo~PmcxG9gU?11Ou2((b zpKW9YG13-cSi_*m-bGSz-5Vidcq%pqw?q^Oysul@a+i-!f>wq^8@|NGR(^ksv*U|2 zOM@Zu+@h)VVox%Wu;977Zb+7IWdA~<@p8i&iI5K1!zdd0x4o`!bocszhl*KCsT9yk zdM{a>;~=?8tVFv~I*M5az1E6+Y}}yJ@EHLnR^A@hRq@)}wMoFuD7bxv5WJl8U zNIV2Ml$^I_a5>&_(s78mB&ns+oU`enxfopFaHph;xicw+hB7&)ySlb6!HgAf0HE~B zy|(`3DmQUbS1k^lQ|mgM&s;lsRZZBujeE_QysxIKcN__I7UJR$eO5I>_+2LagC{9A zkVXYVlLIjHbanMJ8OC18ej?|5{-UI--dsHrRyjO;tJ_%}fv34@-9 z<@WiSq$OoT8QiUkZdxS~b9S@?D6y&%kLeExU0ZvrgN89>56FqKlDw#Z+K8K&ITs3{ z-7Xn{)}inX%9@6A+iSM9H>|Siqvta-xJDE4@gm%j;o)kl3C9y9kIF-GR%rIekAv}6 zLc_w~BxCPikB{@qm7Uq^2OUnG3)(#D?^F0v>GQN@M3|vERI{aubGVtTWJs|Ft$AVA zAaOCr_4!Ky@xWV#OmO(#@YIIgq7P+4f|-i0}%!j!yse4G~FowFL`?@ zyZq}1BQ_)HQ?|gXQVqF_-k}6@q??T>Ot`;nd#-!6y>hGv6bRFLF*0J;HKH^kWao`i zJuJpvFyL@zp8tiy0VU{qldqcIpdR4pG+R6%b6c@y7#8Q&u-Qb$#p@Sg(?l^b$u`9P zv5Wg3TZLc6FDQbM5xGG6pWY-VKvz$(1tZ(ry%Wp>Q~@O#j4hH2I#mw&udfNTt;94%hsyeg*>H{Xa zJ0e%O$9Fk&(j|h7YjWnQ5Y1Ks)J=JOQDTNwg*bBk4D$}Bn+&#gxnm(sw6Y{Dvn@eo zkrifnSW;3llEty}zaI|yMotPaG9owV6J4;*{u-jw{2(;;gsuLh9bR0c69lXLD%ePq z5T93@(uiCV6iexNzNyR*EB@j|rLA};$7ZIG(4ziv4=Fjz@h7w=x47&IBWOfQT+Alp z?p91$2l4N_+T){R_MxKZUSm{!UhFeGUwTLWGKf_ z=b|WW$i~U3%GmIF4K)pBDS^}PhYP-GNg#A+N#qA2(%02}=}*L?QLmvLG4a56Z$W*% z{lHpJV1#IyxEO_%(a9w{v;BQ96-^^&)l^9drV1d8ZJV}6ZC?l#=cCW-jSb%R^qbtYQN&3#R>(ZpZrY@?{J> z0EAnf>zptlOtuCJZf}>mYlYl-V0g8N_;4;vX)gssO3pSCu5Pu@AXr~P7wdOixvDyd zK+#r)R8R@8j^eyeOP9&JEvd#t2p$(^cV00qP%>gI8f)(uGhva6TzY3HY)w!R&*$B8 zT~C5%5OCv~RqL1EuD>H)35$rBH46#|U>&RBfiwQyKfI({iIf5Ufa1B>VZY|s9Ukjp z>uU^ti61}i0n^;~Gc4_y_5)%urZwy5r3r>FUM$T+^Ym6ufw+I!XepHMqiu!71Q1p2 zDo4~@NkVsQ_Jgb}>v&-j*KgXXmPon6{1xYKg(Wwc7Xc}U_r1XVRQt?z(TXr?t zGtR-*i(eYAOw^BX0u@ND*Hot84ygkhof_x7ZVT+ZY161Ujrc|?!24=1pXt(JGwOOo z$bWyrgwM8v%cv@UnkW+y{WrI(KM09HiPM8X5kooia+^R+m1RW*KHcbjfv;_anF8lH zrqW3^xcl`rcnI;>9R$xUEJU|psg}E@>&L8+*QckXJQ#8-(lUIMxLlJv0hPcYrzdx- z{kZIlQaEhT63FlJm}8oXle4YepUrsywU_a3*-gG+(f#aa=AYwLMaKf(ys^qLsD8;2 z8kXZt9CvMsd1cDu!^m70#f%xmfRZZp$X-%fCOh4y6)@Haj7o0k1!Y?1#24Brzvs&x z%^K%(KmOf;lCEblAyhzWp=3?#4ii%ZuoEy1<3p9;uDtTVdFPD-o6B&ET+IDR|73b^ zzoW#W=^HLlyK&J~pH(d(v9_T9Q_96FeBi68Q^ZOJ+%ZAt6abA$eeSj=CifY@nWO|| zMAFHCJeyU%#Pt@v1lJ#IF&N!h`+(Ky^DJu2-6NGwzG-spSmSBs)QG;3oHf_`*8t4D z{R;MJ=SZ3`&DsoBf{B?S_WtHBQ_U3)1;tueS&8;7W@f&TpD_p8&$$Y zOWUkES)Iol>tiuqR|9r;glhtLxVZsIK;K5%HP+_bX9hk7tX^HV%!Q-!7MtUaTCHM@VBlF_YR2)!JCQ7g~$1%DHuWX+hy z5hpOe#%)4yX=xDFApvwPK^9pS2Ow$b;3 z1O4!t0kLySuRx2tVCX#clDRMdXN`a$LFV*oXML)BDaWv=2jhm?+3u%)o57n=4{f%< zckc{SsXvN*>o|Fu7=dPRu#tS>SeOjLV~1Ouht5rUKBoo=FayxHh}~xM!?$vIX85wm zCBe(>50ayqw=^56*WA|h?3@nXB+E`zMAn)j+Eur0JQIOX1O>#h%>h18@k=4B=;?O= z206q$Und;!)pP4DW2@J?ftgjZh7H_d<77)E>Js-e}1DZAh z88m5V{xjK)3v4jnjhQyKP&IZ?TKV3J`N&AsUJ3v&mDJx~>*D=G8ogNLm6a_FxESc^ zLjZAx^X7Sl#uP~xMCqQT{+>y|;XtIkoxFf@^6c5Op_5ghs|*0l`}n17jk&k?v3(cM zIz&(y50t_ZjPm$o(N`$glFK5ppkdM&5xHEg5zl2`*`WKP|HRDfEX41eN&+iPc*$f4 zo+C`go2kI=QTYzVYjH1{U5y1*-?kYa9!~TLsHRR|>xVuiW4o`(Ty=ohz1L3=M}J{# z&HEWCE6%@?b-TM59PgPi6pDBg`$SXt13|fXGvbT*`_8i{RiO6)u#Xri{7P)9_?7`( zOtuTFCT17=;T6th`b?JlVv$UMR}}hUevn&~yxyRtf>3_kixfbl*AGJMr!WZD>Ia=Y zO;b@m508l3*=|+9fPmVacL`37**xn9vyf?YBN0+`qO1}rZMxbEw8lBGxIUItY7lSM+x z@nl!&dKA@9d?zYO?(rRj}(E<)@ zY98%nPb4G-6&5ltjN%&z z`Zve4&OKZj%8T_=Tbt2n;`=JU#P&y$`X>tiPpM$Szi+n~yclo}6nf5o@Y1#IpLe6B zd=SEURnD?LE;fvX2qUy7vx1to8Hi(Os=0RU8B=^3r>vH-yzaI?f&HTSus>02Rds!l z;oRjsl}MOk6lUAtVwj8UWqkaZh6ZR{GSLHiIYF!V8YO;bWkeALYmwy&%1%H1F1~fv#(9QG30v(qd8?SV$V<)Vi?Is zRC#~^6(t&)8-&%w6ZP93F3AZoe$~0=#pc)$SWd9YTG*jeap^$9WLm<(AtAy9FnBpZ z#$T^bP*3Vd^f4NQEHu&m?%t1xPTuULki#l{u%;oIyQ)c*y}YsUn?=_nge$mwniLP^ z4M8U3(wZ(zojb{t>@kN;nhCDUstmagg~G~GINzd(7&rSa7`pY$N(2!-6CfIEXl;E6 z^lW&dm&;v~fRbcfj_oG@hqXmj_9Erm0@x>-LLloL; zkIYlzw$duuV*s3r$WNaRl!ZK`Wx=3_=sO&!X$@^htop4<_@y6{zsnW?D>_PM<))h= za(W8XG6+d!E=6t40yibhh~s-2s(=fFuBZ zLTx0EU#3YbxvUoW_8d?>Y`brVmDn}kpTg}h#N$p{b^%@h_TDWim6e}Lx_*EbN*{gL zA6<4?HCKg`OelC2G;{&TsJ(|zpAr!A*u0S>fM%x4*zo_J9zrbzgJD}saf0zTUqb|{X%LBSYRDI=RNJG6Jx=wJGBXQ`mj z+8)~lCU)(@-$a7}6ajT3j2SvsVRY;lYxsRV!N{%!dG%1O@KFh!jv+?6?Upy!MX1?| zU5@QumHcM%8=Qy8TOkKK7>Nekt!Ycp19N4w((&j%;I!w=5QDONP2hT z_n78rsjsF$HR|>hM&&LP03dRzqz~ofaAmGb{AOa!E07_{_SCK`5kLM)mMsF`0}}wH zu(4sm=KSSh_iz-D5d_3=&rI)!W{#mvf-2NyRKL@*-5r%S5%OYEe{{sX%}PgE1X!az zlZHU6-;^{Q<5JJA!~QA{-m5(^=);Rt>IJ$03}sP1kVI&R{dS$=;g}`M?%zh>xQ8t; zx*s!Eik}Uz`h{kmsz1dg>y_#24^6$>691)tf>rnN+TUvO9!YMlDj{`%*OKIf@tT} z0n@CSMNZ{{vhY2;)~>EFAn@6jtKtu6UbFv`)hPGuLKvv>_`itPI;NLpL^R^OMRCJ;0lC*jn2-zqu{9UfreAw zkI}zpAi+tW5%)B{Q9%{_QH?(op96<{N*(CAr>f;@T?C*tc$jY9Sc!mYsow^g2!~UO zpj-qKd#gi2Cd3r8epqZSgw7oRsCc`^VU_Fdr(%QI=FSwT^i&FvJvASM)25#yZEZQU z0SJ%0H&aV80Z4-cx$$17zLuY|EinYq`kp(TV=p zwqMF@QG7tQlT88wXe5n$G32*Kulw7lEFZ!WFIadTbs`!24{o&MMX2*xE(@Oy+Vfbt zhK~JE(mMNhDz*el)F@BdvPjvtktiSU<#0F^ZhU8xPY}Bbrr&}xc>So>SXcb)?+0Q2U5)(hU zn`C>Xq{Q(}*G+#vzdfV=fakd)$ezYQyIu1w-SIT+8FCSwgwX&rfa=hR56}@0?lLe? z-AQ}Q!VvN8^@uWHZ-I|ZO*C9w;<&iStslHjFM0ut3^Dcij4rj5I9eui`W(DK1oNK0 zYXe8Fbrjxq%m|xA#6IOw$pNsboA4i!jJL@0ECAH9P;rNA|T)_ zI{4VT^S`gKhW{&_AH4v6xkc%TMqc50xfj=1P9p8w3F?bPjYI#jY#YAd$B+F6A9W`b zof!vm{X~ra?RzagLF93v*I$iP7zx&-C3Kn()s&~KxyF!QI2RnQLKfNN%QtAX$cQM+ zgoAs#kBL!Kx7t_A_0fBbH*oqTzX^Sy7Z71A5#_0iJ*FCYJXPg|JjOLn*142rUqPTS zZ|`jTJ`^BJBqb%4_fReO7Tm9`o8zVj-@B!dFIdpO% zGleUV`*--zvD;Nt4H6JAm&ar>0^Wp<=%pCUB&{X5dDZK7UoVAWl+V9F1DQyhcU|DL zFNll41Vl}C5h?%-1A>4oiti=8WSnutt5Vo)DM5Sf?-Fm|?pz-iy5=wV2AN}8nmnkX zLW1L#e&b`-VyowJeu1c%FK)U7CJ7i7GF^QHdZ_-~mifCUjB4!l_N|nu>$7K?h|Y09 z9s1=wWQzO992>Jm73g!D=`N5jpvLSE09yWo3iyifn!8if`1z5=;p7)Bo29r)Pb{P& z80x4kikpC%Z9FJ=XdvDE$H(ct+S>teVNcJ8ARVk6g2=|px@xU>>+76hHI9 zX|a}>^%QRFKRvgSTK{fz1SksfM%T?M2sq?d%3)jc@ny&JQAX5H z5uWYUgPkpcc)XE3k^1Ct^nL(q_ij?0rMjK+@Lf`kcxoe`9d8N({ph5zfs4!Y(jh?T z^97SDGVBj|Ipw1@eh*i^X- zCnjxg?t7wvHY@J@DBK6jqm$&XI$RZI`Z#@A$AmZbL-%hft%7vp=-USTbHaT{6Dve(4wb0c$o^_a4ph~{%NTytf2;XYa$`PQIZ{uz>mi)GlO z=!R~%v(H`u)2VFEf|49Ez%@w$P6u6c?yh1)YL^0EX|`MGVg00P=igi8 zqreYTGQEX0YyIBqzkTw_Eia>naoQvJNtcb8_d`OS%KB2dKpW+fi;|23nj}5nKuX@o z`|kodc^BjnFDm`5*!TXoh5F^)q>resK(lZ{9=A-mv)#u%b?(84PnGvn1Q>upgDDVs zeHNe25F(}M1qKR)e*kLo(Z0MJ`aheGL2R-9V&xO)?m!TB)O9G0Gsa>MfFJp?G@^G;TSt6qCNJnEmt|efWpM?uzzC?=@-Xy&O?Ck4nj>A|Nl^YsR!V zr0Q{EEo7wLch1mpKr;*2zfAKQG(dYXBx-s({(Gowc7)9S=AMWFs`MMNfsU#!n3y=@n&sRu3ki~ag991Ae` zk@PW@(Td$F+v0dk=&hCkU4m->>&w#uBVT;K-B)p_`o`{2b-g-fHZGw8Eevw!szG@E z9mi1kp9DC$aqGD4e)Ps+lzTZAWW?OtlG2mn9-CT}q8In1J2V%@!^4x}MafdP5eF@w zQLeQl=_WjRMheSwoTLJM`Z)a`5BDb?_$${?=y=H)t%XA3L>g)f_~@RXv(sr^b)|5) z7{lAUNsVNw?jtl~4zL)B9#+Yg40u=0<1bWXq&3$;Hg@Ai`M5vcR*0;euf_zN8d3x=%c)rO#0emE?{_jigwZ*bAzao(Tu5v5< ze)f|#rO)5kGy{=$VR3l&3u1~M9s>)@EAJWcUIuVD=lnow%l|jD`NYtuOIYv@Ik&D$IX-s}iu zPoJ-k4i+L7jGulr9Er95Q2(*z2pU?=`EhmE-h^lC>rQ;Jm1ahq!y|tUM?*|Me~RbL zD7@|X31_akX=w|?Dgu=fGA8}^`m~_0cOX}`8cXB1`e#o2GKAAK+zjorwb{?3Z8!y` zRP0u)fz9r4n%eZb(*zQ&(;dN+{opSE;w&K3?LtCbh-eFD5vFB_3}$|gQJgb#paG$;E81@ zXJJyLka9*xVBH~XI5CXq7G%RE17VDi+B_S!5-v>=Chsb?a*MQ$nD;=o!>|FEG66?Z`G|?(ZPhQf49eUvPdt}ZrSE7bY7)^jLz2ZbXjQ~lBGa% zaPI9{((qYRt6W#i+R>na0`E>+-2jDuzpTJW0fSn3t$w#ZO4JQ}of#E6;~$aP|Dq-@ zsBSfYZZ;ZCm0Lb{_0FBv>^!|dX95op^RkAF_@hVcvCnlR3uKG5YM7?NnFz48O`#38 zwgO9|Y@=G(`d>G#)y3EojZG3s?&__X;k2#^L-)3Y96Cz0%}S1UyWe$E^Ox#McCyYU#DVjWhAiQb2l^#PJPj6i_ym_)smC8{8gezsxe9y^stf3?9UJ}eH!@5lki1` z9$baHqR)r2t}j~5r?_cpCA{)EN^CE!RHZs;yl*w_`Rdh;^(b;z(uUF?7@Xv6h%~Ss z$vLpNHcB??CWAMX>7yjUF4GMStR36gDk1p)pu-Qd;;XIW{+5qQxP`WvAD5~|)QN#J z$49Cx>m$rL+`+g}1~w4PKKkj6p?wb;9Ia@wzc7A8Na}gDVJ@G1W?Bnh-*JJpzBo^x z8;=GI+6^sjA?{!i7k^idNtLb|-|h<^m|y1SMadr2kccEF%>_)M8*!Zk+0<&*Po;Ms zSiJTp&*h74xB5B7B_ujNSNP!i z6U%Y&fr*;^R+zTCf!1~?O^5zcpFy!pH<_fY#huPr&In~D_4WX64Z2NE)1&bzmHCfi z@8(-1!wmAD9m5hmh+)G_0Yu!PhBC3OuVMS)?^u>sO)C@%7y?X>&wM3Ai@DBKSWCmA zcGu~wtp~rHJqLZ{o{|Y~I6rHt%#;p*>W);~$8uz8YsV0}d;34)&PKhUyn?ZO^dU9Izn2#1XUh>&52cC(X!bkKHJhz}-k0x%Ufw@M_lI&;6#$;!xp zhR1nR$R2AR%F(#$=@4wY#!u*J?8^S$>Znu{9^V)onQ0NWQZZ%ZC#WqQ$rPrPt1N9c zn3EACs0WLi&@AmfyWy5ENXp$_vHCt+^;)&w(k5ctv#jSrIZP>`P>3&_^!#}w&gWmZKoWT z&gu7Cb`xbeuiHM;k;T9j5{}#|k8|`w*g>K#IktRH1jZ-s5WuKFX&U3Synpt)2`Bez zIXez#ph#6nm$DJ=CR0ciw`bqb?V0AQMZ5!GxlK_#UC%y8ZEY?VX%V=bSd(7E0694v zpck9;8$tzHSy=_IfVnKjsrLmof{k?=8@$?iAbcCa0d< z-!#2|W5v0+vj7F!5ymLU+BBS;N@T7FtOYVel`{+={pHdnwu8VLgY5+-tz%>5Yi>)Q zJTP%y%xp@`Z%H4!lx;)gYh2cdZ;ycyCAQE}rITjYYIQAOMO`nv$b7;V5w!;=B@SVU?q^CCgswGE zc0KNU`0k0jzK1qLOT{SNPe*Kb2#GeA;R!Nn)~Wh@pt+pfg0Q=a8Ip#P$3h7_j?OdL z&$^Us4`Xt#4kJ)>_)lNg?jFpm0IJ?xazcAcx$)`+nLMYGL9oE5?@m3cIO*AP#dD~0(^;u4Bo+}bc2cZ;+Dz+A*M-| zcSA;Pk?}k!`x)joX>sFyZszrYnb2HXhJZ5@@?24$hyA?Q4U^2`BpH`=49gR z>Tr=F3TC~c@~uWXWSJc3qg%Wq=jK$ol8?pMUoGY`N~vnZ8VPY;`TV}<4-Y!lHQ(dj zmLAW1c)nrJ8?J}a(hM92O)%lNs@cNVUn6_m*e(=X+k=0Zn#&Nb@I&E0ROEOs=FNZh z{xEDHN2#Oiox9eKZE7O9$6NPFfh)x)BSBo3v6d1#vwNm(ab3?{FK$ym*VDTPwnt>ri*k!pUP<)|O`+wfbOo zB%`?5*aKce+)05rVdYRm4;-q2Qg=T{k&|BZ?AFl0IP|FHZReUTXFe(Al;C?abFL|& z_w|Ze@s*k!NuNq;`NXJuQIVqeUg)VBA|+wmDw;$c-mq|NIX;BymF@FK7VN_6$7zZD zQ^mZ=^ZA)%6A}uQ%GU*M+(_9CJFAn65uVBJFnx#8d_eCkM1IbwJZv82&cQK6$)#sUPwKi*zb2O&9yrH&-$d( zZ_J#Fw{k+KUVH*hKhU+PnN9F~DI|6CgLPrl+5X$9M)JUkIiN{BZYRpuTvuZxo&&s- zuclLd5QcZA+bdH+VYJ7jC(l-or|1%j@EJ~OP%umuu6uY3G2(R2YzBus{;XPDT#|l1 zf8_-0%xbOU5|A;l)ivYDYeteBY?36HV%|c`$5Xro)7bFQb5;Omcg?V{oM3nD3x>jz zv5)1ZKDeD*^5ZGTfd|Yo`7fN}NlzY+>)kA!s<7Q}wW2~zy~n~ZO~rnk)IA;aGLY1` z&XB(9xT!OL8XLyyeqdTKzB80e?rA>+-y#;Wh#Cu^2!HufsI-%up)Va;SeDO7rluW3 zBLMf@A+1-QOsH)#+VD*<)m}j8bx>m#WF2y?IAd)>W!q#t;^*}i;^=`vxRm%~kq4_` zPv>})k(G>stc+SgHm@u}nSXYj3qWnl+=3HN)5SNWwC6i5mA7Y$ANDnnlR zN&qnPF`CX7CJR1O0T3GHA@ATG`D~Sf{JLWw%*k`zTV!O+Wu`SHbcZt3JuXNvCYIw zQ|iDs9D1AGpV2Yy@mHK z#_Y)2uYJ;<`@TuOd`@5~`6! z4b?Cj4Qr`5yL+|Rw`y}0OY{dL&G-&PkMp3Zs!ZO*ov$QhEG zsm7bFhFp?h{hn`BJGQ$yjSPHFs`VR2u;EtlKAX8bNj`|uwq}W6+$gWO!)kY!<-%&w z6%me&nI*KbId64%)o9dEJ6xQiU8?Desv5OY)`6Q{@VYr0SE=-Qcn zhM2u(fg^>2IuZ3KO>Lr#ZY#Fymas!_k~OoM$#Oq5 z3mExkkK{3t+2a}qbICVBQEtckv5lw^3FL5n#+$f65MzUP0KFSC%(i=JP03Q} zDFVeP6xpMbHJ1}7RarqK*Y9+)R#owEmyU|gm~y^1Sq^BxpL`=+xrDv@zD#of>HIb3 z`>>U@K8Py&l51afN+W~v;XE{Y;VdL1L^;BEFQ_xNVi-R3fIU?xF^JgoD&NyxpeuhG z#_77^)+n*1s#5xv7Cuy2zJ++%yZ(cq|A}+_<5we5Ag3(eFnOi{!L7;3Wa#t|#SQAW&HkAk3QVft%*u&T0@ z5pjr(OZN+^dz7PUOk1ZKdMWkw8O+0U-cu9$6_yHo4<_sHp0`M^VhZAORHkd%q?NM0 z6jg)fGJbtViK|()LwnBWeSP@}c9`$ckj+j?&i}*SdxkZ&Ze5@#f+9^tK)Q;6bm_f` zfOJrLRq4{C_W+_INRcib=_S0+det7iFdtJVrl9Qjf<)2h>d*zNx)1`~(*IG|#(H9DTHdx={+eC3L=^g-8oJdMm#iqg|YeEPcMODi+ zw!!y?9NVfk#i)FublXPZFV>WB^fe)JQPO{8VTasVab4yNJF#4*`*j1!m=gcv@hiB6 zrn+T_reZIAjIE!q)EE~4UKCW*^irxZ?!H!YRytVx%X?DoMxO3Pg<}pnjYPc>7dyux zGh7G)4M=H4Q~;sY`s>mZbV}*V@eQG}hDn6~OpQ}%#` zbe=QN-xifI8*(xqCvjSv9XP)mpUs0iWW^;v6-Eyv6tFtfK&)=pI2$^U?_Ik;(i&zD z2XBjyFOqIEIbi%*oz~3800}RH5Jf+ZVNQ;MfPfyVaeJYUsbAm;z9@Kf{@N^!w{P3U zU4GI8TXUzNhwus{nXRqznP*fw-d!8nWQ`AJmc@J82~9E~`W@`MQGI#5xHH^Zw=m)J znR8_S%_Tb3D;Cce5UfHg=${1^8URJZ+(g)Hefk?1PLLhy5 zRto@%lrOzbOekaX*eT{M39qWJT|B4(HB~9s8P1;351l5Kzd3*QAp>@7XhSvi{zETm zW33pztiM!hvZ3K>EIb=?ELZ9K-YgVyP=BIrbxDkg zY?~~};PXKk3Om4E%2ZHCF=ZZlmnlTYdJ=zfN*pQiWV*?u%&NN)E8i~#@46RTp z9#8}{2xR)E}W{_Qc>C{Pa7TWeVXv5hs0$DivtxG z71HhOQ_PM$zDzZjK@z)PgnhLN+V%6P{PD(bdtd_d%jpE~(Y3!iYjoTJ8rP4}^>JVIM1h@`=@)X(qvCd0@+YO>L!0++hb@w!pfQ|(LMq`kax;+lXN%xkNx^D zUtMXDbrbZBb1_udbv*{RSqLxwBU)K{a`xMu{8UPX2eO+9Sbtbt7#8oE1Sq&o{PBitJ{O zJ!WS2Sc>(DJgm+u8VVfKtxCH=Lyn!M8q=#}9LmMpnaS2-&_XvM8a}>3$r>Q}iHp70 zEff`N9{J)%iS3*I_g$wP4QSdogz!P5#^qWm>boJKE zN+7dY9FX?iyFk{kb8ZFnlV1ahu7h{^!~)ye6XSOWKqFJDf~wV$%z#an)3W5oW+ zp7`4Pt|~9I*+>v8od4u~l4Qws)99!nO`K7aZyL_f+kK5f8Vgi3NhChMZu*>r6|A^2 zcL2yTd17v^xb)1kzu-Xs@^Rn2L4SFt@@18yCJ3)5(Nrwsw@0E* zieg*u3H3>sw3LqST)O70`Qsi$KOa`MTxYfJI<1OYPQ4nJ=NlpMv3vq`l#?4b4qr+>K8>@Q5CrW7r{zuKRP+Ba!@Ag)w8X$2!-Q8yw91` zNWlF`@g}Naiy_2a?)RtKDwU0MlIQ;Y5CMSO6|*cLt+fPZ2Hv99FKx9K1AyTZQM;-% z4^MLF(GR*tex}>?IZSjDxw(fU#cQlW_TMY$@(z1$WYaAz+5d1P>wau#GV^oIOF_Il zCB7!lRcr{UN-pX>Jh=O9DO$zWw(VSwm6=(7-tSyqZ2KM0?&dG*nPfoqRVmG{Js9v)+1frf2LanDLQKG}1QlQ9xp{S;Yh#GyZ3txQqAH0#^1&Tqe} zIf`ABeoy$;(#od40%`VnX1jg{b?4t{L#a9{7S#jajfII3%{jrS zM*>t^kV$#}0R!F=`_VWJ;{`HlyPw{Kf?6z<4HCazrQDSKX_)VGrQ$XvUaU>t;x9?9 zdnnSyxy){+bAVQqta^Rg6et?cL*M8-^(MLqc+J2)t7F!4{b21#B}&iD4xlKw$fwD? z0^j2NmlcUtVe*JSR)~tJtU!?D$-=2?w_}Lq3DUf;Ct9%=aXx_c$si!6?ky>AVUgeF z#JxM{ii~X<8u=O^;j@FYY1$wzvHc+!_!jiozY(5aR8%C5>MyS1Dk}va8EHowx0p#0 zk&`E-(PMe#PSBk{N6Q@PT6keuHY)hh^FDh*G)F!1{I3TLaNhd{)AcTK@TDl)y)eM% zO{$yt~8 znPA4^LW?pZ5C~&zq!AqQM-QGB#$11le-~s_Z9WQ7VYJki;4z_c?jbM6okUBG3X7=- z8iz2-+y}?L^HB^ttiSGv<`Rbnei%_2Z1@^5)FXXY_kO?=T~V*yO8TYB=q@gQps#2W z;OjAF8yzENF)HI1u<28%5<(9YSUe20O3D#8Uo3Ea-PSE~Fe%ZkE0xC%*Q8#aMZ$?%TWEAmS3Rh7pwX-kQ(LES$#3FsaTCi#6`g<@Y#W{ zYHSwQ#_CgT?zopcl8&W=52k!~D6+Ux`W?I>jil-BdPyYUS>HVH zIqRKE_cDMoWJ!euFIRb~Dfh@E|P`Q$CXkN4JscFgAm2|P>nKBMSFE0_^bEY(Vt zc`K2Vk|um0-RSSrEit7|iix?mHB;j;o?w~hH1_~{J`Y=&hoR${*wkaF%|QylEJmb9 zPi3aRBHqWO>y&?$WBl_V(i%f;Yp>?&l?W~2A9(S0S5VvJSY|cJbhY1yJENcYe9|Ps z=Xf<2mpW9&?tD@|=fr=6H06Ie;Z$U=b~xFK>3ll>f~g-mEXembpLd`f=d%M6+p8S6 z1{8YRax{K6_;yGa@?B#juh7$LBKQifduNeGe8O|P2a1sGppoe~qi;PkB9nuNHhA8< zsYe2D1?!7&tb`OR{_WCZ}8FIz3yJVkwCHn4cbKTD& zmEY>d%)RbeU=&JMCpMXo%{;%eWuE-y+~IW=oMb7vh>_y8v`7(*9J4b>hYBZ*5dB0* zf!V&ziPoI6)3bl^S=ZOA4^H-KoB#zoFa{#z4t+`5Ow_^3F2#gfHG;j2>Gx118cyK3 zDZ0obk?;dDx1%$FOgiYQ>|SMov*lx0vO@P#XS4i#;P*giO2#T zO?Ok9sFyH+J)#fzKUb~oEgABxKO6LSO2ha@$oALROg!Qbt;d(xzatSTdzSiW|0!*g;q~FtmKo3l zUtVEUd1*j9=ZI)dpM2RKiAQ{zXjs^G7V4lEiA`lRqF$zZT?K2^k?BgNwzWS0Ms zY=n!nlN~6x`jkyI_J3engYkCfch*?o# z_Rh&=neVCCIm_}jGn57}JOzBB#aAbp4FSf{-ZYk17@yF!-PI!!qKdOuc&c2*yv7Hs z+so+4o|ZfFvvZ^gbe6xMD~RWznq0jfKk_^M(2yV5 zAdX~Tmp*EI%_N0i2VN55&j?+jg+WS9ydQ%nUBCxzhudO=K2h3jQ%L4%HiYJW%;rtx zAL<{`*95e}whMbd5Flj0`uED5w7F9*<}Hhl4)cu)tm?@e%w|67&+42o&}hgm%DE+u zx8+2!A;Ud;XX8G%k)X&KOZO@79__oGAsAZ1OCV{cT1-!p4Z;S%8r564BI?rg?Pjl! zv;Jd&57;ZCHs|UzYv~;KO&lXFY=3nJU}xE*$pYG6J2jUZR6f%XYf7C3&6JK7OcI#M z-TzUJBc|$Of*^a+pnJ<5*!jfa;S+PiwXx&JI9!ssY4`U8&F;vgIha@fR>)Q5REuc7 zI$n_>Om9JEZ+A|&Zw;@q0)Ut(A1%Y1N#p2J;B9h9O_@6q8%<58Lw47$S@1{qzGU+t3Ur zxv7b&pz-4hD$?PHb|bRk1?5i#*)ZkPDaB&NC3 zZrZ7=$ts8EiQuU;ZoULg<-Od#XLX8acpRYeOz@2Y#7A6;L|(dFHaM`t z1WMyN8ht?xzk9X3iv|1;D2HAqh0jV=xmt~6F_XUf#bqIl)7f9)dd{ZK<%##Se|0cD zv?>Wu@ILUG^(b#DBc?skPQ$wqP{tIve-COm>{zz6?k05*=d!Arnf`=%Pual%ygAj} zLE<^mN>MWFp>)=ankY|l$y5i7qETxeVj7Qh2*G_i^Uf){dOWUg9<&Fdko>7rf;am?GVNgQ;@$zJ*0So7AqXZ0o zX$qO_3^@-8h;K8J>HGry!3_f>W8Vohr1I>)Qfvy*eX#kZ^yJCHd3&}TrMSx})-dp+ z^;O(nc}u7MFC{nTVR?wBH`U;TcG})+)|i)?GIoTO-i%{L2!N)_Wn60lU;-b3e&Bc) zj**Irl~-CujYH{)Xo+dR6~oC_HlRJ~X8MGt6liQQSh-tbUmovovk(x7LX8t0N&%j2 ze^|N%rS}cegW;?=Kn0sJ?UvTYM6kV&{s8cRdPej52O6^P{F(rW1%S?SB#iEH-@3Yt#?8>!`G5j* z0;CVJcT7{7CoHUH1r~+?n!0)Cbv{5kNBx3b&$jj3I~NP9{VC0rWSdan#4&D+GAlI# zr+N0VKLheQd*i#5w6^@Hy3FO6?lVrr`J-M=RK&r`mxx|goG_At|5*lcwm*+%!+zZ~dx1M|G+ zTn*1v`ySNyAeD>$4dw8|TG@o28$dI`!^h7RG~8`3>EhoU!RqoUL0`*J4GZ^gM z8B7sMsHj*x5B-oX;nkZNc*>F*5q6d;;+)8B{0xXYDzq#j@rseLdGf~x0Fe$8WWp~X zz`|lx>M&J5BB|#;m@=9r7vKgh#9z-`qIIwE?^FS(aCu;}xL1VL-}&AOzMd@O_CT>J z&j@!D3Kp4_YtL0{-c)P_sF>V&c4MprgweOhyB9C^8K;x^$(-|K*<5UuXQ{(ngYM$u z;)D5X&33l4{lmjrf#g5+VY9O)dp^p_h5*7GUCyrTv2o>O6X#YH5kX=IeO&`KfT{qB z{g;G#8R+>kbU=~tQd|=t_ah$DoD3u3i(zK82aVyrp+K_c<#-2%7 zSo}%8W2yWV72=>Lk$ ziZA>m-fF&Z?z$Al$8Q~<1ZGNHs7HAA4{JUz)!jR7`()pnP|yY4cpI?tlpyFcGs{#a z$DIyZvvQIE%}B+OE~op&2s_LrG>vDgC_k|nz0t~OHH zY3RN=!uN5p6J01IIVnDxEdxt=B_mq6A2>ECw^N{ZuiSVjb%}x5 z9X!m}0kK^rXRvtKNqvp;tZeh&Xchhay2iUqsV*CsE+Z|hrl^5fZ>SF2JLroCl9h{s z1;DzV=Bbno0*|p(o9oT5tRC2N&z_4je$&LFGlxVnr(qT$(Uy}qE(?qs{6E&a;3vAe z-@O3-1}*wy+5h%R=gp<`!nu0AcO(o+9O9KTz`x@>=P}Fgys+iI=Zm>$uFy!{c^ZwuHOiIl`I*uGnQw4TEY{Zdrh{;!S{&pRshVSN^=}`-c>pBP~c{ z$_cPX=>Smi-xP+K8v7HnHv%xC&BgA{#tIsa49wa$@0EE1&qcPAq6YxJWq9X#Vs7=_JA=OqNB-gO{Z&f;cl%Y;=!*N|!PUBnByAaV ztbU7ToYeZ&MjlhPAmg}J3E{9xN@Tq?{Y#1XK(9R zN&m&NN_bjzDWQ`aK)|_l#903vg8GLyK&d9n=8kXyHHtxx$C6>o{nLH`iEHz^XMzdY z#o;pifUlk81_~h*)fz3kbJ;-??`hBr!M`v9|Mf%vyU##&!Io-R_A?;nd)X{F(+!BQ zmH`zK5usQL)Ah2`LW<$6=s4rf9z)0CrxyycISf+~F)QBk(_S~T|6=X+L4!0-CMHjt zC@jZ@=#w*J*;PfXdpEv2OxH6jjUFubWkle|0+duTMlK|^D)uJOWZ=-f6$Yq1E4A<4 zVxnX9uz#nz^yB7em6Menu!NPzJEHGLE(W z1foa8@2CqLDw$bl_dDb@BhQ+{4ah*_A?+JzO^j!ar@sH@A!|W-fx!$ zNZ=%YcLMz14mZy4(MMG5mkF7;X?=`sg)=@A!~V2`i&AkCWvJS2zAYJG34u0V^;*CsjfJ_ZS?^6eTuiYgCU+eIo<*du9CFmfek) zhTEI4GWUt8c!c%0p(s5uY?>1zw*j|m@aCoiE?|N_45;q9tDV;ObjI?}@55UT!*7Zv zZ~ZVU(R&+#J7gG`Z%R3k*IXVOQdAzuEZ97?^Q?ej@eYLh@ey(Zf*u(}a< zaFze(Uish(8N-jhUoX#vlE^1zzzfkG9?iRNGTy4G*r#!qF2!F}J^J`(ClaM9kl}@U z$Utd-UmmT_!3aQiTxwj0n`@Q}@dedk>VBROd|D=FhA0`>elYdIV|Zf~XhAQk#~<06{;T4R+svj|;19=DxVa@SJj-hGUBP4ka^8uaeN2bCw^zAAqvaQUWJ`fND=)g=6IT_1OpiXJ?Li|+~UP+E?b zZSg50?hj;ld_h>&(`tIkL81|fQko9A*A*6Ny7!6HRUQY)&H27XV!pa?cIxeFFslHs@0!`4E zT{W+B3NiKa#0o5ro>9-BCfcXxG?K8=cdW`XeEXF3gwS#i7vQ2OI70i3p6wcMCeNRT z@V|}JA7`ZxS=U|6upJsPDMs#uw+658VyG=FapAhLX|uA~IoXXzP;N(08*-qz-=PK z8gT_dEunk&=23m=2wle+dQ^=mCl9Q;+&0TrLnBJiK?`9+#}Ojmn&~o;*^+Z2rt!vv zuj%iz$G^o}E`Bl&=tbYO4v{SaVw19BKCx=6 zPu4@lStbXQD^ES8Z(y0HHHRXDuIJ`$i8|bPAE_T&N|AOgI7cl@dC9V+O!PtS!U8;3 zJPgDTqNrq+Rp>H-Xvql|ABt&t_HTIdd0+UkI6l7c4EdknDti+!=9r0NRTnb$Kzn`= zbo^nUS7yR3bI0STnboS)Hb{1^LD^Lsy|=QtZSzBE7EtqoO==W{ou}`kL>#J6i1Rn` z-^&tSlw&u>pM!h9I5(XJ`!rVkdIa@tUAe``=w!WX0P{=-n>9_$vq?x8&wKAl`I*j` z3;eo1LIf%@uImK^$c|1W7HYejj`Rrq5zi$ye=D=@4I%bbAJk+CXE*(r3Za=tvQE*h zr5a;J#e9F^pQ_1XZix=cbFWX{dY66c)Quy=p!(JeGVd2;xW>W)fk9Pcz@v8@`@33p8t-#N5yT%k<%R^u)XBFmjY4^a|n^@(z0y>LMKz!pA@N#AVWS4}GY zj1K(b5aA3Emrs261V-z%t8loDnYyF^goy+}#j~^>NLGja#D|@w7D188VpCNf;cZws z|87nt&?(?ah}e1Ans5pXrTgJ@&^p1M#*l19+?OgOZ2ySg@t#YnJ50b^WApkIx)Dd1ST#uhk@=>;(ucj-I95%8?n|dLvgjg^NU>=-v7ZW3 zqgx`?m;3lQJqzIn2-hBATZRw0CWWNO{IFXB=$(A^)JPXm8N5x%j(IPDop6HJkVo#! zbRWx~%~mRBYD-~BI{3!Dx4|yUxfBvKfzfGbl+L9|9LkEJUUVtA94RkjVGfcSIhnB- z-;jsbo{^4Va)(wC>OitM!ETCX;oA`!qC%n{ns>W+j2eufci<6~w(oaHP>A;_EctS$ zM}U~fV%^0Fds!wVkMFFot|ikH4ubqC4ne7(70ai*{-U!Eu)c68dr@nP`ybT>BqhI&baE5{QyU|~Q?@yWpmPq{^ zn_si|88?DXj`Q^x#io17*wzk*Vax-hyGm*_bOL_nO%4zpo6$vHPk(W`DG&{-ig9?v z`VQfbGF|;Nr6W2t@@-RG~4>-@cJhO(0pv5IlF7E&%EqwO2uq*xL&2ID~O$P8U{%5Yt;q?b+!ISe2gtrX3-J0#SA_#d6tTqe1 znz|J2Q_Hck&GH`SqqOAiT+%Dcah9_-=JnF}L(;FU6YJ(h_p#ZK=3Lh1u4&oxsL``S z@hC{^e8q;CK%*dy0`nM`!rN@;prf?M z;*actfa1$bOOjy+5+nE6GL4i8FB=-06W3jU5;DMXns6}s@a4;|AclOv^#W8grVN5h z$+TyDE4*}t_CXde5dA&c7b!HQZR$qwWlpBz0D1A?2iK~Y;Kyu(gwIqKvjO7R0(sze z@OU{FGyX@a^j4D=kktC{*HXYdC1)*Hqh!r;$>u|oZ7J;~$~;tA%P0ur5wh6}n+S8? zZ9ux^&ZO<28cf-efR0>Lcby2^uJN%w;XA&}h&sKddHevUCbET``<$rH1x}+#B>_;{ z_q@1j+xdZUBeu8=h-HF|HQWPe3)OgSe;*m($!e3z0A{NP0PiwDTIgZU7*RL0s>XX; z-w3sb7ataV6{dMc=jZ+`q?Zb6=rE1CGr*pqKKs^R8h+-JZ zhA)RQ`CKIgSzEpv1#{?WO9b%5(Fy;$epc~A6d{CqPgrF@ae@&jot6~5rY0k!N3*kG zY`sclKZh%u_F-f=ia^1-p-mMlvHnVStN5IU@*#5j0>FS0_UbJ zX+QJR*)`EpnvS%k&V8Deo@Ms2bXZEV#ATeuo2^X)_BFRH+gro0l)Lh~Gw-ZkKO5e8 z0_k3JE9~?YzPvHq5{Z9GHa_Qm!WFqA+r3!Xg$08=_Zd+(kMZ%+6++a6jALxriQ{5{ zB5PX4bdtnQoOQ#^iIPFUW78c(9YG^uCK&hhWuEAgrm{5bJ?6dR? z>Q2mw_5T2(wA6w#1C!ZjYV&Zj68G<$9GQ-G3r!C~z7mqndY_JGw~-sU?;-)R04gQ7 z$yYtx-4>ze)bNvbFK=sT-KA3ME9TV8EP;@8myH>9(B3EE-0a|F*6g1L5JDN<4B1vS zPOME{!f>rZYS>u+N>r#S&XfmE^J=WKf#sb>(e7~Ld~%elIe z<#G(dbivnd{`{#IcNw9&ajQqFLfi!)PNm3Ea2pHm9j$DHAvABLR}@-?|XKTX(%v<^K6$Maqjj(IUe9o0o>!q~pfv z@)-P+hTnUknvbsl= zgG!%~os~&QV()Y7FX$t3(pI0{7V;TX!{>~cdvp`d)hO$;v(P4RTrXS1@f78k92%bq z8f%YR6kDEo&@60`CVDTgg^x$4oY96+TuRE+iP638qNbG|_d$9JNGqK_sPyE9XrS{n zsOtEexP&q|Z46sp=J=m?e2vgDDmUcbXEX$+M31|UWx)o7DCKW%);k$`I;{4;9|JExngqWUv z-Wlo7Su;IWmQ#toW;_eIZVYu~tH=?{VG(cliPNwW}i)DU?6RmeV>d(6^HT)uELh;7i^00ZSA&D8X_TgqHM01WH z%z;sr&D=gKOxLM-#|V0uO>BxBSB@J@6{$goreydX7y=SyUy`|eIU>F33O*Up?qbON zCwuEHG^z=JrmR=Vwjeem=8BVC40}PE? z5_TF%$1)Q)u+^1UofT{(J~9EEp&g1!bcUoFTdy~K!B~emTl<1SSeIA zUCg=JRKH~NvYYFZBdzyHi#d}-PF#k3=Ga&Sm!=*tMF@-m%I!fTLHxV>K5wFuXg_=6 ztOA;ZFbQ!d zPNPCX`vdV1Tr0~Wj~=Sxm&xN}^gsETTDCy8 z)etp)lx~yoT?dN@w6c4Z4#`E+u9Ykm}6dQCH(g`W^mSx;jqy%5>iFa4==cn?8o(X($eh4MeIg1s3tss9omIS@B|bdr2$XV(>BE_=jZRVKK6gC4y&1u zlT}q7ye?r5$k>_;1Epp;(ltcqjp9cvx{_(s1XGpeR&sgLH`N2rA+0ClzJqEmxq#q> zQrD=?$xfuVU*ZKXs=ZG)3jURuIS8Wtyc_u@g!yCFbbfWBP*#t=9rD^TUmdk;dD`(+ z-^}!5s+!rpo-5i~kAegWvjST_`7^47$htpk(M>xx@E~ZS_B!EO^S06j5Qt;Y>$?ha zo$Fa`cEO24iup_>KqT!V^R3v}mjVDgGGA5oxsBOnBPT>zr2SlGLe)uB!@|j)iRrL| zD4s%_{>*go13;aD9;J6&QM0Zm+j81I@uI& z=)C`zME76h5b@80D_nm#H~cZuN-O*_ep!Rg(3_L%4al$QE&FI_X$7XRr|-QZS&HLO z*fK&R?Sb3s+4^|h>G2rgl!lL^nDk4VF_ljJl>prWV3U+MtjA*)w3*cMw;{HA5cj-v z>r0b|8;on;27rV#PPc3Mn3PV0E}1?%7u3`c8?U1@IwsIpT>yCD)kT{ZXgDrW*T`>S zvZ(|Ym0^)`O~RpetV`wLRHM(Q~`>mizoC(9-&L7 z5b4_mS9~)+xsjP4i-ugM711~t{|2_7eQ0P67ZW@XlSw7m{)PS!8npzP&cccor-CY9i#z!4-Q2)Z38>Si{ zdDoADcEYB-C_edCUm$gwMKOr*GWYvP87s^*X?1k6iBHE&Oh#$B)_W1>aV={O%nO!@9zin_8D{g3%>!UtOv^+sZO{`1UqzH~e4!&OAA~s5rReuZhgF5NxQOgn42{=(^btuUN9q@`!%@Xsaam{OgjnBva(AE&< zDPNoa{E{98TO+Tg%yCs=sD-YW=VpEKw8f7}gzAhi_e$8M(@w^ZnC-&4l~ZyV3ahW- zzC8xx7zwhh}a}>{PO6vs%(IcKXC{&iUM=zo)lZ^OWp)CY^%7HIDv`lj2M^1Z>*y zYQXR9%6~-(x_b^V$YRgSh&cbU7H;%d1jn+duF=p5gV|!n+cC8zDmjXz^eO13g6QNe zi>~OFo<`iKeGyQ}RZwW;9p=zz`UEp6XAjX;6=%Q~s`t4fFq-D8--=eLk*=8kVIjS^ z`%{@IR8dXh!`J8p$ zs}c}bgg=|=@zn0<>5B2+PAlAGI^g1O7+XfgfgUY$?sf+X_nFrVq(i>jgoVv*!EwhsbAYBiO44Fq?4^5VL zrZsb$HJQhoD*~zX2F=z`(s7j^@Cn}c6~F!5l(LNpDN(u{Bfc^wP1xpWD2xiRM07SrQ|mV)d#@MOKyuVpMF&UefDNZgT`H z*Sc4E+1zzkLQZq_YxthuLy1iFJe5472W**c$JZejpX~v*ac^<+xN6U5K{9Huwm>}% z*}qbCWLeg9m#Qlbc&CL`i1-r|u~Fb|tJZ2ZGY;-7Z$f?CJfW$}8(edY{={t_#K z=m}(5x59kNL}+R$zw3AJrFnxFj`=>i2wFflW;(!> z@P2iVw>h3AkXPimXd!0h92|SFWh6nbUv9?WQ!uZkJ+0I%vJFAo41B-zXoD7Z9S`~- ziN33coUX4(jYekgs0cGVTIv=&s1hHCN*l9Z-t=8qkQ0!PDA_q+5-m)Xm*-sfwWjp) z2U!buCrp)Z#)l-_T{Ur=~}wG%R4C zn_ME;#xxkZv~aXOdX4SdK)+MF>LDMR1`;lM!3*o2g|1)4TeVCU+u7Ym%2^|S+EM85 zA(zn){bV=W6;z)DC^m2$z;%vozLqpY9o;7VMCwor-oLl||FN_BKgn?YF2Dvc!P&Q7 z|4VXgub1`aXZz8th{F^ZHC=R@*G$bzpFDN@)2GQ9!%_gX)A2H`@lEG4&Vb#$AvD$b zDT{8V({VXHg2rU*lMxf97e3SM5jeKW4P_YG>bAj(+t^%6 z7oX39m0V3WmHI5RhcsuX5~~(^+YWyAl)hzTUhGB(MP}w}r(>y-+ATTz*TxBjg$&|L z>MEc7&P#P64UAe=3x;*lLc{$(zVg3&u<4cF_S8zELYh(r#a+EqEB~W zdS{7kIS$Uc?q)k)m28k1%z^*7;{#^DIR+ik@4BF>0pvnqk_NqlHgQrPZFj$yn}W(p zO=?(`O5kDoPBP@K)mjB1l6J4utAZpB|rYtOy#*H}?nrz@I-eT>+(usp^%Q zrT%+y$&z$^d{Vmr@(CACnlK%8-R zY1BEk{RZ@Ffc?(FLCm{%r=#e$;{m?X(=sz==Hlc%ZnLU^S*gRCy1W3`L^dNH*x+kp znna)(Fs##3@&u-QcIF42okn`Dk2Iwgh8DGa5xgK$SW5q*bpSW%tUp_o?`;{v$;*5( z$$fg0sNAS?{5#Lg?9WBl7seKrHE)2NDC9!OavisUS|6>plUG)gbdVlC?4HHd&fAr2 zztJZrA*Vh3NWvsGk#_g>u?BQ6qj|K{-iAnk|3#YMTRG3ok5rh?c^el;F%fY|E;^ar z9K@^;e)#mA3l9vt8J8Jx?A<>RIL0GPZgiiy1H;9pnGx&N4YIYow0<`!LN-eX;73g& z28OXA+uqRK9t+K|mOvV4vz(5U&iex`pIPmN9R(79A8Z!ju)Qeun2}# zOtEo6Z9FIS3+q(Ct_0$5HDE!xVg<->w6w`9N?aFO<$Tr?L`aYts|ShP=d|RX&QexF zs|Q0Qe`%J_ILA4+oVWQ;=@E>~dYvqiUf1F*;lsKC5JHkGUR*5CS2U zwu@XwCHH2dXYZk=)tTX|6OE_kg$`E%=M?>}h~u8k-LZk`?D+z({SBT34!uYJ4{Ki? z5Y^tTjie%B0U|9ufRuELfON=!v`9$~-7ug6N;lHd4U$6*AxaLQbc51E$52CjoBO>U z&%O8Ddpz&={dMMy!=Bl{z4BRWJ?k~ot(fS?J_iMBAH=o6OEhjIZl~e*_+NzP_v@lW z)XgHsD&5lagT6;liIgUcUwp@NHUJMTqh6okzPA<0GFd3~LU%#88Wan)O4yrn6nnnY z%Z2u@!z-Lu@p)-2PhhP6+(O5xb6n*?{EmC$Ll+r%kIf!xq+52cpEpG$LnT;x=mTG$ zG)Nm6{Ojm;7?`)FNo4Jp0rfR5mG|M7eG{ZOU0=O_ui!5=_ZML9C)s)v z=sKU%SM0<783cEhw*Y?cB;#ZsSDm<`UIZgM@8)A;vAado-DziQG@d7Ob1m#Re(qjg zBG{1ppvmU5O*ye}&-Xewai&_hq6d-3Tsu+pa=oRju~{FVLh<^~2u-%P~0)`mV%QX?WhJS&?i2|wFJ z4;==aw0kT=QnmdRkZDaCUnUzqHlF^d-0hwd=(Wx-ogbYAh!2I3SAf(CXlhYNA%(Ht)F>dqy$z93j z4jCW*g561)Jp@e$IJe}4GMwh1*E-zKe!}Df*ojx`m z?XE5D4)K*kNta!F$5Dz22x#obP+hRe2~h++xkxwZ^Wdp&+QSjTtBqPW6E zyQ|B~ZMpAm&?;Ds?+PsugU#Ovp4xNlMtnq~{rz8FhMGhzk+e9o$z_5{M(i#+-D^wf zHf092tM+WT9SO=0BD)z>+;LSpYF*KN!Tj)Iwh z*+OJ;Z?)AhR|Wq=$IVQbkB=h2pmUg=PaC@)TU=}EDxTPz*XK6$Rsa$7BNYvT?U=}! z-rJ5Laa%4ouqF0gyjTbuHM-?8Z9sx5*@+7yAT6x2`KE+Rh0-KlqK>~wi+(B<6G56*{?YD6Fj83F&tK-03bmFVs69AW^KnuuibJq z3!<0Qk^Zw*-@%CbBIr<)!xm8ta+rSK&P6#LY8R;}5H~GV0y%MGo&8isTmi0lVF8Vt zG=ve(tD$ywT*tI1l7iQLM ze$X!z6h1!oWNQ!9Fe+5ZT3M;(!s*Ss;j||fJyUx)>< zb&K^d%c`eqIgd|EwhR>W*mmA&1Z)X}A4CgVNpefwP(C$lx~jX;&{@i0v_aXFH+AiNljd@wUd+C@1xH))DOJvi z`9qaejhuzO{+Wb^(EjHA;1de_iP&pI&5)8N0FeM>7B(NYv45Oj2cDz;xflCq(E8IH z{?Sl~pDUT6D9idjuU+R~{gN%i_qn_d(w8(ET-MyH*~b@!6FBrtYG5y;d?o#Quq^MO zm{V(J6ZCHd&dCJYt6|ym0k8^oBz5n~m5u%Ot`OHa2Pren zckiY-Ec#OTW?o;(HFF;Z)p;5fI1Kw_ZE~V!`qrYS*VZ>tsX|Wer;Wk<;+4T9Y*sT^ z$fm9psh8G-9jYl@MdUuRriXij_e8Qr0g`|uYb_JGyN5O;^Ob@E#M%}QwPn$ofdz2% z55z17l9!ntPka7Z`YMuFK-{;P+$Kw$MzbZWp%OZ_+~2pApWPOe({DhGY+F7*$nt1H z`rL-IwHFtmzu=b+QSs(eig_ZuX^Lif1K{`+Tk{pSUYv&atyFg3dr;JTyZGE=Cuy*s z$>l80|AbOY$_2E-%+~5ME|jbn66Ejou>lL z?q<9!#m~xLtfnUEO;qm9fNvKf=q77y6DF#y-}^_{>0rP98++*|S&ylW^pL`o9Dp;d z|4SzQ8*c$nWm$G2-cMnDVnhqah}@5OPW%U;@jrmym)|#<+Y*P5vD3s~S2m?n1TkrJ z=Vn|DKB*ag6o7AL&5hKEIvw^IsIJG!z&*@mTlWf}(pa!v&pLa&FCge8uS{B<#;>AImoKj)>-34R`Z=kJ%X) zZlZMw51ydAM5jCynwoMJgSPTWvj^w(|I1Z>`+vV;YTIIT;?bx?mP}^uzZ+xo_cvn{ zZ47=xaphK2)XiIzcV5ma!~L$N2szdGrCiJN|6k7Wmk;~zuO!?5Bt38Tu@{nbIolYMfu-DM!jOKW;GDb2u>nbaoE|5qpVIGBu+=>okj#`0JH z`rqE8O~=3U7TDjA?ygzyx|;n?HC33g!Sze`a!gY!Aq9W(hFmyhoHlMV_2nPtLYd~xO4Hm3>hN70E3DOT-Ln3<_Z&X+^e@|a( z!@^4W{4GjKhGAd@O30G(Wy(x+Rzm2~M)_ z3<|X)J`#N^oAnlvCZZ9)f8H)M<6^<7Zo+Z01~DPjL%8xm^1=mH&aYiVn{_A5cGsgQ zWO}n~0J0w|b8l8~MeL^B-+Iyi;o11VVpp5Pk{tR%vArU_`<4DRVlDrbSZ0=6;uX@7 z0G}US%Vv2uy}uW(Pg5`>Ee^_{on+}y7Lx9u6+4Umv^XhMc;wPE5`qlh8oQ8alA@9K ziBI;WYPyTZn|t)yWP7;jw?7#YQ7gm-gv0~%Lp=+VWlWdh`@wX5lh>hP-PXC>rFzyY zgEhGVPL7>s?t8cm>6vo{OXHc)duoR^3NLIt?ARQy)E?>w(EWu&iKU(%PI3AiMG;)x zQ^=1y#|I5GsX-56!yXsa?ghtL;T!hSdO^N}&?B92N+GM7YP;b_=UV}-vMtJ)n@?-) zjj1p)OS|YJ#BvS`f{{hOnk_1_tsF#n<^QgoX#qc&bBQaHQ0ytwU_{W(ccl3^5Ot*T zy?Ugn-inuz5tnV;<~h))bGtyZ;MHbcg&qM7w=ATn`%QnIAU5>P8*IfjtzO3a_eB+3 zuYuG)0TVPGTGz{da5W`44aAmFPOMW{HItmGmp}60b&~6fW^^Wt6PsVPFygPYS&_}k zQ?^>h zqoo6YP6Futy!+Ltes%;5DN-2t-sbq@NIr-kExYsM%R-aaW^9^R{i@&1I4P5s+x@F8 zZ%gzps%fHgXVwlT7bFg6Sb;H@A#|<^T8l~bcw$QH%6(9BC*j8A${7t*SY31bEeI6S zF47jHaG9i^rP!v|InGvbE*?6wh)ZJ7cJ!v{d?e81e>C!J$T`N88Hu z-n@OAtva+NdS5|J?ZebWNu_3q?iWfnLBY=TlO??@XZuim1&_m27^3B#bqbY8X4u+p z24FTU`F4VTIxvq^PxhZ&0Dl*C{QR4LeNNJ!#6HxO4w-a19bk~~jh#8UfPC0yN?5)0$uP+5f-5kyyM=1|rL-T#WpdcXxyrWAORo*@AHcdB}>&=7& z8@xV2Ar;;Nn_$mRadawO;ls*9_rO{tUh0z|`=H;T^!*cN^6OAqs%hn$o~LiZdE8KZ=?|MDWzO-~??2rkl%6VfRMd?79yQsASD= z6s?a_Sb%{!2iZ|DZgh>UF4ERZ1}FEKj2WX4^t`b;an<^HonyVKYzLo>eQIBBCNUQX z0299@gV1szOQUPH|F%cf55b%n?UwK8*c#2#Eq{Sy00SjFFo=d~700KFWSMO>xwEQg z*1pjyWFY~?COpkk(VM0;1n6?)<4@sJHj|YWWuoVwoo?OJmABjS2m$te&zJ=g1YH>z zXVI#9DeP4-Q#@iEx3FNUE+G?q=cd=eZ5Q7F{5qmX*D9&X+Q-SrIOEzLmC*HSlWbQQ z&zr03h(FM;Wr+jDCjb=MPk`)5x_R9WklX^|0!{8SKBS7~|KK_PTL1s_VU{_}Q6-Gd zb1c0598G`XgG@|vL#R_WFz5AkCdCpyjtVmaqN0UifU)+<4KlzI+%P@$O1}&ZZ^X&W zpI=OI0MS&RGrOA`3&q?P*Fwf;h5|M5&jbq}U1Qm_M+$-RoIf2%x)U&E2paBh&US;X5pyv-W~T#`%UywI=%g8NJ|0+`X%yR5wn$nSJ<4~cF0ZsYQmRWt8c3j<_1{N16miXIX;CMwk00kuM zW3rPz(9eueCl_b0tX|_sy2cf>2^~pqA!Kr7QCEGOAARx#W^Br4a{qnX#iI5cOY(t1 zJp-@rsmzJEsG5;>+_kK&*N3aNU{>AY{26h#%@n|L!@cGgKEI0@F^@OuPn9S`ry*K* zPUZ+eAi?_}E4d_UkaP#6xqom2U@9F(ZEqL8=$GByVNMUJs7SaJ*KAg!)m;7(y_Nci zh=@|7T6?L{lHiKquxVS{r4?{Vnfp#`D5I4h_q@1c=RoGf&=j!1L<@YmKl?9j?l0^6 z*ROC4TN-FnzONfy0GZu6pX%a5*V9{YHrXHZhsjcy2Ycvdi}c7_UqU9687g#ZiwzoD zZS?AG0=!WuXUmDI3KqbyjjG|!(qu`6oRlcY2GAH;4%^U=g zOxu%C77IAolG65b+4{}CZb1DPc9_$6JG2w!y6+|`XVz>vce-a*I6JR7#-xn^P_iiB zin_;HSd{tXtl~wK|Le4bG%-7FEa`)dkeIHg&G9B3;mK(5K|}}5T3$p1(Anx@cD6Z2 z9L7#dwJ`8SvBG@X6PPF_x12&<8P6Bp8^ZALI%-(DNg-exg?B>8)t426jg9>z#aMJ1 zR_D0T`OPNu$!~3~|EZvV*6UJ3f6SX0yO1GQb&1tDAO&5hrsI4sb+69{u=YiXte?Bh zxg7=)GJSd2Kyy+!@<7Tyb}C;6-7{APCM643H~PR0_V1Gwk`m>>aDqi@jLl< z^Jcb6yMX}euD@uxtYnw7QzsT4Q8!u4)5_?4*|pPYKIZvGhp5HA!P>ah9a1;=M_q3w~hO6!HIHh?sa zyS&^y8Nc=#0sHdDSpy0njpHlpS$%5pxh%Bo4LSJ}d=k(?>38z~z_w^qm>Kw zU{z8H$Im@<3_n$vStFVNj^^%NZs*@%O8m1^@-I@HQxM~PpQQ2wx$B6wg2S&XzPTxw z;al-kGdH61t<{pMYq*n}Q5?=^FjHhP;`S{{1|)Msjz$iCrmv_0aO<95e8hahLnHp$ z2L0_*kdy^_Buum0#D6wZ(BfeR5m9xws#E@8y<#+r;7#_hvTOgf%;3+z{?B^)XWeZv zz%<;v_txRh@BJcLp`Ln$aH!}?l;^sRd8mw{&fBwnu-5l(aVZc=b_YZw3RrYTSBJKgm zNI=)g9t>e{=vLJhVo4f$@5ltrMVz446anJPFQcQQq8)Q{&wWb&VSKcm4ah>;keSWT z1DU&bqt@PGAG>UcuKJ8fJt$bXt}x7Wy2|1Dfn$zo?9?Q$Hr#&vvP5%c^<46{NwA7Vj6mg(e3?l`Kxy* z{qyr#fHMO6Pk>y(Ta8vl4aeu%;#})%jeIpa>zIG&dUy5x2xvW2`riDs9g?lLU(Phv z?XP^3zW4AY?X_#yaDHIJ;cx(>dE~l2W}Ma!I7kL|_F~Bt3g&-=8rh=&)o?@^@M?wr zJjDeHf8A=UuFvmo=K$FMvAOc5{u5y3y$eQXz02BF3ZTn3GPo5CU&~G8Y=ZI%s+T^+Rxjx8=5G;7)wvc)vlq{UFMb~U}rKtO_V6qEVysg4D_YC?_}zYe6$(oSsf|SODgx=U!em6U=j%A+*#$d zG}b=}|0UC|ZQs#LQ|JA~+#~6VeVN(#`udvZ5~Jz?h-uG0?pPYfFQ0$7V=zZLi0Iah z8*{6ccmLS<@>>SfpWyOoMh2z+x>0QfNgTI39J-pXUcc^@jL6PraAJ)EZ~@y*0*nHK zh8m?*VK9KEvvYHE?~YrfcfGsKZ2I+sR0Tj)OwMOD6qot@AMzBw!MI_E`AbT@IX=7+ z?T%%o2P!TPM+=af1g9TW49$*fH)!2C$O$qJsx1d)xAOj3$|z}w z@4mQbiU{~=EPy(b3N}!wWm@b>5P)imaR#TSr#GJN_IMV0>@EHOQ0j3~HF62jC=`8V zz?*=8)dxE}JO30q@oyxh#d=~G!b|gqB(;F)KYAV7!AAh@XM=xy2-hR8FqC~sB>w4e zStK#>h$th0M=hN4?R#4gss{hVdoiz?87&eh6lytMkt40=I}On5lo;v)KGY@kA7->3 zmr=o=f4`a^z_&WZy48H)TW?VXnQeNAroVr`GzsH|m%ZX^T*3h{Ro6f1) zRaIM#ehD*_X+`ZS5(7WuUu_n+NH+Kuhq&mThnL`Ezr zb>ro16P(?kUK5CZSb;;gR4D*T9hMU>|8%#%;e%Ul14p#;24wPUwBpWPe_K#L{l=?Z7!WWXqfb5x|H;BJ%mI!2*ggwc*FS0e z#x;I^#NYZ!%i29*ZI%CrWTqAb82maACq>AwokIWY$T0k^s2eK(qD@94`11X z0TN?JupvL`uVKaCQ1Jisk zb$I7cVTTrmXPHgMYvgK@JJ>-+KcvR8$5&fBuMcqxdH%@9M&l{oOuz5BzOJc~Cd6tH z-LIfC%XWC|v3V*aFB;D>69CUiF{)cpaE?GW?L=?n1qt*1;Y18m*h z{KeAkuYWB?)I&q7L>Ji4!X6byAwP$BUMbd6 z=H5h%F-}=2W0)%VIK3k_fhq9{ZQq7OBe%3dU@Z~Gcn#V}r^+`9VPvg82%khfE4*bW zu8#yasNfz@(q75oC0cqb|28fW+8+z8DUGykfF;fY$1A@#(VHWkMKrKfKSE?;QB}_7 zn{ZlgRjOa_EbraulWjEGMD8MRm@4S=DBeyNv^RoC7*@AtSapvU&owQ-P#NpTcAsRMc9f;hjnuw(e0gxI-dMEeHZ?1U8~v~ygId? zOF*0`e5feoabg9B7hS@&4 z@4WCpZ@>n{{0H+?djP+SNT(8UeFAI%&ju!ORu3%X&Tq2l<<_>n=sr&1f}NcO3)Lhz zcysyA`p@r<9~SkBf0u2KEXMXb?e7dMw{lAHP&(74Bbq1sOxUa;gR=ZWZm6wy?Lo3< zFL+up=YmV&xn#FkCUOx=u^_?Q;8i!aP;pr?M8~ONYEj$T;yL*!IoGCpNyOt0IlbwD z#zG&Y#rTpLk88`b0&*>SWt!m+m~tmggQ|d#FMfnxe8-Yi>+E0ZFFJ&?!(i}f_W*gZVSA1?;Z#!f<{$a zk9N;OFG_e{oo=@gYgAi-SBDB>!~+%1Nw#-E49M^2XYW{NAJMoAVSH}*n2^6tBrm6$ z96}6AKKa^g^>R>9sa?g;d^2Rm>Dd7TrAz0H7n>i?oEFB&f!#|<6r&FylX_f5SetOe zb|qaV#;|po*XM)lg(6)y^z7x1TLwJO{Lc&g>F5?UCS8KOwbaS^*T3Lnu&yQCy82>+ zO@|%TSj>;Azp#H*SHNRhW&PCPYg+}(&$gY-8 zs0dqLe_DLMxiS})jw4TLgQyb^?CgC=dv#K^bA0HDYgJRt!C6{98A^qay|TT3L(DF$ zjqSHw!vYPUJ-hwY&l&&F9x(IV))ptw+7J(9kWT{eNhn8V>s_op*2_CgSH5OcI4&wU zrF$}BeD-HGg1iYlTE&R0NB~-wUV&Zl*f6qf$U871K_op-7V&*=Q6$`=ta3-$)#XjP ztfnmwxOnY1sc;m@-=yg`C;b{@(5i5DuNBxj8^KolYD$^vPUO8CH}xOz4F;VVUVV@- z!R%J)vH6m1PP+HQE5YESJKW5bu%HBDRkte~Yc}Q& zu3gl;hM7v0r^0_d+KPm-!)rO&&Dl>f6;!>rw|v1Y)A)4cTb7Gk!Cr?ZxqwfjQ2Vwe z{X)Ae6~hN-zqGZ}fIS{$^0(cy%+-3129mg)h4a3PxXH==*smYdg4%|?FWi=$b`f&@ z-LuK@N$8;>W=u)V8$F7*4S6uFi3E%3L@4S|h(7&Ql$ia3U*pN~b1IBj!{*S5S>F{7 zp%`zbtOrX?(8E)<^wZMWnAzyeHloR?jS87uItyUVe9qvYI_BJv2Pw^4t56o9LZIJCxj>0Du#Pb$VNkm zs&L+|v;*2BMWMwd6W~aKLavibbSDsg16FNCodqf8wNniOUwW1_Vgu^6&NFu(zX5NZ zFl*Wj4Iw4j{}Ajc2p!7WTA3rR{C1S*G}xy#?0x2POc}IsJ5Lqp#2O+fVg-DfK?<*g zAmu{Ux7Mq>?iHgSfWcHPfyJRRYYFS8@pdPAqtiNxF!MC&?T!zV>5-!}?i@W&Yuk8x zV$8leC?d3i=7{6IEf#4vBj(;#HE5E?yP_t|Pbxh|&3){X*L2tF!GMMP2TJ0PNrF*v znocrMxDjUQ+unSkety&9m&))l*)J&}Vej#Z!t!@P5+qp%Q$$#6#ek1NW%NZ0LZG=Hg_)Y}Xe>GOCFoS<{>+yw6^A zE5>9iJc)aVcAB&oKCYt9OfeENIDDMr)*ynQjmNWVGHQfZq}}XHP1_VKt3ge4GxvKl zKu|u?3L*wxZlM?bBP12>^S7K>NNk*?+bHyj)>gfy7PBAzR&?vvf!!#^ze{rW2u&_g zpW@O^EYVfO**xb+69(8LNfjL5qg9Jzn@`Ip+d*hC7P#G3#=lbK?5n^!KBcD*ZN}6_ z3l^aMb3IpRNnZPWpR5>HG=p^wQ)kmz2SZC)?NAx{{f#88_({9`?^DypUZ=5( zj^{rZ_uk`q@pB!1Sr@qv1ZwO(qgzp9wOLD^^lS-nT49fJjLKw*I`k-t1Uh=$nr%s4 zY^MB8mX2AIfx!8e-Kl1Qnyj6T`taSNw=QpwPuiwRDtZLl!K-$~VwsL3SXt5i1~>R- z+VjsU=#YMv8B3+wV$YI>N@xux9t-QUS@(%ulMAbca0`?PoK$naa@Iry)bktl&ahCN zD{~!IH#Zed+53>Jer+std6_i&LI#dP5dy-4`vcO0`?PN)%^V{ykXZakvOSD~SxQQ3 zx0|i(3CwOf#nauc(p%C)hk1=ru!S2V+k1TXRs$4<9d`|}vw)5{=vjJy$BFMrD#(Sh z{lvimdC^=`GTUyPKJo0MT?YHJhL#MU*;bzlKG$S!E!#@C^Sc3_#hfk;SmFE_5ni3K z$@hr>&sg*7q}6&6Hu%KM1LE1;$fG5$XP>A5p-T50E{#cqoV~Y`C2>PIEPTG{u?Q_g zW*9a=KkhWCQiSFSyYEtuUjOiWu$>1}q$Nft!pOYq{DY(h|Z77wPhVbkV ztM+`h+jgDPvguNPbL|w>Z3?y`fIXQ>`Ch}6Dm~ybBX9fX^u+f_uxTNs8(iQzqyM)O zlYJFfn5zSnw{nE+;3zGFyyy#@(h!1ZwAaJPNJmC0(#au!jC|v!@j21PNFXpCusXo6 zk$aK0yNy1Dy4De3=v48v3qQ8ASrVR``xFquW4_CC?0LX6tqqP2Pm9NCuLUB)dN|L~ zw;GL4SA`wGO#S*0{-WoEBpAD?H;=e~Kv`!~ASmrt&{|Cnwv-^AUp`->s9hSuAStQj zv#<(IR(^W3)|VvZ>LQ$6U=0*Zzr-QJ#VQV!rXZm;73LoY~Ol=H3tY(9bK$WZs>SpFR^= z9WT%INsvB^5=nmYBWh5CUX+jGv9XE%a4Ani{`2?6vC7H(iBdF$TdlA0a-bLI6($`- ztcH#5T15RW>B&hm3{vM(1KF~-gUao=f&QbbC3HfBuC)LT-iTV9^h7)uon60S>bM?z zQ_^`Uc4juae*P5X)H(SyX!YzsLH|Vx5eBP`Y3H`{c1Jzc+5%c;5OvEFwpFsWS-imH z^sYg4+CltE4%Xu{_riQH>+R2U(axe>DUZzV7O2%csvq<~QmeW>`aOiuPY#EN5QALY z(Yf@s#1Q%C4(2D#=Mg<=2I{N6yk>TN&aIzhqGO!}r|FuKcd)L|t|C8TUBPy||Ir5> zoz@pugpb&%~wzUy@t>{VWTgmZsca4a$ zc6D;*G@lOv!yMD2tg>94g7oxn!9&la%oG#-8MKo3in>K#5TEDkx2oP70da!aj(f^) zTbOR0&sUhb6!*FR@b=D`8!!*NQRH)xaeMWk`b4m~a4upKtLa-WsI5D!w=GBGZJAAk z^3dATE8Obb?{?3|W-@tPvbDwEA4C8RcQL{wrq=sX@KON@Lx$?YxR@mHQ!LSSlW8|= zF?4RJ!~nCG)FGQz@z;*R?n}%cV0aqHk6L4ACrX|E_^s4ePhFxf2Z)#Zl*cE0FFJ@9 zwv-inO%zDk==%3P+P@!Vo3IjZ6}1QZljOXOFd2DI?0c#vF?aDpjI$F7)$W-Zh9;RX zP%As%?TMj46MgBry+t_iRMc~lUZdnu?MxqMT+x?7D#IAx^y00OK3R;X=7)uOn+|R% z*MDb;Jm7l{a0a0FS9YHPQ|gHG{8dVIpl4g|mBf(qZ2!?WJw$mOuXT1~p|iA-QK zD)7z&{bw-sODNQl{zkQ!TVj+WuRzD87d$qY1L_Y;u#RO%ks>f4!{+RUa2h>A|G8e{7cZvHK{Y;Yo74@ks8}OhNqA z-V}k8o*C?D%NE7R_2JFTmcDwTFu*lS(!z68UL#8y6AM8?fXBAH>FIS~RM5O<>1zSyQzli3vnpz!BOC-Qw#0(_@M&q*gmyKnep963eI6Q%azR{m z=p_Aob7lFisY!pWdY*!9U6w89czTslgxg%_6@x?5#g(os9{W?t)Pii8RMLSmYa>;a z#QE|v+z)nTYo{wn#(r(!D=% z%nK4bB8OOyUHZ0&db4K9AEY+S2p*zbR7>3e6nBO?0^JTM>w%?tLLhmDV+0BD@24%b68Q) z(Y0z6ypUNPT9vh&td9fwuE&VE*DPXU0IGr9OO(UxFip&yDel7uT2=_`RKAd*nB3gtyOBs(JgC`P!E9EDCK*K=`(PkO|3_C z0cZv@msmW4Xa*a<%u#SWLn$w0G!ZLA-M8#-OR@&Ign5=>5)4fIT0;U69n9+qycT`$ zM^%93kYjYy=((2G*Sn)eip3e(3X5E+LQ9t|!Dt#MnQ5}*F!Ya=@~m6xB}vZkx=IfN zl+*(du&yB%=Q?TEOs$}k^0oG)MmW5eFCZYGd)miS(S=?TRC!5YnkWFx@F=-;uqCh+ zf=h_(NewjkmMIhFbA4g^JH6+7J;+AFKFJF?Ei#A~o1ZEjf zYX*58<=VxE0mCCzmL@)`MQeP})Dr(X_y$ zY;%g-c6~45a^`A2;vk{LF`T$%^|ei0N~7wOhwZSJ`Pm6!d$p3!4OI?ETe~vPG-;?- zg{l1DK#gD41r@5!R^+9;PuX?J z*KT0!jut+fKF-w|cAhr$fLK}OhD#mtIbA(hJJWOxK8I8ESj?936QeC>_&sXfPM~>u zCPnL1G(?+8#(@MyWu9WsO)1KQizG>^`+JHaJ61`SaC%HR>*TZIoy^_Nmf}D-3k4a{0ZEfX& z%!nrP+a~Q?=r!%my(UIpFx&5Gdhn!l4{&==TooH#k(-UmfnDL!L( zZds=o)60@eU9UFV`6N-obXIS^AxwU>z`G=ks{f`%emX%haFNl(^I|NyMvEKk&WyWt zt@rNu1%mb(x=$tn>z4TG%58E1^Vlk@@lQ>Y#S!ky1|D0lBR-$R+b$EOs~k;vV?aA< zl!=Hndy~ZE(x9s(?;=#~#XnD_?JjDYW3;Xt`97psa2xNEnHS0Gc<;|XQd*X)!c*DY zDCP}J^W%B}dx5LHxh;cFEwMSh_s`uE#Vo?}_ud67oaLGg8;$p!n#Jey^&T%W2l-)E zL%(!`cXx}*x~%9Uzktsyz>nGro*!I&QUdbRY(q>r=xB)9vm zdRFh;UHD*rel_&0*UizZfAf+df6^@x)%7&5Ys_IwaeXruFK@uPc4~VDP17~)b`XEq z4qvnPSwCa;<<>FuHhW7xW>Q_`1n?^_wna$9?X<%knr{}H^-om7ee_s$Yl?>rn$Ig= zT}5Ponar9bmgw%Y>Fv;b!)GaHVZS8eOaf4Bx63asg`n$sTvgl)x@>$ zyOkEDs++qQ5Fa6>=y2vlJz_VnCz@(RzcY~GVj3W}tHxl&?>n)OQ|2%>)mR^p>*WE^22`NCT z=TsE5Bo}^^nW^MHV~lt?X6I07JM9z|b_NQP z8TjXS#l34|L2)ON$JHy29O+I)fdI>mYMMARMQ96loR7(JT3ZF=g4@Z+&&Z+RrlHDV zC5WOX$9w{$GbLxv5nACY)JQFwa^hCVmn)5z7dDDFLz|33m_$GzVU;}SInpE+&yxh%9Vfxo~sk!{B+gLP)S=0;Xb;khnPd8KOaHRc%G;rNYV zy9W^#4nQgyMB zRix|gacs*EDzs~NUbDCP0pS60bWlBNu!Bk{%99uXFNQWYOBvEt<1Hl4C3Na+bA+n! z&yS8)BR<34Kmwl@V1&kF4dULZ6J}}ju2rHrNi8xEvUAE?wy0$4WR`#?jpxCN+&KG$zSMKf348^Ple{6Ncz7zEpU`u*w~n3CozafBs1H$ zA72jm;1Z5?Y)%zq)r~JMC9n6IV|;=@5iTz)AwbeOrB zIry=*W^I10uCkwMAk%}FmEy+p*^)KsS;{3~wrQk*$8f)C-nFj0jS$#(_{F(jn>ZSX zVNbsU%?4nQcKk%ORh{Sn{yB?&?Z-EPT0E7t?jAXCWsAF4$jIYb92c|I+i){q`Fl>! zNKaJREzaeKgU3N5C9{#=xXdHpkO0$DLCB#}Mql4j8sC%ed7-14LhJ~HsG}n6!9XS2 zcBxKCwUj4a5Km)$l8kwN_M)Y($TGj(ay-)`iJi()*vM`SZV_=)lovsFB#n~_%zM!8 z$r(6#9q$%F5bVqc{LA&-O<5zwGZa8nJn+F6{;-t-dDlw~toHoFI51T6qp$59{`PpI znRU{^RHNzuf%(IHS~52SJ?;6y%Lk`#jfr$?ea~%Tib4)A6#%ql2C|`d>3|{FrV$oF zqhvp$)fbr+8qXHX;#j4I4nj#&b+vADl0i+F8FF!ni{_$?(>Yv^dB3CiMz*7Ma3h0T zn+6b_cYhS-`-Rs>NonLfnz(>i4zoN|t_cNTmxbO4GI=zbxr=Rn>D|PE=DT3|A?YA& zb4oRElRonNCH>cSaNT_FL?%y0Eodg-=>>Fo>Nupd{_7IMN1&`na92PL)--%bSXZ)G z;yDSjK(H?(w%+8^p)yW#J1Yoil1uYC&v{6^>DG)Q^;pbV1{f@W^T#DAzE$nhz%a>U zXEV_#!=##;+o2(Kw-S1;p7hYpw1)8BQSGs$_uj~cOS;E(QU!heM$LS+8G`3(vo*FP zs2k@IgU#HpX@F{=Cy;_=X4Zs|C}o7}G}yu6Aq2jQjO0g0SwyxVtjDoYXZP9JQIp94 z2cLs9jw(w>+BAfOwh@}o@N?tRZ)2bt^}ql~bv+vu?aPnFUQFO%6gb^5@r6G94rIc^I^%-k=w7rXDpRoz=; zKQYG`gf(_q{=$!J0h+MQT3^LNn9G1cDgp}rPy`Lm%E{7_rshE?IC&mH=c`vCopuUw zN<6$+pT={)10HSJk;bIUj){D8LxVOW5JU^V_Jl+od!0(Xfd7uymciU&rP|{=IM_I! zWfNwS2k0cP(#76Uc=cnS#dsj;#trPT(o=KfKB2a+ASoCqWXE9CG?bS_Pjz}Q!O|Lp;xary!$j3=!TBJMUhc zV3o;7kd9xRS@%6Fx4mfI9n7?>Fxw*aq2g;cn2N|z$NnX^1f@x0E17Y~qFXwcZ_n*5gc3LLymW?DE>@3GW} z+!gKLdX(nn<)x8)o{CSdhb1ITx%C@pJslRa7kZNYlMA4LfKl;6$9&j#YuZiMN3Rw? zP^}-;k)Ep;rl_D$fsbM7>%*%al$H6)>OTD^U_Sh;JyOi;klaNsE~uJ#zew_$qPmnY z@swLc}*;J-Cn4kT62iO$uWG}Xcw z^B<+^1q+#k;lJU*voApK&@^7u+&s-#%0FyT7C=1&D$J9cV&pVmHJ1;%#oVTifiZvI zIG0>lO}H%+G09_-nY@I9rWLO>jzmn!p-R4l#`Bc-qdcQddo~>7p+sNIPDOP__IGw_ zJXLikJT7Od6dGD~7kkVmsw_`z3ugh6`whNV5(;SP{?@aCb@KRV`_ro8G3O^W8!A-~ zdF#!~$-PsbQr((qi+vAa{DZrs7IJr2Gkff+-GD?W8X_s*#S%?@Hm4dzbmf1|$ zu!M=YkiR!zFgJ0h^V{fP5wSRQ_ZwP8vB2+UPf$*3TI_58AOLah1{al>JHyK>hdmDM zMrfKe67TpXigj3p3acjyX)+Nzk)MvyYqioWi94M&Z%p>)c^a5u+UJh>);1YT^1J3$ z!z^c=P}0ZM)+2ZJf=-7Q3C1^xpJ_JCD9KHcjN)AL*_fibYKbPDFZl6?6wLX)`YrKGp8WsdsR z1e5Mmw;7S47S<<_QP;gZWD!j89Ik~Ta|On@>n*)5mU?G)&w_k%Y-2)ay+}(Zn7xQo z5u+T5SmFmX3f+zya6H~pDtU}2@md}mDdp~g>%vuvM!5#BU3Z^B)@*`xN{mLTiyxK@ zGYm#r*g<7&UX#00P8nk-=3nEE^0*NB?ERg0xvx`i7H;w|j9Oe5gx2QoQ+$*o=&_VH znzUgZW-(jr%KNT3<#_AIX(P4uZ;kXw?vQn=Vybk*Sk&vgiCC&b~S>%57~MP((n%phZ9dX%G6UKz)||85+r7_u&vt+R4ZjJV=UHprdEM8gRc$+vqmKd4InPC-hYSa?XG#+f zmgnE2hrg*F^=Q)CLm=3gxRlm<3Y2Oi*_GI#sziL|Z?1XX-_bAW*|jTkt&3uuTZ-dI-A)8bB3$%Q%b6-DP!hoC}U@K9E#4>O}{>l)HL$P zS{coS`XcqQPix(M4v&r{s|ZeSDROhcsrNU7dxmtWsT|4MVD3q|$yrMpdu#=s>TDjF zki{eHMfO0twJQ_#i@S?dStmW6r9I2z0Z3H|$+#v^^==KV&QUKlR0MtH0SEs{If1K_ zqdbyrGTM1XWeodOB`@xRCsOG&dHPu^DJzHe^SEb5_M)m)`jU>f5c z7})zlMZvQ>@$C;yCB%*>Pz5#>Z8_m^1B#%E3UTwyt`uegf-L^f!}3Y?M36 z8MBqjJB-T9W2rueF2^K`M+z~8=&*Qk{uCBOjShne5rRT6l4+O2&)>*n`Y@$Mq|LT< zzB*sCQnv5Gc)G-G8#_Dp{a<8#!V;sfOZU1xqO2|ydAbuE&u4NmVWd19j635w;v2F3 z*x)!IsenM9JXcj1x8m7)J1Gjx{0NKNmP(jDPQcA7?yhiw0>`5v2fEtD3Ub+^bf~?& z`ehh{shn6aSvg5$eEbXhjir{x7i}0_4Trmw5)u*-jf*VBB#A&!w((*s$^+1NYBe0L z>HFsD^bqYdxgT_VZQk1Mr%6&rAIL_fm)GkkrkV4`73@!(pBShfyxvy#O-o@+YNO@= z_3Vfs%H8AO4C1^JV^ogYsf9V-+1YUGR{jjRX<=ohqip2Ew(%=r*=O0;D97-3T$yT1 z(EF2g1!>SrIEVi=ZFys?!XobDXBbo}4X}We3e`TiDT?yGy8c;O00pjHZLVuoRM>>; zP*_f*1)}y{9jj`l+h^5JB5R(9?!d34qOlymv}JxjvF{SpJ7VD<^~`Kv>cY~#JfCX6 zr~u8F!B}0G@fq}LXWu}ch|G~;n~Q?iLmN!G?F53$wz^58Dp6H0>3~d4U6-+vy2Q!| zqX#N`+ZCAzg*4Gl(3}GUT2c^#l#|WInITQSJlEL+;yXJp4?=2ga^rfej%IsjS7#0O zE}4~QPuy3EY?g6-3=eN?tDJvR5_7rRb6k*5$B_kR=0mWmbq}uC^Fj;Yfhe6HdE$I)+6q~$KwJB z2(wv<6&0yfOV&6vN}Qj%2SJJmOm-U|nx^kIN6 z62H5F7@SmITVeM+QYO2@rv(UpC$WyNKpbL$(1wU;@ZG3YsTl8YMt@S?#I1s{$j3%H z{QUg+@2ab+xc08Y0d;Lztm-Ju(Vm^+=*fZ$vWZfD-&*KI`=cVzrlzzvi66CzyH zJ?#A?b{IQ?!c&f)=*5WFZML&u&u35q1!3GHKuNaG_YAvAUaU6rCUC%Sl=nZ-3r{Pm zz(3j0-cxQ!Dpdy&(W8w58;eEu3MTbCX7h@aY!phFxAEn-=gtb|#)8iWic-+{amXY- z#PJM=h6u5Ykw;P8HnI$lh{GXvC9<)?PSc5JSZSW4KNP`_KsPx2{?!)FRQbM$U{W_8 z{;|coZ6AWtZWgA)*?U*{KD}6n_Z0cV8pKTUfkVCO`2jqlkx;aclrn+gUnd&t^KS38PzIW?AmuaV(2XlkFxJLOVla-y<~i zKDMf(J`~YbMO+*-UUY(KPi(t8TG+oZY2jt2L!pXFAz2`|88^46)7Y`b-Kc&qcR$W$ zuh^8~eV7Tm;eyH7^0=EF%6o3wPq6P^moPH)ypJQ5e2Pprw((UP(3P$$l4~iBDZsE_ z+aS>RKQ-reCDs$qknuWnFWQsjsj2=_|OpZ7&-YY*d0; z7~A)+80j*rD#ww*WHRCRnv?MG`5;74_^?IHYeCC~oT%N+5mi9R&q$Y(g`ApqnHlK& z>TsX(KHJ`y;daNPCSj31Q{pk*p^)tC6`0G>EsQjOIXjPwc)TQDeHw5IgqCl}dzDAR z>{nG3#2hjJB^BUM@PTw4m-od$bJyfpan>1L1^UrUMEUpOO zqQCTx8~)bBI0d3y{Ei1kZ-vt+Y#WL?H}aPE>D|awSmLAn2yVdW5s83yXpg{`=<@bb z1TXfIvYT~|zQiyq7MO~*3AyU~Nlo-7#CUQB2L=M2P!hZ-rtvACqZxP8rZs%KwIFuR z$9|T^_$aBzWGh?A@zVTsN`$A`xb8Nm@Kl@$Mc%rK0J8IEnb+=R4a&knoMyp0xpKNr zx2cwp7j`Gk;ieU?RsGoum$oRB>{r-!pPyy=s@?&~K+Gm8g=gUzoPNT0y`0cOi*e;) z)Jg4>(dAd!`*kj{BfS>d=q01^}?_Tji8gRD>adrd?*0t9SNM zH9};fJsw%uCLA7W9fgD;n$UP+1U*v_T`OnY3;uGu6bYd7?>mh4Fjm*I9zis58)VPp zmEY_%A1D;^qek#IYiXE`@x;?{lm`&ac#f*Nn2j-$Mno?OIqS)5I$MZ~iHYp)!wR9W zwaSsPI^k@-1M52`{l&TUmT3haBKPzI2=WKgw6CZ2D6}G4w*<7x^Y8EbVWm2MA8y<3 ziL0l6G0(UC+(QTV#PS7woKWRa{+*H?|Ib|8%YW!}ME6*zHvCc6MwZ&FIuRUqH2O&o>RC zw7N?waqZ&x$?Y2JYmNjUo;v*N+LT!qh1G`xm&NS5*Poru^!6t3O1*qphVR3T9j%Ok zJaPYHR`R!Z<)5R)2zrHjgWNEfJWD$Agxuq4Xqb}0rx9JlxV`%ra9+|H!yX=Ae(R=O z&(BSu3_PM+V#=OWcRtL!-I+BU!veX{X-Anf;Dg9k5Sg5sq6Vp4^#1xBo$bioOX&cT zAR1RMd3I%wjiYgI-_>QoR}vL9=D7Ph{YjgyXCG(m1JfAZjoL-#9PNoMjLCqHV~{6L z=%r>fk2`V^#KPo8G6##sE&#+o2ZEajt2VhZl5gEwd6;jVkg;W6Ue2qewZu5Y8#Jzx zDW$vXF)l6(r<$6Z4Ldl*JB=6Y4o;6)708@lzIWRi69bHq8I?s^MI*!EQ7rImLfuFkjp3MYI#}C_RFwxhB`+4N5Gs9cho9T+YN>XRY2+=s?>(F| z;T`U!%by6V8a%S|lUQk0330X$!c~1|Q=DdO;$0TnCM7fm7x4&+#Y=&kjTs-ZDLFH2 z5^lus?*kBmy{tnkS=8-uop2FIRijf?lwFm~1h2R~4`-Fcgz84G!+tNHANp@RZaw21U;eH@KxJu&RHC`g8$jyekMHqoES4M?_%m&>8?rGlIeI||aD3D$zW7s(v3**<81z?*N9!Cx% zYRu-@r0tz$ zQ$*?-_5pfbP|mwWprU+Q?}qgfGhCG@KZhGu=c=c!4}d7Uy!1lA3O&8_CGEtrUF zaLz#t&&qHClbj&;Cz$kyI#4-Dr+9p~@GL*a>T5mVc_}&l^voanCCz*OI8$aGw%-Wo z5r~g=!$bvtFn@H!y=t^V-x@)a@XK{lu?{1-i8`(T;q9m@EFy?bea#~&k^{=%d|NHI zGrp>9zr-cmAR7QhjI)lxC(^^{-@7k3Umstvb$cQci~AQWpZtEwY=vY9C0-JOY1O0f zAbbjpdSWfgVSt@3`-@M0mwn(JiTSRNwsYdISK0Tv zI>TfTfP-@cNus3X+P+;-X0Bfv` zzCD-Dmx3Oa&3~5%&q(^jXv`K=dcQ3%f6dPOJic=b9ONA))x!AfgQ*n`;+fO@bN7_j zu%Q&c<47$uA*?4!96t}6CevPS3%YBjRRQ=sM1PU?059m3)K{$s7lkn6PDKemhi+5h z2rm(LBHp~z*OzJ>S7S}y&wG#OroE2Lm_6ydO`U0(AUz8+%O+G(Z6M_oMLRt!y%U?G z3ng;i{ou31)bzyt>Qp?_C)t|w0iq7#z{7Ij!~&~|1I@O4{tI+eVmGnRzlawka0>3 z4>UAenxo=beI;-f4%M59wdS=g83B92RkgLX(ucV}iyJNuag;&E79G282xm-QCivzSL4 zb#>M2U*t@(CO0aLYz|b1Fh0vZLlP&JNaR zSO7CvSo4+`6(GJsLqjWbzNsj8@>mYU!28Uq`4izEj|1;OXByN14RfwLSL27LZ+r-s z6DuuGR4Yu{KfFoPco#E1P-T;*1@-S-d9dO7Jo%Kzs1Vc&Z!^VS_}Ew$g@QsF1`gTK zjG1fMfzZ+RJaxJ)6g09zYcv+3wk<99Gx7Z^@WANoU{cuY$wR9Lz zSVhG7-;;lcW@2J8kZmFb7?K_`TWii}&gI$Y2iPIml!a^vfFu@|U_xjkCz_DtIr|*W zPe1r~Gm2i{sN^B26wIxdUiE;#NNAffsr!i3Y2wd&2&#V7h_DkjW z{|v#yg}h+Y)_vy0US_giI*k$sH@RtP#R1fW4ggiZEv_>7%+5lmj<4S$_iX7(AH05d zJ~GZ#v)ty_#)tmHeahPc1`N9DzMuqMZ!}P8#kV(52I%DZG~DS<)2r_P@%dj!8o)=W zrJFL|tVgZix0bO4hS`Ff3Xq+QMU-djce-?!u6?w+;FTCh7pg1^*@{_ioeP(PpwQ7k*xy8C|| ziNCuB@U;$=Wb+D2q8~R2*7((Jv?vzc$e|$!xBW`ElateXz>!f^Q^Ug=cCS@|Vtw+N zda-FzNx24sUIL=_ti+;7mtFi5{Rzn|EZ5lTCU=ajiY_Hrlaj0Fjo`!xLiZqa^BJF` zt@D>|<*zr11wHDd6Zyt+un|SNx&jxcc3Ev~SAX&HlV1WhJH?tr8b|LRX9X{}sXt8& z3b^`_CIi&nH8ah8e0-#k7aCw<49C3vfU9m4RQ3!8 z(j~SRlRUeOlH4B%2ngV`4=B`KMmx>F#%pWGd47wx4MH5jBL;?MhX+2ii+|~>Odgj%>q2Xc1NHMhNSSxI61O){9zk}Qm#S( zPcF~PC5n`kly6|V9t6HHfGp-`e?Knd=2nMvw~3zTM^DCZ2|H_F`AZRF;(QN(Gn=*7 zidJ;xRk*$VP0txD+xtiP(`0zo)DK(s{Ro*e;X6sam00IhrK;{Zx|HIR@TiDc2_xu% z*KL?JLSP~%rdPjQC^Yy%;pd6X<*DQjG@(cC0W%vZ zWOLm&CuTPcm~JrWyhZ%TI0R74s0GfZA7X(*I|rH&S|JbvoO*ZJg&36r)nosX(D|WJ zrTL6&cU5(gz%ot$*YmdO47Tl*;ZWO^`1x?v%kcyq@RPx1|A#kz@u;A9y`Xx2Mpyr$ zjJ4tqZyoC3t)BXV3r8U@+K!|zy2`~A5_OO@NT^5gV=Mn;KYkp|KijNUabP`P z>^>a*9a<+pei_MScYaQ+PChv~DLKIuxpI=DMMwF$xt*O-oU&s^sd4iQikwYixBbayM;2SMVt?Ev`#ty59osdIT`DfPoTz~A@0o7>(Xoqiy2apC{;SZVci!7) zlT0w@_M7!Z&3lOS*}V_8BL1coQgf@$I@3uNcN8uXUG@;FP;g|BLor~Qy6!$;T&!s3 zLbk(y=>#QwrA@KTuycc&m+bW^qmFT@z^LepyLTnyg~la%=FW= z20>HkDyeJd5?G>EPzfvC7j||QS4lwC=hcB4>DX5=CY~Lx$g_Ub8pSEG9?nO1HXl-y-&D2gYpFvKQ5Y zmt8r<9s9anHP`A4JBu`iM*f}c^GA>E%eRkLi&j69ue>}x+)}J}u_xwvnZ5q7_gA9j ze}x9LihvTuFFeWr_lPJ%Lm7O<I1_zH=J*1*~O6IbZLOQiJ zUGJJeQY4TqLr3Jbbk&pCBiJ6rt0uHdB_$|dGAx?jMFn#&#Z!5jwDRe&IX@%IHB$y1 zGD~%th&iQ2AWOEh7NqczJP1u_+Br4srN!+8lj#GyiVmOKk(%XVkgW()WrnT~`dJ1i z)A}mzK$&=MYv{yNL$*L?FP~Jk)LPBnm}aM;PV@Dpd~ZWYMKEttqTV%SVosN`yn8x{ zmavx=`D7@mFt2OQJDf+ed9E#?(AMZ=<#PngL5kcnPiEJE;ntN>$x&)!oC{;;+vEh`^}b#9!?Z-<|swjmP1 zd0wfu@>F@i+jGd-!zFibd;1)+(*ynb>Ft7&I@pe=6e{=Q|7-$(_{je>ka!r#b!b+4 zj{D;?LYRb3oAn2~xY84~fq?zDtI6w9>(tbgPGxfi7#`$WV|ToP@?w})z}||f`0FaC z3!K02-2C$8?55Won&0MPFf=;@3)0H3k)Suu$nf6E2O>KmpW-MjLntl+Pyz!rlH0vm zP8FZWDX4Sm5Z8C8HClvOJKH(YD2V3ry)@HjQhVWhnhQly0P`Njgl>A6=T4f~FOl{s z4nq#n-YDQuaz37+9A3wopLWg7xx#!bh5}Q=+P^w`?H)b5PlnsRo1=nj30_1>>#g)u zSkUA|ZOW7o9*4(3eqf}D%avQ@y1>0uTeE7H#zPHc)yuhiucEL%z-#VuKbWG?Zwp{` zc>KHx1qq+{HRFQf_3b_guWX!et%33Mf7>J43^bsD7S3TdEFSmRq73(Raqad6NCp8t zG}Q`13-Zu6DM>fTTe90sp2f+l1B|C%4EJo0ngLu7=F|G1V}pj%(*p*?TqdVUb>3y$HIF8Z02&)z#ftjPg*VN9n}* zTLS?=i(oYnxrwpcup}MzaYS&WPaqg+Oqu-iavOQly{jVZB3wAo_E2s}J-~ra3nbMI zC?eRsqd{3qY~3^hiOQXWo2>5IlrC6Bd7TxqFO248FQza8=$1MmG0+NKkLl}=12{C; zO9>BW66^(i=uozTA}ENdmzzfHt{|iYw{4swe~A(c`LHQ;FSB{3(&|P+Z~neofC@1g z1mFVz1cNMn0t$1f7cWv7HOjTC}>ym{zOz71wcWf!$Qg7`Wu&5Iltt?ScCFW#ArSRUY z)1lY8PGrLnb<|h4eiEdvJ~^G1SQ1oi>+UU2i83eT_AbFWAfpf#!pB)0I6vf6aBB`a z)R&&XxpFjb!WbP4XpgP4m_xDf4d>W__BM3&YpY7!V z`Ow{$6FKpO?5Mg$+uLi+1sPURJlh}N%)5N|f%-dBQ%RifE50eD_&Tge1SW zSe_hckUOa8|CWMoV4w^Uy(y)zVP)pUITn%6_G&T{eeE)a)3|nOzM1IduDAY|jmMs) z-u&C!{O$g|w65Mj3B`Vt`G=R`V)@+Y=^4XgpBvBbs*+UZdEo(gsU0e?v%drZ6tooR z5|J(0d~3mUmwo#5O}{9Lctt>~<*P2){#tz|Fq^4H=CQ2G{lRVCeQQT|Vh3Q&pS!_q zE|k&g16}k~dNb9Hnv5Z}FfzP|DKdb$V7sp1u3;W$V_6Ry8(r+eVFy)c?hD>@dB3ZX_{{5!akFV&Fx)+pA)jclr2KiXeDvUdk+@NdNMr6kn%##Fh>v&`S`i0Av zp)o&mbuRops->`Ix(b+ayQ*X&5R_TKX=^`u@?=*8L6;$t>|S~`?+yS;8Q5EL)2R+4 z6cOG}1Hu^TnKizA0KGB&md?Bw(SUb(5y+lz^A_A9Zap!|zUOd90zHpQNvoXurZO9v zK*bv0N_UwX`E8Z4b~U@bNUk)U@Q6t#f_abX$G>m=zkB4*m_oKNGgGHANB)T5X(P~( z={m@IW~YJOFd9lI$POT1US2*H-p4gU_+4ete4@WV=c87CM8=u54- zC9d1Av4#)VO8c&*FD)5kUcLITHwR=KffK3H@-RM80c(ffICUJ@@O2*odB}LPF&qOm!9FVb(L*{qY zS2?;9gi&?cmNzffB6kRxi5DX!YxWZ>wbP7FNFpuOE6$VM_)Ol~SZYcPzgBFBt5?58 zI+?caWYot$2?x|{Y_E&n86S912#kH*y?)UO&p(>DyT2$VX34)ZJ6>T1RI60LBrP=} zPc=%@s$TiqEIY=vvEHwwzicKx5zuOm63!vPg}?2I46!djfFK-L1h@?66qUt9MFhQa zt~gLndxq|@Hc=@DdU_0+m6jZqhrTq4V1z)j=oQwf)AzT!Ei;v`CkLu4UYaUsLmuM< zW6kfzsSwk8#8)bVVF+W2Yio`PNHg9PlF6!UuwK#ZGIFV}FLV*3JPhP&65~hMFy8$) z(kHXJOy9q~mUhVsWagfH=oa)zN%9+Y zR~9@fP;E6Hui#Y>t=p;P8))?Pu%Zd=?OI5{WIGy>8355JpNAN`zPWgEWdLA-sk`W5 zt6x9i)|^YPNWvLW4ZBkQdhgYTOFm)H);8~B_iW+7)i>hS83C_u>zD9Bh7!-UD#XIy z!bovdF?eElcL?T#^0d zru{Wf*F@z;o*Z5F(Of2;Pr4vTGP|tYVk%4!NpTI{WJGSs#5p5BaTVpr@j!v;l|;HU zG5meN2-ZBj%c#$hv#{QF@ScJXdxmEv5&vx4&`jawr#;BYFNNq%WL zCR+xe3J{rlp3CNqRE-(0w6a3fAvTGJ;Y-c|1uGGc$CTkpc-Nyq|kWvcBNAEsx4zdRC+0 z<)W%S5+FFHRnF1firDJ{{bWKy*M0_7jG=&QA)A70anPnf*be~N4(vsBqG{QbzjLy) zAQU$09~-7Ax3jmMCgAk_c^-75W|cY5PWG4TDag7DEe;x#*(`(0{0;war@N_~;i2Qk z%yG}b+F12dN+3nAGvgUZ@|F5nz_#WH5Z817Mm*4~J3})6AazF}g<9$W#X`-+V+QRxHS3_K?#NZIMMQR0deh!qMBde9HmpiQFux4fs@49hy(j>ZwJs zZNGnhO=hdnn^;TBdq5sV>6`OyK}7|01jHfHjZ^t|Bg^G7(>sT?#pYjEWEI~a&$)T? z`Eu7@o`&5?gMMgeZ03|tT=o~gFDQNHBT^&hmz7Qg<3s4P9)$^6$ciUNLHea9yQ&R& z1sktqUt@B`i4Qr{&q{xCWP40DWQT-I=|*+*^8hN+{%54u8UV-I>Cs{m%w^AXd8{;R z6x-77A%||PE|~i|04l!gBiH%(4jnUfW#UoE1q=$8 z3?}2>r4$_2zy8C;{cXVw>j|i}zLx(N!tqZZw!K#jG;0-NB1j`%y+SbolEi72L<7EANX zpqyaOb|^3oVT~8(yl~c+zr((6}(RZ|@39sNJ=h zpPGW*?L+yG|0sggA(GW?Lm&{#CD(oz!un(3{_87RZ8Yk~DCsZxuWVfTvy=UzfltJ3 zn||#s&rr^Uqung__4wB>Zv0xrC69%ye!j(x(EKBX`*#hF8*O7_BNgZOy7&(-{eSLA zb<8RQgv1|WC;xrR{-0k5ZwU1RiIce%b}rY)GMPQm)bPlHa7s+EdBE2AZE=y|t6s`L ziioDkNJWGbBs*l;*J2tbbAD=;vNm0+ibKkk?rvu0>>F?`YM3bwUQjtn1?>tii7hqS z^f=n-J93!_)V2h`Zqwtv^JCW(ftl9UXYX+DQjw97sqBy@q-Q3E(g{k3F=?JhxSt@$ zQIt%F--q7esTc{WaM6{t^*cN{fxkMhB!bTw0tTM7Q0K-A>RQLmuuB-YlGT8W!KGaM z%%yV5q4ZES-#FhYhl-4sc`&PQK+gNMcY2ZGiz4aceGG29g@Ew>jf?4847I6?A#$UR z&M=ANovPXWiL%wr2=&JE2fPj&p;c8*>(lg-(o^FDc}A)^xLkjWT-0UCdi?eF+>3SM-7Wk9o1|DDNCtGj9FPu z*U`=*bZ5chnALS-b9=0P)32x~nAH#fIAU1sDm(zVg~>mXF^oJ@mh)H{`bFeG16@eX zK2{b&(bAz%BrYkL+wbzN#aX@Dw7{eL7#ehXGJ{huhb|F)Nyru!43d0e!LPhA$Af)s z_K;`j%I1@0&jcYtZ6Gv`+F#eu4CMAWePh#zPhZ7*4duvYTzX1YX5*y@Z_drT(0ul@ zMO|t-I(0$0&x!5v)t*G|xk$X6N4IXV8X2)u<8EU?u(GFRVi5xEm+PH>wYu^x$VZ0z zrB!tr@Rqy}DrAl*H^-+JzrSH!Hzl?^MtCs@(>t};MdWBJ<-Sw-Fc*%eUT;`GU5JL; z7IY#i%75~PwO1?VaQ$FmkQAZ(y|oyqv%Y>XG?$z#ggJ~;zIdBPmgFP(7*qU|zz~1* zC2i1eqGG!*-J6*Z1{lhg;dxC_oYTib^v3Fng;oyQ4pH6qjns$DgM%VSh_Qx7ELoGj z`geHIgOxs6sCh~FB%dx^OXpWD=U>eX@Y*A8DB|BrW>rux&o+`Uef_E&Xk-Tp5xygA z(p3=*MrC*T@Qm_(AqlnnL>6PpYwNStr#JJy z1cOr-_CXFe31tIJttZS?cR^{zki5|j3 zr4Z<3)a`VOI3Q&qOEmq@^>A!FB&(+Wh92I5EC@tHL9T-xBqNM|KyYY zc|=ZAGaI~5xHFiK+P{CWKTrlY^|!`CbF#81a7&6xb7 z7zf*dB=L+T3PAa7HL{W$Y0Rkc`FE8qmj+DNZmw7Xh8CV&RsV3|U_J^t{+(3TUIpqr z_vlS!^b)>{$%rNbxCXu2JU|PEOl-P{TLA(Me}W52diivUuJ3xmhTAHAi{+}KowFiI z!z|9b#;M2yM8auGQSID-USjp{p+BTC_bU}LWkaQCJvu7p{Hr(m>wW%K#X&w9Axu2! z*mt)K@?K*=P~Ol3yu0S68x?)tGZjE`STA}In7~V7Z%56O8*Aet4kvn1bQv9ef&P$^ zni|n@o-({Xl~-FopI`|$C11F9|I+b{siO@3Wn1^s)c}DV(zKFS3>;>n{>VmeNeRZD zDLATrY|LdpxB#Hnf8WPmX3v@?IOT_ge>rGJt|V;(Sgu$Mmk13Y(HX-3ES4^5%FtOar?y90zM5eAinV&yro0g;;D2pm^lX|wOi9(q` z8IHAgr#3XidPoffaN=o}nhL~XDn;r=oa9{A)Q6uOq=l1w-oBNb{K~N5^9|=t6nuGy zH`G$4r0|uakRC*wNJna+?m>O@{ z0|*{Gq#dK{`rV0TccZ>cb?D4!v0f=_yF!NItH!iKt#Wcfk5AEy3o5{=dw|3tk+i+G>$;j z$9g|FWl-sUv|Gq~vN|SU*d5QbL&z8@6~(-)uc)XvzwRg)879#=a1a^SGF4xP&_ZOw ztPPX_S|CQ*G3W$&3cD4ANsz!GHfR@-#gTGJ{Ya@%FOSyvWY%j#zf@518n4RdCVI-j zbK(|=p8cDN7fM723YPcsREvg3aum|ul>z8>pBYT(o!_(R{3@ ztbml`*|w*yOb7@QmPEizY6c*c7QzNdYKZ}~Cy-@CY2KT+%81psd%@Q0F7!(+x6*CD zKaYRovv@&fzPV@oBK4`5YNcx&rdW}ivAjJ&g%4B&^eW0B)Mb+I6)GX|&JB?zb-(R6 zq3O%ANdin(bzAR9c^#y6vjLJ0lr{s)gp6EIt`IC8XIN|jrAAG3PbX(*->&1EczEd- zi8@FH0|)pd?yo-pyi2H2FN%G%EbiUs>yGAhoKCXcnB<sBBJr31?KpaAVY?m8M~QwHDrq4oG7^^6-*^VW;IguM0LiE!Pi%{VQk!(@r`8MW2S&SWK7fM&MiDJFtGa= z->njM{C2FZWuMP? zMQpc|dvb9`E3`hL;Gk9*61I{3veX~YZ3p!JLV-Xw7v~3s{}t2!B@z`PyWF*)XZb-k zFh^69XX>*KTSSCBW-}Q+3yYloCVjTv zrxv<_{AGK95Wa+ogN4Up#llbfm6NFy6i%adOX#hUA$a}t!SM9~86CHrwF35z?bs(Yeqwu}huR zcld1R>&lAh8n<9!2A}8YvXL(@X%Wl8=$EWHV5%f~NcxZM&yS4Wo^p78u*r#YJqV${ z7ZJD<(nV~KINSn(%EkF5K(-t}%11%xbFei0EHyP(0!HAp zeK3O!?VCPp8}cEq8|jz~jaxKheEOrkY|9uDAI}IH?m9t>tSQFmieW{UJwwo2suynn z71e8eAem73M>`WQ9l0|VXhp8zhObXJl6=IZ$8HT4?0LC_NO8YYT>`(Zaz-Eb2FvpO zAe&)!K50V#VZRF0vbSgtIziP*iK2) zQh(Y!APhaO17ld7V3@+T?#gW}T@Wi2e`nEnT|{*EuEpB2QI7sPDl9TYiv+!G81njBGdVU3}2F7~A(2{{%+rE>4Fwu_m%j=y4Teo)o*kk!&+ zn;x!qZ>U(c`_T;=!)8<~76S4@xwrwoz8@y68u?Eo0svHvpgN7_vP)J{C8QxZ&%U8ws`c)lh<_%a2Tvy9x~q^h#t%p5G!;lK{bT zw}YjMYnR!K+@Misl&;KBl*vS9M&0%RV6j%LZG1FkQe-&4p`&wvnMblR!fq(p{j!!cbPu()L|~`@5vxc&;aVWR9v*HRt3HAogPci z-G4QE=Cq%0Og8R41EQ7j2d#eAZ}Axl4W@GyDC@2|Dm;o3a9E4JM#}ZM<9rK@Rf?OM zf*~!|Co}S(IA#FCv1c%Da`L46)s_-9#-?2n0k)UDxDJMflH`^1R1hA7{26lcn-{j@ zGvt3B|M=5h{Og{rdVG1fU?O+M7#3K#P?fa?u=Q66QstR6LSBw#C7`KaX z_Oj)LU#txG9zC^q*VU2&GssTkia^JXBANia97hUZ(DfMm#-*??q~UycfZGwn@1KpQ`Sq@AK2 zEvFNZ_zrhYroD#80f|+lk~=Rhxj;U8qL=}hIQFkc4-_H6Xc-SssK{j`TNI6Y<3E52 zZ;2_M@@MEG(f-Fb7I2k}IyR<=$z#`mdv(5Q|04vYn7O>r6GsCy4hBceJ|}wtxCn#p zuuk!FFD1b0{S8kk(!0*Rv^O(ye$K3nott~C%FYNjPVD`UWZtWR_#{=7^)r5^d-oI) z-Hy=}V&srjqTCeamXSWypu4=x6BTDPzTEbj!<$q3pO8N)Y=VM<3Ps^{*iI*)hkm;iH2ymPCSVV#mkM;VL&KK;GP(8F z&GA$A1~!o`wGfJU;iz9y98Y#(Bj?@{gV^It92`)MSFTP(<#t4jS@$CZN-sm9J4M3lf1q zxQmO+60zV$gV`&snKhoY`g9eNq2LdfFmRS94z_n0b1FYJ{JZW!YmWxn2}5kb7K594 zfCgy*Xx_QixBmy;L|X`Y{yrc84^f0BG%z^0vsW|n?FDih8|+P<9Bi^&0D>UI4Hgy_ zVouBW-KGBK+=SadHrxL^p#NTj)j{!Gn~*}g+=KPv%yqz#$jPK z$FE;HEztIUg;z-v3O_^Y!k^qomt!_!zy70E(h<|t8Aem^0JOaNS0?wLLa|B=uoc`d zUAbmW4|I!;wr`P==3}^kH1CP-DSvkZ92q!1SZ2Dx>!?a&Sy!_DA}uv_ z7v+Y1B}gIfp``B$I&Azptp7eCm{{u|N4@it1xhwXuX6`CxqN%H)F_yh`q87Ie;7?j zHf1Ce7;68#BWQ`ya_D?has2GifG*4C?mx}pm#NYFyqugk`Uw z|A@nXTJZnNEYdzlWqXD9@FDzPA=Pj9G5K3IgV|C|gD5jm(*FX`g7X0UF#vdOw+;>n z@kxOtVeEXu?51jy6 z7E*z=SI&Uyr@i)f|0V)CCSAQA;mH%{E5owL!lnj8b3NSJY3vR=3?EXPR0gR-96EErW zvlTBy^`h6aFY>CLBlsu36w35P5mwo^@ejW9m;K>2z#@bqzU&A~X&Tl`SmFO%n=KE>iJ5nNM@(x3{#{E^$YIkZRX$lh8|r8C)ZS=PO3? zzg+#V|2f_OJdwo(v7OIPyJd(zBr5KnsnP9bRBVBN037@hgf_iVMLYcF=M&IF6B4CF ze0uYisYQc-&2mJs^&mzw?0-j}Kffz<73C{9mcOrp5HI1?k{gG59+!(BQgi+8s(!ls zzxLw({pDA+VAS%PrQDmnpWgr6jb?CO?5(d?nf#}V{@=g0K`n&x-jyF$<@cdYaH31G z=jIKGMyL*jFZ zNP{`;32?jc$;mDdNH}FTJ{7y-%fTm}8N7LqwZhgyQ^KU05th(sxN}oNP=Vs@vy5BB z1jcccpQC4Mq>lZwYQ`Q{;NwRTA6QJQ1otWoP_t^~0%lnVPn7aUfOUYEP|iZYVDOy*BH@$Y)|6^G#^~@NWcO!;<}}$r^jY7Ugi>P^nB;)+&q{Ck<{0d9CC|4 zX|_CCnkaB-N>|WsY2I%vidqW|Zk#YI6H`Mo1>N1}8w8y_48w~fDocrYbhCZSS`#QvnkvTR{wYOam1|oH}|`* z*bILmp>f%4j5ECsv*xquS}L@^@(MDl=*f4!f-C!xoE{~^Q8kaW1d1lX|8l@aGHQPE z^hNbqr&atgf^Pc$-C0JM*#%~nL)7gm;n_&-W!TZ;OMPm6AIHcyOCc^r^lXexCgu>Q z`O<5ZhrE?Oh(zI56Kibc7oYTZBlJI|StQBHr4_QtMQdsqiXBwev zxY=ic&r=bI@W1dRdlgyxk@Wi4o8GPbXFB90%ap!fEz0m)r|2DhzT`Gdc{)JxR>|^L zJ}^S6*5&I6dowADub*yh(No>Z!jLdKv4-BcR8xQ!b+60e1H70gF$1<_qh?sSS4LrwHri(0WI0Y=4~&IxJo_e6O5DbNkduUv;xYc( ztB@L>t0nQb#K!GIZJg9}+C2Q#SD@*m3NGGtFEN9JYLnwyd%R4S6cl=k?2lIv5wBs( zYSYN^`)%>?E`xc#f)+nkaUM zmI)@FS4TE|c=X|Osk*84z2(&-i%PNmnVl|92b@z?=3=y%*uLF_vts4MRDA~c2o2vG zO-b09IJY6?x{NbmJd%;g6r~~JmqBbxU1Hcu02dA)*5nW}w1>kVsMaNfC#VPJ6Rqh# z)1fhR(#hx4dFVi&J*!%$5mGf(v`@#58MP@+$%vQfh4Z_5-Y#1hyPqTzD)&{i+z56`_Jv@r^QYH`azRT zuC^as2fP!~67HeBI@qqf&1fMmY}WZIyyCK#bl~O1n3Ahf^w3IdoP+!areOBFvzI$c zil@f*u77!zwaVOraq69eiL&7r66B(f*~I9?$Kz`u`g7l@E{J8_^#8zDq#_$1-|AKT zfg0^Q=_3L%3w%BYyt@U@T8Q)6Oi!Vh!_XVH1`kcpxM^Rv{>iok8^fj{&xE=(nUI8@r|CY=LYJo7 zA||$)RxGJhn19<;NEzCWZvjiY4*mR-%q09hUl66=c2}vx{ixN#$t11XNk3N3&EHso zZx=AagQ#b-B4dnm^kYO`u52Zduqvn5L0)X!864bk3*(PSs|deaa!(*(fL20mymvnf z!;0M9INzFtI_y#A4fTi@CQR5}4zcI!kVux3$Kpyo!J_M?3qHS%4ucG%%=dMKFt1+W zTaviK93eru^=?%Uv{&k?%86oj`9hb>+_{B9h@(HXk=vbd|`HWc&XL) z4E?}u)W#$wz0EdthU~Y6l=L9P!k+t}kJ9}sjcxCt;xo`_SZ=WsTQ-PYkbhoq60mQeEpV~iupcB!Yk)!)Ng$hOjL>tKOYU96Lqp>ulrY)ko`Iq3!rlANf<0STamS*eG6L%e zdO4nOc?W~4?Um2kf!n0?>Vbw|uji=i7~Cp9-Q%B$zvM(kd+k!#XnjIj9Oqg6SFdbw zKFF(-(RIN!vI)1X|P+!tQmVi%Eb^!L9G zU(^G$TD2mX=s)U=^LN-MPs=6v{!YZ#%Y^L9dxX#(?R&G*E}7f%bw0^$2?_ZHyIJ3P z?!UH$CY}jHoVNe$c<4$%v%XA5 zd*~7pzrsaETdCH!Csd=-{AsE-Tg>;Jy}0%q=(0`#mq{<%mYsM8W@b20eOj_GkExjy zMrsK~dE9kp827hr7Hydwc~(z4CKCNbWY}%;V1;Cn+vG4JYAE~2bZI_U7J;7}U-ud< z@?IBykAF2aN!-T{dj%y0;6{0{*_OrgM%4Ypn1Qc?=WQ1Pu0LhG;m3U}KTnvC7D~0S$#P9*G#fR7s<&=(Ks9 zBze-vF3bEKN1?AHY?qs?YE-PST5Ygtc8SgSqBl#b9$Yju60j>;})=YGMO zLT(+m*EVjos)?Yf#I!RI?n(RfcGbsf9-n6~$k0r)^QuDhlwoPK4X!Nr=>AEBhcraG z@hp(gJ;j6$HOtbte5xXY>6EDN@T4J>GV)etT?tcA#2jq-V^EmTM{j2hDe655!T!qo z3Dc)fvR{oGTCw_eXx>&BRVH-UvklZ1$+q1iRr9!42Z~{lE5>zJy49C_4Mdhkl}82H z05~d+_!jzJ*7qfOaaHj4(u95|K6(BH$yQ@js;K8j|Ew1eCY;sVX>LgH+~ZQ2?0PA6 zEyusse^tC$f4;mN&rbJv@X46-^90YWMY*i1`~pe5I67&}SF7Sxa_Qwb#dYN)J7FFI zJw44aPt3H`l4N>0SUQE?p4b0tt*e~X`ZPDK+iA)yF z6iS+z2F)P2tv8B7t)13tjfLPzC3NAP-Xl#NJ}&p=%ou*7f$4sIA`=e& z-Fm04@BBxpFC>f(2d|TfHDnvbC28`1shiOtWc z(Qyfktk3U3PWF)jf@BL$D+9w=Xllq0xgWB4oHR5vx?h*VcT$Qf+`GsdAAK>+MrLq) z?U;B%Pfl{%G_C8;CL))Cl-KNy?04_z4`!={syq)^h2p&p9w@*W*n8=zu3a+)``=+| zF^Y(kKvl^J6>rUBd-`OoT2S*UwJ7`PsdsejkeX~5DQ7}oA`_r0D=(}nO>&{;Irzr= z()o;_PD@q>wx=&XbRGbY0f)WR`Uj65Wu(-#%mUfKhv!CZv*zR6J#hGq5JrtBS*1J{ zvvx_hy+d_McW>ND;rvN7ATYm#Zo3XW6K?cAaaTJ!N1|hxwOenE<0;G#T_M22W<=|l zefKWbJZGVs!omZir*izXCVW*H=c=~Hl( zxWgV!><<}XUJ0{zBw341E+@_DR|~*oQ-^FWdqI%_L7W97fH^5~r#-l#G9XIyCF@7*5#>RmvlZ?Bk91_zDYssSwb%boeB5 zgUrLE7h&MYKJnBRIM$*78;!fAJzk|gr!E3STEApwfR<5W|Z0R zojj*iy8el+nu)D`{jkGcp>o)E)L;j>S={XNqjkUcb+nP3b%&h#BLu|z-y1j(&5FQ+ zRHANr@nJht8g*Lu`&++(p#Pi;C2!(r_*}~)WVYo{rxN$nuxXkRSCgU*M{LfJW$iix zS?b*$tHx#Rgr&8rDu;u;l6uoVpM_-s&08!im0mMD0w!k`Ypz?Lar;T7DCRS~j;?k; zHTHyP0OGJ|&*!t7lbMoJL0T%u>L zT{f^E(L%Bs=e%XodbB2T)2nD(LQjA$R6JMP@xya&lDm=Trp(enrvLWZq<+1c z9ll@l1fB`qMTu9BzEP+5jB62I|H@{et*_A_mMtqEY1`sY@$T-)4&z<_6DOgG5u6Hn|^bg2KF4oOs}~U}L$}{mCbMrPH`LyWB<;t7A23i-~FI)OnsYOl{M``MPGromys zB*Z25vjr!)GIFO0r_+{ONLO4Z_5Rqk&vbM~4i1ixkKVr{O*{qG@= zo@mCc3CI2=h&T|m-AX?@mK$Yh2>L7M&d0p{>x9p^hR5W*yq$0Z7jMIUZ0%}TvTNQ7 z!HR1o=!gICr*tQxX-O~2uh*^DZj^bJqV$Z+VY*xk#%l=2dfLX}=4 zbNYqsN~)}P!ue$pZ_6%pjCN^*&L#}2O31kyZ&^TomwM82+cmuUa>U~OTfb7%zdT81 zW7iy^MTYiX%fjIAMV1O0MS(tjqUH>uWH3AzVPsd)=IOM!L74wFVjWh^VNLm)K0P z^CVw=upmL45Qfa3U~Ml_vP=pOA6Gv_mF1mki@4Am<8$6(kIOe3ND8#Srs}jA70tr&yN;%6i6N7+ z<|l#b8$stR`OXx<2i`i+3DSf&&}j&oysBzOvj8f<0#zJCIXaxL!ev6;Wen69Wsp`s zf{s@iBCd7Aof+V7^ueft*4Q4&O~)Yk~()T!WV3_&4EyMyCz&)?*)4Y3(bV zreZw^*hORXF>cdKm|ckcHmjiqk&I4{NN3QwCJhl%OA@PFpUzw$9kR~2c!;@tn3Yb_ z6E{;fw9~N|4psbdvDF z*SeOfOfoGK`al${;4talcR)evR{Kf)yIoRxvtb z_*>s)2JT9K1K}C^q&wav7ccIQy0UiugjIm#(!+;Y{t`oXv$B>?^NvXj?L?ZNpWjgC zO}gI2e$`2qd}39wW>h`*ic>J>>%s~LVLaM7_NT00!J}ydb$WC!&yIWr2{~)5E%=g_ z+3}1ZP7f0t%E}RM?NoSuS)@W=%NI@UklI3Dd|otDpK))pc%G8Z+8pXypLUstip*kV zmYz3st>AW9b?c+Oyx|MmGB=U@$km*q@<`F{J*+S+D7%jX$DVDKQM# zoTeWP)?R!(;SLW2eO3nBwj)2Ysf|GZtOY{& zsk7;CTC5fq-h<$|9j^Pt$(gn(21;@ zC0h1Ez8)mz@tMRBJKdx>W1{n;0|{&2eQvbM?md0>ea!m}z?-*Rxy7_EBF@-hbLz$3 zTorf1SZhPpVH=g{yeTY!t@U&L$j!y*QVVnc-|+> z96+nFafF0~sw{?C0sAR}fg#d92m4hL(eGfz{{+UL-*_8_xoS+f+!^9j%NO$DG^{wO zF5$uQxN=JO=X)U3ft-4L_=at6N830S#T@2}Q`G(OV@!UUo0Rxb)>bZ-kI#_;|MCRf zOfiOyt1V|ljPb)MQGi>^A!X22G6tH{=`$F=wz18{ti*-bgar6y8gGk>L5bFsKbok1 z@dRILp2e6xeLDJlDOJQ328LftkA~rIs6?yRW)RtVKnCb}$sgCC*n-kjgy4z0$keDP9KjfMmldS$cYU9F}qu9_Z=mnHXn% zT0q!8$~T?UJZfc62wRQ{y}9Ls znig!@u58XSFgjd?7}5YhYbkj`do<=r@ny^1_0Pt8K|wF!zGb`6Wjj3bPZuZ}&kZn0 zeIgpRU~IX-b9!s+X*&NFapKjVuLx|{zkhdV=zApQwPcdQ&JSWsN@4=n+AjnxYlzzo zi03&jEOYS`V1xS@yN~Br&c?kpgz4!E#;rpNTLmepIb4BsZ{aSi-HnZn$coz`NSQ8J zf(PdtVO^qYB13K`yi^2)gq(ttcBPfYRyWIAPxDq0u5S}{#&r7O&*`e)&1 z^?LMoFIY62zhnf6KwsLkj7~p}fz6=eAXxL92P0el0EvbgYrXhk9N~4I9F-T+au<7| zwhhL-ZYzkNcsH$z+ufDLU%Qo{C~vR#?5@+R=G{dZhsk@!q)5cBY4^e!T5XjsXvcxiV{x;ja!;WMbHPi%Z+tmRc=bvkmB2!g`3qh4R zxvj&Mc%GTwP_wj!A$yq9V}beyS%OZ3U1syqTGQ6RJ$(K-#(wuT8f!nwd4Xr$($$Mw zcPbEQ`MbjiZTP;_OzOCS=6u;{$JnQF9dbLrP?tO-}=nYzshpYsG2o3CdJrvfU51fr>E!aJC+#J zcl#*dQD`X*ndt5orIQ;Bzwc>K(($2l5iJr7H3&XKdo?o-Dp+RQ<0HmK)SATkAbMyS z1g;IMDZFv#YIf)kjFqqHZ8W2TG_uy(=M;+6vtyjub-jyDSpp8jI0 z)5F9j^!^h9Xbg7-w2e+yH1tQp8)XUP4}&q>mc)*5cgohfH1*SMK5dP}+<+@Z9FHz) zp);;~=^j+u3~$1+^Elr2>z^Y(jYoyHVRXd;R3x?a9d#~9y?nUMBy_lNEj;cV#e{^d zxt4J@vF^Jc!D1iZ=&rYH<%NQNb&U}^Er6Ng2c4u&{jT7ksWD6Jw2BqS7pahoRsxw3 zi}X9@FDAHWT-@eDl8RW=rRnycvjBbB|&#gu|B zH8vW$!f8icaKKZ|LiD~1zNWkNWu`w-6U+_9d3zl#x?2alem$r>iHV6RdorPR)9Hx9 zwl6+3RMF5j{O&W|q*g^K@3}Wl7chT>oeVNesOvf>Iy%3PN1GnZ7yW|iNQo|wd(FwZ z?Z*abPECA2f)LH2KBmA6BuYp3H+FZ6_Ar;pSLT*77q+%Ut7&XoT2>d_1nk1s?niC4 zOK`?4%~)KuS(zMW^=WmkIYx%tyO(O>UU2V(tv)p))xBG^o8%mK1@i8dY4!3}K~-q; z$q-{S!L{WoAIS$LDT8hP@YYVN=967SYTnUKxerpqwf=#uOJGi3E;;-)R&Zo&cwds9 zL8$i)Qp!V>B;uPxjp z)qA_qpgvqdU2>%^T+4%+^O5fgkK-C+*V*?MMNNcs zx`Bkt!{fgA;rL;kH7#{ldIx(GJFFt z)B2#w|G7~3jobnnDi|hXfURm31|PLFYIN{dTN^3ewK6$;DezEr?DOv0BpaZOMkgh) zFkAa1oLhVYk*Ra3XD~HgyOYB4+*T7E0bnvD8OJZ3>N5*(>*f$%bTekNBN>;k0A!L1Ie6Mb>uJ`7$5eb*B*(!gk zN8bkBMW3OU_eB2N0pUyb#R=3*k{s$A5e5x(poJ^O5X(-hQ`6U9AyT3TS$ws)B0PBa z-pJE1tn0PuND}I0uA6V@5JAPx?j9cSfEz~Ut7V7JEWObcR15Hy)WkyMQ023$<)p;K zj8alk?pZ(-dx_^~g!q>d<>ENh_o-!TI{`vap$#=sycINkrgiyg12i2J9-^orldbM_ z>VlEU>ZkZ*0yXmm6mgof?PrbpoN3;fgNottrq1{wpHX6Vm zt264Zy-Id=k@jiA)5Cd2Rn5yVg}KT$@!6u}-?>BN43P;jzZ1`Vk8r@uh+*r=uD*$1 zf}u+iQbBn6)Rknfg+l8mTJ?8P_P<|~e1B0?8BrIQ`aLaMlO#O*S=a19=6fLTL%6xK z3Ba6dz=%;g_;n}&K7NGW4ez1~)m@|rEg4x-bZY8N5`_YWjxI7X0gbmZ*7}bhN7+xF zT)z51O|4Q|M&{KpIb%<1jKvkjLTlyW{52NmX>SuHGBW0l{(fyDqVHk+n3paNISZfs zCnwa9`!zb=AhiV2+fTq~L2*EtL1Vi)IDpy3HsgBow0wLu0c8{JoC+hjN7e7%*+^l7 zaAn7gzGKUf?tNG&y8Fe%VS7;x=oTjsvuVjcf8HR%5mWmwpZrG(s=4O3vriA#coFocJE`Ap6L+-F%^sO0X?)Ul&W3FNJ1H@3EoX2g$@+F>7 z3xa-ruJoZYYd_`-f7F$K6IC;av1R6bnZ8@~}W-g<%a!xK9Ca(MiQ7QlyqmwJ<~ zQ6Fn~*xz8kfuAqfmFurwy@~{@$hW~B_$P?^KpmiWJk#%wY5MK|%4o;f3~nL!RMrx0Y3Q?Zupbhwx( zyFK}+I)!phtwv-K9dLVGVq&xW!c*lKGCNIE8dDQ0+PG9D1)ved_e|!Qp9+IiV0}Z1 z3EKD@sCfJLB2BA~!;AYuR&41iC~-IpHe1~<9s`7ndw>@SaJ5u=@Zdq{+NhC-5~x&r zGk;pKfFwlzMVDd#1YZmBzLUrGp4&(*u}7Z^IKMwWng*P=o~~(Y-tn94=$scM0ePDTjOS@e-hNKsq)PqVJIy{!Gx@4QKc^b!=u}RK zc}~yt;W6_GokNGwj!#HfC`$T0b^YD(_|MnOP0r71cMYQxag&4Y3%J)D&tgxWKoOn#Jw?ES8SoeD0 zJj#tE!Fo%b#(j|v^es+Lj?UYfVP|DUAzd9c;Z|HqS3h9>^N0BbshZDV^w~mdHk0Re zfBiTBrfX_6jJyvZz}mJo&2u0_Dr*-EIQR7Sf}!zxIJh`ENnq{~{nZurq}NF#;-@j8 zdLiN*Af|F^w-c#Fc%125mO7=vnGSSGmz$@X zks9T;x!e-zJ1u7F5p0~C@wROzTE?=N`bI8ekRP@3zwT+UyT>Cy&_gchI_Ccfxsowh z1qlzS{3X&nx9*>dR}a<#MGj8a3Hu;Z2t=q>-Tt?BrrO?99^rS?i-gx8{o90OX8mYH z*B~_NgQ5TJirY9P#KyyWCg{hi*bJvqtJUg|g~y7gmb~b`+r@tvXi@>S|8pPpo%;V+u7M=Pm-jYH zCWJvm1d-^_@rp3ZrEY{7Fil>Mk9F9+&DvFY!9S5U`JQ{=CJa!_I1*czW1W@Y*mAQ1GolgY z)U38QvcV%8VK$P*UoyQ|ShBwq>3Q2V#Om}Q@sps7&Ql;8f4?(*u(58* zX&OXJ8O&y@>0~;@u7=s1+Fs;u1jHrE+^+IT2kH2cNIHmW`JI_@ce^VA31_yovGJPn zIHzCIx42_$g{eY~)P@U$NN5j>+^~eHB@pv|7 z#}Ed-FWT(wr$lB)p#`hNpk>l%-|0J^Cp6RAdFt5;klC$rpA&_w?CiOIpVMl^RNTzd4_!Blai^|mAAWpdduvzR& zmN&0(!~=M@s|6O$hI3IdTJSmZtY!yE!a<_H@vf!clUYQaH?_0yD`u^+*JBz$vfFDd z5gmQD!4*frNv8S~t^3o=!QtUl-I2Jf9kbhM>D)O_R9Hy}P}Q<_+a?4+OjNXAb}X5l zCGJtL_KrPZ+Z7g|fS{=3ZSOE}*Y&ba_d&HH)THS1{B4eNRn^qg%F!ZSTfdm6WX@}$ z)1tIwJ@I7nr4y5;k{km5VxLenawoO@LiRI35hPk-+@2h037L$v76ziU1Qk zs`JqE9F@a5RCP2nHSOl8pLlZdF>r}0$TOP+(`F3SPx}SR8iAFRS&P7ppUs_LspD^+ z_6TXwI=s>_*?!jDdU29wc_%U}v9Z@Tw~CIn_JIuE`I!40P~4H#H!w)SqYzMh;g6i2 zGES#ZQc^1IzkOd>xoq^#rD68Jii$%202Z~Q&GBa^23H$)V4c_(5e?Nm{(;a}FaaW> zSxU6;&+X&rW&?xTDj?V_x8G>G1dG>YL|%}qw#1WGCF6iuqZ7@?yD#SGie}HSt(Uvt zoRWSPF?vd;c1?V99RG8*Lah4kRn*-iW|bbzJs;L(@m>xgZUfn?@->jY4c;pAk||Fe z;MgTgb@LsDbQpiVm44loF1Oy@L+Unz<7&}e7?GF(X25JZD|c04fh@5d&q~bBmV{u~ zXOrG{oqz|NCwFS86_$O#?tlsjLnDgg&l9QxOJAm2-TAEX;NYOjr0c30U{<&6td6N0 zZ@u+{tqMZ_kZoB*0R|<;KW5L%{yzxLtRbgU#ZkLM1bj~g86*;T*w=^2; zO}oCwYJ|lj??L8Nb;XT5U31qQ**&-4&4p_=?o^gTknuN_t#?YBMe@OmA(wDgbZwlj z3#?G}Vc{r_Oge)Xf*9?=hHoZ~&S*%ehR9j6DEcb!rj9b#rq& zbT~ad{nO_Cc*1%8u;S)e|FeF`#-^08@gWov6*V~LLH$)bNzl?t;@~2u%_SV?6#;Y@ z1MJrpxt)n$zkUtUn*Puydv&h1z<>a3u6E&~6gMG;STq84d|dS`NI2{MOgMAfC#h=| z#M%Y}O-3PZ-`ab4Ty!3`bP9aPP+-dGHa@#8tAd*|1P zK~g^TRBP@hS58dS6hOI^EA2`es$*(qV&Y2db*ncm)b}>?_2uB7oi95v5fH!nPKw5Z z^5=(^t2fI`xh)e_zN|T=4M-;=bVY<0p3V&7Vu!yEo<4;tJEu%{o45g6L&UF z+lc$n*yqGK7~J={O;)+?uUsp>4opRE0WZb#%MF=amkqxwP>yC45E!XU+9JaN0o=@y z?tFxg_n08H{aOC&2aG!#_tm6mgg{rydfooOVv|!SI<5Grx-P@_?0ZfvdGBa^M2ckm zCEQ(WVfO^n^{w4DKea=V8fw9u$pN2z~fcPeKiYNd}!MFKvv`~2ey}>nT~xz_9`fO#b)&YCTkeF@pc2#& zve>Yg6%uNz=mUh#!glB238QRi3_?P>7#A)ua&h(FnZ~;V+*YEaqovQ?R$jlx@e;#% z%Jf%kWeEyk`Lr!Zyl8(gNz>Gn6KMn~hvr%*O-zR}qz&`!%rMxr%VG=F^R+|{q7^u~tE}BT5E9zMmp=X3 z-m=#7t-mzBJu^4|BMvyY!fkGAD||p$9Jk?;y?TsPfOZQyj(jW{=}=G z$|scUP0px#?boHH!eq~8<;&MyU)SX^(8> z==_}6`D%s{6&0n-2E;UCfk{T0z>f8tA=D`fNc&Mp(E_mlTNcp#FO#I#(Cf3mxGO zt$w^*l`K_TKY(QSfYZ(lWM1oq#leI+WAL2h^5+!}RDPz5hUHC&>AnJMVyB)yFg9wX;FA0;7G zIj{4s94@8|e;s(_Ll#Noq2*XJACqlG_JFefW)~{QB<1Lm>Z(L^X+ko=wIaB#Pym!t zPk{iQb|Fs6)BSb;Ii^NnDd2#toO-M^%4zIIhcO8o- zSbiWZzLF+51!$2kUtSc0xYV7@J(}EC$jr*RD*(h^l2>p@K3(u(Dd?qNrmP)}h2$&? z4Xtqf2Xn8+^nKLcm63Gu*t3Q4-4lEaaB-+jDx27VuTCVeP`FYLGGASPdR8sL!>(GN zZijX0Q&`qV79k!0Su470`#ZM*VYA~-NEw%*t7P5kgHdPa)0lFO zI3ZkDz~}Ckm`n5HR1P`L-2%)Him|fjn3y>*9AwX*qdN{}1PaPy5)%vH*MCI3e*^>0 zzmegE{k*;$F=z9mGz2U}by{GtaNenNT?Ma?>sw;yYQ9Db4yEki z4t{?WqMVEs%t34&98&@OXwv)0ygR86SX?+0;*;#7Uj^wM^Q)XZPU+L8Z2mb;)%QAbZ8x(7ywN} z?%e@Jn6lv6@tLAU6}XmViceUWMfu5Ib{>+q|Ju z1_8B}$ULC;WL^e$p!#u2ej&zx^JK^C2W_(%{7BO4@N1t=D7-}=^r<~Jq=3SfK^QIt za0zWbJzRNLA3rKTlto2HQe2R#gm;skVA{I3wL)@ zyyA7EIz{jx8`>R$uM`g$ZTaH0^KGY(Lq+XJ?|`Bv8W1U< z5<3I;4Q=E_V zNu+5(wq-J3T!QmxP+=#<)rgeEOXOfh_(!w1Kp#jD!fdakgRbMG|K#%ySR6&@u=9!* z3b)y&`B+w0&)d6o^-JaZFA5JHfGTh73&`aRwJpaJw{Da_jvg2oAa^%E#|tM^Xm75> zQp&^QV}xWLs;SX^tD}7l5U2a0wO>vtt&exELRXzl9>y8YN}PdO758;+MS^_0n%A4@6%@T~@%F;$)BDwz@;s1!-XGck51}J*X#i)o!0p+;H@2}aUA=MUZ z9K5{hfDiY?V8o&p2E0Pwcwigg|7&>qv2%*BfRFjGIT`m8)ws00Qg=b*wvyn{_tJyt zDD|~14C=Z)g(nFG$e z&=yyD6{ME#09gt%(vU0IjJQ}Nr3;P-Ep3bQmVAAO8TRIl+VrLQ^#u;rW- z_wi$Kt8*?r7VTGM3;-0A7D?O1E?w}$*V#DAJi$Jn*KWvB%zB5EP^p&)7_ska@z{%ZopS5a zv3mBb5D14pU}a?ug?@PQj7qSb^;cs373lt-r>`X!#}(1!H3LXP>J0=1CRorIZq_SS zZNVAozZ5Uq^>E%w&}>rfNi$*Wr2f9nVmRZOE7zQkw@#wNku6_~y*yUoqLR6K$H3I! z=AK3)gAAf9>MQfY9zJ0?`Br6Ye0qH23Tk%Y<_8CcVvXh&QHF6BA2E^ro_+ClA|loI z!8-=m-v9cY#_Rtx{KJfftNy~ogHUH<#2GoKg&6WW+~3ENqOo3%a^U@Km;Uy;e(m$~ zry+%mk3j9CiRO!tB!;J0Zbi-(1-B-mz4x;P03)q+@1E}7hnmjC71Iq15Tk9)@^eQM zd{ZwiZ@rRK_cf;Nl-V%eip|dLLHSkPt)X(0+$Jz=X|KPDVmUxv?qU#Y>aEmG@Um*B zO+TxQaSGlUw*I~5F@GiL`J_A$&vwwH(tI!?A^DGz^vLvMOjV%p z)3fKuqiYU(`f`?dr>YAjQ(g}^z2|)k4*E<*($tv-trteGA7{=_csJ;*9ZzRJG;r55 zrsr>wUh_tohqcpKWWcUIG%%BpOaH?`kYDfO*VA~YWb#KehjEf?o74P_%J@Z&HRT;a zi0bDBR&TaD7d1DIR6No z#KCc9A1jIHc8B?qDJ0x;Pd$zMW9GHot+nVF2Y3!v_UYWX0ZWD9=!7g{#M%4o5%!gh zXs<4X^U-24E&3^I;n1#T4-gIh_ig{_Uu%s01g@d+*s7=X4cM=mCKb59L7LkbrBORf zZ{OP7xUDaJdH@NGy<^%>I?60>bZY&AFeg*i(9tN-V0Qw&hpPzhoobRKiFHrHrk6i5 zW=QQ}l2~gUW^^LrBBF6mDTJrkL3vM7w|XJ=Dxa<;TQZn5>3(nTF}r1cKeXm@#hqQX zKWdfzU0(95V;eAYkn?O7l}kIJfB!|3#D+Iezcfj*lx77c|ye~ z{!YkIwy)3ugp|?zF`}39>EWkP8C_bNu2pzxod#HuQ>(Q z<{0==kHSGOnKC2*W%A+unE#)PS8}inm;t{FkuLhwk~k^q^)EcWU>4w#tLa>Vf;%wd zMvL?(+f}4kMt_OGkZCrUy%&tP>EJGYxhQ2}XerBqcJM$rq<+4M6k>~WrH1P+gw}2U zVR6)O&O5r0?q$P#X=G})N_RSENW2=0-!As=t2!X*M}X@`!$bypb#sLHPw_4Oc)Qo+ zNG4;WCGp&nmfbDDdx?d;5#8pMQf8QbDtb>GTAuyJYbs(M#=EnKX8e-)ZB+=8M*!7stFZQgUs%DSE+>}=)p2B6fjz;m} z6!p%Lj#j!-KZgOpmc4TgoyX_Pa7BfF0TK28Xh{8vB!By4e*gSbet-4+04wBp`g2Ux zo=)(m=AB1Ty}B`Myn#W>k6D`n^Eu+*_m)Iy>(I$C=6`5=@V0X^1*S+pAAG+KEj-XF zwWM$6=@cc`mDHO;o!V(9N+nTOWw|2kBL?`K+v1d2morTvn0*2RY=53OnC+zM0 zbL6D}Rn>+?qD*r|G)1UrIGnma2HawncB3v3F|rRC7u7`ofs_{*DLw*2%#F`7Gb*H& z=da(_c%HF;G<>3RS#!OyR)4~6A+^eRWyD=9b)~$`$fn_2pnDkP4~@_41TdW2KG+LX z*AFxr)y-1lE7rrTtHT$GoA;gbQY2_~UU>H$e_NQLtNbSJz*nphpNW7!tg zh%`L6*<2Z@8@SShqD2-V)6d$BhuP5n5}&hytC_SW7CcGPOP|P`z`W*3v(UsPo20)YBcWRr!6-^?vU1#apMz7*G}N zyU^UB!wlF>j|0U29Ls#H`wy@ZJjx}yb|E;!ye3*L3)QuDI$9yuH8;9|9`v#^GWZ(v zh$W@}-)^-3r-klUO>7>6PKyIkT&KOs)>&kjk9RYUduDq2Y0t@EcFkA~9o^PpGrOUW zn@t{`{8qyLD_BNY`N$k>iwYAu4d0FKjrHq8r+@5c1T`ksI`MqaxqFoaCHBTq{Y7XA zJ!{jeaic23o9zN;FI(G{(J6B0@*!uNL@bopOLNFxBOGccSU+R=73A(W*li@C04h*W6 z8`i7gxc$yP1P}Lik=nO7x$1rkc$Qi^64@^ZgM|fc58%qW#-ZI96LbJ*$6tB|>Q*L{ z7bL+rO>zM(K`kccp)jUz$;5M=bXU}ze<=5I0=Q!}o;A8DkB+3)-33DyCdRGbA}3JE z-{_6PC8D&#t*mgnR_dJ&ii*pKjHlo5HsF!o&d5#Z-ua`#Gb0u2jvPr%W%B6^qgLbb z!G$MGbBQgpIR-+X>4Vkc(5dT{U&jhrIxvE2s{!Sol*=>MbMpCSyNUx2Y;FMiNHDDk zeKhoH3}|f`Hfbh&tf(8dp}d{q63ps#RIJg;TE;*$fd<5M0SpO&9Fhlt z92p-bE-{O=8JN~N{=8C8Xuj?05>j~6R94+m!gk&-`%9ZigL>0$w?I!liJP*%y8=%oZLX%^xy`w5%1%y? z-b;frX|4GPDpgsd(*RxXI%;+vSa=)W8WF9lVz84H4@^6>qFWALJ?8{@fuF7P@ms^> z9dQE<0eoJH;AIgrTwyg2ueu9lj9D()`ZXW)siCnqb`8b`e$cIzxa`2#9Sj&~tTe0I z+gFO7Y!7xeR8-u?zH+4$MR|!Y9So1n;m$O#a=i#ZEnLNa8d1dGB^d#b5l~z95dM3fdL{B5>&F{L*|CWp2a$%%d z8-6b$UzA@2Pu$VyR}m>3$KWjnCZE;obgy1G4}s(cQ03{pN9;>$+lWr0=r9 z`F)6YwDWRgEUa>pwIu3+5yu95wN=iU1Cu90ns7fSRmkTcsdR+!Gn$A%XmkzuKl%w5Z+7?$56$3U*a4WWe;$K?rLUgR{n1h}}G>5wIW z3yP6)U_t6f60{cqgI#F&%;6TqG`1?i6&hxyp%HbL>x9gXUsaEAId( zSoTl``la_R5%I?3@G(~g#Isode>xO(r;TlW{RBIGNqW?uDneQ19!eUy$g}@GWr%yD z!-_W|?AhbKoToxn|&`*93-*W^@@A$YOZab8CCdROae!TBfa#AL?Ial4VH^(r^c%Aup&9+q)9*4M7fAAWKI1Y~p!z1`Vq`h@q)mzg(EC?bXA}x&qf~0hp zbc1w@lypm%ihwjocXvytqI7q6cSzT}wjPmlKj(Kp=lwi?x%~ip@9$c(X3bo4%{8Uy zpV7-)_|DSsf8)?Heb8%PCc$_Hg#ZFBqxiKXFM^OAi!S2!k{<>>U!feCSXax)j4NO2y@iy(l)Lo5eA7KDK zYm$Ad8H3bL%fq)e*Vv-fr&5Yk+%7A90vx4rOCrn$2jj*D=uXA@#(AhmGIfr4JCC(7 z!fqvh6g!jw^P_D$OHW@7ro~5H@DFAQAmw~!LY2x*)~CY0*urCTecYZ+F))UUIRp=+ z^$nl6Wo{yKAMh>by?!222pnEMH%z2y2vS2V-(uYQk_!_JQGEH=L7b?eW*n z3R!hTE?(kDpxt$r4usx?x4=*G=G(7#(VbThjR-2W*kw+g_IhU#pyBT01p)aX z&4g8m3?hJ@Yc+yqBD7qeiZDEaO68R}VMg%v?y_^!8}sqp?{8{cl|@xEX4wwoGSFWZ z@kSc!Ox2z9gAQ;LXO$BUE*zCLRn$2_69v#8Hu9vA`Ptw>C;jyMgLd0phkim7WvINa zDiyMKvpn645>hvGpcC3%COi_9FngL2c!E7purn-y7eZcQ-c*8B8Nk!O4 zd>(sE^AT-aDd}rE@)z}2sDNYYf~=U!f%9xMVrOK3Z7{e-&M{&_6o z?=Sy95`e$`U`G&YS&p!d^?B1DGFB4_onwknw%9HLd zd9RH03Sy&iSy4jJ-ju6So%c{t@yI1ZQgYLary_g#OJzx0Megs)e|?_Q2A7i07|QkB ze?G5RNBYAA%PE}0T4z+UKI+pv2vZb1XElTi)mQK427hjBZi5}H$gSPU z?hnD&h|Z$a%keVPpKRB_v&*w>ES~!0i?%2*^=$}<4ADM%^k^yhRgPxf)9+X<5-g~^ zex9#L++WUCAnjOK*t_T`sixn2;` zkeM99IAlI<-X!S{=ETT0tC8yMbEo)ILXprhcVu^!9v&TquG1PnnyzCIxue-PQRLQ^ zi|(+rsU^+?|Bdbz^S^pFP(Vn1Eja-}M6#2rvQ+ z%%pEq2OJGS>Y=hIlMIa!$J3!i^bp%oSexEZ9J443`S$eD9M+bX+V1Fit?pM z?c{S5C4m$d7)sq*l*wKi2ov-QW&K^_SAUoXI!O=ViIiE*Zgb+{X--F0zAo7+acF!! zYPaL9BWtTD+xplmAhwXX)7Dv{Vya9ZRWyHI?EG#vCXr%|#mSq={KKeJ6pdi%o?^>f z=hMEyzI4M_vxE99%EfQ3CbdAP@wZd_@2_MWp`p_3D7tPOwP0A#wpT#Ay_QqJJf*u` zQ0|MCNfHP=iD7@b|ET{*(R1>E*IPOa41FD9AwWpNVv5k7m8+&Q%yOlIN*T00?44Iz z3s9eg!M2x)Z+Ep;i9R>k8s%Ig6I#3I#1&|7GKKq5hF~<@=Hi#a7vLW>!;5V@?b&zK z1@G9MeUKH9`k?mR@2cPbW@d>3u#r%y0uHNqzgT z4C2bn$Tl=cizCJ8r#j9EyeXeExKLnT60!ha0`a zL#d)@pb>j$eCqCiA7RJoERtxq%X>iqrzu%@<01>!m7goR7~ipbl%p!1WBrQjO?{I{ znf;M(+7h>IM{BMe>cbhw2!4qG-2f1MW+@I{PM}Mc+d2AeE^E&F~ebQwU0{?Y3 zgY(zQ8RkPsY&-MM`u&fKR0DA)uGE7kGAE5Ri- zm%HYD2Op3Zu9~_+Ke^P@vpQ+XFF9$MZ_4mBi z_8=;W$UNsgzP0@r|MIYML#*A|)yxm)w?XYZ_0VbFfcpS69G#6!?k#OVN3G^BAnQ9l zL**^Bn0RK-%34!K=hTWhsni{CU>mE{lfv&3RbrD<>2x}Qv^O(D^CIn|h(BJ*2NJTO zmO(*E;xD>O<}n?o$B{egXL%o6>vK^`l?6L7Uy)`h+fwY#e|e;l+li_{t64MBdj+QT z;*XpBOV1f5>yFJ!F`v=JbRDf~V(uIr4RcjBSA{fWzTR^6kz%&RHMaA&*~ekcY#O z$u^kRy?M3GSVKo)8!knD{Tc-egSfouM()|4N=s6r?=1>&~Q}^Yic590MYqc<2+! zy@~Go|I#_BL6f-Ki-+9w0OT3a+9)08+AcP~9a0%ZMg!o)MQwZX0FBqZZ)nmB;~(N~ zuD~Bh{hzPgSztg=_TlkO9)e5&?ANcNw~DyAsi@$Gaga0M)b84&W`g6BVYK$|d=XRu zV$iKQ+ZXKD$R(iPIm7Gfr$*gg(so0kianwMuC$CIu)%KH1ww|U>VbuWgTuwYMBVhzTd!Q+|5=(qUSLa<-QTU!{?&rWn1S_p%0h^7`%h~d zZ=x>D+&Uv=R6x6Sfif!(BS1w=u4CB$?QLbk!5)4}<6i#bly6vb;$3JkE%cMa{u0Kl z$o*?@=H?n);P!|A)&giK;fgTuq=HlmvQ-G6o3fg$C>Lbo~Ix_R=TVA>Rk7$(EcQ7{QK z%5Lv^l<3T!KiDbcDlDY-zPXtH_yzy^+%_S1n4n_I<=h+J^VpA98ODcj$jif%bXIj< z+v%mY+Jk?)_n-W4!4v7tcd6XKaCWev^e+o}5U5NLF=qddZ|8wP9TXo=qoSgMih-e! zR8W$vuC6Z>?eLUyh6VuF`Av<74PVQ4&^IT_<-+sS((P=`dQ~3h2#a-{Zsk>rzm~}~ z6L#m-hIvtz(c&~+Z$8CucT_L_>ah-jHLK~3?|j3O8W5pN!n?y8g^{DU1cimf&z@{{ zj?{A3DZc$|HqwS@kb-#AP+Fb>Cn<$e_UFAmk`x*b(?EubQfbyGLy)*b6wrVR$S({=?iQ4ML?;* z6BRh`W^ag$YY!c5+GE2Lea}dTyYVEPz}d_NFK&d5j*eQ*eG@H7s;^Iw&r?0vfa|?J zaG8nFCHkEqSeo{ah5-&1B zk6^|p$1>0fcvkDXXWQzV;-lfKv?Hhx%e?mR?y+#`=&G%@`F{oBX=I7|M}?@ouZ+K~ zp*0JCUxx{bbz>OvzcFk8oRtyaeb9p~mI|yFzei{?1mOpw(1(uNhLG%~LH60gk5?;;^4SeY&JwP=rS5-z7`>!*bT;X}<#~m>WlwNXEp& zD(2SS;mFZK0aLygyfsB8Hrv{e=qEr{6e~w$7nkt6;K5}Z4<9%TNo!x|ZBAgSRw{Yt zeAa1z`d~(Dq2Hmp{xS0V+rO>U0}sSK61_|;)6OOLa2Q3*k3b(HM6VHeYQ}Zfs|!0+ z-p>KsFp!|)rG0}2h$&orynY#JF)H@}_ko4$An!0$)Yd_(Wo!KXwEG^=h@Xut@|}-Y zDxk|V{vYG`?6nfh#&ZdKQ4Vvvw@O?q$UfM+!Th+<3B$XHNe)o&eJq-g0r}x~M)BNV z2i@|Ra;`2CEa{KK`RG^7hsDAu6gZivgR8##My$C?$Fe?(VKxsJLc(3C`g&(-tDtZ> zgX?z)9u(m&wpQ4d7NKe6xir?@Eq&)cUM3pv<@vsJ7U~;lTXD+ z)lMc5;6eR<5*Z1PP%`N?0w6G*rbEeUzmtd|2Bw1AN`Men8>KfH^JCPYV#EFZ6tgl%w%Z7`)fN6BKJ?a-9JHLMfMr z6~}FFjxTc3oFsAVWp)K2rsH-kzE{o~L+QB;>pbTx46E8CdIO@Lrv=tn8`^O@qvMIE zoez9AfF?Z-i;>L6sBq0>LIiEZ)?WuC5fu?KE@i6LNz#MR^_b7BW>?6oDVELp#~To6 z+WdU}SrRwpggbvcX|NKy5`$EDtCde4_WEm7EDSQWLzA$`mbWeivaRn+u40MBUxc?E z4s2S@^gzKQ!-smW1)~~L8JTrQ&ob%lkhptDM$QBoz>%-ft)S9KRQ*S!ko`j;OiqB%qrO*N^D zns7H9%Qi_P-c$%g4;!Zkc2crhZFtulbdE2b(7qm3*uu96WR!RvskE7bl&p@7;=wEdKNVeSx%eK4OO=bfJ*^*ku{C<(O!F;lVSD~razFi>?<5pO^`kTlYxWjh)xj$uklUJ^{aij^a zZ^cKiRuveyQOEdocgw8~FSb2b$>v5_&(i;lebi{b|3m3b-E*98EJ2q2O}N7|*|^TD zFR@=yWm9REC{HDvdQ@(`vgc&cO?9Y`=HPOUDz~chi~A9fN+1%(S9_U$w%fzlolR=I zIcl(P^6j4!0)$72m-p?yt-ymIoX6-T}(xzPIT8Ujv=6+tO?dg2l4^vXd-+x~}`I|-oawrC_(#rhN zL*#YoXJeU*Zqm|0O+Nky+|pl;5bIb%c?Rm(D3_uorz(zYr6sKgF}}aL%!bv6e!I32 z&duVhg~3xYP3=?`>4P;SD*sm8JNT{+M%YYp2)x<4Q%*&O8+o8o{X-q5e&eu*MHUC< zOUV?3)w8mdWoJx|^%+EZP9ObF_L!_A*e^kV5rSQCPR^(Bj+2RH-Stu@J@`{e!~7*P zk{T8TR4RG=8N>Y*r(}h9iuBf_1$*1((}VL4XE8;6!xi-kAssz*cB_tI6T7{EgzY;} zM{DdyGXg{K4nKGTKUQHW$X?jI?&DJ(FyES@npSqWH1hMhZgRaDy|}Z$rc+1L1lAr^ zaN72V2Gl>QO5m^66}q^P#W*M?$Qkg-(iu`h%zfek<)O&*w*uQvF|ViOEm^5Ypxo=~ zRYq@+zpm|pgv;!(5OcDQr&4H9l&e-Rd$=JQ*3xoUG(Ul4Iez^4ogek;(9j6opUIdc z!E|=DeP>I{(lodFI)ZMOjS;#N%O;8W30&RzCTc4%w^6pl<+I7CdKXjpw{Q0Q6>kqS z#$1>zi*s4>_2$z%m&U0T=q2`-Bp1VDE}snMcrD>H_og&2wEKkWPSto8k5^oVl9foj ztFlG)^J1h8GQ+ZArnbfxf&J}nU*5G@8xWvZS#l42kp8o;^l0ISy4|^ zAC|n(#S@JH5#%b|62AZ5hz#;f{pBF8V?lHgF);7eD4`c$M%#+ensvX8oZ0SqMS~u+ z+9meN=lE{ZYQzgM%XM8W9@?u_Ja`!|M2U2z8v54=+5v<&lVR%U&qk9`EjGEAn7LX5AKASqnGfEm!P!iwBGck58>k+TsHc%5s-TiT|99o3h6t$#wwwDi9V7`-(>aCiZU#a9;840 zuB6x6rx$Q4PwexY8qrPdap)82;ALU%rw9J;gTA8Mo_{m1V?YLc8&Ed~_+ZY$=&~kb z^X$|SknGiM>aPD-Utcegz}`Ed5OnDpyX#wXI;Py()%9ju>cx=hvk1d}w-C3w9XI{A zK7%jM4&$tbxvn0B!OUq=-PW_-Y2d58tjd|RL%Y6wRTDvA1Zg4k6*JMO89C@#1x;>0 zTrnUs>V=*gS%X?^9WkiFY;wGNIv@OU_Wahb+)?at8*9j;qdLQ@ciOphp)KP4S5K)! z)zcNkTw&`_Yvh^ybU`~I+ZccF^=qM;9RKTh-LU>zqTA~M>sfmbiYE_Y|SMF z<`}MJ>!Nyb%m6MLc{^v6SN_Gvvxf(K25-eV)E_g1kMN)sthyekgz|jU3El{AC}OhB zk-DYwBf>bH#@Lwx<-6FBC{JvDD9YMk+1250e_ulGQeU-(Ikw9<`R>vFu&rVtmuYn- z%V}Jm`bfH$-{lY3Nr}$BKE^DcsYCS4D8Y$#w+vSz9kSYaP1~Ug*7&Wsz=Xr3O19Io z<<8VFS7}W>v%vEeHtRgUc-(V0tFs*b&To&xazm74kCMfPWRC(B9OLbRF)&}}aX!5n zd|wAZpFX)q;~y{inun~2Tq0$q`mJL9P9p$}kc_Z!)z+GPxW?bSIZ`AS_=N5YQ_P2K zR+rPy_v)`ug!jC}24qUi1%^NNHD?NVb9i0w-zSh5ww<~wzt_w|;P_Yx{D!iu51}V@ ziGFuzgrdh)S{H~=Z zKJ?~a(LIQmGNZUY+{a&&odI>9aAwmn`w8JR^Skdog?&}YU$MW`o`#>mRUUyR#r3~f z!jF3&gs!G^dGy2J4WlVeX|UbZE^XYoY|nh|o0JcJpT0z#PfA?M*p?a(h4XR2 zsZ{G3uQB60AymaVdDK`fizlP<5im}L+ifcx*&8ioQU(ZyI6=37+_Qc(qgd}U`y{~n z{It0s8P!OB)G{v)y>BjX{}$+4Oqx+FP7cO7#> zHvTw(*E1eUcR7DD046Y9$jVDW|C~{7U;|6B(qLq>@2ag11h&eRsss)jDr{g(LDaL| zEw`ptV&uS{Gf-<=0Q=}7XNN*S@FbAu)cv#Zxau(eGyO?ci=D)&F4~s1ws4lI({i)D zqZqhWq<8rk2h3&)0}^EANcc2oM}$G2YtI%UqDs>23J^O-CTHFqO@&w4qS^8o#a8>N z$YtXo+r0RlNP3*ZfSo1@$W_&IP+=#ARivZ3xQ3{P=QpT#ngvi zVa-%Pz(eFVH@0=k$<24eT;wQ8D2~;c9?^mVT)KqvOqn7Y_vi`om5|Susf?Boa`4#V zulO%rU0tn$=}O+IBE0x$oD^b^TkLS8&mb`xo*asDYPU%ix+E2T5p|}wIaJzo4^L9B zJqqSQ*f$xjiYnU*8q!rqqfo{^_Ri7oh}scsYHUL&J)&yg>M-y+n}H+F%DGcB$Z-W|2ox^u=Yg(6Yq&Y!aFN2Mvcdf9KoYS~V=L z=&PEmqyXC0{`TPWq&J^UdL;n_QUR1Z_V+?WeEqWiz0x9QQ8Y3z<@D%Rk7@g zj^hqt552+FNF7{2^!RD#LkS?^H6F((ypwE z+*u%Nl0YYH>u2GKGfq(G-HI)vpIe(9O4re#E{vYyelr&dDy`_l$%+Eh@JI-BUd5Kf zPpoT6^s*`yuPmIjV-OFXE$7*EBD^B~2=4LZqpU>Z_WXcNG9G)?Q%;+#8lJ^^$d#^> zP+*2W+<#H!SiVjTaDu8fm%}0MO`4&Dp>|dq*uR~#>-cX`rBZHcg!m4-kHbX)-cUVKS#}lm#nGoiQvCU{h40 znT+*^a!hk161X+EugE8^bU~ zQi{fWnSO3vhbniwAIp~2g=CWUbN*UsSd^sMy=kv0G$sabg@KMo+Y*-%>bn9wmGgs1 z^!tHPLo^BMPL2Ilg_@>Ls!2L7hF;<%3le=`2>U-Xwm$KDz~*4B$(m1=NH+fsngaMk ze1iT?+%AR_NpI5zMj+3jJ6np^;AmG|bzYA;*^?)%WqC+Ii$qk!8;kPGtMwt%O8vFM zF--lu)1r?~uRbU!jT{_qzG=ERl5_j?UEH;M@cV3|u#HC9cuYBMb!xdYn`LpO`Ot<# za`^t(=a9<_n$Updax6XG>r%oVY9y;=vdQF{Sct!$-=~ZOSJi9<>so9sMn-ude;m?4 z&OPr;mFMy&AUe`(aEGdr)Vz41RRygL!42kq6;jIJFv~p4QwH80-V^Yl^O@SJdwqe; z@G4wz_k&={d!b^J3oF@H93znFdpJDZ>@p++K4}q}7)3XLZoMtLGl#UZP^-N0AmpQC z>H1>T0<-^E%Yd6JZ9k@Dge8w(D7DiDmJXFlwfsQe=7iba2vVS!iGQSebA+uY3um5j z=HvKnpS3T8c~AbC3`u?j4d3h2mmRz=$Tj%xdHcnI#m&ZIc>&0w=*u@XHXI>RapS&( zf(nUzKz6WBDtd7$3XrCPqpX+9`5KODojbCm32+=nf`bF_L>zW(Xu>vRp7-8t6m}D$ z$(?&`zS$g05r%-S`o}$CY;RR%Wvld8@ZY659>`!H&BACLoe{PRQqRt6TXj#Cw+mvu z=|B6Er`vg`l&G5{E7=0AJ!XA%UyEtej&w{aY0lmEkXD|i4HMx`7q^Rph|gw|W4!_X z#TYFe7F^Dqx3?ZEvu+D=LQ)t+bKx_FjVSU)esu;rNA~7Z1|Nj@LxoT5=E{uT`A%k8MbZH8+MVL zX!kOfwo?JzhnkWl?~{2#!h$t}wmmR^siA+oKIHFs)N9zpaqcwS4x4>ZDRcwIYs=&H z6uGr(r>C_#P~_sl^L}k`vz#HG)slXCJ|NaXMwSV|nuBKgT~{#!D~WPBtJSyoD1IeO z`nyO-y~3Xjt@9bJ#6R?MOuXIivgWpMXiW52G9g5(Kaq01)C&hwdt&k!=;`%-`06Y) ze6guK&8D1iB)YCJ3P}A#J5Br0@!4&9iku$c;!*;|mGA_&%h6oTQX>p_qAgzT2L?YY zg!let*qIh*q_AfbA$$|vpCr)~xs5tYdO!ddtgFI#YAv0wx2ll3b%HbfyxfU>6PdmoQ-2F1@l##ia;W(G)FtfZ z_Ti&5Y;?aJrj1Or`ao^wn!kKero9&QT;Z6zMeY)vP2Eo!LGy=Ne0eza zw`7f9eSCkx+neNcW0!85f^O6x(7jq>{hrmIq5C6)wk0~x*v3Us@sifM2g!v*geR89 z=uPOkK9K_d!3V(?CK@h-xOS$D^Ic}5gqE_FA$So~MhSX2IOva=z8bB}cVP+$3$O2<=+;%)5_(zY~Y)+w`Qf=e2A-x@AAd5A715lXzj$ra;nt8DNUfMVqTV2+$AnXhQD|3Q#;KjwU#rp z6mHt)Bw5?rYrLic5!8kh)`klTa_UZ+TzxC@8Q+4&`8L}6^W+>H#@C5D(9;j@A_iiX z%J`{V0rtur`w=`)44Mj9s~~mnxU??I9jSPpFt@UsLccb@tk*ZuS|tVR6+mERa<zcKhJks3(g)f5}qf)kd0W)E=O(Mgylc~!*j;+Hb^<727XE9SdKQ1%Xxm-D} zI4T!r+ZW!>PIkg%0PZ5zsXW8gacNJp#XnQ-U_o4o+i_wy`W8=Vgc*$K2&=MPZ)@gv8H z87{~u&ynvd6_U2xmY!4voPJG^_w^%qhCB!bMUtyoz zDx~ujILtC}@hiA9-4RD(t=Pfjm7zajzrW71kDtv#b)J1Jy6@PPP@0DmyUtp0=0{{C z{LbFMYH1g(dC^O-e_<%XJYrqwQnD`gAPjOHzS$fnjS{BU+ux$zOW2+c1@QF1#T&z3 z!RC1Au=7`)n91DrvI&07XL|!>M79v*UaK=YGhz|#ykuqt(U5_$=EeoE+~Sl#Aav3W zMqlIG{*4LcE=SZ*sp3%fVbV6HBc5TpX6E7yxrO@Oc8HqUX$)Q1%bJs(xztuUJ<~RJ zq`g2CyLD_jdA<;2 zKToRgQT~f+0QaS*w|+p1(QO|Btl{!z5ipNqytlFu)VEq-H8@&hD-k>5q`CHMMwK9S zzvs@eu^nyn(>1jwCt^`7=1J--7VbZ`hm~C8n3S6QujI$dIi$xvvnjpONltTAwiOjs zp_OwxmMt#PK<>{hcd90<2NTzr{&LMSDzN#LOE@ZpFFk;0TN6nnz23)6Qr3|JObg20 z#yyAQSuep0GrnDFP%~57gDY|W#d?+EG`aut<{pI3X$56z^1!;IiY>>DR6Cp8w{`fm zp(w)>WX5Iry~v&BW2GuMPgv2g@Ze4wnwm6X@KTh^UE+4Xddkf$FQ2&JO%;O>R|M2e zOyjF<8x>JsP=BKf&=-0u@><3_Q{bLL$b2aN*(A$Aq}K5d!J}+-%d7kg5`z%YE}D}_Pi!~q3l@xmq&=hg_^B0T;h(cL&rnOR<4vh%5J>bNDkiLH8cu`GF)xLL z;jvHyP1CF!6q`T%iNr)`9_kB~In`#Y&kjZ7_-u2hxM_pEkLF?P+94IH$!ax)zr|}r zUc70Nw|qWkKLzrsSwhsPKmY zoR5BZSaV$Kc^Bu-YsH1##jYg&g@V$j#V%)3C7!Bod#hNLss?%ni`o0~NvNudx$366 zUov8<6|B5eIWZ0jeJIGJVuSEG>{VL}?P*sTB`sc3M8Mml9K~36sZ?e){S6RSRa|_3 zk!KXdc`{9gkKB|K#kW;y6qyNgTLFiR8Ix(>g96vitc3xJq@jD-L@ttcOBDOkf#h}O zW$fl2Pd7#!O+*%A#+vrMikI&5_O*@FJ0AqCV&i&xi&TWmr!%WYE1)#2(2a2b$TuGOB`cUZd83<6;B0=s5y+-b1aR_NAb)xuZ?g{#_U`OED}w`d=9 zBel+f-NmaWaT%GQT$O66E$qvn?C_qR2T|t-Fbr?5l2PfNI3I>d98W7%As=0=MaQ4j zlaV}oR>*si^*#WCQDkBZ?or^6C6L)YgvUP!S!*lX^mF8NJvuz0=uc*|!)|!l$ zb;i0-adJ*XYEbjd&CmOf_D9DbcnpVBsWRRFnFsTpJYWS_0b9H9nuokko{CyDDN|U3 zd&3^xF{eFX{4~b5IG^-xa7hiH%?ua5@j(0N4 z3h)TM5jM%7d!&ggMSIz<*=Wk%r`@AlWQIy@QHpK$SY5>~?iIN+`iisgA(}?JJ%?@a zHyj3M^i*Aaf)EOYY{2JCf;HSK@?X>056`nY-a+xn$I#;>$2NHK$=<{{ye&7^L`Od` zuGnE;kdfiflR-YfNL7Anx(Cuy765C_;;PP`DklbI!>L?RzUaO?*T*dp8sQg>G51fB0{gpM`wt1j6smHqW2w|-1$ZLS%N>$ii1OfoaId!WlYQTDq~_~t z)LkN(RbZuAHiT?gHyCOlj;fPlFc2i2`ug=`_Ww86&|PaZHoWA9LEbRte-7AhJlD_7 zM3)Co{8p^@Uk!u3vC}sYWO8C)Z*6zu`~MH$0~Q0cJ0`yP{HN=PH}Ne3;12uztv)00 zpI`r`LEd~|J?aNCL$_znZ~nea+0XWYz`~uCVtjApSbW4~FZZ8GF5jO9q5r;sGRzQS zuRn*u4W@8|0nFFOBIkwN_kK~Q$8RH!zx~&|RuhN|!?o-B)4}WR-hKDkzSo5;pq*yk zMgIME&isjBS|GjSkCl@9`d_l;tWH0RY(^_|jfLO2E6?mPc_uB6G0)>K)p1 z7ak?u+vUQcH(I6VsI-h3M_TNdx{$j)RaO1|j_2ANn7img5dK8X(Z$&kmyO+3HOUkD z^k-g56=i_qk6yY!^%wPd)hO&-Hdy>Hi;B&4&f9zUf!kmM5&TY$YA|iN%yhLM ziP=eaq*uvq>FFf|&65R+iIhGgZcW~S$IOs2Xs4SmIbaA-7?z1m#tVpJrTQ|MjeBvz zQDt>yF2J=gw^~ox3}u2YMzp*QeI6h~&W&^9DE`k)t_0iAD){`*rNFBV+t=3zMjden zL&iP@;B#~|5)%_I*6eqM0!*+~5KBXTgvL>e51_CiCZS_YbSA~N2b&KLY)U5P|kxgk6RZs)si z8PkxU@5Z7WUv{W=X7fXP+nM{u)+6q4ytQ*#{crQ)DG~tpIBc6?`QvX|BUAwbgmXLa z?uF43@{!ff3?I-(*Xj@?^@QlAZ&mxah!9b|9aYT@ynU1Hw;1d5h=Q}tL~*@ijQt6F zaX3b?P+|`>fY47Pn)a`*sJ}`Xwf8m{aJcgGzc6dvrRzJa6W}eYbn*0FVei8RieKZj|7402nV*PW!BSuKVswN2Vh=atje{&;aR=S!Gwr)x(BT57cfc@}9({5L_6VCgcpiTNU zllJCq2mzG)8N&2KXw0r|sGqC*xFFNa1fKya^$pT8{}SMULYUyFY9$+JybvkdH3Kq^8pLxBE8PWrQ0~V& z1|Dd<2&dDke6+db7Z{6?vGY$ijxuALv23e3fhi3b&$Irq@&EZM@iS~#-TdnR(Rc7pjgp9s|_At+4c^C8{xz5)NTVA_M zs|6d*o{Zk+MDywXEcss)SdRO?(0@~wSEU(BU!Tn$_Cba7o8u67si6in-u z_6`HMy(2+ynfWy-^%_frakUmP;3Q7OM2KwUO{0kETG-r(Aby|pKOX8610+Tpg=@07 zz8bVpMrxhP3B)8M{D7f>*&^2Rm4wS9UxcE5_G~RL{fw;3AN`E11vP`k@Vx0zNyg&( zyLuP)0$dhj*_T^RB)jbfoW^8C?*`Uiy^qSAHLO>Ncn~*32PHttoB3+<>Z{1P{ccG_ zZez!RHt|!P(bGl!jd;NR`hc;wDvj20dS8+w(g)S9mRmy6L_H~RT8A^2=gaGq@GCAZ zK7geRopHiW(;iO&s?FI_Zlp1@!~E1R7gMK#61wk64rV0$-Ru&z(}`RI{Lx|q-zaZjz|ar9+A;VROQ zWRYs8Cq@K!9%|()Nk95`YqusS7wOOR1mW?O8%iff<=bn!H5Z-AtHu-46r%bok<~V} zVq3>6&4GHy?oPIGP8N^X-*cWO2n$a7W@oyxGp@em_S>AIsjnc9KRIaThIz0d(f0(v!@Zq#BsjfLw?`t=jpKi(W zocuIY=^8P*XH)o9G@T+epWAA} z_DMQKIyzM3t=b&?yV_Mu&79`#U;^>weEz4!{IMPR=a77I)~k#3I)s{fAXDNBB8!m? zBQS>sbRsPlje~g`9BW5grGx}l8!uBjVCefnKjF?VNumEU7c=tWReG?zMVZycH#%&( zL)W~jT+7?vY9(ANc|Cs2X&5~qFAx1Lx^k|Z$yZl6`og`?HaDYGtk9Bn z?a>kv2g?#isMxDKm}dS~r~4Z;16(iT3jP%nQ|N&C@@;ssJ?3Zgu}ALi)P*gPY>l;4 zDkZ7BpibG0zPQ{AaCjwpk5AAb3su7Y+?F^DHgBw zd>#KN0Zp7!X~U?A7sFZQN#(d>eCEqonW-?8C;SJy1Cr7>$YspWklD8HFW)1LKXq7` z6t+F6y}d<8c!;!v95i`m*IwFvpOLUi!CXd3^y!w)09+hAG_%&aNfgX_uE7PU*@$e#>ivF_K5)}nUc0(?UB|WfqJI~o*wPl+G z&?jv;H`J>2O|b{8gKAh7UG@v}vc~a{2bMN+#w)Q}DDCPmEt_i$h5! zM7E~0hnW0}L)l)wUmx0&C{vjp6MRo6wmwzdlG8dslIz$7P$>0FqfrEFxwJ4aa#(hh zka8)g{i0q$E~RaQ5)Ut02#azJYV(~CbQc7_ugGLY&fCkUpzN*@{syY|=?!s8_rutm zjw(SVjxm&qhF-syTtRYEX9tU)kfJVSg zX`a|e=5G6C2%X8O!&Xlyg%krn4S%Sm;1a3`>Bh{zlw3Mz6Q+6QYL;bn6lT{(jWw;? zwASuoK1~a1NOa{qZl?^g&C67P{Lhv%@{jes>vV=33hcMotuUJ3XWpZYC=r$W^v5bO zsP;yr2nV+9%rXni1A)@fDD`WvU1a@E?Kz#b(+Q{>}l;g2-iIfC7V(@?y&_vEqv5=JGNb z7B&M%W*Sji1tx_<6Hq-cXKwst`jj0z$!*w`-f&Bo!BRVK_rpoL=>LH-`2v|o4W6hm zze??G4s6VsJgNxaN3r9IX9VucTo^mZ+8v3TM!UQeihOcg)0s3BFnjTi5OC~nIJmI$VNkOGs zxEi#GH=VJ!YA&k$VEpRSbfMf`>#=y#Z$^#(NWT9A|Jp!cAbf+aYdV2EE7XC^x;F|j zgsYG)Wy?jB9l~c74o6_m3nX`Jp}jvog>>dX(lVbLY1vf3QhsDkwY)j`c3*PI6phr* z#&kkhVNjvEhJ^hd8ff2oL&C9OGVm9}ku9fl)5znHzpz;fZ+|2`Gwge5CWdT#qz3Uf z=N-HGe95I};i*(i!xU@_&*wW2D4+zw94MD#;E5EIMfy{p=+_>k0ivVg>->cC8AI&- z#dWI-!Qs|4d>WJ^frrBUgk$9S8E0uffQKD;H=rn6f2EuzUG1AElP#Z>4CYHe;N^u! zUs~>E*3o~Olex`C7fd&#pMT)cM5UxSYE7gt&`lEd<2C7FmP=f;U58y6DU;l%uv?&A z`%VtWKNFR%qZV$endL?uo!7tJ8t9g%NhGkU0rM>uqYUDM!M!DhimGld7zhY*1YC|S zG3IqoA%hOUfUb4QERE{20C;D9BC5x#1J6<+8;tvU9DjC z5R+o9H-rn+V9Xl-7U`K>32v1I%lhmZ5W}I)Y@ftoZykV~W@%Jd_KkgGvg|A3{Q;v7 z$O_<0cdF;S4|wB09$j=wZ+t?czTb=cl5xGQE)X92bbLnwy=5d=RP%@?@1H}e;djrBIk{oPqlZUqP(K6S0==DPW zSwL`8>HMTN7V**J{RtJOF+d(3$8Jj>k;LyM282FfU|8KcCqQmdcT4|PFFH3G=n)3m z6%TJfWDs6qzKXYe{cmPrSTEIm2${1-Bs@=x29$xRL7w>xX$;%k0XZL&3hSW{k+q+S z5~O|5@WVwF{(9%dfzfcg-e8k`_4y56p>>UdYwK8Aa=6*@o6u%6d-+$!3m4(1>i7{a zAiTmPMU-v^Cwb(2GbU|+5c8s|&18;uy!fK`ETu1!^5AV%t+iHUQ1MITLX~Wp5r4zV4ud8wfLRhFrlFTAmeczbNnkZ zUdw*Df5(-K>KPIwqpOpn=4n>vW3>p>hcwC91_MJ%PyiGkvpH;c0-$UgRUoA{SBk~eKdHn z?*d(tJ1eo*DjS&+(4ZH$FM{KB4^futpsT&eHW9g;N1^xYzsX-DE<8RekE1;`w#-M% zVu=j|9Xu)}w*FHQVYV-t7au`5bs5qL-0L#6+QFbBCBa}m-(P=XlzNqzhC*sUZAzg? zV(?uf;L}Cg!k(bwV^be#aXbgtZEB49SglI)39M0i5Sj|vp7C6%3!r$7z2vk>MUA;n z$g!a<{Ut}NzhovQnG_mBdS)i+U7D3_sqp~j0hdZxW7ARls;^teevQ`UY1ovV**isc zGxdz30JqBvtY)f5j$SC43F3s^#{x=B;zrr?v3$A*A{wQji2c8bK8k69YEvJ}vfuU6 zrJ+0o!Vn$tT;nxUK+qD*6_ie^JlwNM(w+sng+(%cFb}Bk%Ap9Df6Hi^rhk#e3C z7;}ry#KxEw5Fl;_$~n2p=aNf|`}&NH>ks77vii}PM(%cm;e<^wI34j&qtrCCtZtY}+a+7jAM zl1r!iVE8s@4{Xdi9d_|A)~b-dhp7J^!ui;7GXb_)NomA#ck!_mVARpyCnaji^+9O~ zf~_|J15Slc9WycCpIw@QdSKY51DqU@ZTCXgpsdN9!911w01}h$e1=#!THdIb!OjAM z)CsChlE28gB+Vu#m^dMY0*+A2tDh*Iaqe9tVl%0}a@(N>%&O0lSFAbr<(aE~QHG3!|oDdRn6j@_l+&qw3T$fzJ!2j>@K%Uv>9GOFftn zxQ35W6UO%pg@TW4vb#Cnighn8#Qa60+q&6E^oYUns?2)Lv0i7PrO}EQym8N8XWMgQ zZ>wc+kG&HAt$xr`|Det5__hohn(_192w$t@h4My!37Zyl{P0NA>V63KWha4CHAagG0V1wlf|?*66DRR7<>%H) zx_54ECeimCyCjTrp71E`4_UH*uogKRua%x)LD}wKSC)6&uDl;e7UC!WxCK#^PGSvb zv#Mh`Hk&9`!p^w;xaD{%3MXw053aj6&r(T3^v8MrH~;eZhP%m-pe5d%$)DgV&3b}} zf(_p%b(3=3D>+B)3^garco83}+o2$8Z~uYWv_FZ04%VNyrJC3<-?e3V&Mz55{}d>y zHl;F%#pAMlpS4OkqJfc`-ukB2+BWX>>-XB)+SpAGNAwdTfS$u#W=10?s!XsRnp**u z4=!NwtfhTwYVdg5l$>d$+Yug-k?$sxKy)5=$8k0Mz*=3mza=ji+gadjWH0#awd?U2 zNwXw-IXe9?hr?5?v9q-@xy-~8*Zox`Y2In>a#>jd8|~%xW)h`yC*k4>|FmZ#m}N`1 zh%Ve)&Zx=ZyAok2JW!@)N1w@ZKB-{Ft}xenz{DfpeMcv>=4;SJ&LV}jiBB%QNsgzt z_wr>kNtpY!DDla{U9Jkw8FWd@F7P*FqeRxQq&q4ov%J>D$KoO^1w(>fhzFKzy@LXc zU;$#1gvl?gsb@%X0%rDs3vqUhX^J1spL=E3E_G*|B-S?kZu8{Fk(aWH;Q_Ap;aoe@ zO!J9sG_O}ZaD$SrE$rLv!CvMY+ND{^1v&3j%x@>=tmEP@e(Y5c;!ETZ`4L!up3Z+d zu@*GQ4j8bz&pE~uwsN5N+b`l=eHMWy9$^kI4t3(LX zS6k<(91JiMsB$xm$7|Qx_H;8Fz5UhqaM3MF=CmnnZ(k8`^Reetu$9civu=+D++^%f zpuO>A0(Igl-EEZ5u`6G*y-zkgruC#ecO(q;L!wL_q}A(YST2KJj^pFK-8qxvvSsJ} zfV!=%+^RNq>L!L@$W@l~8nv?>o%1Bydfki0r&cQ3(u)20^B9Y-$1+WV4EkF>!|5$f zt_8%%84i!WL3`VF4nIv-{aP87$K&)-Y)-^MYtw3b{CSUFU3khkV0@{>W6D^t9rEXK zLc@njt+sX#tU9Ak;|u1kTuJ*!`?2ZJ(qiO{d@wsLUcgm261=Tk)Dg*>okqq0GFX4t z{AGFUZ8UN_o8uhgIZw>Dh+~n!th2boZNz29#cd<2_-ANa+_q~ej3*v;6q(PY@=ZqB zV6s#-jMAg5hG8o6QO$zKILnW z&=7mY^po8j2Vz70(BTh@x64y)6Bbm&4~zPPUp znT5A_bD6Pfqlb8wR0Kg#(&RLk`$y*U_LgQQyv-)&3ynvVtwezj<3U*({+MGwFC`ux zp6J!4S(=b2q54YEG#Up6A>vHTUBwGOG&Mh3cyAaZNKl#1xd0~*-BVP z%g0oH8OoAu=IpOh?T1n9ZdlasqWeJ+>YAuOA>QK8=~tInCthst|9L5(Z~g^|uQ1-6 zdArsQ`E-cb-RoMY*v$e0RnEN2={UF9$?Edr=)_)A{K-@=r6!VT2;96bV((7 z>H8GALuR$xdUNC?eOc+?&mA0UkJqcV$E|`$Z2Bvp)rt!0t{=0iUVgdbA@gu^nRsO` zVyJw0eXEOYGW>pm{j;HXb|)bMGsSx=<@r$^u{NRph8n5RcxZrfQ@&S~PD?|)UWk&a zb)3LkIXwLEX+s&eOQ!Jh=ldiR_Z#rNQcbPZvTiGm46K*gF4tXL=d9NFcF^p9tK3r4 zXUk5NJWIAVG>_zm@8$n*A@Tj@CzW93D(z%A_^*wYK7p1mk1C)q*oaD`qm~)_4skjP z+~j5FEQf@+yF(0Yw*-sUgRfF4ALQ>RrY|i&(bIQ*5bjRflO%Pq?>DJakL&l6csTrg zd>#esb;U%4$Q5_4qGUa|tS6^=t;$_f%Z+o>++K6KfVx{1=5E>Cjghvp5!TE??8`C! zeB#wd6!U(`WQ7)3dbW^M&svQs=a3fWz$94f&kA%3()mkI>S+j;S4DfCJ^b(jBb@I- z>6qkwa(hXV1Tn*_rP%|F!HxM(Pl*(V>w=4Vvd%a)t?k1dbn1kN{(iszsHYCmFdz?H zXP$MLFG?kgpH4U&+l*A2c%!1pGxAhl>G|3+U}0&U+NkT{nc&fJ@$0o8pSBsow=9jq zN9RaK=bOuP2OEd(Ho+{=$C|y|sbT&_arY>+++03@?=hy%X)Sg0<(vQ9qk(w5x<&>` zy(#7Ys+Iq8KAL+bY`H%_dLev0AZ&q5m0F6dPG3q>|JKjS`3?cb6}<(V6!u*gXI zM3=J&rJ+pei%13q1tn!icw$ByIHj9SNtCn&gx-lCi;uPDu}zWzeN4UM-Cb+n;7R)9 z{f(#y+Mz`Yw|EZz{SDrvjyz?xdk+~5^dbjJ0jBo@0-y-Qtz}s(^yAzab#>Z$=k(4k z=Q=vp$|o`x+7gt?oFj5oqW1dkz7q<3@7nU!oIVW=Dco^b2F@%(6+i}%*Jr1;*jVwOsI+3xy)+VX&ZpNZUjUr#M#mu#)eaar$f zGUzvwXIbzZ&0@Xpl-PPaPvSg7mIZoJv-?+y?05hgRpM})Q|X}P61(%E&l`E{#~Wz} z`0zBD&tfC73(D$sS}C1zEIsx(<LpyrD{iho@6`XeFaGof z7r9jSMLu`_r77SosWkSxQ}P6e0kfK2kJV|H-aCHK_@q( zxDFbP9O-C_wHN56y(5BdUZ9kRw3_wl`(vg{WeEi?>p^@tXRcJ1C8|Sj%`lQf?$PI$ zwa<&Bw761xV^eMPDBwaDlCvtE|5wu_J$o)Mefq%MbBrVw!@ z-^w}~FdB?rJAdqHErfl}tD=#UG?BIucq}c7wl;3l(xt~!uCJ+nctD8nvz2&!$0k4Y z&8MdMLg&whBoG~=DcRQ6C*(6cCj#jw%mZ2SoldHCt|^%_QCWR~Hg&p}OcVoEOLum5 z!n{dcMloKDYT2;#(1Zw)xSba($>*!nHhEty{lio>O_+>@a%Ixq87awlTGQM#4N_On z+rJ=M|0zpz*GF~cW-{68;bh1^dj@LoLelwE6TkK5GvI}h zI-?sU7S&Bcd5=qCvOe=M>4ytfDjOf9cyh@Wc*cl#Wz7dM+sc~1SWY?qEFKvxH^ORe zZmQRjqsFi;z8>(BEkB5e`BfmBi_oAcvHS=}jyoakA#n7FryYMTzv*2h`;_YOW9hQH zJh#uI=~PSlBjT?v9J$d7xIhuY$-q^)xZl9W)MQSQ-B;0b=h9)HL{N z?+zdWiO*T>>b~H=h$cE;7f8;ow5w7*ImHS}6yvs)c*k{`+(&&6XkWhvD!G26_=0Jx z4K!uVLRzzn2PO@q%iQY|dzJ?9?6;=b6Qu{uF1Z~eOo)-db9>K+AdiDK)p_s@t}~Cc zr2GKXriqj7z4pxX(m@4BnG@16032n=ko!;T{qx-^A`j0x&4bR$ZiB(DW_s*y(!+x# zI6nw8>NPV>pfjP{JDWJW!%*ACbZxfgfVbC3s>-DL28Fj(f5?-__vj$t#lT zBwDpr0b#i?VbWU37&fzPm5nhsz6ASi2P?KKa_rq0ofWzKRkwFmu!YhUg7bS*MfrUh zn_o7tObhV^ao~_XmS=nELAr5rz;YQ2i)Dq8k#RP!T)6cF&A+Q?G%c;pVp1+g;MRJV zAX?gOUf0HIR=bI3uu3yC?#TAkjEs(UIU^gj^BibD;)D@e_gF$kMy89(FvxDwwW+Mh z&ylddav+}>mIim)_Z!vvB-S+H*fqa!LZ783yUu9KZ-FgUbfmN}zS@7Pyz~)$z0G1n zI5c!taoHm0vi|QSDD_(u>B2yFLe-My;m+sa&m+1V)hCz#Dp5&~z;7 zfqu6i1!+fkA5mq@6%@j1KB5^nBAl#Qa@Xdb(JYcVZO6<>UW&h|YkwpP$i%B!DM|K{ z`;(1(A3d?}IL*3_F;Txv4*4Ky~u1*n-`YsDGW%kPXQ{itfU`v%4y(vJUhXU`}r^lckQ zG;QGG+;II`muS?0Q+6SsksN2z2uodRC?#7iLP5h7SfMS77Q>1(z!_vP(TPj(O8t?m z^o1K6!6c^ph0D3cn6I8#QnbXahmd$nBh8L*6P&e zDKk+4hXjFHYe|vi6T#WVEeUo9F^WFvJZRWckkV!*I=p1%qo_y@euKuoUe+Y2bb&1B zmgRqWPVF=JvaUcZuv;ti_%zDr$~T6yj+xDD-vbYX<)R2*9}GhL+sU3(z%xciuFAPK z_48*A2t{Ahd2rR}2;jey2&|EP>@Atp8$sbi9y4CFvOw2Dxzaf?pE*~7;e~8c_k_!F z*F2})dN&J%f|2pw&=k%<8zQ>g0NzV*GF|=72z{T)OHCF|kfFwwU%8D*0!eNb6BCPU zkKnf+T4K6gWqxIGLmASU53jOu!*~A*1PIh@S@7y?VogU=RP^KRx<3tMrCsFPzsdQo z#K6UON0%uv5l;CqhNwZRqs!K;8WF^G+@F%1aQUyvp;#?nH_jO1OU*2=-1?sqfL}Al zA8*jhddLt#zMXt^&QoR?cP#@H=K&YlNA*lSHOU>_MEEBkLv3tp<)vzkVMS;x?9d_T zl3N5eB)U$s5O9aJwhj)Mh8|fBs@6o(IvsQtruf#{V@D4UzXs>9{svFE@Mw)w@Olc$ zy=}2lqoMw&{WadC9mAmj{{T1xvOlDh;i+{=-KsR27f1lXXnkoilM+qU=oLm#!mOmk zB&@AJj$@OE_3s3b9K1gys_M~^blTTL>&`r4(gzj0swTou9c}~hv6QVU%v1w6#=lYl zf0zFsVYz>|3ctO!nah`j1z~sC2Fh`%hQK^lD&CG|=Jw5`X5|_^wOTbVFR$$y_3QN6 zB&6B$dG~TivuBA8P zTrUm^re9+H$1-Kc@{eAeyDET;eTiv)5fXyHid@vD_rsSDvkgrLDDzFH+-n))`cKt6crH(_wg~0 z<^k4@LTJ7fF`k|%HhnX1?QuGE$0&u?dXsI*+89_~OEJ`SIH(&96uoucnG)+Z)8 z4blBT+iXc?-Oh$Io?*GuxqE?$NAWDW0qJ_j_|z;+NLfzluz>CzLO`| zt5p<5Q`iL=g=^e)juMN}zH{-(&}3|E9G$ZBA1r|CO`iA@%!@|SqfC%wd{^n+(mFgTK{7mgM1QvlffDy@+ z#4mKKq;@=h9K=VO)63qf+uX^{Xy%dPQkSDPdCDKCP^TWpk_*WCQs|URVuXwX0VJ<; zOJ2?0qE%U40Dz?SLkse>k9|S+{3GdT_Z^~tL_99?Yd3G)T_*Dd##jKF4mVc}`AKZ~ zPxt>vPEg;6lEw)6gh;U|4f|Zl%Q|Z=&-rGyl$KvLUio`=7d(nK(-h3p^R=#mwmpg# znsG=TwYTDrrZY~m5Ocw0&xc$n5L~ou@pz4j{sWLW)XIP8Y!no?LhZ}s3w*p0IMjrO zh9>4ePqMV zeGUqYhUHgQxMkM7gY6kwP7{H@xqN;*XF&@8v8`kF7O7;&n>PY#JfzWmL`04;Gc7?Y zT)%hoxACOh>VV!5=oe({7&WsnTo-vRdd(&T=>fP!wQ2fB6WN-=n)4MpE!Po)hp$T{X5 z@@tJpiYzDH)*tZ>D+GcPOODlenEE0Vru-@Z{#2Ii(=@rT4k%lT?6(-fa4EZbyO+r! zNZ|w4K%m+qB){8M4OF((`^{rAZ24srcX;l}Wec_G22B`JGg~^CR}LzxglFH?eXpn z7H=_7qrP6Hxz0c`T8^us!8=l7;P1ROVCSd^cnnNYkZS{)e08*QYj#4>Cc&hXbEt~GCn=Ruc4dGF+j{5RNYNY(!{e;yelHxvTmz5%Z$PPS} zw3F{PJ{{xX;CU;^t;EBcuTnDJQ}W-;QVD+-2&G*CY8-*N>NU!M)70tuJeD=WpP^O}oM|*O8@*&v&BR!MwRO|( z-7V6wNi%2X4||1OyU|txB>CyI0c3AStO#3=_K3UaX+);$nuO*@x#{SbhmNeWR^e6N z5=UqEx!;V!8b@oArJIiE(cN$8#d!#QX>gk18MIQ!Qx@Ft`$&rwE!{J7OzPHFYUjOg zB8awegB9-3(lu|&0Gz0pyg#rT0N1Q-#jNiC}V2waggn!>*+G>in0%-*3e>TE8g?KmdeZ#-kcGZH|Ck!#{a! zyQ+xT8`3awk<$XSmH9&Ztyc~!dF2#Oo;(pIrr~0^cJuZ$LeRbqv!H+%gKPCp_6;JU z2j%0I;@wy;Sb)uoS0*3s^?z5&f}xM#gDI78F9*Y1cXvkibor-5=S~aHv*dDwf{Z>k zW1~asj;gt~H*47QmGEhvXdV`POtv*|H52yZC^d@VlvF%zKU`4tx9N&69`&7$h)Rg` z!>1jt%(CPshkO!)f%Nuyyc$UhOmd$rpz#v#li;lF9-h+=h2+9xs{_d>w(E?ZZ2j~! zwYB>SMG{0q+Tkd)a-qSzw;vAS+zQdg&Ple(A=n;xvn2ynkCTg-$#ord2wso3sToDg zgc1<0Snf+a?V0KxLyx_{39AtX4YSa;Nf&w=YD#GTcBo!+3~zY)bK-@8Pt2hXI4>D@Ns#-u@6tJfmS(dvT^+g++`f9dgOs2{DYvE2M!3=fv#>(tNt-Xl`I; z)ktt+0SIv&c#>Rq!7~^c5^~Mz!`fJR2k@H=h=+!%5k;~tDDkbGG^~>LoTB5p_PTHze|JWJcupA4m6!sCxa>6ZrrK(efEY(C~0wKD5)w~G6M2Or4Ca@t>K zvUB$F&v{5ARUe<~gH1_+u zip;5QRac>f{e2{r%P~BuN)mBKJCi`WT*MjeF$6bsUUcYR-QHJ$B99z#p=P3yQm67Q zJd0rQ2%7gYltqhf-%3UwXdkTC6xoc~B2(l3Y^A0vmuM8|H~6sZ)^i@23~<=4O^_Sh z@1=Y~A(GwFJPX4TRiDWrk+mh(MvBw-_DPD_+h=akzY||mX4$za+it{_qwZibR?B}q z;DGDybV2w-VzRHz$7&fb9%f0^Ru2R)A;Xk0%FB#y)|U0Y43)wz3!Y2rWyX2z&*7B= zJuTJ?T*5*^?*fR~x(TY^yLFrKsZgM6a76yXjx zmg*NCDUKBBrkSe7Titxx2_Y+W5_RSLa6=DeE^W{@e}%SleD^zudo!-y7w^7t11T7< zZSVF;b^!O_oQtfO%J33{KI~2hIEaXWzJ6B@^#ax5t7up?> z55vHmU+MW1Cl5YN^J%ZN8cl>?B`V!&oc%C2^)Ipo|9oerL@x~0ZSKs{L{}-IrT4^< zSJ|#dhWBe1X->Za2HXMc8eO*r(hT~VKXb5o{Z3wSUqGdi&!r|84hlcoTOl;W1+40U z)8&Dj`&wFBmAQ<|lQ+nP0tyDQ8iAz(2Bhudw-LX3G8Det`|kgj`r;boo2UyzwA0!s zug*GGi{wUGW1e4_C;}h)LPm<(D%gvxW@_Oyz50Y&m(hn#o z1VY2Yx=w)ILl;w>eK4OP5CXo*vrpL2c&7gCf4qy%-0bXDPTqWb!#6KuV0`iS_4N%s zuQ^Wd56nqf!HhLxq3aJr|d% zy5kb1OFZP-^J$jo{*=pL?Ef9B!BXGU{Pah4_NM^&YrpO18^M?b7kz{gHQL(^Y*(+_ zfD&B{u|1b65zQ!ARuH9bpWWL0itP79eUskf4XSWGpSgK~x+*9pfPIy66fnWi0u8Nn z`kcLR&uV^Np(75nciG1Y}M z-~7^ng^AgVfLSfH19RRkOHcu)*{lre)jA`#Ln9;g=D`z!0r~nWq35@e4%%-c9a|i+ z|L}DE>_7k9>-IABLt$Y|e+b?2wc$%u*(+wL!YuVz+1Ztv1BkTeGkW$J33qpA&&hRkjMYmdw=L;ZA^o3EzH}KJ z%;Ep?QUU8O6>@B(cBIZ zh$Tj%9<2X|d+H7%=<**oRmu}M?ltZ%*PU#O$CGl|7XaZC{wO)Urgv8>Zxaz^?dVkV zgE3NrDhBDXKN!s4|6f}?sP6VMiLf8}y2o|8FR7wow{xHXyaybPsD)2~Oo_D`aIdmX z2(ZKWel|E>2N-Q7{r`WgCH`ii+qtU?VKC28CMW_Hi`pqbA-X-+VWS3oMZW(@)Jwwl zEzhbo@fC+jQSSV|J|LT0TkpYicbS-4qqh3f=g&(;?K*mT?XB<0ZQ@5y$*HJ>qT1}e z`81{8{GXo?5T`N{Av-@=kaw=Pwzh^uGwH`Xz11x)#c8W(u-u;|KggAn6r8~A(80fZHph$tbf@sbRz&Z6LwRA=&JNip*L*Uppj2 zP7Oc(kBzMF2hIG?`kjl~{M)C?L@b7~wX{If$U0~R=x>ArM}%nP9Co|z{IuuFkwnGe>^uJ7pp|^}yy0H|zM4z8K?eC0cGQU^E&L8J0VU0E z4=qyH_WMJd9S&U7LH*z9(2%8funvDgS@h$F|M<24@UI(zAS4RTv{L`_8{vu`^;16A ztM-%CpAgteBWs@$-3|g6Vm{VNJ?Y<nPrOmk%O>eVyi)U#KYf{tOY%YXiU0)eRmHRpcsXL&bH#DUEDmyo6cK zapg<>vWovJ4LoKbblH<3;@C zV(U}DN7#oaw*5GC{x;wH<&yvM3Ba@ziS-)xA^3G08Y1T%(&(bVH`E^QufOx3{z^SD z+DVOtbnc(V0o{pw%U^S+g6orfcG$9_y5GEw;<*|5_U~5Y?_YZc!C?4RsGqQcPxFxn z=^!mA4;ua%$o4Z>A(yopxY%DabGny{{>S(C*rBWMCdD@Y4X5^}AODBTuCGD`32XjB z!>`-#$p#YEHy?+}>!bPpV1>no{Xqr}YTB7~&1^(N= z`~<+hy{DxUf+aWwa5zQA2pSN_!4G9^Vuvfvp(|Kh7kS04D+4~c`|5*g%CJMmFrh?{0 zM@hwTx5`}Q(^HGzD%d1hj5r<_Wvb^f6nIn;1@K_b3uL0AqT3DVq^&^8ZSN*1{mCH$ zM)qb@kDfF-5!xjvyc3+50-f{7`g%TOt%*!;LMg>(hYPj!yaD`945T@;+Z_x&PLTY+ z|Ehntzv|g9hsQud*2e7G!SsNoIlW6|HZm3(HT>bVnsE9i%4J_~-FC^kn2Wp1BY6T9 zl|Y(rG#ebMQ#fdauLcZJ_%P4KzTzQoW4%8rtLZp3(p?_V8VL;L49i167r5aHpO%_T?;d4b6^7dxYt?V7(Tf&CTn$kZ;{FY6isDu90=o*NP0D z7B*NfPLviOhwT0qaKLv5XcVMy()J2e>1o1SrBNV5JO`2%Xs$+G?IZZo3?z)v zCm>l`VbBF}eKx;pz4rncDACMom>&N75L9n+L8IKsUdtPavJ6nNvdmpAUn&+j6)^0D zVcq5kw_o>)TfiMxD$X&P1jtjw)G6+ER}^U*eobZk0_Q7^-{P5{{1mX?E1L?gsCYue z>stMWxFI1w9XMf(dGc0TFWu8_4zMWYT&ouN1EDlMXq0qzyHLiOxr#xV;J;wMe|i3? zu{~r8FSce6)QKxAS1$FHJr^IT+HePMnZiM&ymx`0LJ;PekI zUwozfm|(r(4Ae%I{56hy)(Kbs^=`npQNuS~yGeUw6W8ZccXAZF?j{Ib7lO39BFs

U?60Y<7ac)4cfdrR8cT@g=7)oEGm6@Sah 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%0Ds&eBqIdrh*fG2g%%id$y$3ifKaq+q1gRW=w zLfK(_80H{ZatR|dM=juD)&Od!)36sHi0_3+%O8xqe<%w569fFP$BlbH<^j7fsC2Ra zA$0nYE)X{7!lNrIKnEKO;R+G+GXwrdFt z1k~yLu`GJ&@@KW{?ksW{#+i>%6P&wF07^&E>~5KE{10BSB_eF5j4Du+f<}YzMC^L= zY4!vAwd13_hag%p@3C^)VH^Wb77k_J(SH?S2|>J!!(OQ4L`|sB$?DqU03Zo~9Cr~2 zB{x_=blnmGPEPnd2SqHUy41da0H8v9HW@BMextgVNP+XkljzSGI!ix@Eqo-PK{3t^ z30mjD2DvT|5k5&*-K8g~rs4rWA2quNFf;!^EA=GYc~F$)Fzm5hHIjH=eu?bDJa5#`(}INQJ12_~lsPLPMp59AbG9m#dMfjSrm(D9UAZ5Nb0-1KXB>g%zKdo0T_AwS4UgmH?j80Uw?Z$+cg3uGO7q>sA;!CWKQ zPyjcx2Z}MZh8^Y4JS|X<%++wC%+to+N2 zY7wAqt5+z4Loc5?Q!>|iaJN?Q;s|3hIREVPQ|OtGf(gmz&S{hjf*39?_86q}U|_dl zhNtn<+r7lY7PDz)q-*VTRtK#pp>1i7od$oL5^7#t7!oTlZy(=jMz1|#7bg49yPreP zam%)+2@l#Zqcdi5e(8FNnQa)#jG4UOuwG(W8)jk?h}Zl7sf5WqsiypCuR8@$>9r|y z)VY|kH(C4Nzwe{lPTjk=^{Bss86c-9GUX9Lt#`sM=^iUI={CyO#Uf!*K+f%*oPPXE zvrb*W2_{b8yL)3>Z8xv})Tip$*JsU9L{QvyI(wOm)1YTDQPoy{O!M{g=O~va^cX5B z>tMY+>tvWc@&#^e~xHuZv5h*(t9Kk#c=z z<(7=Y+5M4O<6W<*`AhS=BS0X?X%Kit=4N_-s*x&2J#PS%f7RT2xZagF38?Ow7IM^n zT+?Uuf32I`w`|IQTuPL{jxu0Rv}eOx#D^Y3qramXuuQ zUM3RuZH*SFx8d7-_Z0FL;#*DdD!#~%qvk&*^6(Il2Tyx}Z7<#O1(Y03TURh?yHT2z zT%2D%-f$WYvQ!WXusuN42nW22y6jt^-Xr;~gX9F0jX z>ev34=fnX-Stensp2O?L%apZ!mwj!!^G%_)NHIN6M%cJ^m;yDit^7eiBJqGrg?vln z_O_=giWvrbETGEs$;lE>MeGjX)7c{lUNrQ;__#~g8llsVJN(Y+RNPn}Q($oC4tr4; zC|%H4?CpA$8LrX7-HZ$e<&8cHUwS?JguoUuFWdN?An^}#wBL6-qz`ZoTjQDsuOi)y z*dY0IKpL)2=%q~^kQj;#5d>Qdj|n2}$fg-ei!NwDVN*>k%C&DhudSza=5|J<3ee4X z?Z>#Nqo!utroSf2z+dhvVEHDJj3=FiNSqgWnzI{0)0zFCl+xGNw};t&n|Bc4u}&{f z%+88T3BbTsFuV?d5q)~lZLD2<`ueRkDPlmzQ8$9xP0R#0g`IO~*0i(Jaz0$echvwH ztWa__2DSeTN3IlIaaa`@YjuR^w={zFs3lz|zdEsscUFc=KJd5P}eGCFY2 zk~0?%V_3I-BPSdg`122U0%3xec)3^o{ue`6)~$=EDAN4p&#y8Z$;BBcD0=R9hCW9l zVN){mTC2=wl?#5GycW3Qm$pF9=GQj)*>8Md-H2Qn7GPQ3l0O^u&8*r;*qy>#zcn;~ zfuV-nvv2M93rE6PHX^z3;=ePrUknagh{Fl4wrEzL>iUg>3=CQW5(j=~C~d=fcz|p8 zua@g-R}K<{!?Z1`e`{z(AZ*CxGia^2_T?C{em(qpUG(n^o#5dNq%|mV{mz^BKfSb! ZC31O&dz!K=z)k_vR@YO@I%a+O{{Zc=5b^*3 literal 0 HcmV?d00001 diff --git a/examples/databricks/serverless/assets/capture-databricks-account-id.png b/examples/databricks/serverless/assets/capture-databricks-account-id.png new file mode 100644 index 0000000000000000000000000000000000000000..c89029900f7d62613872d4d5b907f557f2a4c99e GIT binary patch literal 212857 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

8ko0qL=Vru5Ss``n99D9 zM+#W+bXZWa^_B3VYX^$5c)!si(;Vo z)%a0rJElzAtfn{aj96`B`ZbD zYa7hiFExT;!cs=LBr;;`7WY!$v}(_w*lYs+KRaDAsvlj@$T4?OuwLQ^Hs8`poL@?` zOz=;UB#2oZ>-l1SI2rjeEPm2?eVv}IS?0-NFXAyZB8GZ6G~_~;=$0*xHzT<-`AHHC4t$P`)jf^*JKV+oEI1smQmb(X;lM=GPI~PA~Z-{ap2b3s^u6J$Z{t z7gb8yJEEHxA`cdonq+)5dhwJlM-eq37Llbi8zLY-OvHbl8_vf9xIGWfP?xGH8fY_ILJJ3dVr^5$-F#%B3&%s zB0|+LvCHUebwir_WaXRHv^n^zIJ3S8)UNcE+O<0e(Kd?a~kUch_x1)pie0 zfxdslV_DXr&JM(yZjpNvQkz3aJ-uVY9Zro9NIOcI%vbw7&g1yaox+4K=c>^;_j|@y z$X@r4jL5f6g63@IS_603t?BKKEDoeo1)Q(o*v;qPaoMjGUumtTAlB>g-K<4wR23Uc zn4aCZ*h}e~GdCVB0L9%xa!AMB14*d0;ldS-GUeLwfJgwfvDt239C$e`zn0``06h2MF z3}|lZr>&VboB4DwA7jIq;&G`# z*KE>>_QQC?1SwNKk&{_IY$Yo}0rJeWB1i+tIY!oNxfRKRb908u$x$%r! zeCUva zBCzQwbt_*|MSqil(YOB*_XV9Yc($iP)fapg$K!UF(Ef-(t1uj*LaTKr~N((pH*ssfrsx~h7kaA_;_nbzC^zr5C8>J?VR0!FFzLLH9~E7 zQ9YR(mq6=$kOq+X6Q3FSUgtCvOLo6<-aD~rXe||CST&L2-aUUS_1!e7D!ax5bedTy z8F};LBm6_}W!Ge3V~rK6U#BKdt(`Pje?1JY(+hkR20mmrqhLNe3ZC1D>$*BE>D1r^ zT7Hfm3JA<_vp3w^vc)9e7R#|cIlpydvcCzm}gLN+Gy8l7JP1dS?QZ6lNtaZ zK#E|Nw%(*vMd43T-8Z8N2geZcCqLzpOrT8K<#Dr?2g8>g-8^E_G69IpbLC*H;m| zfuMGp#aLJ3!ajD)r(g2XO^tL~!UQ$-JvqKb_THW#xiBa=$ucsYYzoj|s8zw?&N zad?pNEh6rBJzp*o@ZIg@i*o*F;aI<~ECP-2`gPv`dck=yoK!CV;we+o{kA3$p z?E*R^gaA4uvu60<3vavmFXnMf{A3K|ndb*HU&LSxPFB%<~UmrY(6n;ntk=Y%hpPC^3pxfUj_>R&}x^n>W0K_`iyaG`(bTyHTvS= z=4x=P(ut-PU4r<7Zi8jiU~>oJskxt(S{X{N4^)&~ADJho)%bhMuswY6$5cpZhActp zez8V%qeTC}5G7zdv-PJy_ifj+&=t$73|`mRR1VX@v|NVgK;hd&Jzq}NO0|6ScG1Q9US>1|v%~Me1D$$zNjwBXJ_#MWQuzB@ zJOO7Wm+eVr(S&r9VAc|QNwRTxyE$-{`xP-8i?@lv=xqhjn`|leM!$!rHnYt^!3cOH zw&aw_=ee`W2N(}P?DnZWScK>e5Z0$Nsxa{$zt+QjIDE15tr{VT4(%*wxL&Yir$ij6 ztytXPsm%%&R%zQ64RIa{j0LJVibsyqyVOj)%F4K|jlRzgT*R+Y&;6kUzr z#Ubpy=k%>L%l#c<3vYNpP&%$WC-36n9tRNcHWLqn;`lsR0-M%Tx_}}Ljy7=|CfE_z zuTzPk$x9*MQdszU*hDH~kCaXXA)FPURKb1Mxvx^Hz(7BggY>5~3lX4(hFiS@T6?

lguBo)sahONto$=e}cKswlgJFbyorbhudu> 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

nD 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 literal 0 HcmV?d00001 diff --git a/examples/databricks/serverless/assets/create-cicd-agent.png b/examples/databricks/serverless/assets/create-cicd-agent.png new file mode 100644 index 0000000000000000000000000000000000000000..faf1643acd5e550c3e01ed499a625dec0c02f1df GIT binary patch literal 162313 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 literal 0 HcmV?d00001 diff --git a/examples/databricks/serverless/assets/generate-secret-ui.png b/examples/databricks/serverless/assets/generate-secret-ui.png new file mode 100644 index 0000000000000000000000000000000000000000..daf4f2397bba1c190cff993f3217cfacb053ddcb GIT binary patch literal 223347 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

pa1E_Ev=;rtP`*K2-MT*hrdDi9jgWN9{$ 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ξ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

B7J$^yy#2OEEk#O8JgX< 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 + exit 1s +fi + +if [ "${DATABRICKS_ACCOUNT_ID}" = "" ]; +then + echo "DATABRICKS_ACCOUNT_ID must be set" >&2 + exit 1 +fi + +if [ "${DATABRICKS_AWS_ACCOUNT_ID}" = "" ]; +then + echo "DATABRICKS_AWS_ACCOUNT_ID must be set" >&2 + exit 1 +fi + +if [ "${DATABRICKS_CLIENT_ID}" = "" ]; +then + echo "DATABRICKS_CLIENT_ID must be set" >&2 + exit 1 +fi + +if [ "${DATABRICKS_CLIENT_SECRET}" = "" ]; +then + echo "DATABRICKS_CLIENT_SECRET must be set" >&2 + exit 1 +fi + +if [ "${AWS_SECRET_ACCESS_KEY}" = "" ]; +then + echo "AWS_SECRET_ACCESS_KEY must be set" >&2 + exit 1 +fi + +if [ "${AWS_ACCESS_KEY_ID}" = "" ]; +then + echo "AWS_ACCESS_KEY_ID must be set" >&2 + exit 1 +fi + +export AWS_REGION +export AWS_ACCOUNT_ID +export DATABRICKS_ACCOUNT_ID +export DATABRICKS_AWS_ACCOUNT_ID + +export DATABRICKS_CLIENT_ID +export DATABRICKS_CLIENT_SECRET + + +export AWS_SECRET_ACCESS_KEY +export AWS_ACCESS_KEY_ID + + diff --git a/examples/databricks/serverless/resources/aws/iam/iam_role.iql b/examples/databricks/serverless/resources/aws/iam/iam_role.iql new file mode 100644 index 0000000..ee628c4 --- /dev/null +++ b/examples/databricks/serverless/resources/aws/iam/iam_role.iql @@ -0,0 +1,60 @@ +/*+ exists */ +SELECT COUNT(*) as count +FROM aws.iam.roles +WHERE data__Identifier = '{{ role_name }}' + +/*+ create */ +INSERT INTO aws.iam.roles ( + RoleName, + Description, + Path, + AssumeRolePolicyDocument, + Policies, + Tags, + region +) +SELECT +'{{ role_name }}', +'{{ description }}', +'{{ path }}', +'{{ assume_role_policy_document }}', +'{{ policies }}', +'{{ global_tags }}', +'us-east-1' + +/*+ update */ +update aws.iam.roles +set data__PatchDocument = string('{{ { + "Description": description, + "Path": path, + "AssumeRolePolicyDocument": assume_role_policy_document, + "Policies": policies, + "Tags": global_tags + } | generate_patch_document }}') +WHERE data__Identifier = '{{ role_name }}' +AND region = 'us-east-1'; + +/*+ statecheck, retries=3, retry_delay=5 */ +SELECT COUNT(*) as count FROM ( + SELECT + max_session_duration, + path, + AWS_POLICY_EQUAL(assume_role_policy_document, '{{ assume_role_policy_document }}') as test_assume_role_policy_doc, + AWS_POLICY_EQUAL(policies, '{{ policies }}') as test_policies + FROM aws.iam.roles + WHERE data__Identifier = '{{ role_name }}')t +WHERE test_assume_role_policy_doc = 1 +AND test_policies = 1 +AND path = '{{ path }}'; + +/*+ exports, retries=3, retry_delay=5 */ +SELECT +'{{ role_name }}' as aws_iam_role_name, +arn as aws_iam_role_arn +FROM aws.iam.roles +WHERE data__Identifier = '{{ role_name }}' + +/*+ delete */ +DELETE FROM aws.iam.roles +WHERE data__Identifier = '{{ role_name }}' +AND region = 'us-east-1' \ No newline at end of file diff --git a/examples/databricks/serverless/resources/aws/iam/update_metastore_access_role.iql b/examples/databricks/serverless/resources/aws/iam/update_metastore_access_role.iql new file mode 100644 index 0000000..2339232 --- /dev/null +++ b/examples/databricks/serverless/resources/aws/iam/update_metastore_access_role.iql @@ -0,0 +1,7 @@ +/*+ command */ +update aws.iam.roles +set data__PatchDocument = string('{{ { + "AssumeRolePolicyDocument": assume_role_policy_document + } | generate_patch_document }}') +WHERE data__Identifier = '{{ role_name }}' +AND region = 'us-east-1'; \ No newline at end of file diff --git a/examples/databricks/serverless/resources/aws/kms/metastore_key.iql b/examples/databricks/serverless/resources/aws/kms/metastore_key.iql new file mode 100644 index 0000000..2669e91 --- /dev/null +++ b/examples/databricks/serverless/resources/aws/kms/metastore_key.iql @@ -0,0 +1,50 @@ +/*+ exists */ +SELECT COUNT(*) as count FROM +( + SELECT key_id, + json_group_object(tag_key, tag_value) as tags + FROM aws.kms.key_tags + GROUP BY key_id + HAVING json_extract(tags, '$.Provisioner') = 'stackql' + AND json_extract(tags, '$.StackName') = '{{ stack_name }}' + AND json_extract(tags, '$.StackEnv') = '{{ stack_env }}' + AND json_extract(tags, '$.Purpose') = 'UC Metastore Encryption' +) t + +/*+ create */ +INSERT INTO aws.kms.keys ( + Description, + KeyPolicy, + Tags, + region +) +SELECT +'{{ description }}', +'{{ key_policy }}', +'{{ tags }}', +'{{ region }}'; + +/*+ statecheck, retries=3, retry_delay=5 */ +SELECT COUNT(*) as count FROM +( + SELECT key_id, + json_group_object(tag_key, tag_value) as tags + FROM aws.kms.key_tags + WHERE description = '{{ description }}' + GROUP BY key_id + HAVING json_extract(tags, '$.Provisioner') = 'stackql' + AND json_extract(tags, '$.StackName') = '{{ stack_name }}' + AND json_extract(tags, '$.StackEnv') = '{{ stack_env }}' + AND json_extract(tags, '$.Purpose') = 'UC Metastore Encryption' +) t + +/*+ exports, retries=3, retry_delay=5 */ +SELECT key_id, arn as key_arn, +json_group_object(tag_key, tag_value) as tags +FROM aws.kms.key_tags +WHERE description = '{{ description }}' +GROUP BY key_id +HAVING json_extract(tags, '$.Provisioner') = 'stackql' +AND json_extract(tags, '$.StackName') = '{{ stack_name }}' +AND json_extract(tags, '$.StackEnv') = '{{ stack_env }}' +AND json_extract(tags, '$.Purpose') = 'UC Metastore Encryption' diff --git a/examples/databricks/serverless/resources/aws/s3/s3_bucket.iql b/examples/databricks/serverless/resources/aws/s3/s3_bucket.iql new file mode 100644 index 0000000..c6032c6 --- /dev/null +++ b/examples/databricks/serverless/resources/aws/s3/s3_bucket.iql @@ -0,0 +1,61 @@ +/*+ exists */ +SELECT COUNT(*) as count +FROM aws.s3.buckets +WHERE region = '{{ region }}' +AND data__Identifier = '{{ bucket_name }}' + +/*+ create */ +INSERT INTO aws.s3.buckets ( + BucketName, + OwnershipControls, + BucketEncryption, + PublicAccessBlockConfiguration, + VersioningConfiguration, + Tags, + region +) +SELECT + '{{ bucket_name }}', + '{{ ownership_controls }}', + '{{ bucket_encryption }}', + '{{ public_access_block_configuration }}', + '{{ versioning_configuration }}', + '{{ global_tags }}', + '{{ region }}' + +/*+ update */ +update aws.s3.buckets +set data__PatchDocument = string('{{ { + "OwnershipControls": ownership_controls, + "BucketEncryption": bucket_encryption, + "PublicAccessBlockConfiguration": public_access_block_configuration, + "VersioningConfiguration": versioning_configuration, + "Tags": global_tags + } | generate_patch_document }}') +WHERE +region = '{{ region }}' +AND data__Identifier = '{{ bucket_name }}' + +/*+ statecheck, retries=3, retry_delay=5 */ +SELECT COUNT(*) as count FROM ( + SELECT + JSON_EQUAL(ownership_controls, '{{ ownership_controls }}') as test_ownership_controls, + JSON_EQUAL(bucket_encryption, '{{ bucket_encryption }}') as test_encryption, + JSON_EQUAL(public_access_block_configuration, '{{ public_access_block_configuration }}') as test_public_access_block_configuration, + JSON_EQUAL(versioning_configuration, '{{ versioning_configuration }}') as test_versioning_configuration + FROM aws.s3.buckets + WHERE region = '{{ region }}' + AND data__Identifier = '{{ bucket_name }}' +)t +WHERE test_ownership_controls = 1 +AND test_encryption = 1 +AND test_public_access_block_configuration = 1 +AND test_versioning_configuration = 1 + +/*+ exports, retries=3, retry_delay=5 */ +SELECT +arn, +bucket_name +FROM aws.s3.buckets +WHERE region = '{{ region }}' +AND data__Identifier = '{{ bucket_name }}' diff --git a/examples/databricks/serverless/resources/aws/s3/s3_bucket_policy.iql b/examples/databricks/serverless/resources/aws/s3/s3_bucket_policy.iql new file mode 100644 index 0000000..cead151 --- /dev/null +++ b/examples/databricks/serverless/resources/aws/s3/s3_bucket_policy.iql @@ -0,0 +1,36 @@ +/*+ exists */ +SELECT COUNT(*) as count +FROM aws.s3.bucket_policies +WHERE region = '{{ region }}' +AND bucket = '{{ aws_s3_workspace_bucket_name }}'; + +/*+ create */ +INSERT INTO aws.s3.bucket_policies ( + Bucket, + PolicyDocument, + ClientToken, + region +) +SELECT + '{{ aws_s3_workspace_bucket_name }}', + '{{ policy_document }}', + '{{ uuid() }}', + '{{ region }}' + +/*+ update */ +update aws.s3.bucket_policies +set data__PatchDocument = string('{{ { + "PolicyDocument": policy_document + } | generate_patch_document }}') +WHERE +region = '{{ region }}' +AND data__Identifier = '{{ aws_s3_workspace_bucket_name }}'; + +/*+ statecheck, retries=3, retry_delay=5 */ +SELECT COUNT(*) as count FROM ( + SELECT + JSON_EQUAL(policy_document, '{{ policy_document }}') as test_policy_document + FROM aws.s3.bucket_policies + WHERE region = '{{ region }}' + AND data__Identifier = '{{ aws_s3_workspace_bucket_name }}')t +WHERE test_policy_document = 1; diff --git a/examples/databricks/serverless/resources/aws/vpc/elastic_ip.iql b/examples/databricks/serverless/resources/aws/vpc/elastic_ip.iql new file mode 100644 index 0000000..d4dd982 --- /dev/null +++ b/examples/databricks/serverless/resources/aws/vpc/elastic_ip.iql @@ -0,0 +1,56 @@ +/*+ exists */ +SELECT COUNT(*) as count FROM +( +SELECT allocation_id, +json_group_object(tag_key, tag_value) as tags +FROM aws.ec2.eip_tags +WHERE region = '{{ region }}' +GROUP BY allocation_id +HAVING json_extract(tags, '$.Provisioner') = 'stackql' +AND json_extract(tags, '$.StackName') = '{{ stack_name }}' +AND json_extract(tags, '$.StackEnv') = '{{ stack_env }}' +) t + +/*+ create */ +INSERT INTO aws.ec2.eips ( + NetworkBorderGroup, + Tags, + ClientToken, + region +) +SELECT +'{{ region }}', +'{{ tags }}', +'{{ idempotency_token }}', +'{{ region }}' + +/*+ statecheck, retries=3, retry_delay=5 */ +SELECT COUNT(*) as count FROM +( +SELECT allocation_id, +json_group_object(tag_key, tag_value) as tags +FROM aws.ec2.eip_tags +WHERE region = '{{ region }}' +GROUP BY allocation_id +HAVING json_extract(tags, '$.Provisioner') = 'stackql' +AND json_extract(tags, '$.StackName') = '{{ stack_name }}' +AND json_extract(tags, '$.StackEnv') = '{{ stack_env }}' +) t + +/*+ exports, retries=3, retry_delay=5 */ +SELECT allocation_id as eip_allocation_id, public_ip as eip_public_id FROM +( +SELECT allocation_id, public_ip, +json_group_object(tag_key, tag_value) as tags +FROM aws.ec2.eip_tags +WHERE region = '{{ region }}' +GROUP BY allocation_id +HAVING json_extract(tags, '$.Provisioner') = 'stackql' +AND json_extract(tags, '$.StackName') = '{{ stack_name }}' +AND json_extract(tags, '$.StackEnv') = '{{ stack_env }}' +) t + +/*+ delete */ +DELETE FROM aws.ec2.eips +WHERE data__Identifier = '{{ eip_public_id }}|{{ eip_allocation_id}}' +AND region = '{{ region }}' diff --git a/examples/databricks/serverless/resources/aws/vpc/get_main_route_table_id.iql b/examples/databricks/serverless/resources/aws/vpc/get_main_route_table_id.iql new file mode 100644 index 0000000..7679dd2 --- /dev/null +++ b/examples/databricks/serverless/resources/aws/vpc/get_main_route_table_id.iql @@ -0,0 +1,6 @@ +/*+ exports, retries=3, retry_delay=5 */ +SELECT +route_table_id as main_route_table_id +FROM aws.ec2.route_tables +WHERE region = '{{ region }}' +AND vpc_id = '{{ vpc_id }}'; \ No newline at end of file diff --git a/examples/databricks/serverless/resources/aws/vpc/inet_gateway.iql b/examples/databricks/serverless/resources/aws/vpc/inet_gateway.iql new file mode 100644 index 0000000..dc42032 --- /dev/null +++ b/examples/databricks/serverless/resources/aws/vpc/inet_gateway.iql @@ -0,0 +1,54 @@ +/*+ exists */ +SELECT COUNT(*) as count FROM +( +SELECT internet_gateway_id, +json_group_object(tag_key, tag_value) as tags +FROM aws.ec2.internet_gateway_tags +WHERE region = '{{ region }}' +GROUP BY internet_gateway_id +HAVING json_extract(tags, '$.Provisioner') = 'stackql' +AND json_extract(tags, '$.StackName') = '{{ stack_name }}' +AND json_extract(tags, '$.StackEnv') = '{{ stack_env }}' +) t + +/*+ create */ +INSERT INTO aws.ec2.internet_gateways ( + Tags, + ClientToken, + region +) +SELECT +'{{ tags }}', +'{{ idempotency_token }}', +'{{ region }}'; + +/*+ statecheck, retries=3, retry_delay=5 */ +SELECT COUNT(*) as count FROM +( +SELECT internet_gateway_id, +json_group_object(tag_key, tag_value) as tags +FROM aws.ec2.internet_gateway_tags +WHERE region = '{{ region }}' +GROUP BY internet_gateway_id +HAVING json_extract(tags, '$.Provisioner') = 'stackql' +AND json_extract(tags, '$.StackName') = '{{ stack_name }}' +AND json_extract(tags, '$.StackEnv') = '{{ stack_env }}' +) t + +/*+ exports, retries=3, retry_delay=5 */ +SELECT internet_gateway_id FROM +( +SELECT internet_gateway_id, +json_group_object(tag_key, tag_value) as tags +FROM aws.ec2.internet_gateway_tags +WHERE region = '{{ region }}' +GROUP BY internet_gateway_id +HAVING json_extract(tags, '$.Provisioner') = 'stackql' +AND json_extract(tags, '$.StackName') = '{{ stack_name }}' +AND json_extract(tags, '$.StackEnv') = '{{ stack_env }}' +) t; + +/*+ delete */ +DELETE FROM aws.ec2.internet_gateways +WHERE data__Identifier = '{{ internet_gateway_id }}' +AND region = '{{ region }}'; diff --git a/examples/databricks/serverless/resources/aws/vpc/inet_gw_attachment.iql b/examples/databricks/serverless/resources/aws/vpc/inet_gw_attachment.iql new file mode 100644 index 0000000..31b9d25 --- /dev/null +++ b/examples/databricks/serverless/resources/aws/vpc/inet_gw_attachment.iql @@ -0,0 +1,39 @@ +/*+ exists */ +SELECT COUNT(*) as count FROM +( +SELECT +attachment_type, +vpc_id +FROM aws.ec2.vpc_gateway_attachments +WHERE region = '{{ region }}' +AND internet_gateway_id = '{{ internet_gateway_id }}' +AND vpc_id = '{{ vpc_id }}' +) t + +/*+ create */ +INSERT INTO aws.ec2.vpc_gateway_attachments ( + InternetGatewayId, + VpcId, + region +) +SELECT + '{{ internet_gateway_id }}', + '{{ vpc_id }}', + '{{ region }}'; + +/*+ statecheck, retries=3, retry_delay=5 */ +SELECT COUNT(*) as count FROM +( +SELECT +attachment_type, +vpc_id +FROM aws.ec2.vpc_gateway_attachments +WHERE region = '{{ region }}' +AND internet_gateway_id = '{{ internet_gateway_id }}' +AND vpc_id = '{{ vpc_id }}' +) t + +/*+ delete */ +DELETE FROM aws.ec2.vpc_gateway_attachments +WHERE data__Identifier = 'IGW|{{ vpc_id }}' +AND region = '{{ region }}'; \ No newline at end of file diff --git a/examples/databricks/serverless/resources/aws/vpc/inet_route.iql b/examples/databricks/serverless/resources/aws/vpc/inet_route.iql new file mode 100644 index 0000000..b46cc0f --- /dev/null +++ b/examples/databricks/serverless/resources/aws/vpc/inet_route.iql @@ -0,0 +1,41 @@ +/*+ exists */ +SELECT COUNT(*) as count FROM +( +SELECT data__Identifier +FROM aws.ec2.routes +WHERE region = '{{ region }}' +AND data__Identifier = '{{ route_table_id }}|0.0.0.0/0' +) t + +/*+ create */ +INSERT INTO aws.ec2.routes ( + DestinationCidrBlock, + GatewayId, + RouteTableId, + region +) +SELECT + '0.0.0.0/0', + '{{ internet_gateway_id }}', + '{{ route_table_id }}', + '{{ region }}'; + +/*+ statecheck, retries=5, retry_delay=5 */ +SELECT COUNT(*) as count FROM +( +SELECT data__Identifier +FROM aws.ec2.routes +WHERE region = '{{ region }}' +AND data__Identifier = '{{ route_table_id }}|0.0.0.0/0' +) t + +/*+ exports, retries=3, retry_delay=5 */ +SELECT data__Identifier as inet_route_indentifer +FROM aws.ec2.routes +WHERE region = '{{ region }}' +AND data__Identifier = '{{ route_table_id }}|0.0.0.0/0'; + +/*+ delete */ +DELETE FROM aws.ec2.routes +WHERE data__Identifier = '{{ inet_route_indentifer }}' +AND region = '{{ region }}'; \ No newline at end of file diff --git a/examples/databricks/serverless/resources/aws/vpc/nat_gateway.iql b/examples/databricks/serverless/resources/aws/vpc/nat_gateway.iql new file mode 100644 index 0000000..081fbd2 --- /dev/null +++ b/examples/databricks/serverless/resources/aws/vpc/nat_gateway.iql @@ -0,0 +1,53 @@ +/*+ exists */ +SELECT COUNT(*) as count FROM +( +SELECT nat_gateway_id, +json_group_object(tag_key, tag_value) as tags +FROM aws.ec2.nat_gateway_tags +WHERE region = '{{ region }}' +GROUP BY allocation_id +HAVING json_extract(tags, '$.Provisioner') = 'stackql' +AND json_extract(tags, '$.StackName') = '{{ stack_name }}' +AND json_extract(tags, '$.StackEnv') = '{{ stack_env }}' +) t + +/*+ create */ +INSERT INTO aws.ec2.nat_gateways ( + AllocationId, + SubnetId, + Tags, + region +) +SELECT + '{{ eip_allocation_id }}', + '{{ nat_subnet_id }}', + '{{ tags }}', + '{{ region }}'; + +/*+ statecheck, retries=3, retry_delay=5 */ +SELECT COUNT(*) as count FROM +( +SELECT nat_gateway_id, +json_group_object(tag_key, tag_value) as tags +FROM aws.ec2.nat_gateway_tags +WHERE region = '{{ region }}' +GROUP BY allocation_id +HAVING json_extract(tags, '$.Provisioner') = 'stackql' +AND json_extract(tags, '$.StackName') = '{{ stack_name }}' +AND json_extract(tags, '$.StackEnv') = '{{ stack_env }}' +) t + +/*+ exports, retries=3, retry_delay=5 */ +SELECT nat_gateway_id, +json_group_object(tag_key, tag_value) as tags +FROM aws.ec2.nat_gateway_tags +WHERE region = '{{ region }}' +GROUP BY allocation_id +HAVING json_extract(tags, '$.Provisioner') = 'stackql' +AND json_extract(tags, '$.StackName') = '{{ stack_name }}' +AND json_extract(tags, '$.StackEnv') = '{{ stack_env }}' + +/*+ delete */ +DELETE FROM aws.ec2.nat_gateways +WHERE data__Identifier = '{{ nat_gateway_id }}' +AND region = '{{ region }}'; \ No newline at end of file diff --git a/examples/databricks/serverless/resources/aws/vpc/nat_inet_route.iql b/examples/databricks/serverless/resources/aws/vpc/nat_inet_route.iql new file mode 100644 index 0000000..9e750f6 --- /dev/null +++ b/examples/databricks/serverless/resources/aws/vpc/nat_inet_route.iql @@ -0,0 +1,41 @@ +/*+ exists */ +SELECT COUNT(*) as count FROM +( +SELECT data__Identifier +FROM aws.ec2.routes +WHERE region = '{{ region }}' +AND data__Identifier = '{{ route_table_id }}|0.0.0.0/0' +) t + +/*+ create */ +INSERT INTO aws.ec2.routes ( + DestinationCidrBlock, + NatGatewayId, + RouteTableId, + region +) +SELECT + '0.0.0.0/0', + '{{ nat_gateway_id }}', + '{{ route_table_id }}', + '{{ region }}'; + +/*+ statecheck, retries=5, retry_delay=5 */ +SELECT COUNT(*) as count FROM +( +SELECT data__Identifier +FROM aws.ec2.routes +WHERE region = '{{ region }}' +AND data__Identifier = '{{ route_table_id }}|0.0.0.0/0' +) t + +/*+ exports, retries=3, retry_delay=5 */ +SELECT data__Identifier as nat_inet_route_indentifer +FROM aws.ec2.routes +WHERE region = '{{ region }}' +AND data__Identifier = '{{ route_table_id }}|0.0.0.0/0'; + +/*+ delete */ +DELETE FROM aws.ec2.routes +WHERE data__Identifier = '{{ inet_route_indentifer }}' +AND region = '{{ region }}'; \ No newline at end of file diff --git a/examples/databricks/serverless/resources/aws/vpc/route_table.iql b/examples/databricks/serverless/resources/aws/vpc/route_table.iql new file mode 100644 index 0000000..7b0aa76 --- /dev/null +++ b/examples/databricks/serverless/resources/aws/vpc/route_table.iql @@ -0,0 +1,54 @@ +/*+ exists */ +SELECT COUNT(*) as count FROM +( +SELECT route_table_id, +json_group_object(tag_key, tag_value) as tags +FROM aws.ec2.route_table_tags +WHERE region = '{{ region }}' +GROUP BY route_table_id +HAVING json_extract(tags, '$.Provisioner') = 'stackql' +AND json_extract(tags, '$.StackName') = '{{ stack_name }}' +AND json_extract(tags, '$.StackEnv') = '{{ stack_env }}' +AND json_extract(tags, '$.Name') = '{{ route_table_name }}' +) t + +/*+ create */ +INSERT INTO aws.ec2.route_tables ( + VpcId, + Tags, + region +) +SELECT + '{{ vpc_id }}', + '{{ tags }}', + '{{ region }}'; + +/*+ statecheck, retries=3, retry_delay=5 */ +SELECT COUNT(*) as count FROM +( +SELECT route_table_id, +json_group_object(tag_key, tag_value) as tags +FROM aws.ec2.route_table_tags +WHERE region = '{{ region }}' +GROUP BY route_table_id +HAVING json_extract(tags, '$.Provisioner') = 'stackql' +AND json_extract(tags, '$.StackName') = '{{ stack_name }}' +AND json_extract(tags, '$.StackEnv') = '{{ stack_env }}' +AND json_extract(tags, '$.Name') = '{{ route_table_name }}' +) t + +/*+ exports, retries=3, retry_delay=5 */ +SELECT route_table_id, +json_group_object(tag_key, tag_value) as tags +FROM aws.ec2.route_table_tags +WHERE region = '{{ region }}' +GROUP BY route_table_id +HAVING json_extract(tags, '$.Provisioner') = 'stackql' +AND json_extract(tags, '$.StackName') = '{{ stack_name }}' +AND json_extract(tags, '$.StackEnv') = '{{ stack_env }}' +AND json_extract(tags, '$.Name') = '{{ route_table_name }}' + +/*+ delete */ +DELETE FROM aws.ec2.route_tables +WHERE data__Identifier = '{{ route_table_id }}' +AND region = '{{ region }}'; \ No newline at end of file diff --git a/examples/databricks/serverless/resources/aws/vpc/security_group.iql b/examples/databricks/serverless/resources/aws/vpc/security_group.iql new file mode 100644 index 0000000..15e9061 --- /dev/null +++ b/examples/databricks/serverless/resources/aws/vpc/security_group.iql @@ -0,0 +1,41 @@ +/*+ exists */ +SELECT COUNT(*) as count +FROM aws.ec2.security_groups +WHERE region = '{{ region }}' +AND vpc_id = '{{ vpc_id }}' +AND group_name = '{{ group_name }}' + +/*+ create */ +INSERT INTO aws.ec2.security_groups ( + GroupName, + GroupDescription, + VpcId, + Tags, + region +) +SELECT + '{{ group_name }}', + '{{ group_description }}', + '{{ vpc_id }}', + '{{ tags }}', + '{{ region }}'; + +/*+ statecheck, retries=3, retry_delay=5 */ +SELECT COUNT(*) as count +FROM aws.ec2.security_groups +WHERE region = '{{ region }}' +AND vpc_id = '{{ vpc_id }}' +AND group_name = '{{ group_name }}' +AND group_description = '{{ group_description }}' + +/*+ exports, retries=3, retry_delay=5 */ +SELECT group_id as security_group_id +FROM aws.ec2.security_groups +WHERE region = '{{ region }}' +AND vpc_id = '{{ vpc_id }}' +AND group_name = '{{ group_name }}' + +/*+ delete */ +DELETE FROM aws.ec2.security_groups +WHERE data__Identifier = '{{ security_group_id }}' +AND region = '{{ region }}'; \ No newline at end of file diff --git a/examples/databricks/serverless/resources/aws/vpc/security_group_rules.iql b/examples/databricks/serverless/resources/aws/vpc/security_group_rules.iql new file mode 100644 index 0000000..62f79eb --- /dev/null +++ b/examples/databricks/serverless/resources/aws/vpc/security_group_rules.iql @@ -0,0 +1,27 @@ +/*+ exists */ +SELECT COUNT(*) as count +FROM aws.ec2.security_groups +WHERE region = '{{ region }}' +AND data__Identifier = '{{ security_group_id }}' + +/*+ createorupdate */ +update aws.ec2.security_groups +set data__PatchDocument = string('{{ { + "SecurityGroupIngress": security_group_ingress, + "SecurityGroupEgress": security_group_egress + } | generate_patch_document }}') +WHERE region = '{{ region }}' +AND data__Identifier = '{{ security_group_id }}' + +/*+ statecheck, retries=5, retry_delay=5 */ +SELECT COUNT(*) as count FROM +( + SELECT + JSON_EQUAL(security_group_ingress, '{{ security_group_ingress }}') as ingress_test, + JSON_EQUAL(security_group_egress, '{{ security_group_egress }}') as egress_test + FROM aws.ec2.security_groups + WHERE region = '{{ region }}' + AND data__Identifier = '{{ security_group_id }}' + AND ingress_test = 1 + AND egress_test = 1 +) t; diff --git a/examples/databricks/serverless/resources/aws/vpc/subnet.iql b/examples/databricks/serverless/resources/aws/vpc/subnet.iql new file mode 100644 index 0000000..83667f5 --- /dev/null +++ b/examples/databricks/serverless/resources/aws/vpc/subnet.iql @@ -0,0 +1,43 @@ +/*+ exists */ +SELECT COUNT(*) as count +FROM aws.ec2.subnets +WHERE region = '{{ region }}' +AND vpc_id = '{{ vpc_id }}' +AND cidr_block = '{{ cidr_block }}' + +/*+ create */ +INSERT INTO aws.ec2.subnets ( + VpcId, + CidrBlock, + AvailabilityZone, + MapPublicIpOnLaunch, + Tags, + region +) +SELECT + '{{ vpc_id }}', + '{{ cidr_block }}', + '{{ availability_zone }}', + false, + '{{ tags }}', + '{{ region }}'; + +/*+ statecheck, retries=3, retry_delay=5 */ +SELECT COUNT(*) as count +FROM aws.ec2.subnets +WHERE region = '{{ region }}' +AND vpc_id = '{{ vpc_id }}' +AND cidr_block = '{{ cidr_block }}' +AND availability_zone = '{{ availability_zone }}'; + +/*+ exports, retries=3, retry_delay=5 */ +SELECT subnet_id +FROM aws.ec2.subnets +WHERE region = '{{ region }}' +AND vpc_id = '{{ vpc_id }}' +AND cidr_block = '{{ cidr_block }}'; + +/*+ delete */ +DELETE FROM aws.ec2.subnets +WHERE data__Identifier = '{{ subnet_id }}' +AND region = '{{ region }}'; \ No newline at end of file diff --git a/examples/databricks/serverless/resources/aws/vpc/subnet_rt_assn.iql b/examples/databricks/serverless/resources/aws/vpc/subnet_rt_assn.iql new file mode 100644 index 0000000..d0c8b33 --- /dev/null +++ b/examples/databricks/serverless/resources/aws/vpc/subnet_rt_assn.iql @@ -0,0 +1,34 @@ +/*+ exists */ +select regexp_like(associationSet, '.*{{ subnet_id }}.*') as count from +aws.ec2_native.route_tables where region = '{{ region }}' +and routeTableId = '{{ route_table_id }}' + +/*+ create */ +INSERT INTO aws.ec2.subnet_route_table_associations ( + RouteTableId, + SubnetId, + ClientToken, + region +) +SELECT + '{{ route_table_id }}', + '{{ subnet_id }}', + '{{ idempotency_token }}', + '{{ region }}'; + +/*+ statecheck, retries=5, retry_delay=5 */ +select regexp_like(associationSet, '.*{{ subnet_id }}.*') as count from +aws.ec2_native.route_tables where region = '{{ region }}' +and routeTableId = '{{ route_table_id }}' + +/*+ exports, retries=5, retry_delay=5 */ +SELECT id as route_table_assn_id +FROM aws.ec2.subnet_route_table_associations +WHERE region = '{{ region }}' +AND route_table_id = '{{ route_table_id }}' +AND subnet_id = '{{ subnet_id }}'; + +/*+ delete */ +DELETE FROM aws.ec2.subnet_route_table_associations +WHERE data__Identifier = '{{ route_table_assn_id }}' +AND region = '{{ region }}'; \ No newline at end of file diff --git a/examples/databricks/serverless/resources/aws/vpc/tag_main_vpc_route_table.iql b/examples/databricks/serverless/resources/aws/vpc/tag_main_vpc_route_table.iql new file mode 100644 index 0000000..cc03c2a --- /dev/null +++ b/examples/databricks/serverless/resources/aws/vpc/tag_main_vpc_route_table.iql @@ -0,0 +1,7 @@ +/*+ command */ +update aws.ec2.route_tables +set data__PatchDocument = string('{{ { + "Tags": tags + } | generate_patch_document }}') +WHERE region = '{{ region }}' +AND data__Identifier = '{{ main_route_table_id }}'; \ No newline at end of file diff --git a/examples/databricks/serverless/resources/aws/vpc/vpc.iql b/examples/databricks/serverless/resources/aws/vpc/vpc.iql new file mode 100644 index 0000000..56e1c54 --- /dev/null +++ b/examples/databricks/serverless/resources/aws/vpc/vpc.iql @@ -0,0 +1,60 @@ +/*+ exists */ +SELECT COUNT(*) as count FROM +( + SELECT vpc_id, + json_group_object(tag_key, tag_value) as tags + FROM aws.ec2.vpc_tags + WHERE region = '{{ region }}' + AND cidr_block = '{{ cidr_block }}' + GROUP BY vpc_id + HAVING json_extract(tags, '$.Provisioner') = 'stackql' + AND json_extract(tags, '$.StackName') = '{{ stack_name }}' + AND json_extract(tags, '$.StackEnv') = '{{ stack_env }}' +) t + +/*+ create */ +INSERT INTO aws.ec2.vpcs ( + CidrBlock, + Tags, + EnableDnsSupport, + EnableDnsHostnames, + ClientToken, + region +) +SELECT + '{{ cidr_block }}', + '{{ tags }}', + true, + true, + '{{ idempotency_token }}', + '{{ region }}' + +/*+ statecheck, retries=3, retry_delay=5 */ +SELECT COUNT(*) as count FROM +( + SELECT vpc_id, + json_group_object(tag_key, tag_value) as tags + FROM aws.ec2.vpc_tags + WHERE region = '{{ region }}' + AND cidr_block = '{{ cidr_block }}' + GROUP BY vpc_id + HAVING json_extract(tags, '$.Provisioner') = 'stackql' + AND json_extract(tags, '$.StackName') = '{{ stack_name }}' + AND json_extract(tags, '$.StackEnv') = '{{ stack_env }}' +) t + +/*+ exports, retries=3, retry_delay=5 */ +SELECT vpc_id, +json_group_object(tag_key, tag_value) as tags +FROM aws.ec2.vpc_tags +WHERE region = '{{ region }}' +AND cidr_block = '{{ cidr_block }}' +GROUP BY vpc_id +HAVING json_extract(tags, '$.Provisioner') = 'stackql' +AND json_extract(tags, '$.StackName') = '{{ stack_name }}' +AND json_extract(tags, '$.StackEnv') = '{{ stack_env }}' + +/*+ delete */ +DELETE FROM aws.ec2.vpcs +WHERE data__Identifier = '{{ vpc_id}}' +AND region = '{{ region }}'; \ No newline at end of file diff --git a/examples/databricks/serverless/resources/aws/vpc/vpc_endpoint.iql b/examples/databricks/serverless/resources/aws/vpc/vpc_endpoint.iql new file mode 100644 index 0000000..d40f522 --- /dev/null +++ b/examples/databricks/serverless/resources/aws/vpc/vpc_endpoint.iql @@ -0,0 +1,60 @@ +/*+ exists */ +SELECT COUNT(*) as count FROM +( + SELECT id, + json_group_object(tag_key, tag_value) as tags + FROM aws.ec2.vpc_endpoint_tags + WHERE region = '{{ region }}' + AND service_name = '{{ service_name }}' + GROUP BY id + HAVING json_extract(tags, '$.Provisioner') = 'stackql' + AND json_extract(tags, '$.StackName') = '{{ stack_name }}' + AND json_extract(tags, '$.StackEnv') = '{{ stack_env }}' +) t; + +/*+ create */ +INSERT INTO aws.ec2.vpc_endpoints ( + ServiceName, + VpcEndpointType, + VpcId, + RouteTableIds, + Tags, + region +) +SELECT + '{{ service_name }}', + '{{ vpc_endpoint_type }}', + '{{ vpc_id }}', + '{{ route_table_ids }}', + '{{ tags }}', + '{{ region }}'; + +/*+ statecheck, retries=5, retry_delay=5 */ +SELECT COUNT(*) as count FROM +( + SELECT id, + json_group_object(tag_key, tag_value) as tags + FROM aws.ec2.vpc_endpoint_tags + WHERE region = '{{ region }}' + AND service_name = '{{ service_name }}' + GROUP BY id + HAVING json_extract(tags, '$.Provisioner') = 'stackql' + AND json_extract(tags, '$.StackName') = '{{ stack_name }}' + AND json_extract(tags, '$.StackEnv') = '{{ stack_env }}' +) t; + +/*+ exports, retries=3, retry_delay=5 */ +SELECT id as s3_gateway_endpoint_id, +json_group_object(tag_key, tag_value) as tags +FROM aws.ec2.vpc_endpoint_tags +WHERE region = '{{ region }}' +AND service_name = '{{ service_name }}' +GROUP BY id +HAVING json_extract(tags, '$.Provisioner') = 'stackql' +AND json_extract(tags, '$.StackName') = '{{ stack_name }}' +AND json_extract(tags, '$.StackEnv') = '{{ stack_env }}'; + +/*+ delete */ +DELETE FROM aws.ec2.vpc_endpoints +WHERE data__Identifier = 's3_gateway_endpoint_id' +AND region = 'us-east-1'; \ No newline at end of file diff --git a/examples/databricks/serverless/resources/databricks_account/credentials.iql b/examples/databricks/serverless/resources/databricks_account/credentials.iql new file mode 100644 index 0000000..c0d8327 --- /dev/null +++ b/examples/databricks/serverless/resources/databricks_account/credentials.iql @@ -0,0 +1,41 @@ +/*+ exists */ +SELECT COUNT(*) as count +FROM databricks_account.provisioning.credentials +WHERE account_id = '{{ databricks_account_id }}' +AND credentials_name = '{{ credentials_name }}' + +/*+ create */ +INSERT INTO databricks_account.provisioning.credentials ( +account_id, +data__credentials_name, +data__aws_credentials +) +SELECT +'{{ databricks_account_id }}', +'{{ credentials_name }}', +'{{ aws_credentials }}' + +/*+ statecheck, retries=3, retry_delay=5 */ +SELECT COUNT(*) as count FROM +( +SELECT +credentials_id +FROM databricks_account.provisioning.credentials +WHERE account_id = '{{ databricks_account_id }}' +AND credentials_name = '{{ credentials_name }}' +AND JSON_EXTRACT(aws_credentials, '$.sts_role.role_arn') = '{{ aws_iam_cross_account_role_arn }}' +) t + +/*+ exports */ +SELECT +'{{ credentials_name }}' as databricks_credentials_name, +credentials_id as databricks_credentials_id, +JSON_EXTRACT(aws_credentials, '$.sts_role.external_id') as databricks_role_external_id +FROM databricks_account.provisioning.credentials +WHERE account_id = '{{ databricks_account_id }}' +AND credentials_name = '{{ credentials_name }}' + +/*+ delete */ +DELETE FROM databricks_account.provisioning.credentials +WHERE account_id = '{{ databricks_account_id }}' AND +credentials_id = '{{ databricks_credentials_id }}'; \ No newline at end of file diff --git a/examples/databricks/serverless/resources/databricks_account/get_users.iql b/examples/databricks/serverless/resources/databricks_account/get_users.iql new file mode 100644 index 0000000..2a978d7 --- /dev/null +++ b/examples/databricks/serverless/resources/databricks_account/get_users.iql @@ -0,0 +1,6 @@ +/*+ exports, retries=3, retry_delay=5 */ +SELECT +JSON_GROUP_ARRAY(JSON_OBJECT('value', id)) as databricks_workspace_group_members +FROM databricks_account.iam.users +WHERE account_id = 'ebfcc5a9-9d49-4c93-b651-b3ee6cf1c9ce' +AND userName in {{ users | sql_list }}; \ No newline at end of file diff --git a/examples/databricks/serverless/resources/databricks_account/network.iql b/examples/databricks/serverless/resources/databricks_account/network.iql new file mode 100644 index 0000000..45e0b0a --- /dev/null +++ b/examples/databricks/serverless/resources/databricks_account/network.iql @@ -0,0 +1,46 @@ +/*+ exists */ +SELECT COUNT(*) as count +FROM databricks_account.provisioning.networks +WHERE account_id = '{{ databricks_account_id }}' +AND network_name = '{{ databricks_network_name }}' + +/*+ create */ +INSERT INTO databricks_account.provisioning.networks ( +account_id, +data__network_name, +data__vpc_id, +data__subnet_ids, +data__security_group_ids +) +SELECT +'{{ databricks_account_id }}', +'{{ databricks_network_name }}', +'{{ vpc_id }}', +'{{ subnet_ids }}', +'{{ security_group_ids }}' + +/*+ statecheck, retries=3, retry_delay=5 */ +SELECT COUNT(*) as count FROM +( +SELECT +JSON_EQUAL(subnet_ids, '{{ subnet_ids }}') as subnet_test, +JSON_EQUAL(security_group_ids, '{{ security_group_ids }}') as sg_test +FROM databricks_account.provisioning.networks +WHERE account_id = '{{ databricks_account_id }}' +AND network_name = '{{ databricks_network_name }}' +AND vpc_id = '{{ vpc_id }}' +AND subnet_test = 1 +AND sg_test = 1 +)t + +/*+ exports */ +SELECT +network_id as databricks_network_id +FROM databricks_account.provisioning.networks +WHERE account_id = '{{ databricks_account_id }}' AND +network_name = '{{ databricks_network_name }}' + +/*+ delete */ +DELETE FROM databricks_account.provisioning.networks +WHERE account_id = '{{ databricks_account_id }}' AND +network_id = '{{ databricks_network_id }}' \ No newline at end of file diff --git a/examples/databricks/serverless/resources/databricks_account/storage_configuration.iql b/examples/databricks/serverless/resources/databricks_account/storage_configuration.iql new file mode 100644 index 0000000..4e60cfc --- /dev/null +++ b/examples/databricks/serverless/resources/databricks_account/storage_configuration.iql @@ -0,0 +1,35 @@ +/*+ exists */ +SELECT COUNT(*) as count +FROM databricks_account.provisioning.storage +WHERE account_id = '{{ databricks_account_id }}' +AND storage_configuration_name = '{{ storage_configuration_name }}' + +/*+ create */ +INSERT INTO databricks_account.provisioning.storage ( +account_id, +data__storage_configuration_name, +data__root_bucket_info +) +SELECT +'{{ databricks_account_id }}', +'{{ storage_configuration_name }}', +'{{ root_bucket_info }}' + +/*+ statecheck, retries=3, retry_delay=5 */ +SELECT COUNT(*) as count +FROM databricks_account.provisioning.storage +WHERE account_id = '{{ databricks_account_id }}' +AND storage_configuration_name = '{{ storage_configuration_name }}' +AND JSON_EXTRACT(root_bucket_info, '$.bucket_name') = '{{ aws_s3_workspace_bucket_name }}' + +/*+ exports */ +SELECT +storage_configuration_id as databricks_storage_configuration_id +FROM databricks_account.provisioning.storage +WHERE account_id = '{{ databricks_account_id }}' +AND storage_configuration_name = '{{ storage_configuration_name }}' + +/*+ delete */ +DELETE FROM databricks_account.provisioning.storage +WHERE account_id = '{{ databricks_account_id }}' AND +storage_configuration_id = '{{ databricks_storage_configuration_id }}' \ No newline at end of file diff --git a/examples/databricks/serverless/resources/databricks_account/update_group_membership.iql b/examples/databricks/serverless/resources/databricks_account/update_group_membership.iql new file mode 100644 index 0000000..375d926 --- /dev/null +++ b/examples/databricks/serverless/resources/databricks_account/update_group_membership.iql @@ -0,0 +1,6 @@ +/*+ command */ +update databricks_account.iam.groups +set data__schemas = '["urn:ietf:params:scim:api:messages:2.0:PatchOp"]', +data__Operations = '[{"op": "replace", "path": "members", "value": {{ databricks_workspace_group_members }} }]' +WHERE account_id = '{{ databricks_account_id }}' +AND id = '{{ databricks_group_id }}'; diff --git a/examples/databricks/serverless/resources/databricks_account/workspace.iql b/examples/databricks/serverless/resources/databricks_account/workspace.iql new file mode 100644 index 0000000..9da2dea --- /dev/null +++ b/examples/databricks/serverless/resources/databricks_account/workspace.iql @@ -0,0 +1,44 @@ +/*+ exists */ +SELECT COUNT(*) as count +FROM databricks_account.provisioning.workspaces +WHERE account_id = '{{ databricks_account_id }}' +AND workspace_name = '{{ workspace_name }}' + +/*+ create */ +INSERT INTO databricks_account.provisioning.workspaces ( +account_id, +data__workspace_name, +data__aws_region, +data__credentials_id, +data__storage_configuration_id, +data__pricing_tier +) +SELECT +'{{ databricks_account_id }}', +'{{ workspace_name }}', +'{{ aws_region }}', +'{{ credentials_id }}', +'{{ storage_configuration_id }}', +'{{ pricing_tier }}' + +/*+ statecheck, retries=3, retry_delay=5 */ +SELECT COUNT(*) as count +FROM databricks_account.provisioning.workspaces +WHERE account_id = '{{ databricks_account_id }}' +AND workspace_name = '{{ workspace_name }}' +AND aws_region = '{{ aws_region }}' +AND credentials_id = '{{ credentials_id }}' +AND storage_configuration_id = '{{ storage_configuration_id }}' +AND pricing_tier = '{{ pricing_tier }}' + +/*+ exports */ +SELECT workspace_id AS databricks_workspace_id, +deployment_name AS databricks_deployment_name +FROM databricks_account.provisioning.workspaces +WHERE account_id = '{{ databricks_account_id }}' +AND workspace_name = '{{ workspace_name }}' + +/*+ delete */ +DELETE FROM databricks_account.provisioning.workspaces +WHERE account_id = '{{ databricks_account_id }}' AND +workspace_id = '{{ databricks_workspace_id }}' \ No newline at end of file diff --git a/examples/databricks/serverless/resources/databricks_account/workspace_group.iql b/examples/databricks/serverless/resources/databricks_account/workspace_group.iql new file mode 100644 index 0000000..733b6f4 --- /dev/null +++ b/examples/databricks/serverless/resources/databricks_account/workspace_group.iql @@ -0,0 +1,32 @@ +/*+ exists */ +SELECT COUNT(*) as count +FROM databricks_account.iam.groups +WHERE account_id = '{{ databricks_account_id }}' +AND displayName = '{{ display_name }}' + +/*+ create */ +INSERT INTO databricks_account.iam.groups ( +account_id, +data__displayName +) +SELECT +'{{ databricks_account_id }}', +'{{ display_name }}' + +/*+ statecheck, retries=3, retry_delay=5 */ +SELECT COUNT(*) as count +FROM databricks_account.iam.groups +WHERE account_id = '{{ databricks_account_id }}' +AND displayName = '{{ display_name }}' + +/*+ exports */ +SELECT id AS databricks_group_id, +displayName AS databricks_group_name +FROM databricks_account.iam.groups +WHERE account_id = '{{ databricks_account_id }}' +AND displayName = '{{ display_name }}' + +/*+ delete */ +DELETE FROM databricks_account.iam.groups +WHERE account_id = '{{ databricks_account_id }}' AND +id = '{{ databricks_group_id }}'; \ No newline at end of file diff --git a/examples/databricks/serverless/resources/databricks_account/workspace_permission_assignments.iql b/examples/databricks/serverless/resources/databricks_account/workspace_permission_assignments.iql new file mode 100644 index 0000000..00387e3 --- /dev/null +++ b/examples/databricks/serverless/resources/databricks_account/workspace_permission_assignments.iql @@ -0,0 +1,32 @@ +/*+ exists */ +SELECT COUNT(*) as count +FROM databricks_account.iam.workspace_permission_assignments +WHERE account_id = '{{ databricks_account_id }}' AND +workspace_id = '{{ databricks_workspace_id }}' +AND JSON_EXTRACT(principal, '$.principal_id') = {{ databricks_group_id }} + +/*+ createorupdate */ +INSERT INTO databricks_account.iam.workspace_permission_assignments ( +account_id, +principal_id, +workspace_id, +data__permissions +) +SELECT +'{{ databricks_account_id }}', +'{{ databricks_group_id }}', +'{{ databricks_workspace_id }}', +'["ADMIN"]' + +/*+ statecheck, retries=3, retry_delay=5 */ +SELECT COUNT(*) as count +FROM databricks_account.iam.workspace_permission_assignments +WHERE account_id = '{{ databricks_account_id }}' AND +workspace_id = '{{ databricks_workspace_id }}' +AND JSON_EXTRACT(principal, '$.principal_id') = {{ databricks_group_id }} + +/*+ delete */ +DELETE FROM databricks_account.iam.workspace_permission_assignments +WHERE account_id = '{{ databricks_account_id }}' AND +principal_id = '{{ databricks_group_id }}' AND +workspace_id = '{{ databricks_workspace_id }}' \ No newline at end of file diff --git a/examples/databricks/serverless/resources/databricks_workspace/storage_credential.iql b/examples/databricks/serverless/resources/databricks_workspace/storage_credential.iql new file mode 100644 index 0000000..b63f288 --- /dev/null +++ b/examples/databricks/serverless/resources/databricks_workspace/storage_credential.iql @@ -0,0 +1,43 @@ +/*+ exists */ +SELECT COUNT(*) as count +FROM databricks_workspace.unitycatalog.storage_credentials +WHERE name = '{{ name | replace('-', '_') | upper }}' AND +deployment_name = '{{ databricks_deployment_name }}'; + +/*+ create */ +INSERT INTO databricks_workspace.unitycatalog.storage_credentials ( +deployment_name, +data__name, +data__comment, +data__read_only, +data__aws_iam_role, +data__skip_validation +) +SELECT +'{{ databricks_deployment_name }}', +'{{ name | replace('-', '_') | upper }}', +'{{ comment }}', +'{{ read_only }}', +'{{ aws_iam_role }}', +'{{ skip_validation }}' +; + +/*+ statecheck, retries=3, retry_delay=5 */ +SELECT COUNT(*) as count +FROM databricks_workspace.unitycatalog.storage_credentials +WHERE name = '{{ name | replace('-', '_') | upper }}' AND +deployment_name = '{{ databricks_deployment_name }}' AND +JSON_EXTRACT(aws_iam_role, '$.role_arn') = '{{ metastore_access_role_arn }}'; + +/*+ exports */ +SELECT +name as storage_credential_name, +JSON_EXTRACT(aws_iam_role, '$.external_id') as storage_credential_external_id +FROM databricks_workspace.unitycatalog.storage_credentials +WHERE name = '{{ name | replace('-', '_') | upper }}' AND +deployment_name = '{{ databricks_deployment_name }}'; + +/*+ delete */ +DELETE FROM databricks_workspace.unitycatalog.storage_credentials +WHERE name = '{{ name | replace('-', '_') | upper }}' AND +deployment_name = '{{ databricks_deployment_name }}'; \ No newline at end of file diff --git a/examples/databricks/serverless/sec/.gitignore b/examples/databricks/serverless/sec/.gitignore new file mode 100644 index 0000000..d6b7ef3 --- /dev/null +++ b/examples/databricks/serverless/sec/.gitignore @@ -0,0 +1,2 @@ +* +!.gitignore diff --git a/examples/databricks/serverless/stackql_manifest.yml b/examples/databricks/serverless/stackql_manifest.yml new file mode 100644 index 0000000..d709625 --- /dev/null +++ b/examples/databricks/serverless/stackql_manifest.yml @@ -0,0 +1,1173 @@ +version: 1 +name: "stackql-serverless" +description: creates a serverless databricks workspace +providers: + - aws + - databricks_account + - databricks_workspace +globals: + - name: databricks_account_id + description: databricks account id + value: "{{ DATABRICKS_ACCOUNT_ID }}" + - name: databricks_aws_account_id + description: databricks AWS account id + value: "{{ DATABRICKS_AWS_ACCOUNT_ID }}" + - name: aws_account + description: aws_account id + value: "{{ AWS_ACCOUNT_ID }}" + - name: region + description: aws region + value: "{{ AWS_REGION }}" + - name: region + description: aws region + value: "{{ AWS_REGION }}" + - name: global_tags + value: + - Key: Provisioner + Value: stackql + - Key: StackName + Value: "{{ stack_name }}" + - Key: StackEnv + Value: "{{ stack_env }}" +resources: + +# ==================================================================================== +# IAM and Cloud Credentials +# ==================================================================================== + + - name: aws/iam/cross_account_role + file: aws/iam/iam_role.iql + props: + - name: role_name + value: "{{ stack_name }}-{{ stack_env }}-role" + - name: assume_role_policy_document + value: + Version: "2012-10-17" + Statement: + - Sid: "" + Effect: "Allow" + Principal: + AWS: "arn:aws:iam::{{ databricks_aws_account_id }}:root" + Action: "sts:AssumeRole" + Condition: + StringEquals: + sts:ExternalId: "{{ databricks_account_id }}" + - name: description + value: 'allows Databricks to access resources in ({{ stack_name }}-{{ stack_env }})' + - name: path + value: '/' + - name: policies + value: + - PolicyDocument: + Statement: + - Sid: Stmt1403287045000 + Effect: Allow + Action: + - "ec2:AllocateAddress" + - "ec2:AssociateDhcpOptions" + - "ec2:AssociateIamInstanceProfile" + - "ec2:AssociateRouteTable" + - "ec2:AttachInternetGateway" + - "ec2:AttachVolume" + - "ec2:AuthorizeSecurityGroupEgress" + - "ec2:AuthorizeSecurityGroupIngress" + - "ec2:CancelSpotInstanceRequests" + - "ec2:CreateDhcpOptions" + - "ec2:CreateInternetGateway" + - "ec2:CreateKeyPair" + - "ec2:CreateNatGateway" + - "ec2:CreatePlacementGroup" + - "ec2:CreateRoute" + - "ec2:CreateRouteTable" + - "ec2:CreateSecurityGroup" + - "ec2:CreateSubnet" + - "ec2:CreateTags" + - "ec2:CreateVolume" + - "ec2:CreateVpc" + - "ec2:CreateVpcEndpoint" + - "ec2:DeleteDhcpOptions" + - "ec2:DeleteInternetGateway" + - "ec2:DeleteKeyPair" + - "ec2:DeleteNatGateway" + - "ec2:DeletePlacementGroup" + - "ec2:DeleteRoute" + - "ec2:DeleteRouteTable" + - "ec2:DeleteSecurityGroup" + - "ec2:DeleteSubnet" + - "ec2:DeleteTags" + - "ec2:DeleteVolume" + - "ec2:DeleteVpc" + - "ec2:DeleteVpcEndpoints" + - "ec2:DescribeAvailabilityZones" + - "ec2:DescribeIamInstanceProfileAssociations" + - "ec2:DescribeInstanceStatus" + - "ec2:DescribeInstances" + - "ec2:DescribeInternetGateways" + - "ec2:DescribeNatGateways" + - "ec2:DescribePlacementGroups" + - "ec2:DescribePrefixLists" + - "ec2:DescribeReservedInstancesOfferings" + - "ec2:DescribeRouteTables" + - "ec2:DescribeSecurityGroups" + - "ec2:DescribeSpotInstanceRequests" + - "ec2:DescribeSpotPriceHistory" + - "ec2:DescribeSubnets" + - "ec2:DescribeVolumes" + - "ec2:DescribeVpcs" + - "ec2:DescribeVpcAttribute" + - "ec2:DescribeNetworkAcls" + - "ec2:DetachInternetGateway" + - "ec2:DisassociateIamInstanceProfile" + - "ec2:DisassociateRouteTable" + - "ec2:ModifyVpcAttribute" + - "ec2:ReleaseAddress" + - "ec2:ReplaceIamInstanceProfileAssociation" + - "ec2:ReplaceRoute" + - "ec2:RequestSpotInstances" + - "ec2:RevokeSecurityGroupEgress" + - "ec2:RevokeSecurityGroupIngress" + - "ec2:RunInstances" + - "ec2:TerminateInstances" + Resource: + - "*" + - Effect: Allow + Action: + - "iam:CreateServiceLinkedRole" + - "iam:PutRolePolicy" + Resource: + - arn:aws:iam::*:role/aws-service-role/spot.amazonaws.com/AWSServiceRoleForEC2Spot + Condition: + StringLike: + "iam:AWSServiceName": spot.amazonaws.com + Version: '2012-10-17' + PolicyName: "{{ stack_name }}-{{ stack_env }}-policy" + exports: + - aws_iam_role_name: aws_iam_cross_account_role_name + - aws_iam_role_arn: aws_iam_cross_account_role_arn + + - name: databricks_account/credentials + props: + - name: credentials_name + value: "{{ stack_name }}-{{ stack_env }}-credentials" + - name: aws_credentials + value: + sts_role: + role_arn: "{{ aws_iam_cross_account_role_arn }}" + exports: + - databricks_credentials_name + - databricks_credentials_id + - databricks_role_external_id + +# ==================================================================================== +# Storage +# ==================================================================================== + + - name: aws/s3/workspace_bucket + file: aws/s3/s3_bucket.iql + props: + - name: bucket_name + value: "{{ stack_name }}-{{ stack_env }}-root-bucket" + - name: ownership_controls + value: + Rules: + - ObjectOwnership: "BucketOwnerPreferred" + - name: bucket_encryption + value: + ServerSideEncryptionConfiguration: + - BucketKeyEnabled: true + ServerSideEncryptionByDefault: + SSEAlgorithm: "AES256" + - name: public_access_block_configuration + value: + BlockPublicAcls: true + IgnorePublicAcls: true + BlockPublicPolicy: true + RestrictPublicBuckets: true + - name: versioning_configuration + value: + Status: "Suspended" + exports: + - arn: aws_s3_workspace_bucket_arn + - bucket_name: aws_s3_workspace_bucket_name + + - name: aws/s3/workspace_bucket_policy + file: aws/s3/s3_bucket_policy.iql + props: + - name: policy_document + value: + Version: "2012-10-17" + Statement: + - Sid: Grant Databricks Access + Effect: Allow + Principal: + AWS: "arn:aws:iam::{{ databricks_aws_account_id }}:root" + Action: + - "s3:GetObject" + - "s3:GetObjectVersion" + - "s3:PutObject" + - "s3:DeleteObject" + - "s3:ListBucket" + - "s3:GetBucketLocation" + Resource: + - "{{ aws_s3_workspace_bucket_arn }}/*" + - "{{ aws_s3_workspace_bucket_arn }}" + + - name: databricks_account/storage_configuration + props: + - name: storage_configuration_name + value: "{{ stack_name }}-{{ stack_env }}-storage" + - name: root_bucket_info + value: + bucket_name: "{{ aws_s3_workspace_bucket_name }}" + exports: + - databricks_storage_configuration_id + +# ==================================================================================== +# UC Storage Credential and Metastore Catalog Bucket +# ==================================================================================== + + - name: aws/s3/metastore_bucket + file: aws/s3/s3_bucket.iql + props: + - name: bucket_name + value: "{{ stack_name }}-{{ stack_env }}-metastore" + - name: ownership_controls + value: + Rules: + - ObjectOwnership: "BucketOwnerPreferred" + - name: bucket_encryption + value: + ServerSideEncryptionConfiguration: + - BucketKeyEnabled: true + ServerSideEncryptionByDefault: + SSEAlgorithm: "AES256" + - name: public_access_block_configuration + value: + BlockPublicAcls: true + IgnorePublicAcls: true + BlockPublicPolicy: true + RestrictPublicBuckets: true + - name: versioning_configuration + value: + Status: "Suspended" + exports: + - arn: aws_s3_metastore_bucket_arn + - bucket_name: aws_s3_metastore_bucket_name + + - name: aws/iam/metastore_access_role + file: aws/iam/iam_role.iql + props: + - name: role_name + value: "{{ stack_name }}-{{ stack_env }}-metastore-role" + - name: assume_role_policy_document + value: + Version: "2012-10-17" + Statement: + - Effect: "Allow" + Principal: + AWS: + - "arn:aws:iam::414351767826:role/unity-catalog-prod-UCMasterRole-14S5ZJVKOTYTL" + Action: "sts:AssumeRole" + Condition: + StringEquals: + sts:ExternalId: "0000" # Placeholder + - name: description + value: 'Unity Catalog metastore access role for ({{ stack_name }}-{{ stack_env }})' + - name: path + value: '/' + - name: policies + value: + - PolicyName: "MetastoreS3Policy" + PolicyDocument: + Version: "2012-10-17" + Statement: + - Effect: "Allow" + Action: + - "s3:GetObject" + - "s3:PutObject" + - "s3:DeleteObject" + - "s3:ListBucket" + - "s3:GetBucketLocation" + - "s3:ListBucketMultipartUploads" + - "s3:ListMultipartUploadParts" + - "s3:AbortMultipartUpload" + Resource: + - "{{ aws_s3_metastore_bucket_arn }}/*" + - "{{ aws_s3_metastore_bucket_arn }}" + + # - Effect: "Allow" + # Action: + # - "kms:Decrypt" + # - "kms:Encrypt" + # - "kms:GenerateDataKey*" + # Resource: + # - "arn:aws:kms:" + + - Effect: "Allow" + Action: + - "sts:AssumeRole" + Resource: + - "arn:aws:iam::{{ databricks_aws_account_id }}:role/{{ stack_name }}-{{ stack_env }}-metastore-role" + + - Sid: "ManagedFileEventsSetupStatement" + Effect: "Allow" + Action: + - "s3:GetBucketNotification" + - "s3:PutBucketNotification" + - "sns:ListSubscriptionsByTopic" + - "sns:GetTopicAttributes" + - "sns:SetTopicAttributes" + - "sns:CreateTopic" + - "sns:TagResource" + - "sns:Publish" + - "sns:Subscribe" + - "sqs:CreateQueue" + - "sqs:DeleteMessage" + - "sqs:ReceiveMessage" + - "sqs:SendMessage" + - "sqs:GetQueueUrl" + - "sqs:GetQueueAttributes" + - "sqs:SetQueueAttributes" + - "sqs:TagQueue" + - "sqs:ChangeMessageVisibility" + - "sqs:PurgeQueue" + Resource: + - "{{ aws_s3_metastore_bucket_arn }}" + - "arn:aws:sqs:*:*:csms-*" + - "arn:aws:sns:*:*:csms-*" + + - Sid: "ManagedFileEventsListStatement" + Effect: "Allow" + Action: + - "sqs:ListQueues" + - "sqs:ListQueueTags" + - "sns:ListTopics" + Resource: + - "arn:aws:sqs:*:*:csms-*" + - "arn:aws:sns:*:*:csms-*" + + - Sid: "ManagedFileEventsTeardownStatement" + Effect: "Allow" + Action: + - "sns:Unsubscribe" + - "sns:DeleteTopic" + - "sqs:DeleteQueue" + Resource: + - "arn:aws:sqs:*:*:csms-*" + - "arn:aws:sns:*:*:csms-*" + - name: tags + value: + - Key: Purpose + Value: "Unity Catalog Storage Credential" + merge: + - global_tags + exports: + - aws_iam_role_arn: metastore_access_role_arn + +# ==================================================================================== +# DBX Workspace +# ==================================================================================== + + - name: databricks_account/workspace + props: + - name: workspace_name + value: "{{ stack_name }}-{{ stack_env }}-workspace" + - name: aws_region + value: "{{ region }}" + - name: credentials_id + value: "{{ databricks_credentials_id }}" + - name: storage_configuration_id + value: "{{ databricks_storage_configuration_id }}" + - name: pricing_tier + value: PREMIUM + exports: + - databricks_workspace_id + - databricks_deployment_name + + - name: databricks_account/workspace_group + props: + - name: display_name + value: "{{ stack_name }}-{{ stack_env }}-workspace-admins" + exports: + - databricks_group_id + - databricks_group_name + + - name: databricks_account/get_users + type: query + props: + - name: users + value: + - "javen@stackql.io" + - "krimmer@stackql.io" + exports: + - databricks_workspace_group_members + + - name: databricks_account/update_group_membership + type: command + props: [] + + - name: databricks_account/workspace_permission_assignments + props: [] + + - name: databricks_workspace/storage_credential + props: + - name: name + value: "{{ stack_name }}-{{ stack_env }}-storage-credential" + - name: comment + value: "Storage credential for {{ stack_name }} {{ stack_env }} metastore S3 access" + - name: read_only + value: false + - name: aws_iam_role + value: + role_arn: "{{ metastore_access_role_arn }}" + - name: skip_validation + value: false + exports: + - storage_credential_name + - storage_credential_external_id + + # fix this + - name: databricks_workspace/unitycatalog/grants + type: command + props: + - name: privileges + value: + - "ALL_PRIVILEGES" + sql: | + UPDATE databricks_workspace.unitycatalog.grants + SET principal = '{{ databricks_group_name }}', + privileges = '{{ privileges }}' + WHERE full_name = '{{ storage_credential_name }}' AND + securable_type = 'storage_credential' AND + deployment_name = '{{ databricks_deployment_name }}'; + + - name: aws/iam/update_metastore_access_role + type: command + props: + - name: role_name + value: "{{ stack_name }}-{{ stack_env }}-metastore-role" + - name: assume_role_policy_document + value: + Version: "2012-10-17" + Statement: + - Effect: "Allow" + Principal: + AWS: + - "arn:aws:iam::414351767826:role/unity-catalog-prod-UCMasterRole-14S5ZJVKOTYTL" + - "{{ metastore_access_role_arn }}" + Action: "sts:AssumeRole" + Condition: + StringEquals: + sts:ExternalId: "{{ storage_credential_external_id }}" + + # - name: databricks_workspace/catalog + # props: + # - name: name + # value: "{{ stack_name }}_{{ stack_env }}_catalog" + # - name: comment + # value: "Main catalog for {{ stack_name }} {{ stack_env }}" + # - name: storage_root + # value: "s3://{{ aws_s3_metastore_bucket_name }}/catalogs/{{ stack_name }}_{{ stack_env }}_catalog" + # - name: provider + # value: "aws" + # - name: properties + # value: + # # Optional catalog properties + # delta.compatibility.break.feature_a: "false" + # delta.compatibility.break.feature_b: "false" + # - name: storage_credential_name + # value: "{{ stack_name }}-{{ stack_env }}-storage-credential" + # exports: + # - catalog_name + + # # Grant access to the catalog + # - name: databricks_workspace/unitycatalog/grants + # type: command + # props: + # - name: full_name + # value: "{{ catalog_name }}" + # - name: securable_type + # value: "catalog" + # - name: deployment_name + # value: "{{ databricks_deployment_name }}" + # - name: principal + # value: "{{ databricks_group_id }}" + # - name: privileges + # value: + # - "USE_CATALOG" + # - "CREATE_SCHEMA" + # - "USE_SCHEMA" + # sql: | + # /*+ update */ + # UPDATE databricks_workspace.unitycatalog.grants + # SET principal = '{{ principal }}', + # privileges = {{ privileges }} + # WHERE full_name = '{{ full_name }}' AND + # securable_type = '{{ securable_type }}' AND + # deployment_name = '{{ deployment_name }}'; + + # # Create a schema (database) in the catalog + # - name: databricks_workspace/schema + # props: + # - name: name + # value: "default" + # - name: catalog_name + # value: "{{ catalog_name }}" + # - name: comment + # value: "Default schema for {{ stack_name }} {{ stack_env }}" + # exports: + # - schema_id + # - schema_full_name + + # # Grant access to the schema + # - name: databricks_workspace/unitycatalog/grants + # type: command + # props: + # - name: full_name + # value: "{{ schema_full_name }}" + # - name: securable_type + # value: "schema" + # - name: deployment_name + # value: "{{ databricks_deployment_name }}" + # - name: principal + # value: "{{ databricks_group_id }}" + # - name: privileges + # value: + # - "USE_SCHEMA" + # - "CREATE_TABLE" + # - "CREATE_FUNCTION" + # - "CREATE_VIEW" + # sql: | + # /*+ update */ + # UPDATE databricks_workspace.unitycatalog.grants + # SET principal = '{{ principal }}', + # privileges = {{ privileges }} + # WHERE full_name = '{{ full_name }}' AND + # securable_type = '{{ securable_type }}' AND + # deployment_name = '{{ deployment_name }}'; + + # # Set this catalog as the default for the workspace + # - name: databricks_workspace/workspace_conf + # props: + # - name: key + # value: "enableUnityCatalogAdminPerms" + # - name: value + # value: "true" + + # - name: databricks_workspace/workspace_conf + # props: + # - name: key + # value: "defaultCatalog" + # - name: value + # value: "{{ catalog_name }}" + + + # create S3 bucket for metastore + # - name: aws/s3/metastore_bucket + # props: + # - name: bucket_name + # value: "{{ stack_name }}-{{ stack_env }}-metastore" + # - name: ownership_controls + # value: + # Rules: + # - ObjectOwnership: "BucketOwnerPreferred" + # - name: bucket_encryption + # value: + # ServerSideEncryptionConfiguration: + # - BucketKeyEnabled: true + # ServerSideEncryptionByDefault: + # SSEAlgorithm: "aws:kms" + # KMSMasterKeyID: "{{ metastore_kms_key_arn }}" + # - name: public_access_block_configuration + # value: + # BlockPublicAcls: true + # IgnorePublicAcls: true + # BlockPublicPolicy: true + # RestrictPublicBuckets: true + # - name: versioning_configuration + # value: + # Status: "Enabled" + # - name: lifecycle_configuration + # value: + # Rules: + # - Id: "DeleteOldVersions" + # Status: "Enabled" + # NoncurrentVersionExpiration: + # NoncurrentDays: 30 + # AbortIncompleteMultipartUpload: + # DaysAfterInitiation: 7 + # - name: logging_configuration + # value: + # TargetBucket: "{{ stack_name }}-{{ stack_env }}-logs" + # TargetPrefix: "s3-access-logs/metastore/" + # - name: tags + # value: + # - Key: Purpose + # Value: "Unity Catalog Metastore" + # - Key: DataClassification + # Value: "Metadata" + # merge: + # - global_tags + # exports: + # - bucket_name: aws_s3_metastore_bucket_name + # - bucket_arn: aws_s3_metastore_bucket_arn + + + + # + # create placeholder role (no policies) + # + + + + # create bucket policy + + # add policies to role + # - name: aws/iam/metastore_access_role + # file: aws/iam/iam_role.iql + # props: + # - name: role_name + # value: "{{ stack_name }}-{{ stack_env }}-metastore-role" + # - name: assume_role_policy_document + # value: + # Version: "2012-10-17" + # Statement: + # - Effect: "Allow" + # Principal: + # AWS: + # - "arn:aws:iam::414351767826:role/unity-catalog-prod-UCMasterRole-14S5ZJVKOTYTL" + # Action: "sts:AssumeRole" + # Condition: + # StringEquals: + # sts:ExternalId: "0000" # Placeholder + # - name: description + # value: 'Unity Catalog metastore access role for ({{ stack_name }}-{{ stack_env }})' + # - name: path + # value: '/' + # - name: policies + # value: + # - PolicyName: "MetastoreS3Access" + # PolicyDocument: + # Version: "2012-10-17" + # Statement: + # - Sid: "S3MetastoreBucketAccess" + # Effect: "Allow" + # Action: + # - "s3:GetObject" + # - "s3:PutObject" + # - "s3:DeleteObject" + # - "s3:ListBucket" + # - "s3:GetBucketLocation" + # - "s3:GetLifecycleConfiguration" + # - "s3:PutLifecycleConfiguration" + # - "s3:ListBucketMultipartUploads" + # - "s3:ListMultipartUploadParts" + # - "s3:AbortMultipartUpload" + # Resource: + # - "{{ aws_s3_metastore_bucket_arn }}/*" + # - "{{ aws_s3_metastore_bucket_arn }}" + # - Sid: "AssumeRoleSelfTrust" + # Effect: "Allow" + # Action: ["sts:AssumeRole"] + # Resource: ["arn:aws:iam::{{ aws_account }}:role/{{ stack_name }}-{{ stack_env }}-metastore-role"] + # - PolicyName: "MetastoreKMSAccess" + # PolicyDocument: + # Version: "2012-10-17" + # Statement: + # - Sid: "KMSKeyAccess" + # Effect: "Allow" + # Action: + # - "kms:Decrypt" + # - "kms:Encrypt" + # - "kms:GenerateDataKey" + # - "kms:DescribeKey" + # - "kms:CreateGrant" + # - "kms:RetireGrant" + # Resource: + # - "{{ metastore_kms_key_arn }}" + # Condition: + # StringEquals: + # "kms:ViaService": "s3.{{ region }}.amazonaws.com" + # - PolicyName: "MetastoreFileEvents" + # PolicyDocument: + # Version: "2012-10-17" + # Statement: + # - Sid: "ManagedFileEventsSetupStatement" + # Effect: "Allow" + # Action: + # - "s3:GetBucketNotification" + # - "s3:PutBucketNotification" + # - "sns:ListSubscriptionsByTopic" + # - "sns:GetTopicAttributes" + # - "sns:SetTopicAttributes" + # - "sns:CreateTopic" + # - "sns:TagResource" + # - "sns:Publish" + # - "sns:Subscribe" + # - "sqs:CreateQueue" + # - "sqs:DeleteMessage" + # - "sqs:ReceiveMessage" + # - "sqs:SendMessage" + # - "sqs:GetQueueUrl" + # - "sqs:GetQueueAttributes" + # - "sqs:SetQueueAttributes" + # - "sqs:TagQueue" + # - "sqs:ChangeMessageVisibility" + # - "sqs:PurgeQueue" + # Resource: + # - "{{ aws_s3_metastore_bucket_arn }}" + # - "arn:aws:sqs:{{ region }}:{{ aws_account }}:csms-*" + # - "arn:aws:sns:{{ region }}:{{ aws_account }}:csms-*" + # - Sid: "ManagedFileEventsListStatement" + # Effect: "Allow" + # Action: ["sqs:ListQueues", "sqs:ListQueueTags", "sns:ListTopics"] + # Resource: "*" + # - Sid: "ManagedFileEventsTeardownStatement" + # Effect: "Allow" + # Action: ["sns:Unsubscribe", "sns:DeleteTopic", "sqs:DeleteQueue"] + # Resource: + # - "arn:aws:sqs:{{ region }}:{{ aws_account }}:csms-*" + # - "arn:aws:sns:{{ region }}:{{ aws_account }}:csms-*" + # - name: tags + # value: + # - Key: Purpose + # Value: "Unity Catalog Storage Credential" + # merge: + # - global_tags + # exports: + # - aws_iam_role_arn: metastore_access_role_arn + + # test role policies + + # - name: databricks_account/metastore + # props: + # - name: name + # value: "{{ stack_name }}-{{ stack_env }}-metastore" + # - name: storage_root + # value: "s3://{{ aws_s3_metastore_bucket_name }}" + # - name: region + # value: "{{ region }}" + # exports: + # - metastore_id: databricks_metastore_id + + # - name: databricks_account/uc_storage_credentials + # props: + # - name: metastore_id + # value: "{{ databricks_metastore_id }}" + # - name: credential_info + # value: + # name: "{{ stack_name }}-{{ stack_env }}-storage-credential" + # comment: "Storage credential for {{ stack_name }} {{ stack_env }} metastore S3 access" + # read_only: false + # aws_iam_role: + # role_arn: "{{ metastore_access_role_arn }}" + # skip_validation: false + # exports: + # - credential_id: storage_credential_id + # - external_id: storage_credential_external_id + + # - name: aws/iam/update_metastore_role_trust_policy + # type: command + # props: + # - name: role_name + # value: "{{ stack_name }}-{{ stack_env }}-metastore-role" + # - name: assume_role_policy_document + # value: + # Version: "2012-10-17" + # Statement: + # - Effect: "Allow" + # Principal: + # AWS: + # - "arn:aws:iam::414351767826:role/unity-catalog-prod-UCMasterRole-14S5ZJVKOTYTL" + # - "arn:aws:iam::{{ aws_account }}:role/{{ stack_name }}-{{ stack_env }}-metastore-role" + # Action: "sts:AssumeRole" + # Condition: + # StringEquals: + # sts:ExternalId: "{{ storage_credential_external_id }}" + + # - name: databricks_account/validate_storage_credential + # type: command + # props: + # - name: credential_id + # value: "{{ storage_credential_id }}" + # - name: metastore_id + # value: "{{ databricks_metastore_id }}" + + # - name: databricks_account/external_location + # props: + # - name: metastore_id + # value: "{{ databricks_metastore_id }}" + # - name: name + # value: "{{ stack_name }}-{{ stack_env }}-metastore-location" + # - name: url + # value: "s3://{{ aws_s3_metastore_bucket_name }}/" + # - name: credential_name + # value: "{{ stack_name }}-{{ stack_env }}-storage-credential" + # - name: comment + # value: "External location for {{ stack_name }} {{ stack_env }} metastore root" + # exports: + # - external_location_id + + # - name: databricks_account/catalog + # props: + # - name: metastore_id + # value: "{{ databricks_metastore_id }}" + # - name: name + # value: "{{ stack_name }}_{{ stack_env }}" + # - name: comment + # value: "Main catalog for {{ stack_name }} {{ stack_env }} environment" + # - name: storage_root + # value: "s3://{{ aws_s3_metastore_bucket_name }}/catalogs/{{ stack_name }}_{{ stack_env }}" + # exports: + # - catalog_id + + # - name: databricks_account/metastore_assignment + # props: + # - name: workspace_id + # value: "{{ databricks_workspace_id }}" + # - name: metastore_id + # value: "{{ databricks_metastore_id }}" + # - name: default_catalog_name + # value: "{{ stack_name }}_{{ stack_env }}" + + # - name: databricks_account/catalog_workspace_binding + # props: + # - name: catalog_name + # value: "{{ stack_name }}_{{ stack_env }}" + # - name: workspace_id + # value: "{{ databricks_workspace_id }}" + + # - name: databricks_account/catalog_permissions + # props: + # - name: catalog_name + # value: "{{ stack_name }}_{{ stack_env }}" + # - name: principal + # value: "{{ databricks_group_id }}" + # - name: privileges + # value: + # - "USE_CATALOG" + # - "CREATE_SCHEMA" + # - "CREATE_TABLE" + # - "CREATE_FUNCTION" + +# ==================================================================================== +# AWS VPC Networking +# ==================================================================================== + + # - name: aws/vpc/vpc + # props: + # - name: cidr_block + # values: + # prd: + # value: "10.53.0.0/16" + # sit: + # value: "10.1.0.0/16" + # dev: + # value: "10.2.0.0/16" + # - name: tags + # value: + # - Key: Name + # Value: "{{ stack_name }}-{{ stack_env }}-vpc" + # merge: + # - global_tags + # - name: idempotency_token + # value: 019447a0-b84a-7b7f-bca5-2ee320207e51 + # exports: + # - vpc_id + + # - name: aws/vpc/nat_subnet + # file: aws/vpc/subnet.iql + # props: + # - name: availability_zone + # value: "us-east-1a" + # - name: cidr_block + # values: + # prd: + # value: "10.53.0.0/24" + # sit: + # value: "10.1.0.0/19" + # dev: + # value: "10.2.0.0/19" + # - name: tags + # value: + # - Key: Name + # Value: "{{ stack_name }}-{{ stack_env }}-nat-subnet" + # merge: + # - global_tags + # exports: + # - subnet_id: nat_subnet_id + + # - name: aws/vpc/cluster_subnet1 + # file: aws/vpc/subnet.iql + # props: + # - name: availability_zone + # value: "us-east-1b" + # - name: cidr_block + # values: + # prd: + # value: "10.53.160.0/19" + # sit: + # value: "10.1.0.0/19" + # dev: + # value: "10.2.0.0/19" + # - name: tags + # value: + # - Key: Name + # Value: "{{ stack_name }}-{{ stack_env }}-subnet-1" + # merge: + # - global_tags + # exports: + # - subnet_id: cluster_subnet1_id + + # - name: aws/vpc/cluster_subnet2 + # file: aws/vpc/subnet.iql + # props: + # - name: availability_zone + # value: "us-east-1c" + # - name: cidr_block + # values: + # prd: + # value: "10.53.192.0/19" + # sit: + # value: "10.1.32.0/19" + # dev: + # value: "10.2.32.0/19" + # - name: tags + # value: + # - Key: Name + # Value: "{{ stack_name }}-{{ stack_env }}-subnet-2" + # merge: + # - global_tags + # exports: + # - subnet_id: cluster_subnet2_id + + # - name: aws/vpc/inet_gateway + # props: + # - name: tags + # value: + # - Key: Name + # Value: "{{ stack_name }}-{{ stack_env }}-inet-gateway" + # merge: ['global_tags'] + # - name: idempotency_token + # value: 019447a5-f076-75f8-9173-092df5a66d35 + # exports: + # - internet_gateway_id + + # - name: aws/vpc/inet_gw_attachment + # props: [] + + # - name: aws/vpc/nat_route_table + # file: aws/vpc/route_table.iql + # props: + # - name: route_table_name + # value: "{{ stack_name }}-{{ stack_env }}-nat-route-table" + # - name: tags + # value: + # - Key: Name + # Value: "{{ stack_name }}-{{ stack_env }}-nat-route-table" + # merge: ['global_tags'] + # exports: + # - route_table_id: nat_route_table_id + + # - name: aws/vpc/nat_route_to_inet + # file: aws/vpc/inet_route.iql + # props: + # - name: route_table_id + # value: "{{ nat_route_table_id }}" + # exports: + # - inet_route_indentifer: nat_inet_route_indentifer + + # - name: aws/vpc/nat_subnet_rt_assn + # file: aws/vpc/subnet_rt_assn.iql + # props: + # - name: subnet_id + # value: "{{ nat_subnet_id }}" + # - name: route_table_id + # value: "{{ nat_route_table_id }}" + # - name: idempotency_token + # value: 3eaf3040-1c8e-41a6-8be6-512ccaf5ff4e + # exports: + # - route_table_assn_id: nat_subnet_rt_assn_id + + # - name: aws/vpc/private_route_table + # file: aws/vpc/route_table.iql + # props: + # - name: route_table_name + # value: "{{ stack_name }}-{{ stack_env }}-private-route-table" + # - name: tags + # value: + # - Key: Name + # Value: "{{ stack_name }}-{{ stack_env }}-private-route-table" + # merge: ['global_tags'] + # exports: + # - route_table_id: private_route_table_id + + # - name: aws/vpc/subnet_rt_assn1 + # file: aws/vpc/subnet_rt_assn.iql + # props: + # - name: route_table_id + # value: "{{ private_route_table_id }}" + # - name: subnet_id + # value: "{{ cluster_subnet1_id }}" + # - name: idempotency_token + # value: 019447aa-1c7a-775b-91dc-04db7c49f4a7 + # exports: + # - route_table_assn_id: cluster_subnet1_rt_assn_id + + # - name: aws/vpc/subnet_rt_assn2 + # file: aws/vpc/subnet_rt_assn.iql + # props: + # - name: route_table_id + # value: "{{ private_route_table_id }}" + # - name: subnet_id + # value: "{{ cluster_subnet2_id }}" + # - name: idempotency_token + # value: c19c9077-c25d-46a4-a299-7bd93d773e58 + # exports: + # - route_table_assn_id: cluster_subnet2_rt_assn_id + + # - name: aws/vpc/elastic_ip + # props: + # - name: tags + # value: + # - Key: Name + # Value: "{{ stack_name }}-{{ stack_env }}-eip" + # merge: ['global_tags'] + # - name: idempotency_token + # value: 01945908-b80d-7e51-b52c-5e93dea9cbdb + # exports: + # - eip_allocation_id + # - eip_public_id + + # - name: aws/vpc/nat_gateway + # props: + # - name: tags + # value: + # - Key: Name + # Value: "{{ stack_name }}-{{ stack_env }}-nat-gateway" + # merge: ['global_tags'] + # - name: idempotency_token + # value: 019447a5-f076-75f8-9173-092df5a66d35 + # exports: + # - nat_gateway_id + + # - name: aws/vpc/nat_inet_route + # props: + # - name: route_table_id + # value: "{{ private_route_table_id }}" + # - name: nat_gateway_id + # value: "{{ nat_gateway_id }}" + # exports: + # - nat_inet_route_indentifer + + # - name: aws/vpc/security_group + # props: + # - name: group_name + # value: "{{ stack_name }}-{{ stack_env }}-sg" + # - name: group_description + # value: "security group for {{ stack_name }} ({{ stack_env }} environment)" + # - name: tags + # value: + # - Key: Name + # Value: "{{ stack_name }}-{{ stack_env }}-sg" + # merge: ['global_tags'] + # exports: + # - security_group_id + + # - name: aws/vpc/security_group_rules + # props: + # - name: security_group_ingress + # value: + # - FromPort: 0 + # ToPort: 65535 + # SourceSecurityGroupOwnerId: "{{ aws_account }}" + # IpProtocol: tcp + # SourceSecurityGroupId: "{{ security_group_id }}" + # - FromPort: 0 + # ToPort: 65535 + # SourceSecurityGroupOwnerId: "{{ aws_account }}" + # IpProtocol: "udp" + # SourceSecurityGroupId: "{{ security_group_id }}" + # - CidrIp: "3.237.73.224/28" + # FromPort: 443 + # ToPort: 443 + # IpProtocol: "tcp" + # - CidrIp: "54.156.226.103/32" + # FromPort: 443 + # ToPort: 443 + # IpProtocol: "tcp" + # - name: security_group_egress + # value: + # - FromPort: 0 + # ToPort: 65535 + # IpProtocol: "tcp" + # DestinationSecurityGroupId: "{{ security_group_id }}" + # Description: "Allow all TCP outbound access to the same security group" + # - CidrIp: "0.0.0.0/0" + # Description: Allow all outbound traffic + # FromPort: -1 + # ToPort: -1 + # IpProtocol: "-1" + # - CidrIp: "0.0.0.0/0" + # FromPort: 3306 + # ToPort: 3306 + # IpProtocol: "tcp" + # Description: "Allow accessing the Databricks metastore" + # - FromPort: 0 + # ToPort: 65535 + # IpProtocol: "udp" + # DestinationSecurityGroupId: "{{ security_group_id }}" + # Description: "Allow all UDP outbound access to the same security group" + # - CidrIp: "0.0.0.0/0" + # FromPort: 443 + # ToPort: 443 + # IpProtocol: "tcp" + # Description: "Allow accessing Databricks infrastructure, cloud data sources, and library repositories" + + # - name: databricks_account/network + # props: + # - name: databricks_network_name + # value: "{{ stack_name }}-{{ stack_env }}-network" + # - name: subnet_ids + # value: + # - "{{ cluster_subnet1_id }}" + # - "{{ cluster_subnet2_id }}" + # - name: security_group_ids + # value: + # - "{{ security_group_id }}" + # exports: + # - databricks_network_id + + # - name: databricks_workspace/all_purpose_cluster + # props: + # - name: cluster_name + # value: single-user-single-node-cluster + # - name: num_workers + # value: 0 + # - name: is_single_node + # value: true + # - name: kind + # value: CLASSIC_PREVIEW + # - name: spark_version + # value: 15.4.x-scala2.12 + # - name: node_type_id + # value: m7g.large + # - name: data_security_mode + # value: SINGLE_USER + # - name: runtime_engine + # value: PHOTON + # - name: single_user_name + # value: javen@stackql.io + # - name: aws_attributes + # value: + # ebs_volume_count: 1 + # ebs_volume_size: 100 + # - name: custom_tags + # description: Additional tags for cluster resources (max 45 tags) + # value: + # Provisioner: stackql + # StackName: "{{ stack_name }}" + # StackEnv: "{{ stack_env }}" + # exports: + # - databricks_cluster_id + # - databricks_cluster_state diff --git a/setup.py b/setup.py index 2d47f31..2860f2d 100644 --- a/setup.py +++ b/setup.py @@ -22,8 +22,10 @@ package_data={ 'stackql_deploy': [ 'templates/**/*.template', # Include template files recursively + 'contributors.csv' ], }, + include_package_data=True, install_requires=[ 'click', diff --git a/stackql_deploy/cmd/build.py b/stackql_deploy/cmd/build.py index 8ef3bac..99a3a32 100644 --- a/stackql_deploy/cmd/build.py +++ b/stackql_deploy/cmd/build.py @@ -7,7 +7,7 @@ get_type ) from ..lib.config import get_full_context, render_value -from ..lib.templating import get_queries +from ..lib.templating import get_queries, render_inline_template from .base import StackQLBase class StackQLProvisioner(StackQLBase): @@ -74,7 +74,11 @@ def run(self, dry_run, show_queries, on_failure): # # get resource queries # - resource_queries = get_queries(self.env, self.stack_dir, 'resources', resource, full_context, self.logger) + if type == 'command' and 'sql' in resource: + # command type resource with inline SQL + resource_queries = {} + else: + resource_queries = get_queries(self.env, self.stack_dir, 'resources', resource, full_context, self.logger) # provisioning queries if type in ('resource', 'multi'): @@ -239,9 +243,18 @@ def run(self, dry_run, show_queries, on_failure): if type == 'command': # command queries - command_query = resource_queries.get('command', {}).get('rendered') - command_retries = resource_queries.get('command', {}).get('options', {}).get('retries', 1) - command_retry_delay = resource_queries.get('command', {}).get('options', {}).get('retry_delay', 0) + if 'sql' in resource: + command_query = render_inline_template(self.env, resource["name"], resource["sql"], full_context, self.logger) + command_retries = 1 + command_retry_delay = 0 + else: + # SQL from file + command_query = resource_queries.get('command', {}).get('rendered') + command_retries = resource_queries.get('command', {}).get('options', {}).get('retries', 1) + command_retry_delay = resource_queries.get('command', {}).get('options', {}).get('retry_delay', 0) + if not command_query: + catch_error_and_exit("'sql' should be defined in the resource or the 'command' anchor needs to be supplied in the corresponding iql file for command type resources.", self.logger) + self.run_command(command_query, command_retries, command_retry_delay, dry_run, show_queries) # # exports diff --git a/stackql_deploy/lib/templating.py b/stackql_deploy/lib/templating.py index 85d0efb..2a218cd 100644 --- a/stackql_deploy/lib/templating.py +++ b/stackql_deploy/lib/templating.py @@ -127,3 +127,42 @@ def get_queries(env, stack_dir, doc_key, resource, full_context, logger): f"(templating.get_queries) failed to load or render queries for [{resource['name']}]: {str(e)}", logger ) + +def render_inline_template(env, resource_name, template_string, full_context, logger): + """ + Renders a single template string using the provided context. + Similar to get_queries but for inline templates rather than files. + """ + logger.debug(f"(templating.render_inline_template) [{resource_name}] template:\n\n{template_string}\n") + + try: + # Process the context the same way as in render_queries + temp_context = full_context.copy() + + for ctx_key, ctx_value in temp_context.items(): + if isinstance(ctx_value, str) and is_json(ctx_value, logger): + properties = json.loads(ctx_value) + # Serialize JSON ensuring booleans are lower case and using correct JSON syntax + json_str = json.dumps( + properties, ensure_ascii=False, separators=(',', ':') + ).replace('True', 'true').replace('False', 'false') + # Correctly format JSON to use double quotes and pass directly since template handles quoting + json_str = json_str.replace("'", "\\'") # escape single quotes if any within strings + temp_context[ctx_key] = json_str + + # Render the template + template = env.from_string(template_string) + rendered_template = template.render(temp_context) + + logger.debug(f"(templating.render_inline_template) [{resource_name}] rendered template:\n\n{rendered_template}\n") + return rendered_template + + except TemplateError as e: + raise RuntimeError(f"(templating.render_inline_template) error rendering template for [{resource_name}]: {e}") + except json.JSONDecodeError as e: + # Handle JSON errors more gracefully + logger.warning(f"(templating.render_inline_template) JSON decode error in context for [{resource_name}]: {e}") + # Try rendering anyway, might work with non-JSON parts of the context + template = env.from_string(template_string) + rendered_template = template.render(temp_context) + return rendered_template \ No newline at end of file diff --git a/website/docs/manifest_fields/index.js b/website/docs/manifest_fields/index.js index 43cc158..9609727 100644 --- a/website/docs/manifest_fields/index.js +++ b/website/docs/manifest_fields/index.js @@ -15,6 +15,7 @@ export { default as ResourceProps } from "./resources/props.mdx"; export { default as ResourceProtected } from "./resources/protected.mdx"; export { default as ResourceAuth } from "./resources/auth.mdx"; export { default as ResourceIf } from "./resources/if.mdx"; +export { default as ResourceSql } from "./resources/sql.mdx"; export { default as ResourcePropName } from "./resources/props/name.mdx"; export { default as ResourcePropDescription } from "./resources/props/description.mdx"; export { default as ResourcePropValue } from "./resources/props/value.mdx"; diff --git a/website/docs/manifest_fields/resources.mdx b/website/docs/manifest_fields/resources.mdx index 9248bb0..9b498d5 100644 --- a/website/docs/manifest_fields/resources.mdx +++ b/website/docs/manifest_fields/resources.mdx @@ -13,6 +13,7 @@ import LeftAlignedTable from '@site/src/components/LeftAlignedTable'; { name: 'resource.protected', anchor: 'resourceprotected' }, { name: 'resource.description', anchor: 'resourcedescription' }, { name: 'resource.if', anchor: 'resourceif' }, + { name: 'resource.sql', anchor: 'resourcesql' }, ]} /> diff --git a/website/docs/manifest_fields/resources/sql.mdx b/website/docs/manifest_fields/resources/sql.mdx new file mode 100644 index 0000000..3c2ee32 --- /dev/null +++ b/website/docs/manifest_fields/resources/sql.mdx @@ -0,0 +1,86 @@ +import File from '@site/src/components/File'; +import LeftAlignedTable from '@site/src/components/LeftAlignedTable'; + + + +For `command` type resources, you can include SQL statements directly in your resource manifest using the `sql` key. This allows you to write custom SQL commands without needing a separate IQL file. + + +```yaml {5-11} +resources: + - name: databricks_workspace/unitycatalog/grants + type: command + props: [...] + sql: | + /*+ update */ + UPDATE databricks_workspace.unitycatalog.grants + SET principal = '{{ principal }}', + privileges = {{ privileges }} + WHERE full_name = '{{ full_name }}' AND + securable_type = '{{ securable_type }}' AND + deployment_name = '{{ deployment_name }}'; +``` + + +:::info +- The `sql` key is only supported to `command` type resources +- For command resources, either `sql` or a corresponding IQL file with a `command` anchor must be provided, if `sql` is supplied in the manifest this will be used +- The `sql` key accepts a string containing the SQL statement to execute +- You can use multi-line strings with the YAML pipe (`|`) character for better readability +- Template variables can be referenced using Jinja2 template syntax (`{{ variable }}`) +::: + +## When to Use + +The `sql` key is particularly useful for: + +- Simple commands that don't warrant a separate IQL file +- One-off operations specific to a particular deployment +- Custom operations like granting permissions in Unity Catalog + +## Examples + +### Grant Permissions in Unity Catalog + +```yaml +- name: databricks_workspace/unitycatalog/grants + type: command + props: + - name: full_name + value: "my-storage-credential" + - name: securable_type + value: "storage_credential" + - name: deployment_name + value: "{{ databricks_deployment_name }}" + - name: principal + value: "account users" + - name: privileges + value: + - "CREATE_EXTERNAL_LOCATION" + - "USE" + sql: | + /*+ update */ + UPDATE databricks_workspace.unitycatalog.grants + SET principal = '{{ principal }}', + privileges = {{ privileges }} + WHERE full_name = '{{ full_name }}' AND + securable_type = '{{ securable_type }}' AND + deployment_name = '{{ deployment_name }}'; +``` + +### Run a Custom Query with Conditional Logic + +You can combine the `sql` key with conditional processing: + +```yaml +- name: custom_command + type: command + if: "environment == 'production'" + props: + - name: table_name + value: "{{ stack_name }}_audit_log" + sql: | + /*+ update */ + INSERT INTO {{ table_name }} + VALUES ('{{ stack_name }}', '{{ stack_env }}', '{{ deployment_timestamp }}'); +``` \ No newline at end of file diff --git a/website/docs/manifest_fields/resources/type.mdx b/website/docs/manifest_fields/resources/type.mdx index d31b10c..009b5fc 100644 --- a/website/docs/manifest_fields/resources/type.mdx +++ b/website/docs/manifest_fields/resources/type.mdx @@ -3,7 +3,7 @@ import LeftAlignedTable from '@site/src/components/LeftAlignedTable'; -Resource type, values include : `resource` (default), `query`, `script`, `multi` +Resource type, values include : `resource` (default), `query`, `script`, `multi`, `command` @@ -22,5 +22,6 @@ resources: - `query` is designed to return data using an `exports` method - `script` is used to incorporate an external script in your stack definition (non StackQL query) - `multi` is used when resources are created in a loop (such as creating 3 vms) +- `command` is used to run a command (like an `UPDATE`, `INSERT`) during a `build` operation (which does not export any variables) ::: \ No newline at end of file diff --git a/website/src/pages/index.js b/website/src/pages/index.js index 67388bf..e3c0717 100644 --- a/website/src/pages/index.js +++ b/website/src/pages/index.js @@ -1,10 +1,32 @@ +// import React from 'react'; +// import Head from '@docusaurus/Head'; + +// export default function Home() { +// return ( +// +// +// +// ); +// } + + import React from 'react'; -import Head from '@docusaurus/Head'; +import Layout from '@theme/Layout'; +import useDocusaurusContext from '@docusaurus/useDocusaurusContext'; export default function Home() { + const {siteConfig} = useDocusaurusContext(); + return ( - - - + +

+
+

StackQL Deploy

+

Development Mode

+
+
+ ); -} +} \ No newline at end of file diff --git a/website/static/img/logo-original-OLD.svg b/website/static/img/logo-original-OLD.svg new file mode 100644 index 0000000..1de09ec --- /dev/null +++ b/website/static/img/logo-original-OLD.svg @@ -0,0 +1,3 @@ + + + diff --git a/website/static/img/logo-original.svg b/website/static/img/logo-original.svg index 1de09ec..2dc369d 100644 --- a/website/static/img/logo-original.svg +++ b/website/static/img/logo-original.svg @@ -1,3 +1 @@ - - - + \ No newline at end of file From 97551cc779f4e3605d813feb372020c66eb15d23 Mon Sep 17 00:00:00 2001 From: Jeffrey Aven Date: Mon, 21 Jul 2025 17:15:08 +1000 Subject: [PATCH 05/10] website and example updates --- .../aws/{kms => DELETE_kms}/metastore_key.iql | 0 .../aws/{vpc => DELETE_vpc}/elastic_ip.iql | 0 .../get_main_route_table_id.iql | 0 .../aws/{vpc => DELETE_vpc}/inet_gateway.iql | 0 .../inet_gw_attachment.iql | 0 .../aws/{vpc => DELETE_vpc}/inet_route.iql | 0 .../aws/{vpc => DELETE_vpc}/nat_gateway.iql | 0 .../{vpc => DELETE_vpc}/nat_inet_route.iql | 0 .../aws/{vpc => DELETE_vpc}/route_table.iql | 0 .../{vpc => DELETE_vpc}/security_group.iql | 0 .../security_group_rules.iql | 0 .../aws/{vpc => DELETE_vpc}/subnet.iql | 0 .../{vpc => DELETE_vpc}/subnet_rt_assn.iql | 0 .../tag_main_vpc_route_table.iql | 0 .../resources/aws/{vpc => DELETE_vpc}/vpc.iql | 0 .../aws/{vpc => DELETE_vpc}/vpc_endpoint.iql | 0 .../databricks_account/get_users.iql | 2 +- .../serverless/stackql_manifest.yml | 717 +-- .../snowflake-interoperability/README.md | 245 + .../databricks_account/credentials.iql | 41 + .../databricks_account/get_users.iql | 6 + .../resources/databricks_account/network.iql | 46 + .../storage_configuration.iql | 35 + .../update_group_membership.iql | 6 + .../databricks_account/workspace.iql | 44 + .../databricks_account/workspace_group.iql | 32 + .../workspace_permission_assignments.iql | 32 + .../storage_credential.iql | 43 + .../stackql_manifest.yml | 497 ++ website/docs/index.md | 5 +- website/docusaurus.config.js | 4 +- website/package.json | 10 +- website/src/css/custom.css | 34 +- website/static/img/logo-original-OLD.svg | 3 - website/static/img/logo-original.svg | 1 - website/static/img/logo-white.svg | 3 - .../static/img/stackql-deploy-logo-white.svg | 1 + website/static/img/stackql-deploy-logo.svg | 1 + website/yarn.lock | 4246 ++++++++++++----- 39 files changed, 4147 insertions(+), 1907 deletions(-) rename examples/databricks/serverless/resources/aws/{kms => DELETE_kms}/metastore_key.iql (100%) rename examples/databricks/serverless/resources/aws/{vpc => DELETE_vpc}/elastic_ip.iql (100%) rename examples/databricks/serverless/resources/aws/{vpc => DELETE_vpc}/get_main_route_table_id.iql (100%) rename examples/databricks/serverless/resources/aws/{vpc => DELETE_vpc}/inet_gateway.iql (100%) rename examples/databricks/serverless/resources/aws/{vpc => DELETE_vpc}/inet_gw_attachment.iql (100%) rename examples/databricks/serverless/resources/aws/{vpc => DELETE_vpc}/inet_route.iql (100%) rename examples/databricks/serverless/resources/aws/{vpc => DELETE_vpc}/nat_gateway.iql (100%) rename examples/databricks/serverless/resources/aws/{vpc => DELETE_vpc}/nat_inet_route.iql (100%) rename examples/databricks/serverless/resources/aws/{vpc => DELETE_vpc}/route_table.iql (100%) rename examples/databricks/serverless/resources/aws/{vpc => DELETE_vpc}/security_group.iql (100%) rename examples/databricks/serverless/resources/aws/{vpc => DELETE_vpc}/security_group_rules.iql (100%) rename examples/databricks/serverless/resources/aws/{vpc => DELETE_vpc}/subnet.iql (100%) rename examples/databricks/serverless/resources/aws/{vpc => DELETE_vpc}/subnet_rt_assn.iql (100%) rename examples/databricks/serverless/resources/aws/{vpc => DELETE_vpc}/tag_main_vpc_route_table.iql (100%) rename examples/databricks/serverless/resources/aws/{vpc => DELETE_vpc}/vpc.iql (100%) rename examples/databricks/serverless/resources/aws/{vpc => DELETE_vpc}/vpc_endpoint.iql (100%) create mode 100644 examples/databricks/snowflake-interoperability/README.md create mode 100644 examples/databricks/snowflake-interoperability/resources/databricks_account/credentials.iql create mode 100644 examples/databricks/snowflake-interoperability/resources/databricks_account/get_users.iql create mode 100644 examples/databricks/snowflake-interoperability/resources/databricks_account/network.iql create mode 100644 examples/databricks/snowflake-interoperability/resources/databricks_account/storage_configuration.iql create mode 100644 examples/databricks/snowflake-interoperability/resources/databricks_account/update_group_membership.iql create mode 100644 examples/databricks/snowflake-interoperability/resources/databricks_account/workspace.iql create mode 100644 examples/databricks/snowflake-interoperability/resources/databricks_account/workspace_group.iql create mode 100644 examples/databricks/snowflake-interoperability/resources/databricks_account/workspace_permission_assignments.iql create mode 100644 examples/databricks/snowflake-interoperability/resources/databricks_workspace/storage_credential.iql create mode 100644 examples/databricks/snowflake-interoperability/stackql_manifest.yml delete mode 100644 website/static/img/logo-original-OLD.svg delete mode 100644 website/static/img/logo-original.svg delete mode 100644 website/static/img/logo-white.svg create mode 100644 website/static/img/stackql-deploy-logo-white.svg create mode 100644 website/static/img/stackql-deploy-logo.svg diff --git a/examples/databricks/serverless/resources/aws/kms/metastore_key.iql b/examples/databricks/serverless/resources/aws/DELETE_kms/metastore_key.iql similarity index 100% rename from examples/databricks/serverless/resources/aws/kms/metastore_key.iql rename to examples/databricks/serverless/resources/aws/DELETE_kms/metastore_key.iql diff --git a/examples/databricks/serverless/resources/aws/vpc/elastic_ip.iql b/examples/databricks/serverless/resources/aws/DELETE_vpc/elastic_ip.iql similarity index 100% rename from examples/databricks/serverless/resources/aws/vpc/elastic_ip.iql rename to examples/databricks/serverless/resources/aws/DELETE_vpc/elastic_ip.iql diff --git a/examples/databricks/serverless/resources/aws/vpc/get_main_route_table_id.iql b/examples/databricks/serverless/resources/aws/DELETE_vpc/get_main_route_table_id.iql similarity index 100% rename from examples/databricks/serverless/resources/aws/vpc/get_main_route_table_id.iql rename to examples/databricks/serverless/resources/aws/DELETE_vpc/get_main_route_table_id.iql diff --git a/examples/databricks/serverless/resources/aws/vpc/inet_gateway.iql b/examples/databricks/serverless/resources/aws/DELETE_vpc/inet_gateway.iql similarity index 100% rename from examples/databricks/serverless/resources/aws/vpc/inet_gateway.iql rename to examples/databricks/serverless/resources/aws/DELETE_vpc/inet_gateway.iql diff --git a/examples/databricks/serverless/resources/aws/vpc/inet_gw_attachment.iql b/examples/databricks/serverless/resources/aws/DELETE_vpc/inet_gw_attachment.iql similarity index 100% rename from examples/databricks/serverless/resources/aws/vpc/inet_gw_attachment.iql rename to examples/databricks/serverless/resources/aws/DELETE_vpc/inet_gw_attachment.iql diff --git a/examples/databricks/serverless/resources/aws/vpc/inet_route.iql b/examples/databricks/serverless/resources/aws/DELETE_vpc/inet_route.iql similarity index 100% rename from examples/databricks/serverless/resources/aws/vpc/inet_route.iql rename to examples/databricks/serverless/resources/aws/DELETE_vpc/inet_route.iql diff --git a/examples/databricks/serverless/resources/aws/vpc/nat_gateway.iql b/examples/databricks/serverless/resources/aws/DELETE_vpc/nat_gateway.iql similarity index 100% rename from examples/databricks/serverless/resources/aws/vpc/nat_gateway.iql rename to examples/databricks/serverless/resources/aws/DELETE_vpc/nat_gateway.iql diff --git a/examples/databricks/serverless/resources/aws/vpc/nat_inet_route.iql b/examples/databricks/serverless/resources/aws/DELETE_vpc/nat_inet_route.iql similarity index 100% rename from examples/databricks/serverless/resources/aws/vpc/nat_inet_route.iql rename to examples/databricks/serverless/resources/aws/DELETE_vpc/nat_inet_route.iql diff --git a/examples/databricks/serverless/resources/aws/vpc/route_table.iql b/examples/databricks/serverless/resources/aws/DELETE_vpc/route_table.iql similarity index 100% rename from examples/databricks/serverless/resources/aws/vpc/route_table.iql rename to examples/databricks/serverless/resources/aws/DELETE_vpc/route_table.iql diff --git a/examples/databricks/serverless/resources/aws/vpc/security_group.iql b/examples/databricks/serverless/resources/aws/DELETE_vpc/security_group.iql similarity index 100% rename from examples/databricks/serverless/resources/aws/vpc/security_group.iql rename to examples/databricks/serverless/resources/aws/DELETE_vpc/security_group.iql diff --git a/examples/databricks/serverless/resources/aws/vpc/security_group_rules.iql b/examples/databricks/serverless/resources/aws/DELETE_vpc/security_group_rules.iql similarity index 100% rename from examples/databricks/serverless/resources/aws/vpc/security_group_rules.iql rename to examples/databricks/serverless/resources/aws/DELETE_vpc/security_group_rules.iql diff --git a/examples/databricks/serverless/resources/aws/vpc/subnet.iql b/examples/databricks/serverless/resources/aws/DELETE_vpc/subnet.iql similarity index 100% rename from examples/databricks/serverless/resources/aws/vpc/subnet.iql rename to examples/databricks/serverless/resources/aws/DELETE_vpc/subnet.iql diff --git a/examples/databricks/serverless/resources/aws/vpc/subnet_rt_assn.iql b/examples/databricks/serverless/resources/aws/DELETE_vpc/subnet_rt_assn.iql similarity index 100% rename from examples/databricks/serverless/resources/aws/vpc/subnet_rt_assn.iql rename to examples/databricks/serverless/resources/aws/DELETE_vpc/subnet_rt_assn.iql diff --git a/examples/databricks/serverless/resources/aws/vpc/tag_main_vpc_route_table.iql b/examples/databricks/serverless/resources/aws/DELETE_vpc/tag_main_vpc_route_table.iql similarity index 100% rename from examples/databricks/serverless/resources/aws/vpc/tag_main_vpc_route_table.iql rename to examples/databricks/serverless/resources/aws/DELETE_vpc/tag_main_vpc_route_table.iql diff --git a/examples/databricks/serverless/resources/aws/vpc/vpc.iql b/examples/databricks/serverless/resources/aws/DELETE_vpc/vpc.iql similarity index 100% rename from examples/databricks/serverless/resources/aws/vpc/vpc.iql rename to examples/databricks/serverless/resources/aws/DELETE_vpc/vpc.iql diff --git a/examples/databricks/serverless/resources/aws/vpc/vpc_endpoint.iql b/examples/databricks/serverless/resources/aws/DELETE_vpc/vpc_endpoint.iql similarity index 100% rename from examples/databricks/serverless/resources/aws/vpc/vpc_endpoint.iql rename to examples/databricks/serverless/resources/aws/DELETE_vpc/vpc_endpoint.iql diff --git a/examples/databricks/serverless/resources/databricks_account/get_users.iql b/examples/databricks/serverless/resources/databricks_account/get_users.iql index 2a978d7..e94c2d7 100644 --- a/examples/databricks/serverless/resources/databricks_account/get_users.iql +++ b/examples/databricks/serverless/resources/databricks_account/get_users.iql @@ -2,5 +2,5 @@ SELECT JSON_GROUP_ARRAY(JSON_OBJECT('value', id)) as databricks_workspace_group_members FROM databricks_account.iam.users -WHERE account_id = 'ebfcc5a9-9d49-4c93-b651-b3ee6cf1c9ce' +WHERE account_id = '{{ databricks_account_id }}' AND userName in {{ users | sql_list }}; \ No newline at end of file diff --git a/examples/databricks/serverless/stackql_manifest.yml b/examples/databricks/serverless/stackql_manifest.yml index d709625..02118dd 100644 --- a/examples/databricks/serverless/stackql_manifest.yml +++ b/examples/databricks/serverless/stackql_manifest.yml @@ -426,17 +426,16 @@ resources: - storage_credential_name - storage_credential_external_id - # fix this - name: databricks_workspace/unitycatalog/grants type: command props: - name: privileges value: - "ALL_PRIVILEGES" + - "MANAGE" sql: | UPDATE databricks_workspace.unitycatalog.grants - SET principal = '{{ databricks_group_name }}', - privileges = '{{ privileges }}' + SET data__changes = '[{"add": {{ privileges }},"principal": "{{ databricks_group_name }}"}]' WHERE full_name = '{{ storage_credential_name }}' AND securable_type = 'storage_credential' AND deployment_name = '{{ databricks_deployment_name }}'; @@ -459,715 +458,3 @@ resources: Condition: StringEquals: sts:ExternalId: "{{ storage_credential_external_id }}" - - # - name: databricks_workspace/catalog - # props: - # - name: name - # value: "{{ stack_name }}_{{ stack_env }}_catalog" - # - name: comment - # value: "Main catalog for {{ stack_name }} {{ stack_env }}" - # - name: storage_root - # value: "s3://{{ aws_s3_metastore_bucket_name }}/catalogs/{{ stack_name }}_{{ stack_env }}_catalog" - # - name: provider - # value: "aws" - # - name: properties - # value: - # # Optional catalog properties - # delta.compatibility.break.feature_a: "false" - # delta.compatibility.break.feature_b: "false" - # - name: storage_credential_name - # value: "{{ stack_name }}-{{ stack_env }}-storage-credential" - # exports: - # - catalog_name - - # # Grant access to the catalog - # - name: databricks_workspace/unitycatalog/grants - # type: command - # props: - # - name: full_name - # value: "{{ catalog_name }}" - # - name: securable_type - # value: "catalog" - # - name: deployment_name - # value: "{{ databricks_deployment_name }}" - # - name: principal - # value: "{{ databricks_group_id }}" - # - name: privileges - # value: - # - "USE_CATALOG" - # - "CREATE_SCHEMA" - # - "USE_SCHEMA" - # sql: | - # /*+ update */ - # UPDATE databricks_workspace.unitycatalog.grants - # SET principal = '{{ principal }}', - # privileges = {{ privileges }} - # WHERE full_name = '{{ full_name }}' AND - # securable_type = '{{ securable_type }}' AND - # deployment_name = '{{ deployment_name }}'; - - # # Create a schema (database) in the catalog - # - name: databricks_workspace/schema - # props: - # - name: name - # value: "default" - # - name: catalog_name - # value: "{{ catalog_name }}" - # - name: comment - # value: "Default schema for {{ stack_name }} {{ stack_env }}" - # exports: - # - schema_id - # - schema_full_name - - # # Grant access to the schema - # - name: databricks_workspace/unitycatalog/grants - # type: command - # props: - # - name: full_name - # value: "{{ schema_full_name }}" - # - name: securable_type - # value: "schema" - # - name: deployment_name - # value: "{{ databricks_deployment_name }}" - # - name: principal - # value: "{{ databricks_group_id }}" - # - name: privileges - # value: - # - "USE_SCHEMA" - # - "CREATE_TABLE" - # - "CREATE_FUNCTION" - # - "CREATE_VIEW" - # sql: | - # /*+ update */ - # UPDATE databricks_workspace.unitycatalog.grants - # SET principal = '{{ principal }}', - # privileges = {{ privileges }} - # WHERE full_name = '{{ full_name }}' AND - # securable_type = '{{ securable_type }}' AND - # deployment_name = '{{ deployment_name }}'; - - # # Set this catalog as the default for the workspace - # - name: databricks_workspace/workspace_conf - # props: - # - name: key - # value: "enableUnityCatalogAdminPerms" - # - name: value - # value: "true" - - # - name: databricks_workspace/workspace_conf - # props: - # - name: key - # value: "defaultCatalog" - # - name: value - # value: "{{ catalog_name }}" - - - # create S3 bucket for metastore - # - name: aws/s3/metastore_bucket - # props: - # - name: bucket_name - # value: "{{ stack_name }}-{{ stack_env }}-metastore" - # - name: ownership_controls - # value: - # Rules: - # - ObjectOwnership: "BucketOwnerPreferred" - # - name: bucket_encryption - # value: - # ServerSideEncryptionConfiguration: - # - BucketKeyEnabled: true - # ServerSideEncryptionByDefault: - # SSEAlgorithm: "aws:kms" - # KMSMasterKeyID: "{{ metastore_kms_key_arn }}" - # - name: public_access_block_configuration - # value: - # BlockPublicAcls: true - # IgnorePublicAcls: true - # BlockPublicPolicy: true - # RestrictPublicBuckets: true - # - name: versioning_configuration - # value: - # Status: "Enabled" - # - name: lifecycle_configuration - # value: - # Rules: - # - Id: "DeleteOldVersions" - # Status: "Enabled" - # NoncurrentVersionExpiration: - # NoncurrentDays: 30 - # AbortIncompleteMultipartUpload: - # DaysAfterInitiation: 7 - # - name: logging_configuration - # value: - # TargetBucket: "{{ stack_name }}-{{ stack_env }}-logs" - # TargetPrefix: "s3-access-logs/metastore/" - # - name: tags - # value: - # - Key: Purpose - # Value: "Unity Catalog Metastore" - # - Key: DataClassification - # Value: "Metadata" - # merge: - # - global_tags - # exports: - # - bucket_name: aws_s3_metastore_bucket_name - # - bucket_arn: aws_s3_metastore_bucket_arn - - - - # - # create placeholder role (no policies) - # - - - - # create bucket policy - - # add policies to role - # - name: aws/iam/metastore_access_role - # file: aws/iam/iam_role.iql - # props: - # - name: role_name - # value: "{{ stack_name }}-{{ stack_env }}-metastore-role" - # - name: assume_role_policy_document - # value: - # Version: "2012-10-17" - # Statement: - # - Effect: "Allow" - # Principal: - # AWS: - # - "arn:aws:iam::414351767826:role/unity-catalog-prod-UCMasterRole-14S5ZJVKOTYTL" - # Action: "sts:AssumeRole" - # Condition: - # StringEquals: - # sts:ExternalId: "0000" # Placeholder - # - name: description - # value: 'Unity Catalog metastore access role for ({{ stack_name }}-{{ stack_env }})' - # - name: path - # value: '/' - # - name: policies - # value: - # - PolicyName: "MetastoreS3Access" - # PolicyDocument: - # Version: "2012-10-17" - # Statement: - # - Sid: "S3MetastoreBucketAccess" - # Effect: "Allow" - # Action: - # - "s3:GetObject" - # - "s3:PutObject" - # - "s3:DeleteObject" - # - "s3:ListBucket" - # - "s3:GetBucketLocation" - # - "s3:GetLifecycleConfiguration" - # - "s3:PutLifecycleConfiguration" - # - "s3:ListBucketMultipartUploads" - # - "s3:ListMultipartUploadParts" - # - "s3:AbortMultipartUpload" - # Resource: - # - "{{ aws_s3_metastore_bucket_arn }}/*" - # - "{{ aws_s3_metastore_bucket_arn }}" - # - Sid: "AssumeRoleSelfTrust" - # Effect: "Allow" - # Action: ["sts:AssumeRole"] - # Resource: ["arn:aws:iam::{{ aws_account }}:role/{{ stack_name }}-{{ stack_env }}-metastore-role"] - # - PolicyName: "MetastoreKMSAccess" - # PolicyDocument: - # Version: "2012-10-17" - # Statement: - # - Sid: "KMSKeyAccess" - # Effect: "Allow" - # Action: - # - "kms:Decrypt" - # - "kms:Encrypt" - # - "kms:GenerateDataKey" - # - "kms:DescribeKey" - # - "kms:CreateGrant" - # - "kms:RetireGrant" - # Resource: - # - "{{ metastore_kms_key_arn }}" - # Condition: - # StringEquals: - # "kms:ViaService": "s3.{{ region }}.amazonaws.com" - # - PolicyName: "MetastoreFileEvents" - # PolicyDocument: - # Version: "2012-10-17" - # Statement: - # - Sid: "ManagedFileEventsSetupStatement" - # Effect: "Allow" - # Action: - # - "s3:GetBucketNotification" - # - "s3:PutBucketNotification" - # - "sns:ListSubscriptionsByTopic" - # - "sns:GetTopicAttributes" - # - "sns:SetTopicAttributes" - # - "sns:CreateTopic" - # - "sns:TagResource" - # - "sns:Publish" - # - "sns:Subscribe" - # - "sqs:CreateQueue" - # - "sqs:DeleteMessage" - # - "sqs:ReceiveMessage" - # - "sqs:SendMessage" - # - "sqs:GetQueueUrl" - # - "sqs:GetQueueAttributes" - # - "sqs:SetQueueAttributes" - # - "sqs:TagQueue" - # - "sqs:ChangeMessageVisibility" - # - "sqs:PurgeQueue" - # Resource: - # - "{{ aws_s3_metastore_bucket_arn }}" - # - "arn:aws:sqs:{{ region }}:{{ aws_account }}:csms-*" - # - "arn:aws:sns:{{ region }}:{{ aws_account }}:csms-*" - # - Sid: "ManagedFileEventsListStatement" - # Effect: "Allow" - # Action: ["sqs:ListQueues", "sqs:ListQueueTags", "sns:ListTopics"] - # Resource: "*" - # - Sid: "ManagedFileEventsTeardownStatement" - # Effect: "Allow" - # Action: ["sns:Unsubscribe", "sns:DeleteTopic", "sqs:DeleteQueue"] - # Resource: - # - "arn:aws:sqs:{{ region }}:{{ aws_account }}:csms-*" - # - "arn:aws:sns:{{ region }}:{{ aws_account }}:csms-*" - # - name: tags - # value: - # - Key: Purpose - # Value: "Unity Catalog Storage Credential" - # merge: - # - global_tags - # exports: - # - aws_iam_role_arn: metastore_access_role_arn - - # test role policies - - # - name: databricks_account/metastore - # props: - # - name: name - # value: "{{ stack_name }}-{{ stack_env }}-metastore" - # - name: storage_root - # value: "s3://{{ aws_s3_metastore_bucket_name }}" - # - name: region - # value: "{{ region }}" - # exports: - # - metastore_id: databricks_metastore_id - - # - name: databricks_account/uc_storage_credentials - # props: - # - name: metastore_id - # value: "{{ databricks_metastore_id }}" - # - name: credential_info - # value: - # name: "{{ stack_name }}-{{ stack_env }}-storage-credential" - # comment: "Storage credential for {{ stack_name }} {{ stack_env }} metastore S3 access" - # read_only: false - # aws_iam_role: - # role_arn: "{{ metastore_access_role_arn }}" - # skip_validation: false - # exports: - # - credential_id: storage_credential_id - # - external_id: storage_credential_external_id - - # - name: aws/iam/update_metastore_role_trust_policy - # type: command - # props: - # - name: role_name - # value: "{{ stack_name }}-{{ stack_env }}-metastore-role" - # - name: assume_role_policy_document - # value: - # Version: "2012-10-17" - # Statement: - # - Effect: "Allow" - # Principal: - # AWS: - # - "arn:aws:iam::414351767826:role/unity-catalog-prod-UCMasterRole-14S5ZJVKOTYTL" - # - "arn:aws:iam::{{ aws_account }}:role/{{ stack_name }}-{{ stack_env }}-metastore-role" - # Action: "sts:AssumeRole" - # Condition: - # StringEquals: - # sts:ExternalId: "{{ storage_credential_external_id }}" - - # - name: databricks_account/validate_storage_credential - # type: command - # props: - # - name: credential_id - # value: "{{ storage_credential_id }}" - # - name: metastore_id - # value: "{{ databricks_metastore_id }}" - - # - name: databricks_account/external_location - # props: - # - name: metastore_id - # value: "{{ databricks_metastore_id }}" - # - name: name - # value: "{{ stack_name }}-{{ stack_env }}-metastore-location" - # - name: url - # value: "s3://{{ aws_s3_metastore_bucket_name }}/" - # - name: credential_name - # value: "{{ stack_name }}-{{ stack_env }}-storage-credential" - # - name: comment - # value: "External location for {{ stack_name }} {{ stack_env }} metastore root" - # exports: - # - external_location_id - - # - name: databricks_account/catalog - # props: - # - name: metastore_id - # value: "{{ databricks_metastore_id }}" - # - name: name - # value: "{{ stack_name }}_{{ stack_env }}" - # - name: comment - # value: "Main catalog for {{ stack_name }} {{ stack_env }} environment" - # - name: storage_root - # value: "s3://{{ aws_s3_metastore_bucket_name }}/catalogs/{{ stack_name }}_{{ stack_env }}" - # exports: - # - catalog_id - - # - name: databricks_account/metastore_assignment - # props: - # - name: workspace_id - # value: "{{ databricks_workspace_id }}" - # - name: metastore_id - # value: "{{ databricks_metastore_id }}" - # - name: default_catalog_name - # value: "{{ stack_name }}_{{ stack_env }}" - - # - name: databricks_account/catalog_workspace_binding - # props: - # - name: catalog_name - # value: "{{ stack_name }}_{{ stack_env }}" - # - name: workspace_id - # value: "{{ databricks_workspace_id }}" - - # - name: databricks_account/catalog_permissions - # props: - # - name: catalog_name - # value: "{{ stack_name }}_{{ stack_env }}" - # - name: principal - # value: "{{ databricks_group_id }}" - # - name: privileges - # value: - # - "USE_CATALOG" - # - "CREATE_SCHEMA" - # - "CREATE_TABLE" - # - "CREATE_FUNCTION" - -# ==================================================================================== -# AWS VPC Networking -# ==================================================================================== - - # - name: aws/vpc/vpc - # props: - # - name: cidr_block - # values: - # prd: - # value: "10.53.0.0/16" - # sit: - # value: "10.1.0.0/16" - # dev: - # value: "10.2.0.0/16" - # - name: tags - # value: - # - Key: Name - # Value: "{{ stack_name }}-{{ stack_env }}-vpc" - # merge: - # - global_tags - # - name: idempotency_token - # value: 019447a0-b84a-7b7f-bca5-2ee320207e51 - # exports: - # - vpc_id - - # - name: aws/vpc/nat_subnet - # file: aws/vpc/subnet.iql - # props: - # - name: availability_zone - # value: "us-east-1a" - # - name: cidr_block - # values: - # prd: - # value: "10.53.0.0/24" - # sit: - # value: "10.1.0.0/19" - # dev: - # value: "10.2.0.0/19" - # - name: tags - # value: - # - Key: Name - # Value: "{{ stack_name }}-{{ stack_env }}-nat-subnet" - # merge: - # - global_tags - # exports: - # - subnet_id: nat_subnet_id - - # - name: aws/vpc/cluster_subnet1 - # file: aws/vpc/subnet.iql - # props: - # - name: availability_zone - # value: "us-east-1b" - # - name: cidr_block - # values: - # prd: - # value: "10.53.160.0/19" - # sit: - # value: "10.1.0.0/19" - # dev: - # value: "10.2.0.0/19" - # - name: tags - # value: - # - Key: Name - # Value: "{{ stack_name }}-{{ stack_env }}-subnet-1" - # merge: - # - global_tags - # exports: - # - subnet_id: cluster_subnet1_id - - # - name: aws/vpc/cluster_subnet2 - # file: aws/vpc/subnet.iql - # props: - # - name: availability_zone - # value: "us-east-1c" - # - name: cidr_block - # values: - # prd: - # value: "10.53.192.0/19" - # sit: - # value: "10.1.32.0/19" - # dev: - # value: "10.2.32.0/19" - # - name: tags - # value: - # - Key: Name - # Value: "{{ stack_name }}-{{ stack_env }}-subnet-2" - # merge: - # - global_tags - # exports: - # - subnet_id: cluster_subnet2_id - - # - name: aws/vpc/inet_gateway - # props: - # - name: tags - # value: - # - Key: Name - # Value: "{{ stack_name }}-{{ stack_env }}-inet-gateway" - # merge: ['global_tags'] - # - name: idempotency_token - # value: 019447a5-f076-75f8-9173-092df5a66d35 - # exports: - # - internet_gateway_id - - # - name: aws/vpc/inet_gw_attachment - # props: [] - - # - name: aws/vpc/nat_route_table - # file: aws/vpc/route_table.iql - # props: - # - name: route_table_name - # value: "{{ stack_name }}-{{ stack_env }}-nat-route-table" - # - name: tags - # value: - # - Key: Name - # Value: "{{ stack_name }}-{{ stack_env }}-nat-route-table" - # merge: ['global_tags'] - # exports: - # - route_table_id: nat_route_table_id - - # - name: aws/vpc/nat_route_to_inet - # file: aws/vpc/inet_route.iql - # props: - # - name: route_table_id - # value: "{{ nat_route_table_id }}" - # exports: - # - inet_route_indentifer: nat_inet_route_indentifer - - # - name: aws/vpc/nat_subnet_rt_assn - # file: aws/vpc/subnet_rt_assn.iql - # props: - # - name: subnet_id - # value: "{{ nat_subnet_id }}" - # - name: route_table_id - # value: "{{ nat_route_table_id }}" - # - name: idempotency_token - # value: 3eaf3040-1c8e-41a6-8be6-512ccaf5ff4e - # exports: - # - route_table_assn_id: nat_subnet_rt_assn_id - - # - name: aws/vpc/private_route_table - # file: aws/vpc/route_table.iql - # props: - # - name: route_table_name - # value: "{{ stack_name }}-{{ stack_env }}-private-route-table" - # - name: tags - # value: - # - Key: Name - # Value: "{{ stack_name }}-{{ stack_env }}-private-route-table" - # merge: ['global_tags'] - # exports: - # - route_table_id: private_route_table_id - - # - name: aws/vpc/subnet_rt_assn1 - # file: aws/vpc/subnet_rt_assn.iql - # props: - # - name: route_table_id - # value: "{{ private_route_table_id }}" - # - name: subnet_id - # value: "{{ cluster_subnet1_id }}" - # - name: idempotency_token - # value: 019447aa-1c7a-775b-91dc-04db7c49f4a7 - # exports: - # - route_table_assn_id: cluster_subnet1_rt_assn_id - - # - name: aws/vpc/subnet_rt_assn2 - # file: aws/vpc/subnet_rt_assn.iql - # props: - # - name: route_table_id - # value: "{{ private_route_table_id }}" - # - name: subnet_id - # value: "{{ cluster_subnet2_id }}" - # - name: idempotency_token - # value: c19c9077-c25d-46a4-a299-7bd93d773e58 - # exports: - # - route_table_assn_id: cluster_subnet2_rt_assn_id - - # - name: aws/vpc/elastic_ip - # props: - # - name: tags - # value: - # - Key: Name - # Value: "{{ stack_name }}-{{ stack_env }}-eip" - # merge: ['global_tags'] - # - name: idempotency_token - # value: 01945908-b80d-7e51-b52c-5e93dea9cbdb - # exports: - # - eip_allocation_id - # - eip_public_id - - # - name: aws/vpc/nat_gateway - # props: - # - name: tags - # value: - # - Key: Name - # Value: "{{ stack_name }}-{{ stack_env }}-nat-gateway" - # merge: ['global_tags'] - # - name: idempotency_token - # value: 019447a5-f076-75f8-9173-092df5a66d35 - # exports: - # - nat_gateway_id - - # - name: aws/vpc/nat_inet_route - # props: - # - name: route_table_id - # value: "{{ private_route_table_id }}" - # - name: nat_gateway_id - # value: "{{ nat_gateway_id }}" - # exports: - # - nat_inet_route_indentifer - - # - name: aws/vpc/security_group - # props: - # - name: group_name - # value: "{{ stack_name }}-{{ stack_env }}-sg" - # - name: group_description - # value: "security group for {{ stack_name }} ({{ stack_env }} environment)" - # - name: tags - # value: - # - Key: Name - # Value: "{{ stack_name }}-{{ stack_env }}-sg" - # merge: ['global_tags'] - # exports: - # - security_group_id - - # - name: aws/vpc/security_group_rules - # props: - # - name: security_group_ingress - # value: - # - FromPort: 0 - # ToPort: 65535 - # SourceSecurityGroupOwnerId: "{{ aws_account }}" - # IpProtocol: tcp - # SourceSecurityGroupId: "{{ security_group_id }}" - # - FromPort: 0 - # ToPort: 65535 - # SourceSecurityGroupOwnerId: "{{ aws_account }}" - # IpProtocol: "udp" - # SourceSecurityGroupId: "{{ security_group_id }}" - # - CidrIp: "3.237.73.224/28" - # FromPort: 443 - # ToPort: 443 - # IpProtocol: "tcp" - # - CidrIp: "54.156.226.103/32" - # FromPort: 443 - # ToPort: 443 - # IpProtocol: "tcp" - # - name: security_group_egress - # value: - # - FromPort: 0 - # ToPort: 65535 - # IpProtocol: "tcp" - # DestinationSecurityGroupId: "{{ security_group_id }}" - # Description: "Allow all TCP outbound access to the same security group" - # - CidrIp: "0.0.0.0/0" - # Description: Allow all outbound traffic - # FromPort: -1 - # ToPort: -1 - # IpProtocol: "-1" - # - CidrIp: "0.0.0.0/0" - # FromPort: 3306 - # ToPort: 3306 - # IpProtocol: "tcp" - # Description: "Allow accessing the Databricks metastore" - # - FromPort: 0 - # ToPort: 65535 - # IpProtocol: "udp" - # DestinationSecurityGroupId: "{{ security_group_id }}" - # Description: "Allow all UDP outbound access to the same security group" - # - CidrIp: "0.0.0.0/0" - # FromPort: 443 - # ToPort: 443 - # IpProtocol: "tcp" - # Description: "Allow accessing Databricks infrastructure, cloud data sources, and library repositories" - - # - name: databricks_account/network - # props: - # - name: databricks_network_name - # value: "{{ stack_name }}-{{ stack_env }}-network" - # - name: subnet_ids - # value: - # - "{{ cluster_subnet1_id }}" - # - "{{ cluster_subnet2_id }}" - # - name: security_group_ids - # value: - # - "{{ security_group_id }}" - # exports: - # - databricks_network_id - - # - name: databricks_workspace/all_purpose_cluster - # props: - # - name: cluster_name - # value: single-user-single-node-cluster - # - name: num_workers - # value: 0 - # - name: is_single_node - # value: true - # - name: kind - # value: CLASSIC_PREVIEW - # - name: spark_version - # value: 15.4.x-scala2.12 - # - name: node_type_id - # value: m7g.large - # - name: data_security_mode - # value: SINGLE_USER - # - name: runtime_engine - # value: PHOTON - # - name: single_user_name - # value: javen@stackql.io - # - name: aws_attributes - # value: - # ebs_volume_count: 1 - # ebs_volume_size: 100 - # - name: custom_tags - # description: Additional tags for cluster resources (max 45 tags) - # value: - # Provisioner: stackql - # StackName: "{{ stack_name }}" - # StackEnv: "{{ stack_env }}" - # exports: - # - databricks_cluster_id - # - databricks_cluster_state diff --git a/examples/databricks/snowflake-interoperability/README.md b/examples/databricks/snowflake-interoperability/README.md new file mode 100644 index 0000000..409894d --- /dev/null +++ b/examples/databricks/snowflake-interoperability/README.md @@ -0,0 +1,245 @@ +# `stackql-deploy` example project for `databricks` + +This exercise is to bootstrap a databricks / aws tenancy using `stackql-deploy`. It is an important use case for platform bootstrap and we are excited to perform it with the `stackql` toolchain. We hope you enjoy and find this valuable. Please drop us a note with your forthright opinion on this and check out our issues on github. + +## A word of caution + +Please take the greatest care in performing this exercise; it will incur expenses, as it involves creating (and destroying) resources which cost money. Please be aware that you **must** cancel your databricks subscription after completing this exercise, otherwise you will incur ongoing expenses. That is, do **not** skip the section [Cancel databricks subscription](#cancel-databricks-subsription). We strongly advise that you verify all resources are destroyed at the conclusion of this exercise. Web pages and certain behaviours may change, so please be thorough in your verification. We will keep this page up-to-date on a best effort basis only. It is very much a case of owner onus applies. + +## Manual Setup + +Dependencies: + +- aws Account Created. +- Required clickops to set up databricks on aws: + - Turn on aws Marketplace `databricks` offering, using [the aws manage subscriptions page](https://console.aws.amazon.com/marketplace/home#/subscriptions), per Figure S1. + - Follow the suggested setup flow as directed, from this page. These clickops steps are necessary at this time for initial account setup. The way I followed this, it created a workspace for me at setup, per Figure S3. We shall not use this one and rather, later on we shall dispose of it; because we do not trust auto-created resources out of hand. In the process of creating the databricks subscription, a second aws account is created. + - Copy the databricks account id from basically any web page in the databricks console. This is done by clicking on the user icon at the top RHS and then the UI provides a copy shortcut, per Fugure U1. Save this locally for later use, expanded below. + - We need the aws account id that was created for the databricks subscription. It is not exactly heralded by the web pages, nor is it actively hidden. It can be captured in a couple of places, including the databricks storage account creatted in the subscription flow, per Figure XA1. copy and save this locally for later use, expanded below. + - Create a service principal to use as a "CICD agent", using the page shown in Figure S4. + - Grant the CICD agent account admin role, using the page shown in Figure S5. + - Create a secret for the CICD agent, using the page shown in Figure S6. At the time you create this, you will need to safely store the client secret and client id, as prompted by the web page. These will be used below. +- Setup your virtual environment, from the root of this repository `cicd/setup/setup-env.sh`. + +Now, is is convenient to use environment variables for context. Note that for our example, there is only one aws account apropos, however this is not always the case for an active professional, so while `DATABRICKS_AWS_ACCOUNT_ID` is the same as `AWS_ACCOUNT_ID` here, it need not always be the case. Create a file in the path `examples/databricks/serverless/sec/env.sh` (relative to the root of this repository) with contents of the form: + +```bash +#!/usr/bin/env bash + +export AWS_REGION='us-east-1' # or wherever you want +export AWS_ACCOUNT_ID='' +export DATABRICKS_ACCOUNT_ID='' +export DATABRICKS_AWS_ACCOUNT_ID='' + +# These need to be created by clickops under [the account level user managment page](https://accounts.cloud.databricks.com/user-management). +export DATABRICKS_CLIENT_ID='' +export DATABRICKS_CLIENT_SECRET='' + +## These can be skipped if you run on [aws cloud shell](https://docs.aws.amazon.com/cloudshell/latest/userguide/welcome.html). +export AWS_SECRET_ACCESS_KEY='' +export AWS_ACCESS_KEY_ID='' + +``` + +## Optional step: sanity checks with stackql + +Now, let us do some sanity checks and housekeeping with `stackql`. This is purely optional. From the root of this repository: + +``` +source examples/databricks/serverless/convenience.sh +stackql shell +``` + +This will start a `stackql` interactive shell. Here are some commands you can run (I will not place output here, that will be shared in a corresponding video): + + +```sql +registry pull databricks_account v24.12.00279; +registry pull databricks_workspace v24.12.00279; + +-- This will fail if accounts, subscription, or credentials are in error. +select account_id FROM databricks_account.provisioning.credentials WHERE account_id = ''; +select account_id, workspace_name, workspace_id, workspace_status from databricks_account.provisioning.workspaces where account_id = ''; +``` + +For extra credit, you can (asynchronously) delete the unnecessary workspace with `delete from databricks_account.provisioning.workspaces where account_id = '' and workspace_id = '';`, where you obtain the workspace id from the above query. I have noted that due to some reponse caching it takes a while to disappear from select queries (much longer than disappearance from the web page), and you may want to bounce the `stackql` session to hurry things along. This is not happening on the `stackql` side, but session bouncing forces a token refresh which can help cache busting. + +## Lifecycle management + +Time to get down to business. From the root of this repository: + +```bash +python3 -m venv myenv +source examples/databricks/serverless/convenience.sh +source venv/bin/activate +pip install stackql-deploy +``` + +> alternatively set the `AWS_REGION`, `AWS_ACCOUNT_ID`, `DATABRICKS_ACCOUNT_ID`, `DATABRICKS_AWS_ACCOUNT_ID` along with provider credentials `AWS_ACCESS_KEY_ID`, `AWS_SECRET_ACCESS_KEY`, `DATABRICKS_CLIENT_ID`, `DATABRICKS_CLIENT_SECRET` + +Then, do a dry run (good for catching **some** environmental issues): + +```bash +stackql-deploy build \ +examples/databricks/serverless dev \ +-e AWS_REGION=${AWS_REGION} \ +-e AWS_ACCOUNT_ID=${AWS_ACCOUNT_ID} \ +-e DATABRICKS_ACCOUNT_ID=${DATABRICKS_ACCOUNT_ID} \ +-e DATABRICKS_AWS_ACCOUNT_ID=${DATABRICKS_AWS_ACCOUNT_ID} \ +--dry-run +``` + +You will see a verbose rendition of what `stackql-deploy` intends to do. + + +Now, let use do it for real: + +```bash +stackql-deploy build \ +examples/databricks/serverless dev \ +-e AWS_REGION=${AWS_REGION} \ +-e AWS_ACCOUNT_ID=${AWS_ACCOUNT_ID} \ +-e DATABRICKS_ACCOUNT_ID=${DATABRICKS_ACCOUNT_ID} \ +-e DATABRICKS_AWS_ACCOUNT_ID=${DATABRICKS_AWS_ACCOUNT_ID} \ +--show-queries +``` + +The output is quite verbose, concludes in: + +``` +2025-02-08 12:51:25,914 - stackql-deploy - INFO - 📤 set [databricks_workspace_id] to [482604062392118] in exports +2025-02-08 12:51:25,915 - stackql-deploy - INFO - ✅ successfully deployed databricks_workspace +2025-02-08 12:51:25,915 - stackql-deploy - INFO - deployment completed in 0:04:09.603631 +🚀 build complete +``` + +Success!!! + +We can also use `stackql-deploy` to assess if our infra is shipshape: + +```bash +stackql-deploy test \ +examples/databricks/serverless dev \ +-e AWS_REGION=${AWS_REGION} \ +-e AWS_ACCOUNT_ID=${AWS_ACCOUNT_ID} \ +-e DATABRICKS_ACCOUNT_ID=${DATABRICKS_ACCOUNT_ID} \ +-e DATABRICKS_AWS_ACCOUNT_ID=${DATABRICKS_AWS_ACCOUNT_ID} \ +--show-queries +``` + +Again, the output is quite verbose, concludes in: + +``` +2025-02-08 13:15:45,821 - stackql-deploy - INFO - 📤 set [databricks_workspace_id] to [482604062392118] in exports +2025-02-08 13:15:45,821 - stackql-deploy - INFO - ✅ test passed for databricks_workspace +2025-02-08 13:15:45,821 - stackql-deploy - INFO - deployment completed in 0:02:30.255860 +🔍 tests complete (dry run: False) +``` + +Success!!! + +Now, let us teardown our `stackql-deploy` managed infra: + +```bash +stackql-deploy teardown \ +examples/databricks/serverless dev \ +-e AWS_REGION=${AWS_REGION} \ +-e AWS_ACCOUNT_ID=${AWS_ACCOUNT_ID} \ +-e DATABRICKS_ACCOUNT_ID=${DATABRICKS_ACCOUNT_ID} \ +-e DATABRICKS_AWS_ACCOUNT_ID=${DATABRICKS_AWS_ACCOUNT_ID} \ +--show-queries +``` + +Takes its time, again verbose, concludes in: + +``` +2025-02-08 13:24:17,941 - stackql-deploy - INFO - ✅ successfully deleted AWS_iam_cross_account_role +2025-02-08 13:24:17,942 - stackql-deploy - INFO - deployment completed in 0:03:21.191788 +🚧 teardown complete (dry run: False) +``` + +Success!!! + +## Optional step: verify destruction with stackql + +Now, let us do some sanity checks and housekeeping with `stackql`. This is purely optional. From the root of this repository: + +``` + +source examples/databricks/serverless/convenience.sh + +stackql shell + +``` + +This will start a `stackql` interactive shell. Here are some commands you can run (I will not place output here): + + +```sql + +registry pull databricks_account v24.12.00279; + +registry pull databricks_workspace v24.12.00279; + + + +select account_id, workspace_name, workspace_id, workspace_status from databricks_account.provisioning.workspaces where account_id = ''; + +``` + +## Cancel databricks subsription + +This is **very** important. + +Go to [the aws Marketplace manage subscriptions page](https://console.aws.amazon.com/marketplace/home#/subscriptions), navigate to databricks and then cancel the subscription. + +## Figures + + +![Create aws databricks subscription](/examples/databricks/serverless/assets/create-aws-databricks-subscription.png) + +**Figure S1**: Create aws databricks subscription. + +--- + +![Awaiting aws databricks subscription resources](/examples/databricks/serverless/assets/awaiting-subscription-resources.png) + +**Figure S2**: Awaiting aws databricks subscription resources. + +--- + +![Auto provisioned workspace](/examples/databricks/serverless/assets/auto-provisioned-worskpace.png) + +**Figure S3**: Auto provisioned workspace. + +--- + +![Capture databricks account id](/examples/databricks/serverless/assets/capture-databricks-account-id.png) + +**Figure U1**: Capture databricks account id. + +--- + +![Capture cross databricks aws account id](/examples/databricks/serverless/assets/capture-cross-databricks-aws-account-id.png) + +**Figure XA1**: Capture cross databricks aws account id. + +--- + +![Create CICD agent](/examples/databricks/serverless/assets/create-cicd-agent.png) + +**Figure S4**: Create CICD agent. + +--- + +![Grant account admin to CICD agent](/examples/databricks/serverless/assets/grant-account-admin-cicd-agent.png) + +**Figure S5**: Grant account admin to CICD agent. + +--- + +![Generate secret for CICD agent](/examples/databricks/serverless/assets/generate-secret-ui.png) + +**Figure S6**: Generate secret for CICD agent. + +--- diff --git a/examples/databricks/snowflake-interoperability/resources/databricks_account/credentials.iql b/examples/databricks/snowflake-interoperability/resources/databricks_account/credentials.iql new file mode 100644 index 0000000..c0d8327 --- /dev/null +++ b/examples/databricks/snowflake-interoperability/resources/databricks_account/credentials.iql @@ -0,0 +1,41 @@ +/*+ exists */ +SELECT COUNT(*) as count +FROM databricks_account.provisioning.credentials +WHERE account_id = '{{ databricks_account_id }}' +AND credentials_name = '{{ credentials_name }}' + +/*+ create */ +INSERT INTO databricks_account.provisioning.credentials ( +account_id, +data__credentials_name, +data__aws_credentials +) +SELECT +'{{ databricks_account_id }}', +'{{ credentials_name }}', +'{{ aws_credentials }}' + +/*+ statecheck, retries=3, retry_delay=5 */ +SELECT COUNT(*) as count FROM +( +SELECT +credentials_id +FROM databricks_account.provisioning.credentials +WHERE account_id = '{{ databricks_account_id }}' +AND credentials_name = '{{ credentials_name }}' +AND JSON_EXTRACT(aws_credentials, '$.sts_role.role_arn') = '{{ aws_iam_cross_account_role_arn }}' +) t + +/*+ exports */ +SELECT +'{{ credentials_name }}' as databricks_credentials_name, +credentials_id as databricks_credentials_id, +JSON_EXTRACT(aws_credentials, '$.sts_role.external_id') as databricks_role_external_id +FROM databricks_account.provisioning.credentials +WHERE account_id = '{{ databricks_account_id }}' +AND credentials_name = '{{ credentials_name }}' + +/*+ delete */ +DELETE FROM databricks_account.provisioning.credentials +WHERE account_id = '{{ databricks_account_id }}' AND +credentials_id = '{{ databricks_credentials_id }}'; \ No newline at end of file diff --git a/examples/databricks/snowflake-interoperability/resources/databricks_account/get_users.iql b/examples/databricks/snowflake-interoperability/resources/databricks_account/get_users.iql new file mode 100644 index 0000000..e94c2d7 --- /dev/null +++ b/examples/databricks/snowflake-interoperability/resources/databricks_account/get_users.iql @@ -0,0 +1,6 @@ +/*+ exports, retries=3, retry_delay=5 */ +SELECT +JSON_GROUP_ARRAY(JSON_OBJECT('value', id)) as databricks_workspace_group_members +FROM databricks_account.iam.users +WHERE account_id = '{{ databricks_account_id }}' +AND userName in {{ users | sql_list }}; \ No newline at end of file diff --git a/examples/databricks/snowflake-interoperability/resources/databricks_account/network.iql b/examples/databricks/snowflake-interoperability/resources/databricks_account/network.iql new file mode 100644 index 0000000..45e0b0a --- /dev/null +++ b/examples/databricks/snowflake-interoperability/resources/databricks_account/network.iql @@ -0,0 +1,46 @@ +/*+ exists */ +SELECT COUNT(*) as count +FROM databricks_account.provisioning.networks +WHERE account_id = '{{ databricks_account_id }}' +AND network_name = '{{ databricks_network_name }}' + +/*+ create */ +INSERT INTO databricks_account.provisioning.networks ( +account_id, +data__network_name, +data__vpc_id, +data__subnet_ids, +data__security_group_ids +) +SELECT +'{{ databricks_account_id }}', +'{{ databricks_network_name }}', +'{{ vpc_id }}', +'{{ subnet_ids }}', +'{{ security_group_ids }}' + +/*+ statecheck, retries=3, retry_delay=5 */ +SELECT COUNT(*) as count FROM +( +SELECT +JSON_EQUAL(subnet_ids, '{{ subnet_ids }}') as subnet_test, +JSON_EQUAL(security_group_ids, '{{ security_group_ids }}') as sg_test +FROM databricks_account.provisioning.networks +WHERE account_id = '{{ databricks_account_id }}' +AND network_name = '{{ databricks_network_name }}' +AND vpc_id = '{{ vpc_id }}' +AND subnet_test = 1 +AND sg_test = 1 +)t + +/*+ exports */ +SELECT +network_id as databricks_network_id +FROM databricks_account.provisioning.networks +WHERE account_id = '{{ databricks_account_id }}' AND +network_name = '{{ databricks_network_name }}' + +/*+ delete */ +DELETE FROM databricks_account.provisioning.networks +WHERE account_id = '{{ databricks_account_id }}' AND +network_id = '{{ databricks_network_id }}' \ No newline at end of file diff --git a/examples/databricks/snowflake-interoperability/resources/databricks_account/storage_configuration.iql b/examples/databricks/snowflake-interoperability/resources/databricks_account/storage_configuration.iql new file mode 100644 index 0000000..4e60cfc --- /dev/null +++ b/examples/databricks/snowflake-interoperability/resources/databricks_account/storage_configuration.iql @@ -0,0 +1,35 @@ +/*+ exists */ +SELECT COUNT(*) as count +FROM databricks_account.provisioning.storage +WHERE account_id = '{{ databricks_account_id }}' +AND storage_configuration_name = '{{ storage_configuration_name }}' + +/*+ create */ +INSERT INTO databricks_account.provisioning.storage ( +account_id, +data__storage_configuration_name, +data__root_bucket_info +) +SELECT +'{{ databricks_account_id }}', +'{{ storage_configuration_name }}', +'{{ root_bucket_info }}' + +/*+ statecheck, retries=3, retry_delay=5 */ +SELECT COUNT(*) as count +FROM databricks_account.provisioning.storage +WHERE account_id = '{{ databricks_account_id }}' +AND storage_configuration_name = '{{ storage_configuration_name }}' +AND JSON_EXTRACT(root_bucket_info, '$.bucket_name') = '{{ aws_s3_workspace_bucket_name }}' + +/*+ exports */ +SELECT +storage_configuration_id as databricks_storage_configuration_id +FROM databricks_account.provisioning.storage +WHERE account_id = '{{ databricks_account_id }}' +AND storage_configuration_name = '{{ storage_configuration_name }}' + +/*+ delete */ +DELETE FROM databricks_account.provisioning.storage +WHERE account_id = '{{ databricks_account_id }}' AND +storage_configuration_id = '{{ databricks_storage_configuration_id }}' \ No newline at end of file diff --git a/examples/databricks/snowflake-interoperability/resources/databricks_account/update_group_membership.iql b/examples/databricks/snowflake-interoperability/resources/databricks_account/update_group_membership.iql new file mode 100644 index 0000000..375d926 --- /dev/null +++ b/examples/databricks/snowflake-interoperability/resources/databricks_account/update_group_membership.iql @@ -0,0 +1,6 @@ +/*+ command */ +update databricks_account.iam.groups +set data__schemas = '["urn:ietf:params:scim:api:messages:2.0:PatchOp"]', +data__Operations = '[{"op": "replace", "path": "members", "value": {{ databricks_workspace_group_members }} }]' +WHERE account_id = '{{ databricks_account_id }}' +AND id = '{{ databricks_group_id }}'; diff --git a/examples/databricks/snowflake-interoperability/resources/databricks_account/workspace.iql b/examples/databricks/snowflake-interoperability/resources/databricks_account/workspace.iql new file mode 100644 index 0000000..9da2dea --- /dev/null +++ b/examples/databricks/snowflake-interoperability/resources/databricks_account/workspace.iql @@ -0,0 +1,44 @@ +/*+ exists */ +SELECT COUNT(*) as count +FROM databricks_account.provisioning.workspaces +WHERE account_id = '{{ databricks_account_id }}' +AND workspace_name = '{{ workspace_name }}' + +/*+ create */ +INSERT INTO databricks_account.provisioning.workspaces ( +account_id, +data__workspace_name, +data__aws_region, +data__credentials_id, +data__storage_configuration_id, +data__pricing_tier +) +SELECT +'{{ databricks_account_id }}', +'{{ workspace_name }}', +'{{ aws_region }}', +'{{ credentials_id }}', +'{{ storage_configuration_id }}', +'{{ pricing_tier }}' + +/*+ statecheck, retries=3, retry_delay=5 */ +SELECT COUNT(*) as count +FROM databricks_account.provisioning.workspaces +WHERE account_id = '{{ databricks_account_id }}' +AND workspace_name = '{{ workspace_name }}' +AND aws_region = '{{ aws_region }}' +AND credentials_id = '{{ credentials_id }}' +AND storage_configuration_id = '{{ storage_configuration_id }}' +AND pricing_tier = '{{ pricing_tier }}' + +/*+ exports */ +SELECT workspace_id AS databricks_workspace_id, +deployment_name AS databricks_deployment_name +FROM databricks_account.provisioning.workspaces +WHERE account_id = '{{ databricks_account_id }}' +AND workspace_name = '{{ workspace_name }}' + +/*+ delete */ +DELETE FROM databricks_account.provisioning.workspaces +WHERE account_id = '{{ databricks_account_id }}' AND +workspace_id = '{{ databricks_workspace_id }}' \ No newline at end of file diff --git a/examples/databricks/snowflake-interoperability/resources/databricks_account/workspace_group.iql b/examples/databricks/snowflake-interoperability/resources/databricks_account/workspace_group.iql new file mode 100644 index 0000000..733b6f4 --- /dev/null +++ b/examples/databricks/snowflake-interoperability/resources/databricks_account/workspace_group.iql @@ -0,0 +1,32 @@ +/*+ exists */ +SELECT COUNT(*) as count +FROM databricks_account.iam.groups +WHERE account_id = '{{ databricks_account_id }}' +AND displayName = '{{ display_name }}' + +/*+ create */ +INSERT INTO databricks_account.iam.groups ( +account_id, +data__displayName +) +SELECT +'{{ databricks_account_id }}', +'{{ display_name }}' + +/*+ statecheck, retries=3, retry_delay=5 */ +SELECT COUNT(*) as count +FROM databricks_account.iam.groups +WHERE account_id = '{{ databricks_account_id }}' +AND displayName = '{{ display_name }}' + +/*+ exports */ +SELECT id AS databricks_group_id, +displayName AS databricks_group_name +FROM databricks_account.iam.groups +WHERE account_id = '{{ databricks_account_id }}' +AND displayName = '{{ display_name }}' + +/*+ delete */ +DELETE FROM databricks_account.iam.groups +WHERE account_id = '{{ databricks_account_id }}' AND +id = '{{ databricks_group_id }}'; \ No newline at end of file diff --git a/examples/databricks/snowflake-interoperability/resources/databricks_account/workspace_permission_assignments.iql b/examples/databricks/snowflake-interoperability/resources/databricks_account/workspace_permission_assignments.iql new file mode 100644 index 0000000..00387e3 --- /dev/null +++ b/examples/databricks/snowflake-interoperability/resources/databricks_account/workspace_permission_assignments.iql @@ -0,0 +1,32 @@ +/*+ exists */ +SELECT COUNT(*) as count +FROM databricks_account.iam.workspace_permission_assignments +WHERE account_id = '{{ databricks_account_id }}' AND +workspace_id = '{{ databricks_workspace_id }}' +AND JSON_EXTRACT(principal, '$.principal_id') = {{ databricks_group_id }} + +/*+ createorupdate */ +INSERT INTO databricks_account.iam.workspace_permission_assignments ( +account_id, +principal_id, +workspace_id, +data__permissions +) +SELECT +'{{ databricks_account_id }}', +'{{ databricks_group_id }}', +'{{ databricks_workspace_id }}', +'["ADMIN"]' + +/*+ statecheck, retries=3, retry_delay=5 */ +SELECT COUNT(*) as count +FROM databricks_account.iam.workspace_permission_assignments +WHERE account_id = '{{ databricks_account_id }}' AND +workspace_id = '{{ databricks_workspace_id }}' +AND JSON_EXTRACT(principal, '$.principal_id') = {{ databricks_group_id }} + +/*+ delete */ +DELETE FROM databricks_account.iam.workspace_permission_assignments +WHERE account_id = '{{ databricks_account_id }}' AND +principal_id = '{{ databricks_group_id }}' AND +workspace_id = '{{ databricks_workspace_id }}' \ No newline at end of file diff --git a/examples/databricks/snowflake-interoperability/resources/databricks_workspace/storage_credential.iql b/examples/databricks/snowflake-interoperability/resources/databricks_workspace/storage_credential.iql new file mode 100644 index 0000000..b63f288 --- /dev/null +++ b/examples/databricks/snowflake-interoperability/resources/databricks_workspace/storage_credential.iql @@ -0,0 +1,43 @@ +/*+ exists */ +SELECT COUNT(*) as count +FROM databricks_workspace.unitycatalog.storage_credentials +WHERE name = '{{ name | replace('-', '_') | upper }}' AND +deployment_name = '{{ databricks_deployment_name }}'; + +/*+ create */ +INSERT INTO databricks_workspace.unitycatalog.storage_credentials ( +deployment_name, +data__name, +data__comment, +data__read_only, +data__aws_iam_role, +data__skip_validation +) +SELECT +'{{ databricks_deployment_name }}', +'{{ name | replace('-', '_') | upper }}', +'{{ comment }}', +'{{ read_only }}', +'{{ aws_iam_role }}', +'{{ skip_validation }}' +; + +/*+ statecheck, retries=3, retry_delay=5 */ +SELECT COUNT(*) as count +FROM databricks_workspace.unitycatalog.storage_credentials +WHERE name = '{{ name | replace('-', '_') | upper }}' AND +deployment_name = '{{ databricks_deployment_name }}' AND +JSON_EXTRACT(aws_iam_role, '$.role_arn') = '{{ metastore_access_role_arn }}'; + +/*+ exports */ +SELECT +name as storage_credential_name, +JSON_EXTRACT(aws_iam_role, '$.external_id') as storage_credential_external_id +FROM databricks_workspace.unitycatalog.storage_credentials +WHERE name = '{{ name | replace('-', '_') | upper }}' AND +deployment_name = '{{ databricks_deployment_name }}'; + +/*+ delete */ +DELETE FROM databricks_workspace.unitycatalog.storage_credentials +WHERE name = '{{ name | replace('-', '_') | upper }}' AND +deployment_name = '{{ databricks_deployment_name }}'; \ No newline at end of file diff --git a/examples/databricks/snowflake-interoperability/stackql_manifest.yml b/examples/databricks/snowflake-interoperability/stackql_manifest.yml new file mode 100644 index 0000000..791062b --- /dev/null +++ b/examples/databricks/snowflake-interoperability/stackql_manifest.yml @@ -0,0 +1,497 @@ +version: 1 +name: "snowflake-interoperability" +description: "Databricks Snowflake Interoperability Example" +providers: + - snowflake + - databricks_account + - databricks_workspace +globals: + - name: databricks_account_id + description: databricks account id + value: "{{ DATABRICKS_ACCOUNT_ID }}" + - name: snowflake_org + description: snowflake org + value: "{{ SNOWFLAKE_ORG }}" + - name: snowflake_account + description: snowflake account + value: "{{ SNOWFLAKE_ACCOUNT }}" + - name: global_tags + value: + - Key: Provisioner + Value: stackql + - Key: StackName + Value: "{{ stack_name }}" + - Key: StackEnv + Value: "{{ stack_env }}" +resources: + +# ==================================================================================== +# IAM and Cloud Credentials +# ==================================================================================== + + - name: aws/iam/cross_account_role + file: aws/iam/iam_role.iql + props: + - name: role_name + value: "{{ stack_name }}-{{ stack_env }}-role" + - name: assume_role_policy_document + value: + Version: "2012-10-17" + Statement: + - Sid: "" + Effect: "Allow" + Principal: + AWS: "arn:aws:iam::{{ databricks_aws_account_id }}:root" + Action: "sts:AssumeRole" + Condition: + StringEquals: + sts:ExternalId: "{{ databricks_account_id }}" + - name: description + value: 'allows Databricks to access resources in ({{ stack_name }}-{{ stack_env }})' + - name: path + value: '/' + - name: policies + value: + - PolicyDocument: + Statement: + - Sid: Stmt1403287045000 + Effect: Allow + Action: + - "ec2:AllocateAddress" + - "ec2:AssociateDhcpOptions" + - "ec2:AssociateIamInstanceProfile" + - "ec2:AssociateRouteTable" + - "ec2:AttachInternetGateway" + - "ec2:AttachVolume" + - "ec2:AuthorizeSecurityGroupEgress" + - "ec2:AuthorizeSecurityGroupIngress" + - "ec2:CancelSpotInstanceRequests" + - "ec2:CreateDhcpOptions" + - "ec2:CreateInternetGateway" + - "ec2:CreateKeyPair" + - "ec2:CreateNatGateway" + - "ec2:CreatePlacementGroup" + - "ec2:CreateRoute" + - "ec2:CreateRouteTable" + - "ec2:CreateSecurityGroup" + - "ec2:CreateSubnet" + - "ec2:CreateTags" + - "ec2:CreateVolume" + - "ec2:CreateVpc" + - "ec2:CreateVpcEndpoint" + - "ec2:DeleteDhcpOptions" + - "ec2:DeleteInternetGateway" + - "ec2:DeleteKeyPair" + - "ec2:DeleteNatGateway" + - "ec2:DeletePlacementGroup" + - "ec2:DeleteRoute" + - "ec2:DeleteRouteTable" + - "ec2:DeleteSecurityGroup" + - "ec2:DeleteSubnet" + - "ec2:DeleteTags" + - "ec2:DeleteVolume" + - "ec2:DeleteVpc" + - "ec2:DeleteVpcEndpoints" + - "ec2:DescribeAvailabilityZones" + - "ec2:DescribeIamInstanceProfileAssociations" + - "ec2:DescribeInstanceStatus" + - "ec2:DescribeInstances" + - "ec2:DescribeInternetGateways" + - "ec2:DescribeNatGateways" + - "ec2:DescribePlacementGroups" + - "ec2:DescribePrefixLists" + - "ec2:DescribeReservedInstancesOfferings" + - "ec2:DescribeRouteTables" + - "ec2:DescribeSecurityGroups" + - "ec2:DescribeSpotInstanceRequests" + - "ec2:DescribeSpotPriceHistory" + - "ec2:DescribeSubnets" + - "ec2:DescribeVolumes" + - "ec2:DescribeVpcs" + - "ec2:DescribeVpcAttribute" + - "ec2:DescribeNetworkAcls" + - "ec2:DetachInternetGateway" + - "ec2:DisassociateIamInstanceProfile" + - "ec2:DisassociateRouteTable" + - "ec2:ModifyVpcAttribute" + - "ec2:ReleaseAddress" + - "ec2:ReplaceIamInstanceProfileAssociation" + - "ec2:ReplaceRoute" + - "ec2:RequestSpotInstances" + - "ec2:RevokeSecurityGroupEgress" + - "ec2:RevokeSecurityGroupIngress" + - "ec2:RunInstances" + - "ec2:TerminateInstances" + Resource: + - "*" + - Effect: Allow + Action: + - "iam:CreateServiceLinkedRole" + - "iam:PutRolePolicy" + Resource: + - arn:aws:iam::*:role/aws-service-role/spot.amazonaws.com/AWSServiceRoleForEC2Spot + Condition: + StringLike: + "iam:AWSServiceName": spot.amazonaws.com + Version: '2012-10-17' + PolicyName: "{{ stack_name }}-{{ stack_env }}-policy" + exports: + - aws_iam_role_name: aws_iam_cross_account_role_name + - aws_iam_role_arn: aws_iam_cross_account_role_arn + + - name: databricks_account/credentials + props: + - name: credentials_name + value: "{{ stack_name }}-{{ stack_env }}-credentials" + - name: aws_credentials + value: + sts_role: + role_arn: "{{ aws_iam_cross_account_role_arn }}" + exports: + - databricks_credentials_name + - databricks_credentials_id + - databricks_role_external_id + +# ==================================================================================== +# Storage +# ==================================================================================== + + - name: aws/s3/workspace_bucket + file: aws/s3/s3_bucket.iql + props: + - name: bucket_name + value: "{{ stack_name }}-{{ stack_env }}-root-bucket" + - name: ownership_controls + value: + Rules: + - ObjectOwnership: "BucketOwnerPreferred" + - name: bucket_encryption + value: + ServerSideEncryptionConfiguration: + - BucketKeyEnabled: true + ServerSideEncryptionByDefault: + SSEAlgorithm: "AES256" + - name: public_access_block_configuration + value: + BlockPublicAcls: true + IgnorePublicAcls: true + BlockPublicPolicy: true + RestrictPublicBuckets: true + - name: versioning_configuration + value: + Status: "Suspended" + exports: + - arn: aws_s3_workspace_bucket_arn + - bucket_name: aws_s3_workspace_bucket_name + + - name: aws/s3/workspace_bucket_policy + file: aws/s3/s3_bucket_policy.iql + props: + - name: policy_document + value: + Version: "2012-10-17" + Statement: + - Sid: Grant Databricks Access + Effect: Allow + Principal: + AWS: "arn:aws:iam::{{ databricks_aws_account_id }}:root" + Action: + - "s3:GetObject" + - "s3:GetObjectVersion" + - "s3:PutObject" + - "s3:DeleteObject" + - "s3:ListBucket" + - "s3:GetBucketLocation" + Resource: + - "{{ aws_s3_workspace_bucket_arn }}/*" + - "{{ aws_s3_workspace_bucket_arn }}" + + - name: databricks_account/storage_configuration + props: + - name: storage_configuration_name + value: "{{ stack_name }}-{{ stack_env }}-storage" + - name: root_bucket_info + value: + bucket_name: "{{ aws_s3_workspace_bucket_name }}" + exports: + - databricks_storage_configuration_id + +# ==================================================================================== +# UC Storage Credential and Metastore Catalog Bucket +# ==================================================================================== + + - name: aws/s3/metastore_bucket + file: aws/s3/s3_bucket.iql + props: + - name: bucket_name + value: "{{ stack_name }}-{{ stack_env }}-metastore" + - name: ownership_controls + value: + Rules: + - ObjectOwnership: "BucketOwnerPreferred" + - name: bucket_encryption + value: + ServerSideEncryptionConfiguration: + - BucketKeyEnabled: true + ServerSideEncryptionByDefault: + SSEAlgorithm: "AES256" + - name: public_access_block_configuration + value: + BlockPublicAcls: true + IgnorePublicAcls: true + BlockPublicPolicy: true + RestrictPublicBuckets: true + - name: versioning_configuration + value: + Status: "Suspended" + exports: + - arn: aws_s3_metastore_bucket_arn + - bucket_name: aws_s3_metastore_bucket_name + + - name: aws/iam/metastore_access_role + file: aws/iam/iam_role.iql + props: + - name: role_name + value: "{{ stack_name }}-{{ stack_env }}-metastore-role" + - name: assume_role_policy_document + value: + Version: "2012-10-17" + Statement: + - Effect: "Allow" + Principal: + AWS: + - "arn:aws:iam::414351767826:role/unity-catalog-prod-UCMasterRole-14S5ZJVKOTYTL" + Action: "sts:AssumeRole" + Condition: + StringEquals: + sts:ExternalId: "0000" # Placeholder + - name: description + value: 'Unity Catalog metastore access role for ({{ stack_name }}-{{ stack_env }})' + - name: path + value: '/' + - name: policies + value: + - PolicyName: "MetastoreS3Policy" + PolicyDocument: + Version: "2012-10-17" + Statement: + - Effect: "Allow" + Action: + - "s3:GetObject" + - "s3:PutObject" + - "s3:DeleteObject" + - "s3:ListBucket" + - "s3:GetBucketLocation" + - "s3:ListBucketMultipartUploads" + - "s3:ListMultipartUploadParts" + - "s3:AbortMultipartUpload" + Resource: + - "{{ aws_s3_metastore_bucket_arn }}/*" + - "{{ aws_s3_metastore_bucket_arn }}" + + # - Effect: "Allow" + # Action: + # - "kms:Decrypt" + # - "kms:Encrypt" + # - "kms:GenerateDataKey*" + # Resource: + # - "arn:aws:kms:" + + - Effect: "Allow" + Action: + - "sts:AssumeRole" + Resource: + - "arn:aws:iam::{{ databricks_aws_account_id }}:role/{{ stack_name }}-{{ stack_env }}-metastore-role" + + - Sid: "ManagedFileEventsSetupStatement" + Effect: "Allow" + Action: + - "s3:GetBucketNotification" + - "s3:PutBucketNotification" + - "sns:ListSubscriptionsByTopic" + - "sns:GetTopicAttributes" + - "sns:SetTopicAttributes" + - "sns:CreateTopic" + - "sns:TagResource" + - "sns:Publish" + - "sns:Subscribe" + - "sqs:CreateQueue" + - "sqs:DeleteMessage" + - "sqs:ReceiveMessage" + - "sqs:SendMessage" + - "sqs:GetQueueUrl" + - "sqs:GetQueueAttributes" + - "sqs:SetQueueAttributes" + - "sqs:TagQueue" + - "sqs:ChangeMessageVisibility" + - "sqs:PurgeQueue" + Resource: + - "{{ aws_s3_metastore_bucket_arn }}" + - "arn:aws:sqs:*:*:csms-*" + - "arn:aws:sns:*:*:csms-*" + + - Sid: "ManagedFileEventsListStatement" + Effect: "Allow" + Action: + - "sqs:ListQueues" + - "sqs:ListQueueTags" + - "sns:ListTopics" + Resource: + - "arn:aws:sqs:*:*:csms-*" + - "arn:aws:sns:*:*:csms-*" + + - Sid: "ManagedFileEventsTeardownStatement" + Effect: "Allow" + Action: + - "sns:Unsubscribe" + - "sns:DeleteTopic" + - "sqs:DeleteQueue" + Resource: + - "arn:aws:sqs:*:*:csms-*" + - "arn:aws:sns:*:*:csms-*" + - name: tags + value: + - Key: Purpose + Value: "Unity Catalog Storage Credential" + merge: + - global_tags + exports: + - aws_iam_role_arn: metastore_access_role_arn + +# ==================================================================================== +# DBX Workspace +# ==================================================================================== + + - name: databricks_account/workspace + props: + - name: workspace_name + value: "{{ stack_name }}-{{ stack_env }}-workspace" + - name: aws_region + value: "{{ region }}" + - name: credentials_id + value: "{{ databricks_credentials_id }}" + - name: storage_configuration_id + value: "{{ databricks_storage_configuration_id }}" + - name: pricing_tier + value: PREMIUM + exports: + - databricks_workspace_id + - databricks_deployment_name + + - name: databricks_account/workspace_group + props: + - name: display_name + value: "{{ stack_name }}-{{ stack_env }}-workspace-admins" + exports: + - databricks_group_id + - databricks_group_name + + - name: databricks_account/get_users + type: query + props: + - name: users + value: + - "javen@stackql.io" + - "krimmer@stackql.io" + exports: + - databricks_workspace_group_members + + - name: databricks_account/update_group_membership + type: command + props: [] + + - name: databricks_account/workspace_permission_assignments + props: [] + + - name: databricks_workspace/storage_credential + props: + - name: name + value: "{{ stack_name }}-{{ stack_env }}-storage-credential" + - name: comment + value: "Storage credential for {{ stack_name }} {{ stack_env }} metastore S3 access" + - name: read_only + value: false + - name: aws_iam_role + value: + role_arn: "{{ metastore_access_role_arn }}" + - name: skip_validation + value: false + exports: + - storage_credential_name + - storage_credential_external_id + + - name: databricks_workspace/unitycatalog/grants + type: command + props: + - name: privileges + value: + - "ALL_PRIVILEGES" + - "MANAGE" + sql: | + UPDATE databricks_workspace.unitycatalog.grants + SET data__changes = '[{"add": {{ privileges }},"principal": "{{ databricks_group_name }}"}]' + WHERE full_name = '{{ storage_credential_name }}' AND + securable_type = 'storage_credential' AND + deployment_name = '{{ databricks_deployment_name }}'; + + - name: aws/iam/update_metastore_access_role + type: command + props: + - name: role_name + value: "{{ stack_name }}-{{ stack_env }}-metastore-role" + - name: assume_role_policy_document + value: + Version: "2012-10-17" + Statement: + - Effect: "Allow" + Principal: + AWS: + - "arn:aws:iam::414351767826:role/unity-catalog-prod-UCMasterRole-14S5ZJVKOTYTL" + - "{{ metastore_access_role_arn }}" + Action: "sts:AssumeRole" + Condition: + StringEquals: + sts:ExternalId: "{{ storage_credential_external_id }}" + +# ==================================================================================== +# DBX UC Catalog, Schema, and Table +# ==================================================================================== + + - name: interoperability_catalog + props: + - name: name + value: string + - name: comment + value: string + - name: properties + value: + property1: string + property2: string + - name: storage_root + value: string + - name: provider_name + value: string + - name: share_name + value: string + - name: connection_name + value: string + - name: options + value: + property1: string + property2: string + + - name: interoperability_schema + props: + - name: name + value: string + - name: catalog_name + value: string + - name: comment + value: string + - name: properties + value: + property1: string + property2: string + - name: storage_root + value: string + diff --git a/website/docs/index.md b/website/docs/index.md index 9368e50..7e7b4c0 100644 --- a/website/docs/index.md +++ b/website/docs/index.md @@ -15,7 +15,9 @@ unlisted: false ![StackQL Deploy](/img/stackql-deploy-logo.png) -### Model Driven, Declarative, State File-less, Multi-Cloud IaC +## Model Driven, Declarative, State File-less, Multi-Cloud IaC + + __`stackql-deploy`__ is a multi-cloud resource provisioning framework using __`stackql`__. It is inspired by dbt (data build tool), which manages data transformation workflows in analytics engineering by treating SQL scripts as models that can be built, tested, and materialized incrementally. With StackQL, you can create a similar framework for cloud and SaaS provisioning. The goal is to treat cloud stacks as models that can be deployed, tested, updated, and de-provisioned, enabling developers to deploy complex, dependent infrastructure components in a reliable and repeatable manner. @@ -27,4 +29,3 @@ __`stackql-deploy`__ is a multi-cloud resource provisioning framework using __`s - Single code base for multiple target environments - SQL-based definitions for resources and tests - diff --git a/website/docusaurus.config.js b/website/docusaurus.config.js index 33693df..1f9d40b 100644 --- a/website/docusaurus.config.js +++ b/website/docusaurus.config.js @@ -66,8 +66,8 @@ const config = { logo: { alt: 'StackQL', href: '/', - src: 'img/logo-original.svg', - srcDark: 'img/logo-white.svg', + src: 'img/stackql-deploy-logo.svg', + srcDark: 'img/stackql-deploy-logo-white.svg', }, items: [ { diff --git a/website/package.json b/website/package.json index 3eb35f0..68ae18c 100644 --- a/website/package.json +++ b/website/package.json @@ -14,9 +14,9 @@ "write-heading-ids": "docusaurus write-heading-ids" }, "dependencies": { - "@docusaurus/core": "^3.5.2", - "@docusaurus/preset-classic": "^3.5.2", - "@docusaurus/theme-mermaid": "^3.5.2", + "@docusaurus/core": "^3.8.1", + "@docusaurus/preset-classic": "^3.8.1", + "@docusaurus/theme-mermaid": "^3.8.1", "@emotion/react": "^11.13.0", "@emotion/styled": "^11.13.0", "@iconify/react": "^5.0.2", @@ -29,8 +29,8 @@ "react-dom": "^18.0.0" }, "devDependencies": { - "@docusaurus/module-type-aliases": "^3.5.2", - "@docusaurus/types": "^3.5.2" + "@docusaurus/module-type-aliases": "^3.8.1", + "@docusaurus/types": "^3.8.1" }, "browserslist": { "production": [ diff --git a/website/src/css/custom.css b/website/src/css/custom.css index 6794a8f..56cad50 100644 --- a/website/src/css/custom.css +++ b/website/src/css/custom.css @@ -179,16 +179,6 @@ html[data-theme='dark'] .footer .container { padding: 0; } -/* -* vhs image -*/ -.vhsImage { - display: block; - margin-left: 0; - margin-right: auto; - width: 70%; -} - /* * custom styles */ @@ -225,4 +215,28 @@ table { html[data-theme='dark'] .docFieldHeading { color: #FFFFFF; +} + +/* +* vhs image +*/ + +.vhsImage { + max-width: 60%; /* Reduce width to 80% of container */ + display: block; /* Ensure it's a block element for margin auto to work */ + margin: 40px auto; /* Add 40px space above/below and center horizontally */ + transform: scale(0.9); /* Make it 90% of original size */ + transform-origin: center; /* Scale from center */ +} + +/* Add more space before and after the image container */ +img[class="vhsImage"] { + margin-top: 40px; + margin-bottom: 40px; +} + +/* If the image is inside a container, you might need this */ +.vhsImage-container, +div:has(> .vhsImage) { + margin: 40px 0; } \ No newline at end of file diff --git a/website/static/img/logo-original-OLD.svg b/website/static/img/logo-original-OLD.svg deleted file mode 100644 index 1de09ec..0000000 --- a/website/static/img/logo-original-OLD.svg +++ /dev/null @@ -1,3 +0,0 @@ - - - diff --git a/website/static/img/logo-original.svg b/website/static/img/logo-original.svg deleted file mode 100644 index 2dc369d..0000000 --- a/website/static/img/logo-original.svg +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/website/static/img/logo-white.svg b/website/static/img/logo-white.svg deleted file mode 100644 index 88c628e..0000000 --- a/website/static/img/logo-white.svg +++ /dev/null @@ -1,3 +0,0 @@ - - - diff --git a/website/static/img/stackql-deploy-logo-white.svg b/website/static/img/stackql-deploy-logo-white.svg new file mode 100644 index 0000000..a09fefc --- /dev/null +++ b/website/static/img/stackql-deploy-logo-white.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/website/static/img/stackql-deploy-logo.svg b/website/static/img/stackql-deploy-logo.svg new file mode 100644 index 0000000..1709a64 --- /dev/null +++ b/website/static/img/stackql-deploy-logo.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/website/yarn.lock b/website/yarn.lock index 421538e..2090806 100644 --- a/website/yarn.lock +++ b/website/yarn.lock @@ -2,158 +2,153 @@ # yarn lockfile v1 -"@algolia/autocomplete-core@1.9.3": - version "1.9.3" - resolved "https://registry.yarnpkg.com/@algolia/autocomplete-core/-/autocomplete-core-1.9.3.tgz#1d56482a768c33aae0868c8533049e02e8961be7" - integrity sha512-009HdfugtGCdC4JdXUbVJClA0q0zh24yyePn+KUGk3rP7j8FEe/m5Yo/z65gn6nP/cM39PxpzqKrL7A6fP6PPw== - dependencies: - "@algolia/autocomplete-plugin-algolia-insights" "1.9.3" - "@algolia/autocomplete-shared" "1.9.3" - -"@algolia/autocomplete-plugin-algolia-insights@1.9.3": - version "1.9.3" - resolved "https://registry.yarnpkg.com/@algolia/autocomplete-plugin-algolia-insights/-/autocomplete-plugin-algolia-insights-1.9.3.tgz#9b7f8641052c8ead6d66c1623d444cbe19dde587" - integrity sha512-a/yTUkcO/Vyy+JffmAnTWbr4/90cLzw+CC3bRbhnULr/EM0fGNvM13oQQ14f2moLMcVDyAx/leczLlAOovhSZg== - dependencies: - "@algolia/autocomplete-shared" "1.9.3" - -"@algolia/autocomplete-preset-algolia@1.9.3": - version "1.9.3" - resolved "https://registry.yarnpkg.com/@algolia/autocomplete-preset-algolia/-/autocomplete-preset-algolia-1.9.3.tgz#64cca4a4304cfcad2cf730e83067e0c1b2f485da" - integrity sha512-d4qlt6YmrLMYy95n5TB52wtNDr6EgAIPH81dvvvW8UmuWRgxEtY0NJiPwl/h95JtG2vmRM804M0DSwMCNZlzRA== - dependencies: - "@algolia/autocomplete-shared" "1.9.3" +"@algolia/autocomplete-core@1.17.9": + version "1.17.9" + resolved "https://registry.yarnpkg.com/@algolia/autocomplete-core/-/autocomplete-core-1.17.9.tgz#83374c47dc72482aa45d6b953e89377047f0dcdc" + integrity sha512-O7BxrpLDPJWWHv/DLA9DRFWs+iY1uOJZkqUwjS5HSZAGcl0hIVCQ97LTLewiZmZ402JYUrun+8NqFP+hCknlbQ== + dependencies: + "@algolia/autocomplete-plugin-algolia-insights" "1.17.9" + "@algolia/autocomplete-shared" "1.17.9" + +"@algolia/autocomplete-plugin-algolia-insights@1.17.9": + version "1.17.9" + resolved "https://registry.yarnpkg.com/@algolia/autocomplete-plugin-algolia-insights/-/autocomplete-plugin-algolia-insights-1.17.9.tgz#74c86024d09d09e8bfa3dd90b844b77d9f9947b6" + integrity sha512-u1fEHkCbWF92DBeB/KHeMacsjsoI0wFhjZtlCq2ddZbAehshbZST6Hs0Avkc0s+4UyBGbMDnSuXHLuvRWK5iDQ== + dependencies: + "@algolia/autocomplete-shared" "1.17.9" + +"@algolia/autocomplete-preset-algolia@1.17.9": + version "1.17.9" + resolved "https://registry.yarnpkg.com/@algolia/autocomplete-preset-algolia/-/autocomplete-preset-algolia-1.17.9.tgz#911f3250544eb8ea4096fcfb268f156b085321b5" + integrity sha512-Na1OuceSJeg8j7ZWn5ssMu/Ax3amtOwk76u4h5J4eK2Nx2KB5qt0Z4cOapCsxot9VcEN11ADV5aUSlQF4RhGjQ== + dependencies: + "@algolia/autocomplete-shared" "1.17.9" + +"@algolia/autocomplete-shared@1.17.9": + version "1.17.9" + resolved "https://registry.yarnpkg.com/@algolia/autocomplete-shared/-/autocomplete-shared-1.17.9.tgz#5f38868f7cb1d54b014b17a10fc4f7e79d427fa8" + integrity sha512-iDf05JDQ7I0b7JEA/9IektxN/80a2MZ1ToohfmNS3rfeuQnIKI3IJlIafD0xu4StbtQTghx9T3Maa97ytkXenQ== + +"@algolia/client-abtesting@5.34.0": + version "5.34.0" + resolved "https://registry.yarnpkg.com/@algolia/client-abtesting/-/client-abtesting-5.34.0.tgz#1b7162c76cb77179a114d34efd76b0078ba2cab3" + integrity sha512-d6ardhDtQsnMpyr/rPrS3YuIE9NYpY4rftkC7Ap9tyuhZ/+V3E/LH+9uEewPguKzVqduApdwJzYq2k+vAXVEbQ== + dependencies: + "@algolia/client-common" "5.34.0" + "@algolia/requester-browser-xhr" "5.34.0" + "@algolia/requester-fetch" "5.34.0" + "@algolia/requester-node-http" "5.34.0" + +"@algolia/client-analytics@5.34.0": + version "5.34.0" + resolved "https://registry.yarnpkg.com/@algolia/client-analytics/-/client-analytics-5.34.0.tgz#1eb5c5cfdf4be62f5a71600c9e04e71d7a742dc5" + integrity sha512-WXIByjHNA106JO1Dj6b4viSX/yMN3oIB4qXr2MmyEmNq0MgfuPfPw8ayLRIZPa9Dp27hvM3G8MWJ4RG978HYFw== + dependencies: + "@algolia/client-common" "5.34.0" + "@algolia/requester-browser-xhr" "5.34.0" + "@algolia/requester-fetch" "5.34.0" + "@algolia/requester-node-http" "5.34.0" + +"@algolia/client-common@5.34.0": + version "5.34.0" + resolved "https://registry.yarnpkg.com/@algolia/client-common/-/client-common-5.34.0.tgz#c617f62d73325f2c61bf5ee1c122f385f66fc117" + integrity sha512-JeN1XJLZIkkv6yK0KT93CIXXk+cDPUGNg5xeH4fN9ZykYFDWYRyqgaDo+qvg4RXC3WWkdQ+hogQuuCk4Y3Eotw== + +"@algolia/client-insights@5.34.0": + version "5.34.0" + resolved "https://registry.yarnpkg.com/@algolia/client-insights/-/client-insights-5.34.0.tgz#5623db7c926e1e600dd5b8e6f76ab703b8920eb7" + integrity sha512-gdFlcQa+TWXJUsihHDlreFWniKPFIQ15i5oynCY4m9K3DCex5g5cVj9VG4Hsquxf2t6Y0yv8w6MvVTGDO8oRLw== + dependencies: + "@algolia/client-common" "5.34.0" + "@algolia/requester-browser-xhr" "5.34.0" + "@algolia/requester-fetch" "5.34.0" + "@algolia/requester-node-http" "5.34.0" + +"@algolia/client-personalization@5.34.0": + version "5.34.0" + resolved "https://registry.yarnpkg.com/@algolia/client-personalization/-/client-personalization-5.34.0.tgz#e9e8d8af7ff74ab1c72fed259da0c916ada88719" + integrity sha512-g91NHhIZDkh1IUeNtsUd8V/ZxuBc2ByOfDqhCkoQY3Z/mZszhpn3Czn6AR5pE81fx793vMaiOZvQVB5QttArkQ== + dependencies: + "@algolia/client-common" "5.34.0" + "@algolia/requester-browser-xhr" "5.34.0" + "@algolia/requester-fetch" "5.34.0" + "@algolia/requester-node-http" "5.34.0" + +"@algolia/client-query-suggestions@5.34.0": + version "5.34.0" + resolved "https://registry.yarnpkg.com/@algolia/client-query-suggestions/-/client-query-suggestions-5.34.0.tgz#50fdd06c47d949c315590806dba33b549e300365" + integrity sha512-cvRApDfFrlJ3Vcn37U4Nd/7S6T8cx7FW3mVLJPqkkzixv8DQ/yV+x4VLirxOtGDdq3KohcIbIGWbg1QuyOZRvQ== + dependencies: + "@algolia/client-common" "5.34.0" + "@algolia/requester-browser-xhr" "5.34.0" + "@algolia/requester-fetch" "5.34.0" + "@algolia/requester-node-http" "5.34.0" + +"@algolia/client-search@5.34.0": + version "5.34.0" + resolved "https://registry.yarnpkg.com/@algolia/client-search/-/client-search-5.34.0.tgz#44867a0b0be7103d4d72601b7dd534bad6fe6d6d" + integrity sha512-m9tK4IqJmn+flEPRtuxuHgiHmrKV0su5fuVwVpq8/es4DMjWMgX1a7Lg1PktvO8AbKaTp9kTtBAPnwXpuCwmEg== + dependencies: + "@algolia/client-common" "5.34.0" + "@algolia/requester-browser-xhr" "5.34.0" + "@algolia/requester-fetch" "5.34.0" + "@algolia/requester-node-http" "5.34.0" -"@algolia/autocomplete-shared@1.9.3": - version "1.9.3" - resolved "https://registry.yarnpkg.com/@algolia/autocomplete-shared/-/autocomplete-shared-1.9.3.tgz#2e22e830d36f0a9cf2c0ccd3c7f6d59435b77dfa" - integrity sha512-Wnm9E4Ye6Rl6sTTqjoymD+l8DjSTHsHboVRYrKgEt8Q7UHm9nYbqhN/i0fhUYA3OAEH7WA8x3jfpnmJm3rKvaQ== - -"@algolia/cache-browser-local-storage@4.24.0": - version "4.24.0" - resolved "https://registry.yarnpkg.com/@algolia/cache-browser-local-storage/-/cache-browser-local-storage-4.24.0.tgz#97bc6d067a9fd932b9c922faa6b7fd6e546e1348" - integrity sha512-t63W9BnoXVrGy9iYHBgObNXqYXM3tYXCjDSHeNwnsc324r4o5UiVKUiAB4THQ5z9U5hTj6qUvwg/Ez43ZD85ww== - dependencies: - "@algolia/cache-common" "4.24.0" - -"@algolia/cache-common@4.24.0": - version "4.24.0" - resolved "https://registry.yarnpkg.com/@algolia/cache-common/-/cache-common-4.24.0.tgz#81a8d3a82ceb75302abb9b150a52eba9960c9744" - integrity sha512-emi+v+DmVLpMGhp0V9q9h5CdkURsNmFC+cOS6uK9ndeJm9J4TiqSvPYVu+THUP8P/S08rxf5x2P+p3CfID0Y4g== +"@algolia/events@^4.0.1": + version "4.0.1" + resolved "https://registry.yarnpkg.com/@algolia/events/-/events-4.0.1.tgz#fd39e7477e7bc703d7f893b556f676c032af3950" + integrity sha512-FQzvOCgoFXAbf5Y6mYozw2aj5KCJoA3m4heImceldzPSMbdyS4atVjJzXKMsfX3wnZTFYwkkt8/z8UesLHlSBQ== -"@algolia/cache-in-memory@4.24.0": - version "4.24.0" - resolved "https://registry.yarnpkg.com/@algolia/cache-in-memory/-/cache-in-memory-4.24.0.tgz#ffcf8872f3a10cb85c4f4641bdffd307933a6e44" - integrity sha512-gDrt2so19jW26jY3/MkFg5mEypFIPbPoXsQGQWAi6TrCPsNOSEYepBMPlucqWigsmEy/prp5ug2jy/N3PVG/8w== +"@algolia/ingestion@1.34.0": + version "1.34.0" + resolved "https://registry.yarnpkg.com/@algolia/ingestion/-/ingestion-1.34.0.tgz#393e20c4948f304349230de7cdfd4be5ce6efe93" + integrity sha512-2rxy4XoeRtIpzxEh5u5UgDC5HY4XbNdjzNgFx1eDrfFkSHpEVjirtLhISMy2N5uSFqYu1uUby5/NC1Soq8J7iw== dependencies: - "@algolia/cache-common" "4.24.0" + "@algolia/client-common" "5.34.0" + "@algolia/requester-browser-xhr" "5.34.0" + "@algolia/requester-fetch" "5.34.0" + "@algolia/requester-node-http" "5.34.0" -"@algolia/client-account@4.24.0": - version "4.24.0" - resolved "https://registry.yarnpkg.com/@algolia/client-account/-/client-account-4.24.0.tgz#eba7a921d828e7c8c40a32d4add21206c7fe12f1" - integrity sha512-adcvyJ3KjPZFDybxlqnf+5KgxJtBjwTPTeyG2aOyoJvx0Y8dUQAEOEVOJ/GBxX0WWNbmaSrhDURMhc+QeevDsA== +"@algolia/monitoring@1.34.0": + version "1.34.0" + resolved "https://registry.yarnpkg.com/@algolia/monitoring/-/monitoring-1.34.0.tgz#f163560f660195e028b02a81e4bc3475cf001225" + integrity sha512-OJiDhlJX8ZdWAndc50Z6aUEW/YmnhFK2ul3rahMw5/c9Damh7+oY9SufoK2LimJejy+65Qka06YPG29v2G/vww== dependencies: - "@algolia/client-common" "4.24.0" - "@algolia/client-search" "4.24.0" - "@algolia/transporter" "4.24.0" + "@algolia/client-common" "5.34.0" + "@algolia/requester-browser-xhr" "5.34.0" + "@algolia/requester-fetch" "5.34.0" + "@algolia/requester-node-http" "5.34.0" -"@algolia/client-analytics@4.24.0": - version "4.24.0" - resolved "https://registry.yarnpkg.com/@algolia/client-analytics/-/client-analytics-4.24.0.tgz#9d2576c46a9093a14e668833c505ea697a1a3e30" - integrity sha512-y8jOZt1OjwWU4N2qr8G4AxXAzaa8DBvyHTWlHzX/7Me1LX8OayfgHexqrsL4vSBcoMmVw2XnVW9MhL+Y2ZDJXg== +"@algolia/recommend@5.34.0": + version "5.34.0" + resolved "https://registry.yarnpkg.com/@algolia/recommend/-/recommend-5.34.0.tgz#5adec4b49c32612309204e9f17f9180c6e4e1da9" + integrity sha512-fzNQZAdVxu/Gnbavy8KW5gurApwdYcPW6+pjO7Pw8V5drCR3eSqnOxSvp79rhscDX8ezwqMqqK4F3Hsq+KpRzg== dependencies: - "@algolia/client-common" "4.24.0" - "@algolia/client-search" "4.24.0" - "@algolia/requester-common" "4.24.0" - "@algolia/transporter" "4.24.0" + "@algolia/client-common" "5.34.0" + "@algolia/requester-browser-xhr" "5.34.0" + "@algolia/requester-fetch" "5.34.0" + "@algolia/requester-node-http" "5.34.0" -"@algolia/client-common@4.24.0": - version "4.24.0" - resolved "https://registry.yarnpkg.com/@algolia/client-common/-/client-common-4.24.0.tgz#77c46eee42b9444a1d1c1583a83f7df4398a649d" - integrity sha512-bc2ROsNL6w6rqpl5jj/UywlIYC21TwSSoFHKl01lYirGMW+9Eek6r02Tocg4gZ8HAw3iBvu6XQiM3BEbmEMoiA== +"@algolia/requester-browser-xhr@5.34.0": + version "5.34.0" + resolved "https://registry.yarnpkg.com/@algolia/requester-browser-xhr/-/requester-browser-xhr-5.34.0.tgz#3882e55907d6a3cf7160aef5b6743be398b88c57" + integrity sha512-gEI0xjzA/xvMpEdYmgQnf6AQKllhgKRtnEWmwDrnct+YPIruEHlx1dd7nRJTy/33MiYcCxkB4khXpNrHuqgp3Q== dependencies: - "@algolia/requester-common" "4.24.0" - "@algolia/transporter" "4.24.0" + "@algolia/client-common" "5.34.0" -"@algolia/client-personalization@4.24.0": - version "4.24.0" - resolved "https://registry.yarnpkg.com/@algolia/client-personalization/-/client-personalization-4.24.0.tgz#8b47789fb1cb0f8efbea0f79295b7c5a3850f6ae" - integrity sha512-l5FRFm/yngztweU0HdUzz1rC4yoWCFo3IF+dVIVTfEPg906eZg5BOd1k0K6rZx5JzyyoP4LdmOikfkfGsKVE9w== +"@algolia/requester-fetch@5.34.0": + version "5.34.0" + resolved "https://registry.yarnpkg.com/@algolia/requester-fetch/-/requester-fetch-5.34.0.tgz#bda378f9e5d70d7516d15478a5a7123eaf62afb0" + integrity sha512-5SwGOttpbACT4jXzfSJ3mnTcF46SVNSnZ1JjxC3qBa3qKi4U0CJGzuVVy3L798u8dG5H0SZ2MAB5v7180Gnqew== dependencies: - "@algolia/client-common" "4.24.0" - "@algolia/requester-common" "4.24.0" - "@algolia/transporter" "4.24.0" + "@algolia/client-common" "5.34.0" -"@algolia/client-search@4.24.0": - version "4.24.0" - resolved "https://registry.yarnpkg.com/@algolia/client-search/-/client-search-4.24.0.tgz#75e6c02d33ef3e0f34afd9962c085b856fc4a55f" - integrity sha512-uRW6EpNapmLAD0mW47OXqTP8eiIx5F6qN9/x/7HHO6owL3N1IXqydGwW5nhDFBrV+ldouro2W1VX3XlcUXEFCA== +"@algolia/requester-node-http@5.34.0": + version "5.34.0" + resolved "https://registry.yarnpkg.com/@algolia/requester-node-http/-/requester-node-http-5.34.0.tgz#047bf7f7027c2d94752da55d60d2a3f6d38d12c3" + integrity sha512-409XlyIyEXrxyGjWxd0q5RASizHSRVUU0AXPCEdqnbcGEzbCgL1n7oYI8YxzE/RqZLha+PNwWCcTVn7EE5tyyQ== dependencies: - "@algolia/client-common" "4.24.0" - "@algolia/requester-common" "4.24.0" - "@algolia/transporter" "4.24.0" - -"@algolia/events@^4.0.1": - version "4.0.1" - resolved "https://registry.yarnpkg.com/@algolia/events/-/events-4.0.1.tgz#fd39e7477e7bc703d7f893b556f676c032af3950" - integrity sha512-FQzvOCgoFXAbf5Y6mYozw2aj5KCJoA3m4heImceldzPSMbdyS4atVjJzXKMsfX3wnZTFYwkkt8/z8UesLHlSBQ== - -"@algolia/logger-common@4.24.0": - version "4.24.0" - resolved "https://registry.yarnpkg.com/@algolia/logger-common/-/logger-common-4.24.0.tgz#28d439976019ec0a46ba7a1a739ef493d4ef8123" - integrity sha512-LLUNjkahj9KtKYrQhFKCzMx0BY3RnNP4FEtO+sBybCjJ73E8jNdaKJ/Dd8A/VA4imVHP5tADZ8pn5B8Ga/wTMA== - -"@algolia/logger-console@4.24.0": - version "4.24.0" - resolved "https://registry.yarnpkg.com/@algolia/logger-console/-/logger-console-4.24.0.tgz#c6ff486036cd90b81d07a95aaba04461da7e1c65" - integrity sha512-X4C8IoHgHfiUROfoRCV+lzSy+LHMgkoEEU1BbKcsfnV0i0S20zyy0NLww9dwVHUWNfPPxdMU+/wKmLGYf96yTg== - dependencies: - "@algolia/logger-common" "4.24.0" - -"@algolia/recommend@4.24.0": - version "4.24.0" - resolved "https://registry.yarnpkg.com/@algolia/recommend/-/recommend-4.24.0.tgz#8a3f78aea471ee0a4836b78fd2aad4e9abcaaf34" - integrity sha512-P9kcgerfVBpfYHDfVZDvvdJv0lEoCvzNlOy2nykyt5bK8TyieYyiD0lguIJdRZZYGre03WIAFf14pgE+V+IBlw== - dependencies: - "@algolia/cache-browser-local-storage" "4.24.0" - "@algolia/cache-common" "4.24.0" - "@algolia/cache-in-memory" "4.24.0" - "@algolia/client-common" "4.24.0" - "@algolia/client-search" "4.24.0" - "@algolia/logger-common" "4.24.0" - "@algolia/logger-console" "4.24.0" - "@algolia/requester-browser-xhr" "4.24.0" - "@algolia/requester-common" "4.24.0" - "@algolia/requester-node-http" "4.24.0" - "@algolia/transporter" "4.24.0" - -"@algolia/requester-browser-xhr@4.24.0": - version "4.24.0" - resolved "https://registry.yarnpkg.com/@algolia/requester-browser-xhr/-/requester-browser-xhr-4.24.0.tgz#313c5edab4ed73a052e75803855833b62dd19c16" - integrity sha512-Z2NxZMb6+nVXSjF13YpjYTdvV3032YTBSGm2vnYvYPA6mMxzM3v5rsCiSspndn9rzIW4Qp1lPHBvuoKJV6jnAA== - dependencies: - "@algolia/requester-common" "4.24.0" - -"@algolia/requester-common@4.24.0": - version "4.24.0" - resolved "https://registry.yarnpkg.com/@algolia/requester-common/-/requester-common-4.24.0.tgz#1c60c198031f48fcdb9e34c4057a3ea987b9a436" - integrity sha512-k3CXJ2OVnvgE3HMwcojpvY6d9kgKMPRxs/kVohrwF5WMr2fnqojnycZkxPoEg+bXm8fi5BBfFmOqgYztRtHsQA== - -"@algolia/requester-node-http@4.24.0": - version "4.24.0" - resolved "https://registry.yarnpkg.com/@algolia/requester-node-http/-/requester-node-http-4.24.0.tgz#4461593714031d02aa7da221c49df675212f482f" - integrity sha512-JF18yTjNOVYvU/L3UosRcvbPMGT9B+/GQWNWnenIImglzNVGpyzChkXLnrSf6uxwVNO6ESGu6oN8MqcGQcjQJw== - dependencies: - "@algolia/requester-common" "4.24.0" - -"@algolia/transporter@4.24.0": - version "4.24.0" - resolved "https://registry.yarnpkg.com/@algolia/transporter/-/transporter-4.24.0.tgz#226bb1f8af62430374c1972b2e5c8580ab275102" - integrity sha512-86nI7w6NzWxd1Zp9q3413dRshDqAzSbsQjhcDhPIatEFiZrL1/TjnHL8S7jVKFePlIMzDsZWXAXwXzcok9c5oA== - dependencies: - "@algolia/cache-common" "4.24.0" - "@algolia/logger-common" "4.24.0" - "@algolia/requester-common" "4.24.0" + "@algolia/client-common" "5.34.0" "@ampproject/remapping@^2.2.0": version "2.3.0" @@ -163,7 +158,20 @@ "@jridgewell/gen-mapping" "^0.3.5" "@jridgewell/trace-mapping" "^0.3.24" -"@babel/code-frame@^7.0.0", "@babel/code-frame@^7.16.0", "@babel/code-frame@^7.24.7", "@babel/code-frame@^7.8.3": +"@antfu/install-pkg@^1.0.0": + version "1.1.0" + resolved "https://registry.yarnpkg.com/@antfu/install-pkg/-/install-pkg-1.1.0.tgz#78fa036be1a6081b5a77a5cf59f50c7752b6ba26" + integrity sha512-MGQsmw10ZyI+EJo45CdSER4zEb+p31LpDAFp2Z3gkSd1yqVZGi0Ebx++YTEMonJy4oChEMLsxZ64j8FH6sSqtQ== + dependencies: + package-manager-detector "^1.3.0" + tinyexec "^1.0.1" + +"@antfu/utils@^8.1.0": + version "8.1.1" + resolved "https://registry.yarnpkg.com/@antfu/utils/-/utils-8.1.1.tgz#95b1947d292a9a2efffba2081796dcaa05ecedfb" + integrity sha512-Mex9nXf9vR6AhcXmMrlz/HVgYYZpVGJ6YlPgwl7UnaFpnshXs6EK/oa5Gpf3CzENMjkvEx2tQtntGnb7UtSTOQ== + +"@babel/code-frame@^7.0.0", "@babel/code-frame@^7.24.7": version "7.24.7" resolved "https://registry.yarnpkg.com/@babel/code-frame/-/code-frame-7.24.7.tgz#882fd9e09e8ee324e496bd040401c6f046ef4465" integrity sha512-BcYH1CVJBO9tvyIZ2jVeXgSIMvGZ2FDRvDdOIVQyuklNKSsx+eppDEBq/g47Ayw+RqNFE+URvOShmf+f/qwAlA== @@ -171,12 +179,26 @@ "@babel/highlight" "^7.24.7" picocolors "^1.0.0" +"@babel/code-frame@^7.27.1": + version "7.27.1" + resolved "https://registry.yarnpkg.com/@babel/code-frame/-/code-frame-7.27.1.tgz#200f715e66d52a23b221a9435534a91cc13ad5be" + integrity sha512-cjQ7ZlQ0Mv3b47hABuTevyTuYN4i+loJKGeV9flcCgIK37cCXRh+L1bd3iBHlynerhQ7BhCkn2BPbQUL+rGqFg== + dependencies: + "@babel/helper-validator-identifier" "^7.27.1" + js-tokens "^4.0.0" + picocolors "^1.1.1" + "@babel/compat-data@^7.22.6", "@babel/compat-data@^7.25.2": version "7.25.2" resolved "https://registry.yarnpkg.com/@babel/compat-data/-/compat-data-7.25.2.tgz#e41928bd33475305c586f6acbbb7e3ade7a6f7f5" integrity sha512-bYcppcpKBvX4znYaPEeFau03bp89ShqNMLs+rmdptMw+heSZh9+z84d2YG+K7cYLbWwzdjtDoW/uqZmPjulClQ== -"@babel/core@^7.21.3", "@babel/core@^7.23.3": +"@babel/compat-data@^7.27.2", "@babel/compat-data@^7.27.7", "@babel/compat-data@^7.28.0": + version "7.28.0" + resolved "https://registry.yarnpkg.com/@babel/compat-data/-/compat-data-7.28.0.tgz#9fc6fd58c2a6a15243cd13983224968392070790" + integrity sha512-60X7qkglvrap8mn1lh2ebxXdZYtUcpd7gsmy9kLaBJ4i/WdY8PqTSdxyA8qraikqKQK5C1KRBKXqznrVapyNaw== + +"@babel/core@^7.21.3": version "7.25.2" resolved "https://registry.yarnpkg.com/@babel/core/-/core-7.25.2.tgz#ed8eec275118d7613e77a352894cd12ded8eba77" integrity sha512-BBt3opiCOxUr9euZ5/ro/Xv8/V7yJ5bjYMqG/C1YAo8MIKAnumZalCN+msbci3Pigy4lIQfPUpfMM27HMGaYEA== @@ -197,7 +219,28 @@ json5 "^2.2.3" semver "^6.3.1" -"@babel/generator@^7.23.3", "@babel/generator@^7.25.0": +"@babel/core@^7.25.9": + version "7.28.0" + resolved "https://registry.yarnpkg.com/@babel/core/-/core-7.28.0.tgz#55dad808d5bf3445a108eefc88ea3fdf034749a4" + integrity sha512-UlLAnTPrFdNGoFtbSXwcGFQBtQZJCNjaN6hQNP3UPvuNXT1i82N26KL3dZeIpNalWywr9IuQuncaAfUaS1g6sQ== + dependencies: + "@ampproject/remapping" "^2.2.0" + "@babel/code-frame" "^7.27.1" + "@babel/generator" "^7.28.0" + "@babel/helper-compilation-targets" "^7.27.2" + "@babel/helper-module-transforms" "^7.27.3" + "@babel/helpers" "^7.27.6" + "@babel/parser" "^7.28.0" + "@babel/template" "^7.27.2" + "@babel/traverse" "^7.28.0" + "@babel/types" "^7.28.0" + convert-source-map "^2.0.0" + debug "^4.1.0" + gensync "^1.0.0-beta.2" + json5 "^2.2.3" + semver "^6.3.1" + +"@babel/generator@^7.25.0": version "7.25.0" resolved "https://registry.yarnpkg.com/@babel/generator/-/generator-7.25.0.tgz#f858ddfa984350bc3d3b7f125073c9af6988f18e" integrity sha512-3LEEcj3PVW8pW2R1SR1M89g/qrYk/m/mB/tLqn7dn4sbBUQyTqnlod+II2U4dqiGtUmkcnAmkMDralTFZttRiw== @@ -207,6 +250,17 @@ "@jridgewell/trace-mapping" "^0.3.25" jsesc "^2.5.1" +"@babel/generator@^7.25.9", "@babel/generator@^7.28.0": + version "7.28.0" + resolved "https://registry.yarnpkg.com/@babel/generator/-/generator-7.28.0.tgz#9cc2f7bd6eb054d77dc66c2664148a0c5118acd2" + integrity sha512-lJjzvrbEeWrhB4P3QBsH7tey117PjLZnDbLiQEKjQ/fNJTjuq4HSqgFA+UNSwZT8D7dxxbnuSBMsa1lrWzKlQg== + dependencies: + "@babel/parser" "^7.28.0" + "@babel/types" "^7.28.0" + "@jridgewell/gen-mapping" "^0.3.12" + "@jridgewell/trace-mapping" "^0.3.28" + jsesc "^3.0.2" + "@babel/helper-annotate-as-pure@^7.24.7": version "7.24.7" resolved "https://registry.yarnpkg.com/@babel/helper-annotate-as-pure/-/helper-annotate-as-pure-7.24.7.tgz#5373c7bc8366b12a033b4be1ac13a206c6656aab" @@ -214,6 +268,13 @@ dependencies: "@babel/types" "^7.24.7" +"@babel/helper-annotate-as-pure@^7.27.1", "@babel/helper-annotate-as-pure@^7.27.3": + version "7.27.3" + resolved "https://registry.yarnpkg.com/@babel/helper-annotate-as-pure/-/helper-annotate-as-pure-7.27.3.tgz#f31fd86b915fc4daf1f3ac6976c59be7084ed9c5" + integrity sha512-fXSwMQqitTGeHLBC08Eq5yXz2m37E4pJX1qAU1+2cNedz/ifv/bVXft90VeSav5nFO61EcNgwr0aJxbyPaWBPg== + dependencies: + "@babel/types" "^7.27.3" + "@babel/helper-builder-binary-assignment-operator-visitor@^7.24.7": version "7.24.7" resolved "https://registry.yarnpkg.com/@babel/helper-builder-binary-assignment-operator-visitor/-/helper-builder-binary-assignment-operator-visitor-7.24.7.tgz#37d66feb012024f2422b762b9b2a7cfe27c7fba3" @@ -233,6 +294,17 @@ lru-cache "^5.1.1" semver "^6.3.1" +"@babel/helper-compilation-targets@^7.27.1", "@babel/helper-compilation-targets@^7.27.2": + version "7.27.2" + resolved "https://registry.yarnpkg.com/@babel/helper-compilation-targets/-/helper-compilation-targets-7.27.2.tgz#46a0f6efab808d51d29ce96858dd10ce8732733d" + integrity sha512-2+1thGUUWWjLTYTHZWK1n8Yga0ijBz1XAhUXcKy81rd5g6yh7hGqMp45v7cadSbEHc9G3OTv45SyneRN3ps4DQ== + dependencies: + "@babel/compat-data" "^7.27.2" + "@babel/helper-validator-option" "^7.27.1" + browserslist "^4.24.0" + lru-cache "^5.1.1" + semver "^6.3.1" + "@babel/helper-create-class-features-plugin@^7.24.7", "@babel/helper-create-class-features-plugin@^7.25.0": version "7.25.0" resolved "https://registry.yarnpkg.com/@babel/helper-create-class-features-plugin/-/helper-create-class-features-plugin-7.25.0.tgz#a109bf9c3d58dfed83aaf42e85633c89f43a6253" @@ -246,6 +318,19 @@ "@babel/traverse" "^7.25.0" semver "^6.3.1" +"@babel/helper-create-class-features-plugin@^7.27.1": + version "7.27.1" + resolved "https://registry.yarnpkg.com/@babel/helper-create-class-features-plugin/-/helper-create-class-features-plugin-7.27.1.tgz#5bee4262a6ea5ddc852d0806199eb17ca3de9281" + integrity sha512-QwGAmuvM17btKU5VqXfb+Giw4JcN0hjuufz3DYnpeVDvZLAObloM77bhMXiqry3Iio+Ai4phVRDwl6WU10+r5A== + dependencies: + "@babel/helper-annotate-as-pure" "^7.27.1" + "@babel/helper-member-expression-to-functions" "^7.27.1" + "@babel/helper-optimise-call-expression" "^7.27.1" + "@babel/helper-replace-supers" "^7.27.1" + "@babel/helper-skip-transparent-expression-wrappers" "^7.27.1" + "@babel/traverse" "^7.27.1" + semver "^6.3.1" + "@babel/helper-create-regexp-features-plugin@^7.18.6", "@babel/helper-create-regexp-features-plugin@^7.24.7", "@babel/helper-create-regexp-features-plugin@^7.25.0": version "7.25.2" resolved "https://registry.yarnpkg.com/@babel/helper-create-regexp-features-plugin/-/helper-create-regexp-features-plugin-7.25.2.tgz#24c75974ed74183797ffd5f134169316cd1808d9" @@ -255,6 +340,15 @@ regexpu-core "^5.3.1" semver "^6.3.1" +"@babel/helper-create-regexp-features-plugin@^7.27.1": + version "7.27.1" + resolved "https://registry.yarnpkg.com/@babel/helper-create-regexp-features-plugin/-/helper-create-regexp-features-plugin-7.27.1.tgz#05b0882d97ba1d4d03519e4bce615d70afa18c53" + integrity sha512-uVDC72XVf8UbrH5qQTc18Agb8emwjTiZrQE11Nv3CuBEZmVvTwwE9CBUEvHku06gQCAyYf8Nv6ja1IN+6LMbxQ== + dependencies: + "@babel/helper-annotate-as-pure" "^7.27.1" + regexpu-core "^6.2.0" + semver "^6.3.1" + "@babel/helper-define-polyfill-provider@^0.6.2": version "0.6.2" resolved "https://registry.yarnpkg.com/@babel/helper-define-polyfill-provider/-/helper-define-polyfill-provider-0.6.2.tgz#18594f789c3594acb24cfdb4a7f7b7d2e8bd912d" @@ -266,6 +360,22 @@ lodash.debounce "^4.0.8" resolve "^1.14.2" +"@babel/helper-define-polyfill-provider@^0.6.5": + version "0.6.5" + resolved "https://registry.yarnpkg.com/@babel/helper-define-polyfill-provider/-/helper-define-polyfill-provider-0.6.5.tgz#742ccf1cb003c07b48859fc9fa2c1bbe40e5f753" + integrity sha512-uJnGFcPsWQK8fvjgGP5LZUZZsYGIoPeRjSF5PGwrelYgq7Q15/Ft9NGFp1zglwgIv//W0uG4BevRuSJRyylZPg== + dependencies: + "@babel/helper-compilation-targets" "^7.27.2" + "@babel/helper-plugin-utils" "^7.27.1" + debug "^4.4.1" + lodash.debounce "^4.0.8" + resolve "^1.22.10" + +"@babel/helper-globals@^7.28.0": + version "7.28.0" + resolved "https://registry.yarnpkg.com/@babel/helper-globals/-/helper-globals-7.28.0.tgz#b9430df2aa4e17bc28665eadeae8aa1d985e6674" + integrity sha512-+W6cISkXFa1jXsDEdYA8HeevQT/FULhxzR99pxphltZcVaugps53THCeiWA8SguxxpSp3gKPiuYfSWopkLQ4hw== + "@babel/helper-member-expression-to-functions@^7.24.8": version "7.24.8" resolved "https://registry.yarnpkg.com/@babel/helper-member-expression-to-functions/-/helper-member-expression-to-functions-7.24.8.tgz#6155e079c913357d24a4c20480db7c712a5c3fb6" @@ -274,6 +384,14 @@ "@babel/traverse" "^7.24.8" "@babel/types" "^7.24.8" +"@babel/helper-member-expression-to-functions@^7.27.1": + version "7.27.1" + resolved "https://registry.yarnpkg.com/@babel/helper-member-expression-to-functions/-/helper-member-expression-to-functions-7.27.1.tgz#ea1211276be93e798ce19037da6f06fbb994fa44" + integrity sha512-E5chM8eWjTp/aNoVpcbfM7mLxu9XGLWYise2eBKGQomAk/Mb4XoxyqXTZbuTohbsl8EKqdlMhnDI2CCLfcs9wA== + dependencies: + "@babel/traverse" "^7.27.1" + "@babel/types" "^7.27.1" + "@babel/helper-module-imports@^7.16.7", "@babel/helper-module-imports@^7.24.7": version "7.24.7" resolved "https://registry.yarnpkg.com/@babel/helper-module-imports/-/helper-module-imports-7.24.7.tgz#f2f980392de5b84c3328fc71d38bd81bbb83042b" @@ -282,6 +400,14 @@ "@babel/traverse" "^7.24.7" "@babel/types" "^7.24.7" +"@babel/helper-module-imports@^7.27.1": + version "7.27.1" + resolved "https://registry.yarnpkg.com/@babel/helper-module-imports/-/helper-module-imports-7.27.1.tgz#7ef769a323e2655e126673bb6d2d6913bbead204" + integrity sha512-0gSFWUPNXNopqtIPQvlD5WgXYI5GY2kP2cCvoT8kczjbfcfuIljTbcWrulD1CIPIX2gt1wghbDy08yE1p+/r3w== + dependencies: + "@babel/traverse" "^7.27.1" + "@babel/types" "^7.27.1" + "@babel/helper-module-transforms@^7.24.7", "@babel/helper-module-transforms@^7.24.8", "@babel/helper-module-transforms@^7.25.0", "@babel/helper-module-transforms@^7.25.2": version "7.25.2" resolved "https://registry.yarnpkg.com/@babel/helper-module-transforms/-/helper-module-transforms-7.25.2.tgz#ee713c29768100f2776edf04d4eb23b8d27a66e6" @@ -292,6 +418,15 @@ "@babel/helper-validator-identifier" "^7.24.7" "@babel/traverse" "^7.25.2" +"@babel/helper-module-transforms@^7.27.1", "@babel/helper-module-transforms@^7.27.3": + version "7.27.3" + resolved "https://registry.yarnpkg.com/@babel/helper-module-transforms/-/helper-module-transforms-7.27.3.tgz#db0bbcfba5802f9ef7870705a7ef8788508ede02" + integrity sha512-dSOvYwvyLsWBeIRyOeHXp5vPj5l1I011r52FM1+r1jCERv+aFXYk4whgQccYEGYxK2H3ZAIA8nuPkQ0HaUo3qg== + dependencies: + "@babel/helper-module-imports" "^7.27.1" + "@babel/helper-validator-identifier" "^7.27.1" + "@babel/traverse" "^7.27.3" + "@babel/helper-optimise-call-expression@^7.24.7": version "7.24.7" resolved "https://registry.yarnpkg.com/@babel/helper-optimise-call-expression/-/helper-optimise-call-expression-7.24.7.tgz#8b0a0456c92f6b323d27cfd00d1d664e76692a0f" @@ -299,11 +434,23 @@ dependencies: "@babel/types" "^7.24.7" +"@babel/helper-optimise-call-expression@^7.27.1": + version "7.27.1" + resolved "https://registry.yarnpkg.com/@babel/helper-optimise-call-expression/-/helper-optimise-call-expression-7.27.1.tgz#c65221b61a643f3e62705e5dd2b5f115e35f9200" + integrity sha512-URMGH08NzYFhubNSGJrpUEphGKQwMQYBySzat5cAByY1/YgIRkULnIy3tAMeszlL/so2HbeilYloUmSpd7GdVw== + dependencies: + "@babel/types" "^7.27.1" + "@babel/helper-plugin-utils@^7.0.0", "@babel/helper-plugin-utils@^7.10.4", "@babel/helper-plugin-utils@^7.12.13", "@babel/helper-plugin-utils@^7.14.5", "@babel/helper-plugin-utils@^7.18.6", "@babel/helper-plugin-utils@^7.22.5", "@babel/helper-plugin-utils@^7.24.7", "@babel/helper-plugin-utils@^7.24.8", "@babel/helper-plugin-utils@^7.8.0", "@babel/helper-plugin-utils@^7.8.3": version "7.24.8" resolved "https://registry.yarnpkg.com/@babel/helper-plugin-utils/-/helper-plugin-utils-7.24.8.tgz#94ee67e8ec0e5d44ea7baeb51e571bd26af07878" integrity sha512-FFWx5142D8h2Mgr/iPVGH5G7w6jDn4jUSpZTyDnQO0Yn7Ks2Kuz6Pci8H6MPCoUJegd/UZQ3tAvfLCxQSnWWwg== +"@babel/helper-plugin-utils@^7.27.1": + version "7.27.1" + resolved "https://registry.yarnpkg.com/@babel/helper-plugin-utils/-/helper-plugin-utils-7.27.1.tgz#ddb2f876534ff8013e6c2b299bf4d39b3c51d44c" + integrity sha512-1gn1Up5YXka3YYAHGKpbideQ5Yjf1tDa9qYcgysz+cNCXukyLl6DjPXhD3VRwSb8c0J9tA4b2+rHEZtc6R0tlw== + "@babel/helper-remap-async-to-generator@^7.24.7", "@babel/helper-remap-async-to-generator@^7.25.0": version "7.25.0" resolved "https://registry.yarnpkg.com/@babel/helper-remap-async-to-generator/-/helper-remap-async-to-generator-7.25.0.tgz#d2f0fbba059a42d68e5e378feaf181ef6055365e" @@ -313,6 +460,15 @@ "@babel/helper-wrap-function" "^7.25.0" "@babel/traverse" "^7.25.0" +"@babel/helper-remap-async-to-generator@^7.27.1": + version "7.27.1" + resolved "https://registry.yarnpkg.com/@babel/helper-remap-async-to-generator/-/helper-remap-async-to-generator-7.27.1.tgz#4601d5c7ce2eb2aea58328d43725523fcd362ce6" + integrity sha512-7fiA521aVw8lSPeI4ZOD3vRFkoqkJcS+z4hFo82bFSH/2tNd6eJ5qCVMS5OzDmZh/kaHQeBaeyxK6wljcPtveA== + dependencies: + "@babel/helper-annotate-as-pure" "^7.27.1" + "@babel/helper-wrap-function" "^7.27.1" + "@babel/traverse" "^7.27.1" + "@babel/helper-replace-supers@^7.24.7", "@babel/helper-replace-supers@^7.25.0": version "7.25.0" resolved "https://registry.yarnpkg.com/@babel/helper-replace-supers/-/helper-replace-supers-7.25.0.tgz#ff44deac1c9f619523fe2ca1fd650773792000a9" @@ -322,6 +478,15 @@ "@babel/helper-optimise-call-expression" "^7.24.7" "@babel/traverse" "^7.25.0" +"@babel/helper-replace-supers@^7.27.1": + version "7.27.1" + resolved "https://registry.yarnpkg.com/@babel/helper-replace-supers/-/helper-replace-supers-7.27.1.tgz#b1ed2d634ce3bdb730e4b52de30f8cccfd692bc0" + integrity sha512-7EHz6qDZc8RYS5ElPoShMheWvEgERonFCs7IAonWLLUTXW59DP14bCZt89/GKyreYn8g3S83m21FelHKbeDCKA== + dependencies: + "@babel/helper-member-expression-to-functions" "^7.27.1" + "@babel/helper-optimise-call-expression" "^7.27.1" + "@babel/traverse" "^7.27.1" + "@babel/helper-simple-access@^7.24.7": version "7.24.7" resolved "https://registry.yarnpkg.com/@babel/helper-simple-access/-/helper-simple-access-7.24.7.tgz#bcade8da3aec8ed16b9c4953b74e506b51b5edb3" @@ -338,21 +503,44 @@ "@babel/traverse" "^7.24.7" "@babel/types" "^7.24.7" +"@babel/helper-skip-transparent-expression-wrappers@^7.27.1": + version "7.27.1" + resolved "https://registry.yarnpkg.com/@babel/helper-skip-transparent-expression-wrappers/-/helper-skip-transparent-expression-wrappers-7.27.1.tgz#62bb91b3abba8c7f1fec0252d9dbea11b3ee7a56" + integrity sha512-Tub4ZKEXqbPjXgWLl2+3JpQAYBJ8+ikpQ2Ocj/q/r0LwE3UhENh7EUabyHjz2kCEsrRY83ew2DQdHluuiDQFzg== + dependencies: + "@babel/traverse" "^7.27.1" + "@babel/types" "^7.27.1" + "@babel/helper-string-parser@^7.24.8": version "7.24.8" resolved "https://registry.yarnpkg.com/@babel/helper-string-parser/-/helper-string-parser-7.24.8.tgz#5b3329c9a58803d5df425e5785865881a81ca48d" integrity sha512-pO9KhhRcuUyGnJWwyEgnRJTSIZHiT+vMD0kPeD+so0l7mxkMT19g3pjY9GTnHySck/hDzq+dtW/4VgnMkippsQ== +"@babel/helper-string-parser@^7.27.1": + version "7.27.1" + resolved "https://registry.yarnpkg.com/@babel/helper-string-parser/-/helper-string-parser-7.27.1.tgz#54da796097ab19ce67ed9f88b47bb2ec49367687" + integrity sha512-qMlSxKbpRlAridDExk92nSobyDdpPijUq2DW6oDnUqd0iOGxmQjyqhMIihI9+zv4LPyZdRje2cavWPbCbWm3eA== + "@babel/helper-validator-identifier@^7.24.7": version "7.24.7" resolved "https://registry.yarnpkg.com/@babel/helper-validator-identifier/-/helper-validator-identifier-7.24.7.tgz#75b889cfaf9e35c2aaf42cf0d72c8e91719251db" integrity sha512-rR+PBcQ1SMQDDyF6X0wxtG8QyLCgUB0eRAGguqRLfkCA87l7yAP7ehq8SNj96OOGTO8OBV70KhuFYcIkHXOg0w== +"@babel/helper-validator-identifier@^7.27.1": + version "7.27.1" + resolved "https://registry.yarnpkg.com/@babel/helper-validator-identifier/-/helper-validator-identifier-7.27.1.tgz#a7054dcc145a967dd4dc8fee845a57c1316c9df8" + integrity sha512-D2hP9eA+Sqx1kBZgzxZh0y1trbuU+JoDkiEwqhQ36nodYqJwyEIhPSdMNd7lOm/4io72luTPWH20Yda0xOuUow== + "@babel/helper-validator-option@^7.24.7", "@babel/helper-validator-option@^7.24.8": version "7.24.8" resolved "https://registry.yarnpkg.com/@babel/helper-validator-option/-/helper-validator-option-7.24.8.tgz#3725cdeea8b480e86d34df15304806a06975e33d" integrity sha512-xb8t9tD1MHLungh/AIoWYN+gVHaB9kwlu8gffXGSt3FFEIT7RjS+xWbc2vUD1UTZdIpKj/ab3rdqJ7ufngyi2Q== +"@babel/helper-validator-option@^7.27.1": + version "7.27.1" + resolved "https://registry.yarnpkg.com/@babel/helper-validator-option/-/helper-validator-option-7.27.1.tgz#fa52f5b1e7db1ab049445b421c4471303897702f" + integrity sha512-YvjJow9FxbhFFKDSuFnVCe2WxXk1zWc22fFePVNEaWJEu8IrZVlda6N0uHwzZrUM1il7NC9Mlp4MaJYbYd9JSg== + "@babel/helper-wrap-function@^7.25.0": version "7.25.0" resolved "https://registry.yarnpkg.com/@babel/helper-wrap-function/-/helper-wrap-function-7.25.0.tgz#dab12f0f593d6ca48c0062c28bcfb14ebe812f81" @@ -362,6 +550,15 @@ "@babel/traverse" "^7.25.0" "@babel/types" "^7.25.0" +"@babel/helper-wrap-function@^7.27.1": + version "7.27.1" + resolved "https://registry.yarnpkg.com/@babel/helper-wrap-function/-/helper-wrap-function-7.27.1.tgz#b88285009c31427af318d4fe37651cd62a142409" + integrity sha512-NFJK2sHUvrjo8wAU/nQTWU890/zB2jj0qBcCbZbbf+005cAsv6tMjXz31fBign6M5ov1o0Bllu+9nbqkfsjjJQ== + dependencies: + "@babel/template" "^7.27.1" + "@babel/traverse" "^7.27.1" + "@babel/types" "^7.27.1" + "@babel/helpers@^7.25.0": version "7.25.0" resolved "https://registry.yarnpkg.com/@babel/helpers/-/helpers-7.25.0.tgz#e69beb7841cb93a6505531ede34f34e6a073650a" @@ -370,6 +567,14 @@ "@babel/template" "^7.25.0" "@babel/types" "^7.25.0" +"@babel/helpers@^7.27.6": + version "7.27.6" + resolved "https://registry.yarnpkg.com/@babel/helpers/-/helpers-7.27.6.tgz#6456fed15b2cb669d2d1fabe84b66b34991d812c" + integrity sha512-muE8Tt8M22638HU31A3CgfSUciwz1fhATfoVai05aPXGor//CdWDCbnlY1yvBPo07njuVOCNGCSp/GTt12lIug== + dependencies: + "@babel/template" "^7.27.2" + "@babel/types" "^7.27.6" + "@babel/highlight@^7.24.7": version "7.24.7" resolved "https://registry.yarnpkg.com/@babel/highlight/-/highlight-7.24.7.tgz#a05ab1df134b286558aae0ed41e6c5f731bf409d" @@ -387,6 +592,13 @@ dependencies: "@babel/types" "^7.25.2" +"@babel/parser@^7.27.2", "@babel/parser@^7.28.0": + version "7.28.0" + resolved "https://registry.yarnpkg.com/@babel/parser/-/parser-7.28.0.tgz#979829fbab51a29e13901e5a80713dbcb840825e" + integrity sha512-jVZGvOxOuNSsuQuLRTh13nU0AogFlw32w/MT+LV6D3sP5WdbW61E77RnkbaO2dUvmPAYrBDJXGn5gGS6tH4j8g== + dependencies: + "@babel/types" "^7.28.0" + "@babel/plugin-bugfix-firefox-class-in-computed-class-key@^7.25.3": version "7.25.3" resolved "https://registry.yarnpkg.com/@babel/plugin-bugfix-firefox-class-in-computed-class-key/-/plugin-bugfix-firefox-class-in-computed-class-key-7.25.3.tgz#dca427b45a6c0f5c095a1c639dfe2476a3daba7f" @@ -395,6 +607,14 @@ "@babel/helper-plugin-utils" "^7.24.8" "@babel/traverse" "^7.25.3" +"@babel/plugin-bugfix-firefox-class-in-computed-class-key@^7.27.1": + version "7.27.1" + resolved "https://registry.yarnpkg.com/@babel/plugin-bugfix-firefox-class-in-computed-class-key/-/plugin-bugfix-firefox-class-in-computed-class-key-7.27.1.tgz#61dd8a8e61f7eb568268d1b5f129da3eee364bf9" + integrity sha512-QPG3C9cCVRQLxAVwmefEmwdTanECuUBMQZ/ym5kiw3XKCGA7qkuQLcjWWHcrD/GKbn/WmJwaezfuuAOcyKlRPA== + dependencies: + "@babel/helper-plugin-utils" "^7.27.1" + "@babel/traverse" "^7.27.1" + "@babel/plugin-bugfix-safari-class-field-initializer-scope@^7.25.0": version "7.25.0" resolved "https://registry.yarnpkg.com/@babel/plugin-bugfix-safari-class-field-initializer-scope/-/plugin-bugfix-safari-class-field-initializer-scope-7.25.0.tgz#cd0c583e01369ef51676bdb3d7b603e17d2b3f73" @@ -402,6 +622,13 @@ dependencies: "@babel/helper-plugin-utils" "^7.24.8" +"@babel/plugin-bugfix-safari-class-field-initializer-scope@^7.27.1": + version "7.27.1" + resolved "https://registry.yarnpkg.com/@babel/plugin-bugfix-safari-class-field-initializer-scope/-/plugin-bugfix-safari-class-field-initializer-scope-7.27.1.tgz#43f70a6d7efd52370eefbdf55ae03d91b293856d" + integrity sha512-qNeq3bCKnGgLkEXUuFry6dPlGfCdQNZbn7yUAPCInwAJHMU7THJfrBSozkcWq5sNM6RcF3S8XyQL2A52KNR9IA== + dependencies: + "@babel/helper-plugin-utils" "^7.27.1" + "@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression@^7.25.0": version "7.25.0" resolved "https://registry.yarnpkg.com/@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression/-/plugin-bugfix-safari-id-destructuring-collision-in-function-expression-7.25.0.tgz#749bde80356b295390954643de7635e0dffabe73" @@ -409,6 +636,13 @@ dependencies: "@babel/helper-plugin-utils" "^7.24.8" +"@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression@^7.27.1": + version "7.27.1" + resolved "https://registry.yarnpkg.com/@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression/-/plugin-bugfix-safari-id-destructuring-collision-in-function-expression-7.27.1.tgz#beb623bd573b8b6f3047bd04c32506adc3e58a72" + integrity sha512-g4L7OYun04N1WyqMNjldFwlfPCLVkgB54A/YCXICZYBsvJJE3kByKv9c9+R/nAfmIfjl2rKYLNyMHboYbZaWaA== + dependencies: + "@babel/helper-plugin-utils" "^7.27.1" + "@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining@^7.24.7": version "7.24.7" resolved "https://registry.yarnpkg.com/@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining/-/plugin-bugfix-v8-spread-parameters-in-optional-chaining-7.24.7.tgz#e4eabdd5109acc399b38d7999b2ef66fc2022f89" @@ -418,6 +652,15 @@ "@babel/helper-skip-transparent-expression-wrappers" "^7.24.7" "@babel/plugin-transform-optional-chaining" "^7.24.7" +"@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining@^7.27.1": + version "7.27.1" + resolved "https://registry.yarnpkg.com/@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining/-/plugin-bugfix-v8-spread-parameters-in-optional-chaining-7.27.1.tgz#e134a5479eb2ba9c02714e8c1ebf1ec9076124fd" + integrity sha512-oO02gcONcD5O1iTLi/6frMJBIwWEHceWGSGqrpCmEL8nogiS6J9PBlE48CaK20/Jx1LuRml9aDftLgdjXT8+Cw== + dependencies: + "@babel/helper-plugin-utils" "^7.27.1" + "@babel/helper-skip-transparent-expression-wrappers" "^7.27.1" + "@babel/plugin-transform-optional-chaining" "^7.27.1" + "@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly@^7.25.0": version "7.25.0" resolved "https://registry.yarnpkg.com/@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly/-/plugin-bugfix-v8-static-class-fields-redefine-readonly-7.25.0.tgz#3a82a70e7cb7294ad2559465ebcb871dfbf078fb" @@ -426,6 +669,14 @@ "@babel/helper-plugin-utils" "^7.24.8" "@babel/traverse" "^7.25.0" +"@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly@^7.27.1": + version "7.27.1" + resolved "https://registry.yarnpkg.com/@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly/-/plugin-bugfix-v8-static-class-fields-redefine-readonly-7.27.1.tgz#bb1c25af34d75115ce229a1de7fa44bf8f955670" + integrity sha512-6BpaYGDavZqkI6yT+KSPdpZFfpnd68UKXbcjI9pJ13pvHhPrCKWOOLp+ysvMeA+DxnhuPpgIaRpxRxo5A9t5jw== + dependencies: + "@babel/helper-plugin-utils" "^7.27.1" + "@babel/traverse" "^7.27.1" + "@babel/plugin-proposal-private-property-in-object@7.21.0-placeholder-for-preset-env.2": version "7.21.0-placeholder-for-preset-env.2" resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-private-property-in-object/-/plugin-proposal-private-property-in-object-7.21.0-placeholder-for-preset-env.2.tgz#7844f9289546efa9febac2de4cfe358a050bd703" @@ -473,6 +724,13 @@ dependencies: "@babel/helper-plugin-utils" "^7.24.7" +"@babel/plugin-syntax-import-assertions@^7.27.1": + version "7.27.1" + resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-import-assertions/-/plugin-syntax-import-assertions-7.27.1.tgz#88894aefd2b03b5ee6ad1562a7c8e1587496aecd" + integrity sha512-UT/Jrhw57xg4ILHLFnzFpPDlMbcdEicaAtjPQpbj9wa8T4r5KVWCimHcL/460g8Ht0DMxDyjsLgiWSkVjnwPFg== + dependencies: + "@babel/helper-plugin-utils" "^7.27.1" + "@babel/plugin-syntax-import-attributes@^7.24.7": version "7.24.7" resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-import-attributes/-/plugin-syntax-import-attributes-7.24.7.tgz#b4f9ea95a79e6912480c4b626739f86a076624ca" @@ -480,6 +738,13 @@ dependencies: "@babel/helper-plugin-utils" "^7.24.7" +"@babel/plugin-syntax-import-attributes@^7.27.1": + version "7.27.1" + resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-import-attributes/-/plugin-syntax-import-attributes-7.27.1.tgz#34c017d54496f9b11b61474e7ea3dfd5563ffe07" + integrity sha512-oFT0FrKHgF53f4vOsZGi2Hh3I35PfSmVs4IBFLFj4dnafP+hIWDLg3VyKmUHfLoLHlyxY4C7DGtmHuJgn+IGww== + dependencies: + "@babel/helper-plugin-utils" "^7.27.1" + "@babel/plugin-syntax-import-meta@^7.10.4": version "7.10.4" resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-import-meta/-/plugin-syntax-import-meta-7.10.4.tgz#ee601348c370fa334d2207be158777496521fd51" @@ -501,6 +766,13 @@ dependencies: "@babel/helper-plugin-utils" "^7.24.7" +"@babel/plugin-syntax-jsx@^7.27.1": + version "7.27.1" + resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-jsx/-/plugin-syntax-jsx-7.27.1.tgz#2f9beb5eff30fa507c5532d107daac7b888fa34c" + integrity sha512-y8YTNIeKoyhGd9O0Jiyzyyqk8gdjnumGTQPsz0xOZOQ2RmkVJeZ1vmmfIvFEKqucBG6axJGBZDE/7iI5suUI/w== + dependencies: + "@babel/helper-plugin-utils" "^7.27.1" + "@babel/plugin-syntax-logical-assignment-operators@^7.10.4": version "7.10.4" resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-logical-assignment-operators/-/plugin-syntax-logical-assignment-operators-7.10.4.tgz#ca91ef46303530448b906652bac2e9fe9941f699" @@ -564,6 +836,13 @@ dependencies: "@babel/helper-plugin-utils" "^7.24.7" +"@babel/plugin-syntax-typescript@^7.27.1": + version "7.27.1" + resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-typescript/-/plugin-syntax-typescript-7.27.1.tgz#5147d29066a793450f220c63fa3a9431b7e6dd18" + integrity sha512-xfYCBMxveHrRMnAWl1ZlPXOZjzkN82THFvLhQhFXFt81Z5HnN+EtUkZhv/zcKpmT3fzmWZB0ywiBrbC3vogbwQ== + dependencies: + "@babel/helper-plugin-utils" "^7.27.1" + "@babel/plugin-syntax-unicode-sets-regex@^7.18.6": version "7.18.6" resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-unicode-sets-regex/-/plugin-syntax-unicode-sets-regex-7.18.6.tgz#d49a3b3e6b52e5be6740022317580234a6a47357" @@ -579,6 +858,13 @@ dependencies: "@babel/helper-plugin-utils" "^7.24.7" +"@babel/plugin-transform-arrow-functions@^7.27.1": + version "7.27.1" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-arrow-functions/-/plugin-transform-arrow-functions-7.27.1.tgz#6e2061067ba3ab0266d834a9f94811196f2aba9a" + integrity sha512-8Z4TGic6xW70FKThA5HYEKKyBpOOsucTOD1DjU3fZxDg+K3zBJcXMFnt/4yQiZnf5+MiOMSXQ9PaEK/Ilh1DeA== + dependencies: + "@babel/helper-plugin-utils" "^7.27.1" + "@babel/plugin-transform-async-generator-functions@^7.25.0": version "7.25.0" resolved "https://registry.yarnpkg.com/@babel/plugin-transform-async-generator-functions/-/plugin-transform-async-generator-functions-7.25.0.tgz#b785cf35d73437f6276b1e30439a57a50747bddf" @@ -589,6 +875,15 @@ "@babel/plugin-syntax-async-generators" "^7.8.4" "@babel/traverse" "^7.25.0" +"@babel/plugin-transform-async-generator-functions@^7.28.0": + version "7.28.0" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-async-generator-functions/-/plugin-transform-async-generator-functions-7.28.0.tgz#1276e6c7285ab2cd1eccb0bc7356b7a69ff842c2" + integrity sha512-BEOdvX4+M765icNPZeidyADIvQ1m1gmunXufXxvRESy/jNNyfovIqUyE7MVgGBjWktCoJlzvFA1To2O4ymIO3Q== + dependencies: + "@babel/helper-plugin-utils" "^7.27.1" + "@babel/helper-remap-async-to-generator" "^7.27.1" + "@babel/traverse" "^7.28.0" + "@babel/plugin-transform-async-to-generator@^7.24.7": version "7.24.7" resolved "https://registry.yarnpkg.com/@babel/plugin-transform-async-to-generator/-/plugin-transform-async-to-generator-7.24.7.tgz#72a3af6c451d575842a7e9b5a02863414355bdcc" @@ -598,6 +893,15 @@ "@babel/helper-plugin-utils" "^7.24.7" "@babel/helper-remap-async-to-generator" "^7.24.7" +"@babel/plugin-transform-async-to-generator@^7.27.1": + version "7.27.1" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-async-to-generator/-/plugin-transform-async-to-generator-7.27.1.tgz#9a93893b9379b39466c74474f55af03de78c66e7" + integrity sha512-NREkZsZVJS4xmTr8qzE5y8AfIPqsdQfRuUiLRTEzb7Qii8iFWCyDKaUV2c0rCuh4ljDZ98ALHP/PetiBV2nddA== + dependencies: + "@babel/helper-module-imports" "^7.27.1" + "@babel/helper-plugin-utils" "^7.27.1" + "@babel/helper-remap-async-to-generator" "^7.27.1" + "@babel/plugin-transform-block-scoped-functions@^7.24.7": version "7.24.7" resolved "https://registry.yarnpkg.com/@babel/plugin-transform-block-scoped-functions/-/plugin-transform-block-scoped-functions-7.24.7.tgz#a4251d98ea0c0f399dafe1a35801eaba455bbf1f" @@ -605,6 +909,13 @@ dependencies: "@babel/helper-plugin-utils" "^7.24.7" +"@babel/plugin-transform-block-scoped-functions@^7.27.1": + version "7.27.1" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-block-scoped-functions/-/plugin-transform-block-scoped-functions-7.27.1.tgz#558a9d6e24cf72802dd3b62a4b51e0d62c0f57f9" + integrity sha512-cnqkuOtZLapWYZUYM5rVIdv1nXYuFVIltZ6ZJ7nIj585QsjKM5dhL2Fu/lICXZ1OyIAFc7Qy+bvDAtTXqGrlhg== + dependencies: + "@babel/helper-plugin-utils" "^7.27.1" + "@babel/plugin-transform-block-scoping@^7.25.0": version "7.25.0" resolved "https://registry.yarnpkg.com/@babel/plugin-transform-block-scoping/-/plugin-transform-block-scoping-7.25.0.tgz#23a6ed92e6b006d26b1869b1c91d1b917c2ea2ac" @@ -612,6 +923,13 @@ dependencies: "@babel/helper-plugin-utils" "^7.24.8" +"@babel/plugin-transform-block-scoping@^7.28.0": + version "7.28.0" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-block-scoping/-/plugin-transform-block-scoping-7.28.0.tgz#e7c50cbacc18034f210b93defa89638666099451" + integrity sha512-gKKnwjpdx5sER/wl0WN0efUBFzF/56YZO0RJrSYP4CljXnP31ByY7fol89AzomdlLNzI36AvOTmYHsnZTCkq8Q== + dependencies: + "@babel/helper-plugin-utils" "^7.27.1" + "@babel/plugin-transform-class-properties@^7.24.7": version "7.24.7" resolved "https://registry.yarnpkg.com/@babel/plugin-transform-class-properties/-/plugin-transform-class-properties-7.24.7.tgz#256879467b57b0b68c7ddfc5b76584f398cd6834" @@ -620,6 +938,14 @@ "@babel/helper-create-class-features-plugin" "^7.24.7" "@babel/helper-plugin-utils" "^7.24.7" +"@babel/plugin-transform-class-properties@^7.27.1": + version "7.27.1" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-class-properties/-/plugin-transform-class-properties-7.27.1.tgz#dd40a6a370dfd49d32362ae206ddaf2bb082a925" + integrity sha512-D0VcalChDMtuRvJIu3U/fwWjf8ZMykz5iZsg77Nuj821vCKI3zCyRLwRdWbsuJ/uRwZhZ002QtCqIkwC/ZkvbA== + dependencies: + "@babel/helper-create-class-features-plugin" "^7.27.1" + "@babel/helper-plugin-utils" "^7.27.1" + "@babel/plugin-transform-class-static-block@^7.24.7": version "7.24.7" resolved "https://registry.yarnpkg.com/@babel/plugin-transform-class-static-block/-/plugin-transform-class-static-block-7.24.7.tgz#c82027ebb7010bc33c116d4b5044fbbf8c05484d" @@ -629,6 +955,14 @@ "@babel/helper-plugin-utils" "^7.24.7" "@babel/plugin-syntax-class-static-block" "^7.14.5" +"@babel/plugin-transform-class-static-block@^7.27.1": + version "7.27.1" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-class-static-block/-/plugin-transform-class-static-block-7.27.1.tgz#7e920d5625b25bbccd3061aefbcc05805ed56ce4" + integrity sha512-s734HmYU78MVzZ++joYM+NkJusItbdRcbm+AGRgJCt3iA+yux0QpD9cBVdz3tKyrjVYWRl7j0mHSmv4lhV0aoA== + dependencies: + "@babel/helper-create-class-features-plugin" "^7.27.1" + "@babel/helper-plugin-utils" "^7.27.1" + "@babel/plugin-transform-classes@^7.25.0": version "7.25.0" resolved "https://registry.yarnpkg.com/@babel/plugin-transform-classes/-/plugin-transform-classes-7.25.0.tgz#63122366527d88e0ef61b612554fe3f8c793991e" @@ -641,6 +975,18 @@ "@babel/traverse" "^7.25.0" globals "^11.1.0" +"@babel/plugin-transform-classes@^7.28.0": + version "7.28.0" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-classes/-/plugin-transform-classes-7.28.0.tgz#12fa46cffc32a6e084011b650539e880add8a0f8" + integrity sha512-IjM1IoJNw72AZFlj33Cu8X0q2XK/6AaVC3jQu+cgQ5lThWD5ajnuUAml80dqRmOhmPkTH8uAwnpMu9Rvj0LTRA== + dependencies: + "@babel/helper-annotate-as-pure" "^7.27.3" + "@babel/helper-compilation-targets" "^7.27.2" + "@babel/helper-globals" "^7.28.0" + "@babel/helper-plugin-utils" "^7.27.1" + "@babel/helper-replace-supers" "^7.27.1" + "@babel/traverse" "^7.28.0" + "@babel/plugin-transform-computed-properties@^7.24.7": version "7.24.7" resolved "https://registry.yarnpkg.com/@babel/plugin-transform-computed-properties/-/plugin-transform-computed-properties-7.24.7.tgz#4cab3214e80bc71fae3853238d13d097b004c707" @@ -649,6 +995,14 @@ "@babel/helper-plugin-utils" "^7.24.7" "@babel/template" "^7.24.7" +"@babel/plugin-transform-computed-properties@^7.27.1": + version "7.27.1" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-computed-properties/-/plugin-transform-computed-properties-7.27.1.tgz#81662e78bf5e734a97982c2b7f0a793288ef3caa" + integrity sha512-lj9PGWvMTVksbWiDT2tW68zGS/cyo4AkZ/QTp0sQT0mjPopCmrSkzxeXkznjqBxzDI6TclZhOJbBmbBLjuOZUw== + dependencies: + "@babel/helper-plugin-utils" "^7.27.1" + "@babel/template" "^7.27.1" + "@babel/plugin-transform-destructuring@^7.24.8": version "7.24.8" resolved "https://registry.yarnpkg.com/@babel/plugin-transform-destructuring/-/plugin-transform-destructuring-7.24.8.tgz#c828e814dbe42a2718a838c2a2e16a408e055550" @@ -656,6 +1010,14 @@ dependencies: "@babel/helper-plugin-utils" "^7.24.8" +"@babel/plugin-transform-destructuring@^7.28.0": + version "7.28.0" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-destructuring/-/plugin-transform-destructuring-7.28.0.tgz#0f156588f69c596089b7d5b06f5af83d9aa7f97a" + integrity sha512-v1nrSMBiKcodhsyJ4Gf+Z0U/yawmJDBOTpEB3mcQY52r9RIyPneGyAS/yM6seP/8I+mWI3elOMtT5dB8GJVs+A== + dependencies: + "@babel/helper-plugin-utils" "^7.27.1" + "@babel/traverse" "^7.28.0" + "@babel/plugin-transform-dotall-regex@^7.24.7": version "7.24.7" resolved "https://registry.yarnpkg.com/@babel/plugin-transform-dotall-regex/-/plugin-transform-dotall-regex-7.24.7.tgz#5f8bf8a680f2116a7207e16288a5f974ad47a7a0" @@ -664,6 +1026,14 @@ "@babel/helper-create-regexp-features-plugin" "^7.24.7" "@babel/helper-plugin-utils" "^7.24.7" +"@babel/plugin-transform-dotall-regex@^7.27.1": + version "7.27.1" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-dotall-regex/-/plugin-transform-dotall-regex-7.27.1.tgz#aa6821de864c528b1fecf286f0a174e38e826f4d" + integrity sha512-gEbkDVGRvjj7+T1ivxrfgygpT7GUd4vmODtYpbs0gZATdkX8/iSnOtZSxiZnsgm1YjTgjI6VKBGSJJevkrclzw== + dependencies: + "@babel/helper-create-regexp-features-plugin" "^7.27.1" + "@babel/helper-plugin-utils" "^7.27.1" + "@babel/plugin-transform-duplicate-keys@^7.24.7": version "7.24.7" resolved "https://registry.yarnpkg.com/@babel/plugin-transform-duplicate-keys/-/plugin-transform-duplicate-keys-7.24.7.tgz#dd20102897c9a2324e5adfffb67ff3610359a8ee" @@ -671,6 +1041,13 @@ dependencies: "@babel/helper-plugin-utils" "^7.24.7" +"@babel/plugin-transform-duplicate-keys@^7.27.1": + version "7.27.1" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-duplicate-keys/-/plugin-transform-duplicate-keys-7.27.1.tgz#f1fbf628ece18e12e7b32b175940e68358f546d1" + integrity sha512-MTyJk98sHvSs+cvZ4nOauwTTG1JeonDjSGvGGUNHreGQns+Mpt6WX/dVzWBHgg+dYZhkC4X+zTDfkTU+Vy9y7Q== + dependencies: + "@babel/helper-plugin-utils" "^7.27.1" + "@babel/plugin-transform-duplicate-named-capturing-groups-regex@^7.25.0": version "7.25.0" resolved "https://registry.yarnpkg.com/@babel/plugin-transform-duplicate-named-capturing-groups-regex/-/plugin-transform-duplicate-named-capturing-groups-regex-7.25.0.tgz#809af7e3339466b49c034c683964ee8afb3e2604" @@ -679,6 +1056,14 @@ "@babel/helper-create-regexp-features-plugin" "^7.25.0" "@babel/helper-plugin-utils" "^7.24.8" +"@babel/plugin-transform-duplicate-named-capturing-groups-regex@^7.27.1": + version "7.27.1" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-duplicate-named-capturing-groups-regex/-/plugin-transform-duplicate-named-capturing-groups-regex-7.27.1.tgz#5043854ca620a94149372e69030ff8cb6a9eb0ec" + integrity sha512-hkGcueTEzuhB30B3eJCbCYeCaaEQOmQR0AdvzpD4LoN0GXMWzzGSuRrxR2xTnCrvNbVwK9N6/jQ92GSLfiZWoQ== + dependencies: + "@babel/helper-create-regexp-features-plugin" "^7.27.1" + "@babel/helper-plugin-utils" "^7.27.1" + "@babel/plugin-transform-dynamic-import@^7.24.7": version "7.24.7" resolved "https://registry.yarnpkg.com/@babel/plugin-transform-dynamic-import/-/plugin-transform-dynamic-import-7.24.7.tgz#4d8b95e3bae2b037673091aa09cd33fecd6419f4" @@ -687,6 +1072,21 @@ "@babel/helper-plugin-utils" "^7.24.7" "@babel/plugin-syntax-dynamic-import" "^7.8.3" +"@babel/plugin-transform-dynamic-import@^7.27.1": + version "7.27.1" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-dynamic-import/-/plugin-transform-dynamic-import-7.27.1.tgz#4c78f35552ac0e06aa1f6e3c573d67695e8af5a4" + integrity sha512-MHzkWQcEmjzzVW9j2q8LGjwGWpG2mjwaaB0BNQwst3FIjqsg8Ct/mIZlvSPJvfi9y2AC8mi/ktxbFVL9pZ1I4A== + dependencies: + "@babel/helper-plugin-utils" "^7.27.1" + +"@babel/plugin-transform-explicit-resource-management@^7.28.0": + version "7.28.0" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-explicit-resource-management/-/plugin-transform-explicit-resource-management-7.28.0.tgz#45be6211b778dbf4b9d54c4e8a2b42fa72e09a1a" + integrity sha512-K8nhUcn3f6iB+P3gwCv/no7OdzOZQcKchW6N389V6PD8NUWKZHzndOd9sPDVbMoBsbmjMqlB4L9fm+fEFNVlwQ== + dependencies: + "@babel/helper-plugin-utils" "^7.27.1" + "@babel/plugin-transform-destructuring" "^7.28.0" + "@babel/plugin-transform-exponentiation-operator@^7.24.7": version "7.24.7" resolved "https://registry.yarnpkg.com/@babel/plugin-transform-exponentiation-operator/-/plugin-transform-exponentiation-operator-7.24.7.tgz#b629ee22645f412024297d5245bce425c31f9b0d" @@ -695,6 +1095,13 @@ "@babel/helper-builder-binary-assignment-operator-visitor" "^7.24.7" "@babel/helper-plugin-utils" "^7.24.7" +"@babel/plugin-transform-exponentiation-operator@^7.27.1": + version "7.27.1" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-exponentiation-operator/-/plugin-transform-exponentiation-operator-7.27.1.tgz#fc497b12d8277e559747f5a3ed868dd8064f83e1" + integrity sha512-uspvXnhHvGKf2r4VVtBpeFnuDWsJLQ6MF6lGJLC89jBR1uoVeqM416AZtTuhTezOfgHicpJQmoD5YUakO/YmXQ== + dependencies: + "@babel/helper-plugin-utils" "^7.27.1" + "@babel/plugin-transform-export-namespace-from@^7.24.7": version "7.24.7" resolved "https://registry.yarnpkg.com/@babel/plugin-transform-export-namespace-from/-/plugin-transform-export-namespace-from-7.24.7.tgz#176d52d8d8ed516aeae7013ee9556d540c53f197" @@ -703,6 +1110,13 @@ "@babel/helper-plugin-utils" "^7.24.7" "@babel/plugin-syntax-export-namespace-from" "^7.8.3" +"@babel/plugin-transform-export-namespace-from@^7.27.1": + version "7.27.1" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-export-namespace-from/-/plugin-transform-export-namespace-from-7.27.1.tgz#71ca69d3471edd6daa711cf4dfc3400415df9c23" + integrity sha512-tQvHWSZ3/jH2xuq/vZDy0jNn+ZdXJeM8gHvX4lnJmsc3+50yPlWdZXIc5ay+umX+2/tJIqHqiEqcJvxlmIvRvQ== + dependencies: + "@babel/helper-plugin-utils" "^7.27.1" + "@babel/plugin-transform-for-of@^7.24.7": version "7.24.7" resolved "https://registry.yarnpkg.com/@babel/plugin-transform-for-of/-/plugin-transform-for-of-7.24.7.tgz#f25b33f72df1d8be76399e1b8f3f9d366eb5bc70" @@ -711,6 +1125,14 @@ "@babel/helper-plugin-utils" "^7.24.7" "@babel/helper-skip-transparent-expression-wrappers" "^7.24.7" +"@babel/plugin-transform-for-of@^7.27.1": + version "7.27.1" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-for-of/-/plugin-transform-for-of-7.27.1.tgz#bc24f7080e9ff721b63a70ac7b2564ca15b6c40a" + integrity sha512-BfbWFFEJFQzLCQ5N8VocnCtA8J1CLkNTe2Ms2wocj75dd6VpiqS5Z5quTYcUoo4Yq+DN0rtikODccuv7RU81sw== + dependencies: + "@babel/helper-plugin-utils" "^7.27.1" + "@babel/helper-skip-transparent-expression-wrappers" "^7.27.1" + "@babel/plugin-transform-function-name@^7.25.1": version "7.25.1" resolved "https://registry.yarnpkg.com/@babel/plugin-transform-function-name/-/plugin-transform-function-name-7.25.1.tgz#b85e773097526c1a4fc4ba27322748643f26fc37" @@ -720,6 +1142,15 @@ "@babel/helper-plugin-utils" "^7.24.8" "@babel/traverse" "^7.25.1" +"@babel/plugin-transform-function-name@^7.27.1": + version "7.27.1" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-function-name/-/plugin-transform-function-name-7.27.1.tgz#4d0bf307720e4dce6d7c30fcb1fd6ca77bdeb3a7" + integrity sha512-1bQeydJF9Nr1eBCMMbC+hdwmRlsv5XYOMu03YSWFwNs0HsAmtSxxF1fyuYPqemVldVyFmlCU7w8UE14LupUSZQ== + dependencies: + "@babel/helper-compilation-targets" "^7.27.1" + "@babel/helper-plugin-utils" "^7.27.1" + "@babel/traverse" "^7.27.1" + "@babel/plugin-transform-json-strings@^7.24.7": version "7.24.7" resolved "https://registry.yarnpkg.com/@babel/plugin-transform-json-strings/-/plugin-transform-json-strings-7.24.7.tgz#f3e9c37c0a373fee86e36880d45b3664cedaf73a" @@ -728,6 +1159,13 @@ "@babel/helper-plugin-utils" "^7.24.7" "@babel/plugin-syntax-json-strings" "^7.8.3" +"@babel/plugin-transform-json-strings@^7.27.1": + version "7.27.1" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-json-strings/-/plugin-transform-json-strings-7.27.1.tgz#a2e0ce6ef256376bd527f290da023983527a4f4c" + integrity sha512-6WVLVJiTjqcQauBhn1LkICsR2H+zm62I3h9faTDKt1qP4jn2o72tSvqMwtGFKGTpojce0gJs+76eZ2uCHRZh0Q== + dependencies: + "@babel/helper-plugin-utils" "^7.27.1" + "@babel/plugin-transform-literals@^7.25.2": version "7.25.2" resolved "https://registry.yarnpkg.com/@babel/plugin-transform-literals/-/plugin-transform-literals-7.25.2.tgz#deb1ad14fc5490b9a65ed830e025bca849d8b5f3" @@ -735,6 +1173,13 @@ dependencies: "@babel/helper-plugin-utils" "^7.24.8" +"@babel/plugin-transform-literals@^7.27.1": + version "7.27.1" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-literals/-/plugin-transform-literals-7.27.1.tgz#baaefa4d10a1d4206f9dcdda50d7d5827bb70b24" + integrity sha512-0HCFSepIpLTkLcsi86GG3mTUzxV5jpmbv97hTETW3yzrAij8aqlD36toB1D0daVFJM8NK6GvKO0gslVQmm+zZA== + dependencies: + "@babel/helper-plugin-utils" "^7.27.1" + "@babel/plugin-transform-logical-assignment-operators@^7.24.7": version "7.24.7" resolved "https://registry.yarnpkg.com/@babel/plugin-transform-logical-assignment-operators/-/plugin-transform-logical-assignment-operators-7.24.7.tgz#a58fb6eda16c9dc8f9ff1c7b1ba6deb7f4694cb0" @@ -743,6 +1188,13 @@ "@babel/helper-plugin-utils" "^7.24.7" "@babel/plugin-syntax-logical-assignment-operators" "^7.10.4" +"@babel/plugin-transform-logical-assignment-operators@^7.27.1": + version "7.27.1" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-logical-assignment-operators/-/plugin-transform-logical-assignment-operators-7.27.1.tgz#890cb20e0270e0e5bebe3f025b434841c32d5baa" + integrity sha512-SJvDs5dXxiae4FbSL1aBJlG4wvl594N6YEVVn9e3JGulwioy6z3oPjx/sQBO3Y4NwUu5HNix6KJ3wBZoewcdbw== + dependencies: + "@babel/helper-plugin-utils" "^7.27.1" + "@babel/plugin-transform-member-expression-literals@^7.24.7": version "7.24.7" resolved "https://registry.yarnpkg.com/@babel/plugin-transform-member-expression-literals/-/plugin-transform-member-expression-literals-7.24.7.tgz#3b4454fb0e302e18ba4945ba3246acb1248315df" @@ -750,6 +1202,13 @@ dependencies: "@babel/helper-plugin-utils" "^7.24.7" +"@babel/plugin-transform-member-expression-literals@^7.27.1": + version "7.27.1" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-member-expression-literals/-/plugin-transform-member-expression-literals-7.27.1.tgz#37b88ba594d852418e99536f5612f795f23aeaf9" + integrity sha512-hqoBX4dcZ1I33jCSWcXrP+1Ku7kdqXf1oeah7ooKOIiAdKQ+uqftgCFNOSzA5AMS2XIHEYeGFg4cKRCdpxzVOQ== + dependencies: + "@babel/helper-plugin-utils" "^7.27.1" + "@babel/plugin-transform-modules-amd@^7.24.7": version "7.24.7" resolved "https://registry.yarnpkg.com/@babel/plugin-transform-modules-amd/-/plugin-transform-modules-amd-7.24.7.tgz#65090ed493c4a834976a3ca1cde776e6ccff32d7" @@ -758,6 +1217,14 @@ "@babel/helper-module-transforms" "^7.24.7" "@babel/helper-plugin-utils" "^7.24.7" +"@babel/plugin-transform-modules-amd@^7.27.1": + version "7.27.1" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-modules-amd/-/plugin-transform-modules-amd-7.27.1.tgz#a4145f9d87c2291fe2d05f994b65dba4e3e7196f" + integrity sha512-iCsytMg/N9/oFq6n+gFTvUYDZQOMK5kEdeYxmxt91fcJGycfxVP9CnrxoliM0oumFERba2i8ZtwRUCMhvP1LnA== + dependencies: + "@babel/helper-module-transforms" "^7.27.1" + "@babel/helper-plugin-utils" "^7.27.1" + "@babel/plugin-transform-modules-commonjs@^7.24.7", "@babel/plugin-transform-modules-commonjs@^7.24.8": version "7.24.8" resolved "https://registry.yarnpkg.com/@babel/plugin-transform-modules-commonjs/-/plugin-transform-modules-commonjs-7.24.8.tgz#ab6421e564b717cb475d6fff70ae7f103536ea3c" @@ -767,6 +1234,14 @@ "@babel/helper-plugin-utils" "^7.24.8" "@babel/helper-simple-access" "^7.24.7" +"@babel/plugin-transform-modules-commonjs@^7.27.1": + version "7.27.1" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-modules-commonjs/-/plugin-transform-modules-commonjs-7.27.1.tgz#8e44ed37c2787ecc23bdc367f49977476614e832" + integrity sha512-OJguuwlTYlN0gBZFRPqwOGNWssZjfIUdS7HMYtN8c1KmwpwHFBwTeFZrg9XZa+DFTitWOW5iTAG7tyCUPsCCyw== + dependencies: + "@babel/helper-module-transforms" "^7.27.1" + "@babel/helper-plugin-utils" "^7.27.1" + "@babel/plugin-transform-modules-systemjs@^7.25.0": version "7.25.0" resolved "https://registry.yarnpkg.com/@babel/plugin-transform-modules-systemjs/-/plugin-transform-modules-systemjs-7.25.0.tgz#8f46cdc5f9e5af74f3bd019485a6cbe59685ea33" @@ -777,6 +1252,16 @@ "@babel/helper-validator-identifier" "^7.24.7" "@babel/traverse" "^7.25.0" +"@babel/plugin-transform-modules-systemjs@^7.27.1": + version "7.27.1" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-modules-systemjs/-/plugin-transform-modules-systemjs-7.27.1.tgz#00e05b61863070d0f3292a00126c16c0e024c4ed" + integrity sha512-w5N1XzsRbc0PQStASMksmUeqECuzKuTJer7kFagK8AXgpCMkeDMO5S+aaFb7A51ZYDF7XI34qsTX+fkHiIm5yA== + dependencies: + "@babel/helper-module-transforms" "^7.27.1" + "@babel/helper-plugin-utils" "^7.27.1" + "@babel/helper-validator-identifier" "^7.27.1" + "@babel/traverse" "^7.27.1" + "@babel/plugin-transform-modules-umd@^7.24.7": version "7.24.7" resolved "https://registry.yarnpkg.com/@babel/plugin-transform-modules-umd/-/plugin-transform-modules-umd-7.24.7.tgz#edd9f43ec549099620df7df24e7ba13b5c76efc8" @@ -785,6 +1270,14 @@ "@babel/helper-module-transforms" "^7.24.7" "@babel/helper-plugin-utils" "^7.24.7" +"@babel/plugin-transform-modules-umd@^7.27.1": + version "7.27.1" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-modules-umd/-/plugin-transform-modules-umd-7.27.1.tgz#63f2cf4f6dc15debc12f694e44714863d34cd334" + integrity sha512-iQBE/xC5BV1OxJbp6WG7jq9IWiD+xxlZhLrdwpPkTX3ydmXdvoCpyfJN7acaIBZaOqTfr76pgzqBJflNbeRK+w== + dependencies: + "@babel/helper-module-transforms" "^7.27.1" + "@babel/helper-plugin-utils" "^7.27.1" + "@babel/plugin-transform-named-capturing-groups-regex@^7.24.7": version "7.24.7" resolved "https://registry.yarnpkg.com/@babel/plugin-transform-named-capturing-groups-regex/-/plugin-transform-named-capturing-groups-regex-7.24.7.tgz#9042e9b856bc6b3688c0c2e4060e9e10b1460923" @@ -793,6 +1286,14 @@ "@babel/helper-create-regexp-features-plugin" "^7.24.7" "@babel/helper-plugin-utils" "^7.24.7" +"@babel/plugin-transform-named-capturing-groups-regex@^7.27.1": + version "7.27.1" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-named-capturing-groups-regex/-/plugin-transform-named-capturing-groups-regex-7.27.1.tgz#f32b8f7818d8fc0cc46ee20a8ef75f071af976e1" + integrity sha512-SstR5JYy8ddZvD6MhV0tM/j16Qds4mIpJTOd1Yu9J9pJjH93bxHECF7pgtc28XvkzTD6Pxcm/0Z73Hvk7kb3Ng== + dependencies: + "@babel/helper-create-regexp-features-plugin" "^7.27.1" + "@babel/helper-plugin-utils" "^7.27.1" + "@babel/plugin-transform-new-target@^7.24.7": version "7.24.7" resolved "https://registry.yarnpkg.com/@babel/plugin-transform-new-target/-/plugin-transform-new-target-7.24.7.tgz#31ff54c4e0555cc549d5816e4ab39241dfb6ab00" @@ -800,6 +1301,13 @@ dependencies: "@babel/helper-plugin-utils" "^7.24.7" +"@babel/plugin-transform-new-target@^7.27.1": + version "7.27.1" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-new-target/-/plugin-transform-new-target-7.27.1.tgz#259c43939728cad1706ac17351b7e6a7bea1abeb" + integrity sha512-f6PiYeqXQ05lYq3TIfIDu/MtliKUbNwkGApPUvyo6+tc7uaR4cPjPe7DFPr15Uyycg2lZU6btZ575CuQoYh7MQ== + dependencies: + "@babel/helper-plugin-utils" "^7.27.1" + "@babel/plugin-transform-nullish-coalescing-operator@^7.24.7": version "7.24.7" resolved "https://registry.yarnpkg.com/@babel/plugin-transform-nullish-coalescing-operator/-/plugin-transform-nullish-coalescing-operator-7.24.7.tgz#1de4534c590af9596f53d67f52a92f12db984120" @@ -808,6 +1316,13 @@ "@babel/helper-plugin-utils" "^7.24.7" "@babel/plugin-syntax-nullish-coalescing-operator" "^7.8.3" +"@babel/plugin-transform-nullish-coalescing-operator@^7.27.1": + version "7.27.1" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-nullish-coalescing-operator/-/plugin-transform-nullish-coalescing-operator-7.27.1.tgz#4f9d3153bf6782d73dd42785a9d22d03197bc91d" + integrity sha512-aGZh6xMo6q9vq1JGcw58lZ1Z0+i0xB2x0XaauNIUXd6O1xXc3RwoWEBlsTQrY4KQ9Jf0s5rgD6SiNkaUdJegTA== + dependencies: + "@babel/helper-plugin-utils" "^7.27.1" + "@babel/plugin-transform-numeric-separator@^7.24.7": version "7.24.7" resolved "https://registry.yarnpkg.com/@babel/plugin-transform-numeric-separator/-/plugin-transform-numeric-separator-7.24.7.tgz#bea62b538c80605d8a0fac9b40f48e97efa7de63" @@ -816,6 +1331,13 @@ "@babel/helper-plugin-utils" "^7.24.7" "@babel/plugin-syntax-numeric-separator" "^7.10.4" +"@babel/plugin-transform-numeric-separator@^7.27.1": + version "7.27.1" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-numeric-separator/-/plugin-transform-numeric-separator-7.27.1.tgz#614e0b15cc800e5997dadd9bd6ea524ed6c819c6" + integrity sha512-fdPKAcujuvEChxDBJ5c+0BTaS6revLV7CJL08e4m3de8qJfNIuCc2nc7XJYOjBoTMJeqSmwXJ0ypE14RCjLwaw== + dependencies: + "@babel/helper-plugin-utils" "^7.27.1" + "@babel/plugin-transform-object-rest-spread@^7.24.7": version "7.24.7" resolved "https://registry.yarnpkg.com/@babel/plugin-transform-object-rest-spread/-/plugin-transform-object-rest-spread-7.24.7.tgz#d13a2b93435aeb8a197e115221cab266ba6e55d6" @@ -826,6 +1348,17 @@ "@babel/plugin-syntax-object-rest-spread" "^7.8.3" "@babel/plugin-transform-parameters" "^7.24.7" +"@babel/plugin-transform-object-rest-spread@^7.28.0": + version "7.28.0" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-object-rest-spread/-/plugin-transform-object-rest-spread-7.28.0.tgz#d23021857ffd7cd809f54d624299b8086402ed8d" + integrity sha512-9VNGikXxzu5eCiQjdE4IZn8sb9q7Xsk5EXLDBKUYg1e/Tve8/05+KJEtcxGxAgCY5t/BpKQM+JEL/yT4tvgiUA== + dependencies: + "@babel/helper-compilation-targets" "^7.27.2" + "@babel/helper-plugin-utils" "^7.27.1" + "@babel/plugin-transform-destructuring" "^7.28.0" + "@babel/plugin-transform-parameters" "^7.27.7" + "@babel/traverse" "^7.28.0" + "@babel/plugin-transform-object-super@^7.24.7": version "7.24.7" resolved "https://registry.yarnpkg.com/@babel/plugin-transform-object-super/-/plugin-transform-object-super-7.24.7.tgz#66eeaff7830bba945dd8989b632a40c04ed625be" @@ -834,6 +1367,14 @@ "@babel/helper-plugin-utils" "^7.24.7" "@babel/helper-replace-supers" "^7.24.7" +"@babel/plugin-transform-object-super@^7.27.1": + version "7.27.1" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-object-super/-/plugin-transform-object-super-7.27.1.tgz#1c932cd27bf3874c43a5cac4f43ebf970c9871b5" + integrity sha512-SFy8S9plRPbIcxlJ8A6mT/CxFdJx/c04JEctz4jf8YZaVS2px34j7NXRrlGlHkN/M2gnpL37ZpGRGVFLd3l8Ng== + dependencies: + "@babel/helper-plugin-utils" "^7.27.1" + "@babel/helper-replace-supers" "^7.27.1" + "@babel/plugin-transform-optional-catch-binding@^7.24.7": version "7.24.7" resolved "https://registry.yarnpkg.com/@babel/plugin-transform-optional-catch-binding/-/plugin-transform-optional-catch-binding-7.24.7.tgz#00eabd883d0dd6a60c1c557548785919b6e717b4" @@ -842,6 +1383,13 @@ "@babel/helper-plugin-utils" "^7.24.7" "@babel/plugin-syntax-optional-catch-binding" "^7.8.3" +"@babel/plugin-transform-optional-catch-binding@^7.27.1": + version "7.27.1" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-optional-catch-binding/-/plugin-transform-optional-catch-binding-7.27.1.tgz#84c7341ebde35ccd36b137e9e45866825072a30c" + integrity sha512-txEAEKzYrHEX4xSZN4kJ+OfKXFVSWKB2ZxM9dpcE3wT7smwkNmXo5ORRlVzMVdJbD+Q8ILTgSD7959uj+3Dm3Q== + dependencies: + "@babel/helper-plugin-utils" "^7.27.1" + "@babel/plugin-transform-optional-chaining@^7.24.7", "@babel/plugin-transform-optional-chaining@^7.24.8": version "7.24.8" resolved "https://registry.yarnpkg.com/@babel/plugin-transform-optional-chaining/-/plugin-transform-optional-chaining-7.24.8.tgz#bb02a67b60ff0406085c13d104c99a835cdf365d" @@ -851,6 +1399,14 @@ "@babel/helper-skip-transparent-expression-wrappers" "^7.24.7" "@babel/plugin-syntax-optional-chaining" "^7.8.3" +"@babel/plugin-transform-optional-chaining@^7.27.1": + version "7.27.1" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-optional-chaining/-/plugin-transform-optional-chaining-7.27.1.tgz#874ce3c4f06b7780592e946026eb76a32830454f" + integrity sha512-BQmKPPIuc8EkZgNKsv0X4bPmOoayeu4F1YCwx2/CfmDSXDbp7GnzlUH+/ul5VGfRg1AoFPsrIThlEBj2xb4CAg== + dependencies: + "@babel/helper-plugin-utils" "^7.27.1" + "@babel/helper-skip-transparent-expression-wrappers" "^7.27.1" + "@babel/plugin-transform-parameters@^7.24.7": version "7.24.7" resolved "https://registry.yarnpkg.com/@babel/plugin-transform-parameters/-/plugin-transform-parameters-7.24.7.tgz#5881f0ae21018400e320fc7eb817e529d1254b68" @@ -858,6 +1414,13 @@ dependencies: "@babel/helper-plugin-utils" "^7.24.7" +"@babel/plugin-transform-parameters@^7.27.7": + version "7.27.7" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-parameters/-/plugin-transform-parameters-7.27.7.tgz#1fd2febb7c74e7d21cf3b05f7aebc907940af53a" + integrity sha512-qBkYTYCb76RRxUM6CcZA5KRu8K4SM8ajzVeUgVdMVO9NN9uI/GaVmBg/WKJJGnNokV9SY8FxNOVWGXzqzUidBg== + dependencies: + "@babel/helper-plugin-utils" "^7.27.1" + "@babel/plugin-transform-private-methods@^7.24.7": version "7.24.7" resolved "https://registry.yarnpkg.com/@babel/plugin-transform-private-methods/-/plugin-transform-private-methods-7.24.7.tgz#e6318746b2ae70a59d023d5cc1344a2ba7a75f5e" @@ -866,6 +1429,14 @@ "@babel/helper-create-class-features-plugin" "^7.24.7" "@babel/helper-plugin-utils" "^7.24.7" +"@babel/plugin-transform-private-methods@^7.27.1": + version "7.27.1" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-private-methods/-/plugin-transform-private-methods-7.27.1.tgz#fdacbab1c5ed81ec70dfdbb8b213d65da148b6af" + integrity sha512-10FVt+X55AjRAYI9BrdISN9/AQWHqldOeZDUoLyif1Kn05a56xVBXb8ZouL8pZ9jem8QpXaOt8TS7RHUIS+GPA== + dependencies: + "@babel/helper-create-class-features-plugin" "^7.27.1" + "@babel/helper-plugin-utils" "^7.27.1" + "@babel/plugin-transform-private-property-in-object@^7.24.7": version "7.24.7" resolved "https://registry.yarnpkg.com/@babel/plugin-transform-private-property-in-object/-/plugin-transform-private-property-in-object-7.24.7.tgz#4eec6bc701288c1fab5f72e6a4bbc9d67faca061" @@ -876,6 +1447,15 @@ "@babel/helper-plugin-utils" "^7.24.7" "@babel/plugin-syntax-private-property-in-object" "^7.14.5" +"@babel/plugin-transform-private-property-in-object@^7.27.1": + version "7.27.1" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-private-property-in-object/-/plugin-transform-private-property-in-object-7.27.1.tgz#4dbbef283b5b2f01a21e81e299f76e35f900fb11" + integrity sha512-5J+IhqTi1XPa0DXF83jYOaARrX+41gOewWbkPyjMNRDqgOCqdffGh8L3f/Ek5utaEBZExjSAzcyjmV9SSAWObQ== + dependencies: + "@babel/helper-annotate-as-pure" "^7.27.1" + "@babel/helper-create-class-features-plugin" "^7.27.1" + "@babel/helper-plugin-utils" "^7.27.1" + "@babel/plugin-transform-property-literals@^7.24.7": version "7.24.7" resolved "https://registry.yarnpkg.com/@babel/plugin-transform-property-literals/-/plugin-transform-property-literals-7.24.7.tgz#f0d2ed8380dfbed949c42d4d790266525d63bbdc" @@ -883,6 +1463,13 @@ dependencies: "@babel/helper-plugin-utils" "^7.24.7" +"@babel/plugin-transform-property-literals@^7.27.1": + version "7.27.1" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-property-literals/-/plugin-transform-property-literals-7.27.1.tgz#07eafd618800591e88073a0af1b940d9a42c6424" + integrity sha512-oThy3BCuCha8kDZ8ZkgOg2exvPYUlprMukKQXI1r1pJ47NCvxfkEy8vK+r/hT9nF0Aa4H1WUPZZjHTFtAhGfmQ== + dependencies: + "@babel/helper-plugin-utils" "^7.27.1" + "@babel/plugin-transform-react-constant-elements@^7.21.3": version "7.25.1" resolved "https://registry.yarnpkg.com/@babel/plugin-transform-react-constant-elements/-/plugin-transform-react-constant-elements-7.25.1.tgz#71a665ed16ce618067d05f4a98130207349d82ae" @@ -897,6 +1484,13 @@ dependencies: "@babel/helper-plugin-utils" "^7.24.7" +"@babel/plugin-transform-react-display-name@^7.27.1": + version "7.28.0" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-react-display-name/-/plugin-transform-react-display-name-7.28.0.tgz#6f20a7295fea7df42eb42fed8f896813f5b934de" + integrity sha512-D6Eujc2zMxKjfa4Zxl4GHMsmhKKZ9VpcqIchJLvwTxad9zWIYulwYItBovpDOoNLISpcZSXoDJ5gaGbQUDqViA== + dependencies: + "@babel/helper-plugin-utils" "^7.27.1" + "@babel/plugin-transform-react-jsx-development@^7.24.7": version "7.24.7" resolved "https://registry.yarnpkg.com/@babel/plugin-transform-react-jsx-development/-/plugin-transform-react-jsx-development-7.24.7.tgz#eaee12f15a93f6496d852509a850085e6361470b" @@ -904,6 +1498,13 @@ dependencies: "@babel/plugin-transform-react-jsx" "^7.24.7" +"@babel/plugin-transform-react-jsx-development@^7.27.1": + version "7.27.1" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-react-jsx-development/-/plugin-transform-react-jsx-development-7.27.1.tgz#47ff95940e20a3a70e68ad3d4fcb657b647f6c98" + integrity sha512-ykDdF5yI4f1WrAolLqeF3hmYU12j9ntLQl/AOG1HAS21jxyg1Q0/J/tpREuYLfatGdGmXp/3yS0ZA76kOlVq9Q== + dependencies: + "@babel/plugin-transform-react-jsx" "^7.27.1" + "@babel/plugin-transform-react-jsx@^7.24.7": version "7.25.2" resolved "https://registry.yarnpkg.com/@babel/plugin-transform-react-jsx/-/plugin-transform-react-jsx-7.25.2.tgz#e37e8ebfa77e9f0b16ba07fadcb6adb47412227a" @@ -915,6 +1516,17 @@ "@babel/plugin-syntax-jsx" "^7.24.7" "@babel/types" "^7.25.2" +"@babel/plugin-transform-react-jsx@^7.27.1": + version "7.27.1" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-react-jsx/-/plugin-transform-react-jsx-7.27.1.tgz#1023bc94b78b0a2d68c82b5e96aed573bcfb9db0" + integrity sha512-2KH4LWGSrJIkVf5tSiBFYuXDAoWRq2MMwgivCf+93dd0GQi8RXLjKA/0EvRnVV5G0hrHczsquXuD01L8s6dmBw== + dependencies: + "@babel/helper-annotate-as-pure" "^7.27.1" + "@babel/helper-module-imports" "^7.27.1" + "@babel/helper-plugin-utils" "^7.27.1" + "@babel/plugin-syntax-jsx" "^7.27.1" + "@babel/types" "^7.27.1" + "@babel/plugin-transform-react-pure-annotations@^7.24.7": version "7.24.7" resolved "https://registry.yarnpkg.com/@babel/plugin-transform-react-pure-annotations/-/plugin-transform-react-pure-annotations-7.24.7.tgz#bdd9d140d1c318b4f28b29a00fb94f97ecab1595" @@ -923,6 +1535,14 @@ "@babel/helper-annotate-as-pure" "^7.24.7" "@babel/helper-plugin-utils" "^7.24.7" +"@babel/plugin-transform-react-pure-annotations@^7.27.1": + version "7.27.1" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-react-pure-annotations/-/plugin-transform-react-pure-annotations-7.27.1.tgz#339f1ce355eae242e0649f232b1c68907c02e879" + integrity sha512-JfuinvDOsD9FVMTHpzA/pBLisxpv1aSf+OIV8lgH3MuWrks19R27e6a6DipIg4aX1Zm9Wpb04p8wljfKrVSnPA== + dependencies: + "@babel/helper-annotate-as-pure" "^7.27.1" + "@babel/helper-plugin-utils" "^7.27.1" + "@babel/plugin-transform-regenerator@^7.24.7": version "7.24.7" resolved "https://registry.yarnpkg.com/@babel/plugin-transform-regenerator/-/plugin-transform-regenerator-7.24.7.tgz#021562de4534d8b4b1851759fd7af4e05d2c47f8" @@ -931,6 +1551,21 @@ "@babel/helper-plugin-utils" "^7.24.7" regenerator-transform "^0.15.2" +"@babel/plugin-transform-regenerator@^7.28.0": + version "7.28.1" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-regenerator/-/plugin-transform-regenerator-7.28.1.tgz#bde80603442ff4bb4e910bc8b35485295d556ab1" + integrity sha512-P0QiV/taaa3kXpLY+sXla5zec4E+4t4Aqc9ggHlfZ7a2cp8/x/Gv08jfwEtn9gnnYIMvHx6aoOZ8XJL8eU71Dg== + dependencies: + "@babel/helper-plugin-utils" "^7.27.1" + +"@babel/plugin-transform-regexp-modifiers@^7.27.1": + version "7.27.1" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-regexp-modifiers/-/plugin-transform-regexp-modifiers-7.27.1.tgz#df9ba5577c974e3f1449888b70b76169998a6d09" + integrity sha512-TtEciroaiODtXvLZv4rmfMhkCv8jx3wgKpL68PuiPh2M4fvz5jhsA7697N1gMvkvr/JTF13DrFYyEbY9U7cVPA== + dependencies: + "@babel/helper-create-regexp-features-plugin" "^7.27.1" + "@babel/helper-plugin-utils" "^7.27.1" + "@babel/plugin-transform-reserved-words@^7.24.7": version "7.24.7" resolved "https://registry.yarnpkg.com/@babel/plugin-transform-reserved-words/-/plugin-transform-reserved-words-7.24.7.tgz#80037fe4fbf031fc1125022178ff3938bb3743a4" @@ -938,16 +1573,23 @@ dependencies: "@babel/helper-plugin-utils" "^7.24.7" -"@babel/plugin-transform-runtime@^7.22.9": - version "7.24.7" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-runtime/-/plugin-transform-runtime-7.24.7.tgz#00a5bfaf8c43cf5c8703a8a6e82b59d9c58f38ca" - integrity sha512-YqXjrk4C+a1kZjewqt+Mmu2UuV1s07y8kqcUf4qYLnoqemhR4gRQikhdAhSVJioMjVTu6Mo6pAbaypEA3jY6fw== +"@babel/plugin-transform-reserved-words@^7.27.1": + version "7.27.1" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-reserved-words/-/plugin-transform-reserved-words-7.27.1.tgz#40fba4878ccbd1c56605a4479a3a891ac0274bb4" + integrity sha512-V2ABPHIJX4kC7HegLkYoDpfg9PVmuWy/i6vUM5eGK22bx4YVFD3M5F0QQnWQoDs6AGsUWTVOopBiMFQgHaSkVw== dependencies: - "@babel/helper-module-imports" "^7.24.7" - "@babel/helper-plugin-utils" "^7.24.7" - babel-plugin-polyfill-corejs2 "^0.4.10" - babel-plugin-polyfill-corejs3 "^0.10.1" - babel-plugin-polyfill-regenerator "^0.6.1" + "@babel/helper-plugin-utils" "^7.27.1" + +"@babel/plugin-transform-runtime@^7.25.9": + version "7.28.0" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-runtime/-/plugin-transform-runtime-7.28.0.tgz#462e79008cc7bdac03e4c5e1765b9de2bcd31c21" + integrity sha512-dGopk9nZrtCs2+nfIem25UuHyt5moSJamArzIoh9/vezUQPmYDOzjaHDCkAzuGJibCIkPup8rMT2+wYB6S73cA== + dependencies: + "@babel/helper-module-imports" "^7.27.1" + "@babel/helper-plugin-utils" "^7.27.1" + babel-plugin-polyfill-corejs2 "^0.4.14" + babel-plugin-polyfill-corejs3 "^0.13.0" + babel-plugin-polyfill-regenerator "^0.6.5" semver "^6.3.1" "@babel/plugin-transform-shorthand-properties@^7.24.7": @@ -957,6 +1599,13 @@ dependencies: "@babel/helper-plugin-utils" "^7.24.7" +"@babel/plugin-transform-shorthand-properties@^7.27.1": + version "7.27.1" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-shorthand-properties/-/plugin-transform-shorthand-properties-7.27.1.tgz#532abdacdec87bfee1e0ef8e2fcdee543fe32b90" + integrity sha512-N/wH1vcn4oYawbJ13Y/FxcQrWk63jhfNa7jef0ih7PHSIHX2LB7GWE1rkPrOnka9kwMxb6hMl19p7lidA+EHmQ== + dependencies: + "@babel/helper-plugin-utils" "^7.27.1" + "@babel/plugin-transform-spread@^7.24.7": version "7.24.7" resolved "https://registry.yarnpkg.com/@babel/plugin-transform-spread/-/plugin-transform-spread-7.24.7.tgz#e8a38c0fde7882e0fb8f160378f74bd885cc7bb3" @@ -965,6 +1614,14 @@ "@babel/helper-plugin-utils" "^7.24.7" "@babel/helper-skip-transparent-expression-wrappers" "^7.24.7" +"@babel/plugin-transform-spread@^7.27.1": + version "7.27.1" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-spread/-/plugin-transform-spread-7.27.1.tgz#1a264d5fc12750918f50e3fe3e24e437178abb08" + integrity sha512-kpb3HUqaILBJcRFVhFUs6Trdd4mkrzcGXss+6/mxUd273PfbWqSDHRzMT2234gIg2QYfAjvXLSquP1xECSg09Q== + dependencies: + "@babel/helper-plugin-utils" "^7.27.1" + "@babel/helper-skip-transparent-expression-wrappers" "^7.27.1" + "@babel/plugin-transform-sticky-regex@^7.24.7": version "7.24.7" resolved "https://registry.yarnpkg.com/@babel/plugin-transform-sticky-regex/-/plugin-transform-sticky-regex-7.24.7.tgz#96ae80d7a7e5251f657b5cf18f1ea6bf926f5feb" @@ -972,6 +1629,13 @@ dependencies: "@babel/helper-plugin-utils" "^7.24.7" +"@babel/plugin-transform-sticky-regex@^7.27.1": + version "7.27.1" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-sticky-regex/-/plugin-transform-sticky-regex-7.27.1.tgz#18984935d9d2296843a491d78a014939f7dcd280" + integrity sha512-lhInBO5bi/Kowe2/aLdBAawijx+q1pQzicSgnkB6dUPc1+RC8QmJHKf2OjvU+NZWitguJHEaEmbV6VWEouT58g== + dependencies: + "@babel/helper-plugin-utils" "^7.27.1" + "@babel/plugin-transform-template-literals@^7.24.7": version "7.24.7" resolved "https://registry.yarnpkg.com/@babel/plugin-transform-template-literals/-/plugin-transform-template-literals-7.24.7.tgz#a05debb4a9072ae8f985bcf77f3f215434c8f8c8" @@ -979,6 +1643,13 @@ dependencies: "@babel/helper-plugin-utils" "^7.24.7" +"@babel/plugin-transform-template-literals@^7.27.1": + version "7.27.1" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-template-literals/-/plugin-transform-template-literals-7.27.1.tgz#1a0eb35d8bb3e6efc06c9fd40eb0bcef548328b8" + integrity sha512-fBJKiV7F2DxZUkg5EtHKXQdbsbURW3DZKQUWphDum0uRP6eHGGa/He9mc0mypL680pb+e/lDIthRohlv8NCHkg== + dependencies: + "@babel/helper-plugin-utils" "^7.27.1" + "@babel/plugin-transform-typeof-symbol@^7.24.8": version "7.24.8" resolved "https://registry.yarnpkg.com/@babel/plugin-transform-typeof-symbol/-/plugin-transform-typeof-symbol-7.24.8.tgz#383dab37fb073f5bfe6e60c654caac309f92ba1c" @@ -986,6 +1657,13 @@ dependencies: "@babel/helper-plugin-utils" "^7.24.8" +"@babel/plugin-transform-typeof-symbol@^7.27.1": + version "7.27.1" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-typeof-symbol/-/plugin-transform-typeof-symbol-7.27.1.tgz#70e966bb492e03509cf37eafa6dcc3051f844369" + integrity sha512-RiSILC+nRJM7FY5srIyc4/fGIwUhyDuuBSdWn4y6yT6gm652DpCHZjIipgn6B7MQ1ITOUnAKWixEUjQRIBIcLw== + dependencies: + "@babel/helper-plugin-utils" "^7.27.1" + "@babel/plugin-transform-typescript@^7.24.7": version "7.25.2" resolved "https://registry.yarnpkg.com/@babel/plugin-transform-typescript/-/plugin-transform-typescript-7.25.2.tgz#237c5d10de6d493be31637c6b9fa30b6c5461add" @@ -997,6 +1675,17 @@ "@babel/helper-skip-transparent-expression-wrappers" "^7.24.7" "@babel/plugin-syntax-typescript" "^7.24.7" +"@babel/plugin-transform-typescript@^7.27.1": + version "7.28.0" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-typescript/-/plugin-transform-typescript-7.28.0.tgz#796cbd249ab56c18168b49e3e1d341b72af04a6b" + integrity sha512-4AEiDEBPIZvLQaWlc9liCavE0xRM0dNca41WtBeM3jgFptfUOSG9z0uteLhq6+3rq+WB6jIvUwKDTpXEHPJ2Vg== + dependencies: + "@babel/helper-annotate-as-pure" "^7.27.3" + "@babel/helper-create-class-features-plugin" "^7.27.1" + "@babel/helper-plugin-utils" "^7.27.1" + "@babel/helper-skip-transparent-expression-wrappers" "^7.27.1" + "@babel/plugin-syntax-typescript" "^7.27.1" + "@babel/plugin-transform-unicode-escapes@^7.24.7": version "7.24.7" resolved "https://registry.yarnpkg.com/@babel/plugin-transform-unicode-escapes/-/plugin-transform-unicode-escapes-7.24.7.tgz#2023a82ced1fb4971630a2e079764502c4148e0e" @@ -1004,6 +1693,13 @@ dependencies: "@babel/helper-plugin-utils" "^7.24.7" +"@babel/plugin-transform-unicode-escapes@^7.27.1": + version "7.27.1" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-unicode-escapes/-/plugin-transform-unicode-escapes-7.27.1.tgz#3e3143f8438aef842de28816ece58780190cf806" + integrity sha512-Ysg4v6AmF26k9vpfFuTZg8HRfVWzsh1kVfowA23y9j/Gu6dOuahdUVhkLqpObp3JIv27MLSii6noRnuKN8H0Mg== + dependencies: + "@babel/helper-plugin-utils" "^7.27.1" + "@babel/plugin-transform-unicode-property-regex@^7.24.7": version "7.24.7" resolved "https://registry.yarnpkg.com/@babel/plugin-transform-unicode-property-regex/-/plugin-transform-unicode-property-regex-7.24.7.tgz#9073a4cd13b86ea71c3264659590ac086605bbcd" @@ -1012,6 +1708,14 @@ "@babel/helper-create-regexp-features-plugin" "^7.24.7" "@babel/helper-plugin-utils" "^7.24.7" +"@babel/plugin-transform-unicode-property-regex@^7.27.1": + version "7.27.1" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-unicode-property-regex/-/plugin-transform-unicode-property-regex-7.27.1.tgz#bdfe2d3170c78c5691a3c3be934c8c0087525956" + integrity sha512-uW20S39PnaTImxp39O5qFlHLS9LJEmANjMG7SxIhap8rCHqu0Ik+tLEPX5DKmHn6CsWQ7j3lix2tFOa5YtL12Q== + dependencies: + "@babel/helper-create-regexp-features-plugin" "^7.27.1" + "@babel/helper-plugin-utils" "^7.27.1" + "@babel/plugin-transform-unicode-regex@^7.24.7": version "7.24.7" resolved "https://registry.yarnpkg.com/@babel/plugin-transform-unicode-regex/-/plugin-transform-unicode-regex-7.24.7.tgz#dfc3d4a51127108099b19817c0963be6a2adf19f" @@ -1020,6 +1724,14 @@ "@babel/helper-create-regexp-features-plugin" "^7.24.7" "@babel/helper-plugin-utils" "^7.24.7" +"@babel/plugin-transform-unicode-regex@^7.27.1": + version "7.27.1" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-unicode-regex/-/plugin-transform-unicode-regex-7.27.1.tgz#25948f5c395db15f609028e370667ed8bae9af97" + integrity sha512-xvINq24TRojDuyt6JGtHmkVkrfVV3FPT16uytxImLeBZqW3/H52yN+kM1MGuyPkIQxrzKwPHs5U/MP3qKyzkGw== + dependencies: + "@babel/helper-create-regexp-features-plugin" "^7.27.1" + "@babel/helper-plugin-utils" "^7.27.1" + "@babel/plugin-transform-unicode-sets-regex@^7.24.7": version "7.24.7" resolved "https://registry.yarnpkg.com/@babel/plugin-transform-unicode-sets-regex/-/plugin-transform-unicode-sets-regex-7.24.7.tgz#d40705d67523803a576e29c63cef6e516b858ed9" @@ -1028,7 +1740,15 @@ "@babel/helper-create-regexp-features-plugin" "^7.24.7" "@babel/helper-plugin-utils" "^7.24.7" -"@babel/preset-env@^7.20.2", "@babel/preset-env@^7.22.9": +"@babel/plugin-transform-unicode-sets-regex@^7.27.1": + version "7.27.1" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-unicode-sets-regex/-/plugin-transform-unicode-sets-regex-7.27.1.tgz#6ab706d10f801b5c72da8bb2548561fa04193cd1" + integrity sha512-EtkOujbc4cgvb0mlpQefi4NTPBzhSIevblFevACNLUspmrALgmEBdL/XfnyyITfd8fKBZrZys92zOWcik7j9Tw== + dependencies: + "@babel/helper-create-regexp-features-plugin" "^7.27.1" + "@babel/helper-plugin-utils" "^7.27.1" + +"@babel/preset-env@^7.20.2": version "7.25.3" resolved "https://registry.yarnpkg.com/@babel/preset-env/-/preset-env-7.25.3.tgz#0bf4769d84ac51d1073ab4a86f00f30a3a83c67c" integrity sha512-QsYW7UeAaXvLPX9tdVliMJE7MD7M6MLYVTovRTIwhoYQVFHR1rM4wO8wqAezYi3/BpSD+NzVCZ69R6smWiIi8g== @@ -1117,6 +1837,82 @@ core-js-compat "^3.37.1" semver "^6.3.1" +"@babel/preset-env@^7.25.9": + version "7.28.0" + resolved "https://registry.yarnpkg.com/@babel/preset-env/-/preset-env-7.28.0.tgz#d23a6bc17b43227d11db77081a0779c706b5569c" + integrity sha512-VmaxeGOwuDqzLl5JUkIRM1X2Qu2uKGxHEQWh+cvvbl7JuJRgKGJSfsEF/bUaxFhJl/XAyxBe7q7qSuTbKFuCyg== + dependencies: + "@babel/compat-data" "^7.28.0" + "@babel/helper-compilation-targets" "^7.27.2" + "@babel/helper-plugin-utils" "^7.27.1" + "@babel/helper-validator-option" "^7.27.1" + "@babel/plugin-bugfix-firefox-class-in-computed-class-key" "^7.27.1" + "@babel/plugin-bugfix-safari-class-field-initializer-scope" "^7.27.1" + "@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression" "^7.27.1" + "@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining" "^7.27.1" + "@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly" "^7.27.1" + "@babel/plugin-proposal-private-property-in-object" "7.21.0-placeholder-for-preset-env.2" + "@babel/plugin-syntax-import-assertions" "^7.27.1" + "@babel/plugin-syntax-import-attributes" "^7.27.1" + "@babel/plugin-syntax-unicode-sets-regex" "^7.18.6" + "@babel/plugin-transform-arrow-functions" "^7.27.1" + "@babel/plugin-transform-async-generator-functions" "^7.28.0" + "@babel/plugin-transform-async-to-generator" "^7.27.1" + "@babel/plugin-transform-block-scoped-functions" "^7.27.1" + "@babel/plugin-transform-block-scoping" "^7.28.0" + "@babel/plugin-transform-class-properties" "^7.27.1" + "@babel/plugin-transform-class-static-block" "^7.27.1" + "@babel/plugin-transform-classes" "^7.28.0" + "@babel/plugin-transform-computed-properties" "^7.27.1" + "@babel/plugin-transform-destructuring" "^7.28.0" + "@babel/plugin-transform-dotall-regex" "^7.27.1" + "@babel/plugin-transform-duplicate-keys" "^7.27.1" + "@babel/plugin-transform-duplicate-named-capturing-groups-regex" "^7.27.1" + "@babel/plugin-transform-dynamic-import" "^7.27.1" + "@babel/plugin-transform-explicit-resource-management" "^7.28.0" + "@babel/plugin-transform-exponentiation-operator" "^7.27.1" + "@babel/plugin-transform-export-namespace-from" "^7.27.1" + "@babel/plugin-transform-for-of" "^7.27.1" + "@babel/plugin-transform-function-name" "^7.27.1" + "@babel/plugin-transform-json-strings" "^7.27.1" + "@babel/plugin-transform-literals" "^7.27.1" + "@babel/plugin-transform-logical-assignment-operators" "^7.27.1" + "@babel/plugin-transform-member-expression-literals" "^7.27.1" + "@babel/plugin-transform-modules-amd" "^7.27.1" + "@babel/plugin-transform-modules-commonjs" "^7.27.1" + "@babel/plugin-transform-modules-systemjs" "^7.27.1" + "@babel/plugin-transform-modules-umd" "^7.27.1" + "@babel/plugin-transform-named-capturing-groups-regex" "^7.27.1" + "@babel/plugin-transform-new-target" "^7.27.1" + "@babel/plugin-transform-nullish-coalescing-operator" "^7.27.1" + "@babel/plugin-transform-numeric-separator" "^7.27.1" + "@babel/plugin-transform-object-rest-spread" "^7.28.0" + "@babel/plugin-transform-object-super" "^7.27.1" + "@babel/plugin-transform-optional-catch-binding" "^7.27.1" + "@babel/plugin-transform-optional-chaining" "^7.27.1" + "@babel/plugin-transform-parameters" "^7.27.7" + "@babel/plugin-transform-private-methods" "^7.27.1" + "@babel/plugin-transform-private-property-in-object" "^7.27.1" + "@babel/plugin-transform-property-literals" "^7.27.1" + "@babel/plugin-transform-regenerator" "^7.28.0" + "@babel/plugin-transform-regexp-modifiers" "^7.27.1" + "@babel/plugin-transform-reserved-words" "^7.27.1" + "@babel/plugin-transform-shorthand-properties" "^7.27.1" + "@babel/plugin-transform-spread" "^7.27.1" + "@babel/plugin-transform-sticky-regex" "^7.27.1" + "@babel/plugin-transform-template-literals" "^7.27.1" + "@babel/plugin-transform-typeof-symbol" "^7.27.1" + "@babel/plugin-transform-unicode-escapes" "^7.27.1" + "@babel/plugin-transform-unicode-property-regex" "^7.27.1" + "@babel/plugin-transform-unicode-regex" "^7.27.1" + "@babel/plugin-transform-unicode-sets-regex" "^7.27.1" + "@babel/preset-modules" "0.1.6-no-external-plugins" + babel-plugin-polyfill-corejs2 "^0.4.14" + babel-plugin-polyfill-corejs3 "^0.13.0" + babel-plugin-polyfill-regenerator "^0.6.5" + core-js-compat "^3.43.0" + semver "^6.3.1" + "@babel/preset-modules@0.1.6-no-external-plugins": version "0.1.6-no-external-plugins" resolved "https://registry.yarnpkg.com/@babel/preset-modules/-/preset-modules-0.1.6-no-external-plugins.tgz#ccb88a2c49c817236861fee7826080573b8a923a" @@ -1126,7 +1922,7 @@ "@babel/types" "^7.4.4" esutils "^2.0.2" -"@babel/preset-react@^7.18.6", "@babel/preset-react@^7.22.5": +"@babel/preset-react@^7.18.6": version "7.24.7" resolved "https://registry.yarnpkg.com/@babel/preset-react/-/preset-react-7.24.7.tgz#480aeb389b2a798880bf1f889199e3641cbb22dc" integrity sha512-AAH4lEkpmzFWrGVlHaxJB7RLH21uPQ9+He+eFLWHmF9IuFQVugz8eAsamaW0DXRrTfco5zj1wWtpdcXJUOfsag== @@ -1138,7 +1934,19 @@ "@babel/plugin-transform-react-jsx-development" "^7.24.7" "@babel/plugin-transform-react-pure-annotations" "^7.24.7" -"@babel/preset-typescript@^7.21.0", "@babel/preset-typescript@^7.22.5": +"@babel/preset-react@^7.25.9": + version "7.27.1" + resolved "https://registry.yarnpkg.com/@babel/preset-react/-/preset-react-7.27.1.tgz#86ea0a5ca3984663f744be2fd26cb6747c3fd0ec" + integrity sha512-oJHWh2gLhU9dW9HHr42q0cI0/iHHXTLGe39qvpAZZzagHy0MzYLCnCVV0symeRvzmjHyVU7mw2K06E6u/JwbhA== + dependencies: + "@babel/helper-plugin-utils" "^7.27.1" + "@babel/helper-validator-option" "^7.27.1" + "@babel/plugin-transform-react-display-name" "^7.27.1" + "@babel/plugin-transform-react-jsx" "^7.27.1" + "@babel/plugin-transform-react-jsx-development" "^7.27.1" + "@babel/plugin-transform-react-pure-annotations" "^7.27.1" + +"@babel/preset-typescript@^7.21.0": version "7.24.7" resolved "https://registry.yarnpkg.com/@babel/preset-typescript/-/preset-typescript-7.24.7.tgz#66cd86ea8f8c014855671d5ea9a737139cbbfef1" integrity sha512-SyXRe3OdWwIwalxDg5UtJnJQO+YPcTfwiIY2B0Xlddh9o7jpWLvv8X1RthIeDOxQ+O1ML5BLPCONToObyVQVuQ== @@ -1149,26 +1957,41 @@ "@babel/plugin-transform-modules-commonjs" "^7.24.7" "@babel/plugin-transform-typescript" "^7.24.7" +"@babel/preset-typescript@^7.25.9": + version "7.27.1" + resolved "https://registry.yarnpkg.com/@babel/preset-typescript/-/preset-typescript-7.27.1.tgz#190742a6428d282306648a55b0529b561484f912" + integrity sha512-l7WfQfX0WK4M0v2RudjuQK4u99BS6yLHYEmdtVPP7lKV013zr9DygFuWNlnbvQ9LR+LS0Egz/XAvGx5U9MX0fQ== + dependencies: + "@babel/helper-plugin-utils" "^7.27.1" + "@babel/helper-validator-option" "^7.27.1" + "@babel/plugin-syntax-jsx" "^7.27.1" + "@babel/plugin-transform-modules-commonjs" "^7.27.1" + "@babel/plugin-transform-typescript" "^7.27.1" + "@babel/regjsgen@^0.8.0": version "0.8.0" resolved "https://registry.yarnpkg.com/@babel/regjsgen/-/regjsgen-0.8.0.tgz#f0ba69b075e1f05fb2825b7fad991e7adbb18310" integrity sha512-x/rqGMdzj+fWZvCOYForTghzbtqPDZ5gPwaoNGHdgDfF2QA/XZbCBp4Moo5scrkAMPhB7z26XM/AaHuIJdgauA== -"@babel/runtime-corejs3@^7.22.6": - version "7.25.0" - resolved "https://registry.yarnpkg.com/@babel/runtime-corejs3/-/runtime-corejs3-7.25.0.tgz#0a318b66dfc765ad10562d829fea372ed7e1eb7d" - integrity sha512-BOehWE7MgQ8W8Qn0CQnMtg2tHPHPulcS/5AVpFvs2KCK1ET+0WqZqPvnpRpFN81gYoFopdIEJX9Sgjw3ZBccPg== +"@babel/runtime-corejs3@^7.25.9": + version "7.28.0" + resolved "https://registry.yarnpkg.com/@babel/runtime-corejs3/-/runtime-corejs3-7.28.0.tgz#4d9938897f5a9aaa9e5f99408a4bf86daba40ec1" + integrity sha512-nlIXnSqLcBij8K8TtkxbBJgfzfvi75V1pAKSM7dUXejGw12vJAqez74jZrHTsJ3Z+Aczc5Q/6JgNjKRMsVU44g== dependencies: - core-js-pure "^3.30.2" - regenerator-runtime "^0.14.0" + core-js-pure "^3.43.0" -"@babel/runtime@^7.1.2", "@babel/runtime@^7.10.3", "@babel/runtime@^7.12.13", "@babel/runtime@^7.12.5", "@babel/runtime@^7.18.3", "@babel/runtime@^7.22.6", "@babel/runtime@^7.23.9", "@babel/runtime@^7.3.1", "@babel/runtime@^7.5.5", "@babel/runtime@^7.8.3", "@babel/runtime@^7.8.4", "@babel/runtime@^7.8.7": +"@babel/runtime@^7.1.2", "@babel/runtime@^7.10.3", "@babel/runtime@^7.12.13", "@babel/runtime@^7.12.5", "@babel/runtime@^7.18.3", "@babel/runtime@^7.23.9", "@babel/runtime@^7.3.1", "@babel/runtime@^7.5.5", "@babel/runtime@^7.8.3", "@babel/runtime@^7.8.4", "@babel/runtime@^7.8.7": version "7.25.0" resolved "https://registry.yarnpkg.com/@babel/runtime/-/runtime-7.25.0.tgz#3af9a91c1b739c569d5d80cc917280919c544ecb" integrity sha512-7dRy4DwXwtzBrPbZflqxnvfxLF8kdZXPkhymtDeFoFqE6ldzjQFgYTtYIFARcLEYDrqfBfYcZt1WqFxRoyC9Rw== dependencies: regenerator-runtime "^0.14.0" +"@babel/runtime@^7.25.9": + version "7.27.6" + resolved "https://registry.yarnpkg.com/@babel/runtime/-/runtime-7.27.6.tgz#ec4070a04d76bae8ddbb10770ba55714a417b7c6" + integrity sha512-vbavdySgbTTrmFE+EsiqUTzlOr5bzlnJtUv9PynGCAKvfQqjIXbvFdumPM/GxMDfyuGMJaJAU6TO4zc1Jf1i8Q== + "@babel/template@^7.24.7", "@babel/template@^7.25.0": version "7.25.0" resolved "https://registry.yarnpkg.com/@babel/template/-/template-7.25.0.tgz#e733dc3134b4fede528c15bc95e89cb98c52592a" @@ -1178,7 +2001,16 @@ "@babel/parser" "^7.25.0" "@babel/types" "^7.25.0" -"@babel/traverse@^7.22.8", "@babel/traverse@^7.24.7", "@babel/traverse@^7.24.8", "@babel/traverse@^7.25.0", "@babel/traverse@^7.25.1", "@babel/traverse@^7.25.2", "@babel/traverse@^7.25.3": +"@babel/template@^7.27.1", "@babel/template@^7.27.2": + version "7.27.2" + resolved "https://registry.yarnpkg.com/@babel/template/-/template-7.27.2.tgz#fa78ceed3c4e7b63ebf6cb39e5852fca45f6809d" + integrity sha512-LPDZ85aEJyYSd18/DkjNh4/y1ntkE5KwUHWTiqgRxruuZL2F1yuHligVHLvcHY2vMHXttKFpJn6LwfI7cw7ODw== + dependencies: + "@babel/code-frame" "^7.27.1" + "@babel/parser" "^7.27.2" + "@babel/types" "^7.27.1" + +"@babel/traverse@^7.24.7", "@babel/traverse@^7.24.8", "@babel/traverse@^7.25.0", "@babel/traverse@^7.25.1", "@babel/traverse@^7.25.2", "@babel/traverse@^7.25.3": version "7.25.3" resolved "https://registry.yarnpkg.com/@babel/traverse/-/traverse-7.25.3.tgz#f1b901951c83eda2f3e29450ce92743783373490" integrity sha512-HefgyP1x754oGCsKmV5reSmtV7IXj/kpaE1XYY+D9G5PvKKoFfSbiS4M77MdjuwlZKDIKFCffq9rPU+H/s3ZdQ== @@ -1191,6 +2023,19 @@ debug "^4.3.1" globals "^11.1.0" +"@babel/traverse@^7.25.9", "@babel/traverse@^7.27.1", "@babel/traverse@^7.27.3", "@babel/traverse@^7.28.0": + version "7.28.0" + resolved "https://registry.yarnpkg.com/@babel/traverse/-/traverse-7.28.0.tgz#518aa113359b062042379e333db18380b537e34b" + integrity sha512-mGe7UK5wWyh0bKRfupsUchrQGqvDbZDbKJw+kcRGSmdHVYrv+ltd0pnpDTVpiTqnaBru9iEvA8pz8W46v0Amwg== + dependencies: + "@babel/code-frame" "^7.27.1" + "@babel/generator" "^7.28.0" + "@babel/helper-globals" "^7.28.0" + "@babel/parser" "^7.28.0" + "@babel/template" "^7.27.2" + "@babel/types" "^7.28.0" + debug "^4.3.1" + "@babel/types@^7.21.3", "@babel/types@^7.24.7", "@babel/types@^7.24.8", "@babel/types@^7.25.0", "@babel/types@^7.25.2", "@babel/types@^7.4.4": version "7.25.2" resolved "https://registry.yarnpkg.com/@babel/types/-/types-7.25.2.tgz#55fb231f7dc958cd69ea141a4c2997e819646125" @@ -1200,143 +2045,541 @@ "@babel/helper-validator-identifier" "^7.24.7" to-fast-properties "^2.0.0" -"@braintree/sanitize-url@^6.0.1": - version "6.0.4" - resolved "https://registry.yarnpkg.com/@braintree/sanitize-url/-/sanitize-url-6.0.4.tgz#923ca57e173c6b232bbbb07347b1be982f03e783" - integrity sha512-s3jaWicZd0pkP0jf5ysyHUI/RE7MHos6qlToFcGWXVp+ykHOy77OUMrfbgJ9it2C5bow7OIQwYYaHjk9XlBQ2A== +"@babel/types@^7.27.1", "@babel/types@^7.27.3", "@babel/types@^7.27.6", "@babel/types@^7.28.0": + version "7.28.1" + resolved "https://registry.yarnpkg.com/@babel/types/-/types-7.28.1.tgz#2aaf3c10b31ba03a77ac84f52b3912a0edef4cf9" + integrity sha512-x0LvFTekgSX+83TI28Y9wYPUfzrnl2aT5+5QLnO6v7mSJYtEEevuDRN0F0uSHRk1G1IWZC43o00Y0xDDrpBGPQ== + dependencies: + "@babel/helper-string-parser" "^7.27.1" + "@babel/helper-validator-identifier" "^7.27.1" + +"@braintree/sanitize-url@^7.0.4": + version "7.1.1" + resolved "https://registry.yarnpkg.com/@braintree/sanitize-url/-/sanitize-url-7.1.1.tgz#15e19737d946559289b915e5dad3b4c28407735e" + integrity sha512-i1L7noDNxtFyL5DmZafWy1wRVhGehQmzZaz1HiN5e7iylJMSZR7ekOV7NsIqa5qBldlLrsKv4HbgFUVlQrz8Mw== + +"@chevrotain/cst-dts-gen@11.0.3": + version "11.0.3" + resolved "https://registry.yarnpkg.com/@chevrotain/cst-dts-gen/-/cst-dts-gen-11.0.3.tgz#5e0863cc57dc45e204ccfee6303225d15d9d4783" + integrity sha512-BvIKpRLeS/8UbfxXxgC33xOumsacaeCKAjAeLyOn7Pcp95HiRbrpl14S+9vaZLolnbssPIUuiUd8IvgkRyt6NQ== + dependencies: + "@chevrotain/gast" "11.0.3" + "@chevrotain/types" "11.0.3" + lodash-es "4.17.21" + +"@chevrotain/gast@11.0.3": + version "11.0.3" + resolved "https://registry.yarnpkg.com/@chevrotain/gast/-/gast-11.0.3.tgz#e84d8880323fe8cbe792ef69ce3ffd43a936e818" + integrity sha512-+qNfcoNk70PyS/uxmj3li5NiECO+2YKZZQMbmjTqRI3Qchu8Hig/Q9vgkHpI3alNjr7M+a2St5pw5w5F6NL5/Q== + dependencies: + "@chevrotain/types" "11.0.3" + lodash-es "4.17.21" + +"@chevrotain/regexp-to-ast@11.0.3": + version "11.0.3" + resolved "https://registry.yarnpkg.com/@chevrotain/regexp-to-ast/-/regexp-to-ast-11.0.3.tgz#11429a81c74a8e6a829271ce02fc66166d56dcdb" + integrity sha512-1fMHaBZxLFvWI067AVbGJav1eRY7N8DDvYCTwGBiE/ytKBgP8azTdgyrKyWZ9Mfh09eHWb5PgTSO8wi7U824RA== + +"@chevrotain/types@11.0.3": + version "11.0.3" + resolved "https://registry.yarnpkg.com/@chevrotain/types/-/types-11.0.3.tgz#f8a03914f7b937f594f56eb89312b3b8f1c91848" + integrity sha512-gsiM3G8b58kZC2HaWR50gu6Y1440cHiJ+i3JUvcp/35JchYejb2+5MVeJK0iKThYpAa/P2PYFV4hoi44HD+aHQ== + +"@chevrotain/utils@11.0.3": + version "11.0.3" + resolved "https://registry.yarnpkg.com/@chevrotain/utils/-/utils-11.0.3.tgz#e39999307b102cff3645ec4f5b3665f5297a2224" + integrity sha512-YslZMgtJUyuMbZ+aKvfF3x1f5liK4mWNxghFRv7jqRR9C3R3fAOGTTKvxXDa2Y1s9zSbcpuO0cAxDYsc9SrXoQ== "@colors/colors@1.5.0": version "1.5.0" resolved "https://registry.yarnpkg.com/@colors/colors/-/colors-1.5.0.tgz#bb504579c1cae923e6576a4f5da43d25f97bdbd9" integrity sha512-ooWCrlZP11i8GImSjTHYHLkvFDP48nS4+204nGb1RiX/WXYHmJA2III9/e2DWVabCESdW7hBAEzHRqUn9OUVvQ== +"@csstools/cascade-layer-name-parser@^2.0.5": + version "2.0.5" + resolved "https://registry.yarnpkg.com/@csstools/cascade-layer-name-parser/-/cascade-layer-name-parser-2.0.5.tgz#43f962bebead0052a9fed1a2deeb11f85efcbc72" + integrity sha512-p1ko5eHgV+MgXFVa4STPKpvPxr6ReS8oS2jzTukjR74i5zJNyWO1ZM1m8YKBXnzDKWfBN1ztLYlHxbVemDD88A== + +"@csstools/color-helpers@^5.0.2": + version "5.0.2" + resolved "https://registry.yarnpkg.com/@csstools/color-helpers/-/color-helpers-5.0.2.tgz#82592c9a7c2b83c293d9161894e2a6471feb97b8" + integrity sha512-JqWH1vsgdGcw2RR6VliXXdA0/59LttzlU8UlRT/iUUsEeWfYq8I+K0yhihEUTTHLRm1EXvpsCx3083EU15ecsA== + +"@csstools/css-calc@^2.1.4": + version "2.1.4" + resolved "https://registry.yarnpkg.com/@csstools/css-calc/-/css-calc-2.1.4.tgz#8473f63e2fcd6e459838dd412401d5948f224c65" + integrity sha512-3N8oaj+0juUw/1H3YwmDDJXCgTB1gKU6Hc/bB502u9zR0q2vd786XJH9QfrKIEgFlZmhZiq6epXl4rHqhzsIgQ== + +"@csstools/css-color-parser@^3.0.10": + version "3.0.10" + resolved "https://registry.yarnpkg.com/@csstools/css-color-parser/-/css-color-parser-3.0.10.tgz#79fc68864dd43c3b6782d2b3828bc0fa9d085c10" + integrity sha512-TiJ5Ajr6WRd1r8HSiwJvZBiJOqtH86aHpUjq5aEKWHiII2Qfjqd/HCWKPOW8EP4vcspXbHnXrwIDlu5savQipg== + dependencies: + "@csstools/color-helpers" "^5.0.2" + "@csstools/css-calc" "^2.1.4" + +"@csstools/css-parser-algorithms@^3.0.5": + version "3.0.5" + resolved "https://registry.yarnpkg.com/@csstools/css-parser-algorithms/-/css-parser-algorithms-3.0.5.tgz#5755370a9a29abaec5515b43c8b3f2cf9c2e3076" + integrity sha512-DaDeUkXZKjdGhgYaHNJTV9pV7Y9B3b644jCLs9Upc3VeNGg6LWARAT6O+Q+/COo+2gg/bM5rhpMAtf70WqfBdQ== + +"@csstools/css-tokenizer@^3.0.4": + version "3.0.4" + resolved "https://registry.yarnpkg.com/@csstools/css-tokenizer/-/css-tokenizer-3.0.4.tgz#333fedabc3fd1a8e5d0100013731cf19e6a8c5d3" + integrity sha512-Vd/9EVDiu6PPJt9yAh6roZP6El1xHrdvIVGjyBsHR0RYwNHgL7FJPyIIW4fANJNG6FtyZfvlRPpFI4ZM/lubvw== + +"@csstools/media-query-list-parser@^4.0.3": + version "4.0.3" + resolved "https://registry.yarnpkg.com/@csstools/media-query-list-parser/-/media-query-list-parser-4.0.3.tgz#7aec77bcb89c2da80ef207e73f474ef9e1b3cdf1" + integrity sha512-HAYH7d3TLRHDOUQK4mZKf9k9Ph/m8Akstg66ywKR4SFAigjs3yBiUeZtFxywiTm5moZMAp/5W/ZuFnNXXYLuuQ== + +"@csstools/postcss-cascade-layers@^5.0.2": + version "5.0.2" + resolved "https://registry.yarnpkg.com/@csstools/postcss-cascade-layers/-/postcss-cascade-layers-5.0.2.tgz#dd2c70db3867b88975f2922da3bfbae7d7a2cae7" + integrity sha512-nWBE08nhO8uWl6kSAeCx4im7QfVko3zLrtgWZY4/bP87zrSPpSyN/3W3TDqz1jJuH+kbKOHXg5rJnK+ZVYcFFg== + dependencies: + "@csstools/selector-specificity" "^5.0.0" + postcss-selector-parser "^7.0.0" + +"@csstools/postcss-color-function@^4.0.10": + version "4.0.10" + resolved "https://registry.yarnpkg.com/@csstools/postcss-color-function/-/postcss-color-function-4.0.10.tgz#11ad43a66ef2cc794ab826a07df8b5fa9fb47a3a" + integrity sha512-4dY0NBu7NVIpzxZRgh/Q/0GPSz/jLSw0i/u3LTUor0BkQcz/fNhN10mSWBDsL0p9nDb0Ky1PD6/dcGbhACuFTQ== + dependencies: + "@csstools/css-color-parser" "^3.0.10" + "@csstools/css-parser-algorithms" "^3.0.5" + "@csstools/css-tokenizer" "^3.0.4" + "@csstools/postcss-progressive-custom-properties" "^4.1.0" + "@csstools/utilities" "^2.0.0" + +"@csstools/postcss-color-mix-function@^3.0.10": + version "3.0.10" + resolved "https://registry.yarnpkg.com/@csstools/postcss-color-mix-function/-/postcss-color-mix-function-3.0.10.tgz#8c9d0ccfae5c45a9870dd84807ea2995c7a3a514" + integrity sha512-P0lIbQW9I4ShE7uBgZRib/lMTf9XMjJkFl/d6w4EMNHu2qvQ6zljJGEcBkw/NsBtq/6q3WrmgxSS8kHtPMkK4Q== + dependencies: + "@csstools/css-color-parser" "^3.0.10" + "@csstools/css-parser-algorithms" "^3.0.5" + "@csstools/css-tokenizer" "^3.0.4" + "@csstools/postcss-progressive-custom-properties" "^4.1.0" + "@csstools/utilities" "^2.0.0" + +"@csstools/postcss-color-mix-variadic-function-arguments@^1.0.0": + version "1.0.0" + resolved "https://registry.yarnpkg.com/@csstools/postcss-color-mix-variadic-function-arguments/-/postcss-color-mix-variadic-function-arguments-1.0.0.tgz#0b29cb9b4630d7ed68549db265662d41554a17ed" + integrity sha512-Z5WhouTyD74dPFPrVE7KydgNS9VvnjB8qcdes9ARpCOItb4jTnm7cHp4FhxCRUoyhabD0WVv43wbkJ4p8hLAlQ== + dependencies: + "@csstools/css-color-parser" "^3.0.10" + "@csstools/css-parser-algorithms" "^3.0.5" + "@csstools/css-tokenizer" "^3.0.4" + "@csstools/postcss-progressive-custom-properties" "^4.1.0" + "@csstools/utilities" "^2.0.0" + +"@csstools/postcss-content-alt-text@^2.0.6": + version "2.0.6" + resolved "https://registry.yarnpkg.com/@csstools/postcss-content-alt-text/-/postcss-content-alt-text-2.0.6.tgz#548862226eac54bab0ee5f1bf3a9981393ab204b" + integrity sha512-eRjLbOjblXq+byyaedQRSrAejKGNAFued+LcbzT+LCL78fabxHkxYjBbxkroONxHHYu2qxhFK2dBStTLPG3jpQ== + dependencies: + "@csstools/css-parser-algorithms" "^3.0.5" + "@csstools/css-tokenizer" "^3.0.4" + "@csstools/postcss-progressive-custom-properties" "^4.1.0" + "@csstools/utilities" "^2.0.0" + +"@csstools/postcss-exponential-functions@^2.0.9": + version "2.0.9" + resolved "https://registry.yarnpkg.com/@csstools/postcss-exponential-functions/-/postcss-exponential-functions-2.0.9.tgz#fc03d1272888cb77e64cc1a7d8a33016e4f05c69" + integrity sha512-abg2W/PI3HXwS/CZshSa79kNWNZHdJPMBXeZNyPQFbbj8sKO3jXxOt/wF7juJVjyDTc6JrvaUZYFcSBZBhaxjw== + dependencies: + "@csstools/css-calc" "^2.1.4" + "@csstools/css-parser-algorithms" "^3.0.5" + "@csstools/css-tokenizer" "^3.0.4" + +"@csstools/postcss-font-format-keywords@^4.0.0": + version "4.0.0" + resolved "https://registry.yarnpkg.com/@csstools/postcss-font-format-keywords/-/postcss-font-format-keywords-4.0.0.tgz#6730836eb0153ff4f3840416cc2322f129c086e6" + integrity sha512-usBzw9aCRDvchpok6C+4TXC57btc4bJtmKQWOHQxOVKen1ZfVqBUuCZ/wuqdX5GHsD0NRSr9XTP+5ID1ZZQBXw== + dependencies: + "@csstools/utilities" "^2.0.0" + postcss-value-parser "^4.2.0" + +"@csstools/postcss-gamut-mapping@^2.0.10": + version "2.0.10" + resolved "https://registry.yarnpkg.com/@csstools/postcss-gamut-mapping/-/postcss-gamut-mapping-2.0.10.tgz#f518d941231d721dbecf5b41e3c441885ff2f28b" + integrity sha512-QDGqhJlvFnDlaPAfCYPsnwVA6ze+8hhrwevYWlnUeSjkkZfBpcCO42SaUD8jiLlq7niouyLgvup5lh+f1qessg== + dependencies: + "@csstools/css-color-parser" "^3.0.10" + "@csstools/css-parser-algorithms" "^3.0.5" + "@csstools/css-tokenizer" "^3.0.4" + +"@csstools/postcss-gradients-interpolation-method@^5.0.10": + version "5.0.10" + resolved "https://registry.yarnpkg.com/@csstools/postcss-gradients-interpolation-method/-/postcss-gradients-interpolation-method-5.0.10.tgz#3146da352c31142a721fdba062ac3a6d11dbbec3" + integrity sha512-HHPauB2k7Oits02tKFUeVFEU2ox/H3OQVrP3fSOKDxvloOikSal+3dzlyTZmYsb9FlY9p5EUpBtz0//XBmy+aw== + dependencies: + "@csstools/css-color-parser" "^3.0.10" + "@csstools/css-parser-algorithms" "^3.0.5" + "@csstools/css-tokenizer" "^3.0.4" + "@csstools/postcss-progressive-custom-properties" "^4.1.0" + "@csstools/utilities" "^2.0.0" + +"@csstools/postcss-hwb-function@^4.0.10": + version "4.0.10" + resolved "https://registry.yarnpkg.com/@csstools/postcss-hwb-function/-/postcss-hwb-function-4.0.10.tgz#f93f3c457e6440ac37ef9b908feb5d901b417d50" + integrity sha512-nOKKfp14SWcdEQ++S9/4TgRKchooLZL0TUFdun3nI4KPwCjETmhjta1QT4ICQcGVWQTvrsgMM/aLB5We+kMHhQ== + dependencies: + "@csstools/css-color-parser" "^3.0.10" + "@csstools/css-parser-algorithms" "^3.0.5" + "@csstools/css-tokenizer" "^3.0.4" + "@csstools/postcss-progressive-custom-properties" "^4.1.0" + "@csstools/utilities" "^2.0.0" + +"@csstools/postcss-ic-unit@^4.0.2": + version "4.0.2" + resolved "https://registry.yarnpkg.com/@csstools/postcss-ic-unit/-/postcss-ic-unit-4.0.2.tgz#7561e09db65fac8304ceeab9dd3e5c6e43414587" + integrity sha512-lrK2jjyZwh7DbxaNnIUjkeDmU8Y6KyzRBk91ZkI5h8nb1ykEfZrtIVArdIjX4DHMIBGpdHrgP0n4qXDr7OHaKA== + dependencies: + "@csstools/postcss-progressive-custom-properties" "^4.1.0" + "@csstools/utilities" "^2.0.0" + postcss-value-parser "^4.2.0" + +"@csstools/postcss-initial@^2.0.1": + version "2.0.1" + resolved "https://registry.yarnpkg.com/@csstools/postcss-initial/-/postcss-initial-2.0.1.tgz#c385bd9d8ad31ad159edd7992069e97ceea4d09a" + integrity sha512-L1wLVMSAZ4wovznquK0xmC7QSctzO4D0Is590bxpGqhqjboLXYA16dWZpfwImkdOgACdQ9PqXsuRroW6qPlEsg== + +"@csstools/postcss-is-pseudo-class@^5.0.3": + version "5.0.3" + resolved "https://registry.yarnpkg.com/@csstools/postcss-is-pseudo-class/-/postcss-is-pseudo-class-5.0.3.tgz#d34e850bcad4013c2ed7abe948bfa0448aa8eb74" + integrity sha512-jS/TY4SpG4gszAtIg7Qnf3AS2pjcUM5SzxpApOrlndMeGhIbaTzWBzzP/IApXoNWEW7OhcjkRT48jnAUIFXhAQ== + dependencies: + "@csstools/selector-specificity" "^5.0.0" + postcss-selector-parser "^7.0.0" + +"@csstools/postcss-light-dark-function@^2.0.9": + version "2.0.9" + resolved "https://registry.yarnpkg.com/@csstools/postcss-light-dark-function/-/postcss-light-dark-function-2.0.9.tgz#9fb080188907539734a9d5311d2a1cb82531ef38" + integrity sha512-1tCZH5bla0EAkFAI2r0H33CDnIBeLUaJh1p+hvvsylJ4svsv2wOmJjJn+OXwUZLXef37GYbRIVKX+X+g6m+3CQ== + dependencies: + "@csstools/css-parser-algorithms" "^3.0.5" + "@csstools/css-tokenizer" "^3.0.4" + "@csstools/postcss-progressive-custom-properties" "^4.1.0" + "@csstools/utilities" "^2.0.0" + +"@csstools/postcss-logical-float-and-clear@^3.0.0": + version "3.0.0" + resolved "https://registry.yarnpkg.com/@csstools/postcss-logical-float-and-clear/-/postcss-logical-float-and-clear-3.0.0.tgz#62617564182cf86ab5d4e7485433ad91e4c58571" + integrity sha512-SEmaHMszwakI2rqKRJgE+8rpotFfne1ZS6bZqBoQIicFyV+xT1UF42eORPxJkVJVrH9C0ctUgwMSn3BLOIZldQ== + +"@csstools/postcss-logical-overflow@^2.0.0": + version "2.0.0" + resolved "https://registry.yarnpkg.com/@csstools/postcss-logical-overflow/-/postcss-logical-overflow-2.0.0.tgz#c6de7c5f04e3d4233731a847f6c62819bcbcfa1d" + integrity sha512-spzR1MInxPuXKEX2csMamshR4LRaSZ3UXVaRGjeQxl70ySxOhMpP2252RAFsg8QyyBXBzuVOOdx1+bVO5bPIzA== + +"@csstools/postcss-logical-overscroll-behavior@^2.0.0": + version "2.0.0" + resolved "https://registry.yarnpkg.com/@csstools/postcss-logical-overscroll-behavior/-/postcss-logical-overscroll-behavior-2.0.0.tgz#43c03eaecdf34055ef53bfab691db6dc97a53d37" + integrity sha512-e/webMjoGOSYfqLunyzByZj5KKe5oyVg/YSbie99VEaSDE2kimFm0q1f6t/6Jo+VVCQ/jbe2Xy+uX+C4xzWs4w== + +"@csstools/postcss-logical-resize@^3.0.0": + version "3.0.0" + resolved "https://registry.yarnpkg.com/@csstools/postcss-logical-resize/-/postcss-logical-resize-3.0.0.tgz#4df0eeb1a61d7bd85395e56a5cce350b5dbfdca6" + integrity sha512-DFbHQOFW/+I+MY4Ycd/QN6Dg4Hcbb50elIJCfnwkRTCX05G11SwViI5BbBlg9iHRl4ytB7pmY5ieAFk3ws7yyg== + dependencies: + postcss-value-parser "^4.2.0" + +"@csstools/postcss-logical-viewport-units@^3.0.4": + version "3.0.4" + resolved "https://registry.yarnpkg.com/@csstools/postcss-logical-viewport-units/-/postcss-logical-viewport-units-3.0.4.tgz#016d98a8b7b5f969e58eb8413447eb801add16fc" + integrity sha512-q+eHV1haXA4w9xBwZLKjVKAWn3W2CMqmpNpZUk5kRprvSiBEGMgrNH3/sJZ8UA3JgyHaOt3jwT9uFa4wLX4EqQ== + dependencies: + "@csstools/css-tokenizer" "^3.0.4" + "@csstools/utilities" "^2.0.0" + +"@csstools/postcss-media-minmax@^2.0.9": + version "2.0.9" + resolved "https://registry.yarnpkg.com/@csstools/postcss-media-minmax/-/postcss-media-minmax-2.0.9.tgz#184252d5b93155ae526689328af6bdf3fc113987" + integrity sha512-af9Qw3uS3JhYLnCbqtZ9crTvvkR+0Se+bBqSr7ykAnl9yKhk6895z9rf+2F4dClIDJWxgn0iZZ1PSdkhrbs2ig== + dependencies: + "@csstools/css-calc" "^2.1.4" + "@csstools/css-parser-algorithms" "^3.0.5" + "@csstools/css-tokenizer" "^3.0.4" + "@csstools/media-query-list-parser" "^4.0.3" + +"@csstools/postcss-media-queries-aspect-ratio-number-values@^3.0.5": + version "3.0.5" + resolved "https://registry.yarnpkg.com/@csstools/postcss-media-queries-aspect-ratio-number-values/-/postcss-media-queries-aspect-ratio-number-values-3.0.5.tgz#f485c31ec13d6b0fb5c528a3474334a40eff5f11" + integrity sha512-zhAe31xaaXOY2Px8IYfoVTB3wglbJUVigGphFLj6exb7cjZRH9A6adyE22XfFK3P2PzwRk0VDeTJmaxpluyrDg== + dependencies: + "@csstools/css-parser-algorithms" "^3.0.5" + "@csstools/css-tokenizer" "^3.0.4" + "@csstools/media-query-list-parser" "^4.0.3" + +"@csstools/postcss-nested-calc@^4.0.0": + version "4.0.0" + resolved "https://registry.yarnpkg.com/@csstools/postcss-nested-calc/-/postcss-nested-calc-4.0.0.tgz#754e10edc6958d664c11cde917f44ba144141c62" + integrity sha512-jMYDdqrQQxE7k9+KjstC3NbsmC063n1FTPLCgCRS2/qHUbHM0mNy9pIn4QIiQGs9I/Bg98vMqw7mJXBxa0N88A== + dependencies: + "@csstools/utilities" "^2.0.0" + postcss-value-parser "^4.2.0" + +"@csstools/postcss-normalize-display-values@^4.0.0": + version "4.0.0" + resolved "https://registry.yarnpkg.com/@csstools/postcss-normalize-display-values/-/postcss-normalize-display-values-4.0.0.tgz#ecdde2daf4e192e5da0c6fd933b6d8aff32f2a36" + integrity sha512-HlEoG0IDRoHXzXnkV4in47dzsxdsjdz6+j7MLjaACABX2NfvjFS6XVAnpaDyGesz9gK2SC7MbNwdCHusObKJ9Q== + dependencies: + postcss-value-parser "^4.2.0" + +"@csstools/postcss-oklab-function@^4.0.10": + version "4.0.10" + resolved "https://registry.yarnpkg.com/@csstools/postcss-oklab-function/-/postcss-oklab-function-4.0.10.tgz#d4c23c51dd0be45e6dedde22432d7d0003710780" + integrity sha512-ZzZUTDd0fgNdhv8UUjGCtObPD8LYxMH+MJsW9xlZaWTV8Ppr4PtxlHYNMmF4vVWGl0T6f8tyWAKjoI6vePSgAg== + dependencies: + "@csstools/css-color-parser" "^3.0.10" + "@csstools/css-parser-algorithms" "^3.0.5" + "@csstools/css-tokenizer" "^3.0.4" + "@csstools/postcss-progressive-custom-properties" "^4.1.0" + "@csstools/utilities" "^2.0.0" + +"@csstools/postcss-progressive-custom-properties@^4.1.0": + version "4.1.0" + resolved "https://registry.yarnpkg.com/@csstools/postcss-progressive-custom-properties/-/postcss-progressive-custom-properties-4.1.0.tgz#70c8d41b577f4023633b7e3791604e0b7f3775bc" + integrity sha512-YrkI9dx8U4R8Sz2EJaoeD9fI7s7kmeEBfmO+UURNeL6lQI7VxF6sBE+rSqdCBn4onwqmxFdBU3lTwyYb/lCmxA== + dependencies: + postcss-value-parser "^4.2.0" + +"@csstools/postcss-random-function@^2.0.1": + version "2.0.1" + resolved "https://registry.yarnpkg.com/@csstools/postcss-random-function/-/postcss-random-function-2.0.1.tgz#3191f32fe72936e361dadf7dbfb55a0209e2691e" + integrity sha512-q+FQaNiRBhnoSNo+GzqGOIBKoHQ43lYz0ICrV+UudfWnEF6ksS6DsBIJSISKQT2Bvu3g4k6r7t0zYrk5pDlo8w== + dependencies: + "@csstools/css-calc" "^2.1.4" + "@csstools/css-parser-algorithms" "^3.0.5" + "@csstools/css-tokenizer" "^3.0.4" + +"@csstools/postcss-relative-color-syntax@^3.0.10": + version "3.0.10" + resolved "https://registry.yarnpkg.com/@csstools/postcss-relative-color-syntax/-/postcss-relative-color-syntax-3.0.10.tgz#daa840583969461e1e06b12e9c591e52a790ec86" + integrity sha512-8+0kQbQGg9yYG8hv0dtEpOMLwB9M+P7PhacgIzVzJpixxV4Eq9AUQtQw8adMmAJU1RBBmIlpmtmm3XTRd/T00g== + dependencies: + "@csstools/css-color-parser" "^3.0.10" + "@csstools/css-parser-algorithms" "^3.0.5" + "@csstools/css-tokenizer" "^3.0.4" + "@csstools/postcss-progressive-custom-properties" "^4.1.0" + "@csstools/utilities" "^2.0.0" + +"@csstools/postcss-scope-pseudo-class@^4.0.1": + version "4.0.1" + resolved "https://registry.yarnpkg.com/@csstools/postcss-scope-pseudo-class/-/postcss-scope-pseudo-class-4.0.1.tgz#9fe60e9d6d91d58fb5fc6c768a40f6e47e89a235" + integrity sha512-IMi9FwtH6LMNuLea1bjVMQAsUhFxJnyLSgOp/cpv5hrzWmrUYU5fm0EguNDIIOHUqzXode8F/1qkC/tEo/qN8Q== + dependencies: + postcss-selector-parser "^7.0.0" + +"@csstools/postcss-sign-functions@^1.1.4": + version "1.1.4" + resolved "https://registry.yarnpkg.com/@csstools/postcss-sign-functions/-/postcss-sign-functions-1.1.4.tgz#a9ac56954014ae4c513475b3f1b3e3424a1e0c12" + integrity sha512-P97h1XqRPcfcJndFdG95Gv/6ZzxUBBISem0IDqPZ7WMvc/wlO+yU0c5D/OCpZ5TJoTt63Ok3knGk64N+o6L2Pg== + dependencies: + "@csstools/css-calc" "^2.1.4" + "@csstools/css-parser-algorithms" "^3.0.5" + "@csstools/css-tokenizer" "^3.0.4" + +"@csstools/postcss-stepped-value-functions@^4.0.9": + version "4.0.9" + resolved "https://registry.yarnpkg.com/@csstools/postcss-stepped-value-functions/-/postcss-stepped-value-functions-4.0.9.tgz#36036f1a0e5e5ee2308e72f3c9cb433567c387b9" + integrity sha512-h9btycWrsex4dNLeQfyU3y3w40LMQooJWFMm/SK9lrKguHDcFl4VMkncKKoXi2z5rM9YGWbUQABI8BT2UydIcA== + dependencies: + "@csstools/css-calc" "^2.1.4" + "@csstools/css-parser-algorithms" "^3.0.5" + "@csstools/css-tokenizer" "^3.0.4" + +"@csstools/postcss-text-decoration-shorthand@^4.0.2": + version "4.0.2" + resolved "https://registry.yarnpkg.com/@csstools/postcss-text-decoration-shorthand/-/postcss-text-decoration-shorthand-4.0.2.tgz#a3bcf80492e6dda36477538ab8e8943908c9f80a" + integrity sha512-8XvCRrFNseBSAGxeaVTaNijAu+FzUvjwFXtcrynmazGb/9WUdsPCpBX+mHEHShVRq47Gy4peYAoxYs8ltUnmzA== + dependencies: + "@csstools/color-helpers" "^5.0.2" + postcss-value-parser "^4.2.0" + +"@csstools/postcss-trigonometric-functions@^4.0.9": + version "4.0.9" + resolved "https://registry.yarnpkg.com/@csstools/postcss-trigonometric-functions/-/postcss-trigonometric-functions-4.0.9.tgz#3f94ed2e319b57f2c59720b64e4d0a8a6fb8c3b2" + integrity sha512-Hnh5zJUdpNrJqK9v1/E3BbrQhaDTj5YiX7P61TOvUhoDHnUmsNNxcDAgkQ32RrcWx9GVUvfUNPcUkn8R3vIX6A== + dependencies: + "@csstools/css-calc" "^2.1.4" + "@csstools/css-parser-algorithms" "^3.0.5" + "@csstools/css-tokenizer" "^3.0.4" + +"@csstools/postcss-unset-value@^4.0.0": + version "4.0.0" + resolved "https://registry.yarnpkg.com/@csstools/postcss-unset-value/-/postcss-unset-value-4.0.0.tgz#7caa981a34196d06a737754864baf77d64de4bba" + integrity sha512-cBz3tOCI5Fw6NIFEwU3RiwK6mn3nKegjpJuzCndoGq3BZPkUjnsq7uQmIeMNeMbMk7YD2MfKcgCpZwX5jyXqCA== + +"@csstools/selector-resolve-nested@^3.1.0": + version "3.1.0" + resolved "https://registry.yarnpkg.com/@csstools/selector-resolve-nested/-/selector-resolve-nested-3.1.0.tgz#848c6f44cb65e3733e478319b9342b7aa436fac7" + integrity sha512-mf1LEW0tJLKfWyvn5KdDrhpxHyuxpbNwTIwOYLIvsTffeyOf85j5oIzfG0yosxDgx/sswlqBnESYUcQH0vgZ0g== + +"@csstools/selector-specificity@^5.0.0": + version "5.0.0" + resolved "https://registry.yarnpkg.com/@csstools/selector-specificity/-/selector-specificity-5.0.0.tgz#037817b574262134cabd68fc4ec1a454f168407b" + integrity sha512-PCqQV3c4CoVm3kdPhyeZ07VmBRdH2EpMFA/pd9OASpOEC3aXNGoqPDAZ80D0cLpMBxnmk0+yNhGsEx31hq7Gtw== + +"@csstools/utilities@^2.0.0": + version "2.0.0" + resolved "https://registry.yarnpkg.com/@csstools/utilities/-/utilities-2.0.0.tgz#f7ff0fee38c9ffb5646d47b6906e0bc8868bde60" + integrity sha512-5VdOr0Z71u+Yp3ozOx8T11N703wIFGVRgOWbOZMKgglPJsWA54MRIoMNVMa7shUToIhx5J8vX4sOZgD2XiihiQ== + "@discoveryjs/json-ext@0.5.7": version "0.5.7" resolved "https://registry.yarnpkg.com/@discoveryjs/json-ext/-/json-ext-0.5.7.tgz#1d572bfbbe14b7704e0ba0f39b74815b84870d70" integrity sha512-dBVuXR082gk3jsFp7Rd/JI4kytwGHecnCoTtXFb7DB6CNHp4rg5k1bhg0nWdLGLnOV71lmDzGQaLMy8iPLY0pw== -"@docsearch/css@3.6.1": - version "3.6.1" - resolved "https://registry.yarnpkg.com/@docsearch/css/-/css-3.6.1.tgz#f0a728ecb486c81f2d282650fc1820c914913408" - integrity sha512-VtVb5DS+0hRIprU2CO6ZQjK2Zg4QU5HrDM1+ix6rT0umsYvFvatMAnf97NHZlVWDaaLlx7GRfR/7FikANiM2Fg== +"@docsearch/css@3.9.0": + version "3.9.0" + resolved "https://registry.yarnpkg.com/@docsearch/css/-/css-3.9.0.tgz#3bc29c96bf024350d73b0cfb7c2a7b71bf251cd5" + integrity sha512-cQbnVbq0rrBwNAKegIac/t6a8nWoUAn8frnkLFW6YARaRmAQr5/Eoe6Ln2fqkUCZ40KpdrKbpSAmgrkviOxuWA== -"@docsearch/react@^3.5.2": - version "3.6.1" - resolved "https://registry.yarnpkg.com/@docsearch/react/-/react-3.6.1.tgz#0f826df08693293806d64277d6d9c38636211b97" - integrity sha512-qXZkEPvybVhSXj0K7U3bXc233tk5e8PfhoZ6MhPOiik/qUQxYC+Dn9DnoS7CxHQQhHfCvTiN0eY9M12oRghEXw== +"@docsearch/react@^3.9.0": + version "3.9.0" + resolved "https://registry.yarnpkg.com/@docsearch/react/-/react-3.9.0.tgz#d0842b700c3ee26696786f3c8ae9f10c1a3f0db3" + integrity sha512-mb5FOZYZIkRQ6s/NWnM98k879vu5pscWqTLubLFBO87igYYT4VzVazh4h5o/zCvTIZgEt3PvsCOMOswOUo9yHQ== dependencies: - "@algolia/autocomplete-core" "1.9.3" - "@algolia/autocomplete-preset-algolia" "1.9.3" - "@docsearch/css" "3.6.1" - algoliasearch "^4.19.1" + "@algolia/autocomplete-core" "1.17.9" + "@algolia/autocomplete-preset-algolia" "1.17.9" + "@docsearch/css" "3.9.0" + algoliasearch "^5.14.2" -"@docusaurus/core@3.5.2", "@docusaurus/core@^3.5.2": - version "3.5.2" - resolved "https://registry.yarnpkg.com/@docusaurus/core/-/core-3.5.2.tgz#3adedb90e7b6104592f1231043bd6bf91680c39c" - integrity sha512-4Z1WkhCSkX4KO0Fw5m/Vuc7Q3NxBG53NE5u59Rs96fWkMPZVSrzEPP16/Nk6cWb/shK7xXPndTmalJtw7twL/w== +"@docusaurus/babel@3.8.1": + version "3.8.1" + resolved "https://registry.yarnpkg.com/@docusaurus/babel/-/babel-3.8.1.tgz#db329ac047184214e08e2dbc809832c696c18506" + integrity sha512-3brkJrml8vUbn9aeoZUlJfsI/GqyFcDgQJwQkmBtclJgWDEQBKKeagZfOgx0WfUQhagL1sQLNW0iBdxnI863Uw== dependencies: - "@babel/core" "^7.23.3" - "@babel/generator" "^7.23.3" + "@babel/core" "^7.25.9" + "@babel/generator" "^7.25.9" "@babel/plugin-syntax-dynamic-import" "^7.8.3" - "@babel/plugin-transform-runtime" "^7.22.9" - "@babel/preset-env" "^7.22.9" - "@babel/preset-react" "^7.22.5" - "@babel/preset-typescript" "^7.22.5" - "@babel/runtime" "^7.22.6" - "@babel/runtime-corejs3" "^7.22.6" - "@babel/traverse" "^7.22.8" - "@docusaurus/cssnano-preset" "3.5.2" - "@docusaurus/logger" "3.5.2" - "@docusaurus/mdx-loader" "3.5.2" - "@docusaurus/utils" "3.5.2" - "@docusaurus/utils-common" "3.5.2" - "@docusaurus/utils-validation" "3.5.2" - autoprefixer "^10.4.14" - babel-loader "^9.1.3" + "@babel/plugin-transform-runtime" "^7.25.9" + "@babel/preset-env" "^7.25.9" + "@babel/preset-react" "^7.25.9" + "@babel/preset-typescript" "^7.25.9" + "@babel/runtime" "^7.25.9" + "@babel/runtime-corejs3" "^7.25.9" + "@babel/traverse" "^7.25.9" + "@docusaurus/logger" "3.8.1" + "@docusaurus/utils" "3.8.1" babel-plugin-dynamic-import-node "^2.3.3" + fs-extra "^11.1.1" + tslib "^2.6.0" + +"@docusaurus/bundler@3.8.1": + version "3.8.1" + resolved "https://registry.yarnpkg.com/@docusaurus/bundler/-/bundler-3.8.1.tgz#e2b11d615f09a6e470774bb36441b8d06736b94c" + integrity sha512-/z4V0FRoQ0GuSLToNjOSGsk6m2lQUG4FRn8goOVoZSRsTrU8YR2aJacX5K3RG18EaX9b+52pN4m1sL3MQZVsQA== + dependencies: + "@babel/core" "^7.25.9" + "@docusaurus/babel" "3.8.1" + "@docusaurus/cssnano-preset" "3.8.1" + "@docusaurus/logger" "3.8.1" + "@docusaurus/types" "3.8.1" + "@docusaurus/utils" "3.8.1" + babel-loader "^9.2.1" + clean-css "^5.3.3" + copy-webpack-plugin "^11.0.0" + css-loader "^6.11.0" + css-minimizer-webpack-plugin "^5.0.1" + cssnano "^6.1.2" + file-loader "^6.2.0" + html-minifier-terser "^7.2.0" + mini-css-extract-plugin "^2.9.2" + null-loader "^4.0.1" + postcss "^8.5.4" + postcss-loader "^7.3.4" + postcss-preset-env "^10.2.1" + terser-webpack-plugin "^5.3.9" + tslib "^2.6.0" + url-loader "^4.1.1" + webpack "^5.95.0" + webpackbar "^6.0.1" + +"@docusaurus/core@3.8.1", "@docusaurus/core@^3.8.1": + version "3.8.1" + resolved "https://registry.yarnpkg.com/@docusaurus/core/-/core-3.8.1.tgz#c22e47c16a22cb7d245306c64bc54083838ff3db" + integrity sha512-ENB01IyQSqI2FLtOzqSI3qxG2B/jP4gQPahl2C3XReiLebcVh5B5cB9KYFvdoOqOWPyr5gXK4sjgTKv7peXCrA== + dependencies: + "@docusaurus/babel" "3.8.1" + "@docusaurus/bundler" "3.8.1" + "@docusaurus/logger" "3.8.1" + "@docusaurus/mdx-loader" "3.8.1" + "@docusaurus/utils" "3.8.1" + "@docusaurus/utils-common" "3.8.1" + "@docusaurus/utils-validation" "3.8.1" boxen "^6.2.1" chalk "^4.1.2" chokidar "^3.5.3" - clean-css "^5.3.2" cli-table3 "^0.6.3" combine-promises "^1.1.0" commander "^5.1.0" - copy-webpack-plugin "^11.0.0" core-js "^3.31.1" - css-loader "^6.8.1" - css-minimizer-webpack-plugin "^5.0.1" - cssnano "^6.1.2" - del "^6.1.1" detect-port "^1.5.1" escape-html "^1.0.3" eta "^2.2.0" eval "^0.1.8" - file-loader "^6.2.0" + execa "5.1.1" fs-extra "^11.1.1" - html-minifier-terser "^7.2.0" html-tags "^3.3.1" - html-webpack-plugin "^5.5.3" + html-webpack-plugin "^5.6.0" leven "^3.1.0" lodash "^4.17.21" - mini-css-extract-plugin "^2.7.6" + open "^8.4.0" p-map "^4.0.0" - postcss "^8.4.26" - postcss-loader "^7.3.3" prompts "^2.4.2" - react-dev-utils "^12.0.1" - react-helmet-async "^1.3.0" + react-helmet-async "npm:@slorber/react-helmet-async@1.3.0" react-loadable "npm:@docusaurus/react-loadable@6.0.0" react-loadable-ssr-addon-v5-slorber "^1.0.1" react-router "^5.3.4" react-router-config "^5.1.1" react-router-dom "^5.3.4" - rtl-detect "^1.0.4" semver "^7.5.4" - serve-handler "^6.1.5" - shelljs "^0.8.5" - terser-webpack-plugin "^5.3.9" + serve-handler "^6.1.6" + tinypool "^1.0.2" tslib "^2.6.0" update-notifier "^6.0.2" - url-loader "^4.1.1" - webpack "^5.88.1" - webpack-bundle-analyzer "^4.9.0" - webpack-dev-server "^4.15.1" - webpack-merge "^5.9.0" - webpackbar "^5.0.2" + webpack "^5.95.0" + webpack-bundle-analyzer "^4.10.2" + webpack-dev-server "^4.15.2" + webpack-merge "^6.0.1" -"@docusaurus/cssnano-preset@3.5.2": - version "3.5.2" - resolved "https://registry.yarnpkg.com/@docusaurus/cssnano-preset/-/cssnano-preset-3.5.2.tgz#6c1f2b2f9656f978c4694c84ab24592b04dcfab3" - integrity sha512-D3KiQXOMA8+O0tqORBrTOEQyQxNIfPm9jEaJoALjjSjc2M/ZAWcUfPQEnwr2JB2TadHw2gqWgpZckQmrVWkytA== +"@docusaurus/cssnano-preset@3.8.1": + version "3.8.1" + resolved "https://registry.yarnpkg.com/@docusaurus/cssnano-preset/-/cssnano-preset-3.8.1.tgz#bd55026251a6ab8e2194839a2042458ef9880c44" + integrity sha512-G7WyR2N6SpyUotqhGznERBK+x84uyhfMQM2MmDLs88bw4Flom6TY46HzkRkSEzaP9j80MbTN8naiL1fR17WQug== dependencies: cssnano-preset-advanced "^6.1.2" - postcss "^8.4.38" + postcss "^8.5.4" postcss-sort-media-queries "^5.2.0" tslib "^2.6.0" -"@docusaurus/logger@3.5.2": - version "3.5.2" - resolved "https://registry.yarnpkg.com/@docusaurus/logger/-/logger-3.5.2.tgz#1150339ad56844b30734115c19c580f3b25cf5ed" - integrity sha512-LHC540SGkeLfyT3RHK3gAMK6aS5TRqOD4R72BEU/DE2M/TY8WwEUAMY576UUc/oNJXv8pGhBmQB6N9p3pt8LQw== +"@docusaurus/logger@3.8.1": + version "3.8.1" + resolved "https://registry.yarnpkg.com/@docusaurus/logger/-/logger-3.8.1.tgz#45321b2e2e14695d0dbd8b4104ea7b0fbaa98700" + integrity sha512-2wjeGDhKcExEmjX8k1N/MRDiPKXGF2Pg+df/bDDPnnJWHXnVEZxXj80d6jcxp1Gpnksl0hF8t/ZQw9elqj2+ww== dependencies: chalk "^4.1.2" tslib "^2.6.0" -"@docusaurus/mdx-loader@3.5.2": - version "3.5.2" - resolved "https://registry.yarnpkg.com/@docusaurus/mdx-loader/-/mdx-loader-3.5.2.tgz#99781641372c5037bcbe09bb8ade93a0e0ada57d" - integrity sha512-ku3xO9vZdwpiMIVd8BzWV0DCqGEbCP5zs1iHfKX50vw6jX8vQo0ylYo1YJMZyz6e+JFJ17HYHT5FzVidz2IflA== +"@docusaurus/mdx-loader@3.8.1": + version "3.8.1" + resolved "https://registry.yarnpkg.com/@docusaurus/mdx-loader/-/mdx-loader-3.8.1.tgz#74309b3614bbcef1d55fb13e6cc339b7fb000b5f" + integrity sha512-DZRhagSFRcEq1cUtBMo4TKxSNo/W6/s44yhr8X+eoXqCLycFQUylebOMPseHi5tc4fkGJqwqpWJLz6JStU9L4w== dependencies: - "@docusaurus/logger" "3.5.2" - "@docusaurus/utils" "3.5.2" - "@docusaurus/utils-validation" "3.5.2" + "@docusaurus/logger" "3.8.1" + "@docusaurus/utils" "3.8.1" + "@docusaurus/utils-validation" "3.8.1" "@mdx-js/mdx" "^3.0.0" "@slorber/remark-comment" "^1.0.0" escape-html "^1.0.3" estree-util-value-to-estree "^3.0.1" file-loader "^6.2.0" fs-extra "^11.1.1" - image-size "^1.0.2" + image-size "^2.0.2" mdast-util-mdx "^3.0.0" mdast-util-to-string "^4.0.0" rehype-raw "^7.0.0" @@ -1352,181 +2595,210 @@ vfile "^6.0.1" webpack "^5.88.1" -"@docusaurus/module-type-aliases@3.5.2", "@docusaurus/module-type-aliases@^3.5.2": - version "3.5.2" - resolved "https://registry.yarnpkg.com/@docusaurus/module-type-aliases/-/module-type-aliases-3.5.2.tgz#4e8f9c0703e23b2e07ebfce96598ec83e4dd2a9e" - integrity sha512-Z+Xu3+2rvKef/YKTMxZHsEXp1y92ac0ngjDiExRdqGTmEKtCUpkbNYH8v5eXo5Ls+dnW88n6WTa+Q54kLOkwPg== +"@docusaurus/module-type-aliases@3.8.1", "@docusaurus/module-type-aliases@^3.8.1": + version "3.8.1" + resolved "https://registry.yarnpkg.com/@docusaurus/module-type-aliases/-/module-type-aliases-3.8.1.tgz#454de577bd7f50b5eae16db0f76b49ca5e4e281a" + integrity sha512-6xhvAJiXzsaq3JdosS7wbRt/PwEPWHr9eM4YNYqVlbgG1hSK3uQDXTVvQktasp3VO6BmfYWPozueLWuj4gB+vg== dependencies: - "@docusaurus/types" "3.5.2" + "@docusaurus/types" "3.8.1" "@types/history" "^4.7.11" "@types/react" "*" "@types/react-router-config" "*" "@types/react-router-dom" "*" - react-helmet-async "*" + react-helmet-async "npm:@slorber/react-helmet-async@1.3.0" react-loadable "npm:@docusaurus/react-loadable@6.0.0" -"@docusaurus/plugin-content-blog@3.5.2": - version "3.5.2" - resolved "https://registry.yarnpkg.com/@docusaurus/plugin-content-blog/-/plugin-content-blog-3.5.2.tgz#649c07c34da7603645f152bcebdf75285baed16b" - integrity sha512-R7ghWnMvjSf+aeNDH0K4fjyQnt5L0KzUEnUhmf1e3jZrv3wogeytZNN6n7X8yHcMsuZHPOrctQhXWnmxu+IRRg== - dependencies: - "@docusaurus/core" "3.5.2" - "@docusaurus/logger" "3.5.2" - "@docusaurus/mdx-loader" "3.5.2" - "@docusaurus/theme-common" "3.5.2" - "@docusaurus/types" "3.5.2" - "@docusaurus/utils" "3.5.2" - "@docusaurus/utils-common" "3.5.2" - "@docusaurus/utils-validation" "3.5.2" +"@docusaurus/plugin-content-blog@3.8.1": + version "3.8.1" + resolved "https://registry.yarnpkg.com/@docusaurus/plugin-content-blog/-/plugin-content-blog-3.8.1.tgz#88d842b562b04cf59df900d9f6984b086f821525" + integrity sha512-vNTpMmlvNP9n3hGEcgPaXyvTljanAKIUkuG9URQ1DeuDup0OR7Ltvoc8yrmH+iMZJbcQGhUJF+WjHLwuk8HSdw== + dependencies: + "@docusaurus/core" "3.8.1" + "@docusaurus/logger" "3.8.1" + "@docusaurus/mdx-loader" "3.8.1" + "@docusaurus/theme-common" "3.8.1" + "@docusaurus/types" "3.8.1" + "@docusaurus/utils" "3.8.1" + "@docusaurus/utils-common" "3.8.1" + "@docusaurus/utils-validation" "3.8.1" cheerio "1.0.0-rc.12" feed "^4.2.2" fs-extra "^11.1.1" lodash "^4.17.21" - reading-time "^1.5.0" + schema-dts "^1.1.2" srcset "^4.0.0" tslib "^2.6.0" unist-util-visit "^5.0.0" utility-types "^3.10.0" webpack "^5.88.1" -"@docusaurus/plugin-content-docs@3.5.2": - version "3.5.2" - resolved "https://registry.yarnpkg.com/@docusaurus/plugin-content-docs/-/plugin-content-docs-3.5.2.tgz#adcf6c0bd9a9818eb192ab831e0069ee62d31505" - integrity sha512-Bt+OXn/CPtVqM3Di44vHjE7rPCEsRCB/DMo2qoOuozB9f7+lsdrHvD0QCHdBs0uhz6deYJDppAr2VgqybKPlVQ== - dependencies: - "@docusaurus/core" "3.5.2" - "@docusaurus/logger" "3.5.2" - "@docusaurus/mdx-loader" "3.5.2" - "@docusaurus/module-type-aliases" "3.5.2" - "@docusaurus/theme-common" "3.5.2" - "@docusaurus/types" "3.5.2" - "@docusaurus/utils" "3.5.2" - "@docusaurus/utils-common" "3.5.2" - "@docusaurus/utils-validation" "3.5.2" +"@docusaurus/plugin-content-docs@3.8.1": + version "3.8.1" + resolved "https://registry.yarnpkg.com/@docusaurus/plugin-content-docs/-/plugin-content-docs-3.8.1.tgz#40686a206abb6373bee5638de100a2c312f112a4" + integrity sha512-oByRkSZzeGNQByCMaX+kif5Nl2vmtj2IHQI2fWjCfCootsdKZDPFLonhIp5s3IGJO7PLUfe0POyw0Xh/RrGXJA== + dependencies: + "@docusaurus/core" "3.8.1" + "@docusaurus/logger" "3.8.1" + "@docusaurus/mdx-loader" "3.8.1" + "@docusaurus/module-type-aliases" "3.8.1" + "@docusaurus/theme-common" "3.8.1" + "@docusaurus/types" "3.8.1" + "@docusaurus/utils" "3.8.1" + "@docusaurus/utils-common" "3.8.1" + "@docusaurus/utils-validation" "3.8.1" "@types/react-router-config" "^5.0.7" combine-promises "^1.1.0" fs-extra "^11.1.1" js-yaml "^4.1.0" lodash "^4.17.21" + schema-dts "^1.1.2" tslib "^2.6.0" utility-types "^3.10.0" webpack "^5.88.1" -"@docusaurus/plugin-content-pages@3.5.2": - version "3.5.2" - resolved "https://registry.yarnpkg.com/@docusaurus/plugin-content-pages/-/plugin-content-pages-3.5.2.tgz#2b59e43f5bc5b5176ff01835de706f1c65c2e68b" - integrity sha512-WzhHjNpoQAUz/ueO10cnundRz+VUtkjFhhaQ9jApyv1a46FPURO4cef89pyNIOMny1fjDz/NUN2z6Yi+5WUrCw== - dependencies: - "@docusaurus/core" "3.5.2" - "@docusaurus/mdx-loader" "3.5.2" - "@docusaurus/types" "3.5.2" - "@docusaurus/utils" "3.5.2" - "@docusaurus/utils-validation" "3.5.2" +"@docusaurus/plugin-content-pages@3.8.1": + version "3.8.1" + resolved "https://registry.yarnpkg.com/@docusaurus/plugin-content-pages/-/plugin-content-pages-3.8.1.tgz#41b684dbd15390b7bb6a627f78bf81b6324511ac" + integrity sha512-a+V6MS2cIu37E/m7nDJn3dcxpvXb6TvgdNI22vJX8iUTp8eoMoPa0VArEbWvCxMY/xdC26WzNv4wZ6y0iIni/w== + dependencies: + "@docusaurus/core" "3.8.1" + "@docusaurus/mdx-loader" "3.8.1" + "@docusaurus/types" "3.8.1" + "@docusaurus/utils" "3.8.1" + "@docusaurus/utils-validation" "3.8.1" fs-extra "^11.1.1" tslib "^2.6.0" webpack "^5.88.1" -"@docusaurus/plugin-debug@3.5.2": - version "3.5.2" - resolved "https://registry.yarnpkg.com/@docusaurus/plugin-debug/-/plugin-debug-3.5.2.tgz#c25ca6a59e62a17c797b367173fe80c06fdf2f65" - integrity sha512-kBK6GlN0itCkrmHuCS6aX1wmoWc5wpd5KJlqQ1FyrF0cLDnvsYSnh7+ftdwzt7G6lGBho8lrVwkkL9/iQvaSOA== +"@docusaurus/plugin-css-cascade-layers@3.8.1": + version "3.8.1" + resolved "https://registry.yarnpkg.com/@docusaurus/plugin-css-cascade-layers/-/plugin-css-cascade-layers-3.8.1.tgz#cb414b4a82aa60fc64ef2a435ad0105e142a6c71" + integrity sha512-VQ47xRxfNKjHS5ItzaVXpxeTm7/wJLFMOPo1BkmoMG4Cuz4nuI+Hs62+RMk1OqVog68Swz66xVPK8g9XTrBKRw== dependencies: - "@docusaurus/core" "3.5.2" - "@docusaurus/types" "3.5.2" - "@docusaurus/utils" "3.5.2" + "@docusaurus/core" "3.8.1" + "@docusaurus/types" "3.8.1" + "@docusaurus/utils" "3.8.1" + "@docusaurus/utils-validation" "3.8.1" + tslib "^2.6.0" + +"@docusaurus/plugin-debug@3.8.1": + version "3.8.1" + resolved "https://registry.yarnpkg.com/@docusaurus/plugin-debug/-/plugin-debug-3.8.1.tgz#45b107e46b627caaae66995f53197ace78af3491" + integrity sha512-nT3lN7TV5bi5hKMB7FK8gCffFTBSsBsAfV84/v293qAmnHOyg1nr9okEw8AiwcO3bl9vije5nsUvP0aRl2lpaw== + dependencies: + "@docusaurus/core" "3.8.1" + "@docusaurus/types" "3.8.1" + "@docusaurus/utils" "3.8.1" fs-extra "^11.1.1" - react-json-view-lite "^1.2.0" + react-json-view-lite "^2.3.0" tslib "^2.6.0" -"@docusaurus/plugin-google-analytics@3.5.2": - version "3.5.2" - resolved "https://registry.yarnpkg.com/@docusaurus/plugin-google-analytics/-/plugin-google-analytics-3.5.2.tgz#1143e78d1461d3c74a2746f036d25b18d4a2608d" - integrity sha512-rjEkJH/tJ8OXRE9bwhV2mb/WP93V441rD6XnM6MIluu7rk8qg38iSxS43ga2V2Q/2ib53PcqbDEJDG/yWQRJhQ== +"@docusaurus/plugin-google-analytics@3.8.1": + version "3.8.1" + resolved "https://registry.yarnpkg.com/@docusaurus/plugin-google-analytics/-/plugin-google-analytics-3.8.1.tgz#64a302e62fe5cb6e007367c964feeef7b056764a" + integrity sha512-Hrb/PurOJsmwHAsfMDH6oVpahkEGsx7F8CWMjyP/dw1qjqmdS9rcV1nYCGlM8nOtD3Wk/eaThzUB5TSZsGz+7Q== dependencies: - "@docusaurus/core" "3.5.2" - "@docusaurus/types" "3.5.2" - "@docusaurus/utils-validation" "3.5.2" + "@docusaurus/core" "3.8.1" + "@docusaurus/types" "3.8.1" + "@docusaurus/utils-validation" "3.8.1" tslib "^2.6.0" -"@docusaurus/plugin-google-gtag@3.5.2": - version "3.5.2" - resolved "https://registry.yarnpkg.com/@docusaurus/plugin-google-gtag/-/plugin-google-gtag-3.5.2.tgz#60b5a9e1888c4fa16933f7c5cb5f2f2c31caad3a" - integrity sha512-lm8XL3xLkTPHFKKjLjEEAHUrW0SZBSHBE1I+i/tmYMBsjCcUB5UJ52geS5PSiOCFVR74tbPGcPHEV/gaaxFeSA== +"@docusaurus/plugin-google-gtag@3.8.1": + version "3.8.1" + resolved "https://registry.yarnpkg.com/@docusaurus/plugin-google-gtag/-/plugin-google-gtag-3.8.1.tgz#8c76f8a1d96448f2f0f7b10e6bde451c40672b95" + integrity sha512-tKE8j1cEZCh8KZa4aa80zpSTxsC2/ZYqjx6AAfd8uA8VHZVw79+7OTEP2PoWi0uL5/1Is0LF5Vwxd+1fz5HlKg== dependencies: - "@docusaurus/core" "3.5.2" - "@docusaurus/types" "3.5.2" - "@docusaurus/utils-validation" "3.5.2" + "@docusaurus/core" "3.8.1" + "@docusaurus/types" "3.8.1" + "@docusaurus/utils-validation" "3.8.1" "@types/gtag.js" "^0.0.12" tslib "^2.6.0" -"@docusaurus/plugin-google-tag-manager@3.5.2": - version "3.5.2" - resolved "https://registry.yarnpkg.com/@docusaurus/plugin-google-tag-manager/-/plugin-google-tag-manager-3.5.2.tgz#7a37334d2e7f00914d61ad05bc09391c4db3bfda" - integrity sha512-QkpX68PMOMu10Mvgvr5CfZAzZQFx8WLlOiUQ/Qmmcl6mjGK6H21WLT5x7xDmcpCoKA/3CegsqIqBR+nA137lQg== +"@docusaurus/plugin-google-tag-manager@3.8.1": + version "3.8.1" + resolved "https://registry.yarnpkg.com/@docusaurus/plugin-google-tag-manager/-/plugin-google-tag-manager-3.8.1.tgz#88241ffd06369f4a4d5fb982ff3ac2777561ae37" + integrity sha512-iqe3XKITBquZq+6UAXdb1vI0fPY5iIOitVjPQ581R1ZKpHr0qe+V6gVOrrcOHixPDD/BUKdYwkxFjpNiEN+vBw== dependencies: - "@docusaurus/core" "3.5.2" - "@docusaurus/types" "3.5.2" - "@docusaurus/utils-validation" "3.5.2" + "@docusaurus/core" "3.8.1" + "@docusaurus/types" "3.8.1" + "@docusaurus/utils-validation" "3.8.1" tslib "^2.6.0" -"@docusaurus/plugin-sitemap@3.5.2": - version "3.5.2" - resolved "https://registry.yarnpkg.com/@docusaurus/plugin-sitemap/-/plugin-sitemap-3.5.2.tgz#9c940b27f3461c54d65295cf4c52cb20538bd360" - integrity sha512-DnlqYyRAdQ4NHY28TfHuVk414ft2uruP4QWCH//jzpHjqvKyXjj2fmDtI8RPUBh9K8iZKFMHRnLtzJKySPWvFA== - dependencies: - "@docusaurus/core" "3.5.2" - "@docusaurus/logger" "3.5.2" - "@docusaurus/types" "3.5.2" - "@docusaurus/utils" "3.5.2" - "@docusaurus/utils-common" "3.5.2" - "@docusaurus/utils-validation" "3.5.2" +"@docusaurus/plugin-sitemap@3.8.1": + version "3.8.1" + resolved "https://registry.yarnpkg.com/@docusaurus/plugin-sitemap/-/plugin-sitemap-3.8.1.tgz#3aebd39186dc30e53023f1aab44625bc0bdac892" + integrity sha512-+9YV/7VLbGTq8qNkjiugIelmfUEVkTyLe6X8bWq7K5qPvGXAjno27QAfFq63mYfFFbJc7z+pudL63acprbqGzw== + dependencies: + "@docusaurus/core" "3.8.1" + "@docusaurus/logger" "3.8.1" + "@docusaurus/types" "3.8.1" + "@docusaurus/utils" "3.8.1" + "@docusaurus/utils-common" "3.8.1" + "@docusaurus/utils-validation" "3.8.1" fs-extra "^11.1.1" sitemap "^7.1.1" tslib "^2.6.0" -"@docusaurus/preset-classic@^3.5.2": - version "3.5.2" - resolved "https://registry.yarnpkg.com/@docusaurus/preset-classic/-/preset-classic-3.5.2.tgz#977f78510bbc556aa0539149eef960bb7ab52bd9" - integrity sha512-3ihfXQ95aOHiLB5uCu+9PRy2gZCeSZoDcqpnDvf3B+sTrMvMTr8qRUzBvWkoIqc82yG5prCboRjk1SVILKx6sg== - dependencies: - "@docusaurus/core" "3.5.2" - "@docusaurus/plugin-content-blog" "3.5.2" - "@docusaurus/plugin-content-docs" "3.5.2" - "@docusaurus/plugin-content-pages" "3.5.2" - "@docusaurus/plugin-debug" "3.5.2" - "@docusaurus/plugin-google-analytics" "3.5.2" - "@docusaurus/plugin-google-gtag" "3.5.2" - "@docusaurus/plugin-google-tag-manager" "3.5.2" - "@docusaurus/plugin-sitemap" "3.5.2" - "@docusaurus/theme-classic" "3.5.2" - "@docusaurus/theme-common" "3.5.2" - "@docusaurus/theme-search-algolia" "3.5.2" - "@docusaurus/types" "3.5.2" - -"@docusaurus/theme-classic@3.5.2": - version "3.5.2" - resolved "https://registry.yarnpkg.com/@docusaurus/theme-classic/-/theme-classic-3.5.2.tgz#602ddb63d987ab1f939e3760c67bc1880f01c000" - integrity sha512-XRpinSix3NBv95Rk7xeMF9k4safMkwnpSgThn0UNQNumKvmcIYjfkwfh2BhwYh/BxMXQHJ/PdmNh22TQFpIaYg== - dependencies: - "@docusaurus/core" "3.5.2" - "@docusaurus/mdx-loader" "3.5.2" - "@docusaurus/module-type-aliases" "3.5.2" - "@docusaurus/plugin-content-blog" "3.5.2" - "@docusaurus/plugin-content-docs" "3.5.2" - "@docusaurus/plugin-content-pages" "3.5.2" - "@docusaurus/theme-common" "3.5.2" - "@docusaurus/theme-translations" "3.5.2" - "@docusaurus/types" "3.5.2" - "@docusaurus/utils" "3.5.2" - "@docusaurus/utils-common" "3.5.2" - "@docusaurus/utils-validation" "3.5.2" +"@docusaurus/plugin-svgr@3.8.1": + version "3.8.1" + resolved "https://registry.yarnpkg.com/@docusaurus/plugin-svgr/-/plugin-svgr-3.8.1.tgz#6f340be8eae418a2cce540d8ece096ffd9c9b6ab" + integrity sha512-rW0LWMDsdlsgowVwqiMb/7tANDodpy1wWPwCcamvhY7OECReN3feoFwLjd/U4tKjNY3encj0AJSTxJA+Fpe+Gw== + dependencies: + "@docusaurus/core" "3.8.1" + "@docusaurus/types" "3.8.1" + "@docusaurus/utils" "3.8.1" + "@docusaurus/utils-validation" "3.8.1" + "@svgr/core" "8.1.0" + "@svgr/webpack" "^8.1.0" + tslib "^2.6.0" + webpack "^5.88.1" + +"@docusaurus/preset-classic@^3.8.1": + version "3.8.1" + resolved "https://registry.yarnpkg.com/@docusaurus/preset-classic/-/preset-classic-3.8.1.tgz#bb79fd12f3211363720c569a526c7e24d3aa966b" + integrity sha512-yJSjYNHXD8POMGc2mKQuj3ApPrN+eG0rO1UPgSx7jySpYU+n4WjBikbrA2ue5ad9A7aouEtMWUoiSRXTH/g7KQ== + dependencies: + "@docusaurus/core" "3.8.1" + "@docusaurus/plugin-content-blog" "3.8.1" + "@docusaurus/plugin-content-docs" "3.8.1" + "@docusaurus/plugin-content-pages" "3.8.1" + "@docusaurus/plugin-css-cascade-layers" "3.8.1" + "@docusaurus/plugin-debug" "3.8.1" + "@docusaurus/plugin-google-analytics" "3.8.1" + "@docusaurus/plugin-google-gtag" "3.8.1" + "@docusaurus/plugin-google-tag-manager" "3.8.1" + "@docusaurus/plugin-sitemap" "3.8.1" + "@docusaurus/plugin-svgr" "3.8.1" + "@docusaurus/theme-classic" "3.8.1" + "@docusaurus/theme-common" "3.8.1" + "@docusaurus/theme-search-algolia" "3.8.1" + "@docusaurus/types" "3.8.1" + +"@docusaurus/theme-classic@3.8.1": + version "3.8.1" + resolved "https://registry.yarnpkg.com/@docusaurus/theme-classic/-/theme-classic-3.8.1.tgz#1e45c66d89ded359225fcd29bf3258d9205765c1" + integrity sha512-bqDUCNqXeYypMCsE1VcTXSI1QuO4KXfx8Cvl6rYfY0bhhqN6d2WZlRkyLg/p6pm+DzvanqHOyYlqdPyP0iz+iw== + dependencies: + "@docusaurus/core" "3.8.1" + "@docusaurus/logger" "3.8.1" + "@docusaurus/mdx-loader" "3.8.1" + "@docusaurus/module-type-aliases" "3.8.1" + "@docusaurus/plugin-content-blog" "3.8.1" + "@docusaurus/plugin-content-docs" "3.8.1" + "@docusaurus/plugin-content-pages" "3.8.1" + "@docusaurus/theme-common" "3.8.1" + "@docusaurus/theme-translations" "3.8.1" + "@docusaurus/types" "3.8.1" + "@docusaurus/utils" "3.8.1" + "@docusaurus/utils-common" "3.8.1" + "@docusaurus/utils-validation" "3.8.1" "@mdx-js/react" "^3.0.0" clsx "^2.0.0" copy-text-to-clipboard "^3.2.0" - infima "0.2.0-alpha.44" + infima "0.2.0-alpha.45" lodash "^4.17.21" nprogress "^0.2.0" - postcss "^8.4.26" + postcss "^8.5.4" prism-react-renderer "^2.3.0" prismjs "^1.29.0" react-router-dom "^5.3.4" @@ -1534,15 +2806,15 @@ tslib "^2.6.0" utility-types "^3.10.0" -"@docusaurus/theme-common@3.5.2": - version "3.5.2" - resolved "https://registry.yarnpkg.com/@docusaurus/theme-common/-/theme-common-3.5.2.tgz#b507ab869a1fba0be9c3c9d74f2f3d74c3ac78b2" - integrity sha512-QXqlm9S6x9Ibwjs7I2yEDgsCocp708DrCrgHgKwg2n2AY0YQ6IjU0gAK35lHRLOvAoJUfCKpQAwUykB0R7+Eew== +"@docusaurus/theme-common@3.8.1": + version "3.8.1" + resolved "https://registry.yarnpkg.com/@docusaurus/theme-common/-/theme-common-3.8.1.tgz#17c23316fbe3ee3f7e707c7298cb59a0fff38b4b" + integrity sha512-UswMOyTnPEVRvN5Qzbo+l8k4xrd5fTFu2VPPfD6FcW/6qUtVLmJTQCktbAL3KJ0BVXGm5aJXz/ZrzqFuZERGPw== dependencies: - "@docusaurus/mdx-loader" "3.5.2" - "@docusaurus/module-type-aliases" "3.5.2" - "@docusaurus/utils" "3.5.2" - "@docusaurus/utils-common" "3.5.2" + "@docusaurus/mdx-loader" "3.8.1" + "@docusaurus/module-type-aliases" "3.8.1" + "@docusaurus/utils" "3.8.1" + "@docusaurus/utils-common" "3.8.1" "@types/history" "^4.7.11" "@types/react" "*" "@types/react-router-config" "*" @@ -1552,34 +2824,34 @@ tslib "^2.6.0" utility-types "^3.10.0" -"@docusaurus/theme-mermaid@^3.5.2": - version "3.5.2" - resolved "https://registry.yarnpkg.com/@docusaurus/theme-mermaid/-/theme-mermaid-3.5.2.tgz#7d64289e6f2493b9fc0d5f2e8f66da4c9d884db8" - integrity sha512-7vWCnIe/KoyTN1Dc55FIyqO5hJ3YaV08Mr63Zej0L0mX1iGzt+qKSmeVUAJ9/aOalUhF0typV0RmNUSy5FAmCg== - dependencies: - "@docusaurus/core" "3.5.2" - "@docusaurus/module-type-aliases" "3.5.2" - "@docusaurus/theme-common" "3.5.2" - "@docusaurus/types" "3.5.2" - "@docusaurus/utils-validation" "3.5.2" - mermaid "^10.4.0" +"@docusaurus/theme-mermaid@^3.8.1": + version "3.8.1" + resolved "https://registry.yarnpkg.com/@docusaurus/theme-mermaid/-/theme-mermaid-3.8.1.tgz#2b73b5e90057bd9fb46f267aeb2d3470b168a7c8" + integrity sha512-IWYqjyTPjkNnHsFFu9+4YkeXS7PD1xI3Bn2shOhBq+f95mgDfWInkpfBN4aYvx4fTT67Am6cPtohRdwh4Tidtg== + dependencies: + "@docusaurus/core" "3.8.1" + "@docusaurus/module-type-aliases" "3.8.1" + "@docusaurus/theme-common" "3.8.1" + "@docusaurus/types" "3.8.1" + "@docusaurus/utils-validation" "3.8.1" + mermaid ">=11.6.0" tslib "^2.6.0" -"@docusaurus/theme-search-algolia@3.5.2": - version "3.5.2" - resolved "https://registry.yarnpkg.com/@docusaurus/theme-search-algolia/-/theme-search-algolia-3.5.2.tgz#466c83ca7e8017d95ae6889ccddc5ef8bf6b61c6" - integrity sha512-qW53kp3VzMnEqZGjakaV90sst3iN1o32PH+nawv1uepROO8aEGxptcq2R5rsv7aBShSRbZwIobdvSYKsZ5pqvA== - dependencies: - "@docsearch/react" "^3.5.2" - "@docusaurus/core" "3.5.2" - "@docusaurus/logger" "3.5.2" - "@docusaurus/plugin-content-docs" "3.5.2" - "@docusaurus/theme-common" "3.5.2" - "@docusaurus/theme-translations" "3.5.2" - "@docusaurus/utils" "3.5.2" - "@docusaurus/utils-validation" "3.5.2" - algoliasearch "^4.18.0" - algoliasearch-helper "^3.13.3" +"@docusaurus/theme-search-algolia@3.8.1": + version "3.8.1" + resolved "https://registry.yarnpkg.com/@docusaurus/theme-search-algolia/-/theme-search-algolia-3.8.1.tgz#3aa3d99c35cc2d4b709fcddd4df875a9b536e29b" + integrity sha512-NBFH5rZVQRAQM087aYSRKQ9yGEK9eHd+xOxQjqNpxMiV85OhJDD4ZGz6YJIod26Fbooy54UWVdzNU0TFeUUUzQ== + dependencies: + "@docsearch/react" "^3.9.0" + "@docusaurus/core" "3.8.1" + "@docusaurus/logger" "3.8.1" + "@docusaurus/plugin-content-docs" "3.8.1" + "@docusaurus/theme-common" "3.8.1" + "@docusaurus/theme-translations" "3.8.1" + "@docusaurus/utils" "3.8.1" + "@docusaurus/utils-validation" "3.8.1" + algoliasearch "^5.17.1" + algoliasearch-helper "^3.22.6" clsx "^2.0.0" eta "^2.2.0" fs-extra "^11.1.1" @@ -1587,59 +2859,61 @@ tslib "^2.6.0" utility-types "^3.10.0" -"@docusaurus/theme-translations@3.5.2": - version "3.5.2" - resolved "https://registry.yarnpkg.com/@docusaurus/theme-translations/-/theme-translations-3.5.2.tgz#38f9ebf2a5d860397022206a05fef66c08863c89" - integrity sha512-GPZLcu4aT1EmqSTmbdpVrDENGR2yObFEX8ssEFYTCiAIVc0EihNSdOIBTazUvgNqwvnoU1A8vIs1xyzc3LITTw== +"@docusaurus/theme-translations@3.8.1": + version "3.8.1" + resolved "https://registry.yarnpkg.com/@docusaurus/theme-translations/-/theme-translations-3.8.1.tgz#4b1d76973eb53861e167c7723485e059ba4ffd0a" + integrity sha512-OTp6eebuMcf2rJt4bqnvuwmm3NVXfzfYejL+u/Y1qwKhZPrjPoKWfk1CbOP5xH5ZOPkiAsx4dHdQBRJszK3z2g== dependencies: fs-extra "^11.1.1" tslib "^2.6.0" -"@docusaurus/types@3.5.2", "@docusaurus/types@^3.5.2": - version "3.5.2" - resolved "https://registry.yarnpkg.com/@docusaurus/types/-/types-3.5.2.tgz#058019dbeffbee2d412c3f72569e412a727f9608" - integrity sha512-N6GntLXoLVUwkZw7zCxwy9QiuEXIcTVzA9AkmNw16oc0AP3SXLrMmDMMBIfgqwuKWa6Ox6epHol9kMtJqekACw== +"@docusaurus/types@3.8.1", "@docusaurus/types@^3.8.1": + version "3.8.1" + resolved "https://registry.yarnpkg.com/@docusaurus/types/-/types-3.8.1.tgz#83ab66c345464e003b576a49f78897482061fc26" + integrity sha512-ZPdW5AB+pBjiVrcLuw3dOS6BFlrG0XkS2lDGsj8TizcnREQg3J8cjsgfDviszOk4CweNfwo1AEELJkYaMUuOPg== dependencies: "@mdx-js/mdx" "^3.0.0" "@types/history" "^4.7.11" "@types/react" "*" commander "^5.1.0" joi "^17.9.2" - react-helmet-async "^1.3.0" + react-helmet-async "npm:@slorber/react-helmet-async@1.3.0" utility-types "^3.10.0" - webpack "^5.88.1" + webpack "^5.95.0" webpack-merge "^5.9.0" -"@docusaurus/utils-common@3.5.2": - version "3.5.2" - resolved "https://registry.yarnpkg.com/@docusaurus/utils-common/-/utils-common-3.5.2.tgz#4d7f5e962fbca3e2239d80457aa0e4bd3d8f7e0a" - integrity sha512-i0AZjHiRgJU6d7faQngIhuHKNrszpL/SHQPgF1zH4H+Ij6E9NBYGy6pkcGWToIv7IVPbs+pQLh1P3whn0gWXVg== +"@docusaurus/utils-common@3.8.1": + version "3.8.1" + resolved "https://registry.yarnpkg.com/@docusaurus/utils-common/-/utils-common-3.8.1.tgz#c369b8c3041afb7dcd595d4172beb1cc1015c85f" + integrity sha512-zTZiDlvpvoJIrQEEd71c154DkcriBecm4z94OzEE9kz7ikS3J+iSlABhFXM45mZ0eN5pVqqr7cs60+ZlYLewtg== dependencies: + "@docusaurus/types" "3.8.1" tslib "^2.6.0" -"@docusaurus/utils-validation@3.5.2": - version "3.5.2" - resolved "https://registry.yarnpkg.com/@docusaurus/utils-validation/-/utils-validation-3.5.2.tgz#1b2b2f02082781cc8ce713d4c85e88d6d2fc4eb3" - integrity sha512-m+Foq7augzXqB6HufdS139PFxDC5d5q2QKZy8q0qYYvGdI6nnlNsGH4cIGsgBnV7smz+mopl3g4asbSDvMV0jA== +"@docusaurus/utils-validation@3.8.1": + version "3.8.1" + resolved "https://registry.yarnpkg.com/@docusaurus/utils-validation/-/utils-validation-3.8.1.tgz#0499c0d151a4098a0963237057993282cfbd538e" + integrity sha512-gs5bXIccxzEbyVecvxg6upTwaUbfa0KMmTj7HhHzc016AGyxH2o73k1/aOD0IFrdCsfJNt37MqNI47s2MgRZMA== dependencies: - "@docusaurus/logger" "3.5.2" - "@docusaurus/utils" "3.5.2" - "@docusaurus/utils-common" "3.5.2" + "@docusaurus/logger" "3.8.1" + "@docusaurus/utils" "3.8.1" + "@docusaurus/utils-common" "3.8.1" fs-extra "^11.2.0" joi "^17.9.2" js-yaml "^4.1.0" lodash "^4.17.21" tslib "^2.6.0" -"@docusaurus/utils@3.5.2": - version "3.5.2" - resolved "https://registry.yarnpkg.com/@docusaurus/utils/-/utils-3.5.2.tgz#17763130215f18d7269025903588ef7fb373e2cb" - integrity sha512-33QvcNFh+Gv+C2dP9Y9xWEzMgf3JzrpL2nW9PopidiohS1nDcyknKRx2DWaFvyVTTYIkkABVSr073VTj/NITNA== +"@docusaurus/utils@3.8.1": + version "3.8.1" + resolved "https://registry.yarnpkg.com/@docusaurus/utils/-/utils-3.8.1.tgz#2ac1e734106e2f73dbd0f6a8824d525f9064e9f0" + integrity sha512-P1ml0nvOmEFdmu0smSXOqTS1sxU5tqvnc0dA4MTKV39kye+bhQnjkIKEE18fNOvxjyB86k8esoCIFM3x4RykOQ== dependencies: - "@docusaurus/logger" "3.5.2" - "@docusaurus/utils-common" "3.5.2" - "@svgr/webpack" "^8.1.0" + "@docusaurus/logger" "3.8.1" + "@docusaurus/types" "3.8.1" + "@docusaurus/utils-common" "3.8.1" escape-string-regexp "^4.0.0" + execa "5.1.1" file-loader "^6.2.0" fs-extra "^11.1.1" github-slugger "^1.5.0" @@ -1649,9 +2923,9 @@ js-yaml "^4.1.0" lodash "^4.17.21" micromatch "^4.0.5" + p-queue "^6.6.2" prompts "^2.4.2" resolve-pathname "^3.0.0" - shelljs "^0.8.5" tslib "^2.6.0" url-loader "^4.1.1" utility-types "^3.10.0" @@ -1788,6 +3062,20 @@ resolved "https://registry.yarnpkg.com/@iconify/types/-/types-2.0.0.tgz#ab0e9ea681d6c8a1214f30cd741fe3a20cc57f57" integrity sha512-+wluvCrRhXrhyOmRDJ3q8mux9JkKy5SJ/v8ol2tu4FVjyYvtEzkc/3pK15ET6RKg4b4w4BmTk1+gsCUhf21Ykg== +"@iconify/utils@^2.1.33": + version "2.3.0" + resolved "https://registry.yarnpkg.com/@iconify/utils/-/utils-2.3.0.tgz#1bbbf8c477ebe9a7cacaea78b1b7e8937f9cbfba" + integrity sha512-GmQ78prtwYW6EtzXRU1rY+KwOKfz32PD7iJh6Iyqw68GiKuoZ2A6pRtzWONz5VQJbp50mEjXh/7NkumtrAgRKA== + dependencies: + "@antfu/install-pkg" "^1.0.0" + "@antfu/utils" "^8.1.0" + "@iconify/types" "^2.0.0" + debug "^4.4.0" + globals "^15.14.0" + kolorist "^1.8.0" + local-pkg "^1.0.0" + mlly "^1.7.4" + "@jest/schemas@^29.6.3": version "29.6.3" resolved "https://registry.yarnpkg.com/@jest/schemas/-/schemas-29.6.3.tgz#430b5ce8a4e0044a7e3819663305a7b3091c8e03" @@ -1807,6 +3095,14 @@ "@types/yargs" "^17.0.8" chalk "^4.0.0" +"@jridgewell/gen-mapping@^0.3.12": + version "0.3.12" + resolved "https://registry.yarnpkg.com/@jridgewell/gen-mapping/-/gen-mapping-0.3.12.tgz#2234ce26c62889f03db3d7fea43c1932ab3e927b" + integrity sha512-OuLGC46TjB5BbN1dH8JULVVZY4WTdkF7tV9Ys6wLL1rubZnCMstOhNHueU5bLCrnRuDhKPDM4g6sw4Bel5Gzqg== + dependencies: + "@jridgewell/sourcemap-codec" "^1.5.0" + "@jridgewell/trace-mapping" "^0.3.24" + "@jridgewell/gen-mapping@^0.3.5": version "0.3.5" resolved "https://registry.yarnpkg.com/@jridgewell/gen-mapping/-/gen-mapping-0.3.5.tgz#dcce6aff74bdf6dad1a95802b69b04a2fcb1fb36" @@ -1839,6 +3135,11 @@ resolved "https://registry.yarnpkg.com/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.5.0.tgz#3188bcb273a414b0d215fd22a58540b989b9409a" integrity sha512-gv3ZRaISU3fjPAgNsriBRqGWQL6quFx04YMPW/zD8XMLsU32mhCCbfbO6KZFLjvYpCZ8zyDEgqsgf+PwPaM7GQ== +"@jridgewell/sourcemap-codec@^1.5.0": + version "1.5.4" + resolved "https://registry.yarnpkg.com/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.5.4.tgz#7358043433b2e5da569aa02cbc4c121da3af27d7" + integrity sha512-VT2+G1VQs/9oz078bLrYbecdZKs912zQlkelYpuf+SXF+QvZDYJlbx/LSx+meSAwdDFnF8FVXW92AVjjkVmgFw== + "@jridgewell/trace-mapping@^0.3.18", "@jridgewell/trace-mapping@^0.3.20", "@jridgewell/trace-mapping@^0.3.24", "@jridgewell/trace-mapping@^0.3.25": version "0.3.25" resolved "https://registry.yarnpkg.com/@jridgewell/trace-mapping/-/trace-mapping-0.3.25.tgz#15f190e98895f3fc23276ee14bc76b675c2e50f0" @@ -1847,6 +3148,14 @@ "@jridgewell/resolve-uri" "^3.1.0" "@jridgewell/sourcemap-codec" "^1.4.14" +"@jridgewell/trace-mapping@^0.3.28": + version "0.3.29" + resolved "https://registry.yarnpkg.com/@jridgewell/trace-mapping/-/trace-mapping-0.3.29.tgz#a58d31eaadaf92c6695680b2e1d464a9b8fbf7fc" + integrity sha512-uw6guiW/gcAGPDhLmd77/6lW8QLeiV5RUTsAX46Db6oLhGaVj4lhnPwb184s1bkc8kdVg/+h988dro8GRDpmYQ== + dependencies: + "@jridgewell/resolve-uri" "^3.1.0" + "@jridgewell/sourcemap-codec" "^1.4.14" + "@leichtgewicht/ip-codec@^2.0.1": version "2.0.5" resolved "https://registry.yarnpkg.com/@leichtgewicht/ip-codec/-/ip-codec-2.0.5.tgz#4fc56c15c580b9adb7dc3c333a134e540b44bfb1" @@ -1888,6 +3197,13 @@ dependencies: "@types/mdx" "^2.0.0" +"@mermaid-js/parser@^0.6.2": + version "0.6.2" + resolved "https://registry.yarnpkg.com/@mermaid-js/parser/-/parser-0.6.2.tgz#6d505a33acb52ddeb592c596b14f9d92a30396a9" + integrity sha512-+PO02uGF6L6Cs0Bw8RpGhikVvMWEysfAyl27qTlroUB8jSWr1lL0Sf6zi78ZxlSnmgSY2AMMKVgghnN9jTtwkQ== + dependencies: + langium "3.3.1" + "@mui/core-downloads-tracker@^5.16.7": version "5.16.7" resolved "https://registry.yarnpkg.com/@mui/core-downloads-tracker/-/core-downloads-tracker-5.16.7.tgz#182a325a520f7ebd75de051fceabfc0314cfd004" @@ -2232,23 +3548,216 @@ dependencies: "@types/node" "*" -"@types/d3-scale-chromatic@^3.0.0": +"@types/d3-array@*": + version "3.2.1" + resolved "https://registry.yarnpkg.com/@types/d3-array/-/d3-array-3.2.1.tgz#1f6658e3d2006c4fceac53fde464166859f8b8c5" + integrity sha512-Y2Jn2idRrLzUfAKV2LyRImR+y4oa2AntrgID95SHJxuMUrkNXmanDSed71sRNZysveJVt1hLLemQZIady0FpEg== + +"@types/d3-axis@*": + version "3.0.6" + resolved "https://registry.yarnpkg.com/@types/d3-axis/-/d3-axis-3.0.6.tgz#e760e5765b8188b1defa32bc8bb6062f81e4c795" + integrity sha512-pYeijfZuBd87T0hGn0FO1vQ/cgLk6E1ALJjfkC0oJ8cbwkZl3TpgS8bVBLZN+2jjGgg38epgxb2zmoGtSfvgMw== + dependencies: + "@types/d3-selection" "*" + +"@types/d3-brush@*": + version "3.0.6" + resolved "https://registry.yarnpkg.com/@types/d3-brush/-/d3-brush-3.0.6.tgz#c2f4362b045d472e1b186cdbec329ba52bdaee6c" + integrity sha512-nH60IZNNxEcrh6L1ZSMNA28rj27ut/2ZmI3r96Zd+1jrZD++zD3LsMIjWlvg4AYrHn/Pqz4CF3veCxGjtbqt7A== + dependencies: + "@types/d3-selection" "*" + +"@types/d3-chord@*": + version "3.0.6" + resolved "https://registry.yarnpkg.com/@types/d3-chord/-/d3-chord-3.0.6.tgz#1706ca40cf7ea59a0add8f4456efff8f8775793d" + integrity sha512-LFYWWd8nwfwEmTZG9PfQxd17HbNPksHBiJHaKuY1XeqscXacsS2tyoo6OdRsjf+NQYeB6XrNL3a25E3gH69lcg== + +"@types/d3-color@*": + version "3.1.3" + resolved "https://registry.yarnpkg.com/@types/d3-color/-/d3-color-3.1.3.tgz#368c961a18de721da8200e80bf3943fb53136af2" + integrity sha512-iO90scth9WAbmgv7ogoq57O9YpKmFBbmoEoCHDB2xMBY0+/KVrqAaCDyCE16dUspeOvIxFFRI+0sEtqDqy2b4A== + +"@types/d3-contour@*": + version "3.0.6" + resolved "https://registry.yarnpkg.com/@types/d3-contour/-/d3-contour-3.0.6.tgz#9ada3fa9c4d00e3a5093fed0356c7ab929604231" + integrity sha512-BjzLgXGnCWjUSYGfH1cpdo41/hgdWETu4YxpezoztawmqsvCeep+8QGfiY6YbDvfgHz/DkjeIkkZVJavB4a3rg== + dependencies: + "@types/d3-array" "*" + "@types/geojson" "*" + +"@types/d3-delaunay@*": + version "6.0.4" + resolved "https://registry.yarnpkg.com/@types/d3-delaunay/-/d3-delaunay-6.0.4.tgz#185c1a80cc807fdda2a3fe960f7c11c4a27952e1" + integrity sha512-ZMaSKu4THYCU6sV64Lhg6qjf1orxBthaC161plr5KuPHo3CNm8DTHiLw/5Eq2b6TsNP0W0iJrUOFscY6Q450Hw== + +"@types/d3-dispatch@*": + version "3.0.6" + resolved "https://registry.yarnpkg.com/@types/d3-dispatch/-/d3-dispatch-3.0.6.tgz#096efdf55eb97480e3f5621ff9a8da552f0961e7" + integrity sha512-4fvZhzMeeuBJYZXRXrRIQnvUYfyXwYmLsdiN7XXmVNQKKw1cM8a5WdID0g1hVFZDqT9ZqZEY5pD44p24VS7iZQ== + +"@types/d3-drag@*": + version "3.0.7" + resolved "https://registry.yarnpkg.com/@types/d3-drag/-/d3-drag-3.0.7.tgz#b13aba8b2442b4068c9a9e6d1d82f8bcea77fc02" + integrity sha512-HE3jVKlzU9AaMazNufooRJ5ZpWmLIoc90A37WU2JMmeq28w1FQqCZswHZ3xR+SuxYftzHq6WU6KJHvqxKzTxxQ== + dependencies: + "@types/d3-selection" "*" + +"@types/d3-dsv@*": + version "3.0.7" + resolved "https://registry.yarnpkg.com/@types/d3-dsv/-/d3-dsv-3.0.7.tgz#0a351f996dc99b37f4fa58b492c2d1c04e3dac17" + integrity sha512-n6QBF9/+XASqcKK6waudgL0pf/S5XHPPI8APyMLLUHd8NqouBGLsU8MgtO7NINGtPBtk9Kko/W4ea0oAspwh9g== + +"@types/d3-ease@*": + version "3.0.2" + resolved "https://registry.yarnpkg.com/@types/d3-ease/-/d3-ease-3.0.2.tgz#e28db1bfbfa617076f7770dd1d9a48eaa3b6c51b" + integrity sha512-NcV1JjO5oDzoK26oMzbILE6HW7uVXOHLQvHshBUW4UMdZGfiY6v5BeQwh9a9tCzv+CeefZQHJt5SRgK154RtiA== + +"@types/d3-fetch@*": + version "3.0.7" + resolved "https://registry.yarnpkg.com/@types/d3-fetch/-/d3-fetch-3.0.7.tgz#c04a2b4f23181aa376f30af0283dbc7b3b569980" + integrity sha512-fTAfNmxSb9SOWNB9IoG5c8Hg6R+AzUHDRlsXsDZsNp6sxAEOP0tkP3gKkNSO/qmHPoBFTxNrjDprVHDQDvo5aA== + dependencies: + "@types/d3-dsv" "*" + +"@types/d3-force@*": + version "3.0.10" + resolved "https://registry.yarnpkg.com/@types/d3-force/-/d3-force-3.0.10.tgz#6dc8fc6e1f35704f3b057090beeeb7ac674bff1a" + integrity sha512-ZYeSaCF3p73RdOKcjj+swRlZfnYpK1EbaDiYICEEp5Q6sUiqFaFQ9qgoshp5CzIyyb/yD09kD9o2zEltCexlgw== + +"@types/d3-format@*": + version "3.0.4" + resolved "https://registry.yarnpkg.com/@types/d3-format/-/d3-format-3.0.4.tgz#b1e4465644ddb3fdf3a263febb240a6cd616de90" + integrity sha512-fALi2aI6shfg7vM5KiR1wNJnZ7r6UuggVqtDA+xiEdPZQwy/trcQaHnwShLuLdta2rTymCNpxYTiMZX/e09F4g== + +"@types/d3-geo@*": + version "3.1.0" + resolved "https://registry.yarnpkg.com/@types/d3-geo/-/d3-geo-3.1.0.tgz#b9e56a079449174f0a2c8684a9a4df3f60522440" + integrity sha512-856sckF0oP/diXtS4jNsiQw/UuK5fQG8l/a9VVLeSouf1/PPbBE1i1W852zVwKwYCBkFJJB7nCFTbk6UMEXBOQ== + dependencies: + "@types/geojson" "*" + +"@types/d3-hierarchy@*": + version "3.1.7" + resolved "https://registry.yarnpkg.com/@types/d3-hierarchy/-/d3-hierarchy-3.1.7.tgz#6023fb3b2d463229f2d680f9ac4b47466f71f17b" + integrity sha512-tJFtNoYBtRtkNysX1Xq4sxtjK8YgoWUNpIiUee0/jHGRwqvzYxkq0hGVbbOGSz+JgFxxRu4K8nb3YpG3CMARtg== + +"@types/d3-interpolate@*": + version "3.0.4" + resolved "https://registry.yarnpkg.com/@types/d3-interpolate/-/d3-interpolate-3.0.4.tgz#412b90e84870285f2ff8a846c6eb60344f12a41c" + integrity sha512-mgLPETlrpVV1YRJIglr4Ez47g7Yxjl1lj7YKsiMCb27VJH9W8NVM6Bb9d8kkpG/uAQS5AmbA48q2IAolKKo1MA== + dependencies: + "@types/d3-color" "*" + +"@types/d3-path@*": + version "3.1.1" + resolved "https://registry.yarnpkg.com/@types/d3-path/-/d3-path-3.1.1.tgz#f632b380c3aca1dba8e34aa049bcd6a4af23df8a" + integrity sha512-VMZBYyQvbGmWyWVea0EHs/BwLgxc+MKi1zLDCONksozI4YJMcTt8ZEuIR4Sb1MMTE8MMW49v0IwI5+b7RmfWlg== + +"@types/d3-polygon@*": + version "3.0.2" + resolved "https://registry.yarnpkg.com/@types/d3-polygon/-/d3-polygon-3.0.2.tgz#dfae54a6d35d19e76ac9565bcb32a8e54693189c" + integrity sha512-ZuWOtMaHCkN9xoeEMr1ubW2nGWsp4nIql+OPQRstu4ypeZ+zk3YKqQT0CXVe/PYqrKpZAi+J9mTs05TKwjXSRA== + +"@types/d3-quadtree@*": + version "3.0.6" + resolved "https://registry.yarnpkg.com/@types/d3-quadtree/-/d3-quadtree-3.0.6.tgz#d4740b0fe35b1c58b66e1488f4e7ed02952f570f" + integrity sha512-oUzyO1/Zm6rsxKRHA1vH0NEDG58HrT5icx/azi9MF1TWdtttWl0UIUsjEQBBh+SIkrpd21ZjEv7ptxWys1ncsg== + +"@types/d3-random@*": version "3.0.3" - resolved "https://registry.yarnpkg.com/@types/d3-scale-chromatic/-/d3-scale-chromatic-3.0.3.tgz#fc0db9c10e789c351f4c42d96f31f2e4df8f5644" - integrity sha512-laXM4+1o5ImZv3RpFAsTRn3TEkzqkytiOY0Dz0sq5cnd1dtNlk6sHLon4OvqaiJb28T0S/TdsBI3Sjsy+keJrw== + resolved "https://registry.yarnpkg.com/@types/d3-random/-/d3-random-3.0.3.tgz#ed995c71ecb15e0cd31e22d9d5d23942e3300cfb" + integrity sha512-Imagg1vJ3y76Y2ea0871wpabqp613+8/r0mCLEBfdtqC7xMSfj9idOnmBYyMoULfHePJyxMAw3nWhJxzc+LFwQ== -"@types/d3-scale@^4.0.3": - version "4.0.8" - resolved "https://registry.yarnpkg.com/@types/d3-scale/-/d3-scale-4.0.8.tgz#d409b5f9dcf63074464bf8ddfb8ee5a1f95945bb" - integrity sha512-gkK1VVTr5iNiYJ7vWDI+yUFFlszhNMtVeneJ6lUTKPjprsvLLI9/tgEGiXJOnlINJA8FyA88gfnQsHbybVZrYQ== +"@types/d3-scale-chromatic@*": + version "3.1.0" + resolved "https://registry.yarnpkg.com/@types/d3-scale-chromatic/-/d3-scale-chromatic-3.1.0.tgz#dc6d4f9a98376f18ea50bad6c39537f1b5463c39" + integrity sha512-iWMJgwkK7yTRmWqRB5plb1kadXyQ5Sj8V/zYlFGMUBbIPKQScw+Dku9cAAMgJG+z5GYDoMjWGLVOvjghDEFnKQ== + +"@types/d3-scale@*": + version "4.0.9" + resolved "https://registry.yarnpkg.com/@types/d3-scale/-/d3-scale-4.0.9.tgz#57a2f707242e6fe1de81ad7bfcccaaf606179afb" + integrity sha512-dLmtwB8zkAeO/juAMfnV+sItKjlsw2lKdZVVy6LRr0cBmegxSABiLEpGVmSJJ8O08i4+sGR6qQtb6WtuwJdvVw== dependencies: "@types/d3-time" "*" +"@types/d3-selection@*": + version "3.0.11" + resolved "https://registry.yarnpkg.com/@types/d3-selection/-/d3-selection-3.0.11.tgz#bd7a45fc0a8c3167a631675e61bc2ca2b058d4a3" + integrity sha512-bhAXu23DJWsrI45xafYpkQ4NtcKMwWnAC/vKrd2l+nxMFuvOT3XMYTIj2opv8vq8AO5Yh7Qac/nSeP/3zjTK0w== + +"@types/d3-shape@*": + version "3.1.7" + resolved "https://registry.yarnpkg.com/@types/d3-shape/-/d3-shape-3.1.7.tgz#2b7b423dc2dfe69c8c93596e673e37443348c555" + integrity sha512-VLvUQ33C+3J+8p+Daf+nYSOsjB4GXp19/S/aGo60m9h1v6XaxjiT82lKVWJCfzhtuZ3yD7i/TPeC/fuKLLOSmg== + dependencies: + "@types/d3-path" "*" + +"@types/d3-time-format@*": + version "4.0.3" + resolved "https://registry.yarnpkg.com/@types/d3-time-format/-/d3-time-format-4.0.3.tgz#d6bc1e6b6a7db69cccfbbdd4c34b70632d9e9db2" + integrity sha512-5xg9rC+wWL8kdDj153qZcsJ0FWiFt0J5RB6LYUNZjwSnesfblqrI/bJ1wBdJ8OQfncgbJG5+2F+qfqnqyzYxyg== + "@types/d3-time@*": version "3.0.3" resolved "https://registry.yarnpkg.com/@types/d3-time/-/d3-time-3.0.3.tgz#3c186bbd9d12b9d84253b6be6487ca56b54f88be" integrity sha512-2p6olUZ4w3s+07q3Tm2dbiMZy5pCDfYwtLXXHUnVzXgQlZ/OyPtUz6OL382BkOuGlLXqfT+wqv8Fw2v8/0geBw== +"@types/d3-timer@*": + version "3.0.2" + resolved "https://registry.yarnpkg.com/@types/d3-timer/-/d3-timer-3.0.2.tgz#70bbda77dc23aa727413e22e214afa3f0e852f70" + integrity sha512-Ps3T8E8dZDam6fUyNiMkekK3XUsaUEik+idO9/YjPtfj2qruF8tFBXS7XhtE4iIXBLxhmLjP3SXpLhVf21I9Lw== + +"@types/d3-transition@*": + version "3.0.9" + resolved "https://registry.yarnpkg.com/@types/d3-transition/-/d3-transition-3.0.9.tgz#1136bc57e9ddb3c390dccc9b5ff3b7d2b8d94706" + integrity sha512-uZS5shfxzO3rGlu0cC3bjmMFKsXv+SmZZcgp0KD22ts4uGXp5EVYGzu/0YdwZeKmddhcAccYtREJKkPfXkZuCg== + dependencies: + "@types/d3-selection" "*" + +"@types/d3-zoom@*": + version "3.0.8" + resolved "https://registry.yarnpkg.com/@types/d3-zoom/-/d3-zoom-3.0.8.tgz#dccb32d1c56b1e1c6e0f1180d994896f038bc40b" + integrity sha512-iqMC4/YlFCSlO8+2Ii1GGGliCAY4XdeG748w5vQUbevlbDu0zSjH/+jojorQVBK/se0j6DUFNPBGSqD3YWYnDw== + dependencies: + "@types/d3-interpolate" "*" + "@types/d3-selection" "*" + +"@types/d3@^7.4.3": + version "7.4.3" + resolved "https://registry.yarnpkg.com/@types/d3/-/d3-7.4.3.tgz#d4550a85d08f4978faf0a4c36b848c61eaac07e2" + integrity sha512-lZXZ9ckh5R8uiFVt8ogUNf+pIrK4EsWrx2Np75WvF/eTpJ0FMHNhjXk8CKEx/+gpHbNQyJWehbFaTvqmHWB3ww== + dependencies: + "@types/d3-array" "*" + "@types/d3-axis" "*" + "@types/d3-brush" "*" + "@types/d3-chord" "*" + "@types/d3-color" "*" + "@types/d3-contour" "*" + "@types/d3-delaunay" "*" + "@types/d3-dispatch" "*" + "@types/d3-drag" "*" + "@types/d3-dsv" "*" + "@types/d3-ease" "*" + "@types/d3-fetch" "*" + "@types/d3-force" "*" + "@types/d3-format" "*" + "@types/d3-geo" "*" + "@types/d3-hierarchy" "*" + "@types/d3-interpolate" "*" + "@types/d3-path" "*" + "@types/d3-polygon" "*" + "@types/d3-quadtree" "*" + "@types/d3-random" "*" + "@types/d3-scale" "*" + "@types/d3-scale-chromatic" "*" + "@types/d3-selection" "*" + "@types/d3-shape" "*" + "@types/d3-time" "*" + "@types/d3-time-format" "*" + "@types/d3-timer" "*" + "@types/d3-transition" "*" + "@types/d3-zoom" "*" + "@types/debug@^4.0.0": version "4.1.12" resolved "https://registry.yarnpkg.com/@types/debug/-/debug-4.1.12.tgz#a155f21690871953410df4b6b6f53187f0500917" @@ -2256,7 +3765,7 @@ dependencies: "@types/ms" "*" -"@types/eslint-scope@^3.7.3": +"@types/eslint-scope@^3.7.3", "@types/eslint-scope@^3.7.7": version "3.7.7" resolved "https://registry.yarnpkg.com/@types/eslint-scope/-/eslint-scope-3.7.7.tgz#3108bd5f18b0cdb277c867b3dd449c9ed7079ac5" integrity sha512-MzMFlSLBqNF2gcHWO0G1vP/YQyfvrxZ0bF+u7mzUdZ1/xK4A4sru+nraZz5i3iEIk1l1uyicaDVTB4QbbEkAYg== @@ -2284,6 +3793,11 @@ resolved "https://registry.yarnpkg.com/@types/estree/-/estree-1.0.5.tgz#a6ce3e556e00fd9895dd872dd172ad0d4bd687f4" integrity sha512-/kYRxGDLWzHOB7q+wtSUQlFrtcdUccpfy+X+9iMBpHK8QLLhx2wIPYuS5DYtR9Wa/YlZAbIovy7qVdB1Aq6Lyw== +"@types/estree@^1.0.8": + version "1.0.8" + resolved "https://registry.yarnpkg.com/@types/estree/-/estree-1.0.8.tgz#958b91c991b1867ced318bedea0e215ee050726e" + integrity sha512-dWHzHa2WqEXI/O1E9OjrocMTKJl2mSrEolh1Iomrv6U+JuNwaHXsXx9bLu5gG7BUWFIN0skIQJQ/L1rIex4X6w== + "@types/express-serve-static-core@*", "@types/express-serve-static-core@^4.17.33": version "4.19.5" resolved "https://registry.yarnpkg.com/@types/express-serve-static-core/-/express-serve-static-core-4.19.5.tgz#218064e321126fcf9048d1ca25dd2465da55d9c6" @@ -2304,6 +3818,11 @@ "@types/qs" "*" "@types/serve-static" "*" +"@types/geojson@*": + version "7946.0.16" + resolved "https://registry.yarnpkg.com/@types/geojson/-/geojson-7946.0.16.tgz#8ebe53d69efada7044454e3305c19017d97ced2a" + integrity sha512-6C8nqWur3j98U6+lXDfTUWIfgvZU+EumvpHKcYjujKH7woYyLj2sUmff0tRhrqM7BohUw7Pz3ZB1jj2gW9Fvmg== + "@types/gtag.js@^0.0.12": version "0.0.12" resolved "https://registry.yarnpkg.com/@types/gtag.js/-/gtag.js-0.0.12.tgz#095122edca896689bdfcdd73b057e23064d23572" @@ -2362,18 +3881,11 @@ dependencies: "@types/istanbul-lib-report" "*" -"@types/json-schema@*", "@types/json-schema@^7.0.4", "@types/json-schema@^7.0.5", "@types/json-schema@^7.0.8", "@types/json-schema@^7.0.9": +"@types/json-schema@*", "@types/json-schema@^7.0.15", "@types/json-schema@^7.0.8", "@types/json-schema@^7.0.9": version "7.0.15" resolved "https://registry.yarnpkg.com/@types/json-schema/-/json-schema-7.0.15.tgz#596a1747233694d50f6ad8a7869fcb6f56cf5841" integrity sha512-5+fP8P8MFNC+AyZCDxrB2pkZFPGzqQWUzpSeuuVLvm8VMcorNYavBqoFcxK8bQz4Qsbn4oUEEem4wDLfcysGHA== -"@types/mdast@^3.0.0": - version "3.0.15" - resolved "https://registry.yarnpkg.com/@types/mdast/-/mdast-3.0.15.tgz#49c524a263f30ffa28b71ae282f813ed000ab9f5" - integrity sha512-LnwD+mUEfxWMa1QpDraczIn6k0Ee3SMicuYSSzS6ZYl2gKS09EClnJYGd8Du6rfc5r/GZEk5o1mRb8TaTj03sQ== - dependencies: - "@types/unist" "^2" - "@types/mdast@^4.0.0", "@types/mdast@^4.0.2": version "4.0.4" resolved "https://registry.yarnpkg.com/@types/mdast/-/mdast-4.0.4.tgz#7ccf72edd2f1aa7dd3437e180c64373585804dd6" @@ -2524,12 +4036,17 @@ dependencies: "@types/node" "*" +"@types/trusted-types@^2.0.7": + version "2.0.7" + resolved "https://registry.yarnpkg.com/@types/trusted-types/-/trusted-types-2.0.7.tgz#baccb07a970b91707df3a3e8ba6896c57ead2d11" + integrity sha512-ScaPdn1dQczgbl0QFTeTOmVHFULt394XJgOQNoyVhZ6r2vLnMLJfBPd53SB52T/3G36VI1/g2MZaX0cwDuXsfw== + "@types/unist@*", "@types/unist@^3.0.0": version "3.0.2" resolved "https://registry.yarnpkg.com/@types/unist/-/unist-3.0.2.tgz#6dd61e43ef60b34086287f83683a5c1b2dc53d20" integrity sha512-dqId9J8K/vGi5Zr7oo212BGii5m3q5Hxlkwy3WpYuKPklmBEvsbMYYyLxAQpSffdLl/gdW0XUpKWFvYmyoWCoQ== -"@types/unist@^2", "@types/unist@^2.0.0": +"@types/unist@^2.0.0": version "2.0.10" resolved "https://registry.yarnpkg.com/@types/unist/-/unist-2.0.10.tgz#04ffa7f406ab628f7f7e97ca23e290cd8ab15efc" integrity sha512-IfYcSBWE3hLpBg8+X2SEa8LVkJdJEkT2Ese2aaLs3ptGdVtABxndrMaxuFlQ1qdFf9Q5rDvDpxI3WwgvKFAsQA== @@ -2566,21 +4083,44 @@ "@webassemblyjs/helper-numbers" "1.11.6" "@webassemblyjs/helper-wasm-bytecode" "1.11.6" +"@webassemblyjs/ast@1.14.1", "@webassemblyjs/ast@^1.14.1": + version "1.14.1" + resolved "https://registry.yarnpkg.com/@webassemblyjs/ast/-/ast-1.14.1.tgz#a9f6a07f2b03c95c8d38c4536a1fdfb521ff55b6" + integrity sha512-nuBEDgQfm1ccRp/8bCQrx1frohyufl4JlbMMZ4P1wpeOfDhF6FQkxZJ1b/e+PLwr6X1Nhw6OLme5usuBWYBvuQ== + dependencies: + "@webassemblyjs/helper-numbers" "1.13.2" + "@webassemblyjs/helper-wasm-bytecode" "1.13.2" + "@webassemblyjs/floating-point-hex-parser@1.11.6": version "1.11.6" resolved "https://registry.yarnpkg.com/@webassemblyjs/floating-point-hex-parser/-/floating-point-hex-parser-1.11.6.tgz#dacbcb95aff135c8260f77fa3b4c5fea600a6431" integrity sha512-ejAj9hfRJ2XMsNHk/v6Fu2dGS+i4UaXBXGemOfQ/JfQ6mdQg/WXtwleQRLLS4OvfDhv8rYnVwH27YJLMyYsxhw== +"@webassemblyjs/floating-point-hex-parser@1.13.2": + version "1.13.2" + resolved "https://registry.yarnpkg.com/@webassemblyjs/floating-point-hex-parser/-/floating-point-hex-parser-1.13.2.tgz#fcca1eeddb1cc4e7b6eed4fc7956d6813b21b9fb" + integrity sha512-6oXyTOzbKxGH4steLbLNOu71Oj+C8Lg34n6CqRvqfS2O71BxY6ByfMDRhBytzknj9yGUPVJ1qIKhRlAwO1AovA== + "@webassemblyjs/helper-api-error@1.11.6": version "1.11.6" resolved "https://registry.yarnpkg.com/@webassemblyjs/helper-api-error/-/helper-api-error-1.11.6.tgz#6132f68c4acd59dcd141c44b18cbebbd9f2fa768" integrity sha512-o0YkoP4pVu4rN8aTJgAyj9hC2Sv5UlkzCHhxqWj8butaLvnpdc2jOwh4ewE6CX0txSfLn/UYaV/pheS2Txg//Q== +"@webassemblyjs/helper-api-error@1.13.2": + version "1.13.2" + resolved "https://registry.yarnpkg.com/@webassemblyjs/helper-api-error/-/helper-api-error-1.13.2.tgz#e0a16152248bc38daee76dd7e21f15c5ef3ab1e7" + integrity sha512-U56GMYxy4ZQCbDZd6JuvvNV/WFildOjsaWD3Tzzvmw/mas3cXzRJPMjP83JqEsgSbyrmaGjBfDtV7KDXV9UzFQ== + "@webassemblyjs/helper-buffer@1.12.1": version "1.12.1" resolved "https://registry.yarnpkg.com/@webassemblyjs/helper-buffer/-/helper-buffer-1.12.1.tgz#6df20d272ea5439bf20ab3492b7fb70e9bfcb3f6" integrity sha512-nzJwQw99DNDKr9BVCOZcLuJJUlqkJh+kVzVl6Fmq/tI5ZtEyWT1KZMyOXltXLZJmDtvLCDgwsyrkohEtopTXCw== +"@webassemblyjs/helper-buffer@1.14.1": + version "1.14.1" + resolved "https://registry.yarnpkg.com/@webassemblyjs/helper-buffer/-/helper-buffer-1.14.1.tgz#822a9bc603166531f7d5df84e67b5bf99b72b96b" + integrity sha512-jyH7wtcHiKssDtFPRB+iQdxlDf96m0E39yb0k5uJVhFGleZFoNw1c4aeIcVUPPbXUVJ94wwnMOAqUHyzoEPVMA== + "@webassemblyjs/helper-numbers@1.11.6": version "1.11.6" resolved "https://registry.yarnpkg.com/@webassemblyjs/helper-numbers/-/helper-numbers-1.11.6.tgz#cbce5e7e0c1bd32cf4905ae444ef64cea919f1b5" @@ -2590,11 +4130,25 @@ "@webassemblyjs/helper-api-error" "1.11.6" "@xtuc/long" "4.2.2" +"@webassemblyjs/helper-numbers@1.13.2": + version "1.13.2" + resolved "https://registry.yarnpkg.com/@webassemblyjs/helper-numbers/-/helper-numbers-1.13.2.tgz#dbd932548e7119f4b8a7877fd5a8d20e63490b2d" + integrity sha512-FE8aCmS5Q6eQYcV3gI35O4J789wlQA+7JrqTTpJqn5emA4U2hvwJmvFRC0HODS+3Ye6WioDklgd6scJ3+PLnEA== + dependencies: + "@webassemblyjs/floating-point-hex-parser" "1.13.2" + "@webassemblyjs/helper-api-error" "1.13.2" + "@xtuc/long" "4.2.2" + "@webassemblyjs/helper-wasm-bytecode@1.11.6": version "1.11.6" resolved "https://registry.yarnpkg.com/@webassemblyjs/helper-wasm-bytecode/-/helper-wasm-bytecode-1.11.6.tgz#bb2ebdb3b83aa26d9baad4c46d4315283acd51e9" integrity sha512-sFFHKwcmBprO9e7Icf0+gddyWYDViL8bpPjJJl0WHxCdETktXdmtWLGVzoHbqUcY4Be1LkNfwTmXOJUFZYSJdA== +"@webassemblyjs/helper-wasm-bytecode@1.13.2": + version "1.13.2" + resolved "https://registry.yarnpkg.com/@webassemblyjs/helper-wasm-bytecode/-/helper-wasm-bytecode-1.13.2.tgz#e556108758f448aae84c850e593ce18a0eb31e0b" + integrity sha512-3QbLKy93F0EAIXLh0ogEVR6rOubA9AoZ+WRYhNbFyuB70j3dRdwH9g+qXhLAO0kiYGlg3TxDV+I4rQTr/YNXkA== + "@webassemblyjs/helper-wasm-section@1.12.1": version "1.12.1" resolved "https://registry.yarnpkg.com/@webassemblyjs/helper-wasm-section/-/helper-wasm-section-1.12.1.tgz#3da623233ae1a60409b509a52ade9bc22a37f7bf" @@ -2605,6 +4159,16 @@ "@webassemblyjs/helper-wasm-bytecode" "1.11.6" "@webassemblyjs/wasm-gen" "1.12.1" +"@webassemblyjs/helper-wasm-section@1.14.1": + version "1.14.1" + resolved "https://registry.yarnpkg.com/@webassemblyjs/helper-wasm-section/-/helper-wasm-section-1.14.1.tgz#9629dda9c4430eab54b591053d6dc6f3ba050348" + integrity sha512-ds5mXEqTJ6oxRoqjhWDU83OgzAYjwsCV8Lo/N+oRsNDmx/ZDpqalmrtgOMkHwxsG0iI//3BwWAErYRHtgn0dZw== + dependencies: + "@webassemblyjs/ast" "1.14.1" + "@webassemblyjs/helper-buffer" "1.14.1" + "@webassemblyjs/helper-wasm-bytecode" "1.13.2" + "@webassemblyjs/wasm-gen" "1.14.1" + "@webassemblyjs/ieee754@1.11.6": version "1.11.6" resolved "https://registry.yarnpkg.com/@webassemblyjs/ieee754/-/ieee754-1.11.6.tgz#bb665c91d0b14fffceb0e38298c329af043c6e3a" @@ -2612,6 +4176,13 @@ dependencies: "@xtuc/ieee754" "^1.2.0" +"@webassemblyjs/ieee754@1.13.2": + version "1.13.2" + resolved "https://registry.yarnpkg.com/@webassemblyjs/ieee754/-/ieee754-1.13.2.tgz#1c5eaace1d606ada2c7fd7045ea9356c59ee0dba" + integrity sha512-4LtOzh58S/5lX4ITKxnAK2USuNEvpdVV9AlgGQb8rJDHaLeHciwG4zlGr0j/SNWlr7x3vO1lDEsuePvtcDNCkw== + dependencies: + "@xtuc/ieee754" "^1.2.0" + "@webassemblyjs/leb128@1.11.6": version "1.11.6" resolved "https://registry.yarnpkg.com/@webassemblyjs/leb128/-/leb128-1.11.6.tgz#70e60e5e82f9ac81118bc25381a0b283893240d7" @@ -2619,11 +4190,23 @@ dependencies: "@xtuc/long" "4.2.2" +"@webassemblyjs/leb128@1.13.2": + version "1.13.2" + resolved "https://registry.yarnpkg.com/@webassemblyjs/leb128/-/leb128-1.13.2.tgz#57c5c3deb0105d02ce25fa3fd74f4ebc9fd0bbb0" + integrity sha512-Lde1oNoIdzVzdkNEAWZ1dZ5orIbff80YPdHx20mrHwHrVNNTjNr8E3xz9BdpcGqRQbAEa+fkrCb+fRFTl/6sQw== + dependencies: + "@xtuc/long" "4.2.2" + "@webassemblyjs/utf8@1.11.6": version "1.11.6" resolved "https://registry.yarnpkg.com/@webassemblyjs/utf8/-/utf8-1.11.6.tgz#90f8bc34c561595fe156603be7253cdbcd0fab5a" integrity sha512-vtXf2wTQ3+up9Zsg8sa2yWiQpzSsMyXj0qViVP6xKGCUT8p8YJ6HqI7l5eCnWx1T/FYdsv07HQs2wTFbbof/RA== +"@webassemblyjs/utf8@1.13.2": + version "1.13.2" + resolved "https://registry.yarnpkg.com/@webassemblyjs/utf8/-/utf8-1.13.2.tgz#917a20e93f71ad5602966c2d685ae0c6c21f60f1" + integrity sha512-3NQWGjKTASY1xV5m7Hr0iPeXD9+RDobLll3T9d2AO+g3my8xy5peVyjSag4I50mR1bBSN/Ct12lo+R9tJk0NZQ== + "@webassemblyjs/wasm-edit@^1.12.1": version "1.12.1" resolved "https://registry.yarnpkg.com/@webassemblyjs/wasm-edit/-/wasm-edit-1.12.1.tgz#9f9f3ff52a14c980939be0ef9d5df9ebc678ae3b" @@ -2638,6 +4221,20 @@ "@webassemblyjs/wasm-parser" "1.12.1" "@webassemblyjs/wast-printer" "1.12.1" +"@webassemblyjs/wasm-edit@^1.14.1": + version "1.14.1" + resolved "https://registry.yarnpkg.com/@webassemblyjs/wasm-edit/-/wasm-edit-1.14.1.tgz#ac6689f502219b59198ddec42dcd496b1004d597" + integrity sha512-RNJUIQH/J8iA/1NzlE4N7KtyZNHi3w7at7hDjvRNm5rcUXa00z1vRz3glZoULfJ5mpvYhLybmVcwcjGrC1pRrQ== + dependencies: + "@webassemblyjs/ast" "1.14.1" + "@webassemblyjs/helper-buffer" "1.14.1" + "@webassemblyjs/helper-wasm-bytecode" "1.13.2" + "@webassemblyjs/helper-wasm-section" "1.14.1" + "@webassemblyjs/wasm-gen" "1.14.1" + "@webassemblyjs/wasm-opt" "1.14.1" + "@webassemblyjs/wasm-parser" "1.14.1" + "@webassemblyjs/wast-printer" "1.14.1" + "@webassemblyjs/wasm-gen@1.12.1": version "1.12.1" resolved "https://registry.yarnpkg.com/@webassemblyjs/wasm-gen/-/wasm-gen-1.12.1.tgz#a6520601da1b5700448273666a71ad0a45d78547" @@ -2649,6 +4246,17 @@ "@webassemblyjs/leb128" "1.11.6" "@webassemblyjs/utf8" "1.11.6" +"@webassemblyjs/wasm-gen@1.14.1": + version "1.14.1" + resolved "https://registry.yarnpkg.com/@webassemblyjs/wasm-gen/-/wasm-gen-1.14.1.tgz#991e7f0c090cb0bb62bbac882076e3d219da9570" + integrity sha512-AmomSIjP8ZbfGQhumkNvgC33AY7qtMCXnN6bL2u2Js4gVCg8fp735aEiMSBbDR7UQIj90n4wKAFUSEd0QN2Ukg== + dependencies: + "@webassemblyjs/ast" "1.14.1" + "@webassemblyjs/helper-wasm-bytecode" "1.13.2" + "@webassemblyjs/ieee754" "1.13.2" + "@webassemblyjs/leb128" "1.13.2" + "@webassemblyjs/utf8" "1.13.2" + "@webassemblyjs/wasm-opt@1.12.1": version "1.12.1" resolved "https://registry.yarnpkg.com/@webassemblyjs/wasm-opt/-/wasm-opt-1.12.1.tgz#9e6e81475dfcfb62dab574ac2dda38226c232bc5" @@ -2659,6 +4267,16 @@ "@webassemblyjs/wasm-gen" "1.12.1" "@webassemblyjs/wasm-parser" "1.12.1" +"@webassemblyjs/wasm-opt@1.14.1": + version "1.14.1" + resolved "https://registry.yarnpkg.com/@webassemblyjs/wasm-opt/-/wasm-opt-1.14.1.tgz#e6f71ed7ccae46781c206017d3c14c50efa8106b" + integrity sha512-PTcKLUNvBqnY2U6E5bdOQcSM+oVP/PmrDY9NzowJjislEjwP/C4an2303MCVS2Mg9d3AJpIGdUFIQQWbPds0Sw== + dependencies: + "@webassemblyjs/ast" "1.14.1" + "@webassemblyjs/helper-buffer" "1.14.1" + "@webassemblyjs/wasm-gen" "1.14.1" + "@webassemblyjs/wasm-parser" "1.14.1" + "@webassemblyjs/wasm-parser@1.12.1", "@webassemblyjs/wasm-parser@^1.12.1": version "1.12.1" resolved "https://registry.yarnpkg.com/@webassemblyjs/wasm-parser/-/wasm-parser-1.12.1.tgz#c47acb90e6f083391e3fa61d113650eea1e95937" @@ -2671,6 +4289,18 @@ "@webassemblyjs/leb128" "1.11.6" "@webassemblyjs/utf8" "1.11.6" +"@webassemblyjs/wasm-parser@1.14.1", "@webassemblyjs/wasm-parser@^1.14.1": + version "1.14.1" + resolved "https://registry.yarnpkg.com/@webassemblyjs/wasm-parser/-/wasm-parser-1.14.1.tgz#b3e13f1893605ca78b52c68e54cf6a865f90b9fb" + integrity sha512-JLBl+KZ0R5qB7mCnud/yyX08jWFw5MsoalJ1pQ4EdFlgj9VdXKGuENGsiCIjegI1W7p91rUlcB/LB5yRJKNTcQ== + dependencies: + "@webassemblyjs/ast" "1.14.1" + "@webassemblyjs/helper-api-error" "1.13.2" + "@webassemblyjs/helper-wasm-bytecode" "1.13.2" + "@webassemblyjs/ieee754" "1.13.2" + "@webassemblyjs/leb128" "1.13.2" + "@webassemblyjs/utf8" "1.13.2" + "@webassemblyjs/wast-printer@1.12.1": version "1.12.1" resolved "https://registry.yarnpkg.com/@webassemblyjs/wast-printer/-/wast-printer-1.12.1.tgz#bcecf661d7d1abdaf989d8341a4833e33e2b31ac" @@ -2679,6 +4309,14 @@ "@webassemblyjs/ast" "1.12.1" "@xtuc/long" "4.2.2" +"@webassemblyjs/wast-printer@1.14.1": + version "1.14.1" + resolved "https://registry.yarnpkg.com/@webassemblyjs/wast-printer/-/wast-printer-1.14.1.tgz#3bb3e9638a8ae5fdaf9610e7a06b4d9f9aa6fe07" + integrity sha512-kPSSXE6De1XOR820C90RIo2ogvZG+c3KiHzqUoO/F34Y2shGzesfqv7o57xrxovZJH/MetF5UjroJ/R/3isoiw== + dependencies: + "@webassemblyjs/ast" "1.14.1" + "@xtuc/long" "4.2.2" + "@xtuc/ieee754@^1.2.0": version "1.2.0" resolved "https://registry.yarnpkg.com/@xtuc/ieee754/-/ieee754-1.2.0.tgz#eef014a3145ae477a1cbc00cd1e552336dceb790" @@ -2702,6 +4340,11 @@ acorn-import-attributes@^1.9.5: resolved "https://registry.yarnpkg.com/acorn-import-attributes/-/acorn-import-attributes-1.9.5.tgz#7eb1557b1ba05ef18b5ed0ec67591bfab04688ef" integrity sha512-n02Vykv5uA3eHGM/Z2dQrcD56kL8TyDb2p1+0P83PClMnC/nc+anbQRhIOWnSq4Ke/KvDPrY3C9hDtC/A3eHnQ== +acorn-import-phases@^1.0.3: + version "1.0.4" + resolved "https://registry.yarnpkg.com/acorn-import-phases/-/acorn-import-phases-1.0.4.tgz#16eb850ba99a056cb7cbfe872ffb8972e18c8bd7" + integrity sha512-wKmbr/DDiIXzEOiWrTTUcDm24kQ2vGfZQvM2fwg2vXqR5uW6aapr7ObPtj1th32b9u90/Pf4AItvdTh42fBmVQ== + acorn-jsx@^5.0.0: version "5.3.2" resolved "https://registry.yarnpkg.com/acorn-jsx/-/acorn-jsx-5.3.2.tgz#7ed5bb55908b3b2f1bc55c6af1653bada7f07937" @@ -2719,7 +4362,12 @@ acorn@^8.0.0, acorn@^8.0.4, acorn@^8.11.0, acorn@^8.7.1, acorn@^8.8.2: resolved "https://registry.yarnpkg.com/acorn/-/acorn-8.12.1.tgz#71616bdccbe25e27a54439e0046e89ca76df2248" integrity sha512-tcpGyI9zbizT9JbV6oYE477V6mTlXvvi0T0G3SNIYE2apm/G5huBa1+K89VGeovbg+jycCrfhl3ADxErOuO6Jg== -address@^1.0.1, address@^1.1.2: +acorn@^8.14.0, acorn@^8.15.0: + version "8.15.0" + resolved "https://registry.yarnpkg.com/acorn/-/acorn-8.15.0.tgz#a360898bc415edaac46c8241f6383975b930b816" + integrity sha512-NZyJarBfL7nWwIq+FDL6Zp/yHEhePMNnnJ0y3qfieCrmNvYct8uvtiV41UvlSe6apAfk0fY1FbWx+NwfmpvtTg== + +address@^1.0.1: version "1.2.2" resolved "https://registry.yarnpkg.com/address/-/address-1.2.2.tgz#2b5248dac5485a6390532c6a517fda2e3faac89e" integrity sha512-4B/qKCfeE/ODUaAUpSwfzazo5x29WD4r3vXiWsB7I2mSDAihwEqKO+g8GELZUQSSAo5e1XTYh3ZVfLyxBc12nA== @@ -2739,7 +4387,7 @@ ajv-formats@^2.1.1: dependencies: ajv "^8.0.0" -ajv-keywords@^3.4.1, ajv-keywords@^3.5.2: +ajv-keywords@^3.5.2: version "3.5.2" resolved "https://registry.yarnpkg.com/ajv-keywords/-/ajv-keywords-3.5.2.tgz#31f29da5ab6e00d1c2d329acf7b5929614d5014d" integrity sha512-5p6WTN0DdTGVQk6VjcEju19IgaHudalcfabD7yhDGeA6bcQnmL+CpveLJq/3hvfwd1aof6L386Ougkx6RfyMIQ== @@ -2751,7 +4399,7 @@ ajv-keywords@^5.1.0: dependencies: fast-deep-equal "^3.1.3" -ajv@^6.12.2, ajv@^6.12.5: +ajv@^6.12.5: version "6.12.6" resolved "https://registry.yarnpkg.com/ajv/-/ajv-6.12.6.tgz#baf5a62e802b07d977034586f8c3baf5adf26df4" integrity sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g== @@ -2771,40 +4419,45 @@ ajv@^8.0.0, ajv@^8.9.0: json-schema-traverse "^1.0.0" require-from-string "^2.0.2" -algoliasearch-helper@^3.13.3: - version "3.22.3" - resolved "https://registry.yarnpkg.com/algoliasearch-helper/-/algoliasearch-helper-3.22.3.tgz#7c67a1a87c3adb0b52ef726a3de3c0b0edcbb5d1" - integrity sha512-2eoEz8mG4KHE+DzfrBTrCmDPxVXv7aZZWPojAJFtARpxxMO6lkos1dJ+XDCXdPvq7q3tpYWRi6xXmVQikejtpA== +algoliasearch-helper@^3.22.6: + version "3.26.0" + resolved "https://registry.yarnpkg.com/algoliasearch-helper/-/algoliasearch-helper-3.26.0.tgz#d6e283396a9fc5bf944f365dc3b712570314363f" + integrity sha512-Rv2x3GXleQ3ygwhkhJubhhYGsICmShLAiqtUuJTUkr9uOCOXyF2E71LVT4XDnVffbknv8XgScP4U0Oxtgm+hIw== dependencies: "@algolia/events" "^4.0.1" -algoliasearch@^4.18.0, algoliasearch@^4.19.1: - version "4.24.0" - resolved "https://registry.yarnpkg.com/algoliasearch/-/algoliasearch-4.24.0.tgz#b953b3e2309ef8f25da9de311b95b994ac918275" - integrity sha512-bf0QV/9jVejssFBmz2HQLxUadxk574t4iwjCKp5E7NBzwKkrDEhKPISIIjAU/p6K5qDx3qoeh4+26zWN1jmw3g== - dependencies: - "@algolia/cache-browser-local-storage" "4.24.0" - "@algolia/cache-common" "4.24.0" - "@algolia/cache-in-memory" "4.24.0" - "@algolia/client-account" "4.24.0" - "@algolia/client-analytics" "4.24.0" - "@algolia/client-common" "4.24.0" - "@algolia/client-personalization" "4.24.0" - "@algolia/client-search" "4.24.0" - "@algolia/logger-common" "4.24.0" - "@algolia/logger-console" "4.24.0" - "@algolia/recommend" "4.24.0" - "@algolia/requester-browser-xhr" "4.24.0" - "@algolia/requester-common" "4.24.0" - "@algolia/requester-node-http" "4.24.0" - "@algolia/transporter" "4.24.0" +algoliasearch@^5.14.2, algoliasearch@^5.17.1: + version "5.34.0" + resolved "https://registry.yarnpkg.com/algoliasearch/-/algoliasearch-5.34.0.tgz#eb71f52b254059bfe40342ff47a2d3641b93c68b" + integrity sha512-wioVnf/8uuG8Bmywhk5qKIQ3wzCCtmdvicPRb0fa3kKYGGoewfgDqLEaET1MV2NbTc3WGpPv+AgauLVBp1nB9A== + dependencies: + "@algolia/client-abtesting" "5.34.0" + "@algolia/client-analytics" "5.34.0" + "@algolia/client-common" "5.34.0" + "@algolia/client-insights" "5.34.0" + "@algolia/client-personalization" "5.34.0" + "@algolia/client-query-suggestions" "5.34.0" + "@algolia/client-search" "5.34.0" + "@algolia/ingestion" "1.34.0" + "@algolia/monitoring" "1.34.0" + "@algolia/recommend" "5.34.0" + "@algolia/requester-browser-xhr" "5.34.0" + "@algolia/requester-fetch" "5.34.0" + "@algolia/requester-node-http" "5.34.0" ansi-align@^3.0.1: version "3.0.1" resolved "https://registry.yarnpkg.com/ansi-align/-/ansi-align-3.0.1.tgz#0cdf12e111ace773a86e9a1fad1225c43cb19a59" integrity sha512-IOfwwBF5iczOjp/WeY4YxyjqAFMQoZufdQWDd19SEExbVLNXqvpzSJ/M7Za4/sCPmQ0+GRquoA7bGcINcxew6w== dependencies: - string-width "^4.1.0" + string-width "^4.1.0" + +ansi-escapes@^4.3.2: + version "4.3.2" + resolved "https://registry.yarnpkg.com/ansi-escapes/-/ansi-escapes-4.3.2.tgz#6b2291d1db7d98b6521d5f1efa42d0f3a9feb65e" + integrity sha512-gKXj5ALrKWQLsYG9jlTRmR/xKluxHV+Z9QEwNIgCfM1/uwPMCuzVVnh5mwTd+OuBZcwSIMbqssNWRm1lE51QaQ== + dependencies: + type-fest "^0.21.3" ansi-html-community@^0.0.8: version "0.0.8" @@ -2828,7 +4481,7 @@ ansi-styles@^3.2.1: dependencies: color-convert "^1.9.0" -ansi-styles@^4.1.0: +ansi-styles@^4.0.0, ansi-styles@^4.1.0: version "4.3.0" resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-4.3.0.tgz#edd803628ae71c04c85ae7a0906edad34b648937" integrity sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg== @@ -2880,12 +4533,7 @@ astring@^1.8.0: resolved "https://registry.yarnpkg.com/astring/-/astring-1.8.6.tgz#2c9c157cf1739d67561c56ba896e6948f6b93731" integrity sha512-ISvCdHdlTDlH5IpxQJIex7BWBywFWgjJSVdwst+/iQCoEYnyOaQ95+X1JGshuBjGp6nxKUy1jMgE3zPqN7fQdg== -at-least-node@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/at-least-node/-/at-least-node-1.0.0.tgz#602cd4b46e844ad4effc92a8011a3c46e0238dc2" - integrity sha512-+q/t7Ekv1EDY2l6Gda6LLiX14rU9TV20Wa3ofeQmwPFZbOMo9DXrLbOjFaaclkXKWidIaopwAObQDqwWtGUjqg== - -autoprefixer@^10.4.14, autoprefixer@^10.4.19: +autoprefixer@^10.4.19: version "10.4.20" resolved "https://registry.yarnpkg.com/autoprefixer/-/autoprefixer-10.4.20.tgz#5caec14d43976ef42e32dcb4bd62878e96be5b3b" integrity sha512-XY25y5xSv/wEoqzDyXXME4AFfkZI0P23z6Fs3YgymDnKJkCGOnkL0iTxCa85UTqaSgfcqyf3UA6+c7wUvx/16g== @@ -2897,10 +4545,22 @@ autoprefixer@^10.4.14, autoprefixer@^10.4.19: picocolors "^1.0.1" postcss-value-parser "^4.2.0" -babel-loader@^9.1.3: - version "9.1.3" - resolved "https://registry.yarnpkg.com/babel-loader/-/babel-loader-9.1.3.tgz#3d0e01b4e69760cc694ee306fe16d358aa1c6f9a" - integrity sha512-xG3ST4DglodGf8qSwv0MdeWLhrDsw/32QMdTO5T1ZIp9gQur0HkCyFs7Awskr10JKXFXwpAhiCuYX5oGXnRGbw== +autoprefixer@^10.4.21: + version "10.4.21" + resolved "https://registry.yarnpkg.com/autoprefixer/-/autoprefixer-10.4.21.tgz#77189468e7a8ad1d9a37fbc08efc9f480cf0a95d" + integrity sha512-O+A6LWV5LDHSJD3LjHYoNi4VLsj/Whi7k6zG12xTYaU4cQ8oxQGckXNX8cRHK5yOZ/ppVHe0ZBXGzSV9jXdVbQ== + dependencies: + browserslist "^4.24.4" + caniuse-lite "^1.0.30001702" + fraction.js "^4.3.7" + normalize-range "^0.1.2" + picocolors "^1.1.1" + postcss-value-parser "^4.2.0" + +babel-loader@^9.2.1: + version "9.2.1" + resolved "https://registry.yarnpkg.com/babel-loader/-/babel-loader-9.2.1.tgz#04c7835db16c246dd19ba0914418f3937797587b" + integrity sha512-fqe8naHt46e0yIdkjUZYqddSXfej3AHajX+CSO5X7oy0EmPc6o5Xh+RClNoHjnieWz9AW4kZxW9yyFMhVB1QLA== dependencies: find-cache-dir "^4.0.0" schema-utils "^4.0.0" @@ -2930,7 +4590,16 @@ babel-plugin-polyfill-corejs2@^0.4.10: "@babel/helper-define-polyfill-provider" "^0.6.2" semver "^6.3.1" -babel-plugin-polyfill-corejs3@^0.10.1, babel-plugin-polyfill-corejs3@^0.10.4: +babel-plugin-polyfill-corejs2@^0.4.14: + version "0.4.14" + resolved "https://registry.yarnpkg.com/babel-plugin-polyfill-corejs2/-/babel-plugin-polyfill-corejs2-0.4.14.tgz#8101b82b769c568835611542488d463395c2ef8f" + integrity sha512-Co2Y9wX854ts6U8gAAPXfn0GmAyctHuK8n0Yhfjd6t30g7yvKjspvvOo9yG+z52PZRgFErt7Ka2pYnXCjLKEpg== + dependencies: + "@babel/compat-data" "^7.27.7" + "@babel/helper-define-polyfill-provider" "^0.6.5" + semver "^6.3.1" + +babel-plugin-polyfill-corejs3@^0.10.4: version "0.10.6" resolved "https://registry.yarnpkg.com/babel-plugin-polyfill-corejs3/-/babel-plugin-polyfill-corejs3-0.10.6.tgz#2deda57caef50f59c525aeb4964d3b2f867710c7" integrity sha512-b37+KR2i/khY5sKmWNVQAnitvquQbNdWy6lJdsr0kmquCKEEUgMKK4SboVM3HtfnZilfjr4MMQ7vY58FVWDtIA== @@ -2938,6 +4607,14 @@ babel-plugin-polyfill-corejs3@^0.10.1, babel-plugin-polyfill-corejs3@^0.10.4: "@babel/helper-define-polyfill-provider" "^0.6.2" core-js-compat "^3.38.0" +babel-plugin-polyfill-corejs3@^0.13.0: + version "0.13.0" + resolved "https://registry.yarnpkg.com/babel-plugin-polyfill-corejs3/-/babel-plugin-polyfill-corejs3-0.13.0.tgz#bb7f6aeef7addff17f7602a08a6d19a128c30164" + integrity sha512-U+GNwMdSFgzVmfhNm8GJUX88AadB3uo9KpJqS3FaqNIPKgySuvMb+bHPsOmmuWyIcuqZj/pzt1RUIUZns4y2+A== + dependencies: + "@babel/helper-define-polyfill-provider" "^0.6.5" + core-js-compat "^3.43.0" + babel-plugin-polyfill-regenerator@^0.6.1: version "0.6.2" resolved "https://registry.yarnpkg.com/babel-plugin-polyfill-regenerator/-/babel-plugin-polyfill-regenerator-0.6.2.tgz#addc47e240edd1da1058ebda03021f382bba785e" @@ -2945,6 +4622,13 @@ babel-plugin-polyfill-regenerator@^0.6.1: dependencies: "@babel/helper-define-polyfill-provider" "^0.6.2" +babel-plugin-polyfill-regenerator@^0.6.5: + version "0.6.5" + resolved "https://registry.yarnpkg.com/babel-plugin-polyfill-regenerator/-/babel-plugin-polyfill-regenerator-0.6.5.tgz#32752e38ab6f6767b92650347bf26a31b16ae8c5" + integrity sha512-ISqQ2frbiNU9vIJkzg7dlPpznPZ4jOiUQ1uSmB0fEHeowtN3COYRsXr/xexn64NpU13P06jc/L5TgiJXOgrbEg== + dependencies: + "@babel/helper-define-polyfill-provider" "^0.6.5" + bail@^2.0.0: version "2.0.2" resolved "https://registry.yarnpkg.com/bail/-/bail-2.0.2.tgz#d26f5cd8fe5d6f832a31517b9f7c356040ba6d5d" @@ -3044,7 +4728,7 @@ braces@^3.0.3, braces@~3.0.2: dependencies: fill-range "^7.1.1" -browserslist@^4.0.0, browserslist@^4.18.1, browserslist@^4.21.10, browserslist@^4.23.0, browserslist@^4.23.1, browserslist@^4.23.3: +browserslist@^4.0.0, browserslist@^4.21.10, browserslist@^4.23.0, browserslist@^4.23.1, browserslist@^4.23.3: version "4.23.3" resolved "https://registry.yarnpkg.com/browserslist/-/browserslist-4.23.3.tgz#debb029d3c93ebc97ffbc8d9cbb03403e227c800" integrity sha512-btwCFJVjI4YWDNfau8RhZ+B1Q/VLoUITrm3RlP6y1tYGWIOa+InuYiRGXUBXo8nA1qKmHMyLB/iVQg5TT4eFoA== @@ -3054,6 +4738,16 @@ browserslist@^4.0.0, browserslist@^4.18.1, browserslist@^4.21.10, browserslist@^ node-releases "^2.0.18" update-browserslist-db "^1.1.0" +browserslist@^4.24.0, browserslist@^4.24.4, browserslist@^4.25.0, browserslist@^4.25.1: + version "4.25.1" + resolved "https://registry.yarnpkg.com/browserslist/-/browserslist-4.25.1.tgz#ba9e8e6f298a1d86f829c9b975e07948967bb111" + integrity sha512-KGj0KoOMXLpSNkkEI6Z6mShmQy0bc1I+T7K9N81k4WWMrfz+6fQ6es80B/YLAeRoKvjYE1YSHHOW1qe9xIVzHw== + dependencies: + caniuse-lite "^1.0.30001726" + electron-to-chromium "^1.5.173" + node-releases "^2.0.19" + update-browserslist-db "^1.1.3" + buffer-from@^1.0.0: version "1.1.2" resolved "https://registry.yarnpkg.com/buffer-from/-/buffer-from-1.1.2.tgz#2b146a6fd72e80b4f55d255f35ed59a3a9a41bd5" @@ -3136,6 +4830,11 @@ caniuse-lite@^1.0.0, caniuse-lite@^1.0.30001646: resolved "https://registry.yarnpkg.com/caniuse-lite/-/caniuse-lite-1.0.30001651.tgz#52de59529e8b02b1aedcaaf5c05d9e23c0c28138" integrity sha512-9Cf+Xv1jJNe1xPZLGuUXLNkE1BoDkqRqYyFJ9TDYSqhduqA4hu4oR9HluGoWYQC/aj8WHjsGVV+bwkh0+tegRg== +caniuse-lite@^1.0.30001702, caniuse-lite@^1.0.30001726: + version "1.0.30001727" + resolved "https://registry.yarnpkg.com/caniuse-lite/-/caniuse-lite-1.0.30001727.tgz#22e9706422ad37aa50556af8c10e40e2d93a8b85" + integrity sha512-pB68nIHmbN6L/4C6MH1DokyR3bYqFwjaSs/sWDHGj4CTcFtQUQMuJftVwWkXq7mNWOybD3KhUv3oWHoGxgP14Q== + ccount@^2.0.0: version "2.0.1" resolved "https://registry.yarnpkg.com/ccount/-/ccount-2.0.1.tgz#17a3bf82302e0870d6da43a01311a8bc02a3ecf5" @@ -3150,7 +4849,7 @@ chalk@^2.4.2: escape-string-regexp "^1.0.5" supports-color "^5.3.0" -chalk@^4.0.0, chalk@^4.1.0, chalk@^4.1.2: +chalk@^4.0.0, chalk@^4.1.2: version "4.1.2" resolved "https://registry.yarnpkg.com/chalk/-/chalk-4.1.2.tgz#aac4e2b7734a740867aeb16bf02aad556a1e7a01" integrity sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA== @@ -3213,7 +4912,26 @@ cheerio@1.0.0-rc.12: parse5 "^7.0.0" parse5-htmlparser2-tree-adapter "^7.0.0" -chokidar@^3.4.2, chokidar@^3.5.3: +chevrotain-allstar@~0.3.0: + version "0.3.1" + resolved "https://registry.yarnpkg.com/chevrotain-allstar/-/chevrotain-allstar-0.3.1.tgz#b7412755f5d83cc139ab65810cdb00d8db40e6ca" + integrity sha512-b7g+y9A0v4mxCW1qUhf3BSVPg+/NvGErk/dOkrDaHA0nQIQGAtrOjlX//9OQtRlSCy+x9rfB5N8yC71lH1nvMw== + dependencies: + lodash-es "^4.17.21" + +chevrotain@~11.0.3: + version "11.0.3" + resolved "https://registry.yarnpkg.com/chevrotain/-/chevrotain-11.0.3.tgz#88ffc1fb4b5739c715807eaeedbbf200e202fc1b" + integrity sha512-ci2iJH6LeIkvP9eJW6gpueU8cnZhv85ELY8w8WiFtNjMHA5ad6pQLaJo9mEly/9qUyCpvqX8/POVUTf18/HFdw== + dependencies: + "@chevrotain/cst-dts-gen" "11.0.3" + "@chevrotain/gast" "11.0.3" + "@chevrotain/regexp-to-ast" "11.0.3" + "@chevrotain/types" "11.0.3" + "@chevrotain/utils" "11.0.3" + lodash-es "4.17.21" + +chokidar@^3.5.3: version "3.6.0" resolved "https://registry.yarnpkg.com/chokidar/-/chokidar-3.6.0.tgz#197c6cc669ef2a8dc5e7b4d97ee4e092c3eb0d5b" integrity sha512-7VT13fmjotKpGipCW9JEQAusEPE+Ei8nl6/g4FBAmIm0GOOLMua9NDDo/DWp0ZAxCr3cPq5ZpBqmPAQgDda2Pw== @@ -3238,7 +4956,7 @@ ci-info@^3.2.0: resolved "https://registry.yarnpkg.com/ci-info/-/ci-info-3.9.0.tgz#4279a62028a7b1f262f3473fc9605f5e218c59b4" integrity sha512-NIxF55hv4nSqQswkAeiOi1r83xy8JldOFDTWiug55KBu9Jnblncd2U6ViHmYgHf01TPZS77NJBhBMKdWj9HQMQ== -clean-css@^5.2.2, clean-css@^5.3.2, clean-css@~5.3.2: +clean-css@^5.2.2, clean-css@^5.3.3, clean-css@~5.3.2: version "5.3.3" resolved "https://registry.yarnpkg.com/clean-css/-/clean-css-5.3.3.tgz#b330653cd3bd6b75009cc25c714cae7b93351ccd" integrity sha512-D5J+kHaVb/wKSFcyyV75uCn8fiY4sV38XJoe4CUyGQ+mOU/fMVYUdH1hJC+CJQ5uY3EnW27SbJYS4X8BiLrAFg== @@ -3382,6 +5100,16 @@ concat-map@0.0.1: resolved "https://registry.yarnpkg.com/concat-map/-/concat-map-0.0.1.tgz#d8a96bd77fd68df7793a73036a3ba0d5405d477b" integrity sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg== +confbox@^0.1.8: + version "0.1.8" + resolved "https://registry.yarnpkg.com/confbox/-/confbox-0.1.8.tgz#820d73d3b3c82d9bd910652c5d4d599ef8ff8b06" + integrity sha512-RMtmw0iFkeR4YV+fUOSucriAQNb9g8zFR52MWCtl+cCZOFRNL6zeB395vPzFhEjjn4fMxXudmELnl/KF/WrK6w== + +confbox@^0.2.2: + version "0.2.2" + resolved "https://registry.yarnpkg.com/confbox/-/confbox-0.2.2.tgz#8652f53961c74d9e081784beed78555974a9c110" + integrity sha512-1NB+BKqhtNipMsov4xI/NnhCKp9XG9NamYp5PVm9klAT0fsrNPjaFICsCFhNhwZJKNh7zB/3q8qXz0E9oaMNtQ== + config-chain@^1.1.11: version "1.1.13" resolved "https://registry.yarnpkg.com/config-chain/-/config-chain-1.1.13.tgz#fad0795aa6a6cdaff9ed1b68e9dff94372c232f4" @@ -3406,10 +5134,10 @@ connect-history-api-fallback@^2.0.0: resolved "https://registry.yarnpkg.com/connect-history-api-fallback/-/connect-history-api-fallback-2.0.0.tgz#647264845251a0daf25b97ce87834cace0f5f1c8" integrity sha512-U73+6lQFmfiNPrYbXqr6kZ1i1wiRqXnp2nhMsINseWXO8lDau0LGEffJ8kQi4EjLZympVgRdvqjAgiZ1tgzDDA== -consola@^2.15.3: - version "2.15.3" - resolved "https://registry.yarnpkg.com/consola/-/consola-2.15.3.tgz#2e11f98d6a4be71ff72e0bdf07bd23e12cb61550" - integrity sha512-9vAdYbHj6x2fLKC4+oPH0kFzY/orMZyG2Aj+kNylHxKGJ/Ed4dpNyAQYwJOdqO4zdM7XpVHmyejQDcQHrnuXbw== +consola@^3.2.3: + version "3.4.2" + resolved "https://registry.yarnpkg.com/consola/-/consola-3.4.2.tgz#5af110145397bb67afdab77013fdc34cae590ea7" + integrity sha512-5IKcdX0nnYavi6G7TtOhwkYzyjfJlatbjMjuLSfE2kYT5pMDOilZ4OvMhi637CcDICTmz3wARPoyhqyX1Y+XvA== content-disposition@0.5.2: version "0.5.2" @@ -3472,10 +5200,17 @@ core-js-compat@^3.37.1, core-js-compat@^3.38.0: dependencies: browserslist "^4.23.3" -core-js-pure@^3.30.2: - version "3.38.0" - resolved "https://registry.yarnpkg.com/core-js-pure/-/core-js-pure-3.38.0.tgz#bc802cd152e33d5b0ec733b656c71cb847cac701" - integrity sha512-8balb/HAXo06aHP58mZMtXgD8vcnXz9tUDePgqBgJgKdmTlMt+jw3ujqniuBDQXMvTzxnMpxHFeuSM3g1jWQuQ== +core-js-compat@^3.43.0: + version "3.44.0" + resolved "https://registry.yarnpkg.com/core-js-compat/-/core-js-compat-3.44.0.tgz#62b9165b97e4cbdb8bca16b14818e67428b4a0f8" + integrity sha512-JepmAj2zfl6ogy34qfWtcE7nHKAJnKsQFRn++scjVS2bZFllwptzw61BZcZFYBPpUznLfAvh0LGhxKppk04ClA== + dependencies: + browserslist "^4.25.1" + +core-js-pure@^3.43.0: + version "3.44.0" + resolved "https://registry.yarnpkg.com/core-js-pure/-/core-js-pure-3.44.0.tgz#6e9d6c128c8b967c5eac4f181c2b654d85c28090" + integrity sha512-gvMQAGB4dfVUxpYD0k3Fq8J+n5bB6Ytl15lqlZrOIXFzxOhtPaObfkQGHtMRdyjIf7z2IeNULwi1jEwyS+ltKQ== core-js@^3.31.1: version "3.38.0" @@ -3494,16 +5229,12 @@ cose-base@^1.0.0: dependencies: layout-base "^1.0.0" -cosmiconfig@^6.0.0: - version "6.0.0" - resolved "https://registry.yarnpkg.com/cosmiconfig/-/cosmiconfig-6.0.0.tgz#da4fee853c52f6b1e6935f41c1a2fc50bd4a9982" - integrity sha512-xb3ZL6+L8b9JLLCx3ZdoZy4+2ECphCMo2PwqgP1tlfVq6M6YReyzBJtvWWtbDSpNr9hn96pkCiZqUcFEc+54Qg== +cose-base@^2.2.0: + version "2.2.0" + resolved "https://registry.yarnpkg.com/cose-base/-/cose-base-2.2.0.tgz#1c395c35b6e10bb83f9769ca8b817d614add5c01" + integrity sha512-AzlgcsCbUMymkADOJtQm3wO9S3ltPfYOFD5033keQn9NJzIbtnZj+UdBJe7DYml/8TdbtHJW3j58SOnKhWY/5g== dependencies: - "@types/parse-json" "^4.0.0" - import-fresh "^3.1.0" - parse-json "^5.0.0" - path-type "^4.0.0" - yaml "^1.7.2" + layout-base "^2.0.0" cosmiconfig@^7.0.0: version "7.1.0" @@ -3542,12 +5273,28 @@ crypto-random-string@^4.0.0: dependencies: type-fest "^1.0.1" +css-blank-pseudo@^7.0.1: + version "7.0.1" + resolved "https://registry.yarnpkg.com/css-blank-pseudo/-/css-blank-pseudo-7.0.1.tgz#32020bff20a209a53ad71b8675852b49e8d57e46" + integrity sha512-jf+twWGDf6LDoXDUode+nc7ZlrqfaNphrBIBrcmeP3D8yw1uPaix1gCC8LUQUGQ6CycuK2opkbFFWFuq/a94ag== + dependencies: + postcss-selector-parser "^7.0.0" + css-declaration-sorter@^7.2.0: version "7.2.0" resolved "https://registry.yarnpkg.com/css-declaration-sorter/-/css-declaration-sorter-7.2.0.tgz#6dec1c9523bc4a643e088aab8f09e67a54961024" integrity sha512-h70rUM+3PNFuaBDTLe8wF/cdWu+dOZmb7pJt8Z2sedYbAcQVQV/tEchueg3GWxwqS0cxtbxmaHEdkNACqcvsow== -css-loader@^6.8.1: +css-has-pseudo@^7.0.2: + version "7.0.2" + resolved "https://registry.yarnpkg.com/css-has-pseudo/-/css-has-pseudo-7.0.2.tgz#fb42e8de7371f2896961e1f6308f13c2c7019b72" + integrity sha512-nzol/h+E0bId46Kn2dQH5VElaknX2Sr0hFuB/1EomdC7j+OISt2ZzK7EHX9DZDY53WbIVAR7FYKSO2XnSf07MQ== + dependencies: + "@csstools/selector-specificity" "^5.0.0" + postcss-selector-parser "^7.0.0" + postcss-value-parser "^4.2.0" + +css-loader@^6.11.0: version "6.11.0" resolved "https://registry.yarnpkg.com/css-loader/-/css-loader-6.11.0.tgz#33bae3bf6363d0a7c2cf9031c96c744ff54d85ba" integrity sha512-CTJ+AEQJjq5NzLga5pE39qdiSV56F8ywCIsqNIRF0r7BDgWsN25aazToqAFg7ZrtA/U016xudB3ffgweORxX7g== @@ -3573,6 +5320,11 @@ css-minimizer-webpack-plugin@^5.0.1: schema-utils "^4.0.1" serialize-javascript "^6.0.1" +css-prefers-color-scheme@^10.0.0: + version "10.0.0" + resolved "https://registry.yarnpkg.com/css-prefers-color-scheme/-/css-prefers-color-scheme-10.0.0.tgz#ba001b99b8105b8896ca26fc38309ddb2278bd3c" + integrity sha512-VCtXZAWivRglTZditUfB4StnsWr6YVZ2PRtuxQLKTNRdtAf8tpzaVPE9zXIF3VaSc7O70iK/j1+NXxyQCqdPjQ== + css-select@^4.1.3: version "4.3.0" resolved "https://registry.yarnpkg.com/css-select/-/css-select-4.3.0.tgz#db7129b2846662fd8628cfc496abb2b59e41529b" @@ -3624,6 +5376,11 @@ css-what@^6.0.1, css-what@^6.1.0: resolved "https://registry.yarnpkg.com/css-what/-/css-what-6.1.0.tgz#fb5effcf76f1ddea2c81bdfaa4de44e79bac70f4" integrity sha512-HTUrgRJ7r4dsZKU6GjmpfRK1O76h97Z8MfS1G0FozR+oF2kG6Vfe8JE6zwrkbxigziPHinCJ+gCPjA9EaBDtRw== +cssdb@^8.3.0: + version "8.3.1" + resolved "https://registry.yarnpkg.com/cssdb/-/cssdb-8.3.1.tgz#0ac96395b7092ffee14563e948cf43c2019b051e" + integrity sha512-XnDRQMXucLueX92yDe0LPKupXetWoFOgawr4O4X41l5TltgK2NVbJJVDnnOywDYfW1sTJ28AcXGKOqdRKwCcmQ== + cssesc@^3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/cssesc/-/cssesc-3.0.0.tgz#37741919903b868565e1c09ea747445cd18983ee" @@ -3710,10 +5467,17 @@ cytoscape-cose-bilkent@^4.1.0: dependencies: cose-base "^1.0.0" -cytoscape@^3.28.1: - version "3.30.2" - resolved "https://registry.yarnpkg.com/cytoscape/-/cytoscape-3.30.2.tgz#94149707fb6547a55e3b44f03ffe232706212161" - integrity sha512-oICxQsjW8uSaRmn4UK/jkczKOqTrVqt5/1WL0POiJUT2EKNc9STM4hYFHv917yu55aTBMFNRzymlJhVAiWPCxw== +cytoscape-fcose@^2.2.0: + version "2.2.0" + resolved "https://registry.yarnpkg.com/cytoscape-fcose/-/cytoscape-fcose-2.2.0.tgz#e4d6f6490df4fab58ae9cea9e5c3ab8d7472f471" + integrity sha512-ki1/VuRIHFCzxWNrsshHYPs6L7TvLu3DL+TyIGEsRcvVERmxokbf5Gdk7mFxZnTdiGtnA4cfSmjZJMviqSuZrQ== + dependencies: + cose-base "^2.2.0" + +cytoscape@^3.29.3: + version "3.32.1" + resolved "https://registry.yarnpkg.com/cytoscape/-/cytoscape-3.32.1.tgz#8475a892a43c79a26825b4f16946fa1491020798" + integrity sha512-dbeqFTLYEwlFg7UGtcZhCCG/2WayX72zK3Sq323CEX29CY81tYfVhw1MIdduCtpstB0cTOhJswWlM/OEB3Xp+Q== "d3-array@1 - 2": version "2.12.1" @@ -3950,7 +5714,7 @@ d3-zoom@3: d3-selection "2 - 3" d3-transition "2 - 3" -d3@^7.4.0, d3@^7.8.2: +d3@^7.9.0: version "7.9.0" resolved "https://registry.yarnpkg.com/d3/-/d3-7.9.0.tgz#579e7acb3d749caf8860bd1741ae8d371070cd5d" integrity sha512-e1U46jVP+w7Iut8Jt8ri1YsPOvFpg46k+K8TpCb0P+zjCkjkPnV7WzfDJzMHy1LnA+wj5pLT1wjO901gLXeEhA== @@ -3986,25 +5750,25 @@ d3@^7.4.0, d3@^7.8.2: d3-transition "3" d3-zoom "3" -dagre-d3-es@7.0.10: - version "7.0.10" - resolved "https://registry.yarnpkg.com/dagre-d3-es/-/dagre-d3-es-7.0.10.tgz#19800d4be674379a3cd8c86a8216a2ac6827cadc" - integrity sha512-qTCQmEhcynucuaZgY5/+ti3X/rnszKZhEQH/ZdWdtP1tA/y3VoHJzcVrO9pjjJCNpigfscAtoUB5ONcd2wNn0A== +dagre-d3-es@7.0.11: + version "7.0.11" + resolved "https://registry.yarnpkg.com/dagre-d3-es/-/dagre-d3-es-7.0.11.tgz#2237e726c0577bfe67d1a7cfd2265b9ab2c15c40" + integrity sha512-tvlJLyQf834SylNKax8Wkzco/1ias1OPw8DcUMDE7oUIoSEW25riQVuiu/0OWEFqT0cxHT3Pa9/D82Jr47IONw== dependencies: - d3 "^7.8.2" + d3 "^7.9.0" lodash-es "^4.17.21" -dayjs@^1.11.7: - version "1.11.12" - resolved "https://registry.yarnpkg.com/dayjs/-/dayjs-1.11.12.tgz#5245226cc7f40a15bf52e0b99fd2a04669ccac1d" - integrity sha512-Rt2g+nTbLlDWZTwwrIXjy9MeiZmSDI375FvZs72ngxx8PDC6YXOeR3q5LAuPzjZQxhiWdRKac7RKV+YyQYfYIg== +dayjs@^1.11.13: + version "1.11.13" + resolved "https://registry.yarnpkg.com/dayjs/-/dayjs-1.11.13.tgz#92430b0139055c3ebb60150aa13e860a4b5a366c" + integrity sha512-oaMBel6gjolK862uaPQOVTA7q3TZhuSvuMQAAglQDOWYO9A91IrAOUJEyKVlqJlHE0vq5p5UXxzdPfMH/x6xNg== debounce@^1.2.1: version "1.2.1" resolved "https://registry.yarnpkg.com/debounce/-/debounce-1.2.1.tgz#38881d8f4166a5c5848020c11827b834bcb3e0a5" integrity sha512-XRRe6Glud4rd/ZGQfiV1ruXSfbvfJedlV9Y6zOlP+2K04vBYiJEte6stfFkCP03aMnY5tsipamumUjL14fofug== -debug@2.6.9, debug@^2.6.0: +debug@2.6.9: version "2.6.9" resolved "https://registry.yarnpkg.com/debug/-/debug-2.6.9.tgz#5d128515df134ff327e90a4c93f4e077a536341f" integrity sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA== @@ -4018,6 +5782,13 @@ debug@4, debug@^4.0.0, debug@^4.1.0, debug@^4.1.1, debug@^4.3.1: dependencies: ms "2.1.2" +debug@^4.4.0, debug@^4.4.1: + version "4.4.1" + resolved "https://registry.yarnpkg.com/debug/-/debug-4.4.1.tgz#e5a8bc6cbc4c6cd3e64308b0693a3d4fa550189b" + integrity sha512-KcKCqiftBJcZr++7ykoDIEwSa3XWowTfNPo92BYxjXiyYEVrUQh2aLyhxBCwww+heortUFxEJYcRzosstTEBYQ== + dependencies: + ms "^2.1.3" + decode-named-character-reference@^1.0.0: version "1.0.2" resolved "https://registry.yarnpkg.com/decode-named-character-reference/-/decode-named-character-reference-1.0.2.tgz#daabac9690874c394c81e4162a0304b35d824f0e" @@ -4037,7 +5808,7 @@ deep-extend@^0.6.0: resolved "https://registry.yarnpkg.com/deep-extend/-/deep-extend-0.6.0.tgz#c4fa7c95404a17a9c3e8ca7e1537312b736330ac" integrity sha512-LOHxIOaPYdHlJRtCQfDIVZtfw/ufM8+rVj649RIHzcm/vGwQRXFt6OPqIFWsm2XEMrNIEtWR64sY1LEKD2vAOA== -deepmerge@^4.2.2, deepmerge@^4.3.1: +deepmerge@^4.3.1: version "4.3.1" resolved "https://registry.yarnpkg.com/deepmerge/-/deepmerge-4.3.1.tgz#44b5f2147cd3b00d4b56137685966f26fd25dd4a" integrity sha512-3sUqbMEc77XqpdNO7FRyRog+eW3ph+GYCbj+rK+uYyRMuwsVy0rMiVtPn+QJlKFvWP/1PYpapqYn0Me2knFn+A== @@ -4077,20 +5848,6 @@ define-properties@^1.2.1: has-property-descriptors "^1.0.0" object-keys "^1.1.1" -del@^6.1.1: - version "6.1.1" - resolved "https://registry.yarnpkg.com/del/-/del-6.1.1.tgz#3b70314f1ec0aa325c6b14eb36b95786671edb7a" - integrity sha512-ua8BhapfP0JUJKC/zV9yHHDW/rDoDxP4Zhn3AkA6/xT6gY7jYXJiaeyBZznYVujhZZET+UgcbZiQ7sN3WqcImg== - dependencies: - globby "^11.0.1" - graceful-fs "^4.2.4" - is-glob "^4.0.1" - is-path-cwd "^2.2.0" - is-path-inside "^3.0.2" - p-map "^4.0.0" - rimraf "^3.0.2" - slash "^3.0.0" - delaunator@5: version "5.0.1" resolved "https://registry.yarnpkg.com/delaunator/-/delaunator-5.0.1.tgz#39032b08053923e924d6094fe2cde1a99cc51278" @@ -4123,14 +5880,6 @@ detect-node@^2.0.4: resolved "https://registry.yarnpkg.com/detect-node/-/detect-node-2.1.0.tgz#c9c70775a49c3d03bc2c06d9a73be550f978f8b1" integrity sha512-T0NIuQpnTvFDATNuHN5roPwSBG83rFsuO+MXXH9/3N1eFbn4wcPjttvjMLEPWJ0RGUYgQE7cGgS3tNxbqCGM7g== -detect-port-alt@^1.1.6: - version "1.1.6" - resolved "https://registry.yarnpkg.com/detect-port-alt/-/detect-port-alt-1.1.6.tgz#24707deabe932d4a3cf621302027c2b266568275" - integrity sha512-5tQykt+LqfJFBEYaDITx7S7cR7mJ/zQmLXZ2qt5w04ainYZw6tBf9dBunMjVeVOdYVRUzUOE4HkY5J7+uttb5Q== - dependencies: - address "^1.0.1" - debug "^2.6.0" - detect-port@^1.5.1: version "1.6.1" resolved "https://registry.yarnpkg.com/detect-port/-/detect-port-1.6.1.tgz#45e4073997c5f292b957cb678fb0bb8ed4250a67" @@ -4146,11 +5895,6 @@ devlop@^1.0.0, devlop@^1.1.0: dependencies: dequal "^2.0.0" -diff@^5.0.0: - version "5.2.0" - resolved "https://registry.yarnpkg.com/diff/-/diff-5.2.0.tgz#26ded047cd1179b78b9537d5ef725503ce1ae531" - integrity sha512-uIFDxqpRZGZ6ThOk84hEfqWoHx2devRFvpTZcTHur85vImfaxUbTW9Ryh4CpCuDnToOP1CEtXKIgytHBPVff5A== - dir-glob@^3.0.1: version "3.0.1" resolved "https://registry.yarnpkg.com/dir-glob/-/dir-glob-3.0.1.tgz#56dbf73d992a4a93ba1584f4534063fd2e41717f" @@ -4217,10 +5961,12 @@ domhandler@^5.0.2, domhandler@^5.0.3: dependencies: domelementtype "^2.3.0" -dompurify@^3.0.5: - version "3.1.6" - resolved "https://registry.yarnpkg.com/dompurify/-/dompurify-3.1.6.tgz#43c714a94c6a7b8801850f82e756685300a027e2" - integrity sha512-cTOAhc36AalkjtBpfG6O8JimdTMWNXjiePT2xQH/ppBGi/4uIpmj8eKyIkMJErXWARyINV/sB38yf8JCLF5pbQ== +dompurify@^3.2.5: + version "3.2.6" + resolved "https://registry.yarnpkg.com/dompurify/-/dompurify-3.2.6.tgz#ca040a6ad2b88e2a92dc45f38c79f84a714a1cad" + integrity sha512-/2GogDQlohXPZe6D6NOgQvXLPSYBqIWMnZ8zzOhn09REE4eyAzb+Hed3jhoM9OkuaJ8P6ZGTTVWQKAi8ieIzfQ== + optionalDependencies: + "@types/trusted-types" "^2.0.7" domutils@^2.5.2, domutils@^2.8.0: version "2.8.0" @@ -4270,16 +6016,16 @@ ee-first@1.1.1: resolved "https://registry.yarnpkg.com/ee-first/-/ee-first-1.1.1.tgz#590c61156b0ae2f4f0255732a158b266bc56b21d" integrity sha512-WMwm9LhRUo+WUaRN+vRuETqG89IgZphVSNkdFgeb6sS/E4OrDIN7t48CAewSHXc6C8lefD8KKfr5vY61brQlow== +electron-to-chromium@^1.5.173: + version "1.5.187" + resolved "https://registry.yarnpkg.com/electron-to-chromium/-/electron-to-chromium-1.5.187.tgz#8c58854e065962351dc87e95614dd78d50425966" + integrity sha512-cl5Jc9I0KGUoOoSbxvTywTa40uspGJt/BDBoDLoxJRSBpWh4FFXBsjNRHfQrONsV/OoEjDfHUmZQa2d6Ze4YgA== + electron-to-chromium@^1.5.4: version "1.5.6" resolved "https://registry.yarnpkg.com/electron-to-chromium/-/electron-to-chromium-1.5.6.tgz#c81d9938b5a877314ad370feb73b4e5409b36abd" integrity sha512-jwXWsM5RPf6j9dPYzaorcBSUg6AiqocPEyMpkchkvntaH9HGfOOMZwxMJjDY/XEs3T5dM7uyH1VhRMkqUU9qVw== -elkjs@^0.9.0: - version "0.9.3" - resolved "https://registry.yarnpkg.com/elkjs/-/elkjs-0.9.3.tgz#16711f8ceb09f1b12b99e971b138a8384a529161" - integrity sha512-f/ZeWvW/BCXbhGEf1Ujp29EASo/lk1FDnETgNKwJrsVvGZhUWCZyg3xLJjAsxfOmt8KjswHmI5EwCQcPMpOYhQ== - emoji-regex@^8.0.0: version "8.0.0" resolved "https://registry.yarnpkg.com/emoji-regex/-/emoji-regex-8.0.0.tgz#e818fd69ce5ccfcb404594f842963bf53164cc37" @@ -4318,6 +6064,14 @@ enhanced-resolve@^5.17.0: graceful-fs "^4.2.4" tapable "^2.2.0" +enhanced-resolve@^5.17.2: + version "5.18.2" + resolved "https://registry.yarnpkg.com/enhanced-resolve/-/enhanced-resolve-5.18.2.tgz#7903c5b32ffd4b2143eeb4b92472bd68effd5464" + integrity sha512-6Jw4sE1maoRJo3q8MsSIn2onJFbLTOjY9hlx4DZXmOKvLRd1Ok2kXmAGXaafL2+ijsJZ1ClYbl/pmqr9+k4iUQ== + dependencies: + graceful-fs "^4.2.4" + tapable "^2.2.0" + entities@^2.0.0: version "2.2.0" resolved "https://registry.yarnpkg.com/entities/-/entities-2.2.0.tgz#098dc90ebb83d8dffa089d55256b351d34c4da55" @@ -4357,6 +6111,11 @@ escalade@^3.1.1, escalade@^3.1.2: resolved "https://registry.yarnpkg.com/escalade/-/escalade-3.1.2.tgz#54076e9ab29ea5bf3d8f1ed62acffbb88272df27" integrity sha512-ErCHMCae19vR8vQGe50xIsVomy19rg6gFu3+r3jkEO46suLMWBksvVyoGgQV+jOfl84ZSOSlmv6Gxa89PmTGmA== +escalade@^3.2.0: + version "3.2.0" + resolved "https://registry.yarnpkg.com/escalade/-/escalade-3.2.0.tgz#011a3f69856ba189dffa7dc8fcce99d2a87903e5" + integrity sha512-WUj2qlxaQtO4g6Pq5c29GTcWGDyd8itL8zTlipgECz3JesAiiOKotd8JU6otB3PACgG6xkJUyVhboMS+bje/jA== + escape-goat@^4.0.0: version "4.0.0" resolved "https://registry.yarnpkg.com/escape-goat/-/escape-goat-4.0.0.tgz#9424820331b510b0666b98f7873fe11ac4aa8081" @@ -4488,7 +6247,7 @@ eval@^0.1.8: "@types/node" "*" require-like ">= 0.1.1" -eventemitter3@^4.0.0: +eventemitter3@^4.0.0, eventemitter3@^4.0.4: version "4.0.7" resolved "https://registry.yarnpkg.com/eventemitter3/-/eventemitter3-4.0.7.tgz#2de9b68f6528d5644ef5c59526a1b4a07306169f" integrity sha512-8guHBZCwKnFhYdHr2ysuRWErTwhoN2X8XELRlrRwpmfeY2jjuUN4taQMsULKUVo1K4DvZl+0pgfyoysHxvmvEw== @@ -4498,7 +6257,7 @@ events@^3.2.0: resolved "https://registry.yarnpkg.com/events/-/events-3.3.0.tgz#31a95ad0a924e2d2c419a813aeb2c4e878ea7400" integrity sha512-mQw+2fkQbALzQ7V0MY0IqdnXNOeTtP4r0lN9z7AAawCXgqea7bDii20AYrIBrFd/Hx0M2Ocz6S111CaFkUcb0Q== -execa@^5.0.0: +execa@5.1.1, execa@^5.0.0: version "5.1.1" resolved "https://registry.yarnpkg.com/execa/-/execa-5.1.1.tgz#f80ad9cbf4298f7bd1d4c9555c21e93741c411dd" integrity sha512-8uSpZZocAZRBAPIEINJj3Lo9HyGitllczc27Eh5YYojjMFMn8yHMDMaUHE2Jqfq05D/wucwI4JGURyXt1vchyg== @@ -4550,6 +6309,11 @@ express@^4.17.3: utils-merge "1.0.1" vary "~1.1.2" +exsolve@^1.0.7: + version "1.0.7" + resolved "https://registry.yarnpkg.com/exsolve/-/exsolve-1.0.7.tgz#3b74e4c7ca5c5f9a19c3626ca857309fa99f9e9e" + integrity sha512-VO5fQUzZtI6C+vx4w/4BWJpg3s/5l+6pRQEHzFRM8WFi4XffSP1Z+4qi7GbjWbvRQEbdIco5mIMq+zX4rPuLrw== + extend-shallow@^2.0.1: version "2.0.1" resolved "https://registry.yarnpkg.com/extend-shallow/-/extend-shallow-2.0.1.tgz#51af7d614ad9a9f610ea1bafbb989d6b1c56890f" @@ -4588,13 +6352,6 @@ fast-uri@^3.0.1: resolved "https://registry.yarnpkg.com/fast-uri/-/fast-uri-3.0.1.tgz#cddd2eecfc83a71c1be2cc2ef2061331be8a7134" integrity sha512-MWipKbbYiYI0UC7cl8m/i/IWTqfC8YXsqjzybjddLsFjStroQzsHXkc73JutMvBiXmOvapk+axIl79ig5t55Bw== -fast-url-parser@1.1.3: - version "1.1.3" - resolved "https://registry.yarnpkg.com/fast-url-parser/-/fast-url-parser-1.1.3.tgz#f4af3ea9f34d8a271cf58ad2b3759f431f0b318d" - integrity sha512-5jOCVXADYNuRkKFzNJ0dCCewsZiYo0dz8QNYljkOpFC6r2U4OBmKtvm/Tsuh4w1YYdDqDb31a8TVhBJ2OJKdqQ== - dependencies: - punycode "^1.3.2" - fastq@^1.6.0: version "1.17.1" resolved "https://registry.yarnpkg.com/fastq/-/fastq-1.17.1.tgz#2a523f07a4e7b1e81a42b91b8bf2254107753b47" @@ -4623,6 +6380,13 @@ feed@^4.2.2: dependencies: xml-js "^1.6.11" +figures@^3.2.0: + version "3.2.0" + resolved "https://registry.yarnpkg.com/figures/-/figures-3.2.0.tgz#625c18bd293c604dc4a8ddb2febf0c88341746af" + integrity sha512-yaduQFRKLXYOGgEn6AZau90j3ggSOyiqXU0F9JZfeXYhNa+Jk4X+s45A2zg5jns87GAFa34BBm2kXw4XpNcbdg== + dependencies: + escape-string-regexp "^1.0.5" + file-loader@^6.2.0: version "6.2.0" resolved "https://registry.yarnpkg.com/file-loader/-/file-loader-6.2.0.tgz#baef7cf8e1840df325e4390b4484879480eebe4d" @@ -4631,11 +6395,6 @@ file-loader@^6.2.0: loader-utils "^2.0.0" schema-utils "^3.0.0" -filesize@^8.0.6: - version "8.0.7" - resolved "https://registry.yarnpkg.com/filesize/-/filesize-8.0.7.tgz#695e70d80f4e47012c132d57a059e80c6b580bd8" - integrity sha512-pjmC+bkIF8XI7fWaH8KxHcZL3DPybs1roSKP4rKDvy20tAWwIObE4+JIseG2byfGKhud5ZnM4YSGKBz7Sh0ndQ== - fill-range@^7.1.1: version "7.1.1" resolved "https://registry.yarnpkg.com/fill-range/-/fill-range-7.1.1.tgz#44265d3cac07e3ea7dc247516380643754a05292" @@ -4669,21 +6428,6 @@ find-root@^1.1.0: resolved "https://registry.yarnpkg.com/find-root/-/find-root-1.1.0.tgz#abcfc8ba76f708c42a97b3d685b7e9450bfb9ce4" integrity sha512-NKfW6bec6GfKc0SGx1e07QZY9PE99u0Bft/0rzSD5k3sO/vwkVUpDUKVm5Gpp5Ue3YfShPFTX2070tDs5kB9Ng== -find-up@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/find-up/-/find-up-3.0.0.tgz#49169f1d7993430646da61ecc5ae355c21c97b73" - integrity sha512-1yD6RmLI1XBfxugvORwlck6f75tYL+iR0jqwsOrOxMZyGYqUuDhJ0l4AXdO1iX/FTs9cBAMEk1gWSEx1kSbylg== - dependencies: - locate-path "^3.0.0" - -find-up@^5.0.0: - version "5.0.0" - resolved "https://registry.yarnpkg.com/find-up/-/find-up-5.0.0.tgz#4c92819ecb7083561e4f4a240a86be5198f536fc" - integrity sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng== - dependencies: - locate-path "^6.0.0" - path-exists "^4.0.0" - find-up@^6.3.0: version "6.3.0" resolved "https://registry.yarnpkg.com/find-up/-/find-up-6.3.0.tgz#2abab3d3280b2dc7ac10199ef324c4e002c8c790" @@ -4702,25 +6446,6 @@ follow-redirects@^1.0.0: resolved "https://registry.yarnpkg.com/follow-redirects/-/follow-redirects-1.15.6.tgz#7f815c0cda4249c74ff09e95ef97c23b5fd0399b" integrity sha512-wWN62YITEaOpSK584EZXJafH1AGpO8RVgElfkuXbTOrPX4fIfOyEpW/CsiNd8JdYrAoOvafRTOEnvsO++qCqFA== -fork-ts-checker-webpack-plugin@^6.5.0: - version "6.5.3" - resolved "https://registry.yarnpkg.com/fork-ts-checker-webpack-plugin/-/fork-ts-checker-webpack-plugin-6.5.3.tgz#eda2eff6e22476a2688d10661688c47f611b37f3" - integrity sha512-SbH/l9ikmMWycd5puHJKTkZJKddF4iRLyW3DeZ08HTI7NGyLS38MXd/KGgeWumQO7YNQbW2u/NtPT2YowbPaGQ== - dependencies: - "@babel/code-frame" "^7.8.3" - "@types/json-schema" "^7.0.5" - chalk "^4.1.0" - chokidar "^3.4.2" - cosmiconfig "^6.0.0" - deepmerge "^4.2.2" - fs-extra "^9.0.0" - glob "^7.1.6" - memfs "^3.1.2" - minimatch "^3.0.4" - schema-utils "2.7.0" - semver "^7.3.2" - tapable "^1.0.0" - form-data-encoder@^2.1.2: version "2.1.4" resolved "https://registry.yarnpkg.com/form-data-encoder/-/form-data-encoder-2.1.4.tgz#261ea35d2a70d48d30ec7a9603130fa5515e9cd5" @@ -4755,16 +6480,6 @@ fs-extra@^11.1.1, fs-extra@^11.2.0: jsonfile "^6.0.1" universalify "^2.0.0" -fs-extra@^9.0.0: - version "9.1.0" - resolved "https://registry.yarnpkg.com/fs-extra/-/fs-extra-9.1.0.tgz#5954460c764a8da2094ba3554bf839e6b9a7c86d" - integrity sha512-hcg3ZmepS30/7BSFqRvoo3DOMQu7IjqxO5nCDt+zM9XWjb33Wg7ziNT+Qvqbuc3+gWpzO02JubVyk2G4Zvo1OQ== - dependencies: - at-least-node "^1.0.0" - graceful-fs "^4.2.0" - jsonfile "^6.0.1" - universalify "^2.0.0" - fs-monkey@^1.0.4: version "1.0.6" resolved "https://registry.yarnpkg.com/fs-monkey/-/fs-monkey-1.0.6.tgz#8ead082953e88d992cf3ff844faa907b26756da2" @@ -4835,7 +6550,7 @@ glob-to-regexp@^0.4.1: resolved "https://registry.yarnpkg.com/glob-to-regexp/-/glob-to-regexp-0.4.1.tgz#c75297087c851b9a578bd217dd59a92f59fe546e" integrity sha512-lkX1HJXwyMcprw/5YUZc2s7DrpAiHB21/V+E1rHUrVNokkvB6bqMzT0VfV6/86ZNabt1k14YOIaT7nDvOX3Iiw== -glob@^7.0.0, glob@^7.1.3, glob@^7.1.6: +glob@^7.1.3: version "7.2.3" resolved "https://registry.yarnpkg.com/glob/-/glob-7.2.3.tgz#b8df0fb802bbfa8e89bd1d938b4e16578ed44f2b" integrity sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q== @@ -4854,28 +6569,17 @@ global-dirs@^3.0.0: dependencies: ini "2.0.0" -global-modules@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/global-modules/-/global-modules-2.0.0.tgz#997605ad2345f27f51539bea26574421215c7780" - integrity sha512-NGbfmJBp9x8IxyJSd1P+otYK8vonoJactOogrVfFRIAEY1ukil8RSKDz2Yo7wh1oihl51l/r6W4epkeKJHqL8A== - dependencies: - global-prefix "^3.0.0" - -global-prefix@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/global-prefix/-/global-prefix-3.0.0.tgz#fc85f73064df69f50421f47f883fe5b913ba9b97" - integrity sha512-awConJSVCHVGND6x3tmMaKcQvwXLhjdkmomy2W+Goaui8YPgYgXJZewhg3fWC+DlfqqQuWg8AwqjGTD2nAPVWg== - dependencies: - ini "^1.3.5" - kind-of "^6.0.2" - which "^1.3.1" - globals@^11.1.0: version "11.12.0" resolved "https://registry.yarnpkg.com/globals/-/globals-11.12.0.tgz#ab8795338868a0babd8525758018c2a7eb95c42e" integrity sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA== -globby@^11.0.1, globby@^11.0.4, globby@^11.1.0: +globals@^15.14.0: + version "15.15.0" + resolved "https://registry.yarnpkg.com/globals/-/globals-15.15.0.tgz#7c4761299d41c32b075715a4ce1ede7897ff72a8" + integrity sha512-7ACyT3wmyp3I61S4fG682L0VA2RGD9otkqGJIwNUMF1SWUombIIk+af1unuDYgMm082aHYwD+mzJvv9Iu8dsgg== + +globby@^11.1.0: version "11.1.0" resolved "https://registry.yarnpkg.com/globby/-/globby-11.1.0.tgz#bd4be98bb042f83d796f7e3811991fbe82a0d34b" integrity sha512-jhIXaOzy1sb8IyocaruWSn1TjmnBVs8Ayhcy83rmxNJ8q2uWKCAj3CnJY+KpGSXCueAPc0i05kVvVKtP1t9S3g== @@ -4949,6 +6653,11 @@ gzip-size@^6.0.0: dependencies: duplexer "^0.1.2" +hachure-fill@^0.5.2: + version "0.5.2" + resolved "https://registry.yarnpkg.com/hachure-fill/-/hachure-fill-0.5.2.tgz#d19bc4cc8750a5962b47fb1300557a85fcf934cc" + integrity sha512-3GKBOn+m2LX9iq+JC1064cSFprJY4jL1jCXTcpnfER5HYE2l/4EfWSGzkPa/ZDBmYI0ZOEj5VHV/eKnPGkHuOg== + handle-thing@^2.0.0: version "2.0.1" resolved "https://registry.yarnpkg.com/handle-thing/-/handle-thing-2.0.1.tgz#857f79ce359580c340d43081cc648970d0bb234e" @@ -5187,10 +6896,10 @@ html-void-elements@^3.0.0: resolved "https://registry.yarnpkg.com/html-void-elements/-/html-void-elements-3.0.0.tgz#fc9dbd84af9e747249034d4d62602def6517f1d7" integrity sha512-bEqo66MRXsUGxWHV5IP0PUiAWwoEjba4VCzg0LjFJBpchPaTfyfCKTG6bc5F8ucKec3q5y6qOdGyYTSBEvhCrg== -html-webpack-plugin@^5.5.3: - version "5.6.0" - resolved "https://registry.yarnpkg.com/html-webpack-plugin/-/html-webpack-plugin-5.6.0.tgz#50a8fa6709245608cb00e811eacecb8e0d7b7ea0" - integrity sha512-iwaY4wzbe48AfKLZ/Cc8k0L+FKG6oSNRaZ8x5A/T/IVDGyXcbHncM9TdDa93wn0FsSm82FhTKW7f3vS61thXAw== +html-webpack-plugin@^5.6.0: + version "5.6.3" + resolved "https://registry.yarnpkg.com/html-webpack-plugin/-/html-webpack-plugin-5.6.3.tgz#a31145f0fee4184d53a794f9513147df1e653685" + integrity sha512-QSf1yjtSAsmf7rYBV7XX86uua4W/vkhIt0xNXKbsi2foEeW7vjJQz4bhnpL3xH+l1ryl1680uNv968Z+X6jSYg== dependencies: "@types/html-minifier-terser" "^6.0.0" html-minifier-terser "^6.0.2" @@ -5316,19 +7025,12 @@ ignore@^5.2.0, ignore@^5.2.4: resolved "https://registry.yarnpkg.com/ignore/-/ignore-5.3.1.tgz#5073e554cd42c5b33b394375f538b8593e34d4ef" integrity sha512-5Fytz/IraMjqpwfd34ke28PTVMjZjJG2MPn5t7OE4eUCUNf8BAa7b5WUS9/Qvr6mwOQS7Mk6vdsMno5he+T8Xw== -image-size@^1.0.2: - version "1.1.1" - resolved "https://registry.yarnpkg.com/image-size/-/image-size-1.1.1.tgz#ddd67d4dc340e52ac29ce5f546a09f4e29e840ac" - integrity sha512-541xKlUw6jr/6gGuk92F+mYM5zaFAc5ahphvkqvNe2bQ6gVBkd6bfrmVJ2t4KDAfikAYZyIqTnktX3i6/aQDrQ== - dependencies: - queue "6.0.2" - -immer@^9.0.7: - version "9.0.21" - resolved "https://registry.yarnpkg.com/immer/-/immer-9.0.21.tgz#1e025ea31a40f24fb064f1fef23e931496330176" - integrity sha512-bc4NBHqOqSfRW7POMkHd51LvClaeMXpm8dx0e8oE2GORbq5aRK7Bxl4FyzVLdGtLmvLKL7BTDBG5ACQm4HWjTA== +image-size@^2.0.2: + version "2.0.2" + resolved "https://registry.yarnpkg.com/image-size/-/image-size-2.0.2.tgz#84a7b43704db5736f364bf0d1b029821299b4bdc" + integrity sha512-IRqXKlaXwgSMAMtpNzZa1ZAe8m+Sa1770Dhk8VkSsP9LS+iHD62Zd8FQKs8fbPiagBE7BzoFX23cxFnwshpV6w== -import-fresh@^3.1.0, import-fresh@^3.2.1, import-fresh@^3.3.0: +import-fresh@^3.2.1, import-fresh@^3.3.0: version "3.3.0" resolved "https://registry.yarnpkg.com/import-fresh/-/import-fresh-3.3.0.tgz#37162c25fcb9ebaa2e6e53d5b4d88ce17d9e0c2b" integrity sha512-veYYhQa+D1QBKznvhUHxb8faxlrwUnxseDAbAp457E0wLNio2bOSKnjYDhMj+YiAq61xrMGhQk9iXVk5FzgQMw== @@ -5351,10 +7053,10 @@ indent-string@^4.0.0: resolved "https://registry.yarnpkg.com/indent-string/-/indent-string-4.0.0.tgz#624f8f4497d619b2d9768531d58f4122854d7251" integrity sha512-EdDDZu4A2OyIK7Lr/2zG+w5jmbuk1DVBnEwREQvBzspBJkCEbRa8GxU1lghYcaGJCnRWibjDXlq779X1/y5xwg== -infima@0.2.0-alpha.44: - version "0.2.0-alpha.44" - resolved "https://registry.yarnpkg.com/infima/-/infima-0.2.0-alpha.44.tgz#9cd9446e473b44d49763f48efabe31f32440861d" - integrity sha512-tuRkUSO/lB3rEhLJk25atwAjgLuzq070+pOW8XcvpHky/YbENnRRdPd85IBkyeTgttmOy5ah+yHYsK1HhUd4lQ== +infima@0.2.0-alpha.45: + version "0.2.0-alpha.45" + resolved "https://registry.yarnpkg.com/infima/-/infima-0.2.0-alpha.45.tgz#542aab5a249274d81679631b492973dd2c1e7466" + integrity sha512-uyH0zfr1erU1OohLk0fT4Rrb94AOhguWNOcD9uGrSpRvNB+6gZXUoJX5J0NtvzBO10YZ9PgvA4NFgt+fYg8ojw== inflight@^1.0.4: version "1.0.6" @@ -5379,7 +7081,7 @@ ini@2.0.0: resolved "https://registry.yarnpkg.com/ini/-/ini-2.0.0.tgz#e5fd556ecdd5726be978fa1001862eacb0a94bc5" integrity sha512-7PnF4oN3CvZF23ADhA5wRaYEQpJ8qygSkbtTXWBeXWXmEVRXK+1ITciHWwHhsjv1TmW0MgacIv6hEi5pX5NQdA== -ini@^1.3.4, ini@^1.3.5, ini@~1.3.0: +ini@^1.3.4, ini@~1.3.0: version "1.3.8" resolved "https://registry.yarnpkg.com/ini/-/ini-1.3.8.tgz#a29da425b48806f34767a4efce397269af28432c" integrity sha512-JV/yugV2uzW5iMRSiZAyDtQd+nxtUnjeLt0acNdw98kKLrvuRVyB80tsREOE7yvGVgalhZ6RNXCmEHkUKBKxew== @@ -5404,11 +7106,6 @@ internmap@^1.0.0: resolved "https://registry.yarnpkg.com/internmap/-/internmap-1.0.1.tgz#0017cc8a3b99605f0302f2b198d272e015e5df95" integrity sha512-lDB5YccMydFBtasVtxnZ3MRBHuaoE8GKsppq+EchKL2U4nK/DmEpPHNH8MZe5HkMtpSiTSOZwfN0tzYjO/lJEw== -interpret@^1.0.0: - version "1.4.0" - resolved "https://registry.yarnpkg.com/interpret/-/interpret-1.4.0.tgz#665ab8bc4da27a774a40584e812e3e0fa45b1a1e" - integrity sha512-agE4QfB2Lkp9uICn7BAqoscw4SZP9kTE2hxiFI3jBPmXJfdqiahTbUuKGsMoN2GtqL9AxhYioAcVvgsb1HvRbA== - invariant@^2.2.4: version "2.2.4" resolved "https://registry.yarnpkg.com/invariant/-/invariant-2.2.4.tgz#610f3c92c9359ce1db616e538008d23ff35158e6" @@ -5465,6 +7162,13 @@ is-core-module@^2.13.0: dependencies: hasown "^2.0.2" +is-core-module@^2.16.0: + version "2.16.1" + resolved "https://registry.yarnpkg.com/is-core-module/-/is-core-module-2.16.1.tgz#2a98801a849f43e2add644fbb6bc6229b19a4ef4" + integrity sha512-UfoeMA6fIJ8wTYFEUjelnaGI67v6+N7qXJEvQuIGa99l4xsCruSYOVSQ0uPANn4dAzm8lkYPaKLrrijLq7x23w== + dependencies: + hasown "^2.0.2" + is-decimal@^2.0.0: version "2.0.1" resolved "https://registry.yarnpkg.com/is-decimal/-/is-decimal-2.0.1.tgz#9469d2dc190d0214fd87d78b78caecc0cc14eef7" @@ -5535,11 +7239,6 @@ is-obj@^2.0.0: resolved "https://registry.yarnpkg.com/is-obj/-/is-obj-2.0.0.tgz#473fb05d973705e3fd9620545018ca8e22ef4982" integrity sha512-drqDG3cbczxxEJRoOXcOjtdp1J/lyp1mNn0xaznRs8+muBhgQcrnbspox5X5fOw0HnMnbfDzvnEMEtqDEJEo8w== -is-path-cwd@^2.2.0: - version "2.2.0" - resolved "https://registry.yarnpkg.com/is-path-cwd/-/is-path-cwd-2.2.0.tgz#67d43b82664a7b5191fd9119127eb300048a9fdb" - integrity sha512-w942bTcih8fdJPJmQHFzkS76NEP8Kzzvmw92cXsazb8intwLqPibPPdXf4ANdKV3rYMuuQYGIWtvz9JilB3NFQ== - is-path-inside@^3.0.2: version "3.0.3" resolved "https://registry.yarnpkg.com/is-path-inside/-/is-path-inside-3.0.3.tgz#d231362e53a07ff2b0e0ea7fed049161ffd16283" @@ -5574,11 +7273,6 @@ is-regexp@^1.0.0: resolved "https://registry.yarnpkg.com/is-regexp/-/is-regexp-1.0.0.tgz#fd2d883545c46bac5a633e7b9a09e87fa2cb5069" integrity sha512-7zjFAPO4/gwyQAAgRRmqeEeyIICSdmCqa3tsVHMdBzaXXRiqopZL4Cyghg/XulGWrtABTpbnYYzzIRffLkP4oA== -is-root@^2.1.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/is-root/-/is-root-2.1.0.tgz#809e18129cf1129644302a4f8544035d51984a9c" - integrity sha512-AGOriNp96vNBd3HtU+RzFEc75FfR5ymiYv8E553I71SCeXBiMsVDUtdio1OEFvrPyLIQ9tVR5RxXIFe5PUFjMg== - is-stream@^2.0.0: version "2.0.1" resolved "https://registry.yarnpkg.com/is-stream/-/is-stream-2.0.1.tgz#fac1e3d53b97ad5a9d0ae9cef2389f5810a5c077" @@ -5693,11 +7387,21 @@ jsesc@^2.5.1: resolved "https://registry.yarnpkg.com/jsesc/-/jsesc-2.5.2.tgz#80564d2e483dacf6e8ef209650a67df3f0c283a4" integrity sha512-OYu7XEzjkCQ3C5Ps3QIZsQfNpqoJyZZA99wd9aWd05NCtC5pWOkShK2mkL6HXQR6/Cy2lbNdPlZBpuQHXE63gA== +jsesc@^3.0.2: + version "3.1.0" + resolved "https://registry.yarnpkg.com/jsesc/-/jsesc-3.1.0.tgz#74d335a234f67ed19907fdadfac7ccf9d409825d" + integrity sha512-/sM3dO2FOzXjKQhJuo0Q173wf2KOo8t4I8vHy6lF9poUp7bKT0/NHE8fPX23PwfhnykfqnC2xRxOnVw5XuGIaA== + jsesc@~0.5.0: version "0.5.0" resolved "https://registry.yarnpkg.com/jsesc/-/jsesc-0.5.0.tgz#e7dee66e35d6fc16f710fe91d5cf69f70f08911d" integrity sha512-uZz5UnB7u4T9LvwmFqXii7pZSouaRPorGs5who1Ip7VO0wxanFvBL7GkM6dTHlgX+jhBApRetaWpnDabOeTcnA== +jsesc@~3.0.2: + version "3.0.2" + resolved "https://registry.yarnpkg.com/jsesc/-/jsesc-3.0.2.tgz#bb8b09a6597ba426425f2e4a07245c3d00b9343e" + integrity sha512-xKqzzWXDttJuOcawBt4KnKHHIf5oQ/Cxax+0PWFG+DFDgHNAdi+TXECADI+RYiFUMmx8792xsMbbgXj4CwnP4g== + json-buffer@3.0.1: version "3.0.1" resolved "https://registry.yarnpkg.com/json-buffer/-/json-buffer-3.0.1.tgz#9338802a30d3b6605fbe0613e094008ca8c05a13" @@ -5802,10 +7506,10 @@ jss@10.10.0, jss@^10.10.0: is-in-browser "^1.1.3" tiny-warning "^1.0.2" -katex@^0.16.9: - version "0.16.11" - resolved "https://registry.yarnpkg.com/katex/-/katex-0.16.11.tgz#4bc84d5584f996abece5f01c6ad11304276a33f5" - integrity sha512-RQrI8rlHY92OLf3rho/Ts8i/XvjgguEjOkO1BEXcU3N8BqPpSzBNwV/G0Ukr+P/l3ivvJUE/Fa/CwbS6HesGNQ== +katex@^0.16.22: + version "0.16.22" + resolved "https://registry.yarnpkg.com/katex/-/katex-0.16.22.tgz#d2b3d66464b1e6d69e6463b28a86ced5a02c5ccd" + integrity sha512-XCHRdUw4lf3SKBaJe4EvgqIuWwkPSo9XoeO8GjQW94Bp7TWv9hNhzZjZ+OH9yf1UmLygb7DIT5GSFQiyt16zYg== dependencies: commander "^8.3.0" @@ -5816,7 +7520,7 @@ keyv@^4.5.3: dependencies: json-buffer "3.0.1" -khroma@^2.0.0: +khroma@^2.1.0: version "2.1.0" resolved "https://registry.yarnpkg.com/khroma/-/khroma-2.1.0.tgz#45f2ce94ce231a437cf5b63c2e886e6eb42bbbb1" integrity sha512-Ls993zuzfayK269Svk9hzpeGUKob/sIgZzyHYdjQoAdQetRKpOLj+k/QQQ/6Qi0Yz65mlROrfd+Ev+1+7dz9Kw== @@ -5831,10 +7535,21 @@ kleur@^3.0.3: resolved "https://registry.yarnpkg.com/kleur/-/kleur-3.0.3.tgz#a79c9ecc86ee1ce3fa6206d1216c501f147fc07e" integrity sha512-eTIzlVOSUR+JxdDFepEYcBMtZ9Qqdef+rnzWdRZuMbOywu5tO2w2N7rqjoANZ5k9vywhL6Br1VRjUIgTQx4E8w== -kleur@^4.0.3: - version "4.1.5" - resolved "https://registry.yarnpkg.com/kleur/-/kleur-4.1.5.tgz#95106101795f7050c6c650f350c683febddb1780" - integrity sha512-o+NO+8WrRiQEE4/7nwRJhN1HWpVmJm511pBHUxPLtp0BUISzlBplORYSmTclCnJvQq2tKu/sgl3xVpkc7ZWuQQ== +kolorist@^1.8.0: + version "1.8.0" + resolved "https://registry.yarnpkg.com/kolorist/-/kolorist-1.8.0.tgz#edddbbbc7894bc13302cdf740af6374d4a04743c" + integrity sha512-Y+60/zizpJ3HRH8DCss+q95yr6145JXZo46OTpFvDZWLfRCE4qChOyk1b26nMaNpfHHgxagk9dXT5OP0Tfe+dQ== + +langium@3.3.1: + version "3.3.1" + resolved "https://registry.yarnpkg.com/langium/-/langium-3.3.1.tgz#da745a40d5ad8ee565090fed52eaee643be4e591" + integrity sha512-QJv/h939gDpvT+9SiLVlY7tZC3xB2qK57v0J04Sh9wpMb6MP1q8gB21L3WIo8T5P1MSMg3Ep14L7KkDCFG3y4w== + dependencies: + chevrotain "~11.0.3" + chevrotain-allstar "~0.3.0" + vscode-languageserver "~9.0.1" + vscode-languageserver-textdocument "~1.0.11" + vscode-uri "~3.0.8" latest-version@^7.0.0: version "7.0.0" @@ -5856,6 +7571,11 @@ layout-base@^1.0.0: resolved "https://registry.yarnpkg.com/layout-base/-/layout-base-1.0.2.tgz#1291e296883c322a9dd4c5dd82063721b53e26e2" integrity sha512-8h2oVEZNktL4BH2JCOI90iD1yXwL6iNW7KcCKT2QZgQJR2vbqDsldCTPRU9NifTCqHZci57XvQQ15YTu+sTYPg== +layout-base@^2.0.0: + version "2.0.1" + resolved "https://registry.yarnpkg.com/layout-base/-/layout-base-2.0.1.tgz#d0337913586c90f9c2c075292069f5c2da5dd285" + integrity sha512-dp3s92+uNI1hWIpPGH3jK2kxE2lMjdXdr+DH8ynZHpd6PUlH6x6cbuXnoMmiNumznqaNO31xu9e79F0uuZ0JFg== + leven@^3.1.0: version "3.1.0" resolved "https://registry.yarnpkg.com/leven/-/leven-3.1.0.tgz#77891de834064cccba82ae7842bb6b14a13ed7f2" @@ -5885,25 +7605,14 @@ loader-utils@^2.0.0: emojis-list "^3.0.0" json5 "^2.1.2" -loader-utils@^3.2.0: - version "3.3.1" - resolved "https://registry.yarnpkg.com/loader-utils/-/loader-utils-3.3.1.tgz#735b9a19fd63648ca7adbd31c2327dfe281304e5" - integrity sha512-FMJTLMXfCLMLfJxcX9PFqX5qD88Z5MRGaZCVzfuqeZSPsyiBzs+pahDQjbIWz2QIzPZz0NX9Zy4FX3lmK6YHIg== - -locate-path@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/locate-path/-/locate-path-3.0.0.tgz#dbec3b3ab759758071b58fe59fc41871af21400e" - integrity sha512-7AO748wWnIhNqAuaty2ZWHkQHRSNfPVIsPIfwEOWO22AmaoVrWavlOcMR5nzTLNYvp36X220/maaRsrec1G65A== - dependencies: - p-locate "^3.0.0" - path-exists "^3.0.0" - -locate-path@^6.0.0: - version "6.0.0" - resolved "https://registry.yarnpkg.com/locate-path/-/locate-path-6.0.0.tgz#55321eb309febbc59c4801d931a72452a681d286" - integrity sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw== +local-pkg@^1.0.0: + version "1.1.1" + resolved "https://registry.yarnpkg.com/local-pkg/-/local-pkg-1.1.1.tgz#f5fe74a97a3bd3c165788ee08ca9fbe998dc58dd" + integrity sha512-WunYko2W1NcdfAFpuLUoucsgULmgDBRkdxHxWQ7mK0cQqwPiy8E1enjuRBrhLtZkB5iScJ1XIPdhVEFK8aOLSg== dependencies: - p-locate "^5.0.0" + mlly "^1.7.4" + pkg-types "^2.0.1" + quansync "^0.2.8" locate-path@^7.1.0: version "7.2.0" @@ -5912,7 +7621,7 @@ locate-path@^7.1.0: dependencies: p-locate "^6.0.0" -lodash-es@^4.17.21: +lodash-es@4.17.21, lodash-es@^4.17.21: version "4.17.21" resolved "https://registry.yarnpkg.com/lodash-es/-/lodash-es-4.17.21.tgz#43e626c46e6591b7750beb2b50117390c609e3ee" integrity sha512-mKnC+QJ9pWVzv+C4/U3rRsHapFfHvQFoFB92e52xeyGMcX6/OlIl78je1u8vePzYZSkkogMPJ2yjxxsb89cxyw== @@ -5973,11 +7682,23 @@ markdown-extensions@^2.0.0: resolved "https://registry.yarnpkg.com/markdown-extensions/-/markdown-extensions-2.0.0.tgz#34bebc83e9938cae16e0e017e4a9814a8330d3c4" integrity sha512-o5vL7aDWatOTX8LzaS1WMoaoxIiLRQJuIKKe2wAw6IeULDHaqbiqiggmx+pKvZDb1Sj+pE46Sn1T7lCqfFtg1Q== +markdown-table@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/markdown-table/-/markdown-table-2.0.0.tgz#194a90ced26d31fe753d8b9434430214c011865b" + integrity sha512-Ezda85ToJUBhM6WGaG6veasyym+Tbs3cMAw/ZhOPqXiYsr0jgocBV3j3nx+4lk47plLlIqjwuTm/ywVI+zjJ/A== + dependencies: + repeat-string "^1.0.0" + markdown-table@^3.0.0: version "3.0.3" resolved "https://registry.yarnpkg.com/markdown-table/-/markdown-table-3.0.3.tgz#e6331d30e493127e031dd385488b5bd326e4a6bd" integrity sha512-Z1NL3Tb1M9wH4XESsCDEksWoKTdlUafKc4pt0GRwjUyXaCFZ+dc3g2erqB6zm3szA2IUSi7VnPI+o/9jnxh9hw== +marked@^16.0.0: + version "16.1.1" + resolved "https://registry.yarnpkg.com/marked/-/marked-16.1.1.tgz#a7839dcf19fa5e349cad12c561f231320690acd4" + integrity sha512-ij/2lXfCRT71L6u0M29tJPhP0bM5shLL3u5BePhFwPELj2blMJ6GDtD7PfJhRLhJ/c2UwrK17ySVcDzy2YHjHQ== + mdast-util-directive@^3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/mdast-util-directive/-/mdast-util-directive-3.0.0.tgz#3fb1764e705bbdf0afb0d3f889e4404c3e82561f" @@ -6002,24 +7723,6 @@ mdast-util-find-and-replace@^3.0.0, mdast-util-find-and-replace@^3.0.1: unist-util-is "^6.0.0" unist-util-visit-parents "^6.0.0" -mdast-util-from-markdown@^1.3.0: - version "1.3.1" - resolved "https://registry.yarnpkg.com/mdast-util-from-markdown/-/mdast-util-from-markdown-1.3.1.tgz#9421a5a247f10d31d2faed2a30df5ec89ceafcf0" - integrity sha512-4xTO/M8c82qBcnQc1tgpNtubGUW/Y1tBQ1B0i5CtSoelOLKFYlElIr3bvgREYYO5iRqbMY1YuqZng0GVOI8Qww== - dependencies: - "@types/mdast" "^3.0.0" - "@types/unist" "^2.0.0" - decode-named-character-reference "^1.0.0" - mdast-util-to-string "^3.1.0" - micromark "^3.0.0" - micromark-util-decode-numeric-character-reference "^1.0.0" - micromark-util-decode-string "^1.0.0" - micromark-util-normalize-identifier "^1.0.0" - micromark-util-symbol "^1.0.0" - micromark-util-types "^1.0.0" - unist-util-stringify-position "^3.0.0" - uvu "^0.5.0" - mdast-util-from-markdown@^2.0.0: version "2.0.1" resolved "https://registry.yarnpkg.com/mdast-util-from-markdown/-/mdast-util-from-markdown-2.0.1.tgz#32a6e8f512b416e1f51eb817fc64bd867ebcd9cc" @@ -6206,13 +7909,6 @@ mdast-util-to-markdown@^2.0.0: unist-util-visit "^5.0.0" zwitch "^2.0.0" -mdast-util-to-string@^3.1.0: - version "3.2.0" - resolved "https://registry.yarnpkg.com/mdast-util-to-string/-/mdast-util-to-string-3.2.0.tgz#66f7bb6324756741c5f47a53557f0cbf16b6f789" - integrity sha512-V4Zn/ncyN1QNSqSBxTrMOLpjr+IKdHl2v3KVLoWmDPscP4r9GcCi71gjgvUV1SFSKh92AjAG4peFuBl2/YgCJg== - dependencies: - "@types/mdast" "^3.0.0" - mdast-util-to-string@^4.0.0: version "4.0.0" resolved "https://registry.yarnpkg.com/mdast-util-to-string/-/mdast-util-to-string-4.0.0.tgz#7a5121475556a04e7eddeb67b264aae79d312814" @@ -6235,7 +7931,7 @@ media-typer@0.3.0: resolved "https://registry.yarnpkg.com/media-typer/-/media-typer-0.3.0.tgz#8710d7af0aa626f8fffa1ce00168545263255748" integrity sha512-dq+qelQ9akHpcOl/gUVRTxVIOkAJ1wR3QAvb4RsVjS8oVoFjDGTc679wJYmUmknUF5HwMLOgb5O+a3KxfWapPQ== -memfs@^3.1.2, memfs@^3.4.3: +memfs@^3.4.3: version "3.6.0" resolved "https://registry.yarnpkg.com/memfs/-/memfs-3.6.0.tgz#d7a2110f86f79dd950a8b6df6d57bc984aa185f6" integrity sha512-EGowvkkgbMcIChjMTMkESFDbZeSh8xZ7kNSF0hAiAN4Jh6jgHCRS0Ga/+C8y6Au+oqpezRHCfPsmJ2+DwAgiwQ== @@ -6257,59 +7953,37 @@ merge2@^1.3.0, merge2@^1.4.1: resolved "https://registry.yarnpkg.com/merge2/-/merge2-1.4.1.tgz#4368892f885e907455a6fd7dc55c0c9d404990ae" integrity sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg== -mermaid@^10.4.0: - version "10.9.1" - resolved "https://registry.yarnpkg.com/mermaid/-/mermaid-10.9.1.tgz#5f582c23f3186c46c6aa673e59eeb46d741b2ea6" - integrity sha512-Mx45Obds5W1UkW1nv/7dHRsbfMM1aOKA2+Pxs/IGHNonygDHwmng8xTHyS9z4KWVi0rbko8gjiBmuwwXQ7tiNA== +mermaid@>=11.6.0: + version "11.9.0" + resolved "https://registry.yarnpkg.com/mermaid/-/mermaid-11.9.0.tgz#fdc055d0f2a7f2afc13a78cb3e3c9b1374614e2e" + integrity sha512-YdPXn9slEwO0omQfQIsW6vS84weVQftIyyTGAZCwM//MGhPzL1+l6vO6bkf0wnP4tHigH1alZ5Ooy3HXI2gOag== dependencies: - "@braintree/sanitize-url" "^6.0.1" - "@types/d3-scale" "^4.0.3" - "@types/d3-scale-chromatic" "^3.0.0" - cytoscape "^3.28.1" + "@braintree/sanitize-url" "^7.0.4" + "@iconify/utils" "^2.1.33" + "@mermaid-js/parser" "^0.6.2" + "@types/d3" "^7.4.3" + cytoscape "^3.29.3" cytoscape-cose-bilkent "^4.1.0" - d3 "^7.4.0" + cytoscape-fcose "^2.2.0" + d3 "^7.9.0" d3-sankey "^0.12.3" - dagre-d3-es "7.0.10" - dayjs "^1.11.7" - dompurify "^3.0.5" - elkjs "^0.9.0" - katex "^0.16.9" - khroma "^2.0.0" + dagre-d3-es "7.0.11" + dayjs "^1.11.13" + dompurify "^3.2.5" + katex "^0.16.22" + khroma "^2.1.0" lodash-es "^4.17.21" - mdast-util-from-markdown "^1.3.0" - non-layered-tidy-tree-layout "^2.0.2" - stylis "^4.1.3" + marked "^16.0.0" + roughjs "^4.6.6" + stylis "^4.3.6" ts-dedent "^2.2.0" - uuid "^9.0.0" - web-worker "^1.2.0" + uuid "^11.1.0" methods@~1.1.2: version "1.1.2" resolved "https://registry.yarnpkg.com/methods/-/methods-1.1.2.tgz#5529a4d67654134edcc5266656835b0f851afcee" integrity sha512-iclAHeNqNm68zFtnZ0e+1L2yUIdvzNoauKU4WBA3VvH/vPFieF7qfRlwUZU+DA9P9bPXIS90ulxoUoCH23sV2w== -micromark-core-commonmark@^1.0.1: - version "1.1.0" - resolved "https://registry.yarnpkg.com/micromark-core-commonmark/-/micromark-core-commonmark-1.1.0.tgz#1386628df59946b2d39fb2edfd10f3e8e0a75bb8" - integrity sha512-BgHO1aRbolh2hcrzL2d1La37V0Aoz73ymF8rAcKnohLy93titmv62E0gP8Hrx9PKcKrqCZ1BbLGbP3bEhoXYlw== - dependencies: - decode-named-character-reference "^1.0.0" - micromark-factory-destination "^1.0.0" - micromark-factory-label "^1.0.0" - micromark-factory-space "^1.0.0" - micromark-factory-title "^1.0.0" - micromark-factory-whitespace "^1.0.0" - micromark-util-character "^1.0.0" - micromark-util-chunked "^1.0.0" - micromark-util-classify-character "^1.0.0" - micromark-util-html-tag-name "^1.0.0" - micromark-util-normalize-identifier "^1.0.0" - micromark-util-resolve-all "^1.0.0" - micromark-util-subtokenize "^1.0.0" - micromark-util-symbol "^1.0.0" - micromark-util-types "^1.0.1" - uvu "^0.5.0" - micromark-core-commonmark@^2.0.0: version "2.0.1" resolved "https://registry.yarnpkg.com/micromark-core-commonmark/-/micromark-core-commonmark-2.0.1.tgz#9a45510557d068605c6e9a80f282b2bb8581e43d" @@ -6500,15 +8174,6 @@ micromark-extension-mdxjs@^3.0.0: micromark-util-combine-extensions "^2.0.0" micromark-util-types "^2.0.0" -micromark-factory-destination@^1.0.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/micromark-factory-destination/-/micromark-factory-destination-1.1.0.tgz#eb815957d83e6d44479b3df640f010edad667b9f" - integrity sha512-XaNDROBgx9SgSChd69pjiGKbV+nfHGDPVYFs5dOoDd7ZnMAE+Cuu91BCpsY8RT2NP9vo/B8pds2VQNCLiu0zhg== - dependencies: - micromark-util-character "^1.0.0" - micromark-util-symbol "^1.0.0" - micromark-util-types "^1.0.0" - micromark-factory-destination@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/micromark-factory-destination/-/micromark-factory-destination-2.0.0.tgz#857c94debd2c873cba34e0445ab26b74f6a6ec07" @@ -6518,16 +8183,6 @@ micromark-factory-destination@^2.0.0: micromark-util-symbol "^2.0.0" micromark-util-types "^2.0.0" -micromark-factory-label@^1.0.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/micromark-factory-label/-/micromark-factory-label-1.1.0.tgz#cc95d5478269085cfa2a7282b3de26eb2e2dec68" - integrity sha512-OLtyez4vZo/1NjxGhcpDSbHQ+m0IIGnT8BoPamh+7jVlzLJBH98zzuCoUeMxvM6WsNeh8wx8cKvqLiPHEACn0w== - dependencies: - micromark-util-character "^1.0.0" - micromark-util-symbol "^1.0.0" - micromark-util-types "^1.0.0" - uvu "^0.5.0" - micromark-factory-label@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/micromark-factory-label/-/micromark-factory-label-2.0.0.tgz#17c5c2e66ce39ad6f4fc4cbf40d972f9096f726a" @@ -6568,16 +8223,6 @@ micromark-factory-space@^2.0.0: micromark-util-character "^2.0.0" micromark-util-types "^2.0.0" -micromark-factory-title@^1.0.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/micromark-factory-title/-/micromark-factory-title-1.1.0.tgz#dd0fe951d7a0ac71bdc5ee13e5d1465ad7f50ea1" - integrity sha512-J7n9R3vMmgjDOCY8NPw55jiyaQnH5kBdV2/UXCtZIpnHH3P6nHUKaH7XXEYuWwx/xUJcawa8plLBEjMPU24HzQ== - dependencies: - micromark-factory-space "^1.0.0" - micromark-util-character "^1.0.0" - micromark-util-symbol "^1.0.0" - micromark-util-types "^1.0.0" - micromark-factory-title@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/micromark-factory-title/-/micromark-factory-title-2.0.0.tgz#726140fc77892af524705d689e1cf06c8a83ea95" @@ -6588,16 +8233,6 @@ micromark-factory-title@^2.0.0: micromark-util-symbol "^2.0.0" micromark-util-types "^2.0.0" -micromark-factory-whitespace@^1.0.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/micromark-factory-whitespace/-/micromark-factory-whitespace-1.1.0.tgz#798fb7489f4c8abafa7ca77eed6b5745853c9705" - integrity sha512-v2WlmiymVSp5oMg+1Q0N1Lxmt6pMhIHD457whWM7/GUlEks1hI9xj5w3zbc4uuMKXGisksZk8DzP2UyGbGqNsQ== - dependencies: - micromark-factory-space "^1.0.0" - micromark-util-character "^1.0.0" - micromark-util-symbol "^1.0.0" - micromark-util-types "^1.0.0" - micromark-factory-whitespace@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/micromark-factory-whitespace/-/micromark-factory-whitespace-2.0.0.tgz#9e92eb0f5468083381f923d9653632b3cfb5f763" @@ -6624,13 +8259,6 @@ micromark-util-character@^2.0.0: micromark-util-symbol "^2.0.0" micromark-util-types "^2.0.0" -micromark-util-chunked@^1.0.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/micromark-util-chunked/-/micromark-util-chunked-1.1.0.tgz#37a24d33333c8c69a74ba12a14651fd9ea8a368b" - integrity sha512-Ye01HXpkZPNcV6FiyoW2fGZDUw4Yc7vT0E9Sad83+bEDiCJ1uXu0S3mr8WLpsz3HaG3x2q0HM6CTuPdcZcluFQ== - dependencies: - micromark-util-symbol "^1.0.0" - micromark-util-chunked@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/micromark-util-chunked/-/micromark-util-chunked-2.0.0.tgz#e51f4db85fb203a79dbfef23fd41b2f03dc2ef89" @@ -6638,15 +8266,6 @@ micromark-util-chunked@^2.0.0: dependencies: micromark-util-symbol "^2.0.0" -micromark-util-classify-character@^1.0.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/micromark-util-classify-character/-/micromark-util-classify-character-1.1.0.tgz#6a7f8c8838e8a120c8e3c4f2ae97a2bff9190e9d" - integrity sha512-SL0wLxtKSnklKSUplok1WQFoGhUdWYKggKUiqhX+Swala+BtptGCu5iPRc+xvzJ4PXE/hwM3FNXsfEVgoZsWbw== - dependencies: - micromark-util-character "^1.0.0" - micromark-util-symbol "^1.0.0" - micromark-util-types "^1.0.0" - micromark-util-classify-character@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/micromark-util-classify-character/-/micromark-util-classify-character-2.0.0.tgz#8c7537c20d0750b12df31f86e976d1d951165f34" @@ -6656,14 +8275,6 @@ micromark-util-classify-character@^2.0.0: micromark-util-symbol "^2.0.0" micromark-util-types "^2.0.0" -micromark-util-combine-extensions@^1.0.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/micromark-util-combine-extensions/-/micromark-util-combine-extensions-1.1.0.tgz#192e2b3d6567660a85f735e54d8ea6e3952dbe84" - integrity sha512-Q20sp4mfNf9yEqDL50WwuWZHUrCO4fEyeDCnMGmG5Pr0Cz15Uo7KBs6jq+dq0EgX4DPwwrh9m0X+zPV1ypFvUA== - dependencies: - micromark-util-chunked "^1.0.0" - micromark-util-types "^1.0.0" - micromark-util-combine-extensions@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/micromark-util-combine-extensions/-/micromark-util-combine-extensions-2.0.0.tgz#75d6ab65c58b7403616db8d6b31315013bfb7ee5" @@ -6672,13 +8283,6 @@ micromark-util-combine-extensions@^2.0.0: micromark-util-chunked "^2.0.0" micromark-util-types "^2.0.0" -micromark-util-decode-numeric-character-reference@^1.0.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/micromark-util-decode-numeric-character-reference/-/micromark-util-decode-numeric-character-reference-1.1.0.tgz#b1e6e17009b1f20bc652a521309c5f22c85eb1c6" - integrity sha512-m9V0ExGv0jB1OT21mrWcuf4QhP46pH1KkfWy9ZEezqHKAxkj4mPCy3nIH1rkbdMlChLHX531eOrymlwyZIf2iw== - dependencies: - micromark-util-symbol "^1.0.0" - micromark-util-decode-numeric-character-reference@^2.0.0: version "2.0.1" resolved "https://registry.yarnpkg.com/micromark-util-decode-numeric-character-reference/-/micromark-util-decode-numeric-character-reference-2.0.1.tgz#2698bbb38f2a9ba6310e359f99fcb2b35a0d2bd5" @@ -6686,16 +8290,6 @@ micromark-util-decode-numeric-character-reference@^2.0.0: dependencies: micromark-util-symbol "^2.0.0" -micromark-util-decode-string@^1.0.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/micromark-util-decode-string/-/micromark-util-decode-string-1.1.0.tgz#dc12b078cba7a3ff690d0203f95b5d5537f2809c" - integrity sha512-YphLGCK8gM1tG1bd54azwyrQRjCFcmgj2S2GoJDNnh4vYtnL38JS8M4gpxzOPNyHdNEpheyWXCTnnTDY3N+NVQ== - dependencies: - decode-named-character-reference "^1.0.0" - micromark-util-character "^1.0.0" - micromark-util-decode-numeric-character-reference "^1.0.0" - micromark-util-symbol "^1.0.0" - micromark-util-decode-string@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/micromark-util-decode-string/-/micromark-util-decode-string-2.0.0.tgz#7dfa3a63c45aecaa17824e656bcdb01f9737154a" @@ -6706,11 +8300,6 @@ micromark-util-decode-string@^2.0.0: micromark-util-decode-numeric-character-reference "^2.0.0" micromark-util-symbol "^2.0.0" -micromark-util-encode@^1.0.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/micromark-util-encode/-/micromark-util-encode-1.1.0.tgz#92e4f565fd4ccb19e0dcae1afab9a173bbeb19a5" - integrity sha512-EuEzTWSTAj9PA5GOAs992GzNh2dGQO52UvAbtSOMvXTxv3Criqb6IOzJUBCmEqrrXSblJIJBbFFv6zPxpreiJw== - micromark-util-encode@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/micromark-util-encode/-/micromark-util-encode-2.0.0.tgz#0921ac7953dc3f1fd281e3d1932decfdb9382ab1" @@ -6730,23 +8319,11 @@ micromark-util-events-to-acorn@^2.0.0: micromark-util-types "^2.0.0" vfile-message "^4.0.0" -micromark-util-html-tag-name@^1.0.0: - version "1.2.0" - resolved "https://registry.yarnpkg.com/micromark-util-html-tag-name/-/micromark-util-html-tag-name-1.2.0.tgz#48fd7a25826f29d2f71479d3b4e83e94829b3588" - integrity sha512-VTQzcuQgFUD7yYztuQFKXT49KghjtETQ+Wv/zUjGSGBioZnkA4P1XXZPT1FHeJA6RwRXSF47yvJ1tsJdoxwO+Q== - micromark-util-html-tag-name@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/micromark-util-html-tag-name/-/micromark-util-html-tag-name-2.0.0.tgz#ae34b01cbe063363847670284c6255bb12138ec4" integrity sha512-xNn4Pqkj2puRhKdKTm8t1YHC/BAjx6CEwRFXntTaRf/x16aqka6ouVoutm+QdkISTlT7e2zU7U4ZdlDLJd2Mcw== -micromark-util-normalize-identifier@^1.0.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/micromark-util-normalize-identifier/-/micromark-util-normalize-identifier-1.1.0.tgz#7a73f824eb9f10d442b4d7f120fecb9b38ebf8b7" - integrity sha512-N+w5vhqrBihhjdpM8+5Xsxy71QWqGn7HYNUvch71iV2PM7+E3uWGox1Qp90loa1ephtCxG2ftRV/Conitc6P2Q== - dependencies: - micromark-util-symbol "^1.0.0" - micromark-util-normalize-identifier@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/micromark-util-normalize-identifier/-/micromark-util-normalize-identifier-2.0.0.tgz#91f9a4e65fe66cc80c53b35b0254ad67aa431d8b" @@ -6754,13 +8331,6 @@ micromark-util-normalize-identifier@^2.0.0: dependencies: micromark-util-symbol "^2.0.0" -micromark-util-resolve-all@^1.0.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/micromark-util-resolve-all/-/micromark-util-resolve-all-1.1.0.tgz#4652a591ee8c8fa06714c9b54cd6c8e693671188" - integrity sha512-b/G6BTMSg+bX+xVCshPTPyAu2tmA0E4X98NSR7eIbeC6ycCqCeE7wjfDIgzEbkzdEVJXRtOG4FbEm/uGbCRouA== - dependencies: - micromark-util-types "^1.0.0" - micromark-util-resolve-all@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/micromark-util-resolve-all/-/micromark-util-resolve-all-2.0.0.tgz#189656e7e1a53d0c86a38a652b284a252389f364" @@ -6768,15 +8338,6 @@ micromark-util-resolve-all@^2.0.0: dependencies: micromark-util-types "^2.0.0" -micromark-util-sanitize-uri@^1.0.0: - version "1.2.0" - resolved "https://registry.yarnpkg.com/micromark-util-sanitize-uri/-/micromark-util-sanitize-uri-1.2.0.tgz#613f738e4400c6eedbc53590c67b197e30d7f90d" - integrity sha512-QO4GXv0XZfWey4pYFndLUKEAktKkG5kZTdUNaTAkzbuJxn2tNBOr+QtxR2XpWaMhbImT2dPzyLrPXLlPhph34A== - dependencies: - micromark-util-character "^1.0.0" - micromark-util-encode "^1.0.0" - micromark-util-symbol "^1.0.0" - micromark-util-sanitize-uri@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/micromark-util-sanitize-uri/-/micromark-util-sanitize-uri-2.0.0.tgz#ec8fbf0258e9e6d8f13d9e4770f9be64342673de" @@ -6786,16 +8347,6 @@ micromark-util-sanitize-uri@^2.0.0: micromark-util-encode "^2.0.0" micromark-util-symbol "^2.0.0" -micromark-util-subtokenize@^1.0.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/micromark-util-subtokenize/-/micromark-util-subtokenize-1.1.0.tgz#941c74f93a93eaf687b9054aeb94642b0e92edb1" - integrity sha512-kUQHyzRoxvZO2PuLzMt2P/dwVsTiivCK8icYTeR+3WgbuPqfHgPPy7nFKbeqRivBvn/3N3GBiNC+JRTMSxEC7A== - dependencies: - micromark-util-chunked "^1.0.0" - micromark-util-symbol "^1.0.0" - micromark-util-types "^1.0.0" - uvu "^0.5.0" - micromark-util-subtokenize@^2.0.0: version "2.0.1" resolved "https://registry.yarnpkg.com/micromark-util-subtokenize/-/micromark-util-subtokenize-2.0.1.tgz#76129c49ac65da6e479c09d0ec4b5f29ec6eace5" @@ -6816,7 +8367,7 @@ micromark-util-symbol@^2.0.0: resolved "https://registry.yarnpkg.com/micromark-util-symbol/-/micromark-util-symbol-2.0.0.tgz#12225c8f95edf8b17254e47080ce0862d5db8044" integrity sha512-8JZt9ElZ5kyTnO94muPxIGS8oyElRJaiJO8EzV6ZSyGQ1Is8xwl4Q45qU5UOg+bGH4AikWziz0iN4sFLWs8PGw== -micromark-util-types@^1.0.0, micromark-util-types@^1.0.1: +micromark-util-types@^1.0.0: version "1.1.0" resolved "https://registry.yarnpkg.com/micromark-util-types/-/micromark-util-types-1.1.0.tgz#e6676a8cae0bb86a2171c498167971886cb7e283" integrity sha512-ukRBgie8TIAcacscVHSiddHjO4k/q3pnedmzMQ4iwDcK0FtFCohKOlFbaOL/mPgfnPsL3C1ZyxJa4sbWrBl3jg== @@ -6826,29 +8377,6 @@ micromark-util-types@^2.0.0: resolved "https://registry.yarnpkg.com/micromark-util-types/-/micromark-util-types-2.0.0.tgz#63b4b7ffeb35d3ecf50d1ca20e68fc7caa36d95e" integrity sha512-oNh6S2WMHWRZrmutsRmDDfkzKtxF+bc2VxLC9dvtrDIRFln627VsFP6fLMgTryGDljgLPjkrzQSDcPrjPyDJ5w== -micromark@^3.0.0: - version "3.2.0" - resolved "https://registry.yarnpkg.com/micromark/-/micromark-3.2.0.tgz#1af9fef3f995ea1ea4ac9c7e2f19c48fd5c006e9" - integrity sha512-uD66tJj54JLYq0De10AhWycZWGQNUvDI55xPgk2sQM5kn1JYlhbCMTtEeT27+vAhW2FBQxLlOmS3pmA7/2z4aA== - dependencies: - "@types/debug" "^4.0.0" - debug "^4.0.0" - decode-named-character-reference "^1.0.0" - micromark-core-commonmark "^1.0.1" - micromark-factory-space "^1.0.0" - micromark-util-character "^1.0.0" - micromark-util-chunked "^1.0.0" - micromark-util-combine-extensions "^1.0.0" - micromark-util-decode-numeric-character-reference "^1.0.0" - micromark-util-encode "^1.0.0" - micromark-util-normalize-identifier "^1.0.0" - micromark-util-resolve-all "^1.0.0" - micromark-util-sanitize-uri "^1.0.0" - micromark-util-subtokenize "^1.0.0" - micromark-util-symbol "^1.0.0" - micromark-util-types "^1.0.1" - uvu "^0.5.0" - micromark@^4.0.0: version "4.0.0" resolved "https://registry.yarnpkg.com/micromark/-/micromark-4.0.0.tgz#84746a249ebd904d9658cfabc1e8e5f32cbc6249" @@ -6929,10 +8457,10 @@ mimic-response@^4.0.0: resolved "https://registry.yarnpkg.com/mimic-response/-/mimic-response-4.0.0.tgz#35468b19e7c75d10f5165ea25e75a5ceea7cf70f" integrity sha512-e5ISH9xMYU0DzrT+jl8q2ze9D6eWBto+I8CNpe+VI+K2J/F/k3PdkdTdz4wvGVH4NTpo+NRYTVIuMQEMMcsLqg== -mini-css-extract-plugin@^2.7.6: - version "2.9.0" - resolved "https://registry.yarnpkg.com/mini-css-extract-plugin/-/mini-css-extract-plugin-2.9.0.tgz#c73a1327ccf466f69026ac22a8e8fd707b78a235" - integrity sha512-Zs1YsZVfemekSZG+44vBsYTLQORkPMwnlv+aehcxK/NLKC+EGhDB39/YePYYqx/sTk6NnYpuqikhSn7+JIevTA== +mini-css-extract-plugin@^2.9.2: + version "2.9.2" + resolved "https://registry.yarnpkg.com/mini-css-extract-plugin/-/mini-css-extract-plugin-2.9.2.tgz#966031b468917a5446f4c24a80854b2947503c5b" + integrity sha512-GJuACcS//jtq4kCtd5ii/M0SZf7OZRH+BxdqXZHaJfb8TJiVl+NgQRPwiYt2EuqeSkNydn/7vP+bcE27C5mb9w== dependencies: schema-utils "^4.0.0" tapable "^2.2.1" @@ -6942,7 +8470,7 @@ minimalistic-assert@^1.0.0: resolved "https://registry.yarnpkg.com/minimalistic-assert/-/minimalistic-assert-1.0.1.tgz#2e194de044626d4a10e7f7fbc00ce73e83e4d5c7" integrity sha512-UtJcAD4yEaGtjPezWuO9wC4nwUnVH/8/Im3yEHQP4b67cXlD/Qr9hdITCU1xDbSEXg2XKNaP8jsReV7vQd00/A== -minimatch@3.1.2, minimatch@^3.0.4, minimatch@^3.0.5, minimatch@^3.1.1: +minimatch@3.1.2, minimatch@^3.1.1: version "3.1.2" resolved "https://registry.yarnpkg.com/minimatch/-/minimatch-3.1.2.tgz#19cd194bfd3e428f049a70817c038d89ab4be35b" integrity sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw== @@ -6954,10 +8482,15 @@ minimist@^1.2.0: resolved "https://registry.yarnpkg.com/minimist/-/minimist-1.2.8.tgz#c1a464e7693302e082a075cee0c057741ac4772c" integrity sha512-2yyAR8qBkN3YuheJanUpWC5U3bb5osDywNB8RzDVlDwDHbocAJveqqj1u8+SVD7jkWT4yvsHCpWqqWqAxb0zCA== -mri@^1.1.0: - version "1.2.0" - resolved "https://registry.yarnpkg.com/mri/-/mri-1.2.0.tgz#6721480fec2a11a4889861115a48b6cbe7cc8f0b" - integrity sha512-tzzskb3bG8LvYGFF/mDTpq3jpI6Q9wc3LEmBaghu+DdCssd1FakN7Bc0hVNmEyGq1bq3RgfkCb3cmQLpNPOroA== +mlly@^1.7.4: + version "1.7.4" + resolved "https://registry.yarnpkg.com/mlly/-/mlly-1.7.4.tgz#3d7295ea2358ec7a271eaa5d000a0f84febe100f" + integrity sha512-qmdSIPC4bDJXgZTCR7XosJiNKySV7O215tsPtDN9iEO/7q/76b/ijtgRu/+epFXSJhijtTCCGp3DWS549P3xKw== + dependencies: + acorn "^8.14.0" + pathe "^2.0.1" + pkg-types "^1.3.0" + ufo "^1.5.4" mrmime@^2.0.0: version "2.0.0" @@ -6974,7 +8507,7 @@ ms@2.1.2: resolved "https://registry.yarnpkg.com/ms/-/ms-2.1.2.tgz#d09d1f357b443f493382a8eb3ccd183872ae6009" integrity sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w== -ms@2.1.3: +ms@2.1.3, ms@^2.1.3: version "2.1.3" resolved "https://registry.yarnpkg.com/ms/-/ms-2.1.3.tgz#574c8138ce1d2b5861f0b44579dbadd60c6615b2" integrity sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA== @@ -6987,6 +8520,11 @@ multicast-dns@^7.2.5: dns-packet "^5.2.2" thunky "^1.0.2" +nanoid@^3.3.11: + version "3.3.11" + resolved "https://registry.yarnpkg.com/nanoid/-/nanoid-3.3.11.tgz#4f4f112cefbe303202f2199838128936266d185b" + integrity sha512-N8SpfPUnUp1bK+PMYW8qSWdl9U+wwNWI4QKxOYDy9JAro3WMX7p2OeVRF9v+347pnakNevPmiHhNmZ2HbFA76w== + nanoid@^3.3.7: version "3.3.7" resolved "https://registry.yarnpkg.com/nanoid/-/nanoid-3.3.7.tgz#d0c301a691bc8d54efa0a2226ccf3fe2fd656bd8" @@ -7030,10 +8568,10 @@ node-releases@^2.0.18: resolved "https://registry.yarnpkg.com/node-releases/-/node-releases-2.0.18.tgz#f010e8d35e2fe8d6b2944f03f70213ecedc4ca3f" integrity sha512-d9VeXT4SJ7ZeOqGX6R5EM022wpL+eWPooLI+5UpWn2jCT1aosUQEhQP214x33Wkwx3JQMvIm+tIoVOdodFS40g== -non-layered-tidy-tree-layout@^2.0.2: - version "2.0.2" - resolved "https://registry.yarnpkg.com/non-layered-tidy-tree-layout/-/non-layered-tidy-tree-layout-2.0.2.tgz#57d35d13c356643fc296a55fb11ac15e74da7804" - integrity sha512-gkXMxRzUH+PB0ax9dUN0yYF0S25BqeAYqhgMaLUFmpXLEk7Fcu8f4emJuOAY0V8kjDICxROIKsTAKsV/v355xw== +node-releases@^2.0.19: + version "2.0.19" + resolved "https://registry.yarnpkg.com/node-releases/-/node-releases-2.0.19.tgz#9e445a52950951ec4d177d843af370b411caf314" + integrity sha512-xxOWJsBKtzAq7DY0J+DTzuz58K8e7sJbdgwkbMWQe8UYB6ekmsQ45q0M/tJDsGaZmbC+l7n57UV8Hl5tHxO9uw== normalize-path@^3.0.0, normalize-path@~3.0.0: version "3.0.0" @@ -7069,6 +8607,14 @@ nth-check@^2.0.1: dependencies: boolbase "^1.0.0" +null-loader@^4.0.1: + version "4.0.1" + resolved "https://registry.yarnpkg.com/null-loader/-/null-loader-4.0.1.tgz#8e63bd3a2dd3c64236a4679428632edd0a6dbc6a" + integrity sha512-pxqVbi4U6N26lq+LmgIbB5XATP0VdZKOG25DhHi8btMmJJefGArFyDg1yc4U3hWCJbMqSrw0qyrz1UQX+qYXqg== + dependencies: + loader-utils "^2.0.0" + schema-utils "^3.0.0" + object-assign@^4.1.1: version "4.1.1" resolved "https://registry.yarnpkg.com/object-assign/-/object-assign-4.1.1.tgz#2109adc7965887cfc05cbbd442cac8bfbb360863" @@ -7144,19 +8690,10 @@ p-cancelable@^3.0.0: resolved "https://registry.yarnpkg.com/p-cancelable/-/p-cancelable-3.0.0.tgz#63826694b54d61ca1c20ebcb6d3ecf5e14cd8050" integrity sha512-mlVgR3PGuzlo0MmTdk4cXqXWlwQDLnONTAg6sm62XkMJEiRxN3GL3SffkYvqwonbkJBcrI7Uvv5Zh9yjvn2iUw== -p-limit@^2.0.0: - version "2.3.0" - resolved "https://registry.yarnpkg.com/p-limit/-/p-limit-2.3.0.tgz#3dd33c647a214fdfffd835933eb086da0dc21db1" - integrity sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w== - dependencies: - p-try "^2.0.0" - -p-limit@^3.0.2: - version "3.1.0" - resolved "https://registry.yarnpkg.com/p-limit/-/p-limit-3.1.0.tgz#e1daccbe78d0d1388ca18c64fea38e3e57e3706b" - integrity sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ== - dependencies: - yocto-queue "^0.1.0" +p-finally@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/p-finally/-/p-finally-1.0.0.tgz#3fbcfb15b899a44123b34b6dcc18b724336a2cae" + integrity sha512-LICb2p9CB7FS+0eR1oqWnHhp0FljGLZCWBE9aix0Uye9W8LTQPwMTYVGWQWIw9RdQiDg4+epXQODwIYJtSJaow== p-limit@^4.0.0: version "4.0.0" @@ -7165,20 +8702,6 @@ p-limit@^4.0.0: dependencies: yocto-queue "^1.0.0" -p-locate@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/p-locate/-/p-locate-3.0.0.tgz#322d69a05c0264b25997d9f40cd8a891ab0064a4" - integrity sha512-x+12w/To+4GFfgJhBEpiDcLozRJGegY+Ei7/z0tSLkMmxGZNybVMSfWj9aJn8Z5Fc7dBUNJOOVgPv2H7IwulSQ== - dependencies: - p-limit "^2.0.0" - -p-locate@^5.0.0: - version "5.0.0" - resolved "https://registry.yarnpkg.com/p-locate/-/p-locate-5.0.0.tgz#83c8315c6785005e3bd021839411c9e110e6d834" - integrity sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw== - dependencies: - p-limit "^3.0.2" - p-locate@^6.0.0: version "6.0.0" resolved "https://registry.yarnpkg.com/p-locate/-/p-locate-6.0.0.tgz#3da9a49d4934b901089dca3302fa65dc5a05c04f" @@ -7193,6 +8716,14 @@ p-map@^4.0.0: dependencies: aggregate-error "^3.0.0" +p-queue@^6.6.2: + version "6.6.2" + resolved "https://registry.yarnpkg.com/p-queue/-/p-queue-6.6.2.tgz#2068a9dcf8e67dd0ec3e7a2bcb76810faa85e426" + integrity sha512-RwFpb72c/BhQLEXIZ5K2e+AhgNVmIejGlTgiB9MzZ0e93GRvqZ7uSi0dvRF7/XIXDeNkra2fNHBxTyPDGySpjQ== + dependencies: + eventemitter3 "^4.0.4" + p-timeout "^3.2.0" + p-retry@^4.5.0: version "4.6.2" resolved "https://registry.yarnpkg.com/p-retry/-/p-retry-4.6.2.tgz#9baae7184057edd4e17231cee04264106e092a16" @@ -7201,10 +8732,12 @@ p-retry@^4.5.0: "@types/retry" "0.12.0" retry "^0.13.1" -p-try@^2.0.0: - version "2.2.0" - resolved "https://registry.yarnpkg.com/p-try/-/p-try-2.2.0.tgz#cb2868540e313d61de58fafbe35ce9004d5540e6" - integrity sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ== +p-timeout@^3.2.0: + version "3.2.0" + resolved "https://registry.yarnpkg.com/p-timeout/-/p-timeout-3.2.0.tgz#c7e17abc971d2a7962ef83626b35d635acf23dfe" + integrity sha512-rhIwUycgwwKcP9yTOOFK/AKsAopjjCakVqLHePO3CC6Mir1Z99xT+R63jZxAT5lFZLa2inS5h+ZS2GvR99/FBg== + dependencies: + p-finally "^1.0.0" package-json@^8.1.0: version "8.1.1" @@ -7216,6 +8749,11 @@ package-json@^8.1.0: registry-url "^6.0.0" semver "^7.3.7" +package-manager-detector@^1.3.0: + version "1.3.0" + resolved "https://registry.yarnpkg.com/package-manager-detector/-/package-manager-detector-1.3.0.tgz#b42d641c448826e03c2b354272456a771ce453c0" + integrity sha512-ZsEbbZORsyHuO00lY1kV3/t72yp6Ysay6Pd17ZAlNGuGwmWDLCJxFpRs0IzfXfj1o4icJOkUEioexFHzyPurSQ== + param-case@^3.0.4: version "3.0.4" resolved "https://registry.yarnpkg.com/param-case/-/param-case-3.0.4.tgz#7d17fe4aa12bde34d4a77d91acfb6219caad01c5" @@ -7288,15 +8826,10 @@ pascal-case@^3.1.2: no-case "^3.0.4" tslib "^2.0.3" -path-exists@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/path-exists/-/path-exists-3.0.0.tgz#ce0ebeaa5f78cb18925ea7d810d7b59b010fd515" - integrity sha512-bpC7GYwiDYQ4wYLe+FA8lhRjhQCMcQGuSgGGqDkg/QerRWw9CmGRT0iSOVRSZJ29NMLZgIzqaljJ63oaL4NIJQ== - -path-exists@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/path-exists/-/path-exists-4.0.0.tgz#513bdbe2d3b95d7762e8c1137efa195c6c61b5b3" - integrity sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w== +path-data-parser@0.1.0, path-data-parser@^0.1.0: + version "0.1.0" + resolved "https://registry.yarnpkg.com/path-data-parser/-/path-data-parser-0.1.0.tgz#8f5ba5cc70fc7becb3dcefaea08e2659aba60b8c" + integrity sha512-NOnmBpt5Y2RWbuv0LMzsayp3lVylAHLPUTut412ZA3l+C4uw4ZVkQbjShYCQ8TCpUMdPapr4YjUqLYD6v68j+w== path-exists@^5.0.0: version "5.0.0" @@ -7328,10 +8861,10 @@ path-to-regexp@0.1.7: resolved "https://registry.yarnpkg.com/path-to-regexp/-/path-to-regexp-0.1.7.tgz#df604178005f522f15eb4490e7247a1bfaa67f8c" integrity sha512-5DFkuoqlv1uYQKxy8omFBeJPQcdoE07Kv2sferDCrAq1ohOU+MSDswDIbnx3YAM60qIOnYa53wBhXW0EbMonrQ== -path-to-regexp@2.2.1: - version "2.2.1" - resolved "https://registry.yarnpkg.com/path-to-regexp/-/path-to-regexp-2.2.1.tgz#90b617025a16381a879bc82a38d4e8bdeb2bcf45" - integrity sha512-gu9bD6Ta5bwGrrU8muHzVOBFFREpp2iRkVfhBJahwJ6p6Xw20SjT0MxLnwkjOibQmGSYhiUnf2FLe7k+jcFmGQ== +path-to-regexp@3.3.0: + version "3.3.0" + resolved "https://registry.yarnpkg.com/path-to-regexp/-/path-to-regexp-3.3.0.tgz#f7f31d32e8518c2660862b644414b6d5c63a611b" + integrity sha512-qyCH421YQPS2WFDxDjftfc1ZR5WKQzVzqsp4n9M2kQhVOo/ByahFoUNJfl58kOcEGfQ//7weFTDhm+ss8Ecxgw== path-to-regexp@^1.7.0: version "1.8.0" @@ -7345,6 +8878,11 @@ path-type@^4.0.0: resolved "https://registry.yarnpkg.com/path-type/-/path-type-4.0.0.tgz#84ed01c0a7ba380afe09d90a8c180dcd9d03043b" integrity sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw== +pathe@^2.0.1, pathe@^2.0.3: + version "2.0.3" + resolved "https://registry.yarnpkg.com/pathe/-/pathe-2.0.3.tgz#3ecbec55421685b70a9da872b2cff3e1cbed1716" + integrity sha512-WUjGcAqP1gQacoQe+OBJsFA7Ld4DyXuUIjZ5cc75cLHvJ7dtNsTugphxIADwspS+AraAUePCKrSVtPLFj/F88w== + periscopic@^3.0.0: version "3.1.0" resolved "https://registry.yarnpkg.com/periscopic/-/periscopic-3.1.0.tgz#7e9037bf51c5855bd33b48928828db4afa79d97a" @@ -7359,6 +8897,11 @@ picocolors@^1.0.0, picocolors@^1.0.1: resolved "https://registry.yarnpkg.com/picocolors/-/picocolors-1.0.1.tgz#a8ad579b571952f0e5d25892de5445bcfe25aaa1" integrity sha512-anP1Z8qwhkbmu7MFP5iTt+wQKXgwzf7zTyGlcdzabySa9vd0Xt392U0rVmz9poOaBj0uHJKyyo9/upk0HrEQew== +picocolors@^1.1.1: + version "1.1.1" + resolved "https://registry.yarnpkg.com/picocolors/-/picocolors-1.1.1.tgz#3d321af3eab939b083c8f929a1d12cda81c26b6b" + integrity sha512-xceH2snhtb5M9liqDsmEw56le376mTZkEX/jEb/RxNFyegNul7eNslCXP9FDj/Lcu0X8KEyMceP2ntpaHrDEVA== + picomatch@^2.0.4, picomatch@^2.2.1, picomatch@^2.2.3, picomatch@^2.3.1: version "2.3.1" resolved "https://registry.yarnpkg.com/picomatch/-/picomatch-2.3.1.tgz#3ba3833733646d9d3e4995946c1365a67fb07a42" @@ -7371,12 +8914,43 @@ pkg-dir@^7.0.0: dependencies: find-up "^6.3.0" -pkg-up@^3.1.0: - version "3.1.0" - resolved "https://registry.yarnpkg.com/pkg-up/-/pkg-up-3.1.0.tgz#100ec235cc150e4fd42519412596a28512a0def5" - integrity sha512-nDywThFk1i4BQK4twPQ6TA4RT8bDY96yeuCVBWL3ePARCiEKDRSrNGbFIgUJpLp+XeIR65v8ra7WuJOFUBtkMA== +pkg-types@^1.3.0: + version "1.3.1" + resolved "https://registry.yarnpkg.com/pkg-types/-/pkg-types-1.3.1.tgz#bd7cc70881192777eef5326c19deb46e890917df" + integrity sha512-/Jm5M4RvtBFVkKWRu2BLUTNP8/M2a+UwuAX+ae4770q1qVGtfjG+WTCupoZixokjmHiry8uI+dlY8KXYV5HVVQ== + dependencies: + confbox "^0.1.8" + mlly "^1.7.4" + pathe "^2.0.1" + +pkg-types@^2.0.1: + version "2.2.0" + resolved "https://registry.yarnpkg.com/pkg-types/-/pkg-types-2.2.0.tgz#049bf404f82a66c465200149457acf0c5fb0fb2d" + integrity sha512-2SM/GZGAEkPp3KWORxQZns4M+WSeXbC2HEvmOIJe3Cmiv6ieAJvdVhDldtHqM5J1Y7MrR1XhkBT/rMlhh9FdqQ== + dependencies: + confbox "^0.2.2" + exsolve "^1.0.7" + pathe "^2.0.3" + +points-on-curve@0.2.0, points-on-curve@^0.2.0: + version "0.2.0" + resolved "https://registry.yarnpkg.com/points-on-curve/-/points-on-curve-0.2.0.tgz#7dbb98c43791859434284761330fa893cb81b4d1" + integrity sha512-0mYKnYYe9ZcqMCWhUjItv/oHjvgEsfKvnUTg8sAtnHr3GVy7rGkXCb6d5cSyqrWqL4k81b9CPg3urd+T7aop3A== + +points-on-path@^0.2.1: + version "0.2.1" + resolved "https://registry.yarnpkg.com/points-on-path/-/points-on-path-0.2.1.tgz#553202b5424c53bed37135b318858eacff85dd52" + integrity sha512-25ClnWWuw7JbWZcgqY/gJ4FQWadKxGWk+3kR/7kD0tCaDtPPMj7oHu2ToLaVhfpnHrZzYby2w6tUA0eOIuUg8g== + dependencies: + path-data-parser "0.1.0" + points-on-curve "0.2.0" + +postcss-attribute-case-insensitive@^7.0.1: + version "7.0.1" + resolved "https://registry.yarnpkg.com/postcss-attribute-case-insensitive/-/postcss-attribute-case-insensitive-7.0.1.tgz#0c4500e3bcb2141848e89382c05b5a31c23033a3" + integrity sha512-Uai+SupNSqzlschRyNx3kbCTWgY/2hcwtHEI/ej2LJWc9JJ77qKgGptd8DHwY1mXtZ7Aoh4z4yxfwMBue9eNgw== dependencies: - find-up "^3.0.0" + postcss-selector-parser "^7.0.0" postcss-calc@^9.0.1: version "9.0.1" @@ -7386,6 +8960,40 @@ postcss-calc@^9.0.1: postcss-selector-parser "^6.0.11" postcss-value-parser "^4.2.0" +postcss-clamp@^4.1.0: + version "4.1.0" + resolved "https://registry.yarnpkg.com/postcss-clamp/-/postcss-clamp-4.1.0.tgz#7263e95abadd8c2ba1bd911b0b5a5c9c93e02363" + integrity sha512-ry4b1Llo/9zz+PKC+030KUnPITTJAHeOwjfAyyB60eT0AorGLdzp52s31OsPRHRf8NchkgFoG2y6fCfn1IV1Ow== + dependencies: + postcss-value-parser "^4.2.0" + +postcss-color-functional-notation@^7.0.10: + version "7.0.10" + resolved "https://registry.yarnpkg.com/postcss-color-functional-notation/-/postcss-color-functional-notation-7.0.10.tgz#f1e9c3e4371889dcdfeabfa8515464fd8338cedc" + integrity sha512-k9qX+aXHBiLTRrWoCJuUFI6F1iF6QJQUXNVWJVSbqZgj57jDhBlOvD8gNUGl35tgqDivbGLhZeW3Ongz4feuKA== + dependencies: + "@csstools/css-color-parser" "^3.0.10" + "@csstools/css-parser-algorithms" "^3.0.5" + "@csstools/css-tokenizer" "^3.0.4" + "@csstools/postcss-progressive-custom-properties" "^4.1.0" + "@csstools/utilities" "^2.0.0" + +postcss-color-hex-alpha@^10.0.0: + version "10.0.0" + resolved "https://registry.yarnpkg.com/postcss-color-hex-alpha/-/postcss-color-hex-alpha-10.0.0.tgz#5dd3eba1f8facb4ea306cba6e3f7712e876b0c76" + integrity sha512-1kervM2cnlgPs2a8Vt/Qbe5cQ++N7rkYo/2rz2BkqJZIHQwaVuJgQH38REHrAi4uM0b1fqxMkWYmese94iMp3w== + dependencies: + "@csstools/utilities" "^2.0.0" + postcss-value-parser "^4.2.0" + +postcss-color-rebeccapurple@^10.0.0: + version "10.0.0" + resolved "https://registry.yarnpkg.com/postcss-color-rebeccapurple/-/postcss-color-rebeccapurple-10.0.0.tgz#5ada28406ac47e0796dff4056b0a9d5a6ecead98" + integrity sha512-JFta737jSP+hdAIEhk1Vs0q0YF5P8fFcj+09pweS8ktuGuZ8pPlykHsk6mPxZ8awDl4TrcxUqJo9l1IhVr/OjQ== + dependencies: + "@csstools/utilities" "^2.0.0" + postcss-value-parser "^4.2.0" + postcss-colormin@^6.1.0: version "6.1.0" resolved "https://registry.yarnpkg.com/postcss-colormin/-/postcss-colormin-6.1.0.tgz#076e8d3fb291fbff7b10e6b063be9da42ff6488d" @@ -7404,6 +9012,44 @@ postcss-convert-values@^6.1.0: browserslist "^4.23.0" postcss-value-parser "^4.2.0" +postcss-custom-media@^11.0.6: + version "11.0.6" + resolved "https://registry.yarnpkg.com/postcss-custom-media/-/postcss-custom-media-11.0.6.tgz#6b450e5bfa209efb736830066682e6567bd04967" + integrity sha512-C4lD4b7mUIw+RZhtY7qUbf4eADmb7Ey8BFA2px9jUbwg7pjTZDl4KY4bvlUV+/vXQvzQRfiGEVJyAbtOsCMInw== + dependencies: + "@csstools/cascade-layer-name-parser" "^2.0.5" + "@csstools/css-parser-algorithms" "^3.0.5" + "@csstools/css-tokenizer" "^3.0.4" + "@csstools/media-query-list-parser" "^4.0.3" + +postcss-custom-properties@^14.0.6: + version "14.0.6" + resolved "https://registry.yarnpkg.com/postcss-custom-properties/-/postcss-custom-properties-14.0.6.tgz#1af73a650bf115ba052cf915287c9982825fc90e" + integrity sha512-fTYSp3xuk4BUeVhxCSJdIPhDLpJfNakZKoiTDx7yRGCdlZrSJR7mWKVOBS4sBF+5poPQFMj2YdXx1VHItBGihQ== + dependencies: + "@csstools/cascade-layer-name-parser" "^2.0.5" + "@csstools/css-parser-algorithms" "^3.0.5" + "@csstools/css-tokenizer" "^3.0.4" + "@csstools/utilities" "^2.0.0" + postcss-value-parser "^4.2.0" + +postcss-custom-selectors@^8.0.5: + version "8.0.5" + resolved "https://registry.yarnpkg.com/postcss-custom-selectors/-/postcss-custom-selectors-8.0.5.tgz#9448ed37a12271d7ab6cb364b6f76a46a4a323e8" + integrity sha512-9PGmckHQswiB2usSO6XMSswO2yFWVoCAuih1yl9FVcwkscLjRKjwsjM3t+NIWpSU2Jx3eOiK2+t4vVTQaoCHHg== + dependencies: + "@csstools/cascade-layer-name-parser" "^2.0.5" + "@csstools/css-parser-algorithms" "^3.0.5" + "@csstools/css-tokenizer" "^3.0.4" + postcss-selector-parser "^7.0.0" + +postcss-dir-pseudo-class@^9.0.1: + version "9.0.1" + resolved "https://registry.yarnpkg.com/postcss-dir-pseudo-class/-/postcss-dir-pseudo-class-9.0.1.tgz#80d9e842c9ae9d29f6bf5fd3cf9972891d6cc0ca" + integrity sha512-tRBEK0MHYvcMUrAuYMEOa0zg9APqirBcgzi6P21OhxtJyJADo/SWBwY1CAwEohQ/6HDaa9jCjLRG7K3PVQYHEA== + dependencies: + postcss-selector-parser "^7.0.0" + postcss-discard-comments@^6.0.2: version "6.0.2" resolved "https://registry.yarnpkg.com/postcss-discard-comments/-/postcss-discard-comments-6.0.2.tgz#e768dcfdc33e0216380623652b0a4f69f4678b6c" @@ -7431,7 +9077,59 @@ postcss-discard-unused@^6.0.5: dependencies: postcss-selector-parser "^6.0.16" -postcss-loader@^7.3.3: +postcss-double-position-gradients@^6.0.2: + version "6.0.2" + resolved "https://registry.yarnpkg.com/postcss-double-position-gradients/-/postcss-double-position-gradients-6.0.2.tgz#185f8eab2db9cf4e34be69b5706c905895bb52ae" + integrity sha512-7qTqnL7nfLRyJK/AHSVrrXOuvDDzettC+wGoienURV8v2svNbu6zJC52ruZtHaO6mfcagFmuTGFdzRsJKB3k5Q== + dependencies: + "@csstools/postcss-progressive-custom-properties" "^4.1.0" + "@csstools/utilities" "^2.0.0" + postcss-value-parser "^4.2.0" + +postcss-focus-visible@^10.0.1: + version "10.0.1" + resolved "https://registry.yarnpkg.com/postcss-focus-visible/-/postcss-focus-visible-10.0.1.tgz#1f7904904368a2d1180b220595d77b6f8a957868" + integrity sha512-U58wyjS/I1GZgjRok33aE8juW9qQgQUNwTSdxQGuShHzwuYdcklnvK/+qOWX1Q9kr7ysbraQ6ht6r+udansalA== + dependencies: + postcss-selector-parser "^7.0.0" + +postcss-focus-within@^9.0.1: + version "9.0.1" + resolved "https://registry.yarnpkg.com/postcss-focus-within/-/postcss-focus-within-9.0.1.tgz#ac01ce80d3f2e8b2b3eac4ff84f8e15cd0057bc7" + integrity sha512-fzNUyS1yOYa7mOjpci/bR+u+ESvdar6hk8XNK/TRR0fiGTp2QT5N+ducP0n3rfH/m9I7H/EQU6lsa2BrgxkEjw== + dependencies: + postcss-selector-parser "^7.0.0" + +postcss-font-variant@^5.0.0: + version "5.0.0" + resolved "https://registry.yarnpkg.com/postcss-font-variant/-/postcss-font-variant-5.0.0.tgz#efd59b4b7ea8bb06127f2d031bfbb7f24d32fa66" + integrity sha512-1fmkBaCALD72CK2a9i468mA/+tr9/1cBxRRMXOUaZqO43oWPR5imcyPjXwuv7PXbCid4ndlP5zWhidQVVa3hmA== + +postcss-gap-properties@^6.0.0: + version "6.0.0" + resolved "https://registry.yarnpkg.com/postcss-gap-properties/-/postcss-gap-properties-6.0.0.tgz#d5ff0bdf923c06686499ed2b12e125fe64054fed" + integrity sha512-Om0WPjEwiM9Ru+VhfEDPZJAKWUd0mV1HmNXqp2C29z80aQ2uP9UVhLc7e3aYMIor/S5cVhoPgYQ7RtfeZpYTRw== + +postcss-image-set-function@^7.0.0: + version "7.0.0" + resolved "https://registry.yarnpkg.com/postcss-image-set-function/-/postcss-image-set-function-7.0.0.tgz#538e94e16716be47f9df0573b56bbaca86e1da53" + integrity sha512-QL7W7QNlZuzOwBTeXEmbVckNt1FSmhQtbMRvGGqqU4Nf4xk6KUEQhAoWuMzwbSv5jxiRiSZ5Tv7eiDB9U87znA== + dependencies: + "@csstools/utilities" "^2.0.0" + postcss-value-parser "^4.2.0" + +postcss-lab-function@^7.0.10: + version "7.0.10" + resolved "https://registry.yarnpkg.com/postcss-lab-function/-/postcss-lab-function-7.0.10.tgz#0537bd7245b935fc133298c8896bcbd160540cae" + integrity sha512-tqs6TCEv9tC1Riq6fOzHuHcZyhg4k3gIAMB8GGY/zA1ssGdm6puHMVE7t75aOSoFg7UD2wyrFFhbldiCMyyFTQ== + dependencies: + "@csstools/css-color-parser" "^3.0.10" + "@csstools/css-parser-algorithms" "^3.0.5" + "@csstools/css-tokenizer" "^3.0.4" + "@csstools/postcss-progressive-custom-properties" "^4.1.0" + "@csstools/utilities" "^2.0.0" + +postcss-loader@^7.3.4: version "7.3.4" resolved "https://registry.yarnpkg.com/postcss-loader/-/postcss-loader-7.3.4.tgz#aed9b79ce4ed7e9e89e56199d25ad1ec8f606209" integrity sha512-iW5WTTBSC5BfsBJ9daFMPVrLT36MrNiC6fqOZTTaHjBNX6Pfd5p+hSBqe/fEeNd7pc13QiAyGt7VdGMw4eRC4A== @@ -7440,6 +9138,13 @@ postcss-loader@^7.3.3: jiti "^1.20.0" semver "^7.5.4" +postcss-logical@^8.1.0: + version "8.1.0" + resolved "https://registry.yarnpkg.com/postcss-logical/-/postcss-logical-8.1.0.tgz#4092b16b49e3ecda70c4d8945257da403d167228" + integrity sha512-pL1hXFQ2fEXNKiNiAgtfA005T9FBxky5zkX6s4GZM2D8RkVgRqz3f4g1JUoq925zXv495qk8UNldDwh8uGEDoA== + dependencies: + postcss-value-parser "^4.2.0" + postcss-merge-idents@^6.0.3: version "6.0.3" resolved "https://registry.yarnpkg.com/postcss-merge-idents/-/postcss-merge-idents-6.0.3.tgz#7b9c31c7bc823c94bec50f297f04e3c2b838ea65" @@ -7526,6 +9231,15 @@ postcss-modules-values@^4.0.0: dependencies: icss-utils "^5.0.0" +postcss-nesting@^13.0.2: + version "13.0.2" + resolved "https://registry.yarnpkg.com/postcss-nesting/-/postcss-nesting-13.0.2.tgz#fde0d4df772b76d03b52eccc84372e8d1ca1402e" + integrity sha512-1YCI290TX+VP0U/K/aFxzHzQWHWURL+CtHMSbex1lCdpXD1SoR2sYuxDu5aNI9lPoXpKTCggFZiDJbwylU0LEQ== + dependencies: + "@csstools/selector-resolve-nested" "^3.1.0" + "@csstools/selector-specificity" "^5.0.0" + postcss-selector-parser "^7.0.0" + postcss-normalize-charset@^6.0.2: version "6.0.2" resolved "https://registry.yarnpkg.com/postcss-normalize-charset/-/postcss-normalize-charset-6.0.2.tgz#1ec25c435057a8001dac942942a95ffe66f721e1" @@ -7588,6 +9302,11 @@ postcss-normalize-whitespace@^6.0.2: dependencies: postcss-value-parser "^4.2.0" +postcss-opacity-percentage@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/postcss-opacity-percentage/-/postcss-opacity-percentage-3.0.0.tgz#0b0db5ed5db5670e067044b8030b89c216e1eb0a" + integrity sha512-K6HGVzyxUxd/VgZdX04DCtdwWJ4NGLG212US4/LA1TLAbHgmAsTWVR86o+gGIbFtnTkfOpb9sCRBx8K7HO66qQ== + postcss-ordered-values@^6.0.2: version "6.0.2" resolved "https://registry.yarnpkg.com/postcss-ordered-values/-/postcss-ordered-values-6.0.2.tgz#366bb663919707093451ab70c3f99c05672aaae5" @@ -7596,6 +9315,102 @@ postcss-ordered-values@^6.0.2: cssnano-utils "^4.0.2" postcss-value-parser "^4.2.0" +postcss-overflow-shorthand@^6.0.0: + version "6.0.0" + resolved "https://registry.yarnpkg.com/postcss-overflow-shorthand/-/postcss-overflow-shorthand-6.0.0.tgz#f5252b4a2ee16c68cd8a9029edb5370c4a9808af" + integrity sha512-BdDl/AbVkDjoTofzDQnwDdm/Ym6oS9KgmO7Gr+LHYjNWJ6ExORe4+3pcLQsLA9gIROMkiGVjjwZNoL/mpXHd5Q== + dependencies: + postcss-value-parser "^4.2.0" + +postcss-page-break@^3.0.4: + version "3.0.4" + resolved "https://registry.yarnpkg.com/postcss-page-break/-/postcss-page-break-3.0.4.tgz#7fbf741c233621622b68d435babfb70dd8c1ee5f" + integrity sha512-1JGu8oCjVXLa9q9rFTo4MbeeA5FMe00/9C7lN4va606Rdb+HkxXtXsmEDrIraQ11fGz/WvKWa8gMuCKkrXpTsQ== + +postcss-place@^10.0.0: + version "10.0.0" + resolved "https://registry.yarnpkg.com/postcss-place/-/postcss-place-10.0.0.tgz#ba36ee4786ca401377ced17a39d9050ed772e5a9" + integrity sha512-5EBrMzat2pPAxQNWYavwAfoKfYcTADJ8AXGVPcUZ2UkNloUTWzJQExgrzrDkh3EKzmAx1evfTAzF9I8NGcc+qw== + dependencies: + postcss-value-parser "^4.2.0" + +postcss-preset-env@^10.2.1: + version "10.2.4" + resolved "https://registry.yarnpkg.com/postcss-preset-env/-/postcss-preset-env-10.2.4.tgz#17d386b5a86b136dfbca89b52ef03a95ad9e32fa" + integrity sha512-q+lXgqmTMdB0Ty+EQ31SuodhdfZetUlwCA/F0zRcd/XdxjzI+Rl2JhZNz5US2n/7t9ePsvuhCnEN4Bmu86zXlA== + dependencies: + "@csstools/postcss-cascade-layers" "^5.0.2" + "@csstools/postcss-color-function" "^4.0.10" + "@csstools/postcss-color-mix-function" "^3.0.10" + "@csstools/postcss-color-mix-variadic-function-arguments" "^1.0.0" + "@csstools/postcss-content-alt-text" "^2.0.6" + "@csstools/postcss-exponential-functions" "^2.0.9" + "@csstools/postcss-font-format-keywords" "^4.0.0" + "@csstools/postcss-gamut-mapping" "^2.0.10" + "@csstools/postcss-gradients-interpolation-method" "^5.0.10" + "@csstools/postcss-hwb-function" "^4.0.10" + "@csstools/postcss-ic-unit" "^4.0.2" + "@csstools/postcss-initial" "^2.0.1" + "@csstools/postcss-is-pseudo-class" "^5.0.3" + "@csstools/postcss-light-dark-function" "^2.0.9" + "@csstools/postcss-logical-float-and-clear" "^3.0.0" + "@csstools/postcss-logical-overflow" "^2.0.0" + "@csstools/postcss-logical-overscroll-behavior" "^2.0.0" + "@csstools/postcss-logical-resize" "^3.0.0" + "@csstools/postcss-logical-viewport-units" "^3.0.4" + "@csstools/postcss-media-minmax" "^2.0.9" + "@csstools/postcss-media-queries-aspect-ratio-number-values" "^3.0.5" + "@csstools/postcss-nested-calc" "^4.0.0" + "@csstools/postcss-normalize-display-values" "^4.0.0" + "@csstools/postcss-oklab-function" "^4.0.10" + "@csstools/postcss-progressive-custom-properties" "^4.1.0" + "@csstools/postcss-random-function" "^2.0.1" + "@csstools/postcss-relative-color-syntax" "^3.0.10" + "@csstools/postcss-scope-pseudo-class" "^4.0.1" + "@csstools/postcss-sign-functions" "^1.1.4" + "@csstools/postcss-stepped-value-functions" "^4.0.9" + "@csstools/postcss-text-decoration-shorthand" "^4.0.2" + "@csstools/postcss-trigonometric-functions" "^4.0.9" + "@csstools/postcss-unset-value" "^4.0.0" + autoprefixer "^10.4.21" + browserslist "^4.25.0" + css-blank-pseudo "^7.0.1" + css-has-pseudo "^7.0.2" + css-prefers-color-scheme "^10.0.0" + cssdb "^8.3.0" + postcss-attribute-case-insensitive "^7.0.1" + postcss-clamp "^4.1.0" + postcss-color-functional-notation "^7.0.10" + postcss-color-hex-alpha "^10.0.0" + postcss-color-rebeccapurple "^10.0.0" + postcss-custom-media "^11.0.6" + postcss-custom-properties "^14.0.6" + postcss-custom-selectors "^8.0.5" + postcss-dir-pseudo-class "^9.0.1" + postcss-double-position-gradients "^6.0.2" + postcss-focus-visible "^10.0.1" + postcss-focus-within "^9.0.1" + postcss-font-variant "^5.0.0" + postcss-gap-properties "^6.0.0" + postcss-image-set-function "^7.0.0" + postcss-lab-function "^7.0.10" + postcss-logical "^8.1.0" + postcss-nesting "^13.0.2" + postcss-opacity-percentage "^3.0.0" + postcss-overflow-shorthand "^6.0.0" + postcss-page-break "^3.0.4" + postcss-place "^10.0.0" + postcss-pseudo-class-any-link "^10.0.1" + postcss-replace-overflow-wrap "^4.0.0" + postcss-selector-not "^8.0.1" + +postcss-pseudo-class-any-link@^10.0.1: + version "10.0.1" + resolved "https://registry.yarnpkg.com/postcss-pseudo-class-any-link/-/postcss-pseudo-class-any-link-10.0.1.tgz#06455431171bf44b84d79ebaeee9fd1c05946544" + integrity sha512-3el9rXlBOqTFaMFkWDOkHUTQekFIYnaQY55Rsp8As8QQkpiSgIYEcF/6Ond93oHiDsGb4kad8zjt+NPlOC1H0Q== + dependencies: + postcss-selector-parser "^7.0.0" + postcss-reduce-idents@^6.0.3: version "6.0.3" resolved "https://registry.yarnpkg.com/postcss-reduce-idents/-/postcss-reduce-idents-6.0.3.tgz#b0d9c84316d2a547714ebab523ec7d13704cd486" @@ -7618,6 +9433,18 @@ postcss-reduce-transforms@^6.0.2: dependencies: postcss-value-parser "^4.2.0" +postcss-replace-overflow-wrap@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/postcss-replace-overflow-wrap/-/postcss-replace-overflow-wrap-4.0.0.tgz#d2df6bed10b477bf9c52fab28c568b4b29ca4319" + integrity sha512-KmF7SBPphT4gPPcKZc7aDkweHiKEEO8cla/GjcBK+ckKxiZslIu3C4GCRW3DNfL0o7yW7kMQu9xlZ1kXRXLXtw== + +postcss-selector-not@^8.0.1: + version "8.0.1" + resolved "https://registry.yarnpkg.com/postcss-selector-not/-/postcss-selector-not-8.0.1.tgz#f2df9c6ac9f95e9fe4416ca41a957eda16130172" + integrity sha512-kmVy/5PYVb2UOhy0+LqUYAhKj7DUGDpSWa5LZqlkWJaaAV+dxxsOG3+St0yNLu6vsKD7Dmqx+nWQt0iil89+WA== + dependencies: + postcss-selector-parser "^7.0.0" + postcss-selector-parser@^6.0.11, postcss-selector-parser@^6.0.16, postcss-selector-parser@^6.0.2, postcss-selector-parser@^6.0.4: version "6.1.1" resolved "https://registry.yarnpkg.com/postcss-selector-parser/-/postcss-selector-parser-6.1.1.tgz#5be94b277b8955904476a2400260002ce6c56e38" @@ -7626,6 +9453,14 @@ postcss-selector-parser@^6.0.11, postcss-selector-parser@^6.0.16, postcss-select cssesc "^3.0.0" util-deprecate "^1.0.2" +postcss-selector-parser@^7.0.0: + version "7.1.0" + resolved "https://registry.yarnpkg.com/postcss-selector-parser/-/postcss-selector-parser-7.1.0.tgz#4d6af97eba65d73bc4d84bcb343e865d7dd16262" + integrity sha512-8sLjZwK0R+JlxlYcTuVnyT2v+htpdrjDOKuMcOVdYjt52Lh8hWRYpxBPoKx/Zg+bcjc3wx6fmQevMmUztS/ccA== + dependencies: + cssesc "^3.0.0" + util-deprecate "^1.0.2" + postcss-sort-media-queries@^5.2.0: version "5.2.0" resolved "https://registry.yarnpkg.com/postcss-sort-media-queries/-/postcss-sort-media-queries-5.2.0.tgz#4556b3f982ef27d3bac526b99b6c0d3359a6cf97" @@ -7658,7 +9493,7 @@ postcss-zindex@^6.0.2: resolved "https://registry.yarnpkg.com/postcss-zindex/-/postcss-zindex-6.0.2.tgz#e498304b83a8b165755f53db40e2ea65a99b56e1" integrity sha512-5BxW9l1evPB/4ZIc+2GobEBoKC+h8gPGCMi+jxsYvd2x0mjq7wazk6DrP71pStqxE9Foxh5TVnonbWpFZzXaYg== -postcss@^8.4.21, postcss@^8.4.24, postcss@^8.4.26, postcss@^8.4.33, postcss@^8.4.38: +postcss@^8.4.21, postcss@^8.4.24, postcss@^8.4.33: version "8.4.41" resolved "https://registry.yarnpkg.com/postcss/-/postcss-8.4.41.tgz#d6104d3ba272d882fe18fc07d15dc2da62fa2681" integrity sha512-TesUflQ0WKZqAvg52PWL6kHgLKP6xB6heTOdoYM0Wt2UHyxNa4K25EZZMgKns3BH1RLVbZCREPpLY0rhnNoHVQ== @@ -7667,6 +9502,15 @@ postcss@^8.4.21, postcss@^8.4.24, postcss@^8.4.26, postcss@^8.4.33, postcss@^8.4 picocolors "^1.0.1" source-map-js "^1.2.0" +postcss@^8.5.4: + version "8.5.6" + resolved "https://registry.yarnpkg.com/postcss/-/postcss-8.5.6.tgz#2825006615a619b4f62a9e7426cc120b349a8f3c" + integrity sha512-3Ybi1tAuwAP9s0r1UQ2J4n5Y0G05bJkpUIO0/bI9MhwmD70S5aTWbXGBwxHrelT+XM1k6dM0pk+SwNkpTRN7Pg== + dependencies: + nanoid "^3.3.11" + picocolors "^1.1.1" + source-map-js "^1.2.1" + pretty-error@^4.0.0: version "4.0.0" resolved "https://registry.yarnpkg.com/pretty-error/-/pretty-error-4.0.0.tgz#90a703f46dd7234adb46d0f84823e9d1cb8f10d6" @@ -7733,11 +9577,6 @@ proxy-addr@~2.0.7: forwarded "0.2.0" ipaddr.js "1.9.1" -punycode@^1.3.2: - version "1.4.1" - resolved "https://registry.yarnpkg.com/punycode/-/punycode-1.4.1.tgz#c0d5a63b2718800ad8e1eb0fa5269c84dd41845e" - integrity sha512-jmYNElW7yvO7TV33CjSmvSiE2yco3bV2czu/OzDKdMNVZQWfxCblURLhf+47syQRBntjfLdd/H0egrzIG+oaFQ== - punycode@^2.1.0: version "2.3.1" resolved "https://registry.yarnpkg.com/punycode/-/punycode-2.3.1.tgz#027422e2faec0b25e1549c3e1bd8309b9133b6e5" @@ -7757,18 +9596,16 @@ qs@6.11.0: dependencies: side-channel "^1.0.4" +quansync@^0.2.8: + version "0.2.10" + resolved "https://registry.yarnpkg.com/quansync/-/quansync-0.2.10.tgz#32053cf166fa36511aae95fc49796116f2dc20e1" + integrity sha512-t41VRkMYbkHyCYmOvx/6URnN80H7k4X0lLdBMGsz+maAwrJQYB1djpV6vHrQIBE0WBSGqhtEHrK9U3DWWH8v7A== + queue-microtask@^1.2.2: version "1.2.3" resolved "https://registry.yarnpkg.com/queue-microtask/-/queue-microtask-1.2.3.tgz#4929228bbc724dfac43e0efb058caf7b6cfb6243" integrity sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A== -queue@6.0.2: - version "6.0.2" - resolved "https://registry.yarnpkg.com/queue/-/queue-6.0.2.tgz#b91525283e2315c7553d2efa18d83e76432fed65" - integrity sha512-iHZWu+q3IdFZFX36ro/lKBkSvfkztY5Y7HMiPlOUjhupPcG2JMfst2KKEpu5XndviX/3UhFbRngUPNKtgvtZiA== - dependencies: - inherits "~2.0.3" - quick-lru@^5.1.1: version "5.1.1" resolved "https://registry.yarnpkg.com/quick-lru/-/quick-lru-5.1.1.tgz#366493e6b3e42a3a6885e2e99d18f80fb7a8c932" @@ -7811,36 +9648,6 @@ rc@1.2.8: minimist "^1.2.0" strip-json-comments "~2.0.1" -react-dev-utils@^12.0.1: - version "12.0.1" - resolved "https://registry.yarnpkg.com/react-dev-utils/-/react-dev-utils-12.0.1.tgz#ba92edb4a1f379bd46ccd6bcd4e7bc398df33e73" - integrity sha512-84Ivxmr17KjUupyqzFode6xKhjwuEJDROWKJy/BthkL7Wn6NJ8h4WE6k/exAv6ImS+0oZLRRW5j/aINMHyeGeQ== - dependencies: - "@babel/code-frame" "^7.16.0" - address "^1.1.2" - browserslist "^4.18.1" - chalk "^4.1.2" - cross-spawn "^7.0.3" - detect-port-alt "^1.1.6" - escape-string-regexp "^4.0.0" - filesize "^8.0.6" - find-up "^5.0.0" - fork-ts-checker-webpack-plugin "^6.5.0" - global-modules "^2.0.0" - globby "^11.0.4" - gzip-size "^6.0.0" - immer "^9.0.7" - is-root "^2.1.0" - loader-utils "^3.2.0" - open "^8.4.0" - pkg-up "^3.1.0" - prompts "^2.4.2" - react-error-overlay "^6.0.11" - recursive-readdir "^2.2.2" - shell-quote "^1.7.3" - strip-ansi "^6.0.1" - text-table "^0.2.0" - react-dom@^18.0.0: version "18.3.1" resolved "https://registry.yarnpkg.com/react-dom/-/react-dom-18.3.1.tgz#c2265d79511b57d479b3dd3fdfa51536494c5cb4" @@ -7849,29 +9656,15 @@ react-dom@^18.0.0: loose-envify "^1.1.0" scheduler "^0.23.2" -react-error-overlay@^6.0.11: - version "6.0.11" - resolved "https://registry.yarnpkg.com/react-error-overlay/-/react-error-overlay-6.0.11.tgz#92835de5841c5cf08ba00ddd2d677b6d17ff9adb" - integrity sha512-/6UZ2qgEyH2aqzYZgQPxEnz33NJ2gNsnHA2o5+o4wW9bLM/JYQitNP9xPhsXwC08hMMovfGe/8retsdDsczPRg== - -react-fast-compare@^3.2.0, react-fast-compare@^3.2.2: +react-fast-compare@^3.2.0: version "3.2.2" resolved "https://registry.yarnpkg.com/react-fast-compare/-/react-fast-compare-3.2.2.tgz#929a97a532304ce9fee4bcae44234f1ce2c21d49" integrity sha512-nsO+KSNgo1SbJqJEYRE9ERzo7YtYbou/OqjSQKxV7jcKox7+usiUVZOAC+XnDOABXggQTno0Y1CpVnuWEc1boQ== -react-helmet-async@*: - version "2.0.5" - resolved "https://registry.yarnpkg.com/react-helmet-async/-/react-helmet-async-2.0.5.tgz#cfc70cd7bb32df7883a8ed55502a1513747223ec" - integrity sha512-rYUYHeus+i27MvFE+Jaa4WsyBKGkL6qVgbJvSBoX8mbsWoABJXdEO0bZyi0F6i+4f0NuIb8AvqPMj3iXFHkMwg== - dependencies: - invariant "^2.2.4" - react-fast-compare "^3.2.2" - shallowequal "^1.1.0" - -react-helmet-async@^1.3.0: +"react-helmet-async@npm:@slorber/react-helmet-async@1.3.0": version "1.3.0" - resolved "https://registry.yarnpkg.com/react-helmet-async/-/react-helmet-async-1.3.0.tgz#7bd5bf8c5c69ea9f02f6083f14ce33ef545c222e" - integrity sha512-9jZ57/dAn9t3q6hneQS0wukqC2ENOBgMNVEhb/ZG9ZSxUetzVIw4iAmEU38IaVg3QGYauQPhSeUTuIUtFglWpg== + resolved "https://registry.yarnpkg.com/@slorber/react-helmet-async/-/react-helmet-async-1.3.0.tgz#11fbc6094605cf60aa04a28c17e0aab894b4ecff" + integrity sha512-e9/OK8VhwUSc67diWI8Rb3I0YgI9/SBQtnhe9aEuK6MhZm7ntZZimXgwXnd8W96YTmSOb9M4d8LwhRZyhWr/1A== dependencies: "@babel/runtime" "^7.12.5" invariant "^2.2.4" @@ -7889,10 +9682,10 @@ react-is@^18.3.1: resolved "https://registry.yarnpkg.com/react-is/-/react-is-18.3.1.tgz#e83557dc12eae63a99e003a46388b1dcbb44db7e" integrity sha512-/LLMVyas0ljjAtoYiPqYiL8VWXzUUdThrmU5+n20DZv+a+ClRoevUzw5JxU+Ieh5/c87ytoTBV9G1FiKfNJdmg== -react-json-view-lite@^1.2.0: - version "1.4.0" - resolved "https://registry.yarnpkg.com/react-json-view-lite/-/react-json-view-lite-1.4.0.tgz#0ff493245f4550abe5e1f1836f170fa70bb95914" - integrity sha512-wh6F6uJyYAmQ4fK0e8dSQMEWuvTs2Wr3el3sLD9bambX1+pSWUVXIz1RFaoy3TI1mZ0FqdpKq9YgbgTTgyrmXA== +react-json-view-lite@^2.3.0: + version "2.4.1" + resolved "https://registry.yarnpkg.com/react-json-view-lite/-/react-json-view-lite-2.4.1.tgz#0d06696a06aaf4a74e890302b76cf8cddcc45d60" + integrity sha512-fwFYknRIBxjbFm0kBDrzgBy1xa5tDg2LyXXBepC5f1b+MY3BUClMCsvanMPn089JbV1Eg3nZcrp0VCuH43aXnA== react-loadable-ssr-addon-v5-slorber@^1.0.1: version "1.0.1" @@ -7989,25 +9782,6 @@ readdirp@~3.6.0: dependencies: picomatch "^2.2.1" -reading-time@^1.5.0: - version "1.5.0" - resolved "https://registry.yarnpkg.com/reading-time/-/reading-time-1.5.0.tgz#d2a7f1b6057cb2e169beaf87113cc3411b5bc5bb" - integrity sha512-onYyVhBNr4CmAxFsKS7bz+uTLRakypIe4R+5A824vBSkQy/hB3fZepoVEf8OVAxzLvK+H/jm9TzpI3ETSm64Kg== - -rechoir@^0.6.2: - version "0.6.2" - resolved "https://registry.yarnpkg.com/rechoir/-/rechoir-0.6.2.tgz#85204b54dba82d5742e28c96756ef43af50e3384" - integrity sha512-HFM8rkZ+i3zrV+4LQjwQ0W+ez98pApMGM3HUrN04j3CqzPOzl9nmP15Y8YXNm8QHGv/eacOVEjqhmWpkRV0NAw== - dependencies: - resolve "^1.1.6" - -recursive-readdir@^2.2.2: - version "2.2.3" - resolved "https://registry.yarnpkg.com/recursive-readdir/-/recursive-readdir-2.2.3.tgz#e726f328c0d69153bcabd5c322d3195252379372" - integrity sha512-8HrF5ZsXk5FAH9dgsx3BlUer73nIhuj+9OrQwEbLTPOBzGkL1lsFCR01am+v+0m2Cmbs1nP12hLDl5FA7EszKA== - dependencies: - minimatch "^3.0.5" - regenerate-unicode-properties@^10.1.0: version "10.1.1" resolved "https://registry.yarnpkg.com/regenerate-unicode-properties/-/regenerate-unicode-properties-10.1.1.tgz#6b0e05489d9076b04c436f318d9b067bba459480" @@ -8015,6 +9789,13 @@ regenerate-unicode-properties@^10.1.0: dependencies: regenerate "^1.4.2" +regenerate-unicode-properties@^10.2.0: + version "10.2.0" + resolved "https://registry.yarnpkg.com/regenerate-unicode-properties/-/regenerate-unicode-properties-10.2.0.tgz#626e39df8c372338ea9b8028d1f99dc3fd9c3db0" + integrity sha512-DqHn3DwbmmPVzeKj9woBadqmXxLvQoQIwu7nopMc72ztvxVmVk2SBhSnx67zuye5TP+lJsb/TBQsjLKhnDf3MA== + dependencies: + regenerate "^1.4.2" + regenerate@^1.4.2: version "1.4.2" resolved "https://registry.yarnpkg.com/regenerate/-/regenerate-1.4.2.tgz#b9346d8827e8f5a32f7ba29637d398b69014848a" @@ -8044,6 +9825,18 @@ regexpu-core@^5.3.1: unicode-match-property-ecmascript "^2.0.0" unicode-match-property-value-ecmascript "^2.1.0" +regexpu-core@^6.2.0: + version "6.2.0" + resolved "https://registry.yarnpkg.com/regexpu-core/-/regexpu-core-6.2.0.tgz#0e5190d79e542bf294955dccabae04d3c7d53826" + integrity sha512-H66BPQMrv+V16t8xtmq+UC0CBpiTBA60V8ibS1QVReIp8T1z8hwFxqcGzm9K6lgsN7sB5edVH8a+ze6Fqm4weA== + dependencies: + regenerate "^1.4.2" + regenerate-unicode-properties "^10.2.0" + regjsgen "^0.8.0" + regjsparser "^0.12.0" + unicode-match-property-ecmascript "^2.0.0" + unicode-match-property-value-ecmascript "^2.1.0" + registry-auth-token@^5.0.1: version "5.0.2" resolved "https://registry.yarnpkg.com/registry-auth-token/-/registry-auth-token-5.0.2.tgz#8b026cc507c8552ebbe06724136267e63302f756" @@ -8058,6 +9851,18 @@ registry-url@^6.0.0: dependencies: rc "1.2.8" +regjsgen@^0.8.0: + version "0.8.0" + resolved "https://registry.yarnpkg.com/regjsgen/-/regjsgen-0.8.0.tgz#df23ff26e0c5b300a6470cad160a9d090c3a37ab" + integrity sha512-RvwtGe3d7LvWiDQXeQw8p5asZUmfU1G/l6WbUXeHta7Y2PEIvBTwH6E2EfmYUK8pxcxEdEmaomqyp0vZZ7C+3Q== + +regjsparser@^0.12.0: + version "0.12.0" + resolved "https://registry.yarnpkg.com/regjsparser/-/regjsparser-0.12.0.tgz#0e846df6c6530586429377de56e0475583b088dc" + integrity sha512-cnE+y8bz4NhMjISKbgeVJtqNbtf5QpjZP+Bslo+UqkIt9QPnX9q095eiRRASJG1/tz6dlNr6Z5NsBiWYokp6EQ== + dependencies: + jsesc "~3.0.2" + regjsparser@^0.9.1: version "0.9.1" resolved "https://registry.yarnpkg.com/regjsparser/-/regjsparser-0.9.1.tgz#272d05aa10c7c1f67095b1ff0addae8442fc5709" @@ -8171,6 +9976,11 @@ renderkid@^3.0.0: lodash "^4.17.21" strip-ansi "^6.0.1" +repeat-string@^1.0.0: + version "1.6.1" + resolved "https://registry.yarnpkg.com/repeat-string/-/repeat-string-1.6.1.tgz#8dcae470e1c88abc2d600fff4a776286da75e637" + integrity sha512-PV0dzCYDNfRi1jCDbJzpW7jNNDRuCOG/jI5ctQcGKt/clZD+YcPS3yIlWuTJMmESC8aevCFmWJy5wjAFgNqN6w== + require-from-string@^2.0.2: version "2.0.2" resolved "https://registry.yarnpkg.com/require-from-string/-/require-from-string-2.0.2.tgz#89a7fdd938261267318eafe14f9c32e598c36909" @@ -8201,7 +10011,7 @@ resolve-pathname@^3.0.0: resolved "https://registry.yarnpkg.com/resolve-pathname/-/resolve-pathname-3.0.0.tgz#99d02224d3cf263689becbb393bc560313025dcd" integrity sha512-C7rARubxI8bXFNB/hqcp/4iUeIXJhJZvFPFPiSPRnhU5UPxzMFIl+2E6yY6c4k9giDJAhtV+enfA+G89N6Csng== -resolve@^1.1.6, resolve@^1.14.2, resolve@^1.19.0: +resolve@^1.14.2, resolve@^1.19.0: version "1.22.8" resolved "https://registry.yarnpkg.com/resolve/-/resolve-1.22.8.tgz#b6c87a9f2aa06dfab52e3d70ac8cde321fa5a48d" integrity sha512-oKWePCxqpd6FlLvGV1VU0x7bkPmmCNolxzjMf4NczoDnQcIWrAF+cPtZn5i6n+RfD2d9i0tzpKnG6Yk168yIyw== @@ -8210,6 +10020,15 @@ resolve@^1.1.6, resolve@^1.14.2, resolve@^1.19.0: path-parse "^1.0.7" supports-preserve-symlinks-flag "^1.0.0" +resolve@^1.22.10: + version "1.22.10" + resolved "https://registry.yarnpkg.com/resolve/-/resolve-1.22.10.tgz#b663e83ffb09bbf2386944736baae803029b8b39" + integrity sha512-NPRy+/ncIMeDlTAsuqwKIiferiawhefFJtkNSW0qZJEqMEb+qBt/77B/jGeeek+F0uOeN05CDa6HXbbIgtVX4w== + dependencies: + is-core-module "^2.16.0" + path-parse "^1.0.7" + supports-preserve-symlinks-flag "^1.0.0" + responselike@^3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/responselike/-/responselike-3.0.0.tgz#20decb6c298aff0dbee1c355ca95461d42823626" @@ -8239,10 +10058,15 @@ robust-predicates@^3.0.2: resolved "https://registry.yarnpkg.com/robust-predicates/-/robust-predicates-3.0.2.tgz#d5b28528c4824d20fc48df1928d41d9efa1ad771" integrity sha512-IXgzBWvWQwE6PrDI05OvmXUIruQTcoMDzRsOd5CDvHCVLcLHMTSYvOK5Cm46kWqlV3yAbuSpBZdJ5oP5OUoStg== -rtl-detect@^1.0.4: - version "1.1.2" - resolved "https://registry.yarnpkg.com/rtl-detect/-/rtl-detect-1.1.2.tgz#ca7f0330af5c6bb626c15675c642ba85ad6273c6" - integrity sha512-PGMBq03+TTG/p/cRB7HCLKJ1MgDIi07+QU1faSjiYRfmY5UsAttV9Hs08jDAHVwcOwmVLcSJkpwyfXszVjWfIQ== +roughjs@^4.6.6: + version "4.6.6" + resolved "https://registry.yarnpkg.com/roughjs/-/roughjs-4.6.6.tgz#1059f49a5e0c80dee541a005b20cc322b222158b" + integrity sha512-ZUz/69+SYpFN/g/lUlo2FXcIjRkSu3nDarreVdGGndHEBJ6cXPdKguS8JGxwj5HA5xIbVKSmLgr5b3AWxtRfvQ== + dependencies: + hachure-fill "^0.5.2" + path-data-parser "^0.1.0" + points-on-curve "^0.2.0" + points-on-path "^0.2.1" rtlcss@^4.1.0: version "4.2.0" @@ -8266,13 +10090,6 @@ rw@1: resolved "https://registry.yarnpkg.com/rw/-/rw-1.3.3.tgz#3f862dfa91ab766b14885ef4d01124bfda074fb4" integrity sha512-PdhdWy89SiZogBLaw42zdeqtRJ//zFd2PgQavcICDUgJT5oW10QCRKbJ6bg4r0/UY2M6BWd5tkxuGFRvCkgfHQ== -sade@^1.7.3: - version "1.8.1" - resolved "https://registry.yarnpkg.com/sade/-/sade-1.8.1.tgz#0a78e81d658d394887be57d2a409bf703a3b2701" - integrity sha512-xal3CZX1Xlo/k4ApwCFrHVACi9fBqJ7V+mwhBsuf/1IOKbBy098Fex+Wa/5QMubw09pSZ/u8EY8PWgevJsXp1A== - dependencies: - mri "^1.1.0" - safe-buffer@5.1.2, safe-buffer@~5.1.0, safe-buffer@~5.1.1: version "5.1.2" resolved "https://registry.yarnpkg.com/safe-buffer/-/safe-buffer-5.1.2.tgz#991ec69d296e0313747d59bdfd2b745c35f8828d" @@ -8300,14 +10117,10 @@ scheduler@^0.23.2: dependencies: loose-envify "^1.1.0" -schema-utils@2.7.0: - version "2.7.0" - resolved "https://registry.yarnpkg.com/schema-utils/-/schema-utils-2.7.0.tgz#17151f76d8eae67fbbf77960c33c676ad9f4efc7" - integrity sha512-0ilKFI6QQF5nxDZLFn2dMjvc4hjg/Wkg7rHd3jK6/A4a1Hl9VFdQWvgB1UMGoU94pad1P/8N7fMcEnLnSiju8A== - dependencies: - "@types/json-schema" "^7.0.4" - ajv "^6.12.2" - ajv-keywords "^3.4.1" +schema-dts@^1.1.2: + version "1.1.5" + resolved "https://registry.yarnpkg.com/schema-dts/-/schema-dts-1.1.5.tgz#9237725d305bac3469f02b292a035107595dc324" + integrity sha512-RJr9EaCmsLzBX2NDiO5Z3ux2BVosNZN5jo0gWgsyKvxKIUL5R3swNvoorulAeL9kLB0iTSX7V6aokhla2m7xbg== schema-utils@^3.0.0, schema-utils@^3.1.1, schema-utils@^3.2.0: version "3.3.0" @@ -8328,6 +10141,16 @@ schema-utils@^4.0.0, schema-utils@^4.0.1: ajv-formats "^2.1.1" ajv-keywords "^5.1.0" +schema-utils@^4.3.0, schema-utils@^4.3.2: + version "4.3.2" + resolved "https://registry.yarnpkg.com/schema-utils/-/schema-utils-4.3.2.tgz#0c10878bf4a73fd2b1dfd14b9462b26788c806ae" + integrity sha512-Gn/JaSk/Mt9gYubxTtSn/QCV4em9mpAPiR1rqy/Ocu19u/G9J5WWdNoUT4SiV6mFC3y6cxyFcFwdzPM3FgxGAQ== + dependencies: + "@types/json-schema" "^7.0.9" + ajv "^8.9.0" + ajv-formats "^2.1.1" + ajv-keywords "^5.1.0" + section-matter@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/section-matter/-/section-matter-1.0.0.tgz#e9041953506780ec01d59f292a19c7b850b84167" @@ -8361,7 +10184,7 @@ semver@^6.3.1: resolved "https://registry.yarnpkg.com/semver/-/semver-6.3.1.tgz#556d2ef8689146e46dcea4bfdd095f3434dffcb4" integrity sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA== -semver@^7.3.2, semver@^7.3.5, semver@^7.3.7, semver@^7.5.4: +semver@^7.3.5, semver@^7.3.7, semver@^7.5.4: version "7.6.3" resolved "https://registry.yarnpkg.com/semver/-/semver-7.6.3.tgz#980f7b5550bc175fb4dc09403085627f9eb33143" integrity sha512-oVekP1cKtI+CTDvHWYFUcMtsK/00wmAEfyqKfNdARm8u1wNVhSgaX7A8d4UuIlUI5e84iEwOhs7ZPYRmzU9U6A== @@ -8385,25 +10208,24 @@ send@0.18.0: range-parser "~1.2.1" statuses "2.0.1" -serialize-javascript@^6.0.0, serialize-javascript@^6.0.1: +serialize-javascript@^6.0.0, serialize-javascript@^6.0.1, serialize-javascript@^6.0.2: version "6.0.2" resolved "https://registry.yarnpkg.com/serialize-javascript/-/serialize-javascript-6.0.2.tgz#defa1e055c83bf6d59ea805d8da862254eb6a6c2" integrity sha512-Saa1xPByTTq2gdeFZYLLo+RFE35NHZkAbqZeWNd3BpzppeVisAqpDjcp8dyf6uIvEqJRd46jemmyA4iFIeVk8g== dependencies: randombytes "^2.1.0" -serve-handler@^6.1.5: - version "6.1.5" - resolved "https://registry.yarnpkg.com/serve-handler/-/serve-handler-6.1.5.tgz#a4a0964f5c55c7e37a02a633232b6f0d6f068375" - integrity sha512-ijPFle6Hwe8zfmBxJdE+5fta53fdIY0lHISJvuikXB3VYFafRjMRpOffSPvCYsbKyBA7pvy9oYr/BT1O3EArlg== +serve-handler@^6.1.6: + version "6.1.6" + resolved "https://registry.yarnpkg.com/serve-handler/-/serve-handler-6.1.6.tgz#50803c1d3e947cd4a341d617f8209b22bd76cfa1" + integrity sha512-x5RL9Y2p5+Sh3D38Fh9i/iQ5ZK+e4xuXRd/pGbM4D13tgo/MGwbttUk8emytcr1YYzBYs+apnUngBDFYfpjPuQ== dependencies: bytes "3.0.0" content-disposition "0.5.2" - fast-url-parser "1.1.3" mime-types "2.1.18" minimatch "3.1.2" path-is-inside "1.0.2" - path-to-regexp "2.2.1" + path-to-regexp "3.3.0" range-parser "1.2.0" serve-index@^1.9.1: @@ -8475,20 +10297,11 @@ shebang-regex@^3.0.0: resolved "https://registry.yarnpkg.com/shebang-regex/-/shebang-regex-3.0.0.tgz#ae16f1644d873ecad843b0307b143362d4c42172" integrity sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A== -shell-quote@^1.7.3, shell-quote@^1.8.1: +shell-quote@^1.8.1: version "1.8.1" resolved "https://registry.yarnpkg.com/shell-quote/-/shell-quote-1.8.1.tgz#6dbf4db75515ad5bac63b4f1894c3a154c766680" integrity sha512-6j1W9l1iAs/4xYBI1SYOVZyFcCis9b4KCLQ8fgAGG07QvzaRLVVRQvAy85yNmmZSjYjg4MWh4gNvlPujU/5LpA== -shelljs@^0.8.5: - version "0.8.5" - resolved "https://registry.yarnpkg.com/shelljs/-/shelljs-0.8.5.tgz#de055408d8361bed66c669d2f000538ced8ee20c" - integrity sha512-TiwcRcrkhHvbrZbnRcFYMLl30Dfov3HKqzp5tO5b4pt6G/SezKcYhmDg15zXVBswHmctSAQKznqNW2LO5tTDow== - dependencies: - glob "^7.0.0" - interpret "^1.0.0" - rechoir "^0.6.2" - side-channel@^1.0.4: version "1.0.6" resolved "https://registry.yarnpkg.com/side-channel/-/side-channel-1.0.6.tgz#abd25fb7cd24baf45466406b1096b7831c9215f2" @@ -8572,6 +10385,11 @@ source-map-js@^1.0.1, source-map-js@^1.2.0: resolved "https://registry.yarnpkg.com/source-map-js/-/source-map-js-1.2.0.tgz#16b809c162517b5b8c3e7dcd315a2a5c2612b2af" integrity sha512-itJW8lvSA0TXEphiRoawsCksnlf8SyvmFzIhltqAHluXd88pkCd+cXJVHTDwdCr0IzwptSm035IHQktUu1QUMg== +source-map-js@^1.2.1: + version "1.2.1" + resolved "https://registry.yarnpkg.com/source-map-js/-/source-map-js-1.2.1.tgz#1ce5650fddd87abc099eda37dcff024c2667ae46" + integrity sha512-UXWMKhLOwVKb728IUtQPXxfYU+usdybtUrK/8uGE8CQMvrhOpwvzDBwj0QhSL7MQc7vIsISBG8VQ8+IDQxpfQA== + source-map-support@~0.5.20: version "0.5.21" resolved "https://registry.yarnpkg.com/source-map-support/-/source-map-support-0.5.21.tgz#04fe7c7f9e1ed2d662233c28cb2b35b9f63f6e4f" @@ -8643,10 +10461,10 @@ statuses@2.0.1: resolved "https://registry.yarnpkg.com/statuses/-/statuses-1.5.0.tgz#161c7dac177659fd9811f43771fa99381478628c" integrity sha512-OpZ3zP+jT1PI7I8nemJX4AKmAX070ZkYPVWV/AaKTJl+tXCTGyVdC1a4SL8RUQYEwk/f34ZX8UTykN68FwrqAA== -std-env@^3.0.1: - version "3.7.0" - resolved "https://registry.yarnpkg.com/std-env/-/std-env-3.7.0.tgz#c9f7386ced6ecf13360b6c6c55b8aaa4ef7481d2" - integrity sha512-JPbdCEQLj1w5GilpiHAx3qJvFndqybBysA3qUOnznweH4QbNYUsW/ea8QzSrnh0vNsezMMw5bcVool8lM0gwzg== +std-env@^3.7.0: + version "3.9.0" + resolved "https://registry.yarnpkg.com/std-env/-/std-env-3.9.0.tgz#1a6f7243b339dca4c9fd55e1c7504c77ef23e8f1" + integrity sha512-UGvjygr6F6tpH7o2qyqR6QYpwraIjKSdtzyBdyytFOHmPZY917kwdwLG0RbOjWOnKmnm3PeHjaoLLMie7kPLQw== string-width@^4.1.0, string-width@^4.2.0: version "4.2.3" @@ -8697,7 +10515,7 @@ stringify-object@^3.3.0: is-obj "^1.0.1" is-regexp "^1.0.0" -strip-ansi@^6.0.1: +strip-ansi@^6.0.0, strip-ansi@^6.0.1: version "6.0.1" resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-6.0.1.tgz#9e26c63d30f53443e9489495b2105d37b67a85d9" integrity sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A== @@ -8758,10 +10576,10 @@ stylis@4.2.0: resolved "https://registry.yarnpkg.com/stylis/-/stylis-4.2.0.tgz#79daee0208964c8fe695a42fcffcac633a211a51" integrity sha512-Orov6g6BB1sDfYgzWfTHDOxamtX1bE/zo104Dh9e6fqJ3PooipYyfJ0pUmrZO2wAvO8YbEyeFrkV91XTsGMSrw== -stylis@^4.1.3: - version "4.3.2" - resolved "https://registry.yarnpkg.com/stylis/-/stylis-4.3.2.tgz#8f76b70777dd53eb669c6f58c997bf0a9972e444" - integrity sha512-bhtUjWd/z6ltJiQwg0dUfxEJ+W+jdqQd8TbWLWyeIJHlnsqmGLRFFd8e5mA0AZi/zx90smXRlN66YMTcaSFifg== +stylis@^4.3.6: + version "4.3.6" + resolved "https://registry.yarnpkg.com/stylis/-/stylis-4.3.6.tgz#7c7b97191cb4f195f03ecab7d52f7902ed378320" + integrity sha512-yQ3rwFWRfwNUY7H5vpU0wfdkNSnvnJinhF9830Swlaxl03zsOjCfmX0ugac+3LtK0lYSgwL/KXc8oYL3mG4YFQ== supports-color@^5.3.0: version "5.5.0" @@ -8807,11 +10625,6 @@ svgo@^3.0.2, svgo@^3.2.0: csso "^5.0.5" picocolors "^1.0.0" -tapable@^1.0.0: - version "1.1.3" - resolved "https://registry.yarnpkg.com/tapable/-/tapable-1.1.3.tgz#a1fccc06b58db61fd7a45da2da44f5f3a3e67ba2" - integrity sha512-4WK/bYZmj8xLr+HUCODHGF1ZFzsYffasLUgEiMBY4fgtltdO6B4WJtlSbPaDTLpYTcGVwM2qLnFTICEcNxs3kA== - tapable@^2.0.0, tapable@^2.1.1, tapable@^2.2.0, tapable@^2.2.1: version "2.2.1" resolved "https://registry.yarnpkg.com/tapable/-/tapable-2.2.1.tgz#1967a73ef4060a82f12ab96af86d52fdb76eeca0" @@ -8828,6 +10641,17 @@ terser-webpack-plugin@^5.3.10, terser-webpack-plugin@^5.3.9: serialize-javascript "^6.0.1" terser "^5.26.0" +terser-webpack-plugin@^5.3.11: + version "5.3.14" + resolved "https://registry.yarnpkg.com/terser-webpack-plugin/-/terser-webpack-plugin-5.3.14.tgz#9031d48e57ab27567f02ace85c7d690db66c3e06" + integrity sha512-vkZjpUjb6OMS7dhV+tILUW6BhpDR7P2L/aQSAv+Uwk+m8KATX9EccViHTJR2qDtACKPIYndLGCyl3FMo+r2LMw== + dependencies: + "@jridgewell/trace-mapping" "^0.3.25" + jest-worker "^27.4.5" + schema-utils "^4.3.0" + serialize-javascript "^6.0.2" + terser "^5.31.1" + terser@^5.10.0, terser@^5.15.1, terser@^5.26.0: version "5.31.5" resolved "https://registry.yarnpkg.com/terser/-/terser-5.31.5.tgz#e48b7c65f32d2808e7dad803e4586a0bc3829b87" @@ -8838,10 +10662,15 @@ terser@^5.10.0, terser@^5.15.1, terser@^5.26.0: commander "^2.20.0" source-map-support "~0.5.20" -text-table@^0.2.0: - version "0.2.0" - resolved "https://registry.yarnpkg.com/text-table/-/text-table-0.2.0.tgz#7f5ee823ae805207c00af2df4a84ec3fcfa570b4" - integrity sha512-N+8UisAXDGk8PFXP4HAzVR9nbfmVJ3zYLAWiTIoqC5v5isinhr+r5uaO8+7r3BMfuNIufIsA7RdpVgacC2cSpw== +terser@^5.31.1: + version "5.43.1" + resolved "https://registry.yarnpkg.com/terser/-/terser-5.43.1.tgz#88387f4f9794ff1a29e7ad61fb2932e25b4fdb6d" + integrity sha512-+6erLbBm0+LROX2sPXlUYx/ux5PyE9K/a92Wrt6oA+WDAoFTdpHE5tCYCI5PNzq2y8df4rA+QgHLJuR4jNymsg== + dependencies: + "@jridgewell/source-map" "^0.3.3" + acorn "^8.14.0" + commander "^2.20.0" + source-map-support "~0.5.20" thunky@^1.0.2: version "1.1.0" @@ -8858,6 +10687,16 @@ tiny-warning@^1.0.0, tiny-warning@^1.0.2: resolved "https://registry.yarnpkg.com/tiny-warning/-/tiny-warning-1.0.3.tgz#94a30db453df4c643d0fd566060d60a875d84754" integrity sha512-lBN9zLN/oAf68o3zNXYrdCt1kP8WsiGW8Oo2ka41b2IM5JL/S1CTyX1rW0mb/zSuJun0ZUrDxx4sqvYS2FWzPA== +tinyexec@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/tinyexec/-/tinyexec-1.0.1.tgz#70c31ab7abbb4aea0a24f55d120e5990bfa1e0b1" + integrity sha512-5uC6DDlmeqiOwCPmK9jMSdOuZTh8bU39Ys6yidB+UTt5hfZUPGAypSgFRiEp+jbi9qH40BLDvy85jIU88wKSqw== + +tinypool@^1.0.2: + version "1.1.1" + resolved "https://registry.yarnpkg.com/tinypool/-/tinypool-1.1.1.tgz#059f2d042bd37567fbc017d3d426bdd2a2612591" + integrity sha512-Zba82s87IFq9A9XmjiX5uZA/ARWDrB03OHlq+Vw1fSdt0I+4/Kutwy8BP4Y/y/aORMo61FQ0vIb5j44vSo5Pkg== + to-fast-properties@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/to-fast-properties/-/to-fast-properties-2.0.0.tgz#dc5e698cbd079265bc73e0377681a4e4e83f616e" @@ -8900,6 +10739,11 @@ tslib@^2.0.3, tslib@^2.6.0: resolved "https://registry.yarnpkg.com/tslib/-/tslib-2.6.3.tgz#0438f810ad7a9edcde7a241c3d80db693c8cbfe0" integrity sha512-xNvxJEOUiWPGhUuUdQgAJPKOOJfGnIyKySOc09XkKsgdUV/3E2zvwZYdejjmRgPCgcym1juLH3226yA7sEFJKQ== +type-fest@^0.21.3: + version "0.21.3" + resolved "https://registry.yarnpkg.com/type-fest/-/type-fest-0.21.3.tgz#d260a24b0198436e133fa26a524a6d65fa3b2e37" + integrity sha512-t0rzBq87m3fVcduHDUFhKmyyX+9eo6WQjZvf51Ea/M0Q7+T374Jp1aUiyUl0GKxp8M/OETVHSDvmkyPgvX+X2w== + type-fest@^1.0.1: version "1.4.0" resolved "https://registry.yarnpkg.com/type-fest/-/type-fest-1.4.0.tgz#e9fb813fe3bf1744ec359d55d1affefa76f14be1" @@ -8925,6 +10769,11 @@ typedarray-to-buffer@^3.1.5: dependencies: is-typedarray "^1.0.0" +ufo@^1.5.4: + version "1.6.1" + resolved "https://registry.yarnpkg.com/ufo/-/ufo-1.6.1.tgz#ac2db1d54614d1b22c1d603e3aef44a85d8f146b" + integrity sha512-9a4/uxlTWJ4+a5i0ooc1rU7C7YOw3wT+UGqdeNNHWnOF9qcMBgLRS+4IYUqbczewFx4mLEig6gawh7X6mFlEkA== + undici-types@~6.13.0: version "6.13.0" resolved "https://registry.yarnpkg.com/undici-types/-/undici-types-6.13.0.tgz#e3e79220ab8c81ed1496b5812471afd7cf075ea5" @@ -9007,13 +10856,6 @@ unist-util-remove-position@^5.0.0: "@types/unist" "^3.0.0" unist-util-visit "^5.0.0" -unist-util-stringify-position@^3.0.0: - version "3.0.3" - resolved "https://registry.yarnpkg.com/unist-util-stringify-position/-/unist-util-stringify-position-3.0.3.tgz#03ad3348210c2d930772d64b489580c13a7db39d" - integrity sha512-k5GzIBZ/QatR8N5X2y+drfpWG8IDBzdnVj6OInRNWm1oXrzydiaAT2OQiA8DPRRZyAKb9b6I2a6PxYklZD0gKg== - dependencies: - "@types/unist" "^2.0.0" - unist-util-stringify-position@^4.0.0: version "4.0.0" resolved "https://registry.yarnpkg.com/unist-util-stringify-position/-/unist-util-stringify-position-4.0.0.tgz#449c6e21a880e0855bf5aabadeb3a740314abac2" @@ -9056,6 +10898,14 @@ update-browserslist-db@^1.1.0: escalade "^3.1.2" picocolors "^1.0.1" +update-browserslist-db@^1.1.3: + version "1.1.3" + resolved "https://registry.yarnpkg.com/update-browserslist-db/-/update-browserslist-db-1.1.3.tgz#348377dd245216f9e7060ff50b15a1b740b75420" + integrity sha512-UxhIZQ+QInVdunkDAaiazvvT/+fXL5Osr0JZlJulepYu6Jd7qJtDZjlur0emRlT71EN3ScPoE7gvsuIKKNavKw== + dependencies: + escalade "^3.2.0" + picocolors "^1.1.1" + update-notifier@^6.0.2: version "6.0.2" resolved "https://registry.yarnpkg.com/update-notifier/-/update-notifier-6.0.2.tgz#a6990253dfe6d5a02bd04fbb6a61543f55026b60" @@ -9112,26 +10962,16 @@ utils-merge@1.0.1: resolved "https://registry.yarnpkg.com/utils-merge/-/utils-merge-1.0.1.tgz#9f95710f50a267947b2ccc124741c1028427e713" integrity sha512-pMZTvIkT1d+TFGvDOqodOclx0QWkkgi6Tdoa8gC8ffGAAqz9pzPTZWAybbsHHoED/ztMtkv/VoYTYyShUn81hA== +uuid@^11.1.0: + version "11.1.0" + resolved "https://registry.yarnpkg.com/uuid/-/uuid-11.1.0.tgz#9549028be1753bb934fc96e2bca09bb4105ae912" + integrity sha512-0/A9rDy9P7cJ+8w1c9WD9V//9Wj15Ce2MPz8Ri6032usz+NfePxx5AcN3bN+r6ZL6jEo066/yNYB3tn4pQEx+A== + uuid@^8.3.2: version "8.3.2" resolved "https://registry.yarnpkg.com/uuid/-/uuid-8.3.2.tgz#80d5b5ced271bb9af6c445f21a1a04c606cefbe2" integrity sha512-+NYs2QeMWy+GWFOEm9xnn6HCDp0l7QBD7ml8zLUmJ+93Q5NF0NocErnwkTkXVFNiX3/fpC6afS8Dhb/gz7R7eg== -uuid@^9.0.0: - version "9.0.1" - resolved "https://registry.yarnpkg.com/uuid/-/uuid-9.0.1.tgz#e188d4c8853cc722220392c424cd637f32293f30" - integrity sha512-b+1eJOlsR9K8HJpow9Ok3fiWOWSIcIzXodvv0rQjVoOVNpWMpxf1wZNpt4y9h10odCNrqnYp1OBzRktckBe3sA== - -uvu@^0.5.0: - version "0.5.6" - resolved "https://registry.yarnpkg.com/uvu/-/uvu-0.5.6.tgz#2754ca20bcb0bb59b64e9985e84d2e81058502df" - integrity sha512-+g8ENReyr8YsOc6fv/NVJs2vFdHBnBNdfE49rshrTzDWOlUx4Gq7KOS2GD8eqhy2j+Ejq29+SbKH8yjkAqXqoA== - dependencies: - dequal "^2.0.0" - diff "^5.0.0" - kleur "^4.0.3" - sade "^1.7.3" - value-equal@^1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/value-equal/-/value-equal-1.0.1.tgz#1e0b794c734c5c0cade179c437d356d931a34d6c" @@ -9167,6 +11007,41 @@ vfile@^6.0.0, vfile@^6.0.1: unist-util-stringify-position "^4.0.0" vfile-message "^4.0.0" +vscode-jsonrpc@8.2.0: + version "8.2.0" + resolved "https://registry.yarnpkg.com/vscode-jsonrpc/-/vscode-jsonrpc-8.2.0.tgz#f43dfa35fb51e763d17cd94dcca0c9458f35abf9" + integrity sha512-C+r0eKJUIfiDIfwJhria30+TYWPtuHJXHtI7J0YlOmKAo7ogxP20T0zxB7HZQIFhIyvoBPwWskjxrvAtfjyZfA== + +vscode-languageserver-protocol@3.17.5: + version "3.17.5" + resolved "https://registry.yarnpkg.com/vscode-languageserver-protocol/-/vscode-languageserver-protocol-3.17.5.tgz#864a8b8f390835572f4e13bd9f8313d0e3ac4bea" + integrity sha512-mb1bvRJN8SVznADSGWM9u/b07H7Ecg0I3OgXDuLdn307rl/J3A9YD6/eYOssqhecL27hK1IPZAsaqh00i/Jljg== + dependencies: + vscode-jsonrpc "8.2.0" + vscode-languageserver-types "3.17.5" + +vscode-languageserver-textdocument@~1.0.11: + version "1.0.12" + resolved "https://registry.yarnpkg.com/vscode-languageserver-textdocument/-/vscode-languageserver-textdocument-1.0.12.tgz#457ee04271ab38998a093c68c2342f53f6e4a631" + integrity sha512-cxWNPesCnQCcMPeenjKKsOCKQZ/L6Tv19DTRIGuLWe32lyzWhihGVJ/rcckZXJxfdKCFvRLS3fpBIsV/ZGX4zA== + +vscode-languageserver-types@3.17.5: + version "3.17.5" + resolved "https://registry.yarnpkg.com/vscode-languageserver-types/-/vscode-languageserver-types-3.17.5.tgz#3273676f0cf2eab40b3f44d085acbb7f08a39d8a" + integrity sha512-Ld1VelNuX9pdF39h2Hgaeb5hEZM2Z3jUrrMgWQAu82jMtZp7p3vJT3BzToKtZI7NgQssZje5o0zryOrhQvzQAg== + +vscode-languageserver@~9.0.1: + version "9.0.1" + resolved "https://registry.yarnpkg.com/vscode-languageserver/-/vscode-languageserver-9.0.1.tgz#500aef82097eb94df90d008678b0b6b5f474015b" + integrity sha512-woByF3PDpkHFUreUa7Hos7+pUWdeWMXRd26+ZX2A8cFx6v/JPTtd4/uN0/jB6XQHYaOlHbio03NTHCqrgG5n7g== + dependencies: + vscode-languageserver-protocol "3.17.5" + +vscode-uri@~3.0.8: + version "3.0.8" + resolved "https://registry.yarnpkg.com/vscode-uri/-/vscode-uri-3.0.8.tgz#1770938d3e72588659a172d0fd4642780083ff9f" + integrity sha512-AyFQ0EVmsOZOlAnxoFOGOq1SQDWAB7C6aqMGS23svWAllfOaxbuFvcT8D1i8z3Gyn8fraVeZNNmN6e9bxxXkKw== + watchpack@^2.4.1: version "2.4.1" resolved "https://registry.yarnpkg.com/watchpack/-/watchpack-2.4.1.tgz#29308f2cac150fa8e4c92f90e0ec954a9fed7fff" @@ -9187,12 +11062,7 @@ web-namespaces@^2.0.0: resolved "https://registry.yarnpkg.com/web-namespaces/-/web-namespaces-2.0.1.tgz#1010ff7c650eccb2592cebeeaf9a1b253fd40692" integrity sha512-bKr1DkiNa2krS7qxNtdrtHAmzuYGFQLiQ13TsorsdT6ULTkPLKuu5+GsFpDlg6JFjUTwX2DyhMPG2be8uPrqsQ== -web-worker@^1.2.0: - version "1.3.0" - resolved "https://registry.yarnpkg.com/web-worker/-/web-worker-1.3.0.tgz#e5f2df5c7fe356755a5fb8f8410d4312627e6776" - integrity sha512-BSR9wyRsy/KOValMgd5kMyr3JzpdeoR9KVId8u5GVlTTAtNChlsE4yTxeY7zMdNSyOmoKBv8NH2qeRY9Tg+IaA== - -webpack-bundle-analyzer@^4.9.0: +webpack-bundle-analyzer@^4.10.2: version "4.10.2" resolved "https://registry.yarnpkg.com/webpack-bundle-analyzer/-/webpack-bundle-analyzer-4.10.2.tgz#633af2862c213730be3dbdf40456db171b60d5bd" integrity sha512-vJptkMm9pk5si4Bv922ZbKLV8UTT4zib4FPgXMhgzUny0bfDDkLXAVQs3ly3fS4/TN9ROFtb0NFrm04UXFE/Vw== @@ -9221,7 +11091,7 @@ webpack-dev-middleware@^5.3.4: range-parser "^1.2.1" schema-utils "^4.0.0" -webpack-dev-server@^4.15.1: +webpack-dev-server@^4.15.2: version "4.15.2" resolved "https://registry.yarnpkg.com/webpack-dev-server/-/webpack-dev-server-4.15.2.tgz#9e0c70a42a012560860adb186986da1248333173" integrity sha512-0XavAZbNJ5sDrCbkpWL8mia0o5WPOd2YGtxrEiZkBK9FjLppIUK2TgxK6qGD2P3hUXTJNNPVibrerKcx5WkR1g== @@ -9266,11 +11136,25 @@ webpack-merge@^5.9.0: flat "^5.0.2" wildcard "^2.0.0" +webpack-merge@^6.0.1: + version "6.0.1" + resolved "https://registry.yarnpkg.com/webpack-merge/-/webpack-merge-6.0.1.tgz#50c776868e080574725abc5869bd6e4ef0a16c6a" + integrity sha512-hXXvrjtx2PLYx4qruKl+kyRSLc52V+cCvMxRjmKwoA+CBbbF5GfIBtR6kCvl0fYGqTUPKB+1ktVmTHqMOzgCBg== + dependencies: + clone-deep "^4.0.1" + flat "^5.0.2" + wildcard "^2.0.1" + webpack-sources@^3.2.3: version "3.2.3" resolved "https://registry.yarnpkg.com/webpack-sources/-/webpack-sources-3.2.3.tgz#2d4daab8451fd4b240cc27055ff6a0c2ccea0cde" integrity sha512-/DyMEOrDgLKKIG0fmvtz+4dUX/3Ghozwgm6iPp8KRhvn+eQf9+Q7GWxVNMk3+uCPWfdXYC4ExGBckIXdFEfH1w== +webpack-sources@^3.3.3: + version "3.3.3" + resolved "https://registry.yarnpkg.com/webpack-sources/-/webpack-sources-3.3.3.tgz#d4bf7f9909675d7a070ff14d0ef2a4f3c982c723" + integrity sha512-yd1RBzSGanHkitROoPFd6qsrxt+oFhg/129YzheDGqeustzX0vTZJZsSsQjVQC4yzBQ56K55XU8gaNCtIzOnTg== + webpack@^5.88.1: version "5.93.0" resolved "https://registry.yarnpkg.com/webpack/-/webpack-5.93.0.tgz#2e89ec7035579bdfba9760d26c63ac5c3462a5e5" @@ -9301,15 +11185,50 @@ webpack@^5.88.1: watchpack "^2.4.1" webpack-sources "^3.2.3" -webpackbar@^5.0.2: - version "5.0.2" - resolved "https://registry.yarnpkg.com/webpackbar/-/webpackbar-5.0.2.tgz#d3dd466211c73852741dfc842b7556dcbc2b0570" - integrity sha512-BmFJo7veBDgQzfWXl/wwYXr/VFus0614qZ8i9znqcl9fnEdiVkdbi0TedLQ6xAK92HZHDJ0QmyQ0fmuZPAgCYQ== +webpack@^5.95.0: + version "5.100.2" + resolved "https://registry.yarnpkg.com/webpack/-/webpack-5.100.2.tgz#e2341facf9f7de1d702147c91bcb65b693adf9e8" + integrity sha512-QaNKAvGCDRh3wW1dsDjeMdDXwZm2vqq3zn6Pvq4rHOEOGSaUMgOOjG2Y9ZbIGzpfkJk9ZYTHpDqgDfeBDcnLaw== + dependencies: + "@types/eslint-scope" "^3.7.7" + "@types/estree" "^1.0.8" + "@types/json-schema" "^7.0.15" + "@webassemblyjs/ast" "^1.14.1" + "@webassemblyjs/wasm-edit" "^1.14.1" + "@webassemblyjs/wasm-parser" "^1.14.1" + acorn "^8.15.0" + acorn-import-phases "^1.0.3" + browserslist "^4.24.0" + chrome-trace-event "^1.0.2" + enhanced-resolve "^5.17.2" + es-module-lexer "^1.2.1" + eslint-scope "5.1.1" + events "^3.2.0" + glob-to-regexp "^0.4.1" + graceful-fs "^4.2.11" + json-parse-even-better-errors "^2.3.1" + loader-runner "^4.2.0" + mime-types "^2.1.27" + neo-async "^2.6.2" + schema-utils "^4.3.2" + tapable "^2.1.1" + terser-webpack-plugin "^5.3.11" + watchpack "^2.4.1" + webpack-sources "^3.3.3" + +webpackbar@^6.0.1: + version "6.0.1" + resolved "https://registry.yarnpkg.com/webpackbar/-/webpackbar-6.0.1.tgz#5ef57d3bf7ced8b19025477bc7496ea9d502076b" + integrity sha512-TnErZpmuKdwWBdMoexjio3KKX6ZtoKHRVvLIU0A47R0VVBDtx3ZyOJDktgYixhoJokZTYTt1Z37OkO9pnGJa9Q== dependencies: - chalk "^4.1.0" - consola "^2.15.3" + ansi-escapes "^4.3.2" + chalk "^4.1.2" + consola "^3.2.3" + figures "^3.2.0" + markdown-table "^2.0.0" pretty-time "^1.1.0" - std-env "^3.0.1" + std-env "^3.7.0" + wrap-ansi "^7.0.0" websocket-driver@>=0.5.1, websocket-driver@^0.7.4: version "0.7.4" @@ -9325,13 +11244,6 @@ websocket-extensions@>=0.1.1: resolved "https://registry.yarnpkg.com/websocket-extensions/-/websocket-extensions-0.1.4.tgz#7f8473bc839dfd87608adb95d7eb075211578a42" integrity sha512-OqedPIGOfsDlo31UNwYbCFMSaO9m9G/0faIHj5/dZFDMFqPTcx6UwqyOy3COEaEOg/9VsGIpdqn62W5KhoKSpg== -which@^1.3.1: - version "1.3.1" - resolved "https://registry.yarnpkg.com/which/-/which-1.3.1.tgz#a45043d54f5805316da8d62f9f50918d3da70b0a" - integrity sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ== - dependencies: - isexe "^2.0.0" - which@^2.0.1: version "2.0.2" resolved "https://registry.yarnpkg.com/which/-/which-2.0.2.tgz#7c6a8dd0a636a0327e10b59c9286eee93f3f51b1" @@ -9346,11 +11258,20 @@ widest-line@^4.0.1: dependencies: string-width "^5.0.1" -wildcard@^2.0.0: +wildcard@^2.0.0, wildcard@^2.0.1: version "2.0.1" resolved "https://registry.yarnpkg.com/wildcard/-/wildcard-2.0.1.tgz#5ab10d02487198954836b6349f74fff961e10f67" integrity sha512-CC1bOL87PIWSBhDcTrdeLo6eGT7mCFtrg0uIJtqJUFyK+eJnzl8A1niH56uu7KMa5XFrtiV+AQuHO3n7DsHnLQ== +wrap-ansi@^7.0.0: + version "7.0.0" + resolved "https://registry.yarnpkg.com/wrap-ansi/-/wrap-ansi-7.0.0.tgz#67e145cff510a6a6984bdf1152911d69d2eb9e43" + integrity sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q== + dependencies: + ansi-styles "^4.0.0" + string-width "^4.1.0" + strip-ansi "^6.0.0" + wrap-ansi@^8.0.1, wrap-ansi@^8.1.0: version "8.1.0" resolved "https://registry.yarnpkg.com/wrap-ansi/-/wrap-ansi-8.1.0.tgz#56dc22368ee570face1b49819975d9b9a5ead214" @@ -9402,16 +11323,11 @@ yallist@^3.0.2: resolved "https://registry.yarnpkg.com/yallist/-/yallist-3.1.1.tgz#dbb7daf9bfd8bac9ab45ebf602b8cbad0d5d08fd" integrity sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g== -yaml@^1.10.0, yaml@^1.7.2: +yaml@^1.10.0: version "1.10.2" resolved "https://registry.yarnpkg.com/yaml/-/yaml-1.10.2.tgz#2301c5ffbf12b467de8da2333a459e29e7920e4b" integrity sha512-r3vXyErRCYJ7wg28yvBY5VSoAF8ZvlcW9/BwUzEtUsjvX/DKs24dIkuwjtuprwJJHsbyUbLApepYTR1BN4uHrg== -yocto-queue@^0.1.0: - version "0.1.0" - resolved "https://registry.yarnpkg.com/yocto-queue/-/yocto-queue-0.1.0.tgz#0294eb3dee05028d31ee1a5fa2c556a6aaf10a1b" - integrity sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q== - yocto-queue@^1.0.0: version "1.1.1" resolved "https://registry.yarnpkg.com/yocto-queue/-/yocto-queue-1.1.1.tgz#fef65ce3ac9f8a32ceac5a634f74e17e5b232110" From 2646ae09c2ddf0c388001791a8d0e699477f5f1b Mon Sep 17 00:00:00 2001 From: Jeffrey Aven Date: Tue, 22 Jul 2025 06:27:33 +1000 Subject: [PATCH 06/10] website updates --- ...iew-web-deploy.yml => test-web-deploy.yml} | 0 website/docs/index.md | 2 +- website/docusaurus.config.js | 26 ++++++++------ website/src/pages/cookbooks.js | 10 ------ website/src/pages/index.js | 32 ------------------ .../img/stackql-deploy-featured-image.png | Bin 0 -> 36037 bytes website/static/img/stackql-deploy-logo.png | Bin 18730 -> 0 bytes 7 files changed, 17 insertions(+), 53 deletions(-) rename .github/workflows/{preview-web-deploy.yml => test-web-deploy.yml} (100%) delete mode 100644 website/src/pages/cookbooks.js delete mode 100644 website/src/pages/index.js create mode 100644 website/static/img/stackql-deploy-featured-image.png delete mode 100644 website/static/img/stackql-deploy-logo.png diff --git a/.github/workflows/preview-web-deploy.yml b/.github/workflows/test-web-deploy.yml similarity index 100% rename from .github/workflows/preview-web-deploy.yml rename to .github/workflows/test-web-deploy.yml diff --git a/website/docs/index.md b/website/docs/index.md index 7e7b4c0..27c40c7 100644 --- a/website/docs/index.md +++ b/website/docs/index.md @@ -13,7 +13,7 @@ draft: false unlisted: false --- -![StackQL Deploy](/img/stackql-deploy-logo.png) +![StackQL Deploy](/img/stackql-deploy-featured-image.png) ## Model Driven, Declarative, State File-less, Multi-Cloud IaC diff --git a/website/docusaurus.config.js b/website/docusaurus.config.js index 1f9d40b..ddb6177 100644 --- a/website/docusaurus.config.js +++ b/website/docusaurus.config.js @@ -35,6 +35,7 @@ const config = { sidebarPath: './sidebars.js', // Remove this to remove the "edit this page" links. editUrl: 'https://github.com/stackql/stackql-deploy/tree/main/website/', + routeBasePath: '/', // Set the docs to be the root of the site }, // blog: { // showReadingTime: true, @@ -64,18 +65,18 @@ const config = { image: 'img/stackql-cover.png', navbar: { logo: { - alt: 'StackQL', + alt: 'StackQL Deploy', href: '/', src: 'img/stackql-deploy-logo.svg', srcDark: 'img/stackql-deploy-logo-white.svg', }, items: [ - { - type: 'docSidebar', - sidebarId: 'docsSidebar', - position: 'left', - label: 'Deploy Docs', - }, + // { + // type: 'docSidebar', + // sidebarId: 'docsSidebar', + // position: 'left', + // label: 'Deploy Docs', + // }, { to: '/stackqldocs', position: 'left', @@ -124,7 +125,12 @@ const config = { to: '/registry', }, ] - }, + }, + { + to: '/downloads', + position: 'left', + label: 'Downloads', + }, // {to: '/blog', label: 'Blog', position: 'left'}, { href: 'https://github.com/stackql/stackql', @@ -139,8 +145,8 @@ const config = { logo: { alt: 'StackQL', href: 'https://stackql.io/', - src: 'img/logo-original.svg', - srcDark: 'img/logo-white.svg', + src: 'img/stackql-deploy-logo.svg', + srcDark: 'img/stackql-deploy-logo-white.svg', }, links: [ { diff --git a/website/src/pages/cookbooks.js b/website/src/pages/cookbooks.js deleted file mode 100644 index 7982b54..0000000 --- a/website/src/pages/cookbooks.js +++ /dev/null @@ -1,10 +0,0 @@ -import React from 'react'; -import Head from '@docusaurus/Head'; - -export default function Cookbooks() { - return ( - - - - ); -}; \ No newline at end of file diff --git a/website/src/pages/index.js b/website/src/pages/index.js deleted file mode 100644 index e3c0717..0000000 --- a/website/src/pages/index.js +++ /dev/null @@ -1,32 +0,0 @@ -// import React from 'react'; -// import Head from '@docusaurus/Head'; - -// export default function Home() { -// return ( -// -// -// -// ); -// } - - -import React from 'react'; -import Layout from '@theme/Layout'; -import useDocusaurusContext from '@docusaurus/useDocusaurusContext'; - -export default function Home() { - const {siteConfig} = useDocusaurusContext(); - - return ( - -
-
-

StackQL Deploy

-

Development Mode

-
-
-
- ); -} \ No newline at end of file diff --git a/website/static/img/stackql-deploy-featured-image.png b/website/static/img/stackql-deploy-featured-image.png new file mode 100644 index 0000000000000000000000000000000000000000..086322f8581292070a0019fda8e8fa3d06509a2a GIT binary patch literal 36037 zcmdS9Ra9Niwl|2o26qS++}$;}yKmgtz{cG*XmEFT2<{dL4#6!r!QI)-|D5}s@80fy z=+XVu4||WARdfETrjAu>%_tS6uc%0bNDvSZsIoGWY7h{Rw;$s=1h|iXoqXhZ+}AX6C7h#(+fI&3s_Kst&F{ANxL%m8yIQwwHK2jB-c1cac7ClFv}X8|HN zwXm{r6r#Q8?4>2QF&CoM=2B!;1WH&~+sJskSg3m|X_$H2nemy^iU=bKdh&k&I9PxH zrl(7tlh8R?WiI$<4*g;$H~=2>lm`go_0LWMMAM&dSck#LC0O z&L+t6e_HxykN+(orakBC7aq+VLN8n$J|C3+C$<56AA610e|HJmb=l;bj z$nuYM?QQ;Tlz$QbWtIO({M%&zX8dn%`G4*zbF=@r3Fzix|E~}*H)FA|w{Wm<1pVVA zw*PXHxfwsm24rvXzg;9|5Bi@j`iMP#dw`>r5UnSZxrHUb%^pN6>{OynQ_`M;?7U&w+i|83L%4@v_6Td4mNjQ`5Gf5Px%;X^}? z|I+Y-;umuRSv$E1%UM`jx>$ITi@94k3jV|PzZO1H;9tl6e`V~C9Q}{A|HnBz0l@#3 z4j*j%{|aL#7Y!#TdtnKHqdS1y+{sKxQtYdOy1A>ksg5SOo2!M3kfxZF4L3+iM@B}9 z+|&i&XfCAwkGWM9$UznkK>LqO5E5khKjZ!1>hN#1KFY&KpIr$*|Q;;k^&}m&h z$_-WdZZQM|IfSgFn1*NesUN(jxwh9)4uL}=r>kW#lOqPgZ+w}fNyy#1bGb}{6sDxb zk&=I#-Tv)m`+Y${DOvYkLV;=BPlajYPpnW*`xx8Dr8_RllVVv3o;0U+?s;j%5YNyr z(M3E&o}0L>t!Ts=p|{(yW!w41QTWenDK}W`9dlm249O2z8NL|PDDcjY0znu3hn;&I z&QEa>MIPk~*MgV%G&j_Bc>c5*A~(`3Mu77TprOE?hhqq1-`3JY1s~aqt1hV(d%1%; zxdEIJ(j_#I1x`UA?h&3h=24b+H7yJ7)tq?v;WFSlgV&d*v@vu`o_jR+mGkrsrA}bS zS;%)RYzZeT)zJu{!dEopLfaOl3^76uRMPTQxJzF}q}mVxegi`(T3YQ=1D8X?`>ABxi02uo~y zZ`>`jk!pBiQWgoy%Waj}E#3)8Q;NWm%E_f2D;W$Kidm`8P$5o2}Jn@2UjHUb}_ z?)t^fp$iq3IGp>|U;eD%R9o3rb3|xxd|uB|5bjc@bUmgVz#p2Us?YI~48iwIg^{K@ zjT*XCDhk8$U*$#8<7Wlkc<>4Ox z-MU2?C64Ed8yqCa~Jh?b4c}35Bjjz1LA-m8~?fRSkapogP$rOZI1|AYUD2}URx4`guMft=t|$BwC`5=n1bA#O;^SC?un+ zLHCFtdLkr6f)`=b3F;76u>nLFWh>*+^8kM5{ z`Xv5yMjlhp8kCpr49m$6TOqiMVjD!xI+Wn`gPmunfQt1-GmZH4XP380jk;t=;1ybf zX=3TyW%s$_yx~~Eu`3`T57OtxcXM#N1?Y!m;1qtPh0oJxL}}PTIKsL;`gCce>}^kj zy`%C-k{fsPK9FgNOp@WlC3A2OB_V=<@&>_vJF=uB909e_VbwJ&@Dk;8GiN3*pbc-u zO5P+b<4D!SpFtHBHAwN7BwK0lq=xk#G6c*^9DdPvV#ccU7cx{@njG3lAAE?pj{NY1 z*!3=m!V7$t-^LJ{BkD**!1vOVk1^Arbg z9mW+*jxl$5OA!PmJ;YF1BTXeCq9X9 z9lR+V-H3@JVtuV4%6)mid{zc@!R8(#1K(h`*Q2C(Gn;_ewFh9|ZuF6}%kGD5CrE$c zViuMG+D+v1s93){89P1e=nV)@Km6CyZuq-S-d-s0tB7buZ?WpImMg7b(O&Ps9`se~Ku7+?Dfnn-9dOxzkozE57-2~Q z_{N0Nu_+pC#C@b(gac8-N)$Ouo7A3!r~i3NKo{F22S=CX z?Qj4mZ@(07>G7?eltrIM?|LfeiFz8Mf32Tg6scG^Y3^7wZAWgRHc&DEX7}#$Az(ge z24;r!%mi`-5g({>dl`QdxO6G}dchm(^<*EKK29+>?T-@%E4nyZO~%m3WfC~~N|l0@ zOz&kkVrlwT^ac2s$KC5zie^bgMm0u+puN^}@=fyb)2FRVaZ8hL(^3aFPH%(ro2!40 zb!Z8sX#){WqVPX&%LgL}>0-+fJihR;J}CFKt+Aeena_>iw%#02CBL>Ana7gbwQeKj zJ*S3CxT%8)Z$zuXH}8NQi3`n>?s2XmsWJM@>0s?1e|b~S@{pzzQA%J*eMErLbxyHR zOWy)M&v=WzyTVeSn_-QS`^|hR0Opr#y+KW^0h0U+jes?(Y@-(GbbZ3(l46dk!EP70 z-L2hkldm0m&(dX^9LmoVBBOvdU8R79-II`fZPa8UYw(+-D!zN>mT`RqaS|+5G%(@v z0yZ(XX1d?U>-ii}(B5~ZIbr*k74*U;i*{D2Hl?Z#haOdU+yRf}5tU+q&iRAD=P9ez zK(Ak~PH>h=DBZ1-+q?^;-4U>xX0@9!CpX5QSvTZktKNN0SeAF7dR_k<7nhXX5T}P_ z5@EbZvi};O*{1LCof*D?wm_toT+gt{GkHbD{Zl?%FVQu;L{U4n+mTS88N(WwSGb)q z0c)4o;Ioo*nrb`HA&!#6X#75ZMZ8TwPNU%w042!N3n$1|XNKZ;13BGko|iV3)*)%; z`vc(&*}TFU#>u6>JJ=4gc5obZo~Ea?;7$}k0wiMs9=S^tpyKn-<%8>2+KUC0ZbMW<=LGam zvDFBGn}K@Ua~x!2$%(jMcOh*DeKNaa>+e(Bx-or(W>K$u1c1=)m1ArJbaqTmy+_0b z6q^CRq$sa5tGXUiJ$!0G!-Th;yFY#sHRpO4mDRK~e+O*V zG%uw%Dz@B{3PgY~4;jG-v)2uZ1g+3|oW9+-G1E@GWxFm~TXKY4$a-u@jP`xRzTB)= z!f`J$RLsod{&-{)v4SpJX4NnnxD%O0B0-k#+#yR^l8QbDCW6yMtE0L?p-&DtLGXmR?bANXaT`Awu?nvQ;SwI)V+e>_ z(PqS};L9Noe&i#Dt;e_E4laj0&(Ipoh4~P00;CD3gHr{T7uvvC$LpYZLLqspe4S-ZB8fd8WIbgqldeS z;bkI7rW_V5J>zGsyrI_;<=%Il8s&`3Db(X`-xRsG+scGeUPrX#t|v{ zAX+Ds7+9a6%#zv#sG0>p!6L@tn)QjA?cI;Ho*T1pw6_k-i1ZV7aI_0x9FgT*FUH{r zjsM>3Yo(yJG-0bc328Eq^<^87rnVwSdO&OpfQmwoUA{n#s;*h0|Ur2?XHLLJHO=E{=AUdDHHEKX0yo95f~q;y2xNV zDZ~&96|q79S1qtU`A8&t<0u;Lr=}H@xzOZbyEe_{1eKndeKyHWcnpzi!(zV?Z07_D z=LtK(zmDYJt-GzG^TUZLOcUQEK7jFiUh+~^oCUFO^_!YGxj5B%n!j?mdrNCL)=IaU zJN*z9_Lst~UY*uO^-f6b*Sm8i9_iH4LCKt-afR=8by;eq*5Q2=f~?+2g_BhA8fW-= z?A!O5adiKV&TKCwGEHXcXjBj}!Y>5l=g>v`n4uk{*v}dLg&Fk~0_Et(?T+>8$-^Iu z8{0Y<(qSjhW+udMvWs&9pL~CR$%dY=MaA?ne(mTFF%jOv75R%u(vpj2#-+sPKmHp- z7c+SC*g@#%u0AF(U7z~q#l`l>Mt0atEb4MU{?FaUAKmNWNflh;badSBlM_!~V87qi z4Gd!|bk7;Ko5t(3#bai|EjtUptpHsi>nHfTp>Tcf@RI;3`0*8)7RREa7ZxLbs_)P(z&Dezz#mPNcq(228he^taapr$6~;N8Z_ zI-c3&Q`OLRYD_^y219iQG{s2%K;EiV?Qg>gw83l$d`u+d}J$~ z6y<_n80uv3)5IgWq;$b5YK4geS&N>;gNHf-4Q*)SHpoKXo!Wo-%*H`KVi;qD@|U86 zn4~e-T%&F1W3|#2IE7=6mavW6iW~RO@^P_%>bW$3>V5C_8!4~68}|2#tbi^EKfnG@PLI%656}{@{AJ2V8%AJck6wUFUwEsQR#bZ z@4#i2*J$j4W?+PmcqBYCag5Td6x!rP5}M{1m%+lgYMj}-sh$&6v>{t?J&W{SEP=Pp zliXey-Jwk=(%G$nUpAS~`%eWm>a<7cwo)HEDf6Z%k(6#WaJnOk#4YG^r@=05#P^1( z%0m*i;{jz?CsUTS%Tx9^jK_t)bF770%9psID-TI(XbFakm?80}e@|w$bu+q_I@I)> zjzpI~zmXSBceN-m1Ca7#hQ$B0x=hHi_Re47R!+RT`P357m@93k;B4<7dhtxF!SF!S z)F3O?&bKi0R{DTNv~40v97|Qb>(Me@ry8so6*%^MV#>Ii3G^T(lIUCDtXNOkw)H6a z+IM1nncZyM%T{BMf^5W?ud{T}DoY;I88>iC4TATxz^%$WNHcA|y~mbi^ek?^&k>oyAmzzop1V{nggc-mL3H zL$G!+p8qlS#%1qf3`fQCzIq#M66E@wou%a6bYrM#|w4sE0nQ!i$ zD6(07Ksm3k9-tC5r5tneN!U4s_Kvxn_}&IFy3(c}KU)_zxknM>UXp1~t6ha*E)S=8 zWY81&^@0iLS0Zk#Geriow~n%;`Z&=9=!)gZfy#6g3obs5R%*BA?6x-H$KT)3X!XV~ zDal{odzX!g)~=+~TNE>G3B)Vo>BzVnTquphfj-gGKeb`PK&`)=^AD z^{y#rcR2Yng(p%L2by}y)91kTJZS}PoR&b{*QA=JKmX=9VhG9d0(+KcELnLM7KDk} z{Q<`+V~+^cZ;4Qqrrunr87Q86JabUQS<8QQ8!;N0aLdQX74<6DNi~hZ_fC)K*+a>p zpKG{G*tSDdfA7iVp2+s^O(Iv0RWE$uVt$2-T-#O4%s6BiMbKDX6IME$pYZ+aX-v|j zy7bp{mYlzeW^!WHxEbjk?%?}?uub&Ok2$RANJfg0sP`(9 z8pdDT6Cy2Ne}-j)~2O3*W8 z2Knf_#9%NE<03<)fWSVVw7$c7!qpqVY@NOTqjvv;>SrGZWJ#Q*iHId_R!WEc_x>9b zLnD}_vWLOv8iFe`Aw_lt{)zaG0iU6J9(f7^%r<%if=ahD!Wf25B0`6gdgV358RE?1B@F8wnA$Cb&JYS^-0aK#w88egWpsh14iIS9KiU2Ow zY$}Wukx(#YNH^LD-ggJxPa}?hS*%AsO^z-e+y}tJ)xuotW?%-)-sIAU=OPu2?RG== zv|baG;8acw)12susUV75GCSgv`{K!lWYtapcU3p(e~AUt-RGHccK%Sxu^xgU?U%yk zJghkl9*mAbHiSHRqDsH;#&GFO=38Ft-}$?+-8{fc(dLA93H5NVPLJ~X+y5nuFj%p~ zi?LV=KbWm#h`PRSH89vTBAHh+;S{E+2lh}$o&)@B|W>djVy($ zB3>=@(=o$VU-SgaEnS1xngFJW+qOzGTXZh&)q06bR^^{E-#jj6wJ9aaYHb>IBg;Ds zOKhrE;SsV4x%JJTp|yAhj!IMZ{o<~5WQZH{20v{90G4Jg4TdtTmi$_7847V`V-$c5){FKM*l!x z>0)wf$)1GYLiJ#L-8qozO9>e0j73rcMv4Lomnxilpjzf4bJ0e9UmQ5BOIU`e6}ENY zK5Z+RFFA7h-W8#cpNc8GWM8xtPb*8(>}BV0IQcB;SEU#DI5ZyfTDy?&m|Ag@W^A(s z(pyVn12HL3&i{KJox#gCu zk%$7!lkrhw-{<0`78t2}!%H;(3)7NaL_*e15ArWch3m$xjKa6<;r>Mvc}U>m8=5Kc zdqkhlkMMs40=g_GmTJk^S14INQ`A8#R_J-hm4`b5jaDpzp9oY$pD<2uF8|8c+hEPd zwya0s-^#JVkWsb=VSgG{I;hqjJAL_yayU3Yv+IA@6CoXhQNc?!$2Qw3^Dj>J? z=_Frwa3lXZi_VM!>an_vW>?>!HyDI#3A{NHiqTYq7Oh1pN_=Zjny*2X$xe2lb(+vee&7!idtA{yY#-_Tm>mC?;mpg_z^HTzt{c);BWkOy z{)Th72gK2U%LND7n0S}I5Mu!jE{Ugc!j&6NYjL4a>ts8QJ4Se zcIsPRpw;R({~_9bI-rm!I}~f7@*T}4AO=ZVJ0RDYX%f=gnyG6H;kKhz)KJmzpk!KQ z3Oq9Yn(N8(g%`x| zTkRF(yNqrLiJklyAW$QEt$2r~wrk6pJZ6VSDE|GF(=9qFS}#h$k-z_#C6xT<@&j~( zUS2Wu+Uo@ml!LA8&l#}J+pT;5P)}xZ?54!cgia(hmwWSj>a}F+A&768GYh`F3De|L z@!oODP-+ETW(D7EGy8S5s$JtU8HljO{zeewdXRjXZy|rO9kWsLOfxieCADZ-*H_RN za8Nk6KoP1wq6JwQ?c)wNzM>2B#G)GA|7N2$E!hCetC*Ut+Z&%;V4yjZR$*&0kZcttC=lqniOiaIJ+iij7)<5 zB@P|J6=_U@#(hy^yFS(e7_v*3HWTy}X%b}IwRCTGjO4*zQ~hIFP!PDv1Vnxv@uucG z{W-H3+wv7dqt;rl8R<_zHg4$S=}d>hAMfi!F@cFDzTSfi=EU&Y0p3&{u$C#|LQ_-kCKd+itX*y`YQQ93i2nPG^^fMUy;)*SP2W?R;V;QVg`#p) zrB-uDYZ(6inKXF`ZPQ#e`$9D2F%1+T$AoI8H4Flk8GLqc968A&ds=)`c4&i3J^IIDVxf=fikLVc(TYUXV8 z1$5wY9VVkd*9)Q?Zmu38L~M0=m1j*GGWOcz$f#sK75}NKmx)Qui@U5ZxhCc`rA!u+ z#hSHb8{gQFoMY8xEa+gbgk9rT8|Y(v7ow{v#rK*ZOCl?{Ihg0{9d?%X;tJYu=OG3G$=-G2DW@nb1az8h!giNKIY-RJ2qdCpg8EEcb2KB%MHW~Wo_w3v{a}^(vemr z%R3Nv=%x*t-tkS-D%MtDhcKWFx}eM7t#hanmbg!em~q+H%6yd8q(xE>F4=s zuB_%oCGoC6tSXml{6=OyrS-VaEG_%{#?yp(_fufrgP zYBCz%XIpG0iYrtQ9u}Pm-paV9S}e_MmD-@ziOm52kQTK>R0MwKrvcB858(lrj5DX6 z4^0(63Hoe6C#^9rcBkf1F3jXriib%rNnswG6Tunn8t7?$K}7$|25nOvk?>#~ai#P| z$(Ro$hAm}AQg$4!$rrBysSC-Di|ed`pPe4IxTTWdUh9yv+;4M(lk(*ut*9i(d}=0P zz#5VFSGE=0^ydB`&m=D}TW}x$2CAJJxSY+jD$D8-oJ){#^$fwb<{YuTO3l1_oD)F3 zKLal7iKsNCtIr*!c_fo+($cGJxMOP2q-9z)$Sm5M>`CF0yZ>Lk0NOE@b#OW6M_;x9 zS7_CJG&PpSNodpVewMlDZ+SmOcUMde;2)xVN=jOgQX;n5`{%JxvEh*j#BzhhtRsI4MIuSMis zr`ju4irMZ8)2B<`eQoT=GC3y;yy94~5;Cr6)9GYY=TpaqRDY@9n%aHD*`U2ZcXLAP zC^sV;u2N86#GasB)dYaF%rUajS@QGCd&iJ%&k%8t&_-uHp@ zt!r(8$^xs0wOWWXxvJ@jo0#;cC7E!?ap5bT z8sb$ZHkP1PnqM{>p5d%nUpQ0-8S7jROsd0K{J!D>dwwYYDrUh{$2$m2rYjyoDU_T$ zUVFwxLQvJJy|7XLT!%6x8Sa=eH4#N;-9w1Q*;C1?>^)cf+cTGrRno8A0j6drVhLXT z{N;}@^C7_nsm-Rw_c29X1%#@%V`%l>dgU+qFl19Q>RFo5@LlRtGi!lLY`2??QZ{y5 z7q}(A2(pq&Q~VAJRLq;liz+ArYTD*Momn5;`i5#t5$hN|D@j=W_6o z3_5elrDYaJ$$!$NpYZ%@zAu;UkxuC=ui}|-(B^lGU4kSy73qJ=%^^g31_e=E(9P2% zDD78T<$Pzm9f~dxvKJy4L8&5#uAA++MfW_Y&P6{RSU}BD5EQ+Wt8#Z!8h#TQr+n*0 z?QOwBCcXQ`Pt%S-oHC(kRmFP8K6dFh;-qUP9-e;GaoDahr(yv8vT?aVQvc-BCH2s}J#EL0SUA=%FwU3WE7*VGOvf~K+%3F(UaVibL6 zBzJ@@5wXNDOx8;G+Up#ziJZV_bsz#q{4PPQl?BSZDylg|4tXanD@+aco-UtE&N~~0 zqZ!PJw|4}-r`8iFK2<4FzL}ZcEtl~|_f&n7xNy*vX!SdK+CTeY3611r%`6RRIVqFR z0qmNPy4{pw-Hdj|t_+sl#CAr^@GP-1M#w1R9?NpfHXTQ+_Xn>*q~)D^&6k>Jd^~YL zcbp~>FB6WAm(9t>dly4H4X%D!8hBJ57RzC05jmAG*;k6ZN3o4LX6OeuJ$b4Cm9|M z+%RvJP}AOeB@om&&0jxmYx*RPlw}v3Jeh`d9QjsdXq@3T`zNGM8Pn_62Q&%F%-K5W z%QoGdiE}t@ccXsFpn>J|juYb*g_h)XO5t0q(y`7;1QT7-t{g`ms>9}(95Haa)Y`FM z7?-nB$HEGbgs3Ez>+}{79M(bPky7){Q1i~c--Iy-R@rw|PGcxu9{etZbgv<-7X6uu zU))HHl#8y>fv>c|9MDrE1|B5T8FkZ~bJYCmdlcls&ArP1jWOSFP`v{a`qPM6sQ=$)#A4(gq$TY^!7245%MI(U>2@Ly zujq6E zIWDTC%`hRSNc?jmRFf{lSi+Jklr=b;R0_x>DoFK$@>czi*D`uU7* z+-cDZILC*SS8eaZNLuMj7g53~=a7*w=A#i)E|z+_V8v|HRM?~cJO4sbeI`MV6H3v< z#JYIi|Ea^okteq0nJ`p=D_)GX*!zLeVi!x9(q6#-q#VTgT5$caRJmn@$=3zmsZ7lrf&ySKcJZUAWe zQ=7m>E!ajU+xTd7$@t@2glXBf!gT=y^N$c=VL=2fiVVUqV)26q%<6~S{sUf%p7cFn zqQau76kR1h-x>YH?1J7iSI3Nk2Ue*n1Nf%FO=0Ke@;y31Dx@$VEIZ15KITO{3p9=PT&M8^r;m}0%%XJDL1sU}&MkPAVujzVcyZHpLP zy&@2Vj>pRdcGk3%=>lxNz)o2Ye^`~-^tP4iF@BR$a)PLauuCS-Y1IVAV=$Cb~*BeP^!fk7Q?0Y8ncXiM++_qqCwZins zPWq=vNk%Oh_vZ@nuE7U4rgJe(N+)8fW1Z+KuL82WfWgD+kCrlV4p#=3{_)>@wvY3d z92GMgY{lYs%9M6>dB<~l)1ZzJ+v$xPd2;4-9v@D|CkDxUXR^DrC5McwbDo~9!Os#5 znFn?474;tI50Pfmy=ucI&4+#b~p+q0S z<$AGW8AiXlN%AfEtdrpR1Ex~o-Eg>^?jT@oi-;cmqC;wbt>M`%0TsOq3h6@0jF*Hhk~CI00#0Lj`D%lZsm`LI1ObUf`- z70#5qd|nSthu@5QVG793+gkR8}T)uMNPd;+5>&f1(i z%*oa8MuR81gMof)I@eRHa|C|~5J3+kbS(GZwTsZNMeHpNtsFBE0`TV<*4UEW_xQw# z{j_#@ZSnctW4h|~Y_0S+7O(qlF!wi^i@EWH3VJmRN~~t)Je#N$f;vAfo^#0Y{6c*D zy}G}K!2I?NaHM%;yf&RUPxD0HK;zNZYSIEolvN^x{{Ed*G z^%lewUOTVGN+1%|UaH)|HZrunJ^`{o>eOo)S^gCnWvKcU>O>(L^~nd&Rlsvm*Dt)1 z@kg!8;|rtRimdh0UagYU@lwN58cq^LsEOrTy6kHT|EDgkGdrAvO~)Tm+Nh;d-J>hM zFJZ!>d++wUL&Kj_(|+{LUP;BIHI4ZNO9-+`;v+SzK=kf5J*%vd~z( z82FT7&5K{)npHRjftnKx17CMLG9p64M5VrwW(9xns64769JqZ+wCt+4%Hc#6q$LBw1U>9uYIe#&kCjEPS(Wj+PiEQvM;*OjQF^L z70Q6(m)6r4uAehobqqC3P2sh_f{hmTNNrkYxHX4eekbakxBK0C}CUm3W8M)=!%cHBWAF z1(e0CXF-2O;Tzoa%d^RPM#5h7aoFraHC^Vs7@q4XCk)}C@lkKmOB#9s8>u!adwi!hCe&0eLLGEYn3U*_q~ZpYG0u5NEu)SOo9VYh!BA zxXiXx;h&$4Ss(5Yo{0`ebDh>UI}+M+y4!stW_x4KX_>>2 zSPHZFGVbSP+wSqHBO(KyZq}aKGfweB;(g_#e=;M{tWPyU#_0G0PK3vk-; zndGZ5k@41~&dq&SA_2SRuz-ejp(2ybm|eTs@c;?}8$r)#*bp=Mk{8|~Hf-f}%YyP|S{6n+Cn?lW3g(?q_jrT>CWo#C4;o~ckgPty5+9lZhsbD}zdNJsYwNPrD@|*$YTrTd+zKCkT+mHj^H3EvFh375Nxb8$xJ)1-i>o^ z%`)UHM^~>R%SOAu7z8*S0?hU%e-W zw&@2{1FY%qohGl0hGQM??*^V^^M@rtZ@(P_DTP+L4ZBwc*uS=C?eNy63h`?_5DYZ; z?W(C|G)9dFbV941??{LU(GPPW$+};u^{2jLI{uPB)=@5T^CXPrG1;!G5sh|xY*T!x zT+%hsvtYYr9q)!_)7j}+s7cz@A(C8&`FK$s;Q5C1xYb)_z0JP=lYuVR?0dSLRKLP= z4kk(fVx2k@V(YQNti03ancIn@JSBcU#zDw{k8-fAK~1@!;Uz*~-_ zXw;@@_RaP7qjv~#f~2J#a?Js*!_@JbgTwwZXJ#E9UecK66red0@oVnk>*3FJEj91Y zFRr%e%(I>1p^;_u`mVL4nzlHZi2iVrr`1&Z7I0jC_t;qd=SYGO;I;J5kaG$q;SeHc z2jI63S1Y5|UL_8Y0N5a})4Nyqov3XBzTMJ=6x0WK~Coug~U1!iSRkrL&+bUWDenm zG)JjUT1r+%wT=41e3W_dM)}wS21>o1htyTbWM-1lv8sO+Tc8FgI+Hz4U6?C^NeQ0y zOpeC5LkDp#iDajKh!bY$2sNi|KxO-V4|+KZ4C$wFI^=(ltFt3m)2 zwb|9~FJ}W;GvfW-W@_oLILGGYd*yUQL1)aXm&JX;o z>^IaACc&QArjasSff~G#%y5X^Iu5oUIC}C4ij$w41|q-|YF5N`)>*^)qgn;ve}ZrZc>?gg{lVuzD@ zr^#hX0^GQ0-IcBjIECnWj}-#zO^oV+eN;Nr?u>DnYDrYu4{m0va^gYdhISmg9va1> zDubCF+}!~Vzf1iXu;Iss=a^uyDrUff)qhipT41pn`uaR`V5*ssCE%e5lWV`@S%(#h zQ4c*jzDSpLzt4`B8l~7Zr20%*9?kd7SSc}(c}I78H5&U$h&_gUmz{*8ynKF>!~0e- z!z1JXZ16?}>94gA>oR@YR;t6BJTA4KXm&=f-jc?J zZ5}U#@{y5p+4Y;3ngXp?NprL$Byn&mK1gNo49IMPjXf_e{%r1!QHWG1zRAO>oeI;y zx1MA(y-0Z@Qa9xG({Vls=azujDnc>+Y4^4l8H|cfw&mjYw%`2b*g01Gy(evsB}NbB z)R>(T?28i=!rEnVgULOGtsO(RbY&tQYHBhrN#!uifEl?PH3@3eQ(HI{Zz|wd z60Fk3h+Rww9tO@lTX~6TT|#evFNR^jU;>pMMKOW=R-|$;hOP?PwVW@wf^})BDS==) zWvkFZ!*08`aqaDZ3GR#GI7posAB?c8+pR02__USo(BPcc>YcBWR^Wk-m+oO9?_4ZT zm(0w=#S&wxOy=eKj^l{<=0??sOa@6=c zI#pw8W|(t@FI*VZhn*zbP(n#Hj@n7bnaEA^tTj3|Q>=N>18H|H7{PM;ZOYSbY7G zCJnE!CKq&yp;j3l5$#mQR*7yKuyKYcye-b8sCM(~{sbLGvoYfRwq;s(S21vWLjHAY z*tn#wkM4c+3y=Tk4mE9vh4eJMx0fEOXCm)AG{X7ie6lW+Uc~iqI6QI5AcvKDJ!n&hp zlG1Q>RNBDRh9wG?;n;N`UcAMd#@vVFD0|_Qb|)sJk{&oZwf*SMddOX!WQx#OX2+S7 zGc?R9`DT>MO&qoSFplP>D3aIG-X{|hkt|E4FK}5&njM$26A76svTq0^!5pXyH_Ww7 z<7dpuqM1PUKFcJ00^%1}8%HrxjSzqLaPDpi@)<4`L$-D9{gGRcife`WM!sVwq?swl zf>q8DChybm22ZrZn$oC-GKZ8K z^UX8r9C91CGKXBKYoHtcH>eSxKV44e<7bN2aLZ{paFL$;_?}iy?X~9| zd@7O$?U4SvXVDY)iR~nK{Oc;j`0&@d&C5T&?8PPoOS$CcO$@F&uQ=2l?g)V#H8zbG z2~oHp(TkXg6UMRzT|{tD!)-%#ZHx;jcFrcM)HfFS$7TlE>->!(x1&HLG#>o1Dj2LZ z{k?yZ3dIEZ)H2E&0wdnJ2foGs1?BPkn7}$GMxC5gjBa6^Yz+C8?NX}etVT!II~E`1 z2xu_F|7C3NFx}9#$5s>9 z-T?q|X~!ddsCOJnw`%uQ-G@f_l_UbR1f9 zMnvA@HpCawi)Q!UOfj^km16k3sqg4$0m7-a{o)ahX6{bU=)qerKcdYYo)RtTDbSX# zzr7IRfgqeRq$v90T;L(gz@C%%o#j$QhYH2^L@jv5IN3IcXtNd*?}U)-!~1d+{2Ynd;Uv zmJb>_T}8Fr<|NE<)zdHPateco`OV#una|Iv)rgZV7+<=vsE>kduF1H6+3VrZ{5B2u zaiZ7u&NP*l7n;<}rJSE1f;skeYCJFSSy`f~sx(g&z9Gj?@qn!d3>_eMlXm_toB1i!e;8Xq~BYhhPnf-4mAADfsgXH5f`4eGzXjJ z1oUtluV}0`jtPCjZuQ+*R5K4k{4}7mMRW6#(})!Jd(h_H7=Mcb%BuVuN6je2^vR!W zLC3en!1Y#H)1CS6!l`@Xr8Od7mq(t&F;_vvp|uriqb#Hyx(b0r$cE2PQrq_;P-e|O zCLIDyVe58bT5-G+(P zaG#Tpr7QIc0>bg7^!ruHh$NP7g1SAsGL%y`+sk$l{A5Ap&fhkRslsaXgk7Tv@nCe2 zn()vj4GT-Am*yg?2Tf}O<)>AM5t??;Rmn+mj)zi1>no0g?AIU{;CPiqPMktdP>TVm zxM3^b%lRZI^YsvZDja@WleJ@}Ra-F$DJF3TP*5n)N*(=jZux3{UHGTRAW|JaO26eQ z?jAW4#F4$0HLr_}E%*H)U^6x6F7ImR&7JR0n%?{SD(1x^LGp<)C8j}E_iT2e5@({A z=xQqx&NnNyusWQ%Ez@E~y!mt{AEroX!*jQ%EOWdLG<52~V{+C0 ze{z>lwmDlg9|cuuLW?H|r2Ua&?M!Ok$tSI52jg7KRr_8By!2XYdi3)FeS#+6-M7Q- z{=g~AqQB4>i2O#3DnObELA|*9KUjOqt~#17To-qD2#^GKcXxMpcY?dSOM(V>cY?c1 zu(fdapbNK!b9nZ<_dhrvd-SLtT{ULieRtKIS7{}liRF)J!w}m2j%*I~n4{7u?>Ro4 zuT2=$J`rf;ZrIyDkLnHJWX`s z{rLUuA2?;BtSKj=*jN6MNp8r;u$FLO+F{nEO4QV z4J_MD^O~nDYKHD+(&SNPq!sft6NWC=P!>`;GKY>JBUFjt$kMTFys-b53joFW{o)Sc zHh0?JPHsobZdGYSfoWEsQjVy4qOdG)>czGlfPT<%2itG9DV(h+bR&%N!In z^+eFP(NyX2x`L$jqg6 zQNmuz_b(0ijIDgySEF3L@Ru)_T-TbMEtS9kGLRos-ZkP)_MBr|Yk#w&2{pC_)$4MM z$oINrzFzk-WMmxaL6HA#mII|JRUrOz`7(M>XPN_LzX_Wpr3`c;!_2ce9=mX1*l)Y@ zsJZ+D5Vv{<)Q)JOw0XRgGxpA`tqxJ0s<882%?)837OmOsCev)V#!V|#l%Disna@w zj0dc2aIuANwdAkM;Hd25^}yh2N>oMUeQ79-B9lZ;^YaKGJuNemxlE>eX=jLvmTlio zdbyKOGo{*l5Ux75Z{7Yb#_2}$Qf?9{fIwLra)lTn$;oMjK zW9IVl3+i5&T3Ja`nP&`jxeVe{W{6wuP;}x9EpnN1MbjH@LGgFJcnazKhlzy6P2|{l zSzf6~Ls-ym&!s&vSE#CD;osJ*M=!G3ITvmX|57yd@=;|GeyyL6I=ELAhz~XRU$E|n zP9HM?1(Hdx$I7{6UTE+V1O9NJ^2J8V2m_q)cpG#!y%m-hldNG5tASq~rR~vZ$cP?$ zzx2>zCs&D{A)Nx=zol^~%HdCx5?GuU*^g_aa1wNuDW1rH$3*nc?^d5s;*Sc}HQBEp zBYS?-4mEYcxEQ4MvvmlMlsOb8TXf2~PUMs|`BPaX89`qd1`8_F^gBcw&<-=Juaar% z2~rje$|>!q`)HFRCo&I-1}I$u-Q|jYg%Buwzu5<4b+Y5L4`VHM820$MR4O}a7!SH* z$kEEAJi(Cq|59*vqhhSqO0=F~+Ygn>pE~`PiFQ!P%q}k7X@;$yn$+T;i@ z5qBrg;ybE<4iqX3TKT=huwYf*s00Nks48I_t1fP4ARGcW`paF_qvAW&E1?`UVuSsX zHY4$DnHUL2G2&|5t_UdliYZ=Px2?xjF3GOGV%Ev8>HTfQz<}FB{WK;e-%t&hS0YyX zr&pI3r_AFzE6AV^S22=XRYc8+!z3Y*Hp#bZC{3>wG>^bSNDa9r;2y2ruxB=Rz(*3^4SCI|2OmKl-AMim}9( zt&LBR9J`~Q6=nu9AgSIfgkJ?5S zQh1=_nnFMLzL~?D7a$fIBO^-Tf2Hg6EWF$i4SM$C>q`ms#KHgfp`|B3q-I*)NkM#a z{brN{?HOjztz55Iv_=>yS*dRqW?eM_Iw?q2a zCEIxz>STk;X-Mv@sOyIexGwehtV;JOUQ}$ZEF}EX9(@S5uoot(lCHzU3>;c%9P4*8 zt+5{90BWMO98OFrA(t-*2d;rg81Ctqyl>IdO*}T%g6K^q@Xy2RwqgDGjAa*mteXGT z5*nW|+p`Dmw-w}W*Q-V1fiX!i8I<(#m{Tzq>+8x8ROQZ|dF zcE5Ep8;bvRMR}2gGHl<_6SSl!s$mJJWz_a{>O4ZbdH)iy;O9pa z7x{1JvTxQt9}iM|KBseP1M3V2AC6ZarX#X>vbA`l@dROqwvO8FNuKW?sdv4{Ah6oz z82ootzkz_4>+1Pi{DxhX1K^s9#VePc6!atE=Fp@u((whn%14XW&phPK8}G)xw{6^G zt0!GKHea3uhr!JI8c>*8*X2`YC~C*{B)5l=S&!ol9|`slQ+<+_~GyZT(>-q-q=d1 zyJ2d7b$I0ez{QH4z(XE77XNyWLRz);eTgUC?oRmHSCPfo@wK1@!8jwOa-WnbslP2& z&zGp0(=?cP@glwA%#}*79M3!T3cJy;;nhGm475GqWG-Tf=Z8yu`%b>&3u(YCtpir@P)M?&tZgOP<49qcQS48{XLs>YgsHL9Wspm|KfDx9Ax4B?>v0sD z&Hgxqap9lR+h*CG-(MCXu$f2JTk1TKP{aYrST0jLI6p6o8$v(yg}d|3Y#tTd#yFel zs&*|Mt9x__$u2u0U_*W=Z|3o#37Nv(=2!95laMt_w|#oKk`9$HZj=fO8A z4ACCIy$x$TMbjF7ilIb}ll*3r8hu<)UM~<$=CeKL8o~7CGf#TmVa5#UufvmH$a{lT)dRv=;pO-&tX@><#0!%B{@?E{qCNHTa9WPO>yhH9e8BGeOIy`Xe z1w#53>z?$I*82F|{+N-~T}gceDXy!hW&JPRo$PA8IaOLkq%(=Bm5%~5UG6plyL^=1 zADHZ=aOnI3u`nv^Nza5QoRda2- z<@TDBcqR49BT4E1B?9>G!kFgq=i?0`0l%-?d~7H$t0j}yFY~{^2zGa(7JH?}ON=mL z(n5FgNIC^gZ0U1lwH%J0Y6=lJO)SB3*izXclPqao1c>%5bv8@|OHyMTs>hofkdeJp zw)V1Y)=#G23Ds#65EVR%@YrNo<3{{`ulyS#il9As@?=CZX#s9mR=ZCBo?c#C|F)q&NvA6vO=J85OBX&;Zybd; z-kX%k)A_ZFo6D%Q0X3y7ATN&#I4B21SaKC2cWPb0Hxv|wN|6|>n==Y5=EQG{ki_Di#G>L@x67!Q*NC*ahO*1IB|%(Qa<5* zcFf>=?khiAB_V=-ozj5c z%Q)}Ug&B6w$)&{MBl8B<2v;)+UQ(fveo>_Gv57o(f!xi5alb*gufe;QIaS!0*+08= zQu*&#!pR$1?cDvLBan$;L}gv(HREzPgwPcDC*{hW>%wrWgB`^_r7u9c1d+4PAQPUM zIt#^@lG>Mp5^%5+Sp7=@5ZTuA8(wRwjn2p}o?!D5;vMMTQcYW>-=1D#Vt79D-+OD6O&j=o?6mS`& zdG*uUCEPr3ycMMXuIpyj+kVm!dh z!q|#&sv0$2_%e`-YtM?Yfpz)}#rc1xYW7IkcU7;)KRCH=?Lpt?*SbHeP8Ue2V=91~ zwo4y7M3aqk4s9+{j@+ePF(K6@#EKfq+>~zi-BcZVAlV(PT^5&+Zi#o5AcI#;1Qe5Q zgg#qnhSwgjb*u+x-9R&!6G8CZ1fbg=X`$a&W%&-j4U9Pc!O@WE`)&J;2Zd1BaujH! zZq=XjDg-yllnt~>jqT289dZ{eNnsv*6Ld1mFDGxdU;I)5*LepboCGq8a`HygwppWL zGe=njW=SWG5kkAKz?sb9lK`IzymXVg$8=KIh@=hK{izX4sE}$x;MSz?8NZ#Pt7x$( zQopfIjsTa<20~&ZEQrt|hctew!3x}Zwr?{Zw6#o*A^p(f%R${#imY5$B)A9$=T}iIL4eqte}>cL z9x6dcCIZ0%5L@ zB7UFbuRqY7{Z{GdnGs*ySVN}FNE~Z_kOdyZ%w7Tu7qg{akxOn-0%$=Xujd?;F$9Iy zhb23|YdhC zy=*$i0?QUmRMbs)4GDbZ)Lc|pG{hyH79}Y;!a#Sj`}1`|%*NUb3++$&r(Hn)hC>j`dzzpj;M#Z0+)>|;TyX4=5UH?2i} z&}$2G^w|V>qi(X^9l%@dg|x+n;>&3q>A3{hox%DQ?+xB?kvEbBPWlaU1r?B4$zf}h zldGeW3&+wL=oHeIX8H)(bkP}%-0K+VjN%|ya{Y+hQcHaq7wtOoDHUUjyR@B_Z;nEK z>OD{Eb-=ArKvWQ%ORL6XsGixwJeRpIyG*>G*%g~z;SJpzAwH>zFzhbo%{ixv@9?${9eqSmEa?{O(7b4Sv2N1QuUrrk?K{>DTf#jU021<*u+R`e-CyFC#}jt%y&(1e zfwk!6OC&nypW65qhl!kR`eyZYa;F#n;;BT)P~b0zNyT=}uz)-P4)~7B1^vibnVOIf z>R#E}*b{$*>FRxjNH3v>^L7XnK$g)b<9daCWZbn~y_^FD{eAX%zRNa?QKY1HpC%V| zc{7&7bJMsVNM7u$lOU4SN<&mOQy+x5Ki!|h3?%6rXX6;Y=yjzxwac(yP5H%d;(A{B z#h`5Ti2>C5kSH|+bVZGO@E=#wcXK8Ry%-IT&z;JWp^*Mta%W=E5Iad8D4pT58p2kO zpK+Cmq(uGiUTpQ~4ss59a$*Yx45;gT6v3D8Q24k1CC`d+pl){^4*c`bdmLvN^tX5a9PF zBu?qy0b?-)mVBK;84Q4rc{0hhC99Y+kf$-hH8t#`ntCZQz3PzkZa3Mr8;2;uqhtKB zg}mRlbIJmXm)mVnOw-Gb2x|{-`umTY1sgp*4yJ>V zhCJ(HtPnk~Ec(!q7b$#z;r+qX$AImz zHADsG1!K?nW{a#y6r?=dF_N8Ln3U;wzGJ+F>!O-(zY8 zI|V|@+`a|Xe-Q*}UQGd%4&>?84AB0R^45^%Ch2Xir{L#w>Zsqd^#>4;EbBJ3;x~5;q$1649#BAQD>=Y5gHV-L9Mu zVxD}#P9vZ4LipzTTPbw!Sim7yJGI`q-9;^@aJLYCUG(}Y3d_)xj*7N;J)BLcc-8{@ zushU=B%8io+8!J`KW>`qeIH_e2Y-#gssvd3N6m^W*x3>anpeM=xZ`fX~1 zKnk`t)K{zdr^-{o+a1{V!2>SbbN2G3C{Ar1$k|nnlki4WMPiTeScn*o|*A^<}Y5eNxuO--qv4F(Q||qu0ZPeKg;2vXw?k)CuO~ zhs$}Zxn3O_B7^NEt4hC}{7$l_Ge16DJ0{AXFx?l)H$S#!5vVLs+@VNF9_Brxes0^g zc}7~#jju{bl@+GjgDkK6apOn&;BJ)SRR345T185uqovxQ8WquBj)t}b$l!Kv9;tL7 zGJjk@yj|nc*Zd@miHn9Y)t3IUCfh$@{dd5YnV02!)m{z6dv-t4ENJp)+=hP;$Z4X~ zbcVP~k9X;_(VD$0M0umXG^EKuH_Og(P)oRlKR;~nJL-(^B1f}?a|2npEfvKura`fI zphMC*&CW=@dZ~R0$PYO#;0KSYSa>^+9^Yc^JhA_bGwi-qHIeC?TgJSkxorJ`_4>~K zadv8^6K2HTn!}9BH!k>y0Sd&D_`&8O)D#F3a=N!FDJ+dm`$u8@m9XPNV--l0fBN0; z=PJ6(G?3(#w12HpP^2GPNZ<^<)en`rDxL>++eO$tec|Kre)5e5?Oix{N@f7`ce>#! zbGeZW_nMQ5Jbl8vfW}^|kOO>OJNrwHD;bv6Oo+}TLQpvmU9 z>Umw|Xh-A+4JhMN4TzQ{|UE;|WG{=-++k|KmS%AQ=?UU1^#7DaQlL6mlUZSKs3_ zA*2-!Yk&V~m1=$=mF)bI|1#NuwO5*BcTCXvzn%gqQ2J*0`S}k@OOIYU)*p&>--!tN zFr{kjhuSpojk34rO>ONBt1>5ehuX=eM>_Uw9P5|lmj5qtS_S^O@z2-t)looxw~_R) zFap67wZc0Oy5p((QhrhVU+L|*hw_G^y|AG0Yn4j;B;b^PN1Q0{|B%(z9L|k}$;;V{ zgbsp3rFD&!fH55I{n-&yB_uZ~s)TpXL>qwok!&xixuSsHCGjY}iN#9?_BY&vlOFF0 zb#Y3%nonHx|LMgsM9p6~gHp`q`zhxbBtzL^k{@C59=pQGME5-tRhLc~o=m=JAH|XH z(7;h)i2Y>FA&WWiv$W!Mk!Ahy@&6w3Y6K-U09Kitx3%4zBzs;Fq%$#QhKZ>&4Ld)1nYZU$;p^3#8LI66lhKBtxFm}6j(NFbqo=$NuXq84G9E<~p+Z(eh}wU{q@h zM_J;J+gOqQx)9ZzE}V>)5~?{Dstu80M~D3A^G=6suT3w#Y;$=4EQswk7t!gt?s%jA z?HTW~(`nz$$?3!kyvOrraUIp(^}ZGzeHl3uzh>E^O_8gIt8|rwBb5C2VlR02ykB9= zHb<`iXz(b^`kZdlZ_4k7WgV~xA&tDI1NV>%e+c+Ud{_6;x*lw$f*&&b7)4}e_g??LIcw^D(XY(c8 zks)lCOG;%R$|lA^k3_0h0TmuIBy>(z4~o?7FawWk2Y0}u>*Z;Ff{*KV`r+Eu84^Bv7_rExwOV|&-;82C4G@r8p&~D=}r|~8!a-xy#5^`n^ z7~0GT(Zqn&!fFJL6a3|}bIxx+SKD`>_P3v(T@4^_XkAN*WF!C*&a32B3+GF0)L3TW zj3PyB!{zwGwQgM7`PBnyuFN32Fyd$$ixJvB9|5KJgW(Mr_v)z}_h@wayz9+%l=}5O ziG=2ExcmY}6a>V3?CLZTLwOrVd%Q>-&J$nPKJWFAFMZST*=%cbKj-H=fprteg6#(2 zB*d&3VHi0HwZgl&YnI+`!-AnAw~$c;muA-ZKI2*x=2szpBE+r9?KiBsuLJG4qe)bw z4DmxE(S2~s%>9pkpRBVm5ORpKpa)?y8f#XQatEx z>g=GT^g@ttCjM=8u2~7MxOX4og748R`Fu(QH=k?DaYbJ(d zjLzI}(uFzsC_McyEL@OR^hOr1@7Y<8{QTFVIl?He*qlg`z_Z;K)~}4}Ebx!HANmOS zwS&Bwk8o4fUCs-v?w=#zjzPl%y7DCMsaQlb-6>*c^!zWJw$vCi6V;$}QEm=RVN@X&Hsi1}eYNwh)AW^LLGHhbBW0#gVJrFJe zUOd;;t{A>=j2(1j_x>boHgew9HNEIIYHBdTZ>05NGwKe==Jr@`od7}KcAz!yY5NPt z;r*)DS{?I~v{_*mlhbb5wukk{z>+)TlSvJpE&54d_d5xS2(35p z`U4!+Wp}XK{(g}}pdFhwcSQ^2$fz%e~`ILZE5y(<(=d0`#Bj*f8LUoItmAW0U6P=CJ3|L4M zz+HV^(Aa|v7GHu7hkW!i%7Zl&{3&(IX>&HbAa5z;Y|v#G71g6n(n$fA{}%ari1-ws z8#Ju^+@oFGfJpuc;BUe!xKiU&@CH&cRUbtMdkv1l4}Jg#8)T8AA4&eRT*n9sn~k}l zX)6Z&*Bh>86jLUm&4sXJMK^hZ9EF@~sUs4{9x~CKtVS4-w~a?1rzfm;xXMW;td3+^ zlLHwYN26bnmS4h?m>8&@-G4rCx?AB1L!q+JLZMGX*HhlO7{|IjkFgyB&jjwWa{hU6 z*tdNf{%E&?DF{*i<7dXE%GbP-rTXuVsoT+F)Z&2}r@7hF-~Ba75~=merHsnb)OQpm z=tIwNL$Ze7KZ9S0CA%?4{mA|>VTLHzV`pvt{o~d>o*sc6&wuxH<>$7$t!FMhO?2@@ zFt8tQ zIE$YsS?+IP=1I_K9p56aG8#u5tFlOlL?SVzu4Gb$%%(q$42Aon8Rf6^KpPS1M zsb-6=?FaIKuB`Tmblo3k+}uJph@<(s^mt(|a$Trmh1OhTcf=_k&!W4>!@7K&j#Ugh zC=ZO0?+=x$=Rpu3ePe_8m{<}f2T!Or$WkNL=>j){HLZ>g#&IAzfQ!LQ2;M?7=&BtJ=Rfr&`26$pbMh(l+5tBGLI~6%n1~7GN^|+Y!gJh_vx`D zd*q>KcD8yq$Qr{`dc|JyJ6gk=IBV{XCwhkz_kGOS?4>)aV|)l02y+U)FgR@|(XY*j zGZ%C`jfZ2lmRXH`O$?3NxXg$UM*c%;0f|+poLvw!1`>Rd&A5f%xkMlQc!%72DI3N; zw&r2#Gq3$=b((U=>wQTsWYZtaoXUrn2~u5{^BRsT(H#niXWniXxN7?u*ZMAczR#ou zoKy9SYKc3~+B`MT-LtGqug7BzbtizXbc5OAoZp|mARsIONHh|HP-jjicv>=lUA&2l@0Q| z2}eK)6O+I$y%g^Hk#~&03Ay%yh8DfQ&Fjdj>Y&>X%2)on84{u2xjvtI-|gVcK@HE=;sX&wu;+p*ba__*r`HWkHq0+I_d} z<*_zm))^$;rA6QiQ;T5U-R4wFltvtAgw(x^M*jPUYD2vOlbD;c4Rt99p4IR1BR|Ro zXAdr`1*T#(#yG6t7DJHQ@H_B7W6Fml;=P~xRfzjZ$HB4rt&WQ|@_GTPJUdf0BSp?= z{9B^ZXCCS6^p~IjPCIgCu_h1P(KZYzfq6gUHIK>Ctu1Dw1Ki1~l3k~w(H3h@KZ}q|> z@mR{ywFV0V-%ebj zAP{Z11s&Pj*;!9Ak~Af2oq!^B1-wrmqf5dgLG+h@SlHLVUQd#wVno8-sQE6grE*@_ zB0F{0i*@AucvyVo?klGoyXmsRKUr8q^6r?dyCj$4swYN|3tQ5wu6gM^$rD|hPBcO> z8`^?L$iO#z0|o2k=07)`V1~yl-!v;~?Qx-Q8ICb*ODlhUXn_LGvmK^$xSe30b|Wmf zVNDbQm@@7_(Iok*R$L6P^9{FyRhf35*2e^1pn@3$LoJwx{V4`Ltf4g)3K?B?Hm5j+ z)hJumbZ37pURl)dYPIfjAU!C1wDD>mV-V^h2Yx%}UsJ~hV}qU032hL=t631-{mT&$ z##(~^+5=u5*N8%bE(6gSKXVHdD>>#IL;*1Xl|S7A`4sENB&^V_X27U-)xrP zeY41b;w7PToK~@f;C8bNyr|pP{K|FUD9OZ*VL_YxY2U7 z{#*N15Gxkg#@{B`>g9;?z7^U65vVds(Y#ZfIlQjWJ>anKYqSWxXGKo+a(N-x>~X&} zwB9Y2Her`Ah_i&5A$jg&#;LD3D06K_fI#b3=oeIgFo=;pElFiaAG#4K*k-=zQ}vN& zLM8Y_iYOpp1T4GZCCUB{Y1@QNiRp{QCH}i57SXXtRuCmIyCtw%%$ayOJU_bWO0+WM z!vWbnf<<3+EaLN|kFINUW1=Cpt}e&=T&Sb}l#mhHj`p1qa2wmE7H|$A=*#EoxZTEz z=X^^4HOnOxja)b?KjnkOA?|(I3$!3&J+~j&O&_e)H;W+uktn%xzv<8#)1)DN_1LyU zz3kiN1m9?eG`fX~S#p;Pws1>f6c+?Fh0ouA*T25|%q zmZ>^KKBs8%(<`CW2WgK+E6b_mY^5lh*9AJ;M9Ffa1UV(Ez5e4Croc;5k!MCu#J0x? z6pDO9+wwuy?0L~9q5r0pS+V*x?DeqK1An-P5-%iudHp~6vJ0K%`We5DyEg&7=Z=vw z%N6FtMJf{!U**0|fGdHSaxzB2c+$@FqDzDPyyj=&=NqfAkVCE*I(Amd8ssUh^WBjN zB{~j))GZ}QwW!JsyBewU&1yf4ZwR+na}~-IeppfS^S(so2TJpw=63Yctk!F8pLGiS5d^I@nt?;`%-KK>_WKpDgz`s&9^U9v@Fe zKpwBH#*wZ={$iV6A%h(D!JWTsuSsXoF}IQ!a?T>gZd0fMfUe!Vfinw+om029O;ecP zVhfV)V|nE3+J#?xRR)SQ5F(NaqerYgRh>7SOnSb4s-RG32GBU#Pn5%@X-2Q&mGN*_ zIp!nR9=hG%?NgW-zT?y&xk%0wa}BqLw)&VBuUYXLz-L(}`5EkkjWr#ymZ&UE!@(h= zPb_nMKas?_Azjv4zFl}SdgBzui^Kb$(`eX?txnMdEn;LIwBsvoQOdicZE%;#jJ9u4(06fMNiHaSO#NvYPrjqp}t;KL=XItEKZ zy414W?I66AMTiQ|C*mc5bG}#YhaM6x@m~h{?~so;|{3#1%d6%0yjo5ELS}(c(kDnzKgf=^h^rM zsXx{D`OB*F#nTNScocZVZ(A3Pm4)f?F|375hZ7nCYbJn{7@&8J=H4QiPTUsu0K6ux zi=IQ~1(W1x6Q+LOzzUI6M|I!LoSiXYNyo&cc+SAelW&q>NMhxC`jA%eGAAkqd8MiIJlf^CH~xqP21hS`jsN(=#x&^U7t~XUFv1E1&pt z{Qj#L=+q}4&hsXiq#PXvJHR(vs^l}@!WH}AL-kIQ39Cmph+9E&`LSk(AEtQJn)8$1 zJ(6OA0cG*!zSZD3rz-U}>!L-2IcpoMgtGwr{0WAn9MjbN-R@@ds)-v)Y1+BR+Qm}J zJa+W_cI3@pUEH(97B*ngEKS*%@+YU=QE_>eXsIEF3;yW4Sf}&sEUv<#-Hm`TPpmPo zlC{v3UHN*97fl+eV)@4X*16cv2h^6U<4Mo&lQhGGVmZ1nrA2f7KUCwj*PT>rKK_pN zL)K^zhv?^OxaQfQy}s9XDe3BnZL|;`ttmuTqY+0@x(S{g?ePplZ|R`UpR-$4kDC6= zetTaDY6vYg3N-d<^@{Yeurv&4an5qu1#TyK>d{9jfkSZNFnsdqehN>X{q3?$Gtr)O z8#!%5NA9U8u@)>x2>Ianj_+jb??7)i7WX{I*<;E=5T70#b0&X{=fp<%7h_K$ybe@N zyQUG|KEgJZOLG&tL8GReDC?{e%#$FOmX7uVh6@}UO)#n$&O_ZPTvSI$jNH0;Hit$R z71-iAe4r46nFiW@zvMHuKf1jz6_v8>t3G{sA+y;=#55f$H!qS~(Xh>ZosskCvqo;C zU~aVx7`y-odE9;&T{r~YK-E}}vegslrJ5lYQ4Wtxhx7ROTNDZHDROb$Q~V$clK;&Z zsA9CfF1DO=#PH)YCEblDZ+Rr&@Q#;LAw2J~m~Zhi{Ya9_?A>+&L20nH?EbYz4S{5? zAdI9EwCRK=&UH|i_MAv_F&Mg_YpAS z3Fk@L!u~%iiy-6DhaU76Z@7Bd7g&#r^gj4?JiC`YF~e;~k4MGk`Yr5D zXUWOVEHzmjl)O^>9!$wMd6zB}xG)!Y9wZlQWXjUaOaj#JOlKh&@a>I(jryKiYBOF; zDQZjD*YXD??PWDMgDU;Se8*|k&`;q!w_kek)K1oN-1-PdfELh1OC?>u(pZVo!6It; z+y_=jKXBfdRhD4+j;f3{2vXA}TQD!vS5;MX^vP|0T>b*P0QuasEg3bR?~B}r`v~|> z9uU4H28$E%=~hJ2SS9WKYDpFUstRcA+mH{h%SmsZ%$eh`Mh?f5#x(dztc*h*>vwrd zwUM_U6BI`^!uwAVtSiLN#oka9e*fS=%%|Zq4x5y*2CJ@0Jssb^d4@!H&-vxluenlmYf(?IWtGIIJQe+Z)OCGL~NBo3sur(*tWrrzYm zKo@UKI~hsUn5`omxaTG&&e>kTelgrXf;G*2BFW|hvoBvfg=^=n0sq0kv?^?d^X=c< zl6Pc=4wsmJnY&2;xUj$R{+gjeB^;zk`W2!aJrh%JK16pDmd_ zFQd9X{qRUE#_vavUSn@pNQ2+Qa&%5C>{ul!jrQB(E|!PK&`V9Gb;J59m1_r16`J5< zq@Fv@8sbVSQAk47ftkAWn-Z84{M4yr$eAE2N;NgC@qq4=c2au62>36qO}icE$6U#} zMif*S@5Xz^Z-sMU@D)C2*4Y2GQ*RTRn(~9(8J|=!ynSJd zmv%%I+_vHw1{(h7Wu!f`Q}03DL>0+zffS6PEh)Bvys7~Cw#w%*54Z3{+>yUIqM)9w zPH8UxacO^+43S-fsnkIaiKfO(AvWW+x zUj*1FiZRuyo5LpQxs3dDpFx82atME-uzuxzqV=J#I(5IO{qg&5^1fQnzc6w#Pr~y@ zr(X5CMBfy6CaFNl(lIIS&!C>=G!g5oyr$mr{u6`X!Z&RLHY6#;`(Sc*P2)LcW-iL} zboK3z2@Yix^D>fOmian+VC-6ScW?C1xVsyYEFZTB_xsGbP1@r&=3gMulTYnyH<#Mx z4j=22pEHcu{Dh3{!cn}gDDRBNVDeNJ8Bcl1$uE1c%%^x;LpvsN_t>nQ$Qhz`Myape zH;Vu~IoVkQ_;155Y@vc+i8?*~NDS(ai=+ynJ;{XGJd(~OoL^KqGj=|h&-4eGg`70d z8~b@T4uDljn+y)nCjUB0r}Xoak3qCR^c~N;xKJaI;m@5IxL?OWfVSjDIgQekk_RsA zniN`h3GvuGjHC49&-q1KtiPa+VHMhbhsdr2mdAb=^<1T877Ypfl{l|x z9)a3Ea(vdmqGFZrVjJSC9Bo-sEsk7t1!)hCLsX=ya~-?k7sO3yB)-OR#9{^usmbR{ zInO@(E7$L6v`3JhZl#T@^y+J!!IqJoswh^dT;2z#@Lkre>Sq~%O24BMZt2Wf=@T~`c7xxV)r z8`osAr!ewn{3u=3bg_ETT)8+ENCd4{?p))5w_IhbrQmdb+9M=P8>^!uynS4g*$u&E z|Hbz##4&eU2KmTKqI|Oy)ub{XYv2TLWix(ls!rpGBb1GcOncv{<-&=(NT?~7SC3A1 znC8X8=e6?0-mwicG2_{7ZA)ZPgzVS_p7T?IQB*Ps?c}55n(I2nqv@%0vG>C5O7+O7 zD?ru4RKk7x7p&5)6q7V@f8Aco><;I+9|9CC@if$b&!Zv>zh)_Iu^$oI%%NC6P||74bK7L~ zP}|n}&O{riaV`uN5W-woqSo0C;1UEhtNfBdp4?DG3F`QkwKk_oK_4wqiD&z0l#7Op zZy3acWesTwcuO?c@z+T!xKgq|d5WP9G5^*&OhyD^oOEFgzr=k?_7hYQnx8^eQM;I<}NR!9?n?g5Ouh&B5yDUI_~Hz3N#Np80CR zXWO$82x|D|y!=`u2AWl99t%<#1D{qIHRC-{QOO$~=yUP+qN^;20b`G*^Ax@i|JXbs z<%c0{o~~(XXn|+y+jmR|d&jlDgqh9btpdV$A+Cf>$Dqt_-yLTXR$NVS(ip4B*nsp3E zWHd`1UX~Rz8sGenzlX&_(myi!1drcN=6|~@MOUNNV|@6e`6TA*G#?@7J+|3*3mgAB z+GyKC&No&Dn~s(|(t0WU$XesznI)Ngn6MWjS2LUxy8XwSXIF`gi$Q<2N<9>?+f*zi z%3PD>P{^%;8|?X~vX-b@*_ZlV;Tq+6SMUtSx$a9jTn{Ku2i^Qh<6Wl;MFeUQZy~VN z-(-L9o!a8lv6luj0g^n^FR0RJd0pq@`=HT0+uC+wtlNmx;M=gmvj57AAVlqYZ4Ytk4Kja{Zm|!y5ftVT&zw0a9ldeKE&Sh zS7?H&7Al@vN|^PEDrKi$Cq(z_N5FSLa8d2F`iMDK$G=ycN;Df4<8$HICDvTf{ids5 ze6;oErop)?vWF$D8jZYfhIvu@dg=oU=Jhmt)|K{SzMpturb{*IhDbbi|8U)=a$07% za0}wb9XXB2PW!iL87Q3M+2np)?*CR=Ehv{@?wgb6#del<@l5vmKzp<8ko@sx9C1jz z63wfbhj+sFHXOtgdefc>F}lPs&If6QVkg5SARDY_lHHi9rExh}Bop{)1R5zSG}IZ% z+hY9%T?JzXf3W%+G1fohcYS(xt*wNq57Z2E0fec-m6M@3t0$pq7SHhTnJovsAVjZZ}) z5??H3dg!BT7;BAxOgX?MbfLqYaj3+wW=CK<4d)AZA?D`{;e(xPq?c7=O@3Ga^v-(^uC#UW4MYKYmX_=$K$Oh!t8cx_Ww0^o$qWY zT-<2g-qIR3W||=Otcn>$jUq-=#Hbh@i0akbq7=DiwN#DLs+F3dk&0P0Dr!{jHLEpJ zB;25)MJiG&#hZKoiuZguAI_)qocWyR_xw(^q3}e7-g2OHh+A6sK_ozw^y`h{nmT>o z&c>(n2ZDpnL9!dcPRo8VNAjL^*g`Q1Z)k!ve_*YBI}QSa6HNN3h{jgvkt!s(S=R}j z_W1C1;ex1aRQMW;H2f++CDi6GyD1*w%#C%}(|OfTz8Kx+w`l0{wZ1mD=hYuS8Gfj*G*?wj4_9-Q3qWG4a}e^kR4_%j@MU@ z(_DRO>{sWDTePTQc~G>Ko#e+7D)0GDNk28o<+P%%UT7fUgn8Y`D3kD~)DFXI<-qhw zex7%ijA0(7YYC|S2XI^_JxkqsPF}YGsF=mXz%Ux)b?c~Vu74^D}uK<%pVt+KmM~r!q zu@TPbcD1Zut7!O5VRg(1yVrDUH}|p(56W|Okp39ZVJ^zMIB07m=GfB81dwS^=Pf#5 z42f`QE`b{ySGD%rNQoO}vqn>%h7ic&N)gn~W7lxP1=6<1+&D~w6ir;ew3-~r%Rd>X)0p`m!wzN+we{v738v#y;*zN& zLrkaaeo`1SLUiwQXa(b7N8-^i82tn0D47=UugjDoqd*W zK+usTo+4=zVz=4k%z{`ijb->%xcA0ACUd z=kMPdt+o%}hQE>~uGu^i5mNbmaNqVk(R4@oR!>Jr*I82w`WCtk}{8wIv1K$XvK?$$a z(B^JYq5Eb!5SaOD@8(6*O}bWgLL?fiQO&K7;Vd%6RD*nBnKHG6N*Ye}yD=0*Kb-`xB%pL)BpNjyby8n7* zAJ@wscvy81?~rlQIZp}NWw#ubk=k(b&I)r!flD$KuFlqeE~m&#zDSYU6;In{Wh&u> z!v~|5PR~jdB-Q>#y(7`O7CB=%m@ej1x{C;R`#Q1vI@N6zXqM2I#Q(u(t^H?tCpm?nl&^};>? zUlqEUbqTn1Oyl9!_3@w~>gm!SKux7h+Zac?-pQ%B2~;qXILLQz>{0C(@~%_zplq}a zj@;?pfSC337V20%seLT5Frlsm>M$tTF6Aw;`)nrY9{nXn_tvPlzp6SqN6yJm==)sF z5Hy82G+7=r_D)Ym#18$~Sb+72CD{c$1S*M8Z75Qe;o)m-BO!t4Oh%)x4%kvk+RNX| z%+;=`Qd9qv05nBxH8<85$!R?*+k)$%K31^fh{sy2GdsISvsk}makw{~6r`+G;E^DG z0qqfyq@&wlFvLEULW)C(}bY^jdB|v;$L?WdhVF(42WwqBbQG zTS~9sxA(t)ut(lhVG=hW0#}tAG?^N^YA@rW=+Rj6&E-2Iy~!))=er%rv&H!wIT;b5 z%A0Ei?5@VuFP`PJfp4?TihV+m_ZYcCX6%j=Pb)TRyIpA(&zn7m0Bz9jc#ij34aENd{bPq+2!{MXWyr? zckBM7qQtxOjDyA6fHwc{?VwFmcN~ZYY@#g*7Za*Pv`*zeydQi9rU~Bv@?xEPt8{Dh z^C>#%Kw4+$?!PheI^p4nazUl~gJNeMwZoVhR(UqA`Jc?a_n zC$dgE?eiw@@u9ro(sQM%L5bYI*6t-oHXfHToqFES>t6pE{(sd^-^C;T{vW+kvs52x PKAylYB5X<4SCan+;Htg$ literal 0 HcmV?d00001 diff --git a/website/static/img/stackql-deploy-logo.png b/website/static/img/stackql-deploy-logo.png deleted file mode 100644 index a8347506b5a9cc8920c9f143dc3b72bc18ebb47b..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 18730 zcmce-by%EFvnYsL&_Hl^CpZl5?hxGFZE$yjySqzpCrE-@U~rc}fWZ?OBm}vW-#PcY z=R0?I|JdE<^1#gdc2{?ocU5)sQC(FI1C1CB1_lO0L0(!D1_l-aeQrcSf_{E!e{F(( z!Fp=SNy0SFlAb_c5Nst>Bw%1#lHWX;BSPO%-Q@K>VPG(a{{F$fV^j=jCvt zlmV8m&g|w^t`^qpzRqq?Xc!n_UjX#c*&1k0>Fey|;tB8-VfY6E0Db=3%)uavM){vV z!X8#O08MGx{{)4;i7?m!fo=c}4j&&Mb{}qbR}WhbPC-FIj`v&~TwH8W2sTeY7ofQ> zn~Nt6bf$lwO4{1f(!<^jXz%Jm`FCn_3s*0o2m`~vp#B3TE6aZ^*RL7h4eqUp6ai8*?uwAcLs1 zjJmR#J|!C^r!dD~yqxU+%fNqH{(UZv|BDs>0sAim{=cMM0toc5xA+(RE}rb>|Fn4h zWg0tFo*d>@e>w2}-#G9eqW}_Cp8o~$zm#ZMyZ^TqC=dR2xS4x+T5J2cS&J}eT6?;B zd01NiSHb`1gi;>X=0IyJQLgt~JZ$d;+1^7L^xwMvB|G8&?2z#VDp-kHTM1b4nDbh( z33BmTv+?k8^0EmEa&ocpT3T6fTATCm3z%E}Yp(wo^1sa_YXO~zmy4H+k5`bBhm&8B zSK$4>#{ARyzYWoL^|G}4OO`0tzaalt+y4UpzY+7lv+IA7`tNN0|4Gnp|HYX8O8Flv z{VQK+2UNb?|0Z8(8$iMfXy@u7s%ULv<6-SbDdBDHBK#Nle|G#g;{Ly@BGga(n;!lP zLtk^Z|4jp-z<__W#nnUG)zwK<%G|}OUJ*IwdNK@u4W}PG$0?DpT~WH0=t#6$(d1uRYwz z;Ix^(KS%w!3IPMfb5@r<9Fu*1R|B4x9+!fO*a#B;=YAsvV1tt*>+&9-Glq=OYn)-1 zF(GsJA3_5b#+{}I(~#bEE^I2QH=}7ZRP44~-;_Y&f#<(FWv_A}9B7it+N1&N_`RMN zRA_rQD9sohQ*5>7nAK8-a9{8tFGLRc^(UymW0Tkzeutoa*NN&z=jn6OJc_zQe#ZYZ z7`ae!O6baPu1bm$8Zh6#1qe!(z+mW?zR$bltZBe$DTFM>K!hkXx1pb}<$S-Whyz(l ze>F{$JP-aH#End2aE&nG-4RkQ6~)g4B)zO-8Wr-dG%s#agZw|7_4S6>ICyI59H^DK zE`PBoj?PdqHq`P!icjTy5O6(fWq&4*|0)sK+`%N6R4FQVIKT6f0>Z6zPpszSimt!; zPSYzFf~X#%iQ3n33mbyCDkrJ)?Qj?ms2MYaAuZ6-Q0syp-|`;V7lKYS`9~iZ-nbs< zu!^gfkWoi`<#t-4LT$_wJRByi2M(ktz4ItO9SPVZzb?Fz8_-U?xzjK}UI{CE`^qRPIkg7F)z1H+x<<%y>DX_+SYVDu@Bc%I7rj{5o_3H&E^ppy} zuq5gA!1>~c@z!=QqW;=ujg#A3xl;33t48}?cKqRE0~ z-gRU;_D=6PJBW+L@8%eqF^i~&l+Qhv7h>#9sl>&(?__773UTSqWuC!yXb|1R7eeQ(CxP+(G+e4! z3>Npn)xYEjGj~sh)45k)gICm#*m#6Z9~j;EdLre}4+=3wVRn3Kn+fe`TIeZKQw)Bu zOMw2kHB41nTzb>(3ew=F$-QGktaIoOk~l*?`AspR^Hsu$&n)TDZ3pqf2scmJmd&pL z$*HA~v5}n-rdf!w?{gjf@9c!D6iU2eaiqe8V;M+(vL-h>(V;Zf5-MuB>8BiZ({DPG z*y@FIl^{FBQn?3rO^q`O>GA`Di9I8^GA}n4W+3@^R;CXJRb>c3_f|hTp`M}vo4jmR zkxmyeTK345R@3)kO7=Cx=w05F!Ik{tVEKB|L{D8eOrSojs8V59eYY%joUCeuD#k56 zS5bD0o+jmf{Kd^_o<5$3`298Gf_S+;ItJ5i8aG&{_jEu<2B%O4k@xrZ}A}Mfz3bBt20|g3BNsg znjdg)sNcf8oseOG0oDxSKC<@{L+bJ>)R4@ms#hfLHP0lzeS&aV zOH)=!cEC$(E#1-J6_I23`{yHwlf_q})(D9ifV)~CsAg`9Cz+Z}QA&R4lDI8CfP~Jo zTvoiO%O&Eok`9jeAcVD*5|fObv@Cc=3ib9*r>?3~>HA@A(%f42VM3jJSM@BajvYo~ zD|Y6Td;f|xYelY8F*ElzTaZB0d!aImF>j9^y)=j&NW-x>p6(6NB}q5qk1u?ZnsKRW zsqm+LWamSYQy%R0-#FUVx?p(G%$+B_a~2(+ne^lfEBm{rP!XPF|G+hU994JX{JN=H zUHG#kuKtnKYAM86=YV2--$tcpWmPX`InLlUrgA`uo}~9v0Q>ghprM?ukkrI7-LNdu z_T?|6%IoC)NM9_Tjmtqj==UbPC3!9Q4FE6@IB_hJ~M%`0nv}LEqpqL5k2kkSs zS5sD}&~>0J7$!B4z<9-ro}e6YDRp!Wpr@Y?k=HN!ViCEg1^jwkIwS;sCRn0Bt95>a zh^FsQls)P^#ruWDVzu+q&sn$lOaah#v#@?4eL5NJO?A11H99~D>f+u!Vz{#Ar7xhHy%Pk#=}Ljj=GveY1cDI#^r+ zgYt~eutfK}SPi%1H>Cp+g}jJflqW|dpH;^HKz)*sGf-000LW)xNoDQl37#jdd!4`U zN1FQ8Wj~EMCiW>b?LBmzmo=9^gEtuCU&{WL2wAXWkEt6Qjx`X%OGYuaDR^bI(X1k&t(9Z3df5!}z1*-Ju@B z7;^V5p&gSarTomZOJVOD%kggxcjrk-=f%ei(xH6@_05oojj0PXNJGO-_2AetqOE0w z$pJ?-F3FUI8}@6Qu>e(_-njQhQ~B#@3nW>sa`Dr5hk)-Nv@uCrxAQ&cOow$^aHdMi zANiR&`t?}>C*oWv{4IoUw$<-)b#6G^lQFJhjR7EQV{a^v9mhIgaU;_5)%8kMd;!MM zxZBoGM{pqAw(F_*lQ3wafC&g*g*0ZRBsEuLgh-HO_T5J>@)pV~x?{$dw#aHn09;1{ zuV5QJY<@l{bt#ywT9+aVoQdDRVD{cKw1G$Hok6RJzldndbHIddtJg6c?Wms>lXlP_ zdqMp#xFrLQ*cCSYi{PfC)9~hH*4(~CsGMwW_g=r)i?5Dj`Td`jF)KEr zisuvVmlRQP{yyxn!1S-2Dd@(><2{5qT)2xFFG%247p@^clA9=l+&PWvGlt)Uo=T4C zug!&trN|HHji>LV`_@Kt2=X8`0-reL`qy0~|w z9G{wgmagf~l{gln^pHEuCbuyxY-rzO`HQQ`+qVgoeB295#wiiC`IzEIxdk^_!bz}B zP9HDvQ3N#8Y;d&);qf6~(-8D}n{2WJ9{j44Dz5n2MO4{ja#)8Ey11E_mfeP(Bk62d zU#DO~;T@Mha3lQaQVrE=$JH) z&ih!(#nEH2s%NLY6u-bqgg!_>26Mqf-9C+Y@#bj|cE72InGnWsgluPt(&+1`dJ5M| z7FlK+q2Py;Y_I$|*9yqIvV-%dHyuA<;SXGufV(!J=Qq5=k{5>>r*;&>7A6%U#hiux zoV4A_m5>(};(jqtnTj>oH(o~cpyy{I-5z*#W5I!7E+t7Am?dv3A`aN4>6(U(?%%r# zb3Y)QHN$<}UVOF{l(#lI&K~C0DnYD*C@b9HrF?le&i6cd@gp}rxEB462CR~ZX<-Re z)vAj|{sF65@bIVOMsWpDmuu%wE$OOJ&gYNMbg&kIz21!iWjA@{ssq=N+|Lel#Kw+u@^)TbPBV|E@w-*@Tnm(3MxUm3Vt97T8@E;i|j!n?6s&oF;;EcsNI@}G} zDeVy?=L(g$@?zcxL&M%oC>Ro0C>{4*qiCw}%#kXSZ3&;MG|&op%Oulf{Vp0H-{j+!86={Jyf#Jk(NgN-Qw!y+lPiSW zs+Mvs30<5Tq6zPiV53xImiW1F>dsj;khnw4Ve<|XH-y-ss=6kWSgMI-x)&1QeP*ZA zK*2ma231(`Dd)V*(wJWhjMW&CPmE_vvyNp3!~UuFq7Hd?_)MJX3jsy^K8jzb$+ozXOEr@@icRmSlv^PcK1547I9>SMApY%`QL%s+K;a)w}*%maCOYgoWU--dS}m>BP4 z)`%1nH=^x~4fM}U33XV1V;%o??P8NRS>O0^;nJn0wd_^lbUk~si@PL2Br7&2xiqJ{ zLR(x}A-Hsoc%)R|J)v)u-{bgaC(36*w=#ddm}Fm_uU-{`TYVMr$U5F z+1Hy*sHfK9W1(7gbpr89XIPRht=OwcS6)p^zbJ^R5d1>R_wd{_;JA927#ah8tK4Zc zq$DCPwDk%eR`q;C5CMORJTFjXrZ<=%3?J$QSR0|NffS$f(CP|?!D#JYkVu+6sN(p>wU)_+t(z6;oOT0&e{+)_cUgCo$iLh&zMz ziFx|OJDFNPrJk{~QRd)id->(u;h?W&ZOkX*DsoUAyjU$iJZkZAf%#%MZ_|p*H~}yN z;$j>yl>`kR{4;rfX7WzfUqAvIyT#EUb|z)|$#}Ja z?tfPtpCH_t^t9`1X=sTJF+QUhk1IBMAgH?Ln`R#;7<&)x9CUi$V~@6k5!MZJJH?)Q z&d;HJy+*Ej?P{3Mhw5_T`?0kLT>cbHhiTG8e20*L6zAUPQTY}_rpabgTH_T+#vuV$-=PHG=b_&=XpiOSF}a>|UUW5Sw>hD6x?QjZ*`1 zjq9c}GE_^&m>tr0j|@tY7s9MawS=kn9WPXZ&E%L+=JAzd=|a6=BR$xW=o@Q$1`yz$ z3L1ABS);=N@ce6ASFB@j-uI0mtzjjiKP(hd#NTzo+egr&CVlFi3n@NdoZHCjd*;a# zImvxxVroxwz?FEgvM-&lSLI+!N&2Q6VjWaskl)uf>58SRL&tTIQX+^g&Ta z>Y7KXRR!o@ZO^kJpb2|_>(~I!tb21Jm+D!0u3Pr$2mA=jt!y~aFc*RB@QCItCCQgS z*?PAyyKtBsMfZ7BhZwrHU>8&}Bm%daID7)`6YMV=W5r)gp-For`kx@Q4!K=Rd|gC( z5K2wQWXPvi%C-P|BgULKrsw1|6%?(#zuCm?Zl!sxp&G?>`PZ? z&YtslI1M&^x~a(|hT=!bL#a8W!Y{fkj!!?Cq}tS7xEG>Ad;RFVl4Fu@hki4gbyJ!Q zJ!&r-i6(4-^}UZXRN539_|gOjqsG_^H_&5w?3}5Du33Yyj`8Zls(BVs8Hm$uSwNrF zm7aK5ba5!@+Tu@F)EYjQ2Dc&3`(afg;WBfMPa%3KVb2Th0)5a5BErZ7jA$e9F8 zN5_Z9WIBSV#?VsJ#W1Tc&J-MlTNWgaP`};oeThz4a}|Te1OHvP;YLM*(Fr|#fV-cU zOVSA&lN}&I_L$Z?C~JS_MHVfN6r}a$IS(sSF5r*u^5bCpM4C7& zjhB`+;u9A3W$6bp_TsNd0wj>+mi6w5X4B1;oTs`=u-Fozj?&mOGXT$a;`41uevg!c zxE$+ZSP<;v%jMZ3Y**c_EIlYT{~%X|3$!wSSu}>HQzK0YYLL2jiz+I`0hQqG_kFkQ zPmyr&j|SwZ_P{NO+ap>jP$vB-!-W`)q%B!$4YRLTR+l+G5&SK-)wMOKPLf^-X)pVJ z)?TI!${!}{c;Ob&s-C}(T}q~ImoUvf#4=rT;5JNkA1vvZ7b;QCznJVUmPtON=Ayj% z)ifHu-I%E=tic@V{sZl63Tn}};xjz?=*!8v>ya-{*-D^qQah4`SjXbrKv!pB1lzYr zQip0Bf>QuRhpCLq@9f*CvA`Y-$*B9thO&g=LJpKuJ1A2_?g0c*7%f`!ypyhJuz@w3 z;I0L&c|KcT^b`|xUM;*xHhLp{^XCF^z>`c^aFqX;7fdrZMG_vuLuk?bLyO4?kHf|y zOmHUo*zk!Ijf%23J>;m9{^~QUED~=`5AavvwY%1VZxMj+PctD&X2)c{vu*UKSxI6D z8JEx!fH0Ko;)5hUJiJ|!{``+QOHPK)a#_VW!4ZaznB#MD9sED6C)=b5&wdVD-~mH9<-DqT`D{dl%7>$=__fxGdqBd%im4(XaziX}!ZjkY zr~04Ty)5_PrQ(?7z$N`3af_+IF#o5JJ*m=?qOIn-UpwZkF4wegw`c#%D#7-unYO61 zu^x?$oyk72D5(Oan6LD%^NGi5KC<9HBsZDxT##uZ`9&Yv2*Rh6YzZ`9gx9eJ-?`x}iFoGX!F(7W)MVLCV~C)qn+ zH^xon7$O@zk{@rxRv|&&Sj{w;Y6*{#F8^6N>G=SEZtiSrSbl%zmDp3sh!kYJK@KUd z#1(@5vZmquP%tffHCnl^nG*yKS|~9TcjT874VCNpfv_F_P-B+;20Elb(4E?dgxN+YS!=}uCn zsJ19D)zUfJU3La+)V$l4#9-=FB_g_xai+#232JEI{2i2^9*%XW0{E!s+&b^VTYmM6 z+n@aIP%70DxexN1T$wb%=d7~hH+{U?KM})M21a_e{4jI>y1fAo5x?LwkezDG3L>7yFnUIdt*JpuA(fAuE(NHUITs{3_i&MAyC zi_^kd@dK0Pno*=e3@sSMx6AS|@G`2*A@G`qIPq1@aan$!pSxo|BDP7N0xSO^68$$0 z9}XHtT;!C&tE7KNReCH_&G*xZ(yQj2fth5@DJN^>K9-|^Fu)w0B}l9keQ=bHA6sd- zWPAWiBw4+VPO?tuR*L;-#2W(M;cEjUFgjM(FF>t0#ZQ3G-;&rk1+>z_}A&eu0Go@yPX=b#n+2CRps>Hvl$(C|A^ z9jlBHfkP9)SrR3R_j#iOZ)z5e;l6?1^`}GE#l9jj;r0x`e-r)<6RMH==qdwRmsT?z z^oZF)My?F1wAR-YSp}uGSG~~U10{apcl&!c8m7?G*<}DQh7w(ecV`tGAvHb-K2?lF zDP?s+S^qe$AXvbs_k9H_Q=d;EC={oTtkR)O&>BD~AF-pO*0xypPOb??@AizThL&js z3>moK7#~N{PfAWTfd=T^4ZaBtuUkpVtZvJ}mEXIya+7q~4R6p)=?&R5aK+Xgi8FrN zV)%G|84DFrvbP~Fg$Ml{&f_5z=VOl#P98WI0%5X(r55#u?L){&i8n(+@TD(;*;}wW zhR{N?Ufeqp(#Q-~a@9V8X#ia-rGR9iw$OD^Dd=3Wd`)WNVcP;%&N}Ii3OoPg`#{Zf zjpeo=j&?S2$uubMX4Q4{R7h(9mEK{;8;-7FQjHBK5r!ieF%--`3(qk^XksY zV6Ubc>8OW3{8FFs;$JZuBC|3RiD1kxvq6PwMo_Wo>MzAX*Up?^o4dS$b#@sv`_;S-JM*)EREu zmO9T2@&oTtB4nZgGb|@wo*SD3OoDL$T3zXWuSU5Dmujin`;@y1B=zhM%k+lw`iL9c zxg4bV+ky)OOmik8uV{+OT9-_rDh?$0#udgjDu_D=rh;x09a}kvfok} z+?vZnh^cl|N9(zH&wj~N0$%yRHMyIuMlcW>BRA>`ftXWG{6Z>YXbjo*t&F<_B4dP( z81&NP{ed=#*NdbhA>(itOgk)8LH*L|752)J1=qGtZ!2+2>-A&MvnzA zutH73{|v`JC?1$&O#I-Iv2#bVP%hzW*mlhWQ)8AYZyVy5gZ?MI)7e4N7rVPo%SC2oBkyU^eqKH&&%JAJmSHdx8lw!(a$G!#IH#}@D@tRtJjtT zB2RBrdbfk6cp@{))l0ykZ&QUu%DuE>I)5Tw?X5KC^t!haR(7G@y!O2?GcZZKn;jT} zb!AkZt+Px!hn0zK2Y>D_c+wwLfpv4672L(j=|-Ggxb`Wn%}O%LG*{Dxr$dH#a%KDB zd*7Q4Zsb3hJa0oH(8H=Te;XNUUAy^jJ9`mQBqfr&3h?e_pMV-!T@VV-HIvUlsV@<*YFBgQZ%U^Dr+7-4sExtnbR73cZd=W{djBncPb4VuHQ5W85DR9i#%zsp&(k$2xP<35L zitt3w+uX>1LS)URwZbK*$#+AEKQrGH>BvTMo?#pH0Buf`e2(E7p@SUwIXtQ5X_vJ) ze+O2h>%SW}>5RHO6)ws+lL3|v$rMTU#U$wd;6|o12RT11Qaug=tBn$GG8+m)m$*9$XbGn_Q*sym%UNmX9Qb)8$Kdrm&y0dCgxeeT-5xwo!X;lbF5~ z)+Am@)BK94Z6H@Jj8j+jhIBdexDa=F3}kcfNVcH&jsiyD_Sz~aC7tJ~4)2IFz7LSd zwxWe&tVyo=P{q%uB)OJey^oz^;hDzy!)Ds^GY!k>m~MGnkW}aXeL3U~(!;>`WfE9i z9#3<*HpWleE+Jf`zkAOcv{xnBB5p*HCeB_A*txd#5Cwrx*u2~ux^BTane z?_bNHr%f@VY7a{#2gnuoSMyBWf-~ruc_DG`FR(bu zoQV}CLkOqLfyMqk3e3CW6rRO!&(&(CzT82xxf+C?nhE!#<}*?ekcKjZ?dq0~h*5k; z_zvLGC+L-qvB~dq^oSA>VG)ZN#K1zNh2$*>zFuVM%`8%dvme4xeCz zXbzBW{bPWQ^ShRu?^kMAzD(TgjiYWCJ1X?Zq$%~OYopgZU{XgHT_Y~}7*f2!FQi2D zM`fO2X?OZ6ach-37PN8n=Tej|JO#Np38W$_L5GILl+*i8 zG5+bzBq%D6%%QNjFBgE2>f1k#Rp8P_*8;L_{wz18DG-L9sbzGM3|q-eWquTuxU#yE z)3?LOn^g3BVRyjlK9AoIS*GWY9CrBiM+sMB`^J)$2NrxK67B3xUOL-mZ3AgMJ$fff zqVj~#@WzpPbLN^3v*zfNjIO$Wk4xfJ*J@uf!Z??h9^U9?;sH%u2`vYX)3 z@IA{3lkW&tPcL|l>24}aO16XJXQAh_T&gph;s+i-wUQxjJ>b|SVQrmCbds+fnaHFW zxw7tUUpqS^4mfYCrg_&zq_XB+q-1N6RzYRQd;qi_^0GuyEUwaFh5nf=$QwV!>HXV3_ZI&Td8qBQ)?=`isD9<40{qt)r5q++s8t`Qpf8c_h4MbutfC7 z@lSS;Bg0{rd*5^q);u3-qU(@!3*p(MfsNzksHynvYJm|Faj`;?dwa$%ff>g4?BKx0 z<1$>Hxaokzb=e?CN5vO`d1r6hgBwr(hJC4D5vQfV>!`6GYb&z5f{tdUUx?rPzn4-A zBEh&n&SxASV=MV8htbi-vB29^m=L~gxu9^rC_=7w@2kut;u#LAmv|-oJf5F%Ag!6C z6Y7h`dra>Dii(YH`vMS3rP}?hJw$*M&i*!AQbPxISDWgsIA}atH4X>an#mK{3!zZ1 z>coD1CMmwJ_Yx~u|yNYgZjuGGH|tt4~51szptEHX+V8NLsRSWEDcUL zYv6{26#$DCU0EWOCLsw;lF*HBxS5f)oviVSq@CHdE%GQquZ?G?icWHXlkR3Ah3I8} zWKRujYKHbj6`h8zCXGikF4}-Jf$*1k#)Yv>tE66uICDh(ijakfmv*kBlSmD$bS{^J zVVPloeV9ZwEjh}mu_o7``Fw8N#*Z%EJ94=}ex$ITx}|G4-6XXl6r?(R^aR+Bn*RBC zy7i=Q{vS+i#%T7k#lL5RaooQBc5OJ(w{eZKA1GjY#pk+Sm0Y) z+NnJ6EGYnzWPHBN#2;*|yDg-gz5tl;&#-`$C-3UZucI&TufXfxJ0`z5GdqIGP84>% z*)J9lb&p4maygL6HhfA`Ao!0ujOe8p{%TIpJ3bMs5L1!pgd3NoM;~b2Q?y+)v>xU* zK=wcgP-$53mH|a_1XOdv`sZlIKwQSfiIGhI2QR%dxGObQR7qNC2N0qJ zwqkBw-VY~4Y=?j!)q7mTalsrHPq|UbN8PiFHMnjq#x{GWJlb8Plr5%bPbW?8nUp^g z34s#Wd@Rrsn_$HQeQOSuTDfLdIH#ILmp?r6Ei(9Y!xZ+i3408#=KSoiCW~J4C{$C= z1dk76q~uL_^EwWFx&>>A{{%p@l@`S>bzybxa%~1u_ySiJwaUF0Q425QHNxCO!(ixQ7N${X&32zVlMD zJERkiO-%F;#Nx^ivBFdK&H5Dc#*?-qh84^;t%M%zcU+PL2oicRfA>@3pVer4(?;)@ za*~9w#HJX^Dkve5f0+_VPH1qJ%paQ#|K-vslbuExJ5?0Q5hkH37PM6d$S-v&@u$TDISOGT0? zL||5%`@HMN>S%ezSwgP(Af}EaCf=~Kf*M$M3;XKz;`x8@BI^IT^jaDVGYCZ%MN+|Y za^a&;Hd8-8^IF!3qIMk`-UrGW_B35)Z5G&NL-nex_FI0X#^>`b-V?DcW$Xxc6gp+& zn+ze1?RSlWbe$s6|&*{X6Cvy5?;cg$6#B6fet)93~gtdLQYQ4I2VZ%;4Qb;`Qg5 za(*P|ZVy=~eCJhrqOKc3jXkXgej9@kr=yrc)jXhw?}|)#Ehl#Su0-Rmf#)3fxG-s( zcK9S3-w%hjQ`=M|k~KO}dh>u9G{LX0Oam38;=2WDFE%ZMTJ6-@*i3KD&=7{q=9=kG z{m*fn_aPIvsrwzuqS!cK&$wAq&Cc|mEt)8RZttaQT4~;!l*d9bk4q(^LW0HoY9r;T zXHEQoD1cXC@3i(qz)TBSQrcdcwU+l1(p+`Y+%GgUxyD%v;-1Ah!_rM7wcYz|VSm8rD`!p)!2}4UBRO~1OPr7oD3&g@ zl;s|@p^x@r+plb=&#ya%e14{)_(Vvz1U-7%6S1Pxqb5vCJqupDVLP)D%6;vWf)iTuw4Jagj`^41d2;^B&==Z!S9KF|AHlaTIFW+L}GY z;&S^8`VhgryM+N`ji zpA#i*_htWB34+MCh#K#fA5t~C9?e@-D_&%1suglKo=R|(Udrc$B`SMw_mXV&&NKH5 z9XCpztq4Deczk6^_t)N9Zw`^7*(%hZk+{r_6Zn;-D&jQZ(4RAVZ^YGZZDfpH6Lb~M z^f28{mp(A86Xxf$3__9)EFRq{opsMuC>Yb+L5~dcS^Su6<4yy$bIFryzhDk#o;)JO zxY{sT4P7@K#`D-Ilm%qabJ^lt zqU`Yh8iuA z2vJYrc<3c%s21b2d*j_%)zX&S^pv=q{HWIl+H}`dU@G=4)_x5QaVynTJT#hQrbsw^ zRK$ljSHGAWJufl%Gg~)xtj|nH?w^;ih_PZCF<_?QBUI5+ND+Bf%~qJPtl%NlEaVPv zEM>*{=6yJT!_<}v531_qaui;i@%{fSjP1HEEd*fAkTP#v&O(R9BmV zvSzS#>5V{Wuy$JOc5dS!M(jRjo&IgPP4R^0hnnGA#V_{fhNtzma-9Pt2xm{S(Kkl; z+Y{}#qmY|o;5SooOHsH&Jyv~vE@Fg zRDNg24?tetfS#fKx=!^J+shNz3yFQ%{)yg^k7KmV0!bL8{VP9g&A>tGN=OLn9U4>X zs;xFZ0x)#SEK_<=RUk$AadpD2NV>R`76M_o0K!(AKEIzE1?~(nv`)kcoVRlm9A7WkGQO6?Tq))HOHNJLL^a2o{ z@wu8JFN%2m-#cx)EW0)nXe4rGj*U}rCPt>)Zh~)mN^x^{xcp$Zr?$S@t9OKJm}W5f zNHD6v0Y-XUg?c?!1sk|!`B|wCJ?0luAM`bm7!a@5jFGwIk^PmbRLwXUR$AgS{3sc? zHO&O8M-D~~jZUlz`$jnGi~ityeP}eW1k|16@q2i=h+~jeARY3kvSYf(R+(YCn@o>z zLc&yE2!KI=iJU+F6LrS5i`o=RIfhTC(TKOpZCK@ z;JJu(SJ{T~!zxR&w#?6@+Fd}G?Aqu;KER%rT#4rC3mI4Mj$q+-IABEI^7l@i`Kt}* zhflZ#oF5JC@f@?s!xuimV&!Rw2<1A;N%GY=&xJ`lyh0eo7-5RLNfIR6ic4~WvkZoEDnHqHV<|((&3Y1tR$o40?@n@)J+gU}D z6LOVODr`$k$HRhe3*^Ihte)t;co)I>pre1$hF0Mx1u?(fcQ3Il<}qAhl(=H@EQUJ_ zTtJ%t(cMHm`fw&O;&-1emIP^v5JzpQP8Vt|!LLa9WwcQdB~{HC@1#+PX{#yA$D9yE zbYr21y+Y19@!`b8#5!1q7WmMr;}c zbI0iX9Rov~MGUoY1^U;RWZ1rII+{6N~2p;3lL&y zhMQZg)WjTBBfnEqu__HnTeR@(_*}4UjT=+driAltaVSWjz!7M&|MgCJ@p;w(WK6nm zvVmcljNPSj7}v5S3g`S$T3c;Jcdn;!^g+BMMMAYd`W(?fgEFOq~AM^K)2-8@{jI9+5jISrSmOxzfXV7j5@K<#Cl`Y+A;8f;N!qo|@c+~`>{MWl$*MuNe zKHl`5vHlp(mR0;}JvkY}m8>>&QMJacepPCwfI~jw%z_yUe7AS@^YVrJ>iI%82?aMK z_?~YeMkm)|Lgl?wKQo+ML0&K9#>e7Qq>IndmdGcRkKIag@-mFBy!>Pe3G)@aCJ#=iD0)xKY2E%8vGFr`yqYmL@$yu5{ntJ zCZY0Rpn3)eF>1q)5c1fPV>FE)I9<~$HE^S&UEFXE6Q?G&Rt2Q{XnWP~>*&m@U*Q3n zVO|IogWR4!!9zeR+2;wFhr`zX#yw8LaE>pqyQqDK$+gb(%Iy>7~z z)#&U6&GVd2JJ6D9RyEp_r!s#rc@6#Z9cR-fp-8J+eUM{-(2OGlX=!Y|#1KwsoJnVF z^gOiJ|ENX~gVkCFy_YfrMU_b_F>aNFlu8ewo3v;Z>N59X3(>AJb9N4c!#;4WJpwXV@r9%0A8Sa#>Yui2gH6y#jD7U)llA|;{?oVR1L&${=N zV9rV1(%70#Sg8KpPd@IwrE09NXI-(^LO`!bf#p0yS)-CP`cZNK=o;=}zx&E>G&?EN zq`YnOxWF{N#8w!{VsW2ur9B4|1L@cRpY(`vfMW$h=AJ0kKcf(59KH+YK#8RXq36(* zavtOPG*P}JDgFLwpliFXEkrir@gHldGh@21;O1ygkVEAy3)ashPn3iQjL2Yxy5~)K z39P2_^*h|HW)Og%JD?#ZMW)ZeXPDDq09C#X?;83H!yfz#SYKc6*ac^w8Z9~<7p2`w zYE^it-CK`GyksK!L_Y`Tb4-y4$|>opQ1=w0@a(N10W=e=gcC18aj#(9$4K7bvoiWQ zqt~At9)E$2OqeW1N_1RWV%Bud(Sh85B|S*ylGNg79jBx>vEpR0b30F%$B5TUz{|&6w(Cg1lTwXg(-daot|O__--?Cu z*ET)wHytz_^*OC4fr~;(jNdyZ7UPKvgy;17F*EN8?||0d0J2~r#<-BW?`X`&b-vC!BS6|*qCF{lg?wLYg-N(07u>$t3(1xEGM1ls5qL( z6t37&Sat4R4)l)w%|cKy|w(-r)Rcu^xX$_K{y>x-?7s7GL> zNvLL#M80N5P*lGLQ0g8=%C=!W&=9vWJE_yBsD*CVpC$MGQNfRw-1F3_%Qv}4_M30w z2W5Xwd=y<>G+o&|0m2BQM1LZ8AX}VBd0lHN%72X&+}jXi45UJfz`=7aNoCh-js=!< zQbcEFx8M=2ke4T~6UTUdYKe zEl0e(T~JL3awFPM%yw<72nUJhy%6iY{9Zko5t$u*r88cFoygfG<*0AKFVS#)*Bv|2cA|LGb=|o|){!?RN4yc;WqJOrgsJr; z3l32J>ZtJcmuXFywjpBC1LX^?kDIEJZqH;0(z(77IIPt)*J^Xsw_Ke(mkY&PyW+n~ z2RwXVQ_UVOI``$-$^9*JIeNg^%!Ps3 z7naV7@F*|(#eYW9d4ciON~x`jPi$*)ZL}?~nkzfqaJ#o~v(b~l~#YM1*gw>_@CyS^EAWVPC-m2r350^5{=cZyaY?+tF*apS=BrjnwZ zFUHN!ICd$%FANQIJYu%?!wku*o9mB;UJUO09dMgVhVo(9o@nK4@!Jbtk{2H=BqpWfwpHtTbZv)0e3^|tURWl!W}6idgUgU z#pgEf!)}~!I6)25gVOF78RQtCUYTT-11(8B}7-b6_8EOqp+vW!AaaKn-gR-T4h` z_zE4*i!x6CdE0zl+C~!xjl438-Q`uGsXGdmF1X<4dU;n3i)76Gb37j>p4jkD_{zTZ z=236W7VmnfQh(&m^q&E5fGvB@s$<7C%$VDeEDaiSRBBxD*syM<#I3g>740IoPk*VJ z^y=M$@7*UXd>h_fxn?%cLUY%ynab&|yUco4?Pz@joy+x~e|OY3(Z-YI4q|9jVs zjEs_RyEjD0IOy&x{4c#bf~(d3(>pUMQ}xoX8N28IVX>Zc?)Z-2-*wG#`xjr|@jWao z*Z1x3H5$TeSyFwvZ%tlz-a%}$)A{5j#`a~r{-C2PyqMlE)l?2#z4zpe(8)({^D?xj zF{!RRXtL=2B1XH?uu$!p>&;ky7&ZOd{_f4c_Wj52^c(%B)l@@=$kKoI-gp09T*`c= Q0d!!Ir>mdKI;Vst09S>*?f?J) From 10832ae857bc2922458958ee44e07cd9026bcf99 Mon Sep 17 00:00:00 2001 From: Jeffrey Aven Date: Tue, 22 Jul 2025 06:44:50 +1000 Subject: [PATCH 07/10] fixed linting errors --- stackql_deploy/cli.py | 2 +- stackql_deploy/cmd/build.py | 20 ++++++-- stackql_deploy/lib/config.py | 85 +------------------------------- stackql_deploy/lib/filters.py | 4 +- stackql_deploy/lib/templating.py | 17 ++++--- 5 files changed, 31 insertions(+), 97 deletions(-) diff --git a/stackql_deploy/cli.py b/stackql_deploy/cli.py index 25a9980..3a7fc2b 100644 --- a/stackql_deploy/cli.py +++ b/stackql_deploy/cli.py @@ -315,7 +315,7 @@ def read_contributors(logger): contributors = [line.strip() for line in f if line.strip()] return contributors - + except Exception as e: logger.debug(f"Failed to read contributors: {str(e)}") return [] diff --git a/stackql_deploy/cmd/build.py b/stackql_deploy/cmd/build.py index 99a3a32..606d049 100644 --- a/stackql_deploy/cmd/build.py +++ b/stackql_deploy/cmd/build.py @@ -78,7 +78,12 @@ def run(self, dry_run, show_queries, on_failure): # command type resource with inline SQL resource_queries = {} else: - resource_queries = get_queries(self.env, self.stack_dir, 'resources', resource, full_context, self.logger) + resource_queries = get_queries(self.env, + self.stack_dir, + 'resources', + resource, + full_context, + self.logger) # provisioning queries if type in ('resource', 'multi'): @@ -244,7 +249,11 @@ def run(self, dry_run, show_queries, on_failure): if type == 'command': # command queries if 'sql' in resource: - command_query = render_inline_template(self.env, resource["name"], resource["sql"], full_context, self.logger) + command_query = render_inline_template(self.env, + resource["name"], + resource["sql"], + full_context, + self.logger) command_retries = 1 command_retry_delay = 0 else: @@ -253,7 +262,12 @@ def run(self, dry_run, show_queries, on_failure): command_retries = resource_queries.get('command', {}).get('options', {}).get('retries', 1) command_retry_delay = resource_queries.get('command', {}).get('options', {}).get('retry_delay', 0) if not command_query: - catch_error_and_exit("'sql' should be defined in the resource or the 'command' anchor needs to be supplied in the corresponding iql file for command type resources.", self.logger) + error_msg = ( + "'sql' should be defined in the resource or the 'command' anchor " + "needs to be supplied in the corresponding iql file for command " + "type resources." + ) + catch_error_and_exit(error_msg, self.logger) self.run_command(command_query, command_retries, command_retry_delay, dry_run, show_queries) # diff --git a/stackql_deploy/lib/config.py b/stackql_deploy/lib/config.py index cbeb249..57cefcf 100644 --- a/stackql_deploy/lib/config.py +++ b/stackql_deploy/lib/config.py @@ -88,89 +88,6 @@ def render_globals(env, vars, global_vars, stack_env, stack_name, logger): return global_context -# def render_properties(env, resource_props, global_context, logger): -# prop_context = {} - -# logger.debug("rendering properties...") -# for prop in resource_props: -# try: -# if 'value' in prop: -# rendered_value = render_value(env, prop['value'], global_context, logger) -# logger.debug( -# f"(config.render_properties) setting property [{prop['name']}] to " -# f"{to_sql_compatible_json(rendered_value)}" -# ) -# prop_context[prop['name']] = to_sql_compatible_json(rendered_value) -# elif 'values' in prop: -# env_value = prop['values'].get(global_context['stack_env'], {}).get('value') -# if env_value is not None: -# rendered_value = render_value(env, env_value, global_context, logger) -# logger.debug( -# f"(config.render_properties) setting property [{prop['name']}] using value for " -# f"{env_value} to {to_sql_compatible_json(rendered_value)}" -# ) -# prop_context[prop['name']] = to_sql_compatible_json(rendered_value) -# else: -# catch_error_and_exit( -# f"(config.render_properties) no value specified for property '{prop['name']}' " -# f"in stack_env '{global_context['stack_env']}'.", -# logger -# ) - -# if 'merge' in prop: -# logger.debug(f"(config.render_properties) processing merge for [{prop['name']}]") -# base_value_rendered = prop_context.get(prop['name'], None) -# base_value = json.loads(base_value_rendered) -# base_value_type = type(base_value) -# logger.debug( -# f"(config.render_properties) base value for [{prop['name']}]: " -# f"{base_value_rendered} (type: {base_value_type})" -# ) -# for merge_item in prop['merge']: -# if merge_item in global_context: -# merge_value_rendered = global_context[merge_item] -# merge_value = json.loads(merge_value_rendered) -# merge_value_type = type(merge_value) -# logger.debug( -# f"(config.render_properties) [{prop['name']}] merge value [{merge_item}]: " -# f"{merge_value_rendered} (type: {merge_value_type})" -# ) - -# # Determine if we're merging lists or objects -# if isinstance(base_value, list) and isinstance(merge_value, list): -# base_value = merge_lists(base_value, merge_value) -# elif isinstance(base_value, dict) and isinstance(merge_value, dict): -# base_value = merge_objects(base_value, merge_value) -# elif base_value is None: -# # Initialize base_value if it wasn't set before -# if isinstance(merge_value, list): -# base_value = merge_value -# elif isinstance(merge_value, dict): -# base_value = merge_value -# else: -# catch_error_and_exit( -# f"(config.render_properties) unsupported merge type for '{prop['name']}'", -# logger -# ) -# else: -# catch_error_and_exit( -# f"(config.render_properties) type mismatch or unsupported merge operation " -# f"on property '{prop['name']}'.", -# logger -# ) -# else: -# catch_error_and_exit( -# f"(config.render_properties) merge item '{merge_item}' not found in global context.", -# logger -# ) - -# prop_context[prop['name']] = to_sql_compatible_json(base_value) - -# except Exception as e: -# catch_error_and_exit(f"(config.render_properties) failed to render property '{prop['name']}']: {e}", logger) - -# return prop_context - def render_properties(env, resource_props, global_context, logger): prop_context = {} # Create a resource_context that starts with a copy of global_context @@ -181,7 +98,7 @@ def render_properties(env, resource_props, global_context, logger): for prop in resource_props: try: if 'value' in prop: - # Use resource_context for rendering, which includes both global vars and + # Use resource_context for rendering, which includes both global vars and # properties that have already been processed rendered_value = render_value(env, prop['value'], resource_context, logger) logger.debug( diff --git a/stackql_deploy/lib/filters.py b/stackql_deploy/lib/filters.py index 1a8e324..dad5a8c 100644 --- a/stackql_deploy/lib/filters.py +++ b/stackql_deploy/lib/filters.py @@ -104,7 +104,7 @@ def sql_list(input_data): # Handle empty list case if not python_list: return '(NULL)' - + # Convert each item to string, wrap in quotes, join with commas quoted_items = [f"'{str(item)}'" for item in python_list] return f"({','.join(quoted_items)})" @@ -128,4 +128,4 @@ def setup_environment(stack_dir, logger): env.filters['sql_list'] = sql_list env.globals['uuid'] = lambda: str(uuid.uuid4()) logger.debug("custom Jinja filters registered: %s", env.filters.keys()) - return env \ No newline at end of file + return env diff --git a/stackql_deploy/lib/templating.py b/stackql_deploy/lib/templating.py index 2a218cd..a08ea81 100644 --- a/stackql_deploy/lib/templating.py +++ b/stackql_deploy/lib/templating.py @@ -134,11 +134,11 @@ def render_inline_template(env, resource_name, template_string, full_context, lo Similar to get_queries but for inline templates rather than files. """ logger.debug(f"(templating.render_inline_template) [{resource_name}] template:\n\n{template_string}\n") - + try: # Process the context the same way as in render_queries temp_context = full_context.copy() - + for ctx_key, ctx_value in temp_context.items(): if isinstance(ctx_value, str) and is_json(ctx_value, logger): properties = json.loads(ctx_value) @@ -149,14 +149,17 @@ def render_inline_template(env, resource_name, template_string, full_context, lo # Correctly format JSON to use double quotes and pass directly since template handles quoting json_str = json_str.replace("'", "\\'") # escape single quotes if any within strings temp_context[ctx_key] = json_str - + # Render the template template = env.from_string(template_string) rendered_template = template.render(temp_context) - - logger.debug(f"(templating.render_inline_template) [{resource_name}] rendered template:\n\n{rendered_template}\n") + + logger.debug( + f"(templating.render_inline_template) [{resource_name}] rendered template:" + f"\n\n{rendered_template}\n" + ) return rendered_template - + except TemplateError as e: raise RuntimeError(f"(templating.render_inline_template) error rendering template for [{resource_name}]: {e}") except json.JSONDecodeError as e: @@ -165,4 +168,4 @@ def render_inline_template(env, resource_name, template_string, full_context, lo # Try rendering anyway, might work with non-JSON parts of the context template = env.from_string(template_string) rendered_template = template.render(temp_context) - return rendered_template \ No newline at end of file + return rendered_template From 2718f2dbf04c89335ee0e8635bec632f97f7c2ae Mon Sep 17 00:00:00 2001 From: Jeffrey Aven Date: Tue, 22 Jul 2025 06:48:29 +1000 Subject: [PATCH 08/10] updated node version for website --- website/package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/website/package.json b/website/package.json index 68ae18c..fc7494b 100644 --- a/website/package.json +++ b/website/package.json @@ -45,6 +45,6 @@ ] }, "engines": { - "node": ">=18.0" + "node": ">=20.0" } } From 21a7e06670492fa8269f1fa8ad5782c35ac2f750 Mon Sep 17 00:00:00 2001 From: Jeffrey Aven Date: Tue, 22 Jul 2025 06:52:47 +1000 Subject: [PATCH 09/10] updated node version for website --- .github/workflows/test-web-deploy.yml | 2 +- .gitignore | 2 ++ 2 files changed, 3 insertions(+), 1 deletion(-) diff --git a/.github/workflows/test-web-deploy.yml b/.github/workflows/test-web-deploy.yml index 7fedf60..1e2ef91 100644 --- a/.github/workflows/test-web-deploy.yml +++ b/.github/workflows/test-web-deploy.yml @@ -18,7 +18,7 @@ jobs: - uses: actions/setup-node@v4 with: - node-version: 18 + node-version: 20 cache: yarn cache-dependency-path: website/yarn.lock diff --git a/.gitignore b/.gitignore index c87aec8..5028b94 100644 --- a/.gitignore +++ b/.gitignore @@ -14,6 +14,8 @@ venv/ .venv/ nohup.out +/.ruff_cache + # Byte-compiled / optimized / DLL files __pycache__/ *.py[cod] From ae3521b955ab5eab44690b9ad1cda541c89a72f1 Mon Sep 17 00:00:00 2001 From: Jeffrey Aven Date: Tue, 22 Jul 2025 07:16:00 +1000 Subject: [PATCH 10/10] fixed doc links --- .github/workflows/prod-web-deploy.yml | 2 +- website/docs/getting-started.md | 12 ++++++------ website/docs/manifest-file.md | 2 +- website/docs/manifest_fields/name.mdx | 2 +- website/docs/resource-query-files.md | 2 +- .../template-library/aws/vpc-and-ec2-instance.md | 2 +- .../template-library/azure/simple-vnet-and-vm.md | 2 +- .../docs/template-library/google/k8s-the-hard-way.md | 2 +- website/src/css/custom.css | 9 ++++++--- website/src/theme/DocCard/index.tsx | 4 ++-- 10 files changed, 21 insertions(+), 18 deletions(-) diff --git a/.github/workflows/prod-web-deploy.yml b/.github/workflows/prod-web-deploy.yml index f9df64b..ab53507 100644 --- a/.github/workflows/prod-web-deploy.yml +++ b/.github/workflows/prod-web-deploy.yml @@ -18,7 +18,7 @@ jobs: - uses: actions/setup-node@v4 with: - node-version: 18 + node-version: 20 cache: yarn cache-dependency-path: website/yarn.lock diff --git a/website/docs/getting-started.md b/website/docs/getting-started.md index 342cbae..6299e1a 100644 --- a/website/docs/getting-started.md +++ b/website/docs/getting-started.md @@ -86,7 +86,7 @@ resources: -The `stackql_manifest.yml` file is detailed [__here__](/docs/manifest-file). +The `stackql_manifest.yml` file is detailed [__here__](/manifest-file). ### Resource Query Files @@ -138,7 +138,7 @@ WHERE resourceGroupName = '{{ resource_group_name }}' AND subscriptionId = '{{ s -Resource queries are detailed [__here__](/docs/resource-query-files). +Resource queries are detailed [__here__](/resource-query-files). ### `stackql-deploy` commands @@ -165,7 +165,7 @@ stackql-deploy teardown my-azure-stack dev \ -e AZURE_SUBSCRIPTION_ID=00000000-0000-0000-0000-000000000000 ``` -For more detailed information see [`cli-reference/build`](/docs/cli-reference/build), [`cli-reference/test`](/docs/cli-reference/test), [`cli-reference/teardown`](/docs/cli-reference/teardown), or other commands available. +For more detailed information see [`cli-reference/build`](/cli-reference/build), [`cli-reference/test`](/cli-reference/test), [`cli-reference/teardown`](/cli-reference/teardown), or other commands available. ### `stackql-deploy` deployment flow @@ -178,8 +178,8 @@ For more detailed information see [`cli-reference/build`](/docs/cli-reference/bu To get up and running quickly, `stackql-deploy` provides a set of quick start templates for common cloud providers. These templates include predefined configurations and resource queries tailored to AWS, Azure, and Google Cloud, among others. -- [**AWS Quick Start Template**](/docs/template-library/aws/vpc-and-ec2-instance): A basic setup for deploying a VPC, including subnets and routing configurations. -- [**Azure Quick Start Template**](/docs/template-library/azure/simple-vnet-and-vm): A setup for creating a Resource Group with associated resources. -- [**Google Cloud Quick Start Template**](/docs/template-library/google/k8s-the-hard-way): A configuration for deploying a VPC with network and firewall rules. +- [**AWS Quick Start Template**](/template-library/aws/vpc-and-ec2-instance): A basic setup for deploying a VPC, including subnets and routing configurations. +- [**Azure Quick Start Template**](/template-library/azure/simple-vnet-and-vm): A setup for creating a Resource Group with associated resources. +- [**Google Cloud Quick Start Template**](/template-library/google/k8s-the-hard-way): A configuration for deploying a VPC with network and firewall rules. These templates are designed to help you kickstart your infrastructure deployment with minimal effort, providing a solid foundation that you can customize to meet your specific needs. \ No newline at end of file diff --git a/website/docs/manifest-file.md b/website/docs/manifest-file.md index e787f6d..52d2946 100644 --- a/website/docs/manifest-file.md +++ b/website/docs/manifest-file.md @@ -167,7 +167,7 @@ the fields within the __`stackql_manifest.yml`__ file are described in further d ## Example manifest file -Here is a complete example of a `stackql_manifest.yml` file for a Google stack, for other examples see the [Template Library](/docs/template-library). +Here is a complete example of a `stackql_manifest.yml` file for a Google stack, for other examples see the [Template Library](/template-library). diff --git a/website/docs/manifest_fields/name.mdx b/website/docs/manifest_fields/name.mdx index 65e9c9c..bb2733b 100644 --- a/website/docs/manifest_fields/name.mdx +++ b/website/docs/manifest_fields/name.mdx @@ -3,7 +3,7 @@ import LeftAlignedTable from '@site/src/components/LeftAlignedTable'; -The name of the stack, by default this is derived by the [__`init`__](/docs/cli-reference/init) command from the stack directory name (replacing `_` with `-` for resource and property name compliance). This name can be overridden, the value for `name` is exposed as a global variable called `stack_name` which is often used with resource or property values so ensure that this string conforms to any naming restrictions. +The name of the stack, by default this is derived by the [__`init`__](/cli-reference/init) command from the stack directory name (replacing `_` with `-` for resource and property name compliance). This name can be overridden, the value for `name` is exposed as a global variable called `stack_name` which is often used with resource or property values so ensure that this string conforms to any naming restrictions. diff --git a/website/docs/resource-query-files.md b/website/docs/resource-query-files.md index 7e8e9f4..ba119d1 100644 --- a/website/docs/resource-query-files.md +++ b/website/docs/resource-query-files.md @@ -157,7 +157,7 @@ AND JSON_EXTRACT(routingConfig, '$.routingMode') = 'REGIONAL' :::tip -Useful functions for testing the desired state of a resource include [`JSON_EQUAL`](https://stackql.io/docs/language-spec/functions/json/json_equal), [`JSON_EXTRACT`](https://stackql.io/docs/language-spec/functions/json/json_extract) and [`JSON_EACH`](https://stackql.io/docs/language-spec/functions/json/json_equal). +Useful functions for testing the desired state of a resource include [`JSON_EQUAL`](https://stackql.io/docs/language-spec/functions/json/json_equal), [`AWS_POLICY_EQUAL`](https://stackql.io/docs/language-spec/functions/json/aws_policy_equal), [`JSON_EXTRACT`](https://stackql.io/docs/language-spec/functions/json/json_extract) and [`JSON_EACH`](https://stackql.io/docs/language-spec/functions/json/json_equal). ::: diff --git a/website/docs/template-library/aws/vpc-and-ec2-instance.md b/website/docs/template-library/aws/vpc-and-ec2-instance.md index b11b2ac..55221b8 100644 --- a/website/docs/template-library/aws/vpc-and-ec2-instance.md +++ b/website/docs/template-library/aws/vpc-and-ec2-instance.md @@ -21,7 +21,7 @@ The EC2 instance is bootstrapped with a web server that serves a simple page usi ## Deploying the Stack -> install `stackql-deploy` using `pip install stackql-deploy` (see [__Installing stackql-deploy__](/docs/getting-started#installing-stackql-deploy)), set the `AWS_ACCESS_KEY_ID` and `AWS_SECRET_ACCESS_KEY` environment variables, that's it! +> install `stackql-deploy` using `pip install stackql-deploy` (see [__Installing stackql-deploy__](/getting-started#installing-stackql-deploy)), set the `AWS_ACCESS_KEY_ID` and `AWS_SECRET_ACCESS_KEY` environment variables, that's it! Once you have setup your project directory (your "stack"), you can use the `stackql-deploy` cli application to deploy, test or teardown the stack in any given environment. To deploy the stack to an environment labeled `sit`, run the following: diff --git a/website/docs/template-library/azure/simple-vnet-and-vm.md b/website/docs/template-library/azure/simple-vnet-and-vm.md index fdae17e..be13342 100644 --- a/website/docs/template-library/azure/simple-vnet-and-vm.md +++ b/website/docs/template-library/azure/simple-vnet-and-vm.md @@ -22,7 +22,7 @@ The Virtual Machine is bootstrapped with a web server that serves a simple page ## Deploying the Stack -> Install `stackql-deploy` using `pip install stackql` (see [__Installing stackql-deploy__](/docs/getting-started#installing-stackql-deploy)), set the `AZURE_SUBSCRIPTION_ID`, `AZURE_CLIENT_ID`, `AZURE_CLIENT_SECRET`, and `AZURE_TENANT_ID` environment variables, and you're ready to go! +> Install `stackql-deploy` using `pip install stackql` (see [__Installing stackql-deploy__](/getting-started#installing-stackql-deploy)), set the `AZURE_SUBSCRIPTION_ID`, `AZURE_CLIENT_ID`, `AZURE_CLIENT_SECRET`, and `AZURE_TENANT_ID` environment variables, and you're ready to go! Once you have set up your project directory (your "stack"), you can use the `stackql-deploy` CLI application to deploy, test, or teardown the stack in any given environment. To deploy the stack to an environment labeled `sit`, run the following: diff --git a/website/docs/template-library/google/k8s-the-hard-way.md b/website/docs/template-library/google/k8s-the-hard-way.md index 40a07b6..a8332bf 100644 --- a/website/docs/template-library/google/k8s-the-hard-way.md +++ b/website/docs/template-library/google/k8s-the-hard-way.md @@ -30,7 +30,7 @@ To install `stackql-deploy`, use the following command: ```bash pip install stackql-deploy ``` -for more information on installing `stackql-deploy` see [__Installing stackql-deploy__](/docs/getting-started#installing-stackql-deploy). +for more information on installing `stackql-deploy` see [__Installing stackql-deploy__](/getting-started#installing-stackql-deploy). ## Deploying Using `stackql-deploy` diff --git a/website/src/css/custom.css b/website/src/css/custom.css index 56cad50..21111ee 100644 --- a/website/src/css/custom.css +++ b/website/src/css/custom.css @@ -73,12 +73,15 @@ /* * github */ -.header-github-link:before { + .header-github-link:before { content: ''; width: 140px; height: 28px; -display: flex; - background: url("https://img.shields.io/github/stars/stackql/stackql?logo=github&style=social") no-repeat center/contain; + display: flex; + background-image: url("https://img.shields.io/github/stars/stackql/stackql?logo=github&style=social"); + background-repeat: no-repeat; + background-position: center; + background-size: contain; } .header-github-link:hover { diff --git a/website/src/theme/DocCard/index.tsx b/website/src/theme/DocCard/index.tsx index 58f4a5a..eca9592 100644 --- a/website/src/theme/DocCard/index.tsx +++ b/website/src/theme/DocCard/index.tsx @@ -19,8 +19,8 @@ import type { import styles from './styles.module.css'; const descriptionMap = { - '/docs/template-library/aws/simple-vpc': 'Simple VPC configuration in AWS', - '/docs/template-library/azure/simple-vnet': 'Basic Virtual Network setup in Azure', + '/template-library/aws/simple-vpc': 'Simple VPC configuration in AWS', + '/template-library/azure/simple-vnet': 'Basic Virtual Network setup in Azure', };

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 LNkvXXu0mjfy8O-K literal 0 HcmV?d00001 diff --git a/examples/databricks/serverless/assets/create-aws-databricks-subscription.png b/examples/databricks/serverless/assets/create-aws-databricks-subscription.png new file mode 100644 index 0000000000000000000000000000000000000000..b5c9e7f6ab6716699cc6a73e07706dc172e354fe GIT binary patch literal 75342 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