diff --git a/.nojekyll b/.nojekyll deleted file mode 100644 index e69de29..0000000 diff --git a/1-intro/index.html b/1-intro/index.html deleted file mode 100644 index babd490..0000000 --- a/1-intro/index.html +++ /dev/null @@ -1,953 +0,0 @@ - - - - - - - - - - - - The DevSecOps Workshop :: DRAFT : DevSecOps Workshop - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
-
-
- -
-
- - - - - - - -
-
- -
- -
- -
- -

- - The DevSecOps Workshop -

- - - - - - -

Intro

-

This is the storyline you are going to follow:

-
    -
  • Create an application using the browser based development environment Red Hat OpenShift Dev Spaces
  • -
  • Setting up the Inner Development Loop for the individual developer -
      -
    • Use the cli tool odo to create, push, change apps on the fly
    • -
    -
  • -
  • Setting up the Outer Development Loop for the CI/CD team -
      -
    • Learn to work with OpenShift Pipelines based on Tekton
    • -
    • Use OpenShift GitOps based on ArgoCD
    • -
    -
  • -
  • Secure your app and OpenShift cluster with ACS -
      -
    • Introduction to ACS
    • -
    • Example use cases
    • -
    • Add ACS scanning to a Tekton Pipeline
    • -
    -
  • -
-

What to Expect

- -

This workshop is for intermediate OpenShift users. A good understanding of how OpenShift works along with hands-on experience is expected. For example we will not tell you how to log in with oc to your cluster or tell you what it is… ;)

-
- -

We try to balance guided workshop steps and challenge you to use your knowledge to learn new skills. This means you’ll get detailed step-by-step instructions for every new chapter/task, later on the guide will become less verbose and we’ll weave in some challenges.

-

Workshop Environment

-

As Part of a Red Hat Workshop

-

For Attendees

-

As part of the workshop you will be provided with freshly installed OpenShift 4.14 clusters. Depending on attendee numbers we might ask you to gather in teams. Some workshop tasks must be done only once for the cluster (e.g. installing Operators), others like deploying and securing the application can be done by every team member separately in their own Project. This will be mentioned in the guide.

-

You’ll get all access details for your lab cluster from the facilitators. This includes the URL to the OpenShift console and information about how to SSH into your bastion host to run oc if asked to.

-

For Facilitators

-

The easiest way to provide this environment is through the Red Hat Demo System. Provision catalog item AWS with OpenShift Open Environment for the the attendees. Make sure to provision 3 controlplane nodes (similar to m6a.2xlarge) and 3 worker nodes (similar to m6a.4xlarge).

-

Self Hosted

-

While the workshop is designed to be run on Red Hat Demo System (RHDS) and the environment AWS with OpenShift Open Environment, you should be able to run the workshop on a 4.14 cluster of your own.

-

Just make sure :

-
    -
  • You have cluster admin privileges
  • -
  • Sizing -
      -
    • 3 Controlplane Nodes (Similar to AWS m5.2x.large)
    • -
    • 3 Worker (Similar to AWS m5.4x.large)
    • -
    -
  • -
  • Authentication htpasswd enabled
  • -
  • For the ACM chapter you will need AWS credentials to automatically deploy a SingleNode OpenShift
  • -
  • Some names in the workshop may need to be customized for your environment (e.g. storage naming)
  • -
-

This workshop was tested with these versions :

-
    -
  • Red Hat OpenShift : 4.14.18
  • -
  • Red Hat Advanced Cluster Security for Kubernetes: 4.4.0
  • -
  • Red Hat OpenShift Dev Spaces : 3.12.0
  • -
  • Red Hat OpenShift Pipelines: 1.14.3
  • -
  • Red Hat OpenShift GitOps: 1.12.0
  • -
  • Red Hat Quay: 3.8.15
  • -
  • Red Hat Quay Bridge Operator: 3.7.11
  • -
  • Red Hat Data Foundation : 4.14.06
  • -
  • Gitea Operator: 1.3.0
  • -
  • Web Terminal: 1.9.0
  • -
-

Workshop Flow

-

We’ll tackle the topics at hand step by step with an introduction covering the things worked on before each section.

-

And finally a sprinkle of JavaScript magic

-

You’ll notice placeholders for cluster access details, mainly the part of the domain that is specific to your cluster. There are two options:

-
    -
  • Whenever you see the placeholder <DOMAIN> replace it with the value for your environment -
      -
    • This is the part to the right of apps. e.g. for console-openshift-console.apps.cluster-t50z9.t50z9.sandbox4711.opentlc.com replace with cluster-t50z9.t50z9.sandbox4711.opentlc.com
    • -
    -
  • -
  • Use a query parameter in the URL of this lab guide to have all occurences replaced automagically, e.g.: - -
  • -
-

URL Generator for Custom Lab Guide

-

Enter your OpenShift url after the apps part (e.g. cluster-t50z9.t50z9.sandbox4711.opentlc.com ) and click the button to generate a link that will customize your lab guide.

-

Click the generated link once to apply it the the current guide.

- - - - - - - - - -

Current Domain replacement

-

Check to see if replacement is active -> <DOMAIN>

- - - - - -
- -
- - -
- - -
- - - -
- -
-
-
- - - - - - - - - - - - - - - - - - - - diff --git a/1-intro/index.xml b/1-intro/index.xml deleted file mode 100644 index decfeb7..0000000 --- a/1-intro/index.xml +++ /dev/null @@ -1,13 +0,0 @@ - - - - The DevSecOps Workshop on DRAFT : DevSecOps Workshop - https://devsecops-workshop.github.io/devsecops-workshop.github.io-dev/1-intro/ - Recent content in The DevSecOps Workshop on DRAFT : DevSecOps Workshop - Hugo -- gohugo.io - - - - - - \ No newline at end of file diff --git a/10-rhacs-setup/index.html b/10-rhacs-setup/index.html deleted file mode 100644 index d304343..0000000 --- a/10-rhacs-setup/index.html +++ /dev/null @@ -1,1021 +0,0 @@ - - - - - - - - - - - - Install and Configure ACS :: DRAFT : DevSecOps Workshop - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
-
-
- -
- -
- -
- -
- -
- -

- - Install and Configure ACS -

- - - - - - -

During the workshop you went through the OpenShift developer experience starting from software development using Quarkus and odo, moving on to automating build and deployment using Tekton pipelines and finally using GitOps for production deployments.

-

Now it’s time to add another extremely important piece to the setup: enhancing application security in a containerized world. Using Red Hat Advanced Cluster Security for Kubernetes, of course!

-

Install RHACS

-

RHCAS Operator

-

Install the Advanced Cluster Security for Kubernetes operator from the OperatorHub:

-
    -
  • Switch Update approval to Manual
  • -
  • Apart from this use the default settings
  • -
  • Approve the installation when asked
  • -
- -

Red Hat recommends installing the Red Hat Advanced Cluster Security for Kubernetes Operator in the rhacs-operator namespace. This will happen by default..

-
- -

Installing the main component Central

- -

You must install the ACS Central instance in its own project and not in the rhacs-operator and openshift-operator projects, or in any project in which you have installed the ACS Operator!

-
- -
    -
  • Navigate to Operators → Installed Operators
  • -
  • Select the ACS operator
  • -
  • You should now be in the rhacs-operator project the Operator created, create a new OpenShift Project for the Central instance: -
      -
    • Create a new project called stackrox (Red Hat recommends using stackrox as the project name.) by selecting Projects: Create project
    • -
    -
  • -
  • In the Operator view under Provided APIs on the tile Central click Create Instance
  • -
  • Switch to the YAML View.
  • -
  • Replace the YAML content with the following:
  • -
-
apiVersion: platform.stackrox.io/v1alpha1
-kind: Central
-metadata:
-  name: stackrox-central-services
-  namespace: stackrox
-spec:
-  monitoring:
-    openshift:
-      enabled: true
-  central:
-    notifierSecretsEncryption:
-      enabled: false
-    exposure:
-      loadBalancer:
-        enabled: false
-        port: 443
-      nodePort:
-        enabled: false
-      route:
-        enabled: true
-    telemetry:
-      enabled: true
-    db:
-      isEnabled: Default
-      persistence:
-        persistentVolumeClaim:
-          claimName: central-db
-      resources:
-        limits:
-          cpu: 2
-          memory: 6Gi
-        requests:
-          cpu: 500m
-          memory: 1Gi
-    persistence:
-      persistentVolumeClaim:
-        claimName: stackrox-db
-  egress:
-    connectivityPolicy: Online
-  scannerV4:
-    db:
-      persistence:
-        persistentVolumeClaim:
-          claimName: scanner-v4-db
-    indexer:
-      scaling:
-        autoScaling: Disabled
-        maxReplicas: 2
-        minReplicas: 1
-        replicas: 1
-    matcher:
-      scaling:
-        autoScaling: Disabled
-        maxReplicas: 2
-        minReplicas: 1
-        replicas: 1
-    scannerComponent: Default
-  scanner:
-    analyzer:
-      scaling:
-        autoScaling: Disabled
-        maxReplicas: 2
-        minReplicas: 1
-        replicas: 1
-
    -
  • Click Create
  • -
-

After the deployment has finished (Status Conditions: Deployed, Initialized in the Operator view on the Central tab), it can take some time until the application is completely up and running. One easy way to check the state, is to switch to the Developer console view on the upper left. Then make sure you are in the stackrox project and open the Topology map. You’ll see the three deployments of the Central instance:

-
    -
  • scanner
  • -
  • scanner-db
  • -
  • central
  • -
  • central-db
  • -
-

Wait until all Pods have been scaled up properly.

-

Verify the Installation

-

Switch to the Administrator console view again. Now to check the installation of your Central instance, access the ACS Portal:

-
    -
  • Look up the central-htpasswd secret that was created to get the password
  • -
- -

If you access the details of your Central instance in the Operator page you’ll find the complete commandline using oc to retrieve the password from the secret under Admin Credentials Info. Just sayin… ;)

-
- -
    -
  • Look up and access the route central which was also generated automatically.
  • -
-

This will get you to the ACS Portal, accept the self-signed certificate and login as user admin with the password from the secret.

-

Now you have a Central instance that provides the following services in an -RHACS setup:

-
    -
  • -

    The application management interface and services. It handles data persistence, API interactions, and user interface access. You can use the same Central instance to secure multiple OpenShift or Kubernetes clusters.

    -
  • -
  • -

    Scanner, which is a vulnerability scanner for scanning container images. It analyzes all image layers for known vulnerabilities from the Common Vulnerabilities and Exposures (CVEs) list. Scanner also identifies vulnerabilities in packages installed by package managers and in dependencies for multiple programming languages.

    -
  • -
-

To actually do and see anything you need to add a SecuredCluster (be it the same or another OpenShift cluster). For effect go to the ACS Portal, the Dashboard should by pretty empty, click on either of the Compliance link in the menu to the left, lots of zero’s and empty panels, too.

-

This is because you don’t have a monitored and secured OpenShift cluster yet.

-

Prepare to add Secured Clusters

-

Now we’ll add your OpenShift cluster as Secured Cluster to ACS.

-

First, you have to generate an init bundle which contains certificates and is used to authenticate a SecuredCluster to the Central instance, regardless if it’s the same cluster as the Central instance or a remote/other cluster.

-

We are using the API to create the init bundle in this workshop, because if we use the Web Terminal we can’t upload and downloaded file to it. For the steps to create the init bundle in the ACS Portal see the appendix.

-

Let’s create the init bundle using the ACS API on the commandline:

-

Go to your Web Terminal (if it timed out just start it again), then paste, edit and execute the following lines:

-
    -
  • Set the ACS API endpoint, replace <central_url> with the base URL of your ACS portal (without ‘https://’ e.g. central-stackrox.apps.cluster-cqtsh.cqtsh.example.com)
  • -
-
export ROX_ENDPOINT=<central_url>:443
-
    -
  • Set the admin password (same as for the portal, look up the secrets again)
  • -
-
export PASSWORD=<password>
-
    -
  • Give the init bundle a name
  • -
-
export DATA={\"name\":\"my-init-bundle\"}
-
    -
  • Finally run the curl command against the API to create the init bundle using the variables set above
  • -
-
curl -k -o bundle.json -X POST -u "admin:$PASSWORD" -H "Content-Type: application/json" --data $DATA https://${ROX_ENDPOINT}/v1/cluster-init/init-bundles
-
    -
  • Convert it to the needed format
  • -
-
cat bundle.json | jq -r '.kubectlBundle' > bundle64
-
base64 -d bundle64 > kube-secrets.bundle
-

You should now have these two files in your Web Terminal session: bundle.json and kube-secrets.bundle.

-

The init bundle needs to be applied to all OpenShift clusters you want to secure and monitor.

- -

As said, you can create an init bundle in the ACS Portal, download it and apply it from any terminal where you can run oc against your cluster. We used the API method to show you how to use it and to enable you to use the Web Terminal.

-
- -

Prepare the Secured Cluster

-

For this workshop we run Central and SecuredCluster on one OpenShift cluster. E.g. we monitor and secure the same cluster the central services live on.

-

Apply the init bundle

-

Again in the web terminal:

-
    -
  • Run oc create -f kube-secrets.bundle -n stackrox pointing to the init bundle you downloaded from the Central instance or created via the API as above.
  • -
  • This will create a number of secrets, the output should be:
  • -
-
secret/collector-tls created
-secret/sensor-tls created
-secret/admission-control-tls created
-

Add the Cluster as SecuredCluster to ACS Central

-

You are ready to install the SecuredClusters instance, this will deploy the secured cluster services:

-
    -
  • In the OpenShift Web Console go to the ACS Operator in Operators->Installed Operators
  • -
  • Using the Operator create an instance of the Secured Cluster type in the Project you created (should be stackrox)
  • -
  • If you are in the YAML view switch to the Form view
  • -
  • Change the Cluster Name for the cluster if you want, it’ll appear under this name in the ACS Portal
  • -
  • And most importantly for Central Endpoint enter the address and port number of your Central instance, this is the same as the ACS Portal. -
      -
    • If your ACS Portal is available at https://central-stackrox.apps.<DOMAIN> the endpoint is central-stackrox.apps.<DOMAIN>:443.
    • -
    -
  • -
  • Under Admission Control Settings make sure -
      -
    • listenOnCreates, listenOnUpdates and ListenOnEvents is enabled
    • -
    • Set Contact Image Scanners to ScanIfMissing
    • -
    - -
  • -
  • Click Create
  • -
-

Now go to your ACS Portal again, after a couple of minutes you should see your secured cluster under Platform Configuration->Clusters. Wait until all Cluster Status indicators become green.

-

Configure Quay Integrations in ACS

-

Create an integration to scan the Quay registry

-

To enable scanning of images in your Quay registry, you’ll have to configure an Integration with valid credentials, so this is what you’ll do.

-

Now, create a new Integration:

-
    -
  • Access the RHACS Portal and configure the already existing integrations of type Generic Docker Registry.
  • -
  • Go to Platform Configuration -> Integrations -> Generic Docker Registry.
  • -
  • Click the New integration button
  • -
  • Integration name: Quay local
  • -
  • Endpoint: https://quay-quay-quay.apps.<DOMAIN> (replace domain if required)
  • -
  • Username: quayadmin
  • -
  • Password: quayadmin
  • -
  • Press the Test button to validate the connection and press Save when the test is successful.
  • -
-

Architecture recap

-
-
-

Click image to enlarge

-
-
- - - - - - -
- -
- - -
- - -
- - - -
- -
-
-
- - - - - - - - - - - - - - - - - - - - diff --git a/10-rhacs-setup/index.xml b/10-rhacs-setup/index.xml deleted file mode 100644 index c9a48da..0000000 --- a/10-rhacs-setup/index.xml +++ /dev/null @@ -1,13 +0,0 @@ - - - - Install and Configure ACS on DRAFT : DevSecOps Workshop - https://devsecops-workshop.github.io/devsecops-workshop.github.io-dev/10-rhacs-setup/ - Recent content in Install and Configure ACS on DRAFT : DevSecOps Workshop - Hugo -- gohugo.io - - - - - - \ No newline at end of file diff --git a/11-rhacs-warmup/index.html b/11-rhacs-warmup/index.html deleted file mode 100644 index d946864..0000000 --- a/11-rhacs-warmup/index.html +++ /dev/null @@ -1,904 +0,0 @@ - - - - - - - - - - - - Getting to know ACS :: DRAFT : DevSecOps Workshop - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
-
-
- -
-
- - - - - - - -
-
- -
- -
- -
- -

- - Getting to know ACS -

- - - - - - -

Before we start to integrate Red Hat Advanced Cluster Security in our setup, you should become familiar with the basic concepts.

-

ACS Features

-

ACS delivers on these security use cases:

-
    -
  • Vulnerability Management: Protect the software supply chain and prevent known vulnerabilities from being used as an entry point in your applications.
  • -
  • Configuration Management: Leverage the OpenShift platform for declarative security to prevent or limit attacks, even in the presence of exploitable vulnerabilities.
  • -
  • Network Segmentation: Using Kubernetes network policies in OpenShift, restrict open network paths for isolation and prevent lateral movement by attackers.
  • -
  • Risk Profiling: Prioritize applications and security risks automatically to focus investigation and mitigation efforts.
  • -
  • Threat detection and incident response: Continuous observation and response in order to take action on attack-related activities, and to use observed behavior to inform mitigation efforts to harden security.
  • -
  • Compliance: Making sure that industry and regulatory standards are being met in your OpenShift environments.
  • -
-

UI Overview

-
-
-

Click image to enlarge

-
-
- -
    -
  • -

    Dashboard: -The dashboard serves as the security overview - helping the security team understand what the sources of risk are, categories of violations, and gaps in compliance. All of the elements are clickable for more information and categories are customizable.

    -
  • -
  • -

    Top bar: -Near the top, we see a condensed overview of the status. It provides insight into the status of clusters, nodes, violations and so on. The top bar provides links to Search, Command-line tools, Cluster Health, Documentation, API Reference, and the logged-in user account.

    -
  • -
  • -

    Left menus: -The left hands side menus provide navigation into each of the security use-cases, as well as product configuration to integrate with your existing tooling.

    -
  • -
  • -

    Global Search: -On every page throughout the UI, the global search allows you to search for any data that ACS tracks.

    -
  • -
-

Exploring the Security Use Cases

-

Now start to explore the Security Use Cases ACS targets as provided in the left side menu.

-
    -
  • -

    Network Graph:

    -
      -
    • The Network Graph is a flow diagram, firewall diagram, and firewall rule builder in one.
    • -
    • The default view Active shows the actual traffic for the past hour between the deployments in all namespaces.
    • -
    -
  • -
  • -

    Violations:

    -
      -
    • Violations record all times where a policy criteria was triggered by any of the objects in your cluster - images, components, deployments, runtime activity.
    • -
    -
  • -
  • -

    Compliance:

    -
      -
    • The compliance reports gather information for configuration, industry standards, and best practices for container-based workloads running in OpenShift.
    • -
    -
  • -
  • -

    Vulnerability Management:

    -
      -
    • Vulnerability Management provides several important reports - where the vulnerabilities are, which are the most widespread or the most recent, where my images are coming from.
    • -
    • In the upper right are buttons to link to all policies, CVEs, and images, and a menu to bring you to reports by cluster, namespace, deployment, and so on.
    • -
    -
  • -
  • -

    Configuration Management:

    -
      -
    • Configuration management provides visibility into a number of infrastructure components: clusters and nodes, namespaces and deployments, and Kubernetes systems like RBAC and secrets.
    • -
    -
  • -
  • -

    Risk:

    -
      -
    • The Risk view goes beyond the basics of vulnerabilities. It helps to understand how deployment configuration and runtime activity impact the likelihood of an exploit to occurr and how successful those exploits might be.
    • -
    • This list view shows all deployments, in all clusters and namespaces, ordered by Risk priority.
    • -
    -
  • -
-

Filters

-

Most UI pages have a filter section at the top that allows you to narrow the view to matching or non-matching criteria. Almost all of the attributes that ACS gathers can be filtered, try it out:

-
    -
  • Go to the Risk view
  • -
  • Click in the Filters Bar
  • -
  • Start typing Process Name and select the Process Name key
  • -
  • Type java and press enter: click away to get the filters dropdown to clear
  • -
  • You should see your deployment that has been “seen” running Java since it started
  • -
  • Try another one: limit the filter to your Project namespace only
  • -
  • Note the Create Policy button. It can be used to create a policy from the search filter to automatically identify this criteria.
  • -
-

System Policies

-

As the foundation of ACS are the system policies, have a good look around:

-
    -
  • Navigate to the Policiy Management section from Platform Configuration in the left side menu.
  • -
  • You will get an overview of the built-in policies
  • -
  • All of the policies that ship with the product are designed with the goal to provide targeted remediation strategies that improve security hardening.
  • -
  • You’ll see this list contains many Build and Deploy time policies to catch misconfigurations early in the pipeline, but also Runtime policies.
  • -
  • These policies come from us at Red Hat - our expertise, our interpretation of industry best practice, and our interpretation of common compliance standards, but you can modify them or create your own.
  • -
- -

By default only some policies are enforced. If you want to get an overview which ones, you can use the filter view introduced above. Use Enforcement as filter key and FAIL_BUILD_ENFORCEMENT as value.

-
- -

Architecture recap

-
-
-

Click image to enlarge

-
-
- - - - - - -
- -
- - -
- - -
- - - -
- -
-
-
- - - - - - - - - - - - - - - - - - - - diff --git a/11-rhacs-warmup/index.xml b/11-rhacs-warmup/index.xml deleted file mode 100644 index bfba496..0000000 --- a/11-rhacs-warmup/index.xml +++ /dev/null @@ -1,13 +0,0 @@ - - - - Getting to know ACS on DRAFT : DevSecOps Workshop - https://devsecops-workshop.github.io/devsecops-workshop.github.io-dev/11-rhacs-warmup/ - Recent content in Getting to know ACS on DRAFT : DevSecOps Workshop - Hugo -- gohugo.io - - - - - - \ No newline at end of file diff --git a/12-create-policy/index.html b/12-create-policy/index.html deleted file mode 100644 index 40e680d..0000000 --- a/12-create-policy/index.html +++ /dev/null @@ -1,902 +0,0 @@ - - - - - - - - - - - - Create a Custom Security Policy :: DRAFT : DevSecOps Workshop - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
-
-
- -
-
- - - - - - - -
-
- -
- -
- -
- -

- - Create a Custom Security Policy -

- - - - - - -

Objective

-

You should have one or more pipelines to build your application from the first workshop part, now we want to secure the build and deployment of it. For the sake of this workshop we’ll take a somewhat simplified use case:

-

We want to scan our application image for the Red Hat Security Advisory RHSA-2021:4904 concerning openssl-lib.

-

If this RHSA is found in an image we don’t want to deploy the application.

-

These are the steps you will go through:

-
    -
  • Create a custom Security Policy to check for the advisory
  • -
  • Test if the policy is triggered in non-enforcing mode -
      -
    • with an older image version that contains the issue
    • -
    • and then with a newer version with the issue fixed
    • -
    -
  • -
  • The final goal is to integrate the policy into the build pipeline
  • -
-

Create a Custom System Policy

-

First create a new policy category and the system policy. In the ACS Portal do the following:

-
    -
  • Platform Configuration->Policy Management->Policy categories tab->Create category -
      -
    • Enter Workshop as Category name
    • -
    • Click Create
    • -
    -
  • -
  • Platform Configuration->Policy Management->Policies tab->Create policy
  • -
  • Policy Details -
      -
    • Name: Workshop RHSA-2021:4904
    • -
    • Severity: Critical
    • -
    • Categories: Workshop
    • -
    • Click Next
    • -
    -
  • -
  • Policy Behaviour -
      -
    • Lifecycle Stages: Build, Deploy
    • -
    • Response method: Inform
    • -
    • Click Next
    • -
    -
  • -
  • Policy Criteria -
      -
    • Find the CVE policy criteria under Drag out policy fields in Image contents
    • -
    • Drag & drop it on the drop zone of Policy Section 1
    • -
    • Put RHSA-2021:4904 into the CVE identifier field
    • -
    • Click Next
    • -
    -
  • -
  • Policy Scope -
      -
    • You could limit the scope the policy is applied in, do nothing for now
    • -
    • Click Next
    • -
    -
  • -
  • Review Policy -
      -
    • Have a quick look around, if the policy would create a violation you get a preview here
    • -
    • Click Save
    • -
    -
  • -
-
-
-

Click image to enlarge

-
-
- -

Currently there is an issue with persisting the group change to the central instance. As a workaround run this in your Web Terminal zu restart the central instance:

-
oc delete pod -n stackrox -l app=central
-

Test the Policy

-

Start the pipeline with the affected image version:

-
    -
  • In the OpenShift Web Console go to the Pipeline in your workshop-int project, start it and set Version to java-old-image (Remember how we set up this ImageStream tag to point to an old and vulnerable version of the image?)
  • -
  • In the ACS Portal follow the Violations view
  • -
- -

To make it easier spotting the violations for this deployment you can filter the list by entering namespace and then workshop-int in the filter bar.

-
- -
    -
  • Expected result: -
      -
    • You’ll see the build deployments (Quarkus-Build-Options-Git-Gsklhg-Build-...) come and go when they are finished.
    • -
    • When the final build is deployed you’ll see a violation in ACS Portal for policy Workshop RHSA-2021:4904 (Check the Time of the violation)
    • -
    -
  • -
- -

There will be other policy violations listed, triggered by default policies, have a look around. Note that none of the policies are enforced (so that the pipeline build would be stopped) yet!

-
- -

Now start the pipeline with the fixed image version that doesn’t contain the CVE anymore:

-
    -
  • Start the pipeline again but this time leave the Java Version as is (openjdk-11-el7).
  • -
  • Follow the Violations in the ACS Portal
  • -
  • Expected result: -
      -
    • You’ll see the build deployments come up and go
    • -
    • When the final build is deployed you’ll see the policy violation for Workshop RHSA-2021:4904 for your deployment is gone because the image no longer contains it
    • -
    -
  • -
-

This shows how ACS is automatically scanning images when they become active against all enabled policies. But we don’t want to just admire a violation after the image has been deployed, we want to disable the deployment during build time! So the next step is to integrate the check into the build pipeline and enforce it (don’t deploy the application).

-

Architecture recap

-
-
-

Click image to enlarge

-
-
- - - - - - -
- -
- - -
- - -
- - - -
- -
-
-
- - - - - - - - - - - - - - - - - - - - diff --git a/12-create-policy/index.xml b/12-create-policy/index.xml deleted file mode 100644 index 0d263b0..0000000 --- a/12-create-policy/index.xml +++ /dev/null @@ -1,13 +0,0 @@ - - - - Create a Custom Security Policy on DRAFT : DevSecOps Workshop - https://devsecops-workshop.github.io/devsecops-workshop.github.io-dev/12-create-policy/ - Recent content in Create a Custom Security Policy on DRAFT : DevSecOps Workshop - Hugo -- gohugo.io - - - - - - \ No newline at end of file diff --git a/13-rhacs-pipeline/index.html b/13-rhacs-pipeline/index.html deleted file mode 100644 index f394bac..0000000 --- a/13-rhacs-pipeline/index.html +++ /dev/null @@ -1,1038 +0,0 @@ - - - - - - - - - - - - Integrating ACS into the Pipeline :: DRAFT : DevSecOps Workshop - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
-
-
- -
- -
- -
- -
- -
- -

- - Integrating ACS into the Pipeline -

- - - - - - -

Finally: Putting the Sec in DevSecOps!

- -

There are basically two ways to interface with ACS. The UI, which focuses on the needs of the security team, and a separate “interface” for developers to integrate into their existing toolset (CI/CD pipeline, consoles, ticketing systems etc): The roxctl commandline tool. This way ACS provides a familiar interface to understand and address issues that the security team considers important.

-
- -

ACS policies can act during the CI/CD pipeline to identify security risk in container images before they are started.

-

Integrate Image Scan into the Pipeline

-

You should have created and build a custom policy in ACS and tested it to trigger violations. Now you will integrate it into the build pipeline.

-

Our task will use the roxctl cli

-

Build-time policies require the use of the roxctl command-line tool which is available for download from the ACS Central UI, in the upper right corner of the dashboard. You don’t need to to download this now as our Tekton task will do this automatically.

-

roxctl needs to authenticate to ACS Central to do anything. You can use either username and password or API tokens to authenticate against ACS Central. It’s good practice to use a token so that’s what we’ll do.

-

Let’s Go : Create the roxctl token

-

In the ACS portal:

-
    -
  • Navigate to Platform Configuration > Integrations.
  • -
  • Scroll down to the Authentication Tokens category, and select API Token.
  • -
  • Click Generate Token. Enter the name pipeline for the token and select the role Admin.
  • -
  • Select Generate
  • -
  • Save the contents of the token somewhere!
  • -
-

Create OCP secret with token

-

Change to the OpenShift Web Console and create a secret with the API token in the project your pipeline lives in:

-
    -
  • In the UI switch to your workshop-int Project
  • -
  • Create a new key/value Secret named roxsecrets
  • -
  • Introduce these key/values into the secret: -
      -
    • rox_central_endpoint: <the URL to your ACS Portal> (without https:// but adding the port, e.g. entral-stackrox.apps.cluster-cqtsh.cqtsh.example.com:443) -
        -
      • If the DOMAIN placeholder was automatically replaced it should be: central-stackrox.apps.<DOMAIN>:443
      • -
      • If not, replace it manually with your DOMAIN
      • -
      -
    • -
    • rox_api_token: <the API token you generated>
    • -
    -
  • -
- -

Even if the form says Drag and drop file with your value here… you can just paste the text.

-
- -

Remove ImageStream Change Trigger

-

There is one more thing you have to do before integrating the image scanning into your build pipeline:
-When you created your deployment, a trigger was automatically added that deploys a new version when the image referenced by the ImageStream changes.

-

This is not what we want! Because this way a newly build image would be deployed immediately even if the roxctl scan detects a policy violation and terminates the pipeline.

-

Have a look for yourself:

-
    -
  • In the OCP console go to Workloads->Deployments and open the workshop Deployment
  • -
  • Switch to the YAML view
  • -
  • Near the top under annotations (around lines 11-12) you’ll find an annotation image.openshift.io/triggers.
  • -
-

Remove exactly this lines and click Save:

-
image.openshift.io/triggers: >-
-  [{"from":{"kind":"ImageStreamTag","name":"workshop2:latest","namespace":"workshop-int"},"fieldPath":"spec.template.spec.containers[?(@.name==\"workshop2\")].image","pause":"false"
-

This way we make sure that a new image won’t be deployed automatically right after the build task which also updates the ImageStream.

-

Create a Scan Task

-

You are now ready to create a new pipeline task that will use roxctl to scan the image build in your pipeline before the deploy step:

-
    -
  • In the OpenShift UI, make sure you are still in the project with your pipeline and the secret roxsecrets
  • -
  • Go to Pipelines->Tasks
  • -
  • Click Create-> ClusterTask
  • -
  • Replace the YAML displayed with this:
  • -
-
apiVersion: tekton.dev/v1beta1
-kind: ClusterTask
-metadata:
-  name: rox-image-check
-spec:
-  params:
-    - description: >-
-        Secret containing the address:port tuple for StackRox Central (example -
-        rox.stackrox.io:443)
-      name: rox_central_endpoint
-      type: string
-    - description: Secret containing the StackRox API token with CI permissions
-      name: rox_api_token
-      type: string
-    - description: "Full name of image to scan (example -- gcr.io/rox/sample:5.0-rc1)"
-      name: image
-      type: string
-    - description: Use image digest result from s2i-java build task
-      name: image_digest
-      type: string
-  results:
-    - description: Output of `roxctl image check`
-      name: check_output
-  steps:
-    - env:
-        - name: ROX_API_TOKEN
-          valueFrom:
-            secretKeyRef:
-              key: rox_api_token
-              name: $(params.rox_api_token)
-        - name: ROX_CENTRAL_ENDPOINT
-          valueFrom:
-            secretKeyRef:
-              key: rox_central_endpoint
-              name: $(params.rox_central_endpoint)
-      image: registry.access.redhat.com/ubi8/ubi-minimal:latest
-      name: rox-image-check
-      resources: {}
-      script: >
-        #!/usr/bin/env bash
-
-        set +x
-
-        curl -k -L -H "Authorization: Bearer $ROX_API_TOKEN"
-        https://$ROX_CENTRAL_ENDPOINT/api/cli/download/roxctl-linux --output
-        ./roxctl  > /dev/null; echo "Getting roxctl"
-
-        chmod +x ./roxctl  > /dev/null
-
-        ./roxctl image check -c Workshop --insecure-skip-tls-verify -e $ROX_CENTRAL_ENDPOINT
-        --image $(params.image)@$(params.image_digest)
-

Take your time to understand the Tekton task definition:

-
    -
  • First, some parameters are defined, it’s important to understand some of these are taken or depend on the build task that run before.
  • -
  • The script action pulls the roxctl binary into the pipeline workspace so you’ll always have a version compatible with your ACS version.
  • -
  • The most important bit is the roxctl execution, of course: -
      -
    • it executes the image check command
    • -
    • only checks against policies from category Workshop that was created above. This way you can check against a subset of policies!
    • -
    • defines the image to check and it’s digest
    • -
    -
  • -
-

Add the Scan Task to the Pipeline

-

Now add the rox-image-check task to your pipeline between the build and deploy steps.

-
    -
  • In the Pipelines view of your project click the three dots to the right and the Edit Pipeline
  • -
- -

Remember how we edited the pipeline directly in yaml before? OpenShift comes with a graphical Pipeline editor that we will use this time.

-
- -
    -
  • Hover your mouse over build task and click the + at the right side of it, to add a task
  • -
  • Click on Add task
  • -
  • Then enter rox-image-check in the search box -
    -
    -

    Click image to enlarge

    -
    -
    -
  • -
  • Click the Add button to add to the pipeline
  • -
  • To add the required parameters from the pipeline for the task so the ACS client can connect to central, click the rox-image-check task. -
    -
    -

    Click image to enlarge

    -
    -
    -
  • -
  • A form with the parameters will open, fill it in: -
      -
    • rox_central_endpoint: roxsecrets
    • -
    • rox_api_token: roxsecrets
    • -
    • image: quay-quay-quay.apps.<DOMAIN>/openshift_workshop-int/workshop (if the DOMAIN placeholder hasn’t been replaced automatically, do it manually)
    • -
    • Adapt the Project name if you changed it
    • -
    -
  • -
  • image_digest: $(tasks.build.results.IMAGE_DIGEST) -
      -
    • This variable takes the result of the build task and uses it in the scan task. -
      -
      -

      Click image to enlarge

      -
      -
      -
    • -
    -
  • -
  • Don’t save yet
  • -
-

Add the oc patch Task to the Pipeline

-

As you remember we removed the trigger that updates the Deployment on ImageStream changes. Now the Deployment will never be updated and our new Image version will never be deployed to workshop-int.

-

To fix this we will add a new oc client Task that updates the Deployment, only after the Scan Task has run.

-
    -
  • While still in the visual pipeline editor
  • -
  • Click on the + button to the left of the deploy Task
  • -
  • Click on Add Task
  • -
  • In the search window enter openshiftand select the openshift-client from Red Hat
  • -
  • Click on Add
  • -
  • Click on the new openshift-client Task
  • -
  • In Task form on the right enter -
      -
    • Display name : update-deploy
    • -
    • SCRIPT : oc patch deploy/workshop -p '{"spec":{"template":{"spec":{"containers":[{"name":"workshop","image":"$(params.QUAY_URL)/openshift_workshop-int/workshop@$(tasks.build.results.IMAGE_DIGEST)"}]}}}}'
    • -
    -
  • -
-
-
-

Click image to enlarge

-
-
- -
    -
  • Now save the pipeline
  • -
-

Test the Scan Task

-

With our custom System Policy still not set to enforce we first are going to test the pipeline integration. Go to Pipelines and next to your pipeline click on the three dots and then Start. Now in the pipeline startform enter java-old-image in the Version field.

-
    -
  • Expected Result: -
      -
    • The rox-image-check task should succeed, but if you have a look at the output (click the task in the visual representation) you should see that the build violated our policy!
    • -
    -
  • -
-

Enforce the Policy

-

The last step is to enforce the System Policy. If the policy is violated the pipeline should be stopped and the application should not be deployed.

-
    -
  • Edit your custom System Policy Workshop RHSA-2021:4904 in ACS Portal and set Response Method to Inform and enforce and then switch on Build and Deploy below.
  • -
  • Run the pipeline again, first with Version java-old-image and then with Version openjdk-11-el7 (default)
  • -
  • Expected results: -
      -
    • We are sure you know by now what to expect!
    • -
    • The pipeline should fail with the old image version and succeed with the latest image version!
    • -
    • Make sure you run the pipeline once, otherwise your application will not have a valid image tag when you kill the running pod in the next chapter
    • -
    -
  • -
-
-
-

Click image to enlarge

-
-
- -

Architecture recap

-
-
-

Click image to enlarge

-
-
- - - - - - -
- -
- - -
- - -
- - - -
- -
-
-
- - - - - - - - - - - - - - - - - - - - diff --git a/13-rhacs-pipeline/index.xml b/13-rhacs-pipeline/index.xml deleted file mode 100644 index 1193542..0000000 --- a/13-rhacs-pipeline/index.xml +++ /dev/null @@ -1,13 +0,0 @@ - - - - Integrating ACS into the Pipeline on DRAFT : DevSecOps Workshop - https://devsecops-workshop.github.io/devsecops-workshop.github.io-dev/13-rhacs-pipeline/ - Recent content in Integrating ACS into the Pipeline on DRAFT : DevSecOps Workshop - Hugo -- gohugo.io - - - - - - \ No newline at end of file diff --git a/15-runtime-security/index.html b/15-runtime-security/index.html deleted file mode 100644 index 289e017..0000000 --- a/15-runtime-security/index.html +++ /dev/null @@ -1,853 +0,0 @@ - - - - - - - - - - - - Securing Runtime Events :: DRAFT : DevSecOps Workshop - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
-
-
- -
-
- - - - - - - -
-
- -
- -
- -
- -

- - Securing Runtime Events -

- - - - - - -

So far you’ve seen how ACS can handle security issues concerning Build and Deploy stages. But ACS is also able to detect and secure container runtime behaviour. Let’s have a look…

-

Handling Security Issues at Runtime

-

As a scenario let’s assume you want to protect container workloads against attackers who are trying to install software. ACS comes with pre-configured policies for Ubuntu and Red Hat-based containers to detect if a package management tool is installed, this can be used in the Build and Deploy stages:

-
    -
  • Red Hat Package Manager in Image
  • -
-

And, more important for this section about runtime security, a policy to detect the execution of a package manager as a runtime violation, using Kernel instrumentation:

-
    -
  • Red Hat Package Manager Execution
  • -
-

In the ACS Portal, go to Platform Configuration->Policy Management, search for the policies by e.g. typing policy and then red hat into the filter. Open the policy detail view by clicking it and have a look at what they do.

- -

You can use the included policies as they are but you can always e.g. clone and adapt them to your needs or write completely new ones.

-
- -

As you can see the Red Hat Package Manager Execution policy will alert as soon as a process rpm or dnf or yum is executed.

- -

Like with most included policies it is not set to enforce!

-
- -

Test the Runtime Policy

-

To see how the alert would look like, we have to trigger the condition:

-
    -
  • You should have a namespace with your Quarkus application runnning
  • -
  • In the OpenShift Web Console navigate to the pod and open a terminal into the container
  • -
  • Run yum search test
  • -
  • Go to the Violations view in the ACS Portal.
  • -
  • You should see a violation of the policy, if you click it, you’ll get the details.
  • -
  • Run several yum commands in the terminal and check back with the Violations view: -
      -
    • As long as you stay in the same deployment, there won’t be a new violation
    • -
    • but you will see the details for every new violation of the same type in the details.
    • -
    -
  • -
-

Enforce Runtime Protection

-

But the real fun starts when you enforce the policy. Using the included policy, it’s easy to just “switch it on”:

-
    -
  • In the ACS Portal bring up the Red Hat Package Manager Execution Policy again.
  • -
  • Click the Edit Policy button in the Actions drop-down to the upper right.
  • -
  • Click Next until you arrive at the Policy behaviour page.
  • -
  • Under Response Method select Inform and enforce
  • -
  • Set Configure enforcement behaviour for Runtime to Enforce on Runtime
  • -
  • Click Next until you arrive at the last page and click Save
  • -
-

Now trigger the policy again by opening a terminal into the pod in the OpenShift Web Console and executing yum. See what happens:

-
    -
  • Runtime enforcement will kill the pod immediately (via k8s).
  • -
  • OpenShift will scale it up again automatically -
      -
    • This is expected and allows to contain a potential compromise while not causing a production outage.
    • -
    -
  • -
-

Architecture recap

-
-
-

Click image to enlarge

-
-
- - - - - - -
- -
- - -
- - -
- - - -
- -
-
-
- - - - - - - - - - - - - - - - - - - - diff --git a/15-runtime-security/index.xml b/15-runtime-security/index.xml deleted file mode 100644 index e26b498..0000000 --- a/15-runtime-security/index.xml +++ /dev/null @@ -1,13 +0,0 @@ - - - - Securing Runtime Events on DRAFT : DevSecOps Workshop - https://devsecops-workshop.github.io/devsecops-workshop.github.io-dev/15-runtime-security/ - Recent content in Securing Runtime Events on DRAFT : DevSecOps Workshop - Hugo -- gohugo.io - - - - - - \ No newline at end of file diff --git a/16-acm/index.html b/16-acm/index.html deleted file mode 100644 index 4a135a2..0000000 --- a/16-acm/index.html +++ /dev/null @@ -1,1100 +0,0 @@ - - - - - - - - - - - - Advanced Cluster Management :: DRAFT : DevSecOps Workshop - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
-
-
- -
- -
- -
- -
- -
- -

- - Advanced Cluster Management -

- - - - - - -

Advanced Cluster Management Overview

-

Red Hat Advanced Cluster Management for Kubernetes (ACM) provides management, visibility and control for your OpenShift and Kubernetes environments. It provides management capabilities for:

-
    -
  • cluster creation
  • -
  • application lifecycle
  • -
  • security and compliance
  • -
-

All across hybrid cloud environments.

-

Clusters and applications are visible and managed from a single console, with built-in security policies. Run your operations from anywhere that Red Hat OpenShift runs, and manage any Kubernetes cluster in your fleet.

-

Install Advanced Cluster Managagement

-

Before you can start using ACM, you have to install it using an Operator on your OpenShift cluster.

-
    -
  • Login to the OpenShift Web Console with you cluster admin credentials
  • -
  • In the Web Console, go to Operators > OperatorHub and search for the Advanced Cluster Management for Kubernetes operator.
  • -
  • Install the operator with the default settings
  • -
  • It will install into a new Project open-cluster-management by default.
  • -
-

After the operator has been installed it will inform you to create a MultiClusterHub, the central component of ACM.

-
-
-

Click image to enlarge

-
-
- -

Click the Create MultiClusterHub button and have a look at the available installation parameters, but don’t change anything.

-

Click Create.

-

At some point you will be asked to refresh the web console. Do this, you’ll notice a new drop-down menu at the top of the left menu bar. If left set to local-cluster you get the standard console view, switching to All Clusters takes you to a view provided by ACM covering all your clusters.

-

Okay, right now you’ll only see one, your local-cluster listed here.

-

A first look at Advanced Cluster Management

-

Now let’s change to the full ACM console:

-
    -
  • Switch back to the local-clusters view
  • -
  • Go to Operators->Installed operators and click the Advanced Cluster Management for Kubernetes operator
  • -
  • In the operator overview page choose the MultiClusterHub tab.
  • -
  • The multiclusterhub instance you deployed should be in Status Running by now.
  • -
  • Switch back to the All Clusters
  • -
-

You are now in your ACM dashboard!

-
-
-

Click image to enlarge

-
-
- -

Have a look around:

-
    -
  • Go to Infrastructure->Clusters
  • -
  • You’ll see your lab OpenShift cluster here, the infrastructure it’s running on and the version. -
      -
    • There might be a version update available, don’t run it please… ;)
    • -
    -
  • -
  • If you click the cluster name, you’ll get even more information, explore!
  • -
-

Manage Cluster Lifecycle

-

One of the main features of Advanced Cluster Management is cluster lifecycle management. ACM can help to:

-
    -
  • manage credentials
  • -
  • deploy clusters to various cloud providers and on-premises
  • -
  • import existing clusters
  • -
  • use labels on clusters for management purposes
  • -
-

Let’s give this a try!

-

Deploy an OpenShift Cluster

-

Okay, do not overstress our cloud ressources and for the fun of it we’ll deploy a Single Node OpenShift (SNO) cluster to the same AWS account your lab cluster is running in.

-

Create Cloud Credentials

-

The first step is to create credentials in ACM to deploy to the Amazon Web Services account.

- -

You’ll get the AWS_ACCESS_KEY_ID and AWS_SECRET_ACCESS_KEY needed to deploy to AWS from your facilitators.

-
- -
    -
  • On your OpenShift cluster, create a new namespace sno
  • -
  • In the ACM web console, navigate to Credentials and click Add credential: -
      -
    • As Credential type select AWS
    • -
    • Credential name: sno
    • -
    • Namespace: Choose the sno namespace
    • -
    • Base DNS domain: sandbox<NNNN>.opentlc.com, replace <NNNN> with your id, you can find it e.g. in the URL
    • -
    • Click Next
    • -
    • Now you need to enter the AWS credentials, enter the Access key ID and Secret access key as provided.
    • -
    • Click Next
    • -
    • Click Next again for proxy settings
    • -
    • Now you need to enter an OpenShift Pull Secret, copy it from your OpenShift cluster: -
        -
      • Switch to the project openshift-config and copy the content of the secret pull-secret
      • -
      -
    • -
    • To connect to the managed SNO you need to enter a SSH private key ($HOME/.ssh/<LABID>key.pem) and public key ($HOME/.ssh/<LABID>key.pub). -
        -
      • Use the respective keys from your lab environments bastion host, the access details will be provided.
      • -
      • The <LABID> can be found in the URL, e.g. multicloud-console.apps.cluster-z48z9.z48z9.sandbox910.opentlc.com
      • -
      -
    • -
    • Click Next
    • -
    • Click Add
    • -
    -
  • -
-

You have created a new set of credentials to deploy to the AWS account you are using.

-

Deploy Single Node OpenShift

-

Now you’ll deploy a new OpenShift instance:

-
    -
  • In the ACM console, navigate to Infrastructure -> Clusters and click Create cluster.
  • -
  • As provider choose Amazon Web Services
  • -
  • Infrastructure provider credential: Select the sno credential you created.
  • -
  • Control plane type - AWS: Standalone
  • -
  • Cluster name: aws-sno
  • -
  • Cluster set: Leave empty …
  • -
  • Base DNS Domain: Set automatically from the credentials
  • -
  • Release name: Use the latest 4.14.19 release available
  • -
  • Additional Label: sno=true
  • -
  • Click Next
  • -
  • On the Node pools view leave the Region set to us-east-1
  • -
  • Architecture: amd64
  • -
  • Expand Control plane pool -
      -
    • read the information for Zones (and leave the setting empty)
    • -
    • change Instance Type to m5.2xlarge.
    • -
    -
  • -
  • Expand Worker pool 1: -
      -
    • Set Node count to 0 (we want a single node OCP…).
    • -
    -
  • -
  • Click Next
  • -
  • Have a look at the network screen but don’t change anything
  • -
-

Now click Next until you arrive at the Review. Do the following:

-
    -
  • Set YAML: On
  • -
  • In the cluster YAML editor select the install-config tab
  • -
  • In the controlPlane section change the replicas field to 1.
  • -
-

It’s time to deploy your cluster, click Create!

-

ACM monitors the installation of the new cluster and finally imports it. Click View logs under Cluster install to follow the installation log.

- -

Installation of a SNO takes around 30 minutes in our lab environment.

-
- -

After the installation has finished, access the Clusters section in the ACM portal again.

-
-
-

Click image to enlarge

-
-
- -

Explore the information ACM is providing, including the Console URL and the access credentials of your shiny new SNO instance. Use them to login to the SNO Web Console.

-

Application Lifecycle Management

-

In the previous lab, you explored the Cluster Lifecycle functionality of RHACM by deploying a new OpenShift single-node instance to AWS. Now let’s have a look at another capability, Application Lifecycle management.

-

Application Lifecycle management is used to manage applications on your clusters. This allows you to define a single or multi-cluster application using Kubernetes specifications, but with additional automation of the deployment and lifecycle management of resources to individual clusters. An application designed to run on a single cluster is straightforward and something you ought to be familiar with from working with OpenShift fundamentals. A multi-cluster application allows you to orchestrate the deployment of these same resources to multiple clusters, based on a set of rules you define for which clusters run the application components.

-

The naming convention of the different components of the Application Lifecycle model in RHACM is as follows:

-
    -
  • Channel: Defines a place where deployable resources are stored, such as an object store, Kubernetes namespace, Helm repository, or GitHub repository.
  • -
  • Subscription: Definitions that identify deployable resources available in a Channel resource that are to be deployed to a target cluster.
  • -
  • PlacementRule: Defines the target clusters where subscriptions deploy and maintain the application. It is composed of Kubernetes resources identified by the Subscription resource and pulled from the location defined in the Channel resource.
  • -
  • Application: A way to group the components here into a more easily viewable single resource. An Application resource typically references a Subscription resource.
  • -
-

Creating a Simple Application with ACM

-

Start with adding labels to your two OpenShift clusters in your ACM console:

-
    -
  • On the local cluster add a label: environment=prod
  • -
  • On the new SNO deployment add label: environment=dev
  • -
-
-
-

Click image to enlarge

-
-
- -

Now it’s time to actually deploy the application. But first have a look at the manifest definitions ACM will use as deployables at https://github.com/devsecops-workshop/book-import/tree/master/book-import.

-

Then in the ACM console navigate to Applications:

-
    -
  • Click Create application, select Subscription
  • -
  • Make sure the view is set to YAML
  • -
  • Name: book-import
  • -
  • Namespace: book-import
  • -
  • Under Repository location for resources -> Repository types, select GIT
  • -
  • URL: https://github.com/devsecops-workshop/book-import.git
  • -
  • Branch: master
  • -
  • Path: book-import
  • -
  • Select Deploy application resources only on clusters with all specified labels
  • -
  • Cluster sets: default
  • -
  • Label: environment
  • -
  • Value: dev
  • -
-
-
-

Click image to enlarge

-
-
- -

Click Create and then the topology tab to view the application being deployed:

-
-
-

Click image to enlarge

-
-
- -
    -
  • Select Cluster, the application should have been deployed to the SNO cluster because of the label environment=dev
  • -
  • Select the Route and click on the URL, this should take you to the Book Import application
  • -
  • Explore the other objects
  • -
-

Now edit the application in the ACM console and change the label to environment=prod. What happens?

-

In this simple example you have seen how to deploy an application to an OpenShift cluster using ACM. All manifests defining the application where kept in a Git repo, ACM then used the manifests to deploy the required objects into the target cluster.

-

Bonus Chapter : Pre/Post Tasks with Ansible Automation Platform 2

-

You can integrate Ansible Automation Platform and the Automation Controller (formerly known as Ansible Tower) with ACM to perform pre / post tasks within the application lifecycle engine. The prehook and posthook task allows you to trigger an Ansible playbook before and after the application is deployed, respectively.

-

Notice that you will need a Red Hat Account with a valid Ansible subscription for this part.

-

Install Automation Controller

-

To give this a try you need an Automation Controller instance. So let’s deploy one on your cluster using the AAP Operator:

-
    -
  • In OperatorHub search for the Ansible Automation Platform operator and install it using the default settings.
  • -
  • After installation has finished create an Automation Controller instance using the Operator, name it automationcontroller
  • -
  • When the instance is ready, look up automationcontroller-admin-password secret
  • -
  • Then look up the automationcontroller route, access it and login as user admin using the password from the secret
  • -
  • Apply a manifest or use the username/password login to the Red Hat Customer Portal and add a subscription
  • -
-

You are now set with a shiny new Ansible Automation Platform Controller!

-

Add Auth Token

-

In the Automation Controller web UI, generate a token for the admin user:

-
    -
  • Go to Users
  • -
  • Click admin and select Tokens
  • -
  • Click the Add button
  • -
  • As description add Token for use by ACM
  • -
  • Update the Scope to Write
  • -
  • Click Save
  • -
-

Save the token value to a text file, you will need this token later!

-

Configure Template in Automation Controller

-

For Automation Controller to run something we must configure a Project and a Template first.

-

Create an Ansible Project:

- -

Create an Ansible Job Template:

-
    -
  • Select Templates in the left menu.
  • -
  • Click Add then Add Job Template
  • -
  • Name: acm-test
  • -
  • Inventory: Demo Inventory
  • -
  • Project: ACM Test
  • -
  • Playbook: message.yml
  • -
  • Check Prompt on launch for Variables
  • -
  • Click Save
  • -
  • Click Launch
  • -
-

Verify that the Job run by going to Jobs and looking for an acm-test job showing a successful Playbook run.

-

Create AAP credentials in ACM

-

Set up the credential which is going to allow ACM to interact with your AAP instance in your ACM Portal:

-
    -
  • Click on Credentials on the left menu and select Add Credential button.
  • -
  • Credential type: Red Hat Ansible Automation Platform
  • -
  • Credential name: appaccess
  • -
  • Namespace: open-cluster-management
  • -
  • Click Next
  • -
  • Ansible Tower Host:
  • -
  • Ansible Tower token:
  • -
  • Click Next and Add
  • -
-

Use the ACM - Ansible integration

-

And now let’s configure the ACM integration with Ansible Automation Platform to kick off a job in Automation Controller. In this case the Ansible job will just run our simple playbook that will only output a message.

-

In the ACM Portal:

-
    -
  • Go to the Applications menu on the left and click Create application → Subscription
  • -
  • Enter the following information: -
      -
    • Name: book-import2
    • -
    • Namespace: book-import2
    • -
    -
  • -
  • Under repository types, select GIT repository
  • -
  • URL: https://github.com/devsecops-workshop/book-import.git
  • -
  • Branch: prehook
  • -
  • Path: book-import
  • -
  • Expand the Configure automation for prehook and posthook dropdown menu
  • -
  • Ansible Automation Platform credential: appaccess
  • -
  • Select Deploy application resources only on clusters matching specified labels
  • -
  • Label: environment
  • -
  • Value: dev
  • -
  • Click Create
  • -
-

Give this a few minutes. The application will complete and in the application topology view you will see the Ansible prehook. In Automation Controller go to Jobs and verify the Automation Job run.

- - - - - -
- -
- - -
- - -
- - - -
- -
-
-
- - - - - - - - - - - - - - - - - - - - diff --git a/16-acm/index.xml b/16-acm/index.xml deleted file mode 100644 index 20f950a..0000000 --- a/16-acm/index.xml +++ /dev/null @@ -1,13 +0,0 @@ - - - - Advanced Cluster Management on DRAFT : DevSecOps Workshop - https://devsecops-workshop.github.io/devsecops-workshop.github.io-dev/16-acm/ - Recent content in Advanced Cluster Management on DRAFT : DevSecOps Workshop - Hugo -- gohugo.io - - - - - - \ No newline at end of file diff --git a/2-install-prerequisites/index.html b/2-install-prerequisites/index.html deleted file mode 100644 index 036b761..0000000 --- a/2-install-prerequisites/index.html +++ /dev/null @@ -1,1070 +0,0 @@ - - - - - - - - - - - - Install Prerequisites :: DRAFT : DevSecOps Workshop - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
-
-
- -
- -
- -
- -
- -
- -

- - Install Prerequisites -

- - - - - - -

Install Prerequisites

-

During this workshop you’ll install and use a good number of software components. The first one is OpenShift Data Foundation for providing storage. We’ll start with it because the install takes a fair amount of time. Number two is Gitea for providing Git services in your cluster with more to follow in subsequent chapters.

-

But fear not, all are managed by Kubernetes Operators on OpenShift.

-

Install OpenShift Data Foundation

-

Let’s install OpenShift Data Foundation which you might know under the old name OpenShift Container Storage. It is engineered as the data and storage services platform for OpenShift and provides software-defined storage for containers.

-
    -
  • Login to the OpenShift Webconsole with your cluster admin credentials
  • -
  • In the Web Console, go to Operators > OperatorHub and search for the OpenShift Data Foundation operator -
    -
    -

    Click image to enlarge

    -
    -
    -
  • -
  • Install the operator with default settings
  • -
-

After the operator has been installed it will inform you to install a StorageSystem and to refresh the web console view. From the operator overview page click Create StorageSystem with the following settings:

-
    -
  • Backing storage: Leave Deployment Type Full deployment and for Backing storage type make sure gp2-csi is selected.
  • -
  • Click Next
  • -
  • Capacity and nodes: Leave the Requested capacity as is (2 TiB) and select all nodes.
  • -
  • Click Next
  • -
  • Security and network: Leave set to Default (OVN).
  • -
  • Click Next
  • -
  • -
      -
    • Data protection: Leave default (unselected).
    • -
    -
  • -
  • Click Next
  • -
-

You’ll see a review of your settings, hit Create StorageSystem. Don’t worry if you see a temporary 404 Page. Just releod the browser page once and you will see the System Overview

-
-
-

Click image to enlarge

-
-
- -

As mentioned already this takes some time, so go ahead and install the other prerequisites. We’ll come back later.

-

Prepare to run oc commands

-

You will be asked to run oc (the OpenShift commandline tool) commands a couple of times. We will do this by using the OpenShift Web Terminal. This is the easiest way because you don’t have to install oc or an SSH client.

-

Install OpenShift Web Terminal

-

To extend OpenShift with the Web Terminal option, install the Web Terminal operator:

-
    -
  • Login to the OpenShift Webconsole with your cluster admin credentials
  • -
  • In the Web Console, go to Operators > OperatorHub and search for the Web Terminal operator
  • -
  • Install the operator with the default settings
  • -
-

This will take some time and installs another operator as a dependency.

-

After the operator has installed, reload the OCP Web Console browser window. You will now have a new button (>_) in the upper right. Click it to start a new web terminal. From here you can run the oc commands when the lab guide requests it (copy/paste might depend on your laptop OS and browser settings, e.g. try Ctrl-Shift-V for pasting).

-
-
-

Click image to enlarge

-
-
- - -

The terminal is not persistent, so if it was closed for any reason anything you did in the terminal is gone after re-opening.

-
- -

If for any reason you can’t use the webterminal, your options are:

-
    -
  • Install and run oc on your laptop
  • -
  • SSH into the bastion host, if running on a Red Hat RHDP lab environment. From here you can just run oc without login.
  • -
-

TODO: Change yaml applies to direct git download

-

Install and Prepare Gitea

-

We’ll need Git repository services to keep our app and infrastructure source code, so let’s just install trusted Gitea using an operator:

- -

Gitea is an OpenSource Git Server similar to GitHub. A team at Red Hat was so nice to create an Operator for it. This is a good example of how you can integrate an operator into your catalog that is not part of the default OperatorHub already.

-
- -

To integrate the Gitea operator into your Operator catalog you need to access your cluster with the oc client. You can do this in two ways:

-
    -
  • If you don’t already have the oc client installed, you can download the matching version for your operating system here
  • -
  • Login to the OpenShift Web Console with you cluster admin credentials
  • -
  • On the top right click on your username and then Copy login command to copy your login token
  • -
  • On you local machine open a terminal and login with the oc command you copied above, you may need to add –insecure-skip-tls-verify at the end of the line
  • -
-

Or, if working on a Red Hat RHPDS environment:

-
    -
  • Use the information provided to login to your bastion host via SSH
  • -
  • When logged in as lab-user you will be able to run oc commands without additional login.
  • -
-

Now using oc add the Gitea Operator to your OpenShift OperatorHub catalog:

-
oc apply -f https://raw.githubusercontent.com/rhpds/gitea-operator/ded5474ee40515c07211a192f35fb32974a2adf9/catalog_source.yaml
-
    -
  • In the Web Console, go to Operators > OperatorHub and search for Gitea (You may need to disable search filters)
  • -
  • Install the Gitea Operator with default settings
  • -
  • Go to Installed Operators > Gitea Operator
  • -
  • Create a new OpenShift project called git with the Project selection menu at the top -TODO : Screenshot
  • -
  • Make sure you are in the git project via the top Project selection menu !
  • -
  • Click on Create new instance ( while in project git)
  • -
- -

-
-

Click image to enlarge

-
-
- -TODO : Replace Screenshot

-
    -
  • On the Create Gitea page switch to the YAML view and add the following spec values :
  • -
-
spec:
-  giteaAdminUser: gitea
-  giteaAdminPassword: "gitea"
-  giteaAdminEmail: opentlc-mgr@redhat.com
-
    -
  • Click Create
  • -
-

After creation has finished:

-
    -
  • Access the route URL (you’ll find it e.g. in Networking > Routes > repository > Location). If the Route is not yet there just wait a couple of minutes.
  • -
  • This will take you to the Gitea web UI
  • -
  • Sign-In to Gitea with user gitea and password gitea
  • -
  • If your Gitea UI appears in a language other then English (depending on your locale settings), switch it to English. Change the language in your Gitea UI, the example below shows a German example:
  • -
- - - - - - - - - - - - - -
-
-

Click image to enlarge

-
-
-
-
-

Click image to enlarge

-
-
-
-

Import the Required Repositories

-

Now we will clone a git repository of a sample application into our Gitea, so we have some code to works with

- -

In the cloned repository you’ll find a devspaces_devfile.yml. We will need the URL to the file soon, so keep the tab open.

-

In later chapters we will need a second repository to hold your GitOps yaml resources. Let’s create this now as well

- -

Check OpenShift Data Foundation (ODF) Storage Deployment

-

Now it’s time to check if the StorageSystem deployment from ODF completed succesfully. In the openShift web console:

-
    -
  • Open Storage->DataFoundation
  • -
  • On the overview page go to the Storage Systems tab
  • -
  • Click ocs-storagecluster-storagesystem
  • -
  • On the next page make sure the status indicators on the Block and File and Object tabs are green!
  • -
-
-
-

Click image to enlarge

-
-
- -
-
-

Click image to enlarge

-
-
- -

Your container storage is ready to go, explore the information on the overview pages if you’d like.

-

Install Red Hat Quay Container Registry

-

The image that we have just deployed was pushed to the internal OpenShift Registry which is a great starting point for your cloud native journey. But if you require more control over you image repos, a graphical GUI, scalability, internal security scanning and the like you may want to upgrade to Red Hat Quay. So as a next step we want to replace the internal registry with Quay.

-

Quay installation is done through an operator, too:

-
    -
  • In Operators->OperatorHub filter for Quay
  • -
  • Install the Red Hat Quay Operator with the default settings
  • -
  • Create a new project called quay at the top Project selection menu
  • -
  • While in the project quay go to Administration->LimitRanges and delete the quay-core-resource-limits -
    -
    -

    Click image to enlarge

    -
    -
    -
  • -
  • In the operator overview of the Quay Operator on the Quay Registry tile click Create instance
  • -
  • If the YAML view is shown switch to Form view
  • -
  • Make sure you are in the quay project
  • -
  • Change the name to quay
  • -
  • Click Create
  • -
  • Click the new Quayregistry, scroll down to Conditions and wait until the Available type changes to True -
    -
    -

    Click image to enlarge

    -
    -
    -
  • -
-

Now that the Registry is installed you have to configure a superuser:

-
    -
  • Make sure you are in the quay Project
  • -
  • Go to Networking->Routes, access the Quay portal using the URL of the first route (quay-quay)
  • -
  • Click Create Account -
      -
    • As username put in quayadmin, a (fake) email address and and quayadmin as password.
    • -
    -
  • -
  • Click Create Account again
  • -
  • In the OpenShift Web Console open Workloads->Secrets
  • -
  • Search for quay-config-editor-credentials-..., open the secret and copy the values, you’ll need them in a second.
  • -
  • Go back to the Routes and open the quay-quay-config-editor route
  • -
  • Login with the values of the secret from above
  • -
  • Click Sign in
  • -
  • Scroll down to Access Settings
  • -
  • As Super User put in quayadmin
  • -
  • click Validate Configuration Changes and after the validation click Reconfigure Quay
  • -
-

Reconfiguring Quay takes some time. The easiest way to determine if it’s been finished is to open the Quay portal (using the quay-quay Route). At the upper right you’ll see the username (quayadmin), if you click the username the drop-down should show a link Super User Admin Panel. When it shows up you can proceed.

-
-
-

Click image to enlarge

-
-
- -

Integrate Quay as Registry into OpenShift

-

To synchronize the internal default OpenShift Registry with the Quay Registry, Quay Bridge is used.

-
    -
  • In the OperatorHub of your cluster, search for the Quay Bridge Operator -
      -
    • Install it with default settings
    • -
    -
  • -
-

Now we finally create an Quay Bridge instance. :

-
    -
  • Go to the Red Hat Quay Bridge Operator overview (make sure you are in the quay namespace)
  • -
  • On the Quay Integration tile click Create Instance -
      -
    • Open Credentials secret -
        -
      • Namespace containing the secret: quay
      • -
      • Key within the secret: token
      • -
      -
    • -
    • Copy the Quay Portal hostname (including https://) and paste it into the Quay Hostname field
    • -
    • Set Insecure registry to true
    • -
    • Click Create
    • -
    -
  • -
-

Architecture recap

-
-
-

Click image to enlarge

-
-
- - - - - - -
- -
- - -
- - -
- - - -
- -
-
-
- - - - - - - - - - - - - - - - - - - - diff --git a/2-install-prerequisites/index.xml b/2-install-prerequisites/index.xml deleted file mode 100644 index c4a60b9..0000000 --- a/2-install-prerequisites/index.xml +++ /dev/null @@ -1,13 +0,0 @@ - - - - Install Prerequisites on DRAFT : DevSecOps Workshop - https://devsecops-workshop.github.io/devsecops-workshop.github.io-dev/2-install-prerequisites/ - Recent content in Install Prerequisites on DRAFT : DevSecOps Workshop - Hugo -- gohugo.io - - - - - - \ No newline at end of file diff --git a/2.1-prepare-cluster/index.html b/2.1-prepare-cluster/index.html deleted file mode 100644 index 60d5d17..0000000 --- a/2.1-prepare-cluster/index.html +++ /dev/null @@ -1,860 +0,0 @@ - - - - - - - - - - - - Prepare Cluster :: DRAFT : DevSecOps Workshop - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
-
-
- -
-
- - - - - - - -
-
- -
- -
- -
- -

- - Prepare Cluster -

- - - - - - -

Prepare Cluster

-

Integrate Quay as Registry into OpenShift

-

To synchronize the internal default OpenShift Registry with the Quay Registry, the Quay Bridge is used. Now we need to create a new Organization in Quay:

-
    -
  • To access the Quay Portal make sure you are in the quay Project
  • -
  • Go to Networking->Routes, access the Quay portal using the URL of the first route (quay-quay)
  • -
  • Login with -
      -
    • User: quayadmin
    • -
    • Password: quayadmin
    • -
    -
  • -
  • In the top + menu click Create New Organization -
      -
    • Name it openshift_integration
    • -
    -
  • -
  • Click Create Organization
  • -
-

We need an OAuth Application in Quay for the integration:

-
    -
  • Again In the Quay Portal, click the Applications icon in the menubar to the left
  • -
  • Click Create New Application at the upper right -
      -
    • Name it openshift, press Enter and click on the new openshift item by clicking it
    • -
    -
  • -
  • In the menubar to the left click the Generate Token icon -
      -
    • Check all boxes and click Generate Access token -
      -
      -

      Click image to enlarge

      -
      -
      -
    • -
    • In the next view click Authorize Application and confirm
    • -
    • In the next view copy the Access Token and save it somewhere, we’ll need it again
    • -
    -
  • -
-

Now create a new secret for the Quay Bridge to access Quay. In the OpenShift web console make sure you are in the quay Project. Then:

-
    -
  • Go to Workloads->Secrets and click Create->Key/value secret -
      -
    • Secret name: quay-credentials
    • -
    • Key: token
    • -
    • Value: paste the Access Token you generated in the Quay Portal in the text field below the grey Value field
    • -
    • Click Create
    • -
    -
  • -
-

And you are done with the installation and integration of Quay as your registry!
-Test if the integration works:

-
    -
  • In the Quay Portal you should see your OpenShift Projects are synced and represented as Quay Organizations, prefixed with openshift_ (you might have to reload the browser). -
      -
    • E.g. there should be a openshift_git Quay Organization.
    • -
    -
  • -
  • In the OpenShift web console create a new test Project, make sure it’s synced to Quay as an Organization and delete it again.
  • -
-

Architecture recap

-
-
-

Click image to enlarge

-
-
- - - - - - -
- -
- - -
- - -
- - - -
- -
-
-
- - - - - - - - - - - - - - - - - - - - diff --git a/2.1-prepare-cluster/index.xml b/2.1-prepare-cluster/index.xml deleted file mode 100644 index 9c0dd3f..0000000 --- a/2.1-prepare-cluster/index.xml +++ /dev/null @@ -1,13 +0,0 @@ - - - - Prepare Cluster on DRAFT : DevSecOps Workshop - https://devsecops-workshop.github.io/devsecops-workshop.github.io-dev/2.1-prepare-cluster/ - Recent content in Prepare Cluster on DRAFT : DevSecOps Workshop - Hugo -- gohugo.io - - - - - - \ No newline at end of file diff --git a/20-appendix/index.html b/20-appendix/index.html deleted file mode 100644 index 0ff3390..0000000 --- a/20-appendix/index.html +++ /dev/null @@ -1,841 +0,0 @@ - - - - - - - - - - - - Appendix :: DRAFT : DevSecOps Workshop - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
-
-
- -
-
- - - - - - - -
-
- -
- -
- -
- -

- - Appendix -

- - - - - - -

Create ACS init bundle in ACS Portal

-

Create the init bundle using the ACS Portal:

-
    -
  • Navigate to Platform Configuration → Integrations.
  • -
  • Under the Authentication Tokens section, click on Cluster Init Bundle.
  • -
  • Click Generate bundle
  • -
  • Enter a name for the cluster init bundle and click Generate.
  • -
  • Click Download Kubernetes Secret File to download the generated bundle.
  • -
- -

If you are running oc on your laptop, you are set. If you are SSH-ing to another host (like the bastion host) to run oc, you have to scp the init bundle file over there. If you are using the OpenShift Web Terminal you have to use the API method.

-
- -

Create a serviceaccount to scan the internal OpenShift registry

-

The integrations to the internal registry were created automatically. But to enable scanning of images in the internal registry, you’ll have to configure valid credentials, so this is what you’ll do:

-
    -
  • add a serviceaccount
  • -
  • assign it the needed privileges
  • -
  • configure the Integrations in ACS with the new credentials
  • -
-

But the first step is to disable the auto-generate mechanism, otherwise your updated credentials would be set back automatically:

-
    -
  • In the OpenShift Web Console, switch to the project stackrox, go to Installed Operators->Advanced Cluster Security for Kubernetes
  • -
  • Open your Central instance stackrox-central-services
  • -
  • Switch to the YAML view, under spec: add the following YAML snippet (one indent):
  • -
-
customize:
-    envVars:
-      - name: ROX_DISABLE_AUTOGENERATED_REGISTRIES
-        value: 'true'
-
    -
  • Click Save
  • -
-

Create ServiceAccount to read images from Registry

-
    -
  • In the OpenShift Web Console make sure you are still in the stackrox Project
  • -
  • User Management -> ServiceAccounts -> Create ServiceAccount
  • -
  • Replace the example name in the YAML with acs-registry-reader and click Create
  • -
  • In the new ServiceAccount, under Secrets click one of the acs-registry-reader-token-... secrets
  • -
  • Under Data copy the Token
  • -
  • Using oc give the ServiceAccount the right to read images from all projects:
  • -
-
oc adm policy add-cluster-role-to-user 'system:image-puller' system:serviceaccount:stackrox:acs-registry-reader -n stackrox
-

Configure Registry Integrations in ACS

-

Access the ACS Portal and configure the already existing integrations of type Generic Docker Registry. Go to Platform Configuration -> Integrations -> Generic Docker Registry. You should see a number of autogenerated (from existing pull-secrets) entries.

-

You have to change four entries pointing to the internal registry, you can easily recognize them by the placeholder Username serviceaccount.

-

For each of the four local registry integrations click Edit integration using the three dots at the right:

-
    -
  • Put in acs-registry-reader as Username
  • -
  • Paste the token you copied from the secret into the Password field
  • -
  • Select Disable TLS certificate validation
  • -
  • Press the Test button to validate the connection and press Save when the test is successful.
  • -
-

ACS is now able to scan images in the internal registry!

- - - - - -
- -
- - -
- - -
- - - -
- -
-
-
- - - - - - - - - - - - - - - - - - - - diff --git a/20-appendix/index.xml b/20-appendix/index.xml deleted file mode 100644 index a4fd327..0000000 --- a/20-appendix/index.xml +++ /dev/null @@ -1,13 +0,0 @@ - - - - Appendix on DRAFT : DevSecOps Workshop - https://devsecops-workshop.github.io/devsecops-workshop.github.io-dev/20-appendix/ - Recent content in Appendix on DRAFT : DevSecOps Workshop - Hugo -- gohugo.io - - - - - - \ No newline at end of file diff --git a/3-inner-loop/index.html b/3-inner-loop/index.html deleted file mode 100644 index 5d47627..0000000 --- a/3-inner-loop/index.html +++ /dev/null @@ -1,952 +0,0 @@ - - - - - - - - - - - - Inner Loop :: DRAFT : DevSecOps Workshop - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
-
-
- -
- -
- -
- -
- -
- -

- - Inner Loop -

- - - - - - -

In this part of the workshop you’ll experience how modern software development using the OpenShift tooling can be done in a fast, iterative way. Inner loop here means this is the way, sorry, process, for developers to try out new things and quickly change and test their code on OpenShift without having to build new images all the time or being a Kubernetes expert. -Inner Loop

-

Install and Prepare Red Hat OpenShift Dev Spaces

-

OpenShift Dev Spaces is a browser-based IDE for Cloud Native Development. All the heavy lifting is done through a container running your workspace on OpenShift. All you really need is a laptop. You can easily switch and setup a customized environment, plugin, build tools and runtimes. So switching from one project context to another is as easy a switching a website. No more endless installation and configuration marathons on your dev laptop. It is already part of your OpenShift subscription. If you want to find out more have a look here

-
    -
  • Install the Red Hat OpenShift Dev Spaces Operator from OperatorHub with default settings
  • -
  • Go to Installed Operators -> Red Hat OpenShift Dev Spaces and create a new instance (Red Hat OpenShift Dev Spaces instance Specification) using the default settings in the project openshift-operators
  • -
  • Wait until deployment has finished. This may take a couple of minutes as several components will be deployed.
  • -
  • Once the instance status is ready (You can check the YAML of the instance: status > chePhase: Active), look up the devspaces Route in the openshift-workspaces project (If you can see the openshift-workspaces, you may need to toggle the Show default project button).
  • -
  • Open the link in a new browser tab, click on Log in with OpenShift and log in with your OpenShift credentials
  • -
  • Allow selected permissions
  • -
- -

We could create a workspace from one of the templates that come with Dev Spaces, but we want to use a customized workspace with some additionally defined plugins in a v2 devfile in our git repo. With devfiles you can share a complete workspace setup and with the click of a link and you will end up in a fully configured project in your browser.

-
- -

You will now need to access the Gitea repository where your Quarkus app resides and specifically get the path to the devfile.

-
    -
  • Find the Gitea URL by selecting the git project in openshift and then Networking > Routes
  • -
  • Click on the URL and login to Gitea with -
      -
    • username : gitea
    • -
    • password : gitea
    • -
    -
  • -
  • On the right side click on the repository gitea/quarkus-build-options
  • -
  • Then click on the devfile devspaces_devfile.yml
  • -
  • Now click on button Raw (or Originalformat in German) and copy this URL
  • -
-

It is important that you have the URL to the Raw version, otherwise DevSpace will recieve a website that it cannot parse.

-

Now back in your DevSpaces Workspace :

-
    -
  • In the left menu click on Create Workspace
  • -
  • Paste the full URL of the devfile that you just copied into the Git Repo URL field and click Create & Open
  • -
-
-
-

Click image to enlarge

-
-
- -
    -
  • You’ll get into the Creating a workspace … view, give the workspace containers some time to spin up.
  • -
  • If a popup appears asking you to “trust the authors of the files” click Yes, I trust the authors
    -
    -

    Click image to enlarge

    -
    -
    -
  • -
-

When your workspace has finally started, have a good look around in the UI. It should look familiar if you have ever worked with VSCode or similar IDEs.

- -

While working with Dev Spaces make sure you have AdBlockers disabled, you are not on a VPN and a have good internet connection to ensure a stable setup. If you are facing any issues try to reload the Browser window. If that doesn’t help restart the workspace in the main DevSpaces Web Console under Workspaces and then menu Restart Workspace

-
- -

Clone the Quarkus Application Code

-

As an example you’ll create a new Java application. You don’t need to have prior experience programming in Java as this will be kept really simple.

- -

We will use a Java application based on the Quarkus stack. Quarkus enables you to create much smaller and faster containerized Java applications than ever before. You can even transcompile these apps to native Linux binaries that start blazingly fast. The app that we will use is just a basic example created with the Quarkus Generator with a simple RESTful API that answers to http requests. But at the end of the day this setup will work with any Java application.
-Fun fact: Every OpenShift Subscription already provides a Quarkus Subscription.

-
- -

Let’s clone our project into our workspace :

-
    -
  • Bring up your OpenShift DevSpaces in your browser
  • -
  • Click on the the “Hamburger” menu in the top left, then View > Command Palette -
      -
    • In the Command Palette prompt that appears on the top, start typing git clone until you can select the Git: Clone item -
      -
      -

      Click image to enlarge

      -
      -
      -
    • -
    • Enter the Git URL to your Gitea Repository (You can copy the URL by clicking on the clipboard icon in Gitea) and press enter -
      -
      -

      Click image to enlarge

      -
      -
      -
    • -
    -
  • -
  • In the following dialog Choose a folder to clone …, move up the dirs and select the /projects dir, then click the button OK
  • -
  • In the following dialog when asked how to open the code, click on Open -
    -
    -

    Click image to enlarge

    -
    -
    -
  • -
  • The windows will briefly reload and then you will be in the cloned project folder
  • -
  • You may have to check “Trust the authors …” and click Yes, I trust the authors again. Last time, promise :) -
    -
    -

    Click image to enlarge

    -
    -
    -
  • -
-

Access OpenShift and Create the Development Stage Project

-

Now we want to create a new OpenShift project for our app:

-
    -
  • Open a terminal in your DevSpaces IDE -
      -
    • In the top left ‘hamburger’ menu click on Terminal > New Terminal)
    • -
    -
  • -
  • The oc OpenShift cli client is already installed and you are already logged into the cluster
  • -
  • So go ahead and create a new project workshop-dev
  • -
-
oc new-project workshop-dev
-

Use odo to Deploy and Update our Application

-

odo or ‘OpenShift do’ is a cli that enables developers to quickly get started with cloud native app development without being a Kubernetes expert. It offers support for multiple runtimes and you can easily setup microservice components, push code changes into running containers and debug remotely with just a few simple commands. To find out more, have look here

-

First we need to make sure we are in the folder of the cloned project.

-

Enter the following command in the terminal:

-
pwd
-

if you are not in the /projects/quarkus-build-options folder, change into with the cd command

-

odo is smart enough to figure out what programming language and frameworks you are using. So let’s let initialize our project

-
odo init
-
    -
  • You can then opt-into telemetry (Y/n)
  • -
  • A matching Quarkus DevFile is found in the odo repository. Choose Y to download
  • -
  • You can select a container in which odo will be started. Hit Enter (None)
  • -
  • As component name keep the suggestion. Hit Enter
  • -
-

odo is now intialized for your app. Let’s deploy the app to openshift in odo dev mode

-
odo dev
-

This will compile the app, start a pod in the OpenShift project and inject the app.

-

There will be a couple of popups in the bottom right corner (Click on all of them as explained below)

-

DevSpaces Popups

-
    -
  • “A new process is listening …” -> Choose Yes
  • -
  • “Redirect is not enabled …” –> Click on Open in New Tab
  • -
  • “Do you want VS Code - Open Source to open an external website” –> Choose Open
  • -
-

New tabs will open. One with the DevFile Editor and one showing the Quarkus webpage of your app. You may have to wait a reload in a few seconds.

-

To test the app in the Quarkus App tab:

-

Your app should be displayed as a simple web page. In the RESTEasy JAX-RS section click the @Path endpoint /hello to see the result.

-

Now for the fun part:
-Using odo you can dynamically change your code and push it again without the need to build a new container image! No dev magic involved:

-
    -
  • -

    In your DevWorkspace on the left, expand the file tree to open file src/main/java/org/acme/GreetingRessource.java and change the string “Hello RESTEasy” to “Hello Workshop” (DevSpaces auto saves every edit directly. No need to save the file manually.)

    -
  • -
  • -

    And reload the app webpage.

    -
  • -
  • -

    Bam! The change should be there in a matter of seconds

    -
  • -
-

Architecture recap

-
-
-

Click image to enlarge

-
-
- - - - - - -
- -
- - -
- - -
- - - -
- -
-
-
- - - - - - - - - - - - - - - - - - - - diff --git a/3-inner-loop/index.xml b/3-inner-loop/index.xml deleted file mode 100644 index 226b3aa..0000000 --- a/3-inner-loop/index.xml +++ /dev/null @@ -1,13 +0,0 @@ - - - - Inner Loop on DRAFT : DevSecOps Workshop - https://devsecops-workshop.github.io/devsecops-workshop.github.io-dev/3-inner-loop/ - Recent content in Inner Loop on DRAFT : DevSecOps Workshop - Hugo -- gohugo.io - - - - - - \ No newline at end of file diff --git a/4-outer-loop/index.html b/4-outer-loop/index.html deleted file mode 100644 index a37c612..0000000 --- a/4-outer-loop/index.html +++ /dev/null @@ -1,1073 +0,0 @@ - - - - - - - - - - - - Outer Loop :: DRAFT : DevSecOps Workshop - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
-
-
- -
- -
- -
- -
- -
- -

- - Outer Loop -

- - - - - - -

Now that you have seen how a developer can quickly start to code using modern cloud native tooling, it’s time to learn how to push the application towards a production environment. The first step is to implement a CI/CD pipeline to automate new builds. Let’s call this stage int for integration.

-

Install OpenShift Pipelines

-

To create and run the build pipeline you’ll use OpenShift Pipelines based on project Tekton. The first step is to install it:

-
    -
  • Install the Red Hat OpenShift Pipelines Operator -
      -
    • In the OpenShift Web Console select Operators > OperatorHub
    • -
    • Find the Red Hat OpenShift Pipelines Operator and install it with the default settings
    • -
    -
  • -
- -

Since the Piplines assets are installed asynchronously it is possible that the Pipeline Templates are not yet setup when proceeding immedately to the next step. So now is good time to grab a coffee.

-
- -

Create App Deployment and Build Pipeline

-

After installing the Operator, create a new deployment of your game-changing application:

-
    -
  • Create a new OpenShift project called workshop-int (e.g. using the Projects menu item at the top)
  • -
  • In the left menu at the top switch to the OpenShift Developer Console by clicking on Administrator > Developer
  • -
  • Close the welcome pop up
  • -
  • Make sure you are still in the workshop-int project by verifying in the top Project menu
  • -
  • Click the +Add menu entry to the left and choose the Import from Git card
  • -
  • As Git Repo URL enter the clone URL for the quarkus-build-options repo in your Gitea instance -
    -
    -

    Click image to enlarge

    -
    -
    - -
      -
    • There might be a warning about the repo url that you can ignore
    • -
    • Leave Git type set to other
    • -
    -
  • -
  • Click Show advanced Git options and for Git reference enter master
  • -
  • As Import Strategy select Builder Image
  • -
  • As Builder Image select Java and openjdk-11-el7 / Red Hat OpenJDK 11 (RHEL 7) -
      -
    • We are choosing this image as we have prepared some CVEs in a later chapter based on this image
    • -
    -
  • -
  • As Application Name enter workshop-app
  • -
  • As Name enter workshop
  • -
  • Check Add pipeline
  • -
- -

If you don’t have the checkbox Add pipeline and get the message There are no pipeline templates available for Java and Deployment combination in the next step then just give it few more minutes and reload the page.

-
- -
    -
  • Click Create
  • -
  • In the main menu left, click on Pipelines and then the instance in column Last run and observe how the Pipeline is executed -
    -
    -

    Click image to enlarge

    -
    -
    -
  • -
-

Adjust the Pipeline to Deploy to Quay

-

The current Pipeline deploys to the Internal Registry by default. The image that was just created by the first run was pushed there.

-

To leverage our brand new Quay registry we need to modify the Pipeline in order to push the images to the Quay registry. In addition the OpenShift ImageStream must be modified to point to the Quay registry, too.

-

Create a new s2i-java ClusterTask

-

The first thing is to create a new Source-To-Image Pipeline Task to automatically update the ImageStream to point to Quay. You could of course copy and modify the default s2i-java task using the built-in YAML editor of the OpenShift Web Console. But to make this as painless as possible we have prepared the needed YAML object definition for you already.

-
    -
  • Open a Web Terminal by clicking the >_ in the upper right of the web console,
  • -
  • Click Start and wait for the terminal to initialize
  • -
  • From here you can run oc commands
  • -
  • The YAML object definitions for this lab are in the repo https://github.com/devsecops-workshop/yaml.git, go there and review the YAML definition.
  • -
  • Apply the YAML for the new ClusterTask:
  • -
-
oc create -f https://raw.githubusercontent.com/devsecops-workshop/yaml/main/s2i-java-workshop.yml
-
-
-

Click image to enlarge

-
-
- - -

To make this lab pretty much self-contained, we run oc commands from the OCP Web Terminal. But of course you can do the above steps from any Linux system where you set up the oc command.

-
- -

You should now have a new ClusterTask named s2i-java-workshop, go to the OpenShift Web Console and check:

-
    -
  • Switch to the Administrator view
  • -
  • Switch to the workshop-int Project
  • -
  • Go to Pipelines->Tasks->ClusterTasks
  • -
  • Search for the s2i-java-workshop ClusterTask and open it
  • -
  • Switch to the YAML view
  • -
-

Please take the time to review the additions to the default s2i-java task:

-

In the params section there are two new parameters, that will tell the pipeline which ImageStream and tag to update.

-
- default: ''
-    description: The name of the ImageStream which should be updated
-    name: IMAGESTREAM
-    type: string
-- default: ''
-    description: The Tag of the ImageStream which should be updated
-    name: IMAGESTREAMTAG
-    type: string
-

At the end of the steps section is a new step that takes care of actaully creating the ImageStream tag that points to the image in Quay

-
- env:
-    - name: HOME
-      value: /tekton/home
-    image: 'image-registry.openshift-image-registry.svc:5000/openshift/cli:latest'
-    name: update-image-stream
-    resources: {}
-    script: >
-      #!/usr/bin/env bash
-
-      oc tag --source=docker $(params.IMAGE)
-      $(params.IMAGESTREAM):$(params.IMAGESTREAMTAG) --insecure
-    securityContext:
-      runAsNonRoot: true
-      runAsUser: 65532
-

Modify the Pipeline

-

Now that we have our new build tasks we need to modify the pipeline to:

-
    -
  • Introduce the new parameters into the Pipeline configuration
  • -
  • Use the new s2i-java-workshop task
  • -
-

To make this easier we again provide you with a full YAML definition for the Pipeline.

-

Do the following:

-
    -
  • Go to your Web Terminal (if it timed out just start it again)
  • -
- -

If you use this lab guide with your domain as query parameter (see here), you are good to go with the command below because your domain was already inserted into the command. -If not, you have to replace <DOMAIN> manually.

-
- -
    -
  • First get the YAML file:
  • -
-
curl https://raw.githubusercontent.com/devsecops-workshop/yaml/main/workshop-pipeline-without-git-update.yml -o workshop-pipeline-without-git-update.yml
-
    -
  • Now we have to replace the REPLACEME placeholders in the YAML file with your lab domain.
  • -
  • Run (Insert your domain if not done automatically):
  • -
-
sed -i 's/REPLACEME/<DOMAIN>/g' workshop-pipeline-without-git-update.yml
-
    -
  • Apply the new definition:
  • -
-
oc replace -f workshop-pipeline-without-git-update.yml
-

Again take the time to review the changes in the web console:

-
    -
  • In the OpenShift Web Console menu go to Pipelines->Pipelines
  • -
  • Click the workshop Pipeline and switch to YAML
  • -
  • These are the new parameters that have been added to the pipeline:
  • -
-
- default: workshop
-  name: IMAGESTREAM
-  type: string
-- default: latest
-  name: IMAGESTREAMTAG
-  type: string
-

The preexisting parameter IMAGE_NAME now points to your local Quay registry:

-
   - default: >-
-        quay-quay-quay.apps.<DOMAIN>/openshift_workshop-int/workshop
-      name: IMAGE_NAME
-      type: string
-

And finally the build task was modified to work with the two new parameters:

-
tasks:
-    - name: build
-      params:
-        [...]
-        - name: IMAGESTREAM
-          value: $(params.IMAGESTREAM)
-        - name: IMAGESTREAMTAG
-          value: $(params.IMAGESTREAMTAG)
-
    -
  • The name of the taskRef was changed to s2i-java-workshop, in order to use our custom Pipeline Task:
  • -
-
taskRef:
-  kind: ClusterTask
-  name: s2i-java-workshop
-

You are done with adapting the Pipeline to use the Quay registry!

-

We are ready to give it a try, but first let’s have quick look at our target Quay repository

-
    -
  • Go to the Quay portal and there to the openshift_workshop-int organization.
  • -
  • In the openshift_workshop-int / workshop repository access the Tags in the menu to the left.
  • -
  • There should be no container image (yet) -
    -
    -

    Click image to enlarge

    -
    -
    -
  • -
-

Now it’s time to configure and start the Pipeline.

-
    -
  • In OpenShift Web Console open the Pipelines view
  • -
  • Open the workshop Pipeline
  • -
  • Go to the top right menu and choose Actions -> Start
  • -
-

In the Start Pipeline window that opens, but before (!) starting the actual pipeline, we need to add a Secret so the pipeline can authenticate and push to the Quay repository:

-
    -
  • Switch to the Quay Web Portal and click on the openshift_workshop-int / workshop repository
  • -
  • On the left click on Settings
  • -
  • Click on the openshift_workshop-int+builder Robot Account and copy the token -
    -
    -

    Click image to enlarge

    -
    -
    -
  • -
  • Back in the Start Pipeline form -
      -
    • At the buttom, click on Show credential options and then Add secret
    • -
    • Set these values -
        -
      • Secret name : quay-workshop-int-token
      • -
      • Access to : Image Registry
      • -
      • Authentication type : Basic Authentication
      • -
      • Server URL : quay-quay-quay.apps.<DOMAIN>/openshift_workshop-int (replace your cluster domain if necessary)
      • -
      • Username : openshift_workshop-int+builder
      • -
      • Password or token : the token you copied from the Quay Robot Account before …
      • -
      -
    • -
    • Then click on the checkmark below to add the secret
    • -
    • The secret has just been added and will be mounted automatically everytime the pipeline runs
    • -
    -
  • -
  • Hit Start
  • -
-

If the pipeline fails you may have to recheck the Secret quay-workshop-int-token directly if the username and password are set correctly.

-

Once the Pipeline run has finished, go to the Quay Portal and check the Repository openshift_workshop-int/workshop again. Under Tags you should now see a new workshop Image version that was just pushed by the pipeline.

-

Congratulations: Quay is now a first level citizen of your pipeline build strategy.

-

Create an ImageStream Tag with an Old Image Version

-

Now that your build pipeline has been set up and is ready. There is one more step in preparation of the security part of this workshop. We need a way to build and deploy from an older image with some security issues in it. For this we will add another ImageStream Tag in the default Java ImageStream that points to an older version with a known CVE issue in it.

-
    -
  • Using the OpenShift Administrator view, switch to the project openshift and under Builds click on ImageStreams
  • -
  • Search and open the ImageStream java
  • -
  • Switch to YAML view and add the following snippet to the spec > tags: section. -
      -
    • Be careful to keep the needed indentation!
    • -
    -
  • -
-
- name: java-old-image
-  annotations:
-    description: Build and run Java applications using Maven and OpenJDK 8.
-    iconClass: icon-rh-openjdk
-    openshift.io/display-name: Red Hat OpenJDK 8 (UBI 8)
-    sampleContextDir: undertow-servlet
-    sampleRepo: "https://github.com/jboss-openshift/openshift-quickstarts"
-    supports: "java:8,java"
-    tags: "builder,java,openjdk"
-    version: "8"
-  from:
-    kind: DockerImage
-    name: "registry.redhat.io/openjdk/openjdk-11-rhel7:1.10-1"
-  generation: 4
-  importPolicy: {}
-  referencePolicy:
-    type: Local
-

This will add a tag java-old-image that points to an older version of the RHEL Java image. The image and security vulnerabilities can be inspected in the Red Hat Software Catalog here

-
    -
  • Have a look at version 1.10-1
  • -
-

We will use this tag to test our security setup in a later chapter.

-

Create a new Project

-

For the subsequent exercises we need a new project:

-
    -
  • Create a new OpenShift Project workshop-prod
  • -
-

Architecture recap

-
-
-

Click image to enlarge

-
-
- - - - - - -
- -
- - -
- - -
- - - -
- -
-
-
- - - - - - - - - - - - - - - - - - - - diff --git a/4-outer-loop/index.xml b/4-outer-loop/index.xml deleted file mode 100644 index f254f02..0000000 --- a/4-outer-loop/index.xml +++ /dev/null @@ -1,13 +0,0 @@ - - - - Outer Loop on DRAFT : DevSecOps Workshop - https://devsecops-workshop.github.io/devsecops-workshop.github.io-dev/4-outer-loop/ - Recent content in Outer Loop on DRAFT : DevSecOps Workshop - Hugo -- gohugo.io - - - - - - \ No newline at end of file diff --git a/404.html b/404.html deleted file mode 100644 index 520a16d..0000000 --- a/404.html +++ /dev/null @@ -1,60 +0,0 @@ - - - - - - - - - 404 Page not found - - - - - - - - - - - - - - - - - - - -
-
-
-
-

Error

-

-

-

Woops. Looks like this page doesn't exist ¯\_(ツ)_/¯.

-

-

Go to homepage

-

Page not found!

-
-
- -
- - - diff --git a/5-gitops/index.html b/5-gitops/index.html deleted file mode 100644 index afdbeab..0000000 --- a/5-gitops/index.html +++ /dev/null @@ -1,1022 +0,0 @@ - - - - - - - - - - - - Configure GitOps :: DRAFT : DevSecOps Workshop - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
-
-
- -
- -
- -
- -
- -
- -

- - Configure GitOps -

- - - - - - -

Now that our CI/CD build and integration stage is ready we could promote the app version directly to a production stage. But with the help of the GitOps approach, we can leverage our Git system to handle promotion that is tracked through commits and can deploy and configure the whole production environment. This stage is just too critical to configure manually and without an audit.

-

Install OpenShift GitOps

-

So let’s start be installing the OpenShift GitOps Operator based on the project ArgoCD.

-
    -
  • Install the Red Hat OpenShift GitOps Operator from OperatorHub with the default settings - -

    The installation of the GitOps Operator will give you a clusterwide ArgoCD instance available at the link in the top right menu, but since we want to have an instance to manage just our prod project we will create another ArgoCD instance in that specific project.

    -
    -
  • -
  • You should already have created an OpenShift Project workshop-prod
  • -
  • With the project workshop-prod selected in the top menu click on Installed Operators and then Red Hat OpenShift GitOps.
  • -
  • On the ArgoCD “tile” click on Create instance to create an ArgoCD instance in the workshop-prod project.
  • -
- -
-
-

Click image to enlarge

-
-
- -
    -
  • Keep the settings as they are and click Create
  • -
-

Check the GitOps Config Repository

-

We already have a second repository, called openshift-gitops-getting-started in Gitea that holds the required Gitops yaml resources. We will use this repo to push changes to our workshop-prod enivronment.

-

Have a quick look at the structure of this git project:

-

app - contains yaml files for the deployment, service and route resources needed by our application. These will be applied to the cluster. There is also a kustomization.yaml defining that kustomize layers will be applied to all yamls

-

environments/dev - contains the kustomization.yaml which will be modified by our builds with new Image versions. ArgoCD will pick up these changes and trigger new deployments.

-

Setup the GitOps Project in ArgoCD

-

Let’s setup the project that tells ArgoCD to watch our configuration repository and update resources in the workshop-prod project accordingly.

-
    -
  • Find the local ArgoCD URL (not the global instance) by going to Networking > Routes in namespace workshop-prod
  • -
  • Open the ArgoCD website, ignoring the certificate warning
  • -
  • Don’t login with OpenShift but with username and password -
      -
    • User is admin and password will be in Secret argocd-cluster in the Project workspace-prod
    • -
    -
  • -
-

ArgoCD works with the concept of Applications. We will create an Application and point it to the configuration Git repository. ArgoCD will look for Kubernetes yaml files in the repository and path and deploy them to the defined project. Additionally, ArgoCD will also react to changes to the repository and reflect these to the project. You can also enable self-healing to prevent configuration drift. If you want find out more about OpenShift GitOps have look here.

-
    -
  • Create Application -
      -
    • Click the Applications icon on the left
    • -
    • Click Create Application
    • -
    • Application Name: workshop
    • -
    • Project: default
    • -
    • SYNC POLICY: Automatic
    • -
    • Repository URL: Copy the URL of your config repo openshift-gitops-getting-started from Gitea
    • -
    • Path: environments/dev
    • -
    • Cluster URL: https://kubernetes.default.svc
    • -
    • Namespace: workshop-prod
    • -
    • Click Create
    • -
    • Click on Sync and then Synchronize to manually trigger the first sync
    • -
    -
  • -
-

Watch the resources (Deployment, Service, Route) get rolled out to the project workshop-prod. Notice, we also scaling our app to 2 pods in the production stage as we want some high availability. But the actual deployment will not succeed as shown by the ‘broken heart’ icons!

- -

Since we have not published our image to the Quay workshop-prod repository the initial Deployment will try to roll out non existant image from Quay. Once the first pipeline run is complete, our newly built image will be replaced in the Deployment and rolled out.

-
- -

Our complete production stage is now configured and controlled through GitOps. But how do we tell ArgoCD that there is a new version of our app to deploy? Well, we will add a step to our build pipeline updating the configuration repository.

-

As we do not want to modify our original repository file we will use a tool called Kustomize that can add incremental change layers to YAML files. Since ArgoCD permanently watches this repository, it will pick up these Kustomize changes.

- -

It is also possible to update the repository with a Pull request. Then you have an approval process for your production deployment.

-
- -

Initialize the workshop-prod/workshop Repository in Quay

-

We will need to initialize the workshop-prod/workshop in Quay so the robo user will be able to push images there later on.

-
    -
  • In Quay select the organization openshift_workshop-prod on the right
  • -
  • Click on + Create New Repository on the top left -
    -
    -

    Click image to enlarge

    -
    -
    -
  • -
  • Make sure to select openshift_workshop-prod as Organization
  • -
  • Enter workshop as repo name
  • -
  • Set the repo to Public
  • -
  • Click Create Public Repository -
    -
    -

    Click image to enlarge

    -
    -
    -
  • -
-

Add Kustomize and Git Push Tekton Task

-

Let’s add a new custom Tekton task to the workshop-int project that can update the Image tag via Kustomize after the build process completed and then push the change to our git configuration repository.

-

We could add this through the OpenShift Web Console as well but to save time we will apply the file directly via the oc command.

-
    -
  • Go to your Web Terminal or open a new one.
  • -
  • Apply the task via YAML:
  • -
-
oc create -f https://raw.githubusercontent.com/devsecops-workshop/yaml/main/tekton-kustomize.yml
-
    -
  • In the OpenShift Web Console switch back to project workshop-int and then go to Pipelines > Tasks > Tasks and have a look at the just imported task git-update-deployment. You should see the git commands how the configuration repository will be cloned, patched by Kustomize and then pushed again.
  • -
-

Add Tekton Tasks to your Pipeline to Promote your Image to workshop-prod

-

So now we have a new Tekton Task in our task catalog to update a GitOps Git repository, but we still need to promote the actual image from our workshop-int to workshop-prod project. Otherwise the image will not be available for our deployment.

-
    -
  • In the workshop_int project, go to Pipelines > Pipelines > workshop and then YAML
  • -
- -

You can edit pipelines either directly in YAML or in the visual Pipeline Builder. We will see how to use the Builder later on, so let’s edit the YAML for now.

-
- -

Add the new Task to your Pipeline by adding it to the YAML like this:

-
    -
  • First we will add a new Pipeline Parameter ‘GIT_CONFIG_REPO’ at the beginning of the pipeline and set it by default to our GitOps configuration repository (This will be updated by the Pipeline and then trigger ArgoCD to deploy to Production)
  • -
  • So in the YAML view at the end of the spec > params section add the following (if the <DOMAIN> placeholder hasn’t been replaced automatically, do it manually):
  • -
-
- default: >-
-      https://repository-git.apps.<DOMAIN>/gitea/openshift-gitops-getting-started.git
-    name: GIT_CONFIG_REPO
-    type: string
-
    -
  • Next insert the new tasks at the tasks level right after the deploy task
  • -
  • We will map the Pipeline parameter GIT_CONFIG_REPO to the Task parameter GIT_REPOSITORY
  • -
  • Make sure to fix indentation after pasting into the YAML!
  • -
- -

In the OpenShift YAML viewer/editor you can mark multiple lines and use tab to indent this lines for one step.

-
- -
- name: skopeo-copy
-  params:
-    - name: srcImageURL
-      value: "docker://$(params.QUAY_URL)/openshift_workshop-int/workshop:latest"
-    - name: destImageURL
-      value: "docker://$(params.QUAY_URL)/openshift_workshop-prod/workshop:latest"
-    - name: srcTLSverify
-      value: "false"
-    - name: destTLSverify
-      value: "false"
-  runAfter:
-    - build
-  taskRef:
-    kind: ClusterTask
-    name: skopeo-copy
-  workspaces:
-    - name: images-url
-      workspace: workspace
-- name: git-update-deployment
-  params:
-    - name: GIT_REPOSITORY
-      value: $(params.GIT_CONFIG_REPO)
-    - name: CURRENT_IMAGE
-      value: "quay.io/nexus6/hello-microshift:1.0.0-SNAPSHOT"
-    - name: NEW_IMAGE
-      value: $(params.QUAY_URL)/openshift_workshop-prod/workshop
-    - name: NEW_DIGEST
-      value: $(tasks.build.results.IMAGE_DIGEST)
-    - name: KUSTOMIZATION_PATH
-      value: environments/dev
-  runAfter:
-    - skopeo-copy
-  taskRef:
-    kind: Task
-    name: git-update-deployment
-  workspaces:
-    - name: workspace
-      workspace: workspace
-

The Pipeline should now look like this. Notice that the new tasks runs in parallel to the deploy task

- -
-
-

Click image to enlarge

-
-
- -

Now, the pipeline is set. The last thing we need is authentication against the Gitea repository and the workshop-prod Quay org. We will add those from the start pipeline form next. Make sure to replace the placeholder if required.

-

Update our Prod Stage via Pipeline and GitOps

-
    -
  • -

    Click on Pipeline Start

    -
      -
    • In the form go down and expand Show credential options
    • -
    • Click Add Secret, then enter -
        -
      • Secret name : quay-workshop-prod-token
      • -
      • Access to: Image Registry
      • -
      • Authentication type: Basic Authentication
      • -
      • Server URL: quay-quay-quay.apps.<DOMAIN>/openshift_workshop-prod
      • -
      • Username: openshift_workshop-prod+builder
      • -
      • Password : (Retrieve this from the Quay organization openshift_workshop-prod robo account openshift_workshop-prod+builder as before)
      • -
      • Click the checkmark
      • -
      -
    • -
    • Then click Add Secret again -
        -
      • Secret name : gitea-secret
      • -
      • Access to: Git Server
      • -
      • Authentication type: Basic Authentication
      • -
      • Server URL: https://repository-git.apps.<DOMAIN>/gitea/openshift-gitops-getting-started.git (replace url if necassary)
      • -
      • Username: gitea
      • -
      • Password : gitea
      • -
      • Click the checkmark
      • -
      -
    • -
    -
  • -
  • -

    Run the pipeline by clicking Start and see that in your Gitea configuration repository the file /environment/dev/kustomize.yaml is updated with the new image version - -

    Notice that the deploy and the git-update steps now run in parallel. This is one of the strength of Tekton. It can scale natively with pods on OpenShift.

    -
    -

    -
  • -
  • -

    This will tell ArgoCD to update the Deployment with this new image version

    -
  • -
  • -

    Check that the new image is rolled out sucessfully now (you may need to sync manually in ArgoCD to speed things up)

    -
  • -
-

Architecture recap

-
-
-

Click image to enlarge

-
-
- - - - - - -
- -
- - -
- - -
- - - -
- -
-
-
- - - - - - - - - - - - - - - - - - - - diff --git a/5-gitops/index.xml b/5-gitops/index.xml deleted file mode 100644 index 1feef14..0000000 --- a/5-gitops/index.xml +++ /dev/null @@ -1,13 +0,0 @@ - - - - Configure GitOps on DRAFT : DevSecOps Workshop - https://devsecops-workshop.github.io/devsecops-workshop.github.io-dev/5-gitops/ - Recent content in Configure GitOps on DRAFT : DevSecOps Workshop - Hugo -- gohugo.io - - - - - - \ No newline at end of file diff --git a/README.md b/README.md new file mode 100644 index 0000000..48d5670 --- /dev/null +++ b/README.md @@ -0,0 +1 @@ +# devsecops-workshop.github.io-dev-Public \ No newline at end of file diff --git a/categories/index.html b/categories/index.html deleted file mode 100644 index 6a8e2c6..0000000 --- a/categories/index.html +++ /dev/null @@ -1,777 +0,0 @@ - - - - - - - - - - - - Categories :: DRAFT : DevSecOps Workshop - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
-
-
- -
-
- - - - -
-
- -
-
- - -
-
- -
- -
- -
- -

- - Categories -

- - - - - - - - - -
- -
- - -
- - -
- - - -
- -
-
-
- - - - - - - - - - - - - - - - - - - - diff --git a/categories/index.xml b/categories/index.xml deleted file mode 100644 index b4438b1..0000000 --- a/categories/index.xml +++ /dev/null @@ -1,13 +0,0 @@ - - - - Categories on DRAFT : DevSecOps Workshop - https://devsecops-workshop.github.io/devsecops-workshop.github.io-dev/categories/ - Recent content in Categories on DRAFT : DevSecOps Workshop - Hugo -- gohugo.io - - - - - - \ No newline at end of file diff --git a/css/atom-one-dark-reasonable.css b/css/atom-one-dark-reasonable.css deleted file mode 100644 index fd41c99..0000000 --- a/css/atom-one-dark-reasonable.css +++ /dev/null @@ -1,77 +0,0 @@ -/* - -Atom One Dark With support for ReasonML by Gidi Morris, based off work by Daniel Gamage - -Original One Dark Syntax theme from https://github.com/atom/one-dark-syntax - -*/ -.hljs { - display: block; - overflow-x: auto; - padding: 0.5em; - line-height: 1.3em; - color: #abb2bf; - background: #282c34; - border-radius: 5px; -} -.hljs-keyword, .hljs-operator { - color: #F92672; -} -.hljs-pattern-match { - color: #F92672; -} -.hljs-pattern-match .hljs-constructor { - color: #61aeee; -} -.hljs-function { - color: #61aeee; -} -.hljs-function .hljs-params { - color: #A6E22E; -} -.hljs-function .hljs-params .hljs-typing { - color: #FD971F; -} -.hljs-module-access .hljs-module { - color: #7e57c2; -} -.hljs-constructor { - color: #e2b93d; -} -.hljs-constructor .hljs-string { - color: #9CCC65; -} -.hljs-comment, .hljs-quote { - color: #b18eb1; - font-style: italic; -} -.hljs-doctag, .hljs-formula { - color: #c678dd; -} -.hljs-section, .hljs-name, .hljs-selector-tag, .hljs-deletion, .hljs-subst { - color: #e06c75; -} -.hljs-literal { - color: #56b6c2; -} -.hljs-string, .hljs-regexp, .hljs-addition, .hljs-attribute, .hljs-meta-string { - color: #98c379; -} -.hljs-built_in, .hljs-class .hljs-title { - color: #e6c07b; -} -.hljs-attr, .hljs-variable, .hljs-template-variable, .hljs-type, .hljs-selector-class, .hljs-selector-attr, .hljs-selector-pseudo, .hljs-number { - color: #d19a66; -} -.hljs-symbol, .hljs-bullet, .hljs-link, .hljs-meta, .hljs-selector-id, .hljs-title { - color: #61aeee; -} -.hljs-emphasis { - font-style: italic; -} -.hljs-strong { - font-weight: bold; -} -.hljs-link { - text-decoration: underline; -} diff --git a/css/auto-complete.css b/css/auto-complete.css deleted file mode 100644 index ac6979a..0000000 --- a/css/auto-complete.css +++ /dev/null @@ -1,47 +0,0 @@ -.autocomplete-suggestions { - text-align: left; - cursor: default; - border: 1px solid #ccc; - border-top: 0; - background: #fff; - box-shadow: -1px 1px 3px rgba(0,0,0,.1); - - /* core styles should not be changed */ - position: absolute; - display: none; - z-index: 9999; - max-height: 254px; - overflow: hidden; - overflow-y: auto; - box-sizing: border-box; - -} -.autocomplete-suggestion { - position: relative; - cursor: pointer; - padding: 7px; - line-height: 23px; - white-space: nowrap; - overflow: hidden; - text-overflow: ellipsis; - color: #333; -} - -.autocomplete-suggestion b { - font-weight: normal; - color: #1f8dd6; -} - -.autocomplete-suggestion.selected { - background: #333; - color: #fff; -} - -.autocomplete-suggestion:hover { - background: #444; - color: #fff; -} - -.autocomplete-suggestion > .context { - font-size: 12px; -} diff --git a/css/featherlight.min.css b/css/featherlight.min.css deleted file mode 100644 index 058487f..0000000 --- a/css/featherlight.min.css +++ /dev/null @@ -1,8 +0,0 @@ -/** - * Featherlight - ultra slim jQuery lightbox - * Version 1.7.13 - http://noelboss.github.io/featherlight/ - * - * Copyright 2018, Noël Raoul Bossart (http://www.noelboss.com) - * MIT Licensed. -**/ -html.with-featherlight{overflow:hidden}.featherlight{display:none;position:fixed;top:0;right:0;bottom:0;left:0;z-index:2147483647;text-align:center;white-space:nowrap;cursor:pointer;background:#333;background:rgba(0,0,0,0)}.featherlight:last-of-type{background:rgba(0,0,0,.8)}.featherlight:before{content:'';display:inline-block;height:100%;vertical-align:middle}.featherlight .featherlight-content{position:relative;text-align:left;vertical-align:middle;display:inline-block;overflow:auto;padding:25px 25px 0;border-bottom:25px solid transparent;margin-left:5%;margin-right:5%;max-height:95%;background:#fff;cursor:auto;white-space:normal}.featherlight .featherlight-inner{display:block}.featherlight link.featherlight-inner,.featherlight script.featherlight-inner,.featherlight style.featherlight-inner{display:none}.featherlight .featherlight-close-icon{position:absolute;z-index:9999;top:0;right:0;line-height:25px;width:25px;cursor:pointer;text-align:center;font-family:Arial,sans-serif;background:#fff;background:rgba(255,255,255,.3);color:#000;border:0;padding:0}.featherlight .featherlight-close-icon::-moz-focus-inner{border:0;padding:0}.featherlight .featherlight-image{width:100%}.featherlight-iframe .featherlight-content{border-bottom:0;padding:0;-webkit-overflow-scrolling:touch}.featherlight iframe{border:0}.featherlight *{-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box}@media only screen and (max-width:1024px){.featherlight .featherlight-content{margin-left:0;margin-right:0;max-height:98%;padding:10px 10px 0;border-bottom:10px solid transparent}}@media print{html.with-featherlight>*>:not(.featherlight){display:none}} \ No newline at end of file diff --git a/css/fontawesome-all.min.css b/css/fontawesome-all.min.css deleted file mode 100644 index de56473..0000000 --- a/css/fontawesome-all.min.css +++ /dev/null @@ -1 +0,0 @@ -.fa,.fab,.fal,.far,.fas{-moz-osx-font-smoothing:grayscale;-webkit-font-smoothing:antialiased;display:inline-block;font-style:normal;font-variant:normal;text-rendering:auto;line-height:1}.fa-lg{font-size:1.33333em;line-height:.75em;vertical-align:-.0667em}.fa-xs{font-size:.75em}.fa-sm{font-size:.875em}.fa-1x{font-size:1em}.fa-2x{font-size:2em}.fa-3x{font-size:3em}.fa-4x{font-size:4em}.fa-5x{font-size:5em}.fa-6x{font-size:6em}.fa-7x{font-size:7em}.fa-8x{font-size:8em}.fa-9x{font-size:9em}.fa-10x{font-size:10em}.fa-fw{text-align:center;width:1.25em}.fa-ul{list-style-type:none;margin-left:2.5em;padding-left:0}.fa-ul>li{position:relative}.fa-li{left:-2em;position:absolute;text-align:center;width:2em;line-height:inherit}.fa-border{border:.08em solid #eee;border-radius:.1em;padding:.2em .25em .15em}.fa-pull-left{float:left}.fa-pull-right{float:right}.fa.fa-pull-left,.fab.fa-pull-left,.fal.fa-pull-left,.far.fa-pull-left,.fas.fa-pull-left{margin-right:.3em}.fa.fa-pull-right,.fab.fa-pull-right,.fal.fa-pull-right,.far.fa-pull-right,.fas.fa-pull-right{margin-left:.3em}.fa-spin{animation:fa-spin 2s infinite linear}.fa-pulse{animation:fa-spin 1s infinite steps(8)}@keyframes fa-spin{0%{transform:rotate(0deg)}to{transform:rotate(1turn)}}.fa-rotate-90{-ms-filter:"progid:DXImageTransform.Microsoft.BasicImage(rotation=1)";transform:rotate(90deg)}.fa-rotate-180{-ms-filter:"progid:DXImageTransform.Microsoft.BasicImage(rotation=2)";transform:rotate(180deg)}.fa-rotate-270{-ms-filter:"progid:DXImageTransform.Microsoft.BasicImage(rotation=3)";transform:rotate(270deg)}.fa-flip-horizontal{-ms-filter:"progid:DXImageTransform.Microsoft.BasicImage(rotation=0, mirror=1)";transform:scaleX(-1)}.fa-flip-vertical{transform:scaleY(-1)}.fa-flip-horizontal.fa-flip-vertical,.fa-flip-vertical{-ms-filter:"progid:DXImageTransform.Microsoft.BasicImage(rotation=2, mirror=1)"}.fa-flip-horizontal.fa-flip-vertical{transform:scale(-1)}:root .fa-flip-horizontal,:root .fa-flip-vertical,:root .fa-rotate-90,:root .fa-rotate-180,:root .fa-rotate-270{filter:none}.fa-stack{display:inline-block;height:2em;line-height:2em;position:relative;vertical-align:middle;width:2.5em}.fa-stack-1x,.fa-stack-2x{left:0;position:absolute;text-align:center;width:100%}.fa-stack-1x{line-height:inherit}.fa-stack-2x{font-size:2em}.fa-inverse{color:#fff}.fa-500px:before{content:"\f26e"}.fa-accessible-icon:before{content:"\f368"}.fa-accusoft:before{content:"\f369"}.fa-acquisitions-incorporated:before{content:"\f6af"}.fa-ad:before{content:"\f641"}.fa-address-book:before{content:"\f2b9"}.fa-address-card:before{content:"\f2bb"}.fa-adjust:before{content:"\f042"}.fa-adn:before{content:"\f170"}.fa-adobe:before{content:"\f778"}.fa-adversal:before{content:"\f36a"}.fa-affiliatetheme:before{content:"\f36b"}.fa-air-freshener:before{content:"\f5d0"}.fa-algolia:before{content:"\f36c"}.fa-align-center:before{content:"\f037"}.fa-align-justify:before{content:"\f039"}.fa-align-left:before{content:"\f036"}.fa-align-right:before{content:"\f038"}.fa-alipay:before{content:"\f642"}.fa-allergies:before{content:"\f461"}.fa-amazon:before{content:"\f270"}.fa-amazon-pay:before{content:"\f42c"}.fa-ambulance:before{content:"\f0f9"}.fa-american-sign-language-interpreting:before{content:"\f2a3"}.fa-amilia:before{content:"\f36d"}.fa-anchor:before{content:"\f13d"}.fa-android:before{content:"\f17b"}.fa-angellist:before{content:"\f209"}.fa-angle-double-down:before{content:"\f103"}.fa-angle-double-left:before{content:"\f100"}.fa-angle-double-right:before{content:"\f101"}.fa-angle-double-up:before{content:"\f102"}.fa-angle-down:before{content:"\f107"}.fa-angle-left:before{content:"\f104"}.fa-angle-right:before{content:"\f105"}.fa-angle-up:before{content:"\f106"}.fa-angry:before{content:"\f556"}.fa-angrycreative:before{content:"\f36e"}.fa-angular:before{content:"\f420"}.fa-ankh:before{content:"\f644"}.fa-app-store:before{content:"\f36f"}.fa-app-store-ios:before{content:"\f370"}.fa-apper:before{content:"\f371"}.fa-apple:before{content:"\f179"}.fa-apple-alt:before{content:"\f5d1"}.fa-apple-pay:before{content:"\f415"}.fa-archive:before{content:"\f187"}.fa-archway:before{content:"\f557"}.fa-arrow-alt-circle-down:before{content:"\f358"}.fa-arrow-alt-circle-left:before{content:"\f359"}.fa-arrow-alt-circle-right:before{content:"\f35a"}.fa-arrow-alt-circle-up:before{content:"\f35b"}.fa-arrow-circle-down:before{content:"\f0ab"}.fa-arrow-circle-left:before{content:"\f0a8"}.fa-arrow-circle-right:before{content:"\f0a9"}.fa-arrow-circle-up:before{content:"\f0aa"}.fa-arrow-down:before{content:"\f063"}.fa-arrow-left:before{content:"\f060"}.fa-arrow-right:before{content:"\f061"}.fa-arrow-up:before{content:"\f062"}.fa-arrows-alt:before{content:"\f0b2"}.fa-arrows-alt-h:before{content:"\f337"}.fa-arrows-alt-v:before{content:"\f338"}.fa-artstation:before{content:"\f77a"}.fa-assistive-listening-systems:before{content:"\f2a2"}.fa-asterisk:before{content:"\f069"}.fa-asymmetrik:before{content:"\f372"}.fa-at:before{content:"\f1fa"}.fa-atlas:before{content:"\f558"}.fa-atlassian:before{content:"\f77b"}.fa-atom:before{content:"\f5d2"}.fa-audible:before{content:"\f373"}.fa-audio-description:before{content:"\f29e"}.fa-autoprefixer:before{content:"\f41c"}.fa-avianex:before{content:"\f374"}.fa-aviato:before{content:"\f421"}.fa-award:before{content:"\f559"}.fa-aws:before{content:"\f375"}.fa-baby:before{content:"\f77c"}.fa-baby-carriage:before{content:"\f77d"}.fa-backspace:before{content:"\f55a"}.fa-backward:before{content:"\f04a"}.fa-balance-scale:before{content:"\f24e"}.fa-ban:before{content:"\f05e"}.fa-band-aid:before{content:"\f462"}.fa-bandcamp:before{content:"\f2d5"}.fa-barcode:before{content:"\f02a"}.fa-bars:before{content:"\f0c9"}.fa-baseball-ball:before{content:"\f433"}.fa-basketball-ball:before{content:"\f434"}.fa-bath:before{content:"\f2cd"}.fa-battery-empty:before{content:"\f244"}.fa-battery-full:before{content:"\f240"}.fa-battery-half:before{content:"\f242"}.fa-battery-quarter:before{content:"\f243"}.fa-battery-three-quarters:before{content:"\f241"}.fa-bed:before{content:"\f236"}.fa-beer:before{content:"\f0fc"}.fa-behance:before{content:"\f1b4"}.fa-behance-square:before{content:"\f1b5"}.fa-bell:before{content:"\f0f3"}.fa-bell-slash:before{content:"\f1f6"}.fa-bezier-curve:before{content:"\f55b"}.fa-bible:before{content:"\f647"}.fa-bicycle:before{content:"\f206"}.fa-bimobject:before{content:"\f378"}.fa-binoculars:before{content:"\f1e5"}.fa-biohazard:before{content:"\f780"}.fa-birthday-cake:before{content:"\f1fd"}.fa-bitbucket:before{content:"\f171"}.fa-bitcoin:before{content:"\f379"}.fa-bity:before{content:"\f37a"}.fa-black-tie:before{content:"\f27e"}.fa-blackberry:before{content:"\f37b"}.fa-blender:before{content:"\f517"}.fa-blender-phone:before{content:"\f6b6"}.fa-blind:before{content:"\f29d"}.fa-blog:before{content:"\f781"}.fa-blogger:before{content:"\f37c"}.fa-blogger-b:before{content:"\f37d"}.fa-bluetooth:before{content:"\f293"}.fa-bluetooth-b:before{content:"\f294"}.fa-bold:before{content:"\f032"}.fa-bolt:before{content:"\f0e7"}.fa-bomb:before{content:"\f1e2"}.fa-bone:before{content:"\f5d7"}.fa-bong:before{content:"\f55c"}.fa-book:before{content:"\f02d"}.fa-book-dead:before{content:"\f6b7"}.fa-book-open:before{content:"\f518"}.fa-book-reader:before{content:"\f5da"}.fa-bookmark:before{content:"\f02e"}.fa-bowling-ball:before{content:"\f436"}.fa-box:before{content:"\f466"}.fa-box-open:before{content:"\f49e"}.fa-boxes:before{content:"\f468"}.fa-braille:before{content:"\f2a1"}.fa-brain:before{content:"\f5dc"}.fa-briefcase:before{content:"\f0b1"}.fa-briefcase-medical:before{content:"\f469"}.fa-broadcast-tower:before{content:"\f519"}.fa-broom:before{content:"\f51a"}.fa-brush:before{content:"\f55d"}.fa-btc:before{content:"\f15a"}.fa-bug:before{content:"\f188"}.fa-building:before{content:"\f1ad"}.fa-bullhorn:before{content:"\f0a1"}.fa-bullseye:before{content:"\f140"}.fa-burn:before{content:"\f46a"}.fa-buromobelexperte:before{content:"\f37f"}.fa-bus:before{content:"\f207"}.fa-bus-alt:before{content:"\f55e"}.fa-business-time:before{content:"\f64a"}.fa-buysellads:before{content:"\f20d"}.fa-calculator:before{content:"\f1ec"}.fa-calendar:before{content:"\f133"}.fa-calendar-alt:before{content:"\f073"}.fa-calendar-check:before{content:"\f274"}.fa-calendar-day:before{content:"\f783"}.fa-calendar-minus:before{content:"\f272"}.fa-calendar-plus:before{content:"\f271"}.fa-calendar-times:before{content:"\f273"}.fa-calendar-week:before{content:"\f784"}.fa-camera:before{content:"\f030"}.fa-camera-retro:before{content:"\f083"}.fa-campground:before{content:"\f6bb"}.fa-canadian-maple-leaf:before{content:"\f785"}.fa-candy-cane:before{content:"\f786"}.fa-cannabis:before{content:"\f55f"}.fa-capsules:before{content:"\f46b"}.fa-car:before{content:"\f1b9"}.fa-car-alt:before{content:"\f5de"}.fa-car-battery:before{content:"\f5df"}.fa-car-crash:before{content:"\f5e1"}.fa-car-side:before{content:"\f5e4"}.fa-caret-down:before{content:"\f0d7"}.fa-caret-left:before{content:"\f0d9"}.fa-caret-right:before{content:"\f0da"}.fa-caret-square-down:before{content:"\f150"}.fa-caret-square-left:before{content:"\f191"}.fa-caret-square-right:before{content:"\f152"}.fa-caret-square-up:before{content:"\f151"}.fa-caret-up:before{content:"\f0d8"}.fa-carrot:before{content:"\f787"}.fa-cart-arrow-down:before{content:"\f218"}.fa-cart-plus:before{content:"\f217"}.fa-cash-register:before{content:"\f788"}.fa-cat:before{content:"\f6be"}.fa-cc-amazon-pay:before{content:"\f42d"}.fa-cc-amex:before{content:"\f1f3"}.fa-cc-apple-pay:before{content:"\f416"}.fa-cc-diners-club:before{content:"\f24c"}.fa-cc-discover:before{content:"\f1f2"}.fa-cc-jcb:before{content:"\f24b"}.fa-cc-mastercard:before{content:"\f1f1"}.fa-cc-paypal:before{content:"\f1f4"}.fa-cc-stripe:before{content:"\f1f5"}.fa-cc-visa:before{content:"\f1f0"}.fa-centercode:before{content:"\f380"}.fa-centos:before{content:"\f789"}.fa-certificate:before{content:"\f0a3"}.fa-chair:before{content:"\f6c0"}.fa-chalkboard:before{content:"\f51b"}.fa-chalkboard-teacher:before{content:"\f51c"}.fa-charging-station:before{content:"\f5e7"}.fa-chart-area:before{content:"\f1fe"}.fa-chart-bar:before{content:"\f080"}.fa-chart-line:before{content:"\f201"}.fa-chart-pie:before{content:"\f200"}.fa-check:before{content:"\f00c"}.fa-check-circle:before{content:"\f058"}.fa-check-double:before{content:"\f560"}.fa-check-square:before{content:"\f14a"}.fa-chess:before{content:"\f439"}.fa-chess-bishop:before{content:"\f43a"}.fa-chess-board:before{content:"\f43c"}.fa-chess-king:before{content:"\f43f"}.fa-chess-knight:before{content:"\f441"}.fa-chess-pawn:before{content:"\f443"}.fa-chess-queen:before{content:"\f445"}.fa-chess-rook:before{content:"\f447"}.fa-chevron-circle-down:before{content:"\f13a"}.fa-chevron-circle-left:before{content:"\f137"}.fa-chevron-circle-right:before{content:"\f138"}.fa-chevron-circle-up:before{content:"\f139"}.fa-chevron-down:before{content:"\f078"}.fa-chevron-left:before{content:"\f053"}.fa-chevron-right:before{content:"\f054"}.fa-chevron-up:before{content:"\f077"}.fa-child:before{content:"\f1ae"}.fa-chrome:before{content:"\f268"}.fa-church:before{content:"\f51d"}.fa-circle:before{content:"\f111"}.fa-circle-notch:before{content:"\f1ce"}.fa-city:before{content:"\f64f"}.fa-clipboard:before{content:"\f328"}.fa-clipboard-check:before{content:"\f46c"}.fa-clipboard-list:before{content:"\f46d"}.fa-clock:before{content:"\f017"}.fa-clone:before{content:"\f24d"}.fa-closed-captioning:before{content:"\f20a"}.fa-cloud:before{content:"\f0c2"}.fa-cloud-download-alt:before{content:"\f381"}.fa-cloud-meatball:before{content:"\f73b"}.fa-cloud-moon:before{content:"\f6c3"}.fa-cloud-moon-rain:before{content:"\f73c"}.fa-cloud-rain:before{content:"\f73d"}.fa-cloud-showers-heavy:before{content:"\f740"}.fa-cloud-sun:before{content:"\f6c4"}.fa-cloud-sun-rain:before{content:"\f743"}.fa-cloud-upload-alt:before{content:"\f382"}.fa-cloudscale:before{content:"\f383"}.fa-cloudsmith:before{content:"\f384"}.fa-cloudversify:before{content:"\f385"}.fa-cocktail:before{content:"\f561"}.fa-code:before{content:"\f121"}.fa-code-branch:before{content:"\f126"}.fa-codepen:before{content:"\f1cb"}.fa-codiepie:before{content:"\f284"}.fa-coffee:before{content:"\f0f4"}.fa-cog:before{content:"\f013"}.fa-cogs:before{content:"\f085"}.fa-coins:before{content:"\f51e"}.fa-columns:before{content:"\f0db"}.fa-comment:before{content:"\f075"}.fa-comment-alt:before{content:"\f27a"}.fa-comment-dollar:before{content:"\f651"}.fa-comment-dots:before{content:"\f4ad"}.fa-comment-slash:before{content:"\f4b3"}.fa-comments:before{content:"\f086"}.fa-comments-dollar:before{content:"\f653"}.fa-compact-disc:before{content:"\f51f"}.fa-compass:before{content:"\f14e"}.fa-compress:before{content:"\f066"}.fa-compress-arrows-alt:before{content:"\f78c"}.fa-concierge-bell:before{content:"\f562"}.fa-confluence:before{content:"\f78d"}.fa-connectdevelop:before{content:"\f20e"}.fa-contao:before{content:"\f26d"}.fa-cookie:before{content:"\f563"}.fa-cookie-bite:before{content:"\f564"}.fa-copy:before{content:"\f0c5"}.fa-copyright:before{content:"\f1f9"}.fa-couch:before{content:"\f4b8"}.fa-cpanel:before{content:"\f388"}.fa-creative-commons:before{content:"\f25e"}.fa-creative-commons-by:before{content:"\f4e7"}.fa-creative-commons-nc:before{content:"\f4e8"}.fa-creative-commons-nc-eu:before{content:"\f4e9"}.fa-creative-commons-nc-jp:before{content:"\f4ea"}.fa-creative-commons-nd:before{content:"\f4eb"}.fa-creative-commons-pd:before{content:"\f4ec"}.fa-creative-commons-pd-alt:before{content:"\f4ed"}.fa-creative-commons-remix:before{content:"\f4ee"}.fa-creative-commons-sa:before{content:"\f4ef"}.fa-creative-commons-sampling:before{content:"\f4f0"}.fa-creative-commons-sampling-plus:before{content:"\f4f1"}.fa-creative-commons-share:before{content:"\f4f2"}.fa-creative-commons-zero:before{content:"\f4f3"}.fa-credit-card:before{content:"\f09d"}.fa-critical-role:before{content:"\f6c9"}.fa-crop:before{content:"\f125"}.fa-crop-alt:before{content:"\f565"}.fa-cross:before{content:"\f654"}.fa-crosshairs:before{content:"\f05b"}.fa-crow:before{content:"\f520"}.fa-crown:before{content:"\f521"}.fa-css3:before{content:"\f13c"}.fa-css3-alt:before{content:"\f38b"}.fa-cube:before{content:"\f1b2"}.fa-cubes:before{content:"\f1b3"}.fa-cut:before{content:"\f0c4"}.fa-cuttlefish:before{content:"\f38c"}.fa-d-and-d:before{content:"\f38d"}.fa-d-and-d-beyond:before{content:"\f6ca"}.fa-dashcube:before{content:"\f210"}.fa-database:before{content:"\f1c0"}.fa-deaf:before{content:"\f2a4"}.fa-delicious:before{content:"\f1a5"}.fa-democrat:before{content:"\f747"}.fa-deploydog:before{content:"\f38e"}.fa-deskpro:before{content:"\f38f"}.fa-desktop:before{content:"\f108"}.fa-dev:before{content:"\f6cc"}.fa-deviantart:before{content:"\f1bd"}.fa-dharmachakra:before{content:"\f655"}.fa-dhl:before{content:"\f790"}.fa-diagnoses:before{content:"\f470"}.fa-diaspora:before{content:"\f791"}.fa-dice:before{content:"\f522"}.fa-dice-d20:before{content:"\f6cf"}.fa-dice-d6:before{content:"\f6d1"}.fa-dice-five:before{content:"\f523"}.fa-dice-four:before{content:"\f524"}.fa-dice-one:before{content:"\f525"}.fa-dice-six:before{content:"\f526"}.fa-dice-three:before{content:"\f527"}.fa-dice-two:before{content:"\f528"}.fa-digg:before{content:"\f1a6"}.fa-digital-ocean:before{content:"\f391"}.fa-digital-tachograph:before{content:"\f566"}.fa-directions:before{content:"\f5eb"}.fa-discord:before{content:"\f392"}.fa-discourse:before{content:"\f393"}.fa-divide:before{content:"\f529"}.fa-dizzy:before{content:"\f567"}.fa-dna:before{content:"\f471"}.fa-dochub:before{content:"\f394"}.fa-docker:before{content:"\f395"}.fa-dog:before{content:"\f6d3"}.fa-dollar-sign:before{content:"\f155"}.fa-dolly:before{content:"\f472"}.fa-dolly-flatbed:before{content:"\f474"}.fa-donate:before{content:"\f4b9"}.fa-door-closed:before{content:"\f52a"}.fa-door-open:before{content:"\f52b"}.fa-dot-circle:before{content:"\f192"}.fa-dove:before{content:"\f4ba"}.fa-download:before{content:"\f019"}.fa-draft2digital:before{content:"\f396"}.fa-drafting-compass:before{content:"\f568"}.fa-dragon:before{content:"\f6d5"}.fa-draw-polygon:before{content:"\f5ee"}.fa-dribbble:before{content:"\f17d"}.fa-dribbble-square:before{content:"\f397"}.fa-dropbox:before{content:"\f16b"}.fa-drum:before{content:"\f569"}.fa-drum-steelpan:before{content:"\f56a"}.fa-drumstick-bite:before{content:"\f6d7"}.fa-drupal:before{content:"\f1a9"}.fa-dumbbell:before{content:"\f44b"}.fa-dumpster:before{content:"\f793"}.fa-dumpster-fire:before{content:"\f794"}.fa-dungeon:before{content:"\f6d9"}.fa-dyalog:before{content:"\f399"}.fa-earlybirds:before{content:"\f39a"}.fa-ebay:before{content:"\f4f4"}.fa-edge:before{content:"\f282"}.fa-edit:before{content:"\f044"}.fa-eject:before{content:"\f052"}.fa-elementor:before{content:"\f430"}.fa-ellipsis-h:before{content:"\f141"}.fa-ellipsis-v:before{content:"\f142"}.fa-ello:before{content:"\f5f1"}.fa-ember:before{content:"\f423"}.fa-empire:before{content:"\f1d1"}.fa-envelope:before{content:"\f0e0"}.fa-envelope-open:before{content:"\f2b6"}.fa-envelope-open-text:before{content:"\f658"}.fa-envelope-square:before{content:"\f199"}.fa-envira:before{content:"\f299"}.fa-equals:before{content:"\f52c"}.fa-eraser:before{content:"\f12d"}.fa-erlang:before{content:"\f39d"}.fa-ethereum:before{content:"\f42e"}.fa-ethernet:before{content:"\f796"}.fa-etsy:before{content:"\f2d7"}.fa-euro-sign:before{content:"\f153"}.fa-exchange-alt:before{content:"\f362"}.fa-exclamation:before{content:"\f12a"}.fa-exclamation-circle:before{content:"\f06a"}.fa-exclamation-triangle:before{content:"\f071"}.fa-expand:before{content:"\f065"}.fa-expand-arrows-alt:before{content:"\f31e"}.fa-expeditedssl:before{content:"\f23e"}.fa-external-link-alt:before{content:"\f35d"}.fa-external-link-square-alt:before{content:"\f360"}.fa-eye:before{content:"\f06e"}.fa-eye-dropper:before{content:"\f1fb"}.fa-eye-slash:before{content:"\f070"}.fa-facebook:before{content:"\f09a"}.fa-facebook-f:before{content:"\f39e"}.fa-facebook-messenger:before{content:"\f39f"}.fa-facebook-square:before{content:"\f082"}.fa-fantasy-flight-games:before{content:"\f6dc"}.fa-fast-backward:before{content:"\f049"}.fa-fast-forward:before{content:"\f050"}.fa-fax:before{content:"\f1ac"}.fa-feather:before{content:"\f52d"}.fa-feather-alt:before{content:"\f56b"}.fa-fedex:before{content:"\f797"}.fa-fedora:before{content:"\f798"}.fa-female:before{content:"\f182"}.fa-fighter-jet:before{content:"\f0fb"}.fa-figma:before{content:"\f799"}.fa-file:before{content:"\f15b"}.fa-file-alt:before{content:"\f15c"}.fa-file-archive:before{content:"\f1c6"}.fa-file-audio:before{content:"\f1c7"}.fa-file-code:before{content:"\f1c9"}.fa-file-contract:before{content:"\f56c"}.fa-file-csv:before{content:"\f6dd"}.fa-file-download:before{content:"\f56d"}.fa-file-excel:before{content:"\f1c3"}.fa-file-export:before{content:"\f56e"}.fa-file-image:before{content:"\f1c5"}.fa-file-import:before{content:"\f56f"}.fa-file-invoice:before{content:"\f570"}.fa-file-invoice-dollar:before{content:"\f571"}.fa-file-medical:before{content:"\f477"}.fa-file-medical-alt:before{content:"\f478"}.fa-file-pdf:before{content:"\f1c1"}.fa-file-powerpoint:before{content:"\f1c4"}.fa-file-prescription:before{content:"\f572"}.fa-file-signature:before{content:"\f573"}.fa-file-upload:before{content:"\f574"}.fa-file-video:before{content:"\f1c8"}.fa-file-word:before{content:"\f1c2"}.fa-fill:before{content:"\f575"}.fa-fill-drip:before{content:"\f576"}.fa-film:before{content:"\f008"}.fa-filter:before{content:"\f0b0"}.fa-fingerprint:before{content:"\f577"}.fa-fire:before{content:"\f06d"}.fa-fire-alt:before{content:"\f7e4"}.fa-fire-extinguisher:before{content:"\f134"}.fa-firefox:before{content:"\f269"}.fa-first-aid:before{content:"\f479"}.fa-first-order:before{content:"\f2b0"}.fa-first-order-alt:before{content:"\f50a"}.fa-firstdraft:before{content:"\f3a1"}.fa-fish:before{content:"\f578"}.fa-fist-raised:before{content:"\f6de"}.fa-flag:before{content:"\f024"}.fa-flag-checkered:before{content:"\f11e"}.fa-flag-usa:before{content:"\f74d"}.fa-flask:before{content:"\f0c3"}.fa-flickr:before{content:"\f16e"}.fa-flipboard:before{content:"\f44d"}.fa-flushed:before{content:"\f579"}.fa-fly:before{content:"\f417"}.fa-folder:before{content:"\f07b"}.fa-folder-minus:before{content:"\f65d"}.fa-folder-open:before{content:"\f07c"}.fa-folder-plus:before{content:"\f65e"}.fa-font:before{content:"\f031"}.fa-font-awesome:before{content:"\f2b4"}.fa-font-awesome-alt:before{content:"\f35c"}.fa-font-awesome-flag:before{content:"\f425"}.fa-font-awesome-logo-full:before{content:"\f4e6"}.fa-fonticons:before{content:"\f280"}.fa-fonticons-fi:before{content:"\f3a2"}.fa-football-ball:before{content:"\f44e"}.fa-fort-awesome:before{content:"\f286"}.fa-fort-awesome-alt:before{content:"\f3a3"}.fa-forumbee:before{content:"\f211"}.fa-forward:before{content:"\f04e"}.fa-foursquare:before{content:"\f180"}.fa-free-code-camp:before{content:"\f2c5"}.fa-freebsd:before{content:"\f3a4"}.fa-frog:before{content:"\f52e"}.fa-frown:before{content:"\f119"}.fa-frown-open:before{content:"\f57a"}.fa-fulcrum:before{content:"\f50b"}.fa-funnel-dollar:before{content:"\f662"}.fa-futbol:before{content:"\f1e3"}.fa-galactic-republic:before{content:"\f50c"}.fa-galactic-senate:before{content:"\f50d"}.fa-gamepad:before{content:"\f11b"}.fa-gas-pump:before{content:"\f52f"}.fa-gavel:before{content:"\f0e3"}.fa-gem:before{content:"\f3a5"}.fa-genderless:before{content:"\f22d"}.fa-get-pocket:before{content:"\f265"}.fa-gg:before{content:"\f260"}.fa-gg-circle:before{content:"\f261"}.fa-ghost:before{content:"\f6e2"}.fa-gift:before{content:"\f06b"}.fa-gifts:before{content:"\f79c"}.fa-git:before{content:"\f1d3"}.fa-git-square:before{content:"\f1d2"}.fa-github:before{content:"\f09b"}.fa-github-alt:before{content:"\f113"}.fa-github-square:before{content:"\f092"}.fa-gitkraken:before{content:"\f3a6"}.fa-gitlab:before{content:"\f296"}.fa-gitter:before{content:"\f426"}.fa-glass-cheers:before{content:"\f79f"}.fa-glass-martini:before{content:"\f000"}.fa-glass-martini-alt:before{content:"\f57b"}.fa-glass-whiskey:before{content:"\f7a0"}.fa-glasses:before{content:"\f530"}.fa-glide:before{content:"\f2a5"}.fa-glide-g:before{content:"\f2a6"}.fa-globe:before{content:"\f0ac"}.fa-globe-africa:before{content:"\f57c"}.fa-globe-americas:before{content:"\f57d"}.fa-globe-asia:before{content:"\f57e"}.fa-globe-europe:before{content:"\f7a2"}.fa-gofore:before{content:"\f3a7"}.fa-golf-ball:before{content:"\f450"}.fa-goodreads:before{content:"\f3a8"}.fa-goodreads-g:before{content:"\f3a9"}.fa-google:before{content:"\f1a0"}.fa-google-drive:before{content:"\f3aa"}.fa-google-play:before{content:"\f3ab"}.fa-google-plus:before{content:"\f2b3"}.fa-google-plus-g:before{content:"\f0d5"}.fa-google-plus-square:before{content:"\f0d4"}.fa-google-wallet:before{content:"\f1ee"}.fa-gopuram:before{content:"\f664"}.fa-graduation-cap:before{content:"\f19d"}.fa-gratipay:before{content:"\f184"}.fa-grav:before{content:"\f2d6"}.fa-greater-than:before{content:"\f531"}.fa-greater-than-equal:before{content:"\f532"}.fa-grimace:before{content:"\f57f"}.fa-grin:before{content:"\f580"}.fa-grin-alt:before{content:"\f581"}.fa-grin-beam:before{content:"\f582"}.fa-grin-beam-sweat:before{content:"\f583"}.fa-grin-hearts:before{content:"\f584"}.fa-grin-squint:before{content:"\f585"}.fa-grin-squint-tears:before{content:"\f586"}.fa-grin-stars:before{content:"\f587"}.fa-grin-tears:before{content:"\f588"}.fa-grin-tongue:before{content:"\f589"}.fa-grin-tongue-squint:before{content:"\f58a"}.fa-grin-tongue-wink:before{content:"\f58b"}.fa-grin-wink:before{content:"\f58c"}.fa-grip-horizontal:before{content:"\f58d"}.fa-grip-lines:before{content:"\f7a4"}.fa-grip-lines-vertical:before{content:"\f7a5"}.fa-grip-vertical:before{content:"\f58e"}.fa-gripfire:before{content:"\f3ac"}.fa-grunt:before{content:"\f3ad"}.fa-guitar:before{content:"\f7a6"}.fa-gulp:before{content:"\f3ae"}.fa-h-square:before{content:"\f0fd"}.fa-hacker-news:before{content:"\f1d4"}.fa-hacker-news-square:before{content:"\f3af"}.fa-hackerrank:before{content:"\f5f7"}.fa-hammer:before{content:"\f6e3"}.fa-hamsa:before{content:"\f665"}.fa-hand-holding:before{content:"\f4bd"}.fa-hand-holding-heart:before{content:"\f4be"}.fa-hand-holding-usd:before{content:"\f4c0"}.fa-hand-lizard:before{content:"\f258"}.fa-hand-paper:before{content:"\f256"}.fa-hand-peace:before{content:"\f25b"}.fa-hand-point-down:before{content:"\f0a7"}.fa-hand-point-left:before{content:"\f0a5"}.fa-hand-point-right:before{content:"\f0a4"}.fa-hand-point-up:before{content:"\f0a6"}.fa-hand-pointer:before{content:"\f25a"}.fa-hand-rock:before{content:"\f255"}.fa-hand-scissors:before{content:"\f257"}.fa-hand-spock:before{content:"\f259"}.fa-hands:before{content:"\f4c2"}.fa-hands-helping:before{content:"\f4c4"}.fa-handshake:before{content:"\f2b5"}.fa-hanukiah:before{content:"\f6e6"}.fa-hashtag:before{content:"\f292"}.fa-hat-wizard:before{content:"\f6e8"}.fa-haykal:before{content:"\f666"}.fa-hdd:before{content:"\f0a0"}.fa-heading:before{content:"\f1dc"}.fa-headphones:before{content:"\f025"}.fa-headphones-alt:before{content:"\f58f"}.fa-headset:before{content:"\f590"}.fa-heart:before{content:"\f004"}.fa-heart-broken:before{content:"\f7a9"}.fa-heartbeat:before{content:"\f21e"}.fa-helicopter:before{content:"\f533"}.fa-highlighter:before{content:"\f591"}.fa-hiking:before{content:"\f6ec"}.fa-hippo:before{content:"\f6ed"}.fa-hips:before{content:"\f452"}.fa-hire-a-helper:before{content:"\f3b0"}.fa-history:before{content:"\f1da"}.fa-hockey-puck:before{content:"\f453"}.fa-holly-berry:before{content:"\f7aa"}.fa-home:before{content:"\f015"}.fa-hooli:before{content:"\f427"}.fa-hornbill:before{content:"\f592"}.fa-horse:before{content:"\f6f0"}.fa-horse-head:before{content:"\f7ab"}.fa-hospital:before{content:"\f0f8"}.fa-hospital-alt:before{content:"\f47d"}.fa-hospital-symbol:before{content:"\f47e"}.fa-hot-tub:before{content:"\f593"}.fa-hotel:before{content:"\f594"}.fa-hotjar:before{content:"\f3b1"}.fa-hourglass:before{content:"\f254"}.fa-hourglass-end:before{content:"\f253"}.fa-hourglass-half:before{content:"\f252"}.fa-hourglass-start:before{content:"\f251"}.fa-house-damage:before{content:"\f6f1"}.fa-houzz:before{content:"\f27c"}.fa-hryvnia:before{content:"\f6f2"}.fa-html5:before{content:"\f13b"}.fa-hubspot:before{content:"\f3b2"}.fa-i-cursor:before{content:"\f246"}.fa-icicles:before{content:"\f7ad"}.fa-id-badge:before{content:"\f2c1"}.fa-id-card:before{content:"\f2c2"}.fa-id-card-alt:before{content:"\f47f"}.fa-igloo:before{content:"\f7ae"}.fa-image:before{content:"\f03e"}.fa-images:before{content:"\f302"}.fa-imdb:before{content:"\f2d8"}.fa-inbox:before{content:"\f01c"}.fa-indent:before{content:"\f03c"}.fa-industry:before{content:"\f275"}.fa-infinity:before{content:"\f534"}.fa-info:before{content:"\f129"}.fa-info-circle:before{content:"\f05a"}.fa-instagram:before{content:"\f16d"}.fa-intercom:before{content:"\f7af"}.fa-internet-explorer:before{content:"\f26b"}.fa-invision:before{content:"\f7b0"}.fa-ioxhost:before{content:"\f208"}.fa-italic:before{content:"\f033"}.fa-itunes:before{content:"\f3b4"}.fa-itunes-note:before{content:"\f3b5"}.fa-java:before{content:"\f4e4"}.fa-jedi:before{content:"\f669"}.fa-jedi-order:before{content:"\f50e"}.fa-jenkins:before{content:"\f3b6"}.fa-jira:before{content:"\f7b1"}.fa-joget:before{content:"\f3b7"}.fa-joint:before{content:"\f595"}.fa-joomla:before{content:"\f1aa"}.fa-journal-whills:before{content:"\f66a"}.fa-js:before{content:"\f3b8"}.fa-js-square:before{content:"\f3b9"}.fa-jsfiddle:before{content:"\f1cc"}.fa-kaaba:before{content:"\f66b"}.fa-kaggle:before{content:"\f5fa"}.fa-key:before{content:"\f084"}.fa-keybase:before{content:"\f4f5"}.fa-keyboard:before{content:"\f11c"}.fa-keycdn:before{content:"\f3ba"}.fa-khanda:before{content:"\f66d"}.fa-kickstarter:before{content:"\f3bb"}.fa-kickstarter-k:before{content:"\f3bc"}.fa-kiss:before{content:"\f596"}.fa-kiss-beam:before{content:"\f597"}.fa-kiss-wink-heart:before{content:"\f598"}.fa-kiwi-bird:before{content:"\f535"}.fa-korvue:before{content:"\f42f"}.fa-landmark:before{content:"\f66f"}.fa-language:before{content:"\f1ab"}.fa-laptop:before{content:"\f109"}.fa-laptop-code:before{content:"\f5fc"}.fa-laravel:before{content:"\f3bd"}.fa-lastfm:before{content:"\f202"}.fa-lastfm-square:before{content:"\f203"}.fa-laugh:before{content:"\f599"}.fa-laugh-beam:before{content:"\f59a"}.fa-laugh-squint:before{content:"\f59b"}.fa-laugh-wink:before{content:"\f59c"}.fa-layer-group:before{content:"\f5fd"}.fa-leaf:before{content:"\f06c"}.fa-leanpub:before{content:"\f212"}.fa-lemon:before{content:"\f094"}.fa-less:before{content:"\f41d"}.fa-less-than:before{content:"\f536"}.fa-less-than-equal:before{content:"\f537"}.fa-level-down-alt:before{content:"\f3be"}.fa-level-up-alt:before{content:"\f3bf"}.fa-life-ring:before{content:"\f1cd"}.fa-lightbulb:before{content:"\f0eb"}.fa-line:before{content:"\f3c0"}.fa-link:before{content:"\f0c1"}.fa-linkedin:before{content:"\f08c"}.fa-linkedin-in:before{content:"\f0e1"}.fa-linode:before{content:"\f2b8"}.fa-linux:before{content:"\f17c"}.fa-lira-sign:before{content:"\f195"}.fa-list:before{content:"\f03a"}.fa-list-alt:before{content:"\f022"}.fa-list-ol:before{content:"\f0cb"}.fa-list-ul:before{content:"\f0ca"}.fa-location-arrow:before{content:"\f124"}.fa-lock:before{content:"\f023"}.fa-lock-open:before{content:"\f3c1"}.fa-long-arrow-alt-down:before{content:"\f309"}.fa-long-arrow-alt-left:before{content:"\f30a"}.fa-long-arrow-alt-right:before{content:"\f30b"}.fa-long-arrow-alt-up:before{content:"\f30c"}.fa-low-vision:before{content:"\f2a8"}.fa-luggage-cart:before{content:"\f59d"}.fa-lyft:before{content:"\f3c3"}.fa-magento:before{content:"\f3c4"}.fa-magic:before{content:"\f0d0"}.fa-magnet:before{content:"\f076"}.fa-mail-bulk:before{content:"\f674"}.fa-mailchimp:before{content:"\f59e"}.fa-male:before{content:"\f183"}.fa-mandalorian:before{content:"\f50f"}.fa-map:before{content:"\f279"}.fa-map-marked:before{content:"\f59f"}.fa-map-marked-alt:before{content:"\f5a0"}.fa-map-marker:before{content:"\f041"}.fa-map-marker-alt:before{content:"\f3c5"}.fa-map-pin:before{content:"\f276"}.fa-map-signs:before{content:"\f277"}.fa-markdown:before{content:"\f60f"}.fa-marker:before{content:"\f5a1"}.fa-mars:before{content:"\f222"}.fa-mars-double:before{content:"\f227"}.fa-mars-stroke:before{content:"\f229"}.fa-mars-stroke-h:before{content:"\f22b"}.fa-mars-stroke-v:before{content:"\f22a"}.fa-mask:before{content:"\f6fa"}.fa-mastodon:before{content:"\f4f6"}.fa-maxcdn:before{content:"\f136"}.fa-medal:before{content:"\f5a2"}.fa-medapps:before{content:"\f3c6"}.fa-medium:before{content:"\f23a"}.fa-medium-m:before{content:"\f3c7"}.fa-medkit:before{content:"\f0fa"}.fa-medrt:before{content:"\f3c8"}.fa-meetup:before{content:"\f2e0"}.fa-megaport:before{content:"\f5a3"}.fa-meh:before{content:"\f11a"}.fa-meh-blank:before{content:"\f5a4"}.fa-meh-rolling-eyes:before{content:"\f5a5"}.fa-memory:before{content:"\f538"}.fa-mendeley:before{content:"\f7b3"}.fa-menorah:before{content:"\f676"}.fa-mercury:before{content:"\f223"}.fa-meteor:before{content:"\f753"}.fa-microchip:before{content:"\f2db"}.fa-microphone:before{content:"\f130"}.fa-microphone-alt:before{content:"\f3c9"}.fa-microphone-alt-slash:before{content:"\f539"}.fa-microphone-slash:before{content:"\f131"}.fa-microscope:before{content:"\f610"}.fa-microsoft:before{content:"\f3ca"}.fa-minus:before{content:"\f068"}.fa-minus-circle:before{content:"\f056"}.fa-minus-square:before{content:"\f146"}.fa-mitten:before{content:"\f7b5"}.fa-mix:before{content:"\f3cb"}.fa-mixcloud:before{content:"\f289"}.fa-mizuni:before{content:"\f3cc"}.fa-mobile:before{content:"\f10b"}.fa-mobile-alt:before{content:"\f3cd"}.fa-modx:before{content:"\f285"}.fa-monero:before{content:"\f3d0"}.fa-money-bill:before{content:"\f0d6"}.fa-money-bill-alt:before{content:"\f3d1"}.fa-money-bill-wave:before{content:"\f53a"}.fa-money-bill-wave-alt:before{content:"\f53b"}.fa-money-check:before{content:"\f53c"}.fa-money-check-alt:before{content:"\f53d"}.fa-monument:before{content:"\f5a6"}.fa-moon:before{content:"\f186"}.fa-mortar-pestle:before{content:"\f5a7"}.fa-mosque:before{content:"\f678"}.fa-motorcycle:before{content:"\f21c"}.fa-mountain:before{content:"\f6fc"}.fa-mouse-pointer:before{content:"\f245"}.fa-mug-hot:before{content:"\f7b6"}.fa-music:before{content:"\f001"}.fa-napster:before{content:"\f3d2"}.fa-neos:before{content:"\f612"}.fa-network-wired:before{content:"\f6ff"}.fa-neuter:before{content:"\f22c"}.fa-newspaper:before{content:"\f1ea"}.fa-nimblr:before{content:"\f5a8"}.fa-nintendo-switch:before{content:"\f418"}.fa-node:before{content:"\f419"}.fa-node-js:before{content:"\f3d3"}.fa-not-equal:before{content:"\f53e"}.fa-notes-medical:before{content:"\f481"}.fa-npm:before{content:"\f3d4"}.fa-ns8:before{content:"\f3d5"}.fa-nutritionix:before{content:"\f3d6"}.fa-object-group:before{content:"\f247"}.fa-object-ungroup:before{content:"\f248"}.fa-odnoklassniki:before{content:"\f263"}.fa-odnoklassniki-square:before{content:"\f264"}.fa-oil-can:before{content:"\f613"}.fa-old-republic:before{content:"\f510"}.fa-om:before{content:"\f679"}.fa-opencart:before{content:"\f23d"}.fa-openid:before{content:"\f19b"}.fa-opera:before{content:"\f26a"}.fa-optin-monster:before{content:"\f23c"}.fa-osi:before{content:"\f41a"}.fa-otter:before{content:"\f700"}.fa-outdent:before{content:"\f03b"}.fa-page4:before{content:"\f3d7"}.fa-pagelines:before{content:"\f18c"}.fa-paint-brush:before{content:"\f1fc"}.fa-paint-roller:before{content:"\f5aa"}.fa-palette:before{content:"\f53f"}.fa-palfed:before{content:"\f3d8"}.fa-pallet:before{content:"\f482"}.fa-paper-plane:before{content:"\f1d8"}.fa-paperclip:before{content:"\f0c6"}.fa-parachute-box:before{content:"\f4cd"}.fa-paragraph:before{content:"\f1dd"}.fa-parking:before{content:"\f540"}.fa-passport:before{content:"\f5ab"}.fa-pastafarianism:before{content:"\f67b"}.fa-paste:before{content:"\f0ea"}.fa-patreon:before{content:"\f3d9"}.fa-pause:before{content:"\f04c"}.fa-pause-circle:before{content:"\f28b"}.fa-paw:before{content:"\f1b0"}.fa-paypal:before{content:"\f1ed"}.fa-peace:before{content:"\f67c"}.fa-pen:before{content:"\f304"}.fa-pen-alt:before{content:"\f305"}.fa-pen-fancy:before{content:"\f5ac"}.fa-pen-nib:before{content:"\f5ad"}.fa-pen-square:before{content:"\f14b"}.fa-pencil-alt:before{content:"\f303"}.fa-pencil-ruler:before{content:"\f5ae"}.fa-penny-arcade:before{content:"\f704"}.fa-people-carry:before{content:"\f4ce"}.fa-percent:before{content:"\f295"}.fa-percentage:before{content:"\f541"}.fa-periscope:before{content:"\f3da"}.fa-person-booth:before{content:"\f756"}.fa-phabricator:before{content:"\f3db"}.fa-phoenix-framework:before{content:"\f3dc"}.fa-phoenix-squadron:before{content:"\f511"}.fa-phone:before{content:"\f095"}.fa-phone-slash:before{content:"\f3dd"}.fa-phone-square:before{content:"\f098"}.fa-phone-volume:before{content:"\f2a0"}.fa-php:before{content:"\f457"}.fa-pied-piper:before{content:"\f2ae"}.fa-pied-piper-alt:before{content:"\f1a8"}.fa-pied-piper-hat:before{content:"\f4e5"}.fa-pied-piper-pp:before{content:"\f1a7"}.fa-piggy-bank:before{content:"\f4d3"}.fa-pills:before{content:"\f484"}.fa-pinterest:before{content:"\f0d2"}.fa-pinterest-p:before{content:"\f231"}.fa-pinterest-square:before{content:"\f0d3"}.fa-place-of-worship:before{content:"\f67f"}.fa-plane:before{content:"\f072"}.fa-plane-arrival:before{content:"\f5af"}.fa-plane-departure:before{content:"\f5b0"}.fa-play:before{content:"\f04b"}.fa-play-circle:before{content:"\f144"}.fa-playstation:before{content:"\f3df"}.fa-plug:before{content:"\f1e6"}.fa-plus:before{content:"\f067"}.fa-plus-circle:before{content:"\f055"}.fa-plus-square:before{content:"\f0fe"}.fa-podcast:before{content:"\f2ce"}.fa-poll:before{content:"\f681"}.fa-poll-h:before{content:"\f682"}.fa-poo:before{content:"\f2fe"}.fa-poo-storm:before{content:"\f75a"}.fa-poop:before{content:"\f619"}.fa-portrait:before{content:"\f3e0"}.fa-pound-sign:before{content:"\f154"}.fa-power-off:before{content:"\f011"}.fa-pray:before{content:"\f683"}.fa-praying-hands:before{content:"\f684"}.fa-prescription:before{content:"\f5b1"}.fa-prescription-bottle:before{content:"\f485"}.fa-prescription-bottle-alt:before{content:"\f486"}.fa-print:before{content:"\f02f"}.fa-procedures:before{content:"\f487"}.fa-product-hunt:before{content:"\f288"}.fa-project-diagram:before{content:"\f542"}.fa-pushed:before{content:"\f3e1"}.fa-puzzle-piece:before{content:"\f12e"}.fa-python:before{content:"\f3e2"}.fa-qq:before{content:"\f1d6"}.fa-qrcode:before{content:"\f029"}.fa-question:before{content:"\f128"}.fa-question-circle:before{content:"\f059"}.fa-quidditch:before{content:"\f458"}.fa-quinscape:before{content:"\f459"}.fa-quora:before{content:"\f2c4"}.fa-quote-left:before{content:"\f10d"}.fa-quote-right:before{content:"\f10e"}.fa-quran:before{content:"\f687"}.fa-r-project:before{content:"\f4f7"}.fa-radiation:before{content:"\f7b9"}.fa-radiation-alt:before{content:"\f7ba"}.fa-rainbow:before{content:"\f75b"}.fa-random:before{content:"\f074"}.fa-raspberry-pi:before{content:"\f7bb"}.fa-ravelry:before{content:"\f2d9"}.fa-react:before{content:"\f41b"}.fa-reacteurope:before{content:"\f75d"}.fa-readme:before{content:"\f4d5"}.fa-rebel:before{content:"\f1d0"}.fa-receipt:before{content:"\f543"}.fa-recycle:before{content:"\f1b8"}.fa-red-river:before{content:"\f3e3"}.fa-reddit:before{content:"\f1a1"}.fa-reddit-alien:before{content:"\f281"}.fa-reddit-square:before{content:"\f1a2"}.fa-redhat:before{content:"\f7bc"}.fa-redo:before{content:"\f01e"}.fa-redo-alt:before{content:"\f2f9"}.fa-registered:before{content:"\f25d"}.fa-renren:before{content:"\f18b"}.fa-reply:before{content:"\f3e5"}.fa-reply-all:before{content:"\f122"}.fa-replyd:before{content:"\f3e6"}.fa-republican:before{content:"\f75e"}.fa-researchgate:before{content:"\f4f8"}.fa-resolving:before{content:"\f3e7"}.fa-restroom:before{content:"\f7bd"}.fa-retweet:before{content:"\f079"}.fa-rev:before{content:"\f5b2"}.fa-ribbon:before{content:"\f4d6"}.fa-ring:before{content:"\f70b"}.fa-road:before{content:"\f018"}.fa-robot:before{content:"\f544"}.fa-rocket:before{content:"\f135"}.fa-rocketchat:before{content:"\f3e8"}.fa-rockrms:before{content:"\f3e9"}.fa-route:before{content:"\f4d7"}.fa-rss:before{content:"\f09e"}.fa-rss-square:before{content:"\f143"}.fa-ruble-sign:before{content:"\f158"}.fa-ruler:before{content:"\f545"}.fa-ruler-combined:before{content:"\f546"}.fa-ruler-horizontal:before{content:"\f547"}.fa-ruler-vertical:before{content:"\f548"}.fa-running:before{content:"\f70c"}.fa-rupee-sign:before{content:"\f156"}.fa-sad-cry:before{content:"\f5b3"}.fa-sad-tear:before{content:"\f5b4"}.fa-safari:before{content:"\f267"}.fa-sass:before{content:"\f41e"}.fa-satellite:before{content:"\f7bf"}.fa-satellite-dish:before{content:"\f7c0"}.fa-save:before{content:"\f0c7"}.fa-schlix:before{content:"\f3ea"}.fa-school:before{content:"\f549"}.fa-screwdriver:before{content:"\f54a"}.fa-scribd:before{content:"\f28a"}.fa-scroll:before{content:"\f70e"}.fa-sd-card:before{content:"\f7c2"}.fa-search:before{content:"\f002"}.fa-search-dollar:before{content:"\f688"}.fa-search-location:before{content:"\f689"}.fa-search-minus:before{content:"\f010"}.fa-search-plus:before{content:"\f00e"}.fa-searchengin:before{content:"\f3eb"}.fa-seedling:before{content:"\f4d8"}.fa-sellcast:before{content:"\f2da"}.fa-sellsy:before{content:"\f213"}.fa-server:before{content:"\f233"}.fa-servicestack:before{content:"\f3ec"}.fa-shapes:before{content:"\f61f"}.fa-share:before{content:"\f064"}.fa-share-alt:before{content:"\f1e0"}.fa-share-alt-square:before{content:"\f1e1"}.fa-share-square:before{content:"\f14d"}.fa-shekel-sign:before{content:"\f20b"}.fa-shield-alt:before{content:"\f3ed"}.fa-ship:before{content:"\f21a"}.fa-shipping-fast:before{content:"\f48b"}.fa-shirtsinbulk:before{content:"\f214"}.fa-shoe-prints:before{content:"\f54b"}.fa-shopping-bag:before{content:"\f290"}.fa-shopping-basket:before{content:"\f291"}.fa-shopping-cart:before{content:"\f07a"}.fa-shopware:before{content:"\f5b5"}.fa-shower:before{content:"\f2cc"}.fa-shuttle-van:before{content:"\f5b6"}.fa-sign:before{content:"\f4d9"}.fa-sign-in-alt:before{content:"\f2f6"}.fa-sign-language:before{content:"\f2a7"}.fa-sign-out-alt:before{content:"\f2f5"}.fa-signal:before{content:"\f012"}.fa-signature:before{content:"\f5b7"}.fa-sim-card:before{content:"\f7c4"}.fa-simplybuilt:before{content:"\f215"}.fa-sistrix:before{content:"\f3ee"}.fa-sitemap:before{content:"\f0e8"}.fa-sith:before{content:"\f512"}.fa-skating:before{content:"\f7c5"}.fa-sketch:before{content:"\f7c6"}.fa-skiing:before{content:"\f7c9"}.fa-skiing-nordic:before{content:"\f7ca"}.fa-skull:before{content:"\f54c"}.fa-skull-crossbones:before{content:"\f714"}.fa-skyatlas:before{content:"\f216"}.fa-skype:before{content:"\f17e"}.fa-slack:before{content:"\f198"}.fa-slack-hash:before{content:"\f3ef"}.fa-slash:before{content:"\f715"}.fa-sleigh:before{content:"\f7cc"}.fa-sliders-h:before{content:"\f1de"}.fa-slideshare:before{content:"\f1e7"}.fa-smile:before{content:"\f118"}.fa-smile-beam:before{content:"\f5b8"}.fa-smile-wink:before{content:"\f4da"}.fa-smog:before{content:"\f75f"}.fa-smoking:before{content:"\f48d"}.fa-smoking-ban:before{content:"\f54d"}.fa-sms:before{content:"\f7cd"}.fa-snapchat:before{content:"\f2ab"}.fa-snapchat-ghost:before{content:"\f2ac"}.fa-snapchat-square:before{content:"\f2ad"}.fa-snowboarding:before{content:"\f7ce"}.fa-snowflake:before{content:"\f2dc"}.fa-snowman:before{content:"\f7d0"}.fa-snowplow:before{content:"\f7d2"}.fa-socks:before{content:"\f696"}.fa-solar-panel:before{content:"\f5ba"}.fa-sort:before{content:"\f0dc"}.fa-sort-alpha-down:before{content:"\f15d"}.fa-sort-alpha-up:before{content:"\f15e"}.fa-sort-amount-down:before{content:"\f160"}.fa-sort-amount-up:before{content:"\f161"}.fa-sort-down:before{content:"\f0dd"}.fa-sort-numeric-down:before{content:"\f162"}.fa-sort-numeric-up:before{content:"\f163"}.fa-sort-up:before{content:"\f0de"}.fa-soundcloud:before{content:"\f1be"}.fa-sourcetree:before{content:"\f7d3"}.fa-spa:before{content:"\f5bb"}.fa-space-shuttle:before{content:"\f197"}.fa-speakap:before{content:"\f3f3"}.fa-spider:before{content:"\f717"}.fa-spinner:before{content:"\f110"}.fa-splotch:before{content:"\f5bc"}.fa-spotify:before{content:"\f1bc"}.fa-spray-can:before{content:"\f5bd"}.fa-square:before{content:"\f0c8"}.fa-square-full:before{content:"\f45c"}.fa-square-root-alt:before{content:"\f698"}.fa-squarespace:before{content:"\f5be"}.fa-stack-exchange:before{content:"\f18d"}.fa-stack-overflow:before{content:"\f16c"}.fa-stamp:before{content:"\f5bf"}.fa-star:before{content:"\f005"}.fa-star-and-crescent:before{content:"\f699"}.fa-star-half:before{content:"\f089"}.fa-star-half-alt:before{content:"\f5c0"}.fa-star-of-david:before{content:"\f69a"}.fa-star-of-life:before{content:"\f621"}.fa-staylinked:before{content:"\f3f5"}.fa-steam:before{content:"\f1b6"}.fa-steam-square:before{content:"\f1b7"}.fa-steam-symbol:before{content:"\f3f6"}.fa-step-backward:before{content:"\f048"}.fa-step-forward:before{content:"\f051"}.fa-stethoscope:before{content:"\f0f1"}.fa-sticker-mule:before{content:"\f3f7"}.fa-sticky-note:before{content:"\f249"}.fa-stop:before{content:"\f04d"}.fa-stop-circle:before{content:"\f28d"}.fa-stopwatch:before{content:"\f2f2"}.fa-store:before{content:"\f54e"}.fa-store-alt:before{content:"\f54f"}.fa-strava:before{content:"\f428"}.fa-stream:before{content:"\f550"}.fa-street-view:before{content:"\f21d"}.fa-strikethrough:before{content:"\f0cc"}.fa-stripe:before{content:"\f429"}.fa-stripe-s:before{content:"\f42a"}.fa-stroopwafel:before{content:"\f551"}.fa-studiovinari:before{content:"\f3f8"}.fa-stumbleupon:before{content:"\f1a4"}.fa-stumbleupon-circle:before{content:"\f1a3"}.fa-subscript:before{content:"\f12c"}.fa-subway:before{content:"\f239"}.fa-suitcase:before{content:"\f0f2"}.fa-suitcase-rolling:before{content:"\f5c1"}.fa-sun:before{content:"\f185"}.fa-superpowers:before{content:"\f2dd"}.fa-superscript:before{content:"\f12b"}.fa-supple:before{content:"\f3f9"}.fa-surprise:before{content:"\f5c2"}.fa-suse:before{content:"\f7d6"}.fa-swatchbook:before{content:"\f5c3"}.fa-swimmer:before{content:"\f5c4"}.fa-swimming-pool:before{content:"\f5c5"}.fa-synagogue:before{content:"\f69b"}.fa-sync:before{content:"\f021"}.fa-sync-alt:before{content:"\f2f1"}.fa-syringe:before{content:"\f48e"}.fa-table:before{content:"\f0ce"}.fa-table-tennis:before{content:"\f45d"}.fa-tablet:before{content:"\f10a"}.fa-tablet-alt:before{content:"\f3fa"}.fa-tablets:before{content:"\f490"}.fa-tachometer-alt:before{content:"\f3fd"}.fa-tag:before{content:"\f02b"}.fa-tags:before{content:"\f02c"}.fa-tape:before{content:"\f4db"}.fa-tasks:before{content:"\f0ae"}.fa-taxi:before{content:"\f1ba"}.fa-teamspeak:before{content:"\f4f9"}.fa-teeth:before{content:"\f62e"}.fa-teeth-open:before{content:"\f62f"}.fa-telegram:before{content:"\f2c6"}.fa-telegram-plane:before{content:"\f3fe"}.fa-temperature-high:before{content:"\f769"}.fa-temperature-low:before{content:"\f76b"}.fa-tencent-weibo:before{content:"\f1d5"}.fa-tenge:before{content:"\f7d7"}.fa-terminal:before{content:"\f120"}.fa-text-height:before{content:"\f034"}.fa-text-width:before{content:"\f035"}.fa-th:before{content:"\f00a"}.fa-th-large:before{content:"\f009"}.fa-th-list:before{content:"\f00b"}.fa-the-red-yeti:before{content:"\f69d"}.fa-theater-masks:before{content:"\f630"}.fa-themeco:before{content:"\f5c6"}.fa-themeisle:before{content:"\f2b2"}.fa-thermometer:before{content:"\f491"}.fa-thermometer-empty:before{content:"\f2cb"}.fa-thermometer-full:before{content:"\f2c7"}.fa-thermometer-half:before{content:"\f2c9"}.fa-thermometer-quarter:before{content:"\f2ca"}.fa-thermometer-three-quarters:before{content:"\f2c8"}.fa-think-peaks:before{content:"\f731"}.fa-thumbs-down:before{content:"\f165"}.fa-thumbs-up:before{content:"\f164"}.fa-thumbtack:before{content:"\f08d"}.fa-ticket-alt:before{content:"\f3ff"}.fa-times:before{content:"\f00d"}.fa-times-circle:before{content:"\f057"}.fa-tint:before{content:"\f043"}.fa-tint-slash:before{content:"\f5c7"}.fa-tired:before{content:"\f5c8"}.fa-toggle-off:before{content:"\f204"}.fa-toggle-on:before{content:"\f205"}.fa-toilet:before{content:"\f7d8"}.fa-toilet-paper:before{content:"\f71e"}.fa-toolbox:before{content:"\f552"}.fa-tools:before{content:"\f7d9"}.fa-tooth:before{content:"\f5c9"}.fa-torah:before{content:"\f6a0"}.fa-torii-gate:before{content:"\f6a1"}.fa-tractor:before{content:"\f722"}.fa-trade-federation:before{content:"\f513"}.fa-trademark:before{content:"\f25c"}.fa-traffic-light:before{content:"\f637"}.fa-train:before{content:"\f238"}.fa-tram:before{content:"\f7da"}.fa-transgender:before{content:"\f224"}.fa-transgender-alt:before{content:"\f225"}.fa-trash:before{content:"\f1f8"}.fa-trash-alt:before{content:"\f2ed"}.fa-tree:before{content:"\f1bb"}.fa-trello:before{content:"\f181"}.fa-tripadvisor:before{content:"\f262"}.fa-trophy:before{content:"\f091"}.fa-truck:before{content:"\f0d1"}.fa-truck-loading:before{content:"\f4de"}.fa-truck-monster:before{content:"\f63b"}.fa-truck-moving:before{content:"\f4df"}.fa-truck-pickup:before{content:"\f63c"}.fa-tshirt:before{content:"\f553"}.fa-tty:before{content:"\f1e4"}.fa-tumblr:before{content:"\f173"}.fa-tumblr-square:before{content:"\f174"}.fa-tv:before{content:"\f26c"}.fa-twitch:before{content:"\f1e8"}.fa-twitter:before{content:"\f099"}.fa-twitter-square:before{content:"\f081"}.fa-typo3:before{content:"\f42b"}.fa-uber:before{content:"\f402"}.fa-ubuntu:before{content:"\f7df"}.fa-uikit:before{content:"\f403"}.fa-umbrella:before{content:"\f0e9"}.fa-umbrella-beach:before{content:"\f5ca"}.fa-underline:before{content:"\f0cd"}.fa-undo:before{content:"\f0e2"}.fa-undo-alt:before{content:"\f2ea"}.fa-uniregistry:before{content:"\f404"}.fa-universal-access:before{content:"\f29a"}.fa-university:before{content:"\f19c"}.fa-unlink:before{content:"\f127"}.fa-unlock:before{content:"\f09c"}.fa-unlock-alt:before{content:"\f13e"}.fa-untappd:before{content:"\f405"}.fa-upload:before{content:"\f093"}.fa-ups:before{content:"\f7e0"}.fa-usb:before{content:"\f287"}.fa-user:before{content:"\f007"}.fa-user-alt:before{content:"\f406"}.fa-user-alt-slash:before{content:"\f4fa"}.fa-user-astronaut:before{content:"\f4fb"}.fa-user-check:before{content:"\f4fc"}.fa-user-circle:before{content:"\f2bd"}.fa-user-clock:before{content:"\f4fd"}.fa-user-cog:before{content:"\f4fe"}.fa-user-edit:before{content:"\f4ff"}.fa-user-friends:before{content:"\f500"}.fa-user-graduate:before{content:"\f501"}.fa-user-injured:before{content:"\f728"}.fa-user-lock:before{content:"\f502"}.fa-user-md:before{content:"\f0f0"}.fa-user-minus:before{content:"\f503"}.fa-user-ninja:before{content:"\f504"}.fa-user-plus:before{content:"\f234"}.fa-user-secret:before{content:"\f21b"}.fa-user-shield:before{content:"\f505"}.fa-user-slash:before{content:"\f506"}.fa-user-tag:before{content:"\f507"}.fa-user-tie:before{content:"\f508"}.fa-user-times:before{content:"\f235"}.fa-users:before{content:"\f0c0"}.fa-users-cog:before{content:"\f509"}.fa-usps:before{content:"\f7e1"}.fa-ussunnah:before{content:"\f407"}.fa-utensil-spoon:before{content:"\f2e5"}.fa-utensils:before{content:"\f2e7"}.fa-vaadin:before{content:"\f408"}.fa-vector-square:before{content:"\f5cb"}.fa-venus:before{content:"\f221"}.fa-venus-double:before{content:"\f226"}.fa-venus-mars:before{content:"\f228"}.fa-viacoin:before{content:"\f237"}.fa-viadeo:before{content:"\f2a9"}.fa-viadeo-square:before{content:"\f2aa"}.fa-vial:before{content:"\f492"}.fa-vials:before{content:"\f493"}.fa-viber:before{content:"\f409"}.fa-video:before{content:"\f03d"}.fa-video-slash:before{content:"\f4e2"}.fa-vihara:before{content:"\f6a7"}.fa-vimeo:before{content:"\f40a"}.fa-vimeo-square:before{content:"\f194"}.fa-vimeo-v:before{content:"\f27d"}.fa-vine:before{content:"\f1ca"}.fa-vk:before{content:"\f189"}.fa-vnv:before{content:"\f40b"}.fa-volleyball-ball:before{content:"\f45f"}.fa-volume-down:before{content:"\f027"}.fa-volume-mute:before{content:"\f6a9"}.fa-volume-off:before{content:"\f026"}.fa-volume-up:before{content:"\f028"}.fa-vote-yea:before{content:"\f772"}.fa-vr-cardboard:before{content:"\f729"}.fa-vuejs:before{content:"\f41f"}.fa-walking:before{content:"\f554"}.fa-wallet:before{content:"\f555"}.fa-warehouse:before{content:"\f494"}.fa-water:before{content:"\f773"}.fa-weebly:before{content:"\f5cc"}.fa-weibo:before{content:"\f18a"}.fa-weight:before{content:"\f496"}.fa-weight-hanging:before{content:"\f5cd"}.fa-weixin:before{content:"\f1d7"}.fa-whatsapp:before{content:"\f232"}.fa-whatsapp-square:before{content:"\f40c"}.fa-wheelchair:before{content:"\f193"}.fa-whmcs:before{content:"\f40d"}.fa-wifi:before{content:"\f1eb"}.fa-wikipedia-w:before{content:"\f266"}.fa-wind:before{content:"\f72e"}.fa-window-close:before{content:"\f410"}.fa-window-maximize:before{content:"\f2d0"}.fa-window-minimize:before{content:"\f2d1"}.fa-window-restore:before{content:"\f2d2"}.fa-windows:before{content:"\f17a"}.fa-wine-bottle:before{content:"\f72f"}.fa-wine-glass:before{content:"\f4e3"}.fa-wine-glass-alt:before{content:"\f5ce"}.fa-wix:before{content:"\f5cf"}.fa-wizards-of-the-coast:before{content:"\f730"}.fa-wolf-pack-battalion:before{content:"\f514"}.fa-won-sign:before{content:"\f159"}.fa-wordpress:before{content:"\f19a"}.fa-wordpress-simple:before{content:"\f411"}.fa-wpbeginner:before{content:"\f297"}.fa-wpexplorer:before{content:"\f2de"}.fa-wpforms:before{content:"\f298"}.fa-wpressr:before{content:"\f3e4"}.fa-wrench:before{content:"\f0ad"}.fa-x-ray:before{content:"\f497"}.fa-xbox:before{content:"\f412"}.fa-xing:before{content:"\f168"}.fa-xing-square:before{content:"\f169"}.fa-y-combinator:before{content:"\f23b"}.fa-yahoo:before{content:"\f19e"}.fa-yandex:before{content:"\f413"}.fa-yandex-international:before{content:"\f414"}.fa-yarn:before{content:"\f7e3"}.fa-yelp:before{content:"\f1e9"}.fa-yen-sign:before{content:"\f157"}.fa-yin-yang:before{content:"\f6ad"}.fa-yoast:before{content:"\f2b1"}.fa-youtube:before{content:"\f167"}.fa-youtube-square:before{content:"\f431"}.fa-zhihu:before{content:"\f63f"}.sr-only{border:0;clip:rect(0,0,0,0);height:1px;margin:-1px;overflow:hidden;padding:0;position:absolute;width:1px}.sr-only-focusable:active,.sr-only-focusable:focus{clip:auto;height:auto;margin:0;overflow:visible;position:static;width:auto}@font-face{font-family:"Font Awesome 5 Brands";font-style:normal;font-weight:normal;src:url(../webfonts/fa-brands-400.eot);src:url(../webfonts/fa-brands-400.eot?#iefix) format("embedded-opentype"),url(../webfonts/fa-brands-400.woff2) format("woff2"),url(../webfonts/fa-brands-400.woff) format("woff"),url(../webfonts/fa-brands-400.ttf) format("truetype"),url(../webfonts/fa-brands-400.svg#fontawesome) format("svg")}.fab{font-family:"Font Awesome 5 Brands"}@font-face{font-family:"Font Awesome 5 Free";font-style:normal;font-weight:400;src:url(../webfonts/fa-regular-400.eot);src:url(../webfonts/fa-regular-400.eot?#iefix) format("embedded-opentype"),url(../webfonts/fa-regular-400.woff2) format("woff2"),url(../webfonts/fa-regular-400.woff) format("woff"),url(../webfonts/fa-regular-400.ttf) format("truetype"),url(../webfonts/fa-regular-400.svg#fontawesome) format("svg")}.far{font-weight:400}@font-face{font-family:"Font Awesome 5 Free";font-style:normal;font-weight:900;src:url(../webfonts/fa-solid-900.eot);src:url(../webfonts/fa-solid-900.eot?#iefix) format("embedded-opentype"),url(../webfonts/fa-solid-900.woff2) format("woff2"),url(../webfonts/fa-solid-900.woff) format("woff"),url(../webfonts/fa-solid-900.ttf) format("truetype"),url(../webfonts/fa-solid-900.svg#fontawesome) format("svg")}.fa,.far,.fas{font-family:"Font Awesome 5 Free"}.fa,.fas{font-weight:900} \ No newline at end of file diff --git a/css/hugo-theme.css b/css/hugo-theme.css deleted file mode 100644 index ae1fe79..0000000 --- a/css/hugo-theme.css +++ /dev/null @@ -1,241 +0,0 @@ -/* Insert here special css for hugo theme, on top of any other imported css */ - - -/* Table of contents */ - -.progress ul { - list-style: none; - margin: 0; - padding: 0 15px; -} - -#TableOfContents { - font-size: 13px !important; - max-height: 85vh; - overflow: auto; - padding: 15px 5px !important; -} - -#TableOfContents > ul > li > a { - font-weight: bold; -} - -body { - font-size: 16px !important; - color: #323232 !important; -} - -#body a.highlight, #body a.highlight:hover, #body a.highlight:focus { - text-decoration: none; - outline: none; - outline: 0; -} -#body a.highlight { - line-height: 1.1; - display: inline-block; -} -#body a.highlight:after { - display: block; - content: ""; - height: 1px; - width: 0%; - background-color: #0082a7; /*#CE3B2F*/ - -webkit-transition: width 0.5s ease; - -moz-transition: width 0.5s ease; - -ms-transition: width 0.5s ease; - transition: width 0.5s ease; -} -#body a.highlight:hover:after, #body a.highlight:focus:after { - width: 100%; -} -.progress { - position:absolute; - background-color: rgba(246, 246, 246, 0.97); - width: auto; - border: thin solid #ECECEC; - display:none; - z-index:200; -} - -#toc-menu { - border-right: thin solid #DAD8D8 !important; - padding-right: 1rem !important; - margin-right: 0.5rem !important; -} - -#sidebar-toggle-span { - border-right: thin solid #DAD8D8 !important; - padding-right: 0.5rem !important; - margin-right: 1rem !important; -} - -.btn { - display: inline-block !important; - padding: 6px 12px !important; - margin-bottom: 0 !important; - font-size: 14px !important; - font-weight: normal !important; - line-height: 1.42857143 !important; - text-align: center !important; - white-space: nowrap !important; - vertical-align: middle !important; - -ms-touch-action: manipulation !important; - touch-action: manipulation !important; - cursor: pointer !important; - -webkit-user-select: none !important; - -moz-user-select: none !important; - -ms-user-select: none !important; - user-select: none !important; - background-image: none !important; - border: 1px solid transparent !important; - border-radius: 4px !important; - -webkit-transition: all 0.15s !important; - -moz-transition: all 0.15s !important; - transition: all 0.15s !important; -} -.btn:focus { - /*outline: thin dotted; - outline: 5px auto -webkit-focus-ring-color; - outline-offset: -2px;*/ - outline: none !important; -} -.btn:hover, -.btn:focus { - color: #2b2b2b !important; - text-decoration: none !important; -} - -.btn-default { - color: #333 !important; - background-color: #fff !important; - border-color: #ccc !important; -} -.btn-default:hover, -.btn-default:focus, -.btn-default:active { - color: #fff !important; - background-color: #9e9e9e !important; - border-color: #9e9e9e !important; -} -.btn-default:active { - background-image: none !important; -} - -/* anchors */ -.anchor { - color: #00bdf3; - font-size: 0.5em; - cursor:pointer; - visibility:hidden; - margin-left: 0.5em; - position: absolute; - margin-top:0.1em; -} - -h2:hover .anchor, h3:hover .anchor, h4:hover .anchor, h5:hover .anchor, h6:hover .anchor { - visibility:visible; -} - -/* Redfines headers style */ - -h2, h3, h4, h5, h6 { - font-weight: 400; - line-height: 1.1; -} - -h1 a, h2 a, h3 a, h4 a, h5 a, h6 a { - font-weight: inherit; -} - -h2 { - font-size: 2.5rem; - line-height: 110% !important; - margin: 2.5rem 0 1.5rem 0; -} - -h3 { - font-size: 2rem; - line-height: 110% !important; - margin: 2rem 0 1rem 0; -} - -h4 { - font-size: 1.5rem; - line-height: 110% !important; - margin: 1.5rem 0 0.75rem 0; -} - -h5 { - font-size: 1rem; - line-height: 110% !important; - margin: 1rem 0 0.2rem 0; -} - -h6 { - font-size: 0.5rem; - line-height: 110% !important; - margin: 0.5rem 0 0.2rem 0; -} - -p { - margin: 1rem 0; -} - -figcaption h4 { - font-weight: 300 !important; - opacity: .85; - font-size: 1em; - text-align: center; - margin-top: -1.5em; -} - -.select-style { - border: 0; - width: 150px; - border-radius: 0px; - overflow: hidden; - display: inline-flex; -} - -.select-style svg { - fill: #ccc; - width: 14px; - height: 14px; - pointer-events: none; - margin: auto; -} - -.select-style svg:hover { - fill: #e6e6e6; -} - -.select-style select { - padding: 0; - width: 130%; - border: none; - box-shadow: none; - background: transparent; - background-image: none; - -webkit-appearance: none; - margin: auto; - margin-left: 0px; - margin-right: -20px; -} - -.select-style select:focus { - outline: none; -} - -.select-style :hover { - cursor: pointer; -} - -@media only all and (max-width: 47.938em) { - #breadcrumbs .links, #top-github-link-text { - display: none; - } -} - -.is-sticky #top-bar { - box-shadow: -1px 2px 5px 1px rgba(0, 0, 0, 0.1); -} \ No newline at end of file diff --git a/css/hybrid.css b/css/hybrid.css deleted file mode 100644 index 29735a1..0000000 --- a/css/hybrid.css +++ /dev/null @@ -1,102 +0,0 @@ -/* - -vim-hybrid theme by w0ng (https://github.com/w0ng/vim-hybrid) - -*/ - -/*background color*/ -.hljs { - display: block; - overflow-x: auto; - padding: 0.5em; - background: #1d1f21; -} - -/*selection color*/ -.hljs::selection, -.hljs span::selection { - background: #373b41; -} - -.hljs::-moz-selection, -.hljs span::-moz-selection { - background: #373b41; -} - -/*foreground color*/ -.hljs { - color: #c5c8c6; -} - -/*color: fg_yellow*/ -.hljs-title, -.hljs-name { - color: #f0c674; -} - -/*color: fg_comment*/ -.hljs-comment, -.hljs-meta, -.hljs-meta .hljs-keyword { - color: #707880; -} - -/*color: fg_red*/ -.hljs-number, -.hljs-symbol, -.hljs-literal, -.hljs-deletion, -.hljs-link { - color: #cc6666 -} - -/*color: fg_green*/ -.hljs-string, -.hljs-doctag, -.hljs-addition, -.hljs-regexp, -.hljs-selector-attr, -.hljs-selector-pseudo { - color: #b5bd68; -} - -/*color: fg_purple*/ -.hljs-attribute, -.hljs-code, -.hljs-selector-id { - color: #b294bb; -} - -/*color: fg_blue*/ -.hljs-keyword, -.hljs-selector-tag, -.hljs-bullet, -.hljs-tag { - color: #81a2be; -} - -/*color: fg_aqua*/ -.hljs-subst, -.hljs-variable, -.hljs-template-tag, -.hljs-template-variable { - color: #8abeb7; -} - -/*color: fg_orange*/ -.hljs-type, -.hljs-built_in, -.hljs-builtin-name, -.hljs-quote, -.hljs-section, -.hljs-selector-class { - color: #de935f; -} - -.hljs-emphasis { - font-style: italic; -} - -.hljs-strong { - font-weight: bold; -} diff --git a/css/nucleus.css b/css/nucleus.css deleted file mode 100644 index 1897fc5..0000000 --- a/css/nucleus.css +++ /dev/null @@ -1,615 +0,0 @@ -*, *::before, *::after { - -webkit-box-sizing: border-box; - -moz-box-sizing: border-box; - box-sizing: border-box; } - -@-webkit-viewport { - width: device-width; } -@-moz-viewport { - width: device-width; } -@-ms-viewport { - width: device-width; } -@-o-viewport { - width: device-width; } -@viewport { - width: device-width; } -html { - font-size: 100%; - -ms-text-size-adjust: 100%; - -webkit-text-size-adjust: 100%; } - -body { - margin: 0; } - -article, -aside, -details, -figcaption, -figure, -footer, -header, -hgroup, -main, -nav, -section, -summary { - display: block; } - -audio, -canvas, -progress, -video { - display: inline-block; - vertical-align: baseline; } - -audio:not([controls]) { - display: none; - height: 0; } - -[hidden], -template { - display: none; } - -a { - background: transparent; - text-decoration: none; } - -a:active, -a:hover { - outline: 0; } - -abbr[title] { - border-bottom: 1px dotted; } - -b, -strong { - font-weight: bold; } - -dfn { - font-style: italic; } - -mark { - background: #FFFF27; - color: #333; } - -sub, -sup { - font-size: 0.8rem; - line-height: 0; - position: relative; - vertical-align: baseline; } - -sup { - top: -0.5em; } - -sub { - bottom: -0.25em; } - -img { - border: 0; - max-width: 100%; } - -svg:not(:root) { - overflow: hidden; } - -figure { - margin: 1em 40px; } - -hr { - height: 0; } - -pre { - overflow: auto; } - -button, -input, -optgroup, -select, -textarea { - color: inherit; - font: inherit; - margin: 0; } - -button { - overflow: visible; } - -button, -select { - text-transform: none; } - -button, -html input[type="button"], -input[type="reset"], -input[type="submit"] { - -webkit-appearance: button; - cursor: pointer; } - -button[disabled], -html input[disabled] { - cursor: default; } - -button::-moz-focus-inner, -input::-moz-focus-inner { - border: 0; - padding: 0; } - -input { - line-height: normal; } - -input[type="checkbox"], -input[type="radio"] { - padding: 0; } - -input[type="number"]::-webkit-inner-spin-button, -input[type="number"]::-webkit-outer-spin-button { - height: auto; } - -input[type="search"] { - -webkit-appearance: textfield; } - -input[type="search"]::-webkit-search-cancel-button, -input[type="search"]::-webkit-search-decoration { - -webkit-appearance: none; } - -legend { - border: 0; - padding: 0; } - -textarea { - overflow: auto; } - -optgroup { - font-weight: bold; } - -table { - border-collapse: collapse; - border-spacing: 0; - table-layout: fixed; - width: 100%; } - -tr, td, th { - vertical-align: middle; } - -th, td { - padding: 0.425rem 0; } - -th { - text-align: left; } - -.container { - width: 75em; - margin: 0 auto; - padding: 0; } - @media only all and (min-width: 60em) and (max-width: 74.938em) { - .container { - width: 60em; } } - @media only all and (min-width: 48em) and (max-width: 59.938em) { - .container { - width: 48em; } } - @media only all and (min-width: 30.063em) and (max-width: 47.938em) { - .container { - width: 30em; } } - @media only all and (max-width: 30em) { - .container { - width: 100%; } } - -.grid { - display: -webkit-box; - display: -moz-box; - display: box; - display: -webkit-flex; - display: -moz-flex; - display: -ms-flexbox; - display: flex; - -webkit-flex-flow: row; - -moz-flex-flow: row; - flex-flow: row; - list-style: none; - margin: 0; - padding: 0; } - @media only all and (max-width: 47.938em) { - .grid { - -webkit-flex-flow: row wrap; - -moz-flex-flow: row wrap; - flex-flow: row wrap; } } - -.block { - -webkit-box-flex: 1; - -moz-box-flex: 1; - box-flex: 1; - -webkit-flex: 1; - -moz-flex: 1; - -ms-flex: 1; - flex: 1; - min-width: 0; - min-height: 0; } - @media only all and (max-width: 47.938em) { - .block { - -webkit-box-flex: 0; - -moz-box-flex: 0; - box-flex: 0; - -webkit-flex: 0 100%; - -moz-flex: 0 100%; - -ms-flex: 0 100%; - flex: 0 100%; } } - -.content { - margin: 0.625rem; - padding: 0.938rem; } - -@media only all and (max-width: 47.938em) { - body [class*="size-"] { - -webkit-box-flex: 0; - -moz-box-flex: 0; - box-flex: 0; - -webkit-flex: 0 100%; - -moz-flex: 0 100%; - -ms-flex: 0 100%; - flex: 0 100%; } } - -.size-1-2 { - -webkit-box-flex: 0; - -moz-box-flex: 0; - box-flex: 0; - -webkit-flex: 0 50%; - -moz-flex: 0 50%; - -ms-flex: 0 50%; - flex: 0 50%; } - -.size-1-3 { - -webkit-box-flex: 0; - -moz-box-flex: 0; - box-flex: 0; - -webkit-flex: 0 33.33333%; - -moz-flex: 0 33.33333%; - -ms-flex: 0 33.33333%; - flex: 0 33.33333%; } - -.size-1-4 { - -webkit-box-flex: 0; - -moz-box-flex: 0; - box-flex: 0; - -webkit-flex: 0 25%; - -moz-flex: 0 25%; - -ms-flex: 0 25%; - flex: 0 25%; } - -.size-1-5 { - -webkit-box-flex: 0; - -moz-box-flex: 0; - box-flex: 0; - -webkit-flex: 0 20%; - -moz-flex: 0 20%; - -ms-flex: 0 20%; - flex: 0 20%; } - -.size-1-6 { - -webkit-box-flex: 0; - -moz-box-flex: 0; - box-flex: 0; - -webkit-flex: 0 16.66667%; - -moz-flex: 0 16.66667%; - -ms-flex: 0 16.66667%; - flex: 0 16.66667%; } - -.size-1-7 { - -webkit-box-flex: 0; - -moz-box-flex: 0; - box-flex: 0; - -webkit-flex: 0 14.28571%; - -moz-flex: 0 14.28571%; - -ms-flex: 0 14.28571%; - flex: 0 14.28571%; } - -.size-1-8 { - -webkit-box-flex: 0; - -moz-box-flex: 0; - box-flex: 0; - -webkit-flex: 0 12.5%; - -moz-flex: 0 12.5%; - -ms-flex: 0 12.5%; - flex: 0 12.5%; } - -.size-1-9 { - -webkit-box-flex: 0; - -moz-box-flex: 0; - box-flex: 0; - -webkit-flex: 0 11.11111%; - -moz-flex: 0 11.11111%; - -ms-flex: 0 11.11111%; - flex: 0 11.11111%; } - -.size-1-10 { - -webkit-box-flex: 0; - -moz-box-flex: 0; - box-flex: 0; - -webkit-flex: 0 10%; - -moz-flex: 0 10%; - -ms-flex: 0 10%; - flex: 0 10%; } - -.size-1-11 { - -webkit-box-flex: 0; - -moz-box-flex: 0; - box-flex: 0; - -webkit-flex: 0 9.09091%; - -moz-flex: 0 9.09091%; - -ms-flex: 0 9.09091%; - flex: 0 9.09091%; } - -.size-1-12 { - -webkit-box-flex: 0; - -moz-box-flex: 0; - box-flex: 0; - -webkit-flex: 0 8.33333%; - -moz-flex: 0 8.33333%; - -ms-flex: 0 8.33333%; - flex: 0 8.33333%; } - -@media only all and (min-width: 48em) and (max-width: 59.938em) { - .size-tablet-1-2 { - -webkit-box-flex: 0; - -moz-box-flex: 0; - box-flex: 0; - -webkit-flex: 0 50%; - -moz-flex: 0 50%; - -ms-flex: 0 50%; - flex: 0 50%; } - - .size-tablet-1-3 { - -webkit-box-flex: 0; - -moz-box-flex: 0; - box-flex: 0; - -webkit-flex: 0 33.33333%; - -moz-flex: 0 33.33333%; - -ms-flex: 0 33.33333%; - flex: 0 33.33333%; } - - .size-tablet-1-4 { - -webkit-box-flex: 0; - -moz-box-flex: 0; - box-flex: 0; - -webkit-flex: 0 25%; - -moz-flex: 0 25%; - -ms-flex: 0 25%; - flex: 0 25%; } - - .size-tablet-1-5 { - -webkit-box-flex: 0; - -moz-box-flex: 0; - box-flex: 0; - -webkit-flex: 0 20%; - -moz-flex: 0 20%; - -ms-flex: 0 20%; - flex: 0 20%; } - - .size-tablet-1-6 { - -webkit-box-flex: 0; - -moz-box-flex: 0; - box-flex: 0; - -webkit-flex: 0 16.66667%; - -moz-flex: 0 16.66667%; - -ms-flex: 0 16.66667%; - flex: 0 16.66667%; } - - .size-tablet-1-7 { - -webkit-box-flex: 0; - -moz-box-flex: 0; - box-flex: 0; - -webkit-flex: 0 14.28571%; - -moz-flex: 0 14.28571%; - -ms-flex: 0 14.28571%; - flex: 0 14.28571%; } - - .size-tablet-1-8 { - -webkit-box-flex: 0; - -moz-box-flex: 0; - box-flex: 0; - -webkit-flex: 0 12.5%; - -moz-flex: 0 12.5%; - -ms-flex: 0 12.5%; - flex: 0 12.5%; } - - .size-tablet-1-9 { - -webkit-box-flex: 0; - -moz-box-flex: 0; - box-flex: 0; - -webkit-flex: 0 11.11111%; - -moz-flex: 0 11.11111%; - -ms-flex: 0 11.11111%; - flex: 0 11.11111%; } - - .size-tablet-1-10 { - -webkit-box-flex: 0; - -moz-box-flex: 0; - box-flex: 0; - -webkit-flex: 0 10%; - -moz-flex: 0 10%; - -ms-flex: 0 10%; - flex: 0 10%; } - - .size-tablet-1-11 { - -webkit-box-flex: 0; - -moz-box-flex: 0; - box-flex: 0; - -webkit-flex: 0 9.09091%; - -moz-flex: 0 9.09091%; - -ms-flex: 0 9.09091%; - flex: 0 9.09091%; } - - .size-tablet-1-12 { - -webkit-box-flex: 0; - -moz-box-flex: 0; - box-flex: 0; - -webkit-flex: 0 8.33333%; - -moz-flex: 0 8.33333%; - -ms-flex: 0 8.33333%; - flex: 0 8.33333%; } } -@media only all and (max-width: 47.938em) { - @supports not (flex-wrap: wrap) { - .grid { - display: block; - -webkit-box-lines: inherit; - -moz-box-lines: inherit; - box-lines: inherit; - -webkit-flex-wrap: inherit; - -moz-flex-wrap: inherit; - -ms-flex-wrap: inherit; - flex-wrap: inherit; } - - .block { - display: block; - -webkit-box-flex: inherit; - -moz-box-flex: inherit; - box-flex: inherit; - -webkit-flex: inherit; - -moz-flex: inherit; - -ms-flex: inherit; - flex: inherit; } } } -.first-block { - -webkit-box-ordinal-group: 0; - -webkit-order: -1; - -ms-flex-order: -1; - order: -1; } - -.last-block { - -webkit-box-ordinal-group: 2; - -webkit-order: 1; - -ms-flex-order: 1; - order: 1; } - -.fixed-blocks { - -webkit-flex-flow: row wrap; - -moz-flex-flow: row wrap; - flex-flow: row wrap; } - .fixed-blocks .block { - -webkit-box-flex: inherit; - -moz-box-flex: inherit; - box-flex: inherit; - -webkit-flex: inherit; - -moz-flex: inherit; - -ms-flex: inherit; - flex: inherit; - width: 25%; } - @media only all and (min-width: 60em) and (max-width: 74.938em) { - .fixed-blocks .block { - width: 33.33333%; } } - @media only all and (min-width: 48em) and (max-width: 59.938em) { - .fixed-blocks .block { - width: 50%; } } - @media only all and (max-width: 47.938em) { - .fixed-blocks .block { - width: 100%; } } - -body { - font-size: 1.05rem; - line-height: 1.7; } - -h1, h2, h3, h4, h5, h6 { - margin: 0.85rem 0 1.7rem 0; - text-rendering: optimizeLegibility; } - -h1 { - font-size: 3.25rem; } - -h2 { - font-size: 2.55rem; } - -h3 { - font-size: 2.15rem; } - -h4 { - font-size: 1.8rem; } - -h5 { - font-size: 1.4rem; } - -h6 { - font-size: 0.9rem; } - -p { - margin: 1.7rem 0; } - -ul, ol { - margin-top: 1.7rem; - margin-bottom: 1.7rem; } - ul ul, ul ol, ol ul, ol ol { - margin-top: 0; - margin-bottom: 0; } - -blockquote { - margin: 1.7rem 0; - padding-left: 0.85rem; } - -cite { - display: block; - font-size: 0.925rem; } - cite:before { - content: "\2014 \0020"; } - -pre { - margin: 1.7rem 0; - padding: 0.938rem; } - -code { - vertical-align: bottom; } - -small { - font-size: 0.925rem; } - -hr { - border-left: none; - border-right: none; - border-top: none; - margin: 1.7rem 0; } - -fieldset { - border: 0; - padding: 0.938rem; - margin: 0 0 1.7rem 0; } - -input, -label, -select { - display: block; } - -label { - margin-bottom: 0.425rem; } - label.required:after { - content: "*"; } - label abbr { - display: none; } - -textarea, input[type="email"], input[type="number"], input[type="password"], input[type="search"], input[type="tel"], input[type="text"], input[type="url"], input[type="color"], input[type="date"], input[type="datetime"], input[type="datetime-local"], input[type="month"], input[type="time"], input[type="week"], select[multiple=multiple] { - -webkit-transition: border-color; - -moz-transition: border-color; - transition: border-color; - border-radius: 0.1875rem; - margin-bottom: 0.85rem; - padding: 0.425rem 0.425rem; - width: 100%; } - textarea:focus, input[type="email"]:focus, input[type="number"]:focus, input[type="password"]:focus, input[type="search"]:focus, input[type="tel"]:focus, input[type="text"]:focus, input[type="url"]:focus, input[type="color"]:focus, input[type="date"]:focus, input[type="datetime"]:focus, input[type="datetime-local"]:focus, input[type="month"]:focus, input[type="time"]:focus, input[type="week"]:focus, select[multiple=multiple]:focus { - outline: none; } - -textarea { - resize: vertical; } - -input[type="checkbox"], input[type="radio"] { - display: inline; - margin-right: 0.425rem; } - -input[type="file"] { - width: 100%; } - -select { - width: auto; - max-width: 100%; - margin-bottom: 1.7rem; } - -button, -input[type="submit"] { - cursor: pointer; - user-select: none; - vertical-align: middle; - white-space: nowrap; - border: inherit; } diff --git a/css/perfect-scrollbar.min.css b/css/perfect-scrollbar.min.css deleted file mode 100644 index ebd2cb4..0000000 --- a/css/perfect-scrollbar.min.css +++ /dev/null @@ -1,2 +0,0 @@ -/* perfect-scrollbar v0.6.13 */ -.ps-container{-ms-touch-action:auto;touch-action:auto;overflow:hidden !important;-ms-overflow-style:none}@supports (-ms-overflow-style: none){.ps-container{overflow:auto !important}}@media screen and (-ms-high-contrast: active), (-ms-high-contrast: none){.ps-container{overflow:auto !important}}.ps-container.ps-active-x>.ps-scrollbar-x-rail,.ps-container.ps-active-y>.ps-scrollbar-y-rail{display:block;background-color:transparent}.ps-container.ps-in-scrolling.ps-x>.ps-scrollbar-x-rail{background-color:#eee;opacity:.9}.ps-container.ps-in-scrolling.ps-x>.ps-scrollbar-x-rail>.ps-scrollbar-x{background-color:#999;height:11px}.ps-container.ps-in-scrolling.ps-y>.ps-scrollbar-y-rail{background-color:#eee;opacity:.9}.ps-container.ps-in-scrolling.ps-y>.ps-scrollbar-y-rail>.ps-scrollbar-y{background-color:#999;width:11px}.ps-container>.ps-scrollbar-x-rail{display:none;position:absolute;opacity:0;-webkit-transition:background-color .2s linear, opacity .2s linear;-o-transition:background-color .2s linear, opacity .2s linear;-moz-transition:background-color .2s linear, opacity .2s linear;transition:background-color .2s linear, opacity .2s linear;bottom:0px;height:15px}.ps-container>.ps-scrollbar-x-rail>.ps-scrollbar-x{position:absolute;background-color:#aaa;-webkit-border-radius:6px;-moz-border-radius:6px;border-radius:6px;-webkit-transition:background-color .2s linear, height .2s linear, width .2s ease-in-out, -webkit-border-radius .2s ease-in-out;transition:background-color .2s linear, height .2s linear, width .2s ease-in-out, -webkit-border-radius .2s ease-in-out;-o-transition:background-color .2s linear, height .2s linear, width .2s ease-in-out, border-radius .2s ease-in-out;-moz-transition:background-color .2s linear, height .2s linear, width .2s ease-in-out, border-radius .2s ease-in-out, -moz-border-radius .2s ease-in-out;transition:background-color .2s linear, height .2s linear, width .2s ease-in-out, border-radius .2s ease-in-out;transition:background-color .2s linear, height .2s linear, width .2s ease-in-out, border-radius .2s ease-in-out, -webkit-border-radius .2s ease-in-out, -moz-border-radius .2s ease-in-out;bottom:2px;height:6px}.ps-container>.ps-scrollbar-x-rail:hover>.ps-scrollbar-x,.ps-container>.ps-scrollbar-x-rail:active>.ps-scrollbar-x{height:11px}.ps-container>.ps-scrollbar-y-rail{display:none;position:absolute;opacity:0;-webkit-transition:background-color .2s linear, opacity .2s linear;-o-transition:background-color .2s linear, opacity .2s linear;-moz-transition:background-color .2s linear, opacity .2s linear;transition:background-color .2s linear, opacity .2s linear;right:0;width:15px}.ps-container>.ps-scrollbar-y-rail>.ps-scrollbar-y{position:absolute;background-color:#aaa;-webkit-border-radius:6px;-moz-border-radius:6px;border-radius:6px;-webkit-transition:background-color .2s linear, height .2s linear, width .2s ease-in-out, -webkit-border-radius .2s ease-in-out;transition:background-color .2s linear, height .2s linear, width .2s ease-in-out, -webkit-border-radius .2s ease-in-out;-o-transition:background-color .2s linear, height .2s linear, width .2s ease-in-out, border-radius .2s ease-in-out;-moz-transition:background-color .2s linear, height .2s linear, width .2s ease-in-out, border-radius .2s ease-in-out, -moz-border-radius .2s ease-in-out;transition:background-color .2s linear, height .2s linear, width .2s ease-in-out, border-radius .2s ease-in-out;transition:background-color .2s linear, height .2s linear, width .2s ease-in-out, border-radius .2s ease-in-out, -webkit-border-radius .2s ease-in-out, -moz-border-radius .2s ease-in-out;right:2px;width:6px}.ps-container>.ps-scrollbar-y-rail:hover>.ps-scrollbar-y,.ps-container>.ps-scrollbar-y-rail:active>.ps-scrollbar-y{width:11px}.ps-container:hover.ps-in-scrolling.ps-x>.ps-scrollbar-x-rail{background-color:#eee;opacity:.9}.ps-container:hover.ps-in-scrolling.ps-x>.ps-scrollbar-x-rail>.ps-scrollbar-x{background-color:#999;height:11px}.ps-container:hover.ps-in-scrolling.ps-y>.ps-scrollbar-y-rail{background-color:#eee;opacity:.9}.ps-container:hover.ps-in-scrolling.ps-y>.ps-scrollbar-y-rail>.ps-scrollbar-y{background-color:#999;width:11px}.ps-container:hover>.ps-scrollbar-x-rail,.ps-container:hover>.ps-scrollbar-y-rail{opacity:.6}.ps-container:hover>.ps-scrollbar-x-rail:hover{background-color:#eee;opacity:.9}.ps-container:hover>.ps-scrollbar-x-rail:hover>.ps-scrollbar-x{background-color:#999}.ps-container:hover>.ps-scrollbar-y-rail:hover{background-color:#eee;opacity:.9}.ps-container:hover>.ps-scrollbar-y-rail:hover>.ps-scrollbar-y{background-color:#999} diff --git a/css/tabs.css b/css/tabs.css deleted file mode 100644 index 2ad2728..0000000 --- a/css/tabs.css +++ /dev/null @@ -1,43 +0,0 @@ -#body .tab-nav-button { - border-width: 1px 1px 1px 1px !important; - border-color: #ccc !important; - border-radius: 4px 4px 0 0 !important; - background-color: #ddd !important; - float: left; - display: block; - position: relative; - margin-left: 4px; - bottom: -1px; -} -#body .tab-nav-button:first-child { - margin-left: 0px; -} -#body .tab-nav-button.active { - background-color: #fff !important; - border-bottom-color: #fff !important; -} - -#body .tab-panel { - margin-top: 32px; - margin-bottom: 32px; -} -#body .tab-content { - display: block; - clear: both; - padding: 8px; - border-width: 1px; - border-style: solid; - border-color: #ccc; -} -#body .tab-content .tab-item{ - display: none; -} - -#body .tab-content .tab-item.active{ - display: block; -} - -#body .tab-item pre{ - margin-bottom: 0; - margin-top: 0; -} diff --git a/css/tags.css b/css/tags.css deleted file mode 100644 index 495d2f9..0000000 --- a/css/tags.css +++ /dev/null @@ -1,49 +0,0 @@ -/* Tags */ - -#head-tags{ - margin-left:1em; - margin-top:1em; -} - -#body .tags a.tag-link { - display: inline-block; - line-height: 2em; - font-size: 0.8em; - position: relative; - margin: 0 16px 8px 0; - padding: 0 10px 0 12px; - background: #8451a1; - - -webkit-border-bottom-right-radius: 3px; - border-bottom-right-radius: 3px; - -webkit-border-top-right-radius: 3px; - border-top-right-radius: 3px; - - -webkit-box-shadow: 0 1px 2px rgba(0,0,0,0.2); - box-shadow: 0 1px 2px rgba(0,0,0,0.2); - color: #fff; -} - -#body .tags a.tag-link:before { - content: ""; - position: absolute; - top:0; - left: -1em; - width: 0; - height: 0; - border-color: transparent #8451a1 transparent transparent; - border-style: solid; - border-width: 1em 1em 1em 0; -} - -#body .tags a.tag-link:after { - content: ""; - position: absolute; - top: 10px; - left: 1px; - width: 5px; - height: 5px; - -webkit-border-radius: 50%; - border-radius: 100%; - background: #fff; -} diff --git a/css/theme-blue.css b/css/theme-blue.css deleted file mode 100644 index 1ee1423..0000000 --- a/css/theme-blue.css +++ /dev/null @@ -1,128 +0,0 @@ - -:root{ - - --MAIN-TEXT-color:#323232; /* Color of text by default */ - --MAIN-TITLES-TEXT-color: #5e5e5e; /* Color of titles h2-h3-h4-h5 */ - --MAIN-LINK-color:#1C90F3; /* Color of links */ - --MAIN-LINK-HOVER-color:#167ad0; /* Color of hovered links */ - --MAIN-ANCHOR-color: #1C90F3; /* color of anchors on titles */ - - --MENU-HOME-LINK-color: #323232; /* Color of the home button text */ - --MENU-HOME-LINK-HOVER-color: #5e5e5e; /* Color of the hovered home button text */ - - --MENU-HEADER-BG-color:#1C90F3; /* Background color of menu header */ - --MENU-HEADER-BORDER-color:#33a1ff; /*Color of menu header border */ - - --MENU-SEARCH-BG-color:#167ad0; /* Search field background color (by default borders + icons) */ - --MENU-SEARCH-BOX-color: #33a1ff; /* Override search field border color */ - --MENU-SEARCH-BOX-ICONS-color: #a1d2fd; /* Override search field icons color */ - - --MENU-SECTIONS-ACTIVE-BG-color:#20272b; /* Background color of the active section and its childs */ - --MENU-SECTIONS-BG-color:#252c31; /* Background color of other sections */ - --MENU-SECTIONS-LINK-color: #ccc; /* Color of links in menu */ - --MENU-SECTIONS-LINK-HOVER-color: #e6e6e6; /* Color of links in menu, when hovered */ - --MENU-SECTION-ACTIVE-CATEGORY-color: #777; /* Color of active category text */ - --MENU-SECTION-ACTIVE-CATEGORY-BG-color: #fff; /* Color of background for the active category (only) */ - - --MENU-VISITED-color: #33a1ff; /* Color of 'page visited' icons in menu */ - --MENU-SECTION-HR-color: #20272b; /* Color of
separator in menu */ - -} - -body { - color: var(--MAIN-TEXT-color) !important; -} - -textarea:focus, input[type="email"]:focus, input[type="number"]:focus, input[type="password"]:focus, input[type="search"]:focus, input[type="tel"]:focus, input[type="text"]:focus, input[type="url"]:focus, input[type="color"]:focus, input[type="date"]:focus, input[type="datetime"]:focus, input[type="datetime-local"]:focus, input[type="month"]:focus, input[type="time"]:focus, input[type="week"]:focus, select[multiple=multiple]:focus { - border-color: none; - box-shadow: none; -} - -h2, h3, h4, h5 { - color: var(--MAIN-TITLES-TEXT-color) !important; -} - -a { - color: var(--MAIN-LINK-color); -} - -.anchor { - color: var(--MAIN-ANCHOR-color); -} - -a:hover { - color: var(--MAIN-LINK-HOVER-color); -} - -#sidebar ul li.visited > a .read-icon { - color: var(--MENU-VISITED-color); -} - -#body a.highlight:after { - display: block; - content: ""; - height: 1px; - width: 0%; - -webkit-transition: width 0.5s ease; - -moz-transition: width 0.5s ease; - -ms-transition: width 0.5s ease; - transition: width 0.5s ease; - background-color: var(--MAIN-LINK-HOVER-color); -} -#sidebar { - background-color: var(--MENU-SECTIONS-BG-color); -} -#sidebar #header-wrapper { - background: var(--MENU-HEADER-BG-color); - color: var(--MENU-SEARCH-BOX-color); - border-color: var(--MENU-HEADER-BORDER-color); -} -#sidebar .searchbox { - border-color: var(--MENU-SEARCH-BOX-color); - background: var(--MENU-SEARCH-BG-color); -} -#sidebar ul.topics > li.parent, #sidebar ul.topics > li.active { - background: var(--MENU-SECTIONS-ACTIVE-BG-color); -} -#sidebar .searchbox * { - color: var(--MENU-SEARCH-BOX-ICONS-color); -} - -#sidebar a { - color: var(--MENU-SECTIONS-LINK-color); -} - -#sidebar a:hover { - color: var(--MENU-SECTIONS-LINK-HOVER-color); -} - -#sidebar ul li.active > a { - background: var(--MENU-SECTION-ACTIVE-CATEGORY-BG-color); - color: var(--MENU-SECTION-ACTIVE-CATEGORY-color) !important; -} - -#sidebar hr { - border-color: var(--MENU-SECTION-HR-color); -} - -#body .tags a.tag-link { - background-color: var(--MENU-HEADER-BG-color); -} - -#body .tags a.tag-link:before { - border-right-color: var(--MENU-HEADER-BG-color); -} - -#homelinks { - background: var(--MENU-HEADER-BG-color); - background-color: var(--MENU-HEADER-BORDER-color); - border-bottom-color: var(--MENU-HEADER-BORDER-color); -} - -#homelinks a { - color: var(--MENU-HOME-LINK-color); -} - -#homelinks a:hover { - color: var(--MENU-HOME-LINK-HOVERED-color); -} \ No newline at end of file diff --git a/css/theme-green.css b/css/theme-green.css deleted file mode 100644 index c074679..0000000 --- a/css/theme-green.css +++ /dev/null @@ -1,128 +0,0 @@ - -:root{ - - --MAIN-TEXT-color:#323232; /* Color of text by default */ - --MAIN-TITLES-TEXT-color: #5e5e5e; /* Color of titles h2-h3-h4-h5 */ - --MAIN-LINK-color:#599a3e; /* Color of links */ - --MAIN-LINK-HOVER-color:#3f6d2c; /* Color of hovered links */ - --MAIN-ANCHOR-color: #599a3e; /* color of anchors on titles */ - - --MENU-HOME-LINK-color: #323232; /* Color of the home button text */ - --MENU-HOME-LINK-HOVER-color: #5e5e5e; /* Color of the hovered home button text */ - - --MENU-HEADER-BG-color:#74b559; /* Background color of menu header */ - --MENU-HEADER-BORDER-color:#9cd484; /*Color of menu header border */ - - --MENU-SEARCH-BG-color:#599a3e; /* Search field background color (by default borders + icons) */ - --MENU-SEARCH-BOX-color: #84c767; /* Override search field border color */ - --MENU-SEARCH-BOX-ICONS-color: #c7f7c4; /* Override search field icons color */ - - --MENU-SECTIONS-ACTIVE-BG-color:#1b211c; /* Background color of the active section and its childs */ - --MENU-SECTIONS-BG-color:#222723; /* Background color of other sections */ - --MENU-SECTIONS-LINK-color: #ccc; /* Color of links in menu */ - --MENU-SECTIONS-LINK-HOVER-color: #e6e6e6; /* Color of links in menu, when hovered */ - --MENU-SECTION-ACTIVE-CATEGORY-color: #777; /* Color of active category text */ - --MENU-SECTION-ACTIVE-CATEGORY-BG-color: #fff; /* Color of background for the active category (only) */ - - --MENU-VISITED-color: #599a3e; /* Color of 'page visited' icons in menu */ - --MENU-SECTION-HR-color: #18211c; /* Color of
separator in menu */ - -} - -body { - color: var(--MAIN-TEXT-color) !important; -} - -textarea:focus, input[type="email"]:focus, input[type="number"]:focus, input[type="password"]:focus, input[type="search"]:focus, input[type="tel"]:focus, input[type="text"]:focus, input[type="url"]:focus, input[type="color"]:focus, input[type="date"]:focus, input[type="datetime"]:focus, input[type="datetime-local"]:focus, input[type="month"]:focus, input[type="time"]:focus, input[type="week"]:focus, select[multiple=multiple]:focus { - border-color: none; - box-shadow: none; -} - -h2, h3, h4, h5 { - color: var(--MAIN-TITLES-TEXT-color) !important; -} - -a { - color: var(--MAIN-LINK-color); -} - -.anchor { - color: var(--MAIN-ANCHOR-color); -} - -a:hover { - color: var(--MAIN-LINK-HOVER-color); -} - -#sidebar ul li.visited > a .read-icon { - color: var(--MENU-VISITED-color); -} - -#body a.highlight:after { - display: block; - content: ""; - height: 1px; - width: 0%; - -webkit-transition: width 0.5s ease; - -moz-transition: width 0.5s ease; - -ms-transition: width 0.5s ease; - transition: width 0.5s ease; - background-color: var(--MAIN-LINK-HOVER-color); -} -#sidebar { - background-color: var(--MENU-SECTIONS-BG-color); -} -#sidebar #header-wrapper { - background: var(--MENU-HEADER-BG-color); - color: var(--MENU-SEARCH-BOX-color); - border-color: var(--MENU-HEADER-BORDER-color); -} -#sidebar .searchbox { - border-color: var(--MENU-SEARCH-BOX-color); - background: var(--MENU-SEARCH-BG-color); -} -#sidebar ul.topics > li.parent, #sidebar ul.topics > li.active { - background: var(--MENU-SECTIONS-ACTIVE-BG-color); -} -#sidebar .searchbox * { - color: var(--MENU-SEARCH-BOX-ICONS-color); -} - -#sidebar a { - color: var(--MENU-SECTIONS-LINK-color); -} - -#sidebar a:hover { - color: var(--MENU-SECTIONS-LINK-HOVER-color); -} - -#sidebar ul li.active > a { - background: var(--MENU-SECTION-ACTIVE-CATEGORY-BG-color); - color: var(--MENU-SECTION-ACTIVE-CATEGORY-color) !important; -} - -#sidebar hr { - border-color: var(--MENU-SECTION-HR-color); -} - -#body .tags a.tag-link { - background-color: var(--MENU-HEADER-BG-color); -} - -#body .tags a.tag-link:before { - border-right-color: var(--MENU-HEADER-BG-color); -} - -#homelinks { - background: var(--MENU-HEADER-BG-color); - background-color: var(--MENU-HEADER-BORDER-color); - border-bottom-color: var(--MENU-HEADER-BORDER-color); -} - -#homelinks a { - color: var(--MENU-HOME-LINK-color); -} - -#homelinks a:hover { - color: var(--MENU-HOME-LINK-HOVERED-color); -} \ No newline at end of file diff --git a/css/theme-red.css b/css/theme-red.css deleted file mode 100644 index c5f2674..0000000 --- a/css/theme-red.css +++ /dev/null @@ -1,128 +0,0 @@ - -:root{ - - --MAIN-TEXT-color:#323232; /* Color of text by default */ - --MAIN-TITLES-TEXT-color: #5e5e5e; /* Color of titles h2-h3-h4-h5 */ - --MAIN-LINK-color:#f31c1c; /* Color of links */ - --MAIN-LINK-HOVER-color:#d01616; /* Color of hovered links */ - --MAIN-ANCHOR-color: #f31c1c; /* color of anchors on titles */ - - --MENU-HOME-LINK-color: #ccc; /* Color of the home button text */ - --MENU-HOME-LINK-HOVER-color: #e6e6e6; /* Color of the hovered home button text */ - - --MENU-HEADER-BG-color:#dc1010; /* Background color of menu header */ - --MENU-HEADER-BORDER-color:#e23131; /*Color of menu header border */ - - --MENU-SEARCH-BG-color:#b90000; /* Search field background color (by default borders + icons) */ - --MENU-SEARCH-BOX-color: #ef2020; /* Override search field border color */ - --MENU-SEARCH-BOX-ICONS-color: #fda1a1; /* Override search field icons color */ - - --MENU-SECTIONS-ACTIVE-BG-color:#2b2020; /* Background color of the active section and its childs */ - --MENU-SECTIONS-BG-color:#312525; /* Background color of other sections */ - --MENU-SECTIONS-LINK-color: #ccc; /* Color of links in menu */ - --MENU-SECTIONS-LINK-HOVER-color: #e6e6e6; /* Color of links in menu, when hovered */ - --MENU-SECTION-ACTIVE-CATEGORY-color: #777; /* Color of active category text */ - --MENU-SECTION-ACTIVE-CATEGORY-BG-color: #fff; /* Color of background for the active category (only) */ - - --MENU-VISITED-color: #ff3333; /* Color of 'page visited' icons in menu */ - --MENU-SECTION-HR-color: #2b2020; /* Color of
separator in menu */ - -} - -body { - color: var(--MAIN-TEXT-color) !important; -} - -textarea:focus, input[type="email"]:focus, input[type="number"]:focus, input[type="password"]:focus, input[type="search"]:focus, input[type="tel"]:focus, input[type="text"]:focus, input[type="url"]:focus, input[type="color"]:focus, input[type="date"]:focus, input[type="datetime"]:focus, input[type="datetime-local"]:focus, input[type="month"]:focus, input[type="time"]:focus, input[type="week"]:focus, select[multiple=multiple]:focus { - border-color: none; - box-shadow: none; -} - -h2, h3, h4, h5 { - color: var(--MAIN-TITLES-TEXT-color) !important; -} - -a { - color: var(--MAIN-LINK-color); -} - -.anchor { - color: var(--MAIN-ANCHOR-color); -} - -a:hover { - color: var(--MAIN-LINK-HOVER-color); -} - -#sidebar ul li.visited > a .read-icon { - color: var(--MENU-VISITED-color); -} - -#body a.highlight:after { - display: block; - content: ""; - height: 1px; - width: 0%; - -webkit-transition: width 0.5s ease; - -moz-transition: width 0.5s ease; - -ms-transition: width 0.5s ease; - transition: width 0.5s ease; - background-color: var(--MAIN-LINK-HOVER-color); -} -#sidebar { - background-color: var(--MENU-SECTIONS-BG-color); -} -#sidebar #header-wrapper { - background: var(--MENU-HEADER-BG-color); - color: var(--MENU-SEARCH-BOX-color); - border-color: var(--MENU-HEADER-BORDER-color); -} -#sidebar .searchbox { - border-color: var(--MENU-SEARCH-BOX-color); - background: var(--MENU-SEARCH-BG-color); -} -#sidebar ul.topics > li.parent, #sidebar ul.topics > li.active { - background: var(--MENU-SECTIONS-ACTIVE-BG-color); -} -#sidebar .searchbox * { - color: var(--MENU-SEARCH-BOX-ICONS-color); -} - -#sidebar a { - color: var(--MENU-SECTIONS-LINK-color); -} - -#sidebar a:hover { - color: var(--MENU-SECTIONS-LINK-HOVER-color); -} - -#sidebar ul li.active > a { - background: var(--MENU-SECTION-ACTIVE-CATEGORY-BG-color); - color: var(--MENU-SECTION-ACTIVE-CATEGORY-color) !important; -} - -#sidebar hr { - border-color: var(--MENU-SECTION-HR-color); -} - -#body .tags a.tag-link { - background-color: var(--MENU-HEADER-BG-color); -} - -#body .tags a.tag-link:before { - border-right-color: var(--MENU-HEADER-BG-color); -} - -#homelinks { - background: var(--MENU-HEADER-BG-color); - background-color: var(--MENU-HEADER-BORDER-color); - border-bottom-color: var(--MENU-HEADER-BORDER-color); -} - -#homelinks a { - color: var(--MENU-HOME-LINK-color); -} - -#homelinks a:hover { - color: var(--MENU-HOME-LINK-HOVERED-color); -} \ No newline at end of file diff --git a/css/theme.css b/css/theme.css deleted file mode 100644 index 98a5584..0000000 --- a/css/theme.css +++ /dev/null @@ -1,1143 +0,0 @@ -@charset "UTF-8"; - -/* Tags */ -@import "tags.css"; - -#top-github-link, #body #breadcrumbs { - position: relative; - top: 50%; - -webkit-transform: translateY(-50%); - -moz-transform: translateY(-50%); - -o-transform: translateY(-50%); - -ms-transform: translateY(-50%); - transform: translateY(-50%); -} -.button, .button-secondary { - display: inline-block; - padding: 7px 12px; -} -.button:active, .button-secondary:active { - margin: 2px 0 -2px 0; -} -@font-face { - font-family: 'Novacento Sans Wide'; - src: url("../fonts/Novecentosanswide-UltraLight-webfont.eot"); - src: url("../fonts/Novecentosanswide-UltraLight-webfont.eot?#iefix") format("embedded-opentype"), url("../fonts/Novecentosanswide-UltraLight-webfont.woff2") format("woff2"), url("../fonts/Novecentosanswide-UltraLight-webfont.woff") format("woff"), url("../fonts/Novecentosanswide-UltraLight-webfont.ttf") format("truetype"), url("../fonts/Novecentosanswide-UltraLight-webfont.svg#novecento_sans_wideultralight") format("svg"); - font-style: normal; - font-weight: 200; -} -@font-face { - font-family: 'Work Sans'; - font-style: normal; - font-weight: 300; - src: url("../fonts/Work_Sans_300.eot?#iefix") format("embedded-opentype"), url("../fonts/Work_Sans_300.woff") format("woff"), url("../fonts/Work_Sans_300.woff2") format("woff2"), url("../fonts/Work_Sans_300.svg#WorkSans") format("svg"), url("../fonts/Work_Sans_300.ttf") format("truetype"); -} -@font-face { - font-family: 'Work Sans'; - font-style: normal; - font-weight: 500; - src: url("../fonts/Work_Sans_500.eot?#iefix") format("embedded-opentype"), url("../fonts/Work_Sans_500.woff") format("woff"), url("../fonts/Work_Sans_500.woff2") format("woff2"), url("../fonts/Work_Sans_500.svg#WorkSans") format("svg"), url("../fonts/Work_Sans_500.ttf") format("truetype"); -} -body { - background: #fff; - color: #777; -} -body #chapter h1 { - font-size: 3.5rem; -} -@media only all and (min-width: 48em) and (max-width: 59.938em) { - body #chapter h1 { - font-size: 3rem; - } -} -@media only all and (max-width: 47.938em) { - body #chapter h1 { - font-size: 2rem; - } -} -a { - color: #00bdf3; -} -a:hover { - color: #0082a7; -} -pre { - position: relative; - color: #ffffff; -} -.bg { - background: #fff; - border: 1px solid #eaeaea; -} -b, strong, label, th { - font-weight: 600; -} -.default-animation, #header #logo-svg, #header #logo-svg path, #sidebar, #sidebar ul, #body, #body .padding, #body .nav { - -webkit-transition: all 0.5s ease; - -moz-transition: all 0.5s ease; - transition: all 0.5s ease; -} -#grav-logo { - max-width: 60%; -} -#grav-logo path { - fill: #fff !important; -} -#sidebar { - font-weight: 300 !important; -} -fieldset { - border: 1px solid #ddd; -} -textarea, input[type="email"], input[type="number"], input[type="password"], input[type="search"], input[type="tel"], input[type="text"], input[type="url"], input[type="color"], input[type="date"], input[type="datetime"], input[type="datetime-local"], input[type="month"], input[type="time"], input[type="week"], select[multiple=multiple] { - background-color: white; - border: 1px solid #ddd; - box-shadow: inset 0 1px 3px rgba(0, 0, 0, 0.06); -} -textarea:hover, input[type="email"]:hover, input[type="number"]:hover, input[type="password"]:hover, input[type="search"]:hover, input[type="tel"]:hover, input[type="text"]:hover, input[type="url"]:hover, input[type="color"]:hover, input[type="date"]:hover, input[type="datetime"]:hover, input[type="datetime-local"]:hover, input[type="month"]:hover, input[type="time"]:hover, input[type="week"]:hover, select[multiple=multiple]:hover { - border-color: #c4c4c4; -} -textarea:focus, input[type="email"]:focus, input[type="number"]:focus, input[type="password"]:focus, input[type="search"]:focus, input[type="tel"]:focus, input[type="text"]:focus, input[type="url"]:focus, input[type="color"]:focus, input[type="date"]:focus, input[type="datetime"]:focus, input[type="datetime-local"]:focus, input[type="month"]:focus, input[type="time"]:focus, input[type="week"]:focus, select[multiple=multiple]:focus { - border-color: #00bdf3; - box-shadow: inset 0 1px 3px rgba(0,0,0,.06),0 0 5px rgba(0,169,218,.7) -} -#header-wrapper { - background: #8451a1; - color: #fff; - text-align: center; - border-bottom: 4px solid #9c6fb6; - padding: 1rem; -} -#header a { - display: inline-block; -} -#header #logo-svg { - width: 8rem; - height: 2rem; -} -#header #logo-svg path { - fill: #fff; -} -.searchbox { - margin-top: 1rem; - position: relative; - border: 1px solid #915eae; - background: #764890; - border-radius: 4px; -} -.searchbox label { - color: rgba(255, 255, 255, 0.8); - position: absolute; - left: 10px; - top: 3px; -} -.searchbox span { - color: rgba(255, 255, 255, 0.6); - position: absolute; - right: 10px; - top: 3px; - cursor: pointer; -} -.searchbox span:hover { - color: rgba(255, 255, 255, 0.9); -} -.searchbox input { - display: inline-block; - color: #fff; - width: 100%; - height: 30px; - background: transparent; - border: 0; - padding: 0 25px 0 30px; - margin: 0; - font-weight: 300; -} -.searchbox input::-webkit-input-placeholder { - color: rgba(255, 255, 255, 0.6); -} -.searchbox input::-moz-placeholder { - color: rgba(255, 255, 255, 0.6); -} -.searchbox input:-moz-placeholder { - color: rgba(255, 255, 255, 0.6); -} -.searchbox input:-ms-input-placeholder { - color: rgba(255, 255, 255, 0.6); -} -#sidebar-toggle-span { - display: none; -} -@media only all and (max-width: 47.938em) { - #sidebar-toggle-span { - display: inline; - } -} -#sidebar { - background-color: #322A38; - position: fixed; - top: 0; - width: 300px; - bottom: 0; - left: 0; - font-weight: 400; - font-size: 15px; -} -#sidebar a { - color: #ccc; -} -#sidebar a:hover { - color: #e6e6e6; -} -#sidebar a.subtitle { - color: rgba(204, 204, 204, 0.6); -} -#sidebar hr { - border-bottom: 1px solid #2a232f; -} -#sidebar a.padding { - padding: 0 1rem; -} -#sidebar h5 { - margin: 2rem 0 0; - position: relative; - line-height: 2; -} -#sidebar h5 a { - display: block; - margin-left: 0; - margin-right: 0; - padding-left: 1rem; - padding-right: 1rem; -} -#sidebar h5 i { - color: rgba(204, 204, 204, 0.6); - position: absolute; - right: 0.6rem; - top: 0.7rem; - font-size: 80%; -} -#sidebar h5.parent a { - background: #201b24; - color: #d9d9d9 !important; -} -#sidebar h5.active a { - background: #fff; - color: #777 !important; -} -#sidebar h5.active i { - color: #777 !important; -} -#sidebar h5 + ul.topics { - display: none; - margin-top: 0; -} -#sidebar h5.parent + ul.topics, #sidebar h5.active + ul.topics { - display: block; -} -#sidebar ul { - list-style: none; - padding: 0; - margin: 0; -} -#sidebar ul.searched a { - color: #999999; -} -#sidebar ul.searched .search-match a { - color: #e6e6e6; -} -#sidebar ul.searched .search-match a:hover { - color: white; -} -#sidebar ul.topics { - margin: 0 1rem; -} -#sidebar ul.topics.searched ul { - display: block; -} -#sidebar ul.topics ul { - display: none; - padding-bottom: 1rem; -} -#sidebar ul.topics ul ul { - padding-bottom: 0; -} -#sidebar ul.topics li.parent ul, #sidebar ul.topics > li.active ul { - display: block; -} -#sidebar ul.topics > li > a { - line-height: 2rem; - font-size: 1.1rem; -} -#sidebar ul.topics > li > a b { - opacity: 0.5; - font-weight: normal; -} -#sidebar ul.topics > li > a .fa { - margin-top: 9px; -} -#sidebar ul.topics > li.parent, #sidebar ul.topics > li.active { - background: #251f29; - margin-left: -1rem; - margin-right: -1rem; - padding-left: 1rem; - padding-right: 1rem; -} -#sidebar ul li.active > a { - background: #fff; - color: #777 !important; - margin-left: -1rem; - margin-right: -1rem; - padding-left: 1rem; - padding-right: 1rem; -} -#sidebar ul li { - padding: 0; -} -#sidebar ul li.visited + span { - margin-right: 16px; -} -#sidebar ul li a { - display: block; - padding: 2px 0; -} -#sidebar ul li a span { - text-overflow: ellipsis; - overflow: hidden; - white-space: nowrap; - display: block; -} -#sidebar ul li > a { - padding: 4px 0; -} -#sidebar ul li.visited > a .read-icon { - color: #9c6fb6; - display: inline; -} -#sidebar ul li li { - padding-left: 1rem; - text-indent: 0.2rem; -} -#main { - background: #f7f7f7; - margin: 0 0 1.563rem 0; -} -#body { - position: relative; - margin-left: 300px; - min-height: 100%; -} -#body img, #body .video-container { - margin: 3rem auto; - display: block; - text-align: center; -} -#body img.border, #body .video-container.border { - border: 2px solid #e6e6e6 !important; - padding: 2px; -} -#body img.shadow, #body .video-container.shadow { - box-shadow: 0 10px 30px rgba(0, 0, 0, 0.1); -} -#body img.inline { - display: inline !important; - margin: 0 !important; - vertical-align: bottom; -} -#body .bordered { - border: 1px solid #ccc; -} -#body .padding { - padding: 3rem 6rem; -} -@media only all and (max-width: 59.938em) { - #body .padding { - position: static; - padding: 15px 3rem; - } -} -@media only all and (max-width: 47.938em) { - #body .padding { - padding: 5px 1rem; - } -} -#body h1 + hr { - margin-top: -1.7rem; - margin-bottom: 3rem; -} -@media only all and (max-width: 59.938em) { - #body #navigation { - position: static; - margin-right: 0 !important; - width: 100%; - display: table; - } -} -#body .nav { - position: fixed; - top: 0; - bottom: 0; - width: 4rem; - font-size: 50px; - height: 100%; - cursor: pointer; - display: table; - text-align: center; -} -#body .nav > i { - display: table-cell; - vertical-align: middle; - text-align: center; -} -@media only all and (max-width: 59.938em) { - #body .nav { - display: table-cell; - position: static; - top: auto; - width: 50%; - text-align: center; - height: 100px; - line-height: 100px; - padding-top: 0; - } - #body .nav > i { - display: inline-block; - } -} -#body .nav:hover { - background: #F6F6F6; -} -#body .nav.nav-pref { - left: 0; -} -#body .nav.nav-next { - right: 0; -} -#body-inner { - margin-bottom: 5rem; -} -#chapter { - display: flex; - align-items: center; - justify-content: center; - height: 100%; - padding: 2rem 0; -} -#chapter #body-inner { - padding-bottom: 3rem; - max-width: 80%; -} -#chapter h3 { - font-family: "Work Sans", "Helvetica", "Tahoma", "Geneva", "Arial", sans-serif; - font-weight: 300; - text-align: center; -} -#chapter h1 { - font-size: 5rem; - border-bottom: 4px solid #F0F2F4; -} -#chapter p { - text-align: center; - font-size: 1.2rem; -} -#footer { - padding: 3rem 1rem; - color: #b3b3b3; - font-size: 13px; -} -#footer p { - margin: 0; -} -body { - font-family: "Work Sans", "Helvetica", "Tahoma", "Geneva", "Arial", sans-serif; - font-weight: 300; - line-height: 1.6; - font-size: 18px !important; -} -h2, h3, h4, h5, h6 { - font-family: "Work Sans", "Helvetica", "Tahoma", "Geneva", "Arial", sans-serif; - text-rendering: optimizeLegibility; - color: #5e5e5e; - font-weight: 400; - letter-spacing: -1px; -} -h1 { - font-family: "Novacento Sans Wide", "Helvetica", "Tahoma", "Geneva", "Arial", sans-serif; - text-align: center; - text-transform: uppercase; - color: #222; - font-weight: 200; -} -blockquote { - border-left: 10px solid #F0F2F4; -} -blockquote p { - font-size: 1.1rem; - color: #999; -} -blockquote cite { - display: block; - text-align: right; - color: #666; - font-size: 1.2rem; -} -div.notices { - margin: 2rem 0; - position: relative; -} -div.notices p { - padding: 15px; - display: block; - font-size: 1rem; - margin-top: 0rem; - margin-bottom: 0rem; - color: #666; -} -div.notices p:first-child:before { - position: absolute; - top: 2px; - color: #fff; - font-family: "Font Awesome 5 Free"; - font-weight: 900; - content: "\f06a"; - left: 10px; -} -div.notices p:first-child:after { - position: absolute; - top: 2px; - color: #fff; - left: 2rem; -} -div.notices.info p { - border-top: 30px solid #F0B37E; - background: #FFF2DB; -} -div.notices.info p:first-child:after { - content: 'Info'; -} -div.notices.warning p { - border-top: 30px solid rgba(217, 83, 79, 0.8); - background: #FAE2E2; -} -div.notices.warning p:first-child:after { - content: 'Warning'; -} -div.notices.note p { - border-top: 30px solid #6AB0DE; - background: #E7F2FA; -} -div.notices.note p:first-child:after { - content: 'Note'; -} -div.notices.tip p { - border-top: 30px solid rgba(92, 184, 92, 0.8); - background: #E6F9E6; -} -div.notices.tip p:first-child:after { - content: 'Tip'; -} - -/* attachments shortcode */ - -section.attachments { - margin: 2rem 0; - position: relative; -} - -section.attachments label { - font-weight: 400; - padding-left: 0.5em; - padding-top: 0.2em; - padding-bottom: 0.2em; - margin: 0; -} - -section.attachments .attachments-files { - padding: 15px; - display: block; - font-size: 1rem; - margin-top: 0rem; - margin-bottom: 0rem; - color: #666; -} - -section.attachments.orange label { - color: #fff; - background: #F0B37E; -} - -section.attachments.orange .attachments-files { - background: #FFF2DB; -} - -section.attachments.green label { - color: #fff; - background: rgba(92, 184, 92, 0.8); -} - -section.attachments.green .attachments-files { - background: #E6F9E6; -} - -section.attachments.blue label { - color: #fff; - background: #6AB0DE; -} - -section.attachments.blue .attachments-files { - background: #E7F2FA; -} - -section.attachments.grey label { - color: #fff; - background: #505d65; -} - -section.attachments.grey .attachments-files { - background: #f4f4f4; -} - -/* Children shortcode */ - -/* Children shortcode */ -.children p { - font-size: small; - margin-top: 0px; - padding-top: 0px; - margin-bottom: 0px; - padding-bottom: 0px; -} -.children-li p { - font-size: small; - font-style: italic; - -} -.children-h2 p, .children-h3 p { - font-size: small; - margin-top: 0px; - padding-top: 0px; - margin-bottom: 0px; - padding-bottom: 0px; -} -.children h3,.children h2 { - margin-bottom: 0px; - margin-top: 5px; -} - -code, kbd, pre, samp { - font-family: "Consolas", menlo, monospace; - font-size: 92%; -} -code { - border-radius: 2px; - white-space: nowrap; - color: #5e5e5e; - background: #FFF7DD; - border: 1px solid #fbf0cb; - padding: 0px 2px; -} -code + .copy-to-clipboard { - margin-left: -1px; - border-left: 0 !important; - font-size: inherit !important; - vertical-align: middle; - height: 21px; - top: 0; -} -pre { - padding: 1rem; - margin: 2rem 0; - background: #282c34; - border: 0; - border-radius: 2px; - line-height: 1.15; -} -pre code { - color: whitesmoke; - background: inherit; - white-space: inherit; - border: 0; - padding: 0; - margin: 0; - font-size: 15px; -} -hr { - border-bottom: 4px solid #F0F2F4; -} -.page-title { - margin-top: -25px; - padding: 25px; - float: left; - clear: both; - background: #9c6fb6; - color: #fff; -} -#body a.anchor-link { - color: #ccc; -} -#body a.anchor-link:hover { - color: #9c6fb6; -} -#body-inner .tabs-wrapper.ui-theme-badges { - background: #1d1f21; -} -#body-inner .tabs-wrapper.ui-theme-badges .tabs-nav li { - font-size: 0.9rem; - text-transform: uppercase; -} -#body-inner .tabs-wrapper.ui-theme-badges .tabs-nav li a { - background: #35393c; -} -#body-inner .tabs-wrapper.ui-theme-badges .tabs-nav li.current a { - background: #4d5257; -} -#body-inner pre { - white-space: pre-wrap; -} -.tabs-wrapper pre { - margin: 1rem 0; - border: 0; - padding: 0; - background: inherit; -} -table { - border: 1px solid #eaeaea; - table-layout: auto; -} -th { - background: #f7f7f7; - padding: 0.5rem; -} -td { - padding: 0.5rem; - border: 1px solid #eaeaea; -} -.button { - background: #9c6fb6; - color: #fff; - box-shadow: 0 3px 0 #00a5d4; -} -.button:hover { - background: #00a5d4; - box-shadow: 0 3px 0 #008db6; - color: #fff; -} -.button:active { - box-shadow: 0 1px 0 #008db6; -} -.button-secondary { - background: #F8B450; - color: #fff; - box-shadow: 0 3px 0 #f7a733; -} -.button-secondary:hover { - background: #f7a733; - box-shadow: 0 3px 0 #f69b15; - color: #fff; -} -.button-secondary:active { - box-shadow: 0 1px 0 #f69b15; -} -.bullets { - margin: 1.7rem 0; - margin-left: -0.85rem; - margin-right: -0.85rem; - overflow: auto; -} -.bullet { - float: left; - padding: 0 0.85rem; -} -.two-column-bullet { - width: 50%; -} -@media only all and (max-width: 47.938em) { - .two-column-bullet { - width: 100%; - } -} -.three-column-bullet { - width: 33.33333%; -} -@media only all and (max-width: 47.938em) { - .three-column-bullet { - width: 100%; - } -} -.four-column-bullet { - width: 25%; -} -@media only all and (max-width: 47.938em) { - .four-column-bullet { - width: 100%; - } -} -.bullet-icon { - float: left; - background: #9c6fb6; - padding: 0.875rem; - width: 3.5rem; - height: 3.5rem; - border-radius: 50%; - color: #fff; - font-size: 1.75rem; - text-align: center; -} -.bullet-icon-1 { - background: #9c6fb6; -} -.bullet-icon-2 { - background: #00f3d8; -} -.bullet-icon-3 { - background: #e6f300; -} -.bullet-content { - margin-left: 4.55rem; -} -.tooltipped { - position: relative; -} -.tooltipped:after { - position: absolute; - z-index: 1000000; - display: none; - padding: 5px 8px; - font: normal normal 11px/1.5 "Work Sans", "Helvetica", "Tahoma", "Geneva", "Arial", sans-serif; - color: #fff; - text-align: center; - text-decoration: none; - text-shadow: none; - text-transform: none; - letter-spacing: normal; - word-wrap: break-word; - white-space: pre; - pointer-events: none; - content: attr(aria-label); - background: rgba(0, 0, 0, 0.8); - border-radius: 3px; - -webkit-font-smoothing: subpixel-antialiased; -} -.tooltipped:before { - position: absolute; - z-index: 1000001; - display: none; - width: 0; - height: 0; - color: rgba(0, 0, 0, 0.8); - pointer-events: none; - content: ""; - border: 5px solid transparent; -} -.tooltipped:hover:before, .tooltipped:hover:after, .tooltipped:active:before, .tooltipped:active:after, .tooltipped:focus:before, .tooltipped:focus:after { - display: inline-block; - text-decoration: none; -} -.tooltipped-s:after, .tooltipped-se:after, .tooltipped-sw:after { - top: 100%; - right: 50%; - margin-top: 5px; -} -.tooltipped-s:before, .tooltipped-se:before, .tooltipped-sw:before { - top: auto; - right: 50%; - bottom: -5px; - margin-right: -5px; - border-bottom-color: rgba(0, 0, 0, 0.8); -} -.tooltipped-se:after { - right: auto; - left: 50%; - margin-left: -15px; -} -.tooltipped-sw:after { - margin-right: -15px; -} -.tooltipped-n:after, .tooltipped-ne:after, .tooltipped-nw:after { - right: 50%; - bottom: 100%; - margin-bottom: 5px; -} -.tooltipped-n:before, .tooltipped-ne:before, .tooltipped-nw:before { - top: -5px; - right: 50%; - bottom: auto; - margin-right: -5px; - border-top-color: rgba(0, 0, 0, 0.8); -} -.tooltipped-ne:after { - right: auto; - left: 50%; - margin-left: -15px; -} -.tooltipped-nw:after { - margin-right: -15px; -} -.tooltipped-s:after, .tooltipped-n:after { - transform: translateX(50%); -} -.tooltipped-w:after { - right: 100%; - bottom: 50%; - margin-right: 5px; - transform: translateY(50%); -} -.tooltipped-w:before { - top: 50%; - bottom: 50%; - left: -5px; - margin-top: -5px; - border-left-color: rgba(0, 0, 0, 0.8); -} -.tooltipped-e:after { - bottom: 50%; - left: 100%; - margin-left: 5px; - transform: translateY(50%); -} -.tooltipped-e:before { - top: 50%; - right: -5px; - bottom: 50%; - margin-top: -5px; - border-right-color: rgba(0, 0, 0, 0.8); -} -.highlightable { - padding: 1rem 0 1rem; - overflow: auto; - position: relative; -} -.hljs::selection, .hljs span::selection { - background: #b7b7b7; -} -.lightbox-active #body { - overflow: visible; -} -.lightbox-active #body .padding { - overflow: visible; -} -#github-contrib i { - vertical-align: middle; -} -.featherlight img { - margin: 0 !important; -} -.lifecycle #body-inner ul { - list-style: none; - margin: 0; - padding: 2rem 0 0; - position: relative; -} -.lifecycle #body-inner ol { - margin: 1rem 0 1rem 0; - padding: 2rem; - position: relative; -} -.lifecycle #body-inner ol li { - margin-left: 1rem; -} -.lifecycle #body-inner ol strong, .lifecycle #body-inner ol label, .lifecycle #body-inner ol th { - text-decoration: underline; -} -.lifecycle #body-inner ol ol { - margin-left: -1rem; -} -.lifecycle #body-inner h3[class*='level'] { - font-size: 20px; - position: absolute; - margin: 0; - padding: 4px 10px; - right: 0; - z-index: 1000; - color: #fff; - background: #1ABC9C; -} -.lifecycle #body-inner ol h3 { - margin-top: 1rem !important; - right: 2rem !important; -} -.lifecycle #body-inner .level-1 + ol { - background: #f6fefc; - border: 4px solid #1ABC9C; - color: #16A085; -} -.lifecycle #body-inner .level-1 + ol h3 { - background: #2ECC71; -} -.lifecycle #body-inner .level-2 + ol { - background: #f7fdf9; - border: 4px solid #2ECC71; - color: #27AE60; -} -.lifecycle #body-inner .level-2 + ol h3 { - background: #3498DB; -} -.lifecycle #body-inner .level-3 + ol { - background: #f3f9fd; - border: 4px solid #3498DB; - color: #2980B9; -} -.lifecycle #body-inner .level-3 + ol h3 { - background: #34495E; -} -.lifecycle #body-inner .level-4 + ol { - background: #e4eaf0; - border: 4px solid #34495E; - color: #2C3E50; -} -.lifecycle #body-inner .level-4 + ol h3 { - background: #34495E; -} -#top-bar { - background: #F6F6F6; - border-radius: 2px; - padding: 0 1rem; - height: 0; - min-height: 3rem; -} -#top-github-link { - position: relative; - z-index: 1; - float: right; - display: block; -} -#body #breadcrumbs { - height: auto; - margin-bottom: 0; - padding-left: 0; - line-height: 1.4; - overflow: hidden; - white-space: nowrap; - text-overflow: ellipsis; - width: 70%; - display: inline-block; - float: left; -} -#body #breadcrumbs span { - padding: 0 0.1rem; -} -@media only all and (max-width: 59.938em) { - #sidebar { - width: 230px; - } - #body { - margin-left: 230px; - } -} -@media only all and (max-width: 47.938em) { - #sidebar { - width: 230px; - left: -230px; - } - #body { - margin-left: 0; - width: 100%; - } - .sidebar-hidden { - overflow: hidden; - } - .sidebar-hidden #sidebar { - left: 0; - } - .sidebar-hidden #body { - margin-left: 230px; - overflow: hidden; - } - .sidebar-hidden #overlay { - position: absolute; - left: 0; - right: 0; - top: 0; - bottom: 0; - z-index: 10; - background: rgba(255, 255, 255, 0.5); - cursor: pointer; - } -} -.copy-to-clipboard { - background-image: url(../images/clippy.svg); - background-position: 50% 50%; - background-size: 16px 16px; - background-repeat: no-repeat; - width: 27px; - height: 1.45rem; - top: -1px; - display: inline-block; - vertical-align: middle; - position: relative; - color: #5e5e5e; - background-color: #FFF7DD; - margin-left: -.2rem; - cursor: pointer; - border-radius: 0 2px 2px 0; - margin-bottom: 1px; -} -.copy-to-clipboard:hover { - background-color: #E8E2CD; -} -pre .copy-to-clipboard { - position: absolute; - right: 4px; - top: 4px; - background-color: #C1C4C6; - color: #ccc; - border-radius: 2px; -} -pre .copy-to-clipboard:hover { - background-color: #00bdf3; - color: #fff; -} -.parent-element { - -webkit-transform-style: preserve-3d; - -moz-transform-style: preserve-3d; - transform-style: preserve-3d; -} - -#sidebar ul.topics > li > a .read-icon { - margin-top: 9px; -} - -#sidebar ul { - list-style: none; - padding: 0; - margin: 0; -} - -#sidebar #shortcuts li { - padding: 2px 0; - list-style: none; -} - -#sidebar ul li .read-icon { - display: none; - float: right; - font-size: 13px; - min-width: 16px; - margin: 4px 0 0 0; - text-align: right; -} -#sidebar ul li.visited > a .read-icon { - color: #00bdf3; - display: inline; -} - -#sidebar #shortcuts h3 { - font-family: "Novacento Sans Wide", "Helvetica", "Tahoma", "Geneva", "Arial", sans-serif; - color: white ; - margin-top:1rem; - padding-left: 1rem; -} - -#homelinks { - background-color: #9c6fb6; - color: #fff; - padding: 7px 0; - border-bottom: 4px solid #9c6fb6; -} - -#searchResults { - text-align: left; -} - -option { - color: initial; -} diff --git a/excalidraw/workshop_architecture_full.excalidraw b/excalidraw/workshop_architecture_full.excalidraw deleted file mode 100644 index cdfdea5..0000000 --- a/excalidraw/workshop_architecture_full.excalidraw +++ /dev/null @@ -1,9655 +0,0 @@ -{ - "type": "excalidraw", - "version": 2, - "source": "https://excalidraw.com", - "elements": [ - { - "type": "rectangle", - "version": 717, - "versionNonce": 1059011130, - "isDeleted": false, - "id": "aCEE8GhXJyiI15OYj-PtO", - "fillStyle": "cross-hatch", - "strokeWidth": 2, - "strokeStyle": "solid", - "roughness": 2, - "opacity": 100, - "angle": 0, - "x": 1129, - "y": 344.7878787878785, - "strokeColor": "#000000", - "backgroundColor": "transparent", - "width": 228.6666666666667, - "height": 224.21212121212136, - "seed": 1921109149, - "groupIds": [], - "strokeSharpness": "sharp", - "boundElements": [], - "updated": 1662370182112, - "link": null, - "locked": false - }, - { - "type": "text", - "version": 422, - "versionNonce": 678976230, - "isDeleted": false, - "id": "BA2ZdzWDOuMDwOhnhFKyA", - "fillStyle": "cross-hatch", - "strokeWidth": 2, - "strokeStyle": "solid", - "roughness": 2, - "opacity": 100, - "angle": 5.068777550076868, - "x": 819.3734247286939, - "y": 540.5894774693073, - "strokeColor": "#000000", - "backgroundColor": "transparent", - "width": 120.95474260476757, - "height": 13.51449638042094, - "seed": 1782027613, - "groupIds": [], - "strokeSharpness": "sharp", - "boundElements": [ - { - "id": "6zKDixmk2nfg2iRiN4mHi", - "type": "arrow" - } - ], - "updated": 1662370636374, - "link": null, - "locked": false, - "fontSize": 10.811597104336753, - "fontFamily": 1, - "text": "trigger security checks", - "baseline": 9.51449638042094, - "textAlign": "center", - "verticalAlign": "top", - "containerId": null, - "originalText": "trigger security checks" - }, - { - "type": "text", - "version": 623, - "versionNonce": 1114628858, - "isDeleted": false, - "id": "1df0UH0SLiIgY9wx9MNc5", - "fillStyle": "cross-hatch", - "strokeWidth": 2, - "strokeStyle": "solid", - "roughness": 2, - "opacity": 100, - "angle": 0, - "x": 1135.5681818181813, - "y": 323, - "strokeColor": "#000000", - "backgroundColor": "transparent", - "width": 86.86363636363646, - "height": 37.121212121212146, - "seed": 2028306067, - "groupIds": [], - "strokeSharpness": "sharp", - "boundElements": [], - "updated": 1662370182112, - "link": null, - "locked": false, - "fontSize": 14.84848484848486, - "fontFamily": 1, - "text": "workshop-int\n", - "baseline": 31.121212121212146, - "textAlign": "center", - "verticalAlign": "top", - "containerId": null, - "originalText": "workshop-int\n" - }, - { - "type": "rectangle", - "version": 1808, - "versionNonce": 1194287526, - "isDeleted": false, - "id": "WfGIRX8nYQy4AUcSeR6I1", - "fillStyle": "cross-hatch", - "strokeWidth": 1, - "strokeStyle": "solid", - "roughness": 2, - "opacity": 100, - "angle": 0, - "x": 1176.7170279974796, - "y": 390.3843234864305, - "strokeColor": "#5665dc", - "backgroundColor": "#5665dc", - "width": 128.77806521716136, - "height": 119.77709684080031, - "seed": 257666643, - "groupIds": [ - "0juXsMdVUXFekjks8pcBc" - ], - "strokeSharpness": "round", - "boundElements": [ - { - "id": "IdDsqRoxUzCm_nD_ZpV20", - "type": "arrow" - } - ], - "updated": 1662370182112, - "link": null, - "locked": false - }, - { - "type": "rectangle", - "version": 1832, - "versionNonce": 254636986, - "isDeleted": false, - "id": "bWXOj_zq2Qi_SVGQTDWQG", - "fillStyle": "solid", - "strokeWidth": 1, - "strokeStyle": "solid", - "roughness": 2, - "opacity": 100, - "angle": 0, - "x": 1184.2357316400507, - "y": 397.83670420412227, - "strokeColor": "#5665dc", - "backgroundColor": "#ffffff", - "width": 114.862883930759, - "height": 103.99224071972951, - "seed": 1748718685, - "groupIds": [ - "0juXsMdVUXFekjks8pcBc" - ], - "strokeSharpness": "round", - "boundElements": [ - { - "id": "YGLbIKYvHLJ7195OM_YrC", - "type": "arrow" - }, - { - "id": "IdDsqRoxUzCm_nD_ZpV20", - "type": "arrow" - } - ], - "updated": 1662370182112, - "link": null, - "locked": false - }, - { - "type": "line", - "version": 1998, - "versionNonce": 1533033702, - "isDeleted": false, - "id": "lcDPG43gFhHt9aIby4doG", - "fillStyle": "cross-hatch", - "strokeWidth": 1, - "strokeStyle": "solid", - "roughness": 1, - "opacity": 100, - "angle": 1.5774237450700657, - "x": 1253.8860691305404, - "y": 417.3889650545235, - "strokeColor": "#c92a2a", - "backgroundColor": "#fa5252", - "width": 74.68679229074219, - "height": 64.68064292907803, - "seed": 1259891699, - "groupIds": [ - "0juXsMdVUXFekjks8pcBc" - ], - "strokeSharpness": "sharp", - "boundElements": [], - "updated": 1662370182112, - "link": null, - "locked": false, - "lastCommittedPoint": null, - "startArrowhead": null, - "endArrowhead": null, - "points": [ - [ - 0, - 0 - ], - [ - 37.343396145371045, - 64.68064292907785 - ], - [ - -37.343396145371145, - 64.68064292907803 - ], - [ - 0, - 0 - ] - ] - }, - { - "type": "line", - "version": 2424, - "versionNonce": 930802810, - "isDeleted": false, - "id": "JTnJL06DYdPzU92et-hzK", - "fillStyle": "cross-hatch", - "strokeWidth": 1, - "strokeStyle": "solid", - "roughness": 1, - "opacity": 100, - "angle": 4.721247315744137, - "x": 1232.734836722075, - "y": 418.0927781258739, - "strokeColor": "#5665dc", - "backgroundColor": "#5665dc", - "width": 74.68679229074219, - "height": 64.68064292907803, - "seed": 1642774717, - "groupIds": [ - "0juXsMdVUXFekjks8pcBc" - ], - "strokeSharpness": "sharp", - "boundElements": [], - "updated": 1662370182112, - "link": null, - "locked": false, - "lastCommittedPoint": null, - "startArrowhead": null, - "endArrowhead": null, - "points": [ - [ - 0, - 0 - ], - [ - 37.343396145371045, - 64.68064292907785 - ], - [ - -37.343396145371145, - 64.68064292907803 - ], - [ - 0, - 0 - ] - ] - }, - { - "type": "line", - "version": 2746, - "versionNonce": 1129558054, - "isDeleted": false, - "id": "iBdZ_9MMf6SLDTGeAMAB1", - "fillStyle": "cross-hatch", - "strokeWidth": 1, - "strokeStyle": "solid", - "roughness": 1, - "opacity": 100, - "angle": 0.0005581869343673773, - "x": 1242.0581191009499, - "y": 477.99447587916006, - "strokeColor": "#5665dc", - "backgroundColor": "#5665dc", - "width": 28.93008917102277, - "height": 29.85184214744162, - "seed": 397178259, - "groupIds": [ - "0juXsMdVUXFekjks8pcBc" - ], - "strokeSharpness": "sharp", - "boundElements": [], - "updated": 1662370182112, - "link": null, - "locked": false, - "lastCommittedPoint": null, - "startArrowhead": null, - "endArrowhead": null, - "points": [ - [ - 0, - 0 - ], - [ - 14.465044585511265, - 29.851842147441538 - ], - [ - -14.465044585511507, - 29.85184214744163 - ], - [ - 0, - 0 - ] - ] - }, - { - "type": "rectangle", - "version": 1760, - "versionNonce": 287001914, - "isDeleted": false, - "id": "H-tSugrM2myy28GQY2IZv", - "fillStyle": "solid", - "strokeWidth": 1, - "strokeStyle": "solid", - "roughness": 2, - "opacity": 100, - "angle": 5.989889724533434, - "x": 1256.0540733522507, - "y": 496.63040678225923, - "strokeColor": "#ffffff", - "backgroundColor": "#ffffff", - "width": 10.160337121913365, - "height": 16.284127669015405, - "seed": 1605214493, - "groupIds": [ - "0juXsMdVUXFekjks8pcBc" - ], - "strokeSharpness": "round", - "boundElements": [], - "updated": 1662370182112, - "link": null, - "locked": false - }, - { - "type": "line", - "version": 1685, - "versionNonce": 452377446, - "isDeleted": false, - "id": "VUXao9dORybHOlVhrhCXA", - "fillStyle": "cross-hatch", - "strokeWidth": 1, - "strokeStyle": "solid", - "roughness": 1, - "opacity": 100, - "angle": 0, - "x": 1244.747048670161, - "y": 427.39842400693544, - "strokeColor": "#000000", - "backgroundColor": "#000000", - "width": 40.55361696256771, - "height": 48.4326346843801, - "seed": 1951288115, - "groupIds": [ - "0juXsMdVUXFekjks8pcBc" - ], - "strokeSharpness": "sharp", - "boundElements": [], - "updated": 1662370182112, - "link": null, - "locked": false, - "lastCommittedPoint": null, - "startArrowhead": null, - "endArrowhead": null, - "points": [ - [ - 0, - 0 - ], - [ - 20.27680848128371, - 12.108158671094856 - ], - [ - 20.2768084812838, - 36.32447601328501 - ], - [ - -2.4868995751603507e-14, - 48.432634684380105 - ], - [ - -20.276808481283926, - 36.32447601328466 - ], - [ - -20.2768084812839, - 12.10815867109517 - ], - [ - 0, - 0 - ] - ] - }, - { - "type": "line", - "version": 1523, - "versionNonce": 1097963002, - "isDeleted": false, - "id": "nHMEw2NpxPNvOcrQiy5_c", - "fillStyle": "hachure", - "strokeWidth": 2, - "strokeStyle": "solid", - "roughness": 1, - "opacity": 100, - "angle": 0, - "x": 1221.6645102830248, - "y": 434.3448499324527, - "strokeColor": "#ffffff", - "backgroundColor": "#ffffff", - "width": 20.313407099735958, - "height": 14.916654339445962, - "seed": 1995797885, - "groupIds": [ - "0juXsMdVUXFekjks8pcBc" - ], - "strokeSharpness": "round", - "boundElements": [], - "updated": 1662370182112, - "link": null, - "locked": false, - "startBinding": null, - "endBinding": null, - "lastCommittedPoint": null, - "startArrowhead": null, - "endArrowhead": null, - "points": [ - [ - 0, - 0 - ], - [ - 20.313407099735958, - 14.916654339445962 - ] - ] - }, - { - "type": "line", - "version": 1411, - "versionNonce": 2023120550, - "isDeleted": false, - "id": "K8W9xzsZzyiKou_xdzPIZ", - "fillStyle": "hachure", - "strokeWidth": 1, - "strokeStyle": "solid", - "roughness": 2, - "opacity": 100, - "angle": 0, - "x": 1232.5309223904987, - "y": 443.6306971486025, - "strokeColor": "#ffffff", - "backgroundColor": "#ffffff", - "width": 4.345730696797424, - "height": 3.1371796212345773, - "seed": 895773907, - "groupIds": [ - "0juXsMdVUXFekjks8pcBc" - ], - "strokeSharpness": "round", - "boundElements": [], - "updated": 1662370182112, - "link": null, - "locked": false, - "startBinding": null, - "endBinding": null, - "lastCommittedPoint": null, - "startArrowhead": null, - "endArrowhead": null, - "points": [ - [ - 0, - 0 - ], - [ - 4.345730696797424, - 3.1371796212345773 - ] - ] - }, - { - "type": "line", - "version": 1632, - "versionNonce": 1233176250, - "isDeleted": false, - "id": "xw4komaULiQXoDHT1Xp2j", - "fillStyle": "hachure", - "strokeWidth": 2, - "strokeStyle": "solid", - "roughness": 1, - "opacity": 100, - "angle": 0, - "x": 1240.150726932103, - "y": 448.11548902064965, - "strokeColor": "#ffffff", - "backgroundColor": "#ffffff", - "width": 0.9367207423221638, - "height": 27.610906202643964, - "seed": 319012317, - "groupIds": [ - "0juXsMdVUXFekjks8pcBc" - ], - "strokeSharpness": "round", - "boundElements": [], - "updated": 1662370182112, - "link": null, - "locked": false, - "startBinding": null, - "endBinding": null, - "lastCommittedPoint": null, - "startArrowhead": null, - "endArrowhead": null, - "points": [ - [ - 0, - 0 - ], - [ - 0.9367207423221638, - 27.610906202643964 - ] - ] - }, - { - "type": "line", - "version": 1619, - "versionNonce": 551524838, - "isDeleted": false, - "id": "_yJjDOoKnsMWnTrt1wA0a", - "fillStyle": "hachure", - "strokeWidth": 2, - "strokeStyle": "solid", - "roughness": 1, - "opacity": 100, - "angle": 0, - "x": 1241.4693408347428, - "y": 451.69040493910006, - "strokeColor": "#ffffff", - "backgroundColor": "#ffffff", - "width": 22.989466928068946, - "height": 14.660400645027837, - "seed": 1585797747, - "groupIds": [ - "0juXsMdVUXFekjks8pcBc" - ], - "strokeSharpness": "round", - "boundElements": [], - "updated": 1662370182112, - "link": null, - "locked": false, - "startBinding": null, - "endBinding": null, - "lastCommittedPoint": null, - "startArrowhead": null, - "endArrowhead": null, - "points": [ - [ - 0, - 0 - ], - [ - 22.989466928068946, - -14.660400645027837 - ] - ] - }, - { - "type": "rectangle", - "version": 228, - "versionNonce": 300670842, - "isDeleted": false, - "id": "eRALweam41mM0DJnwBGGj", - "fillStyle": "cross-hatch", - "strokeWidth": 2, - "strokeStyle": "solid", - "roughness": 1, - "opacity": 100, - "angle": 0, - "x": 321, - "y": 92, - "strokeColor": "#000000", - "backgroundColor": "transparent", - "width": 1567, - "height": 789, - "seed": 1623179475, - "groupIds": [], - "strokeSharpness": "sharp", - "boundElements": [], - "updated": 1662370182112, - "link": null, - "locked": false - }, - { - "type": "text", - "version": 690, - "versionNonce": 987720998, - "isDeleted": false, - "id": "0WlhYvkWB8XZHimUWgYTe", - "fillStyle": "cross-hatch", - "strokeWidth": 2, - "strokeStyle": "solid", - "roughness": 2, - "opacity": 100, - "angle": 0.0773666766259069, - "x": 1088.0876812573165, - "y": 207.409227074606, - "strokeColor": "#000000", - "backgroundColor": "transparent", - "width": 97.03908202421952, - "height": 20.913595263840417, - "seed": 633111965, - "groupIds": [], - "strokeSharpness": "sharp", - "boundElements": [], - "updated": 1662370182112, - "link": null, - "locked": false, - "fontSize": 16.730876211072335, - "fontFamily": 1, - "text": "build&deploy", - "baseline": 14.913595263840417, - "textAlign": "center", - "verticalAlign": "top", - "containerId": null, - "originalText": "build&deploy" - }, - { - "type": "text", - "version": 235, - "versionNonce": 1995825210, - "isDeleted": false, - "id": "AK892q6caE6tpWTkF5uAE", - "fillStyle": "cross-hatch", - "strokeWidth": 2, - "strokeStyle": "solid", - "roughness": 1, - "opacity": 90, - "angle": 0, - "x": 717, - "y": 86, - "strokeColor": "#000000", - "backgroundColor": "transparent", - "width": 758.9142857142855, - "height": 57.00000000000001, - "seed": 354860339, - "groupIds": [], - "strokeSharpness": "sharp", - "boundElements": [], - "updated": 1662370182112, - "link": null, - "locked": false, - "fontSize": 45.6, - "fontFamily": 1, - "text": "DevSecOps Workshop Architecture", - "baseline": 40.00000000000001, - "textAlign": "center", - "verticalAlign": "top", - "containerId": null, - "originalText": "DevSecOps Workshop Architecture" - }, - { - "type": "rectangle", - "version": 664, - "versionNonce": 67295334, - "isDeleted": false, - "id": "8WrqvqiAjc00nYNjo9gZk", - "fillStyle": "cross-hatch", - "strokeWidth": 2, - "strokeStyle": "solid", - "roughness": 1, - "opacity": 90, - "angle": 0, - "x": 570, - "y": 139, - "strokeColor": "#000000", - "backgroundColor": "transparent", - "width": 1281, - "height": 704, - "seed": 1254526419, - "groupIds": [], - "strokeSharpness": "sharp", - "boundElements": [], - "updated": 1662370182112, - "link": null, - "locked": false - }, - { - "type": "line", - "version": 4393, - "versionNonce": 1417791738, - "isDeleted": false, - "id": "wntYgz6uM6s_HBN_KMR65", - "fillStyle": "hachure", - "strokeWidth": 2, - "strokeStyle": "solid", - "roughness": 1, - "opacity": 90, - "angle": 0, - "x": 320.5892304662775, - "y": 65.49173531033286, - "strokeColor": "#c92a2a", - "backgroundColor": "#fa5252", - "width": 130.6580031652458, - "height": 93.55764515124328, - "seed": 717152627, - "groupIds": [ - "g_ZYKV0PmWmJecyAyG0vE" - ], - "strokeSharpness": "round", - "boundElements": [], - "updated": 1662370182112, - "link": null, - "locked": false, - "startBinding": null, - "endBinding": null, - "lastCommittedPoint": null, - "startArrowhead": null, - "endArrowhead": null, - "points": [ - [ - 0, - 0 - ], - [ - 6.751631440482483, - -21.744604760402623 - ], - [ - 12.071098636014012, - -38.24051182001862 - ], - [ - 18.20894540008893, - -49.35058995627114 - ], - [ - 27.006525761929773, - -51.276549057875634 - ], - [ - 38.05464993726463, - -45.7889736593089 - ], - [ - 49.30736900473541, - -53.271073770767785 - ], - [ - 68.33469397336775, - -50.612442114730406 - ], - [ - 102.50204096005159, - -39.927593223842734 - ], - [ - 115.80070894888058, - -28.30547688638609 - ], - [ - 130.6580031652458, - 28.060398329301506 - ], - [ - 111.81824232503068, - 40.286571380475486 - ], - [ - 72.14386401439745, - 36.91440176652914 - ], - [ - 17.18597093940944, - 18.485072139848473 - ], - [ - 0, - 0 - ] - ] - }, - { - "type": "line", - "version": 4577, - "versionNonce": 68606886, - "isDeleted": false, - "id": "JyadeZaz-nApBsaSLy5p6", - "fillStyle": "hachure", - "strokeWidth": 2, - "strokeStyle": "solid", - "roughness": 1, - "opacity": 90, - "angle": 0, - "x": 319.2790907030394, - "y": 70.7991843340742, - "strokeColor": "#c92a2a", - "backgroundColor": "#fa5252", - "width": 216.87058566398125, - "height": 105.98015412636072, - "seed": 238052157, - "groupIds": [ - "g_ZYKV0PmWmJecyAyG0vE" - ], - "strokeSharpness": "round", - "boundElements": [], - "updated": 1662370182112, - "link": null, - "locked": false, - "startBinding": null, - "endBinding": null, - "lastCommittedPoint": null, - "startArrowhead": null, - "endArrowhead": null, - "points": [ - [ - 0, - 0 - ], - [ - -19.027324968632406, - 3.2735182741733384 - ], - [ - -32.53058784959727, - 7.5700110090258 - ], - [ - -40.714383535030386, - 19.027324968632367 - ], - [ - -40.305193750758825, - 39.282219290079546 - ], - [ - -25.36976662484299, - 58.309544258712016 - ], - [ - 7.774605901161586, - 81.01957728578927 - ], - [ - 74.67713562957849, - 103.93420520500231 - ], - [ - 127.87180758489482, - 105.98015412636072 - ], - [ - 165.92645752215952, - 89.2033729712225 - ], - [ - 176.1562021289509, - 64.03820123851503 - ], - [ - 161.425369895171, - 38.05464993726463 - ], - [ - 136.66938794673536, - 25.36976662484304 - ], - [ - 138.53203043061052, - 34.30658204206115 - ], - [ - 136.66289389782435, - 46.66466617069298 - ], - [ - 123.19518701709988, - 53.308145840076726 - ], - [ - 102.76773799801693, - 57.02513045099989 - ], - [ - 69.97145311045328, - 50.813408468305106 - ], - [ - 30.689233820376245, - 36.692103220002295 - ], - [ - 11.61922442992149, - 25.902010098469074 - ], - [ - -0.6265577491993763, - 11.526931487294902 - ], - [ - 0, - 0 - ] - ] - }, - { - "type": "line", - "version": 3849, - "versionNonce": 303208890, - "isDeleted": false, - "id": "7SyGlpzJiL-b6p38pAfBy", - "fillStyle": "hachure", - "strokeWidth": 2, - "strokeStyle": "solid", - "roughness": 1, - "opacity": 90, - "angle": 0, - "x": 321.0994122611919, - "y": 64.29856312402173, - "strokeColor": "#000000", - "backgroundColor": "#111111", - "width": 139.45788662720503, - "height": 62.401442101428636, - "seed": 1978153747, - "groupIds": [ - "g_ZYKV0PmWmJecyAyG0vE" - ], - "strokeSharpness": "round", - "boundElements": [], - "updated": 1662370182112, - "link": null, - "locked": false, - "startBinding": null, - "endBinding": null, - "lastCommittedPoint": null, - "startArrowhead": null, - "endArrowhead": null, - "points": [ - [ - 0, - 0 - ], - [ - 22.804818964804006, - 21.687058566398193 - ], - [ - 86.12085708379372, - 41.73735799570947 - ], - [ - 125.37374612577968, - 38.463839721536395 - ], - [ - 130.37165585906067, - 26.392741085522232 - ], - [ - 135.7254606218297, - 45.82925583842618 - ], - [ - 128.13291561740596, - 58.104949366576136 - ], - [ - 104.83377820588099, - 62.401442101428636 - ], - [ - 71.03520296880636, - 58.923328935119315 - ], - [ - 24.796399983098315, - 43.16952224066042 - ], - [ - 1.590617998009283, - 24.551387056299777 - ], - [ - -3.7324260053752747, - 14.321642449508143 - ], - [ - 0, - 0 - ] - ] - }, - { - "type": "line", - "version": 664, - "versionNonce": 1095268070, - "isDeleted": false, - "id": "f5KYH-B9kAnWXXo51R9-H", - "fillStyle": "cross-hatch", - "strokeWidth": 1, - "strokeStyle": "solid", - "roughness": 1, - "opacity": 100, - "angle": 0, - "x": 1812.0073727222634, - "y": 145.00498424785317, - "strokeColor": "#db212f", - "backgroundColor": "#db212f", - "width": 15.057127222627372, - "height": 12.261063255147196, - "seed": 300826365, - "groupIds": [ - "XlWWhul_UJlIc-Kn2RdKM", - "-Hi40yyCOS2FYhEDrTPcO" - ], - "strokeSharpness": "sharp", - "boundElements": [], - "updated": 1662370182112, - "link": null, - "locked": false, - "lastCommittedPoint": null, - "startArrowhead": null, - "endArrowhead": null, - "points": [ - [ - 0, - 0 - ], - [ - -14.616681342596005, - 5.324819892381999 - ], - [ - -14.616681342596005, - 5.324819892381999 - ], - [ - -14.17376881036628, - 8.82008778368913 - ], - [ - -13.456338021439967, - 12.259542418501105 - ], - [ - 0.44044588003136376, - 7.197468058759137 - ], - [ - 0.44044588003136376, - 7.197468058759137 - ], - [ - -0.011390342271196507, - 3.6270215909966614 - ], - [ - 0.015188088638847574, - -0.0015208366460921496 - ] - ] - }, - { - "type": "line", - "version": 663, - "versionNonce": 785076858, - "isDeleted": false, - "id": "bc07NLfZ6wBrmPN4gV5sW", - "fillStyle": "cross-hatch", - "strokeWidth": 1, - "strokeStyle": "solid", - "roughness": 1, - "opacity": 100, - "angle": 0, - "x": 1876.872135362504, - "y": 128.39985372330213, - "strokeColor": "#db212f", - "backgroundColor": "#db212f", - "width": 18.197948925199313, - "height": 11.115906574214128, - "seed": 2052520787, - "groupIds": [ - "XlWWhul_UJlIc-Kn2RdKM", - "-Hi40yyCOS2FYhEDrTPcO" - ], - "strokeSharpness": "sharp", - "boundElements": [], - "updated": 1662370182112, - "link": null, - "locked": false, - "lastCommittedPoint": null, - "startArrowhead": null, - "endArrowhead": null, - "points": [ - [ - 0, - 0 - ], - [ - 0, - 0 - ], - [ - -1.6547050329147124, - -3.099058079854779 - ], - [ - -3.5691168220090894, - -6.056870990932633 - ], - [ - -18.197948925199313, - -0.7320496501346963 - ], - [ - -18.197948925199313, - -0.7320496501346963 - ], - [ - -15.849545397116387, - 2.0319304577765314 - ], - [ - -13.899821229515979, - 5.059035583281502 - ], - [ - 0, - 0 - ] - ] - }, - { - "type": "line", - "version": 664, - "versionNonce": 1948559910, - "isDeleted": false, - "id": "WI1EejQvjeUV9LSZ1ot1W", - "fillStyle": "cross-hatch", - "strokeWidth": 1, - "strokeStyle": "solid", - "roughness": 1, - "opacity": 100, - "angle": 0, - "x": 1844.741511980074, - "y": 124.46697546257788, - "strokeColor": "#db212f", - "backgroundColor": "#db212f", - "width": 75.81253322810664, - "height": 45.04589164255064, - "seed": 925325149, - "groupIds": [ - "pBHxrM3AqO8CWPQXmIOZ-", - "-Hi40yyCOS2FYhEDrTPcO" - ], - "strokeSharpness": "sharp", - "boundElements": [], - "updated": 1662370182112, - "link": null, - "locked": false, - "lastCommittedPoint": null, - "startArrowhead": null, - "endArrowhead": null, - "points": [ - [ - 0, - 0 - ], - [ - 0, - 0 - ], - [ - 4.259402849426743, - 2.4949658314576624 - ], - [ - 7.903704041554605, - 5.630095259725732 - ], - [ - 22.53405408455911, - 0.3052739189279503 - ], - [ - 22.53405408455911, - 0.3052739189279503 - ], - [ - 19.138173592281127, - -3.8673601303844958 - ], - [ - 15.24909012092732, - -7.552422641459149 - ], - [ - 10.918506322800576, - -10.706893490825568 - ], - [ - 6.19811905654128, - -13.287754727637926 - ], - [ - 2.234222009527124, - -14.897026214166894 - ], - [ - -1.7961109758512919, - -16.07522705437966 - ], - [ - -5.864716901740125, - -16.83260913568656 - ], - [ - -9.943409595632126, - -17.179423621290262 - ], - [ - -14.004023162841754, - -17.12592239860094 - ], - [ - -18.01837722452531, - -16.682356992925172 - ], - [ - -21.95830009233396, - -15.858980015881567 - ], - [ - -25.795617181087014, - -14.666041906464322 - ], - [ - -29.502151008772366, - -13.113795638395903 - ], - [ - -33.049732783873026, - -11.212492012774932 - ], - [ - -36.410182127544914, - -8.972383641219674 - ], - [ - -39.55533024827102, - -6.4037216869325295 - ], - [ - -42.4569982156232, - -3.5167565889083434 - ], - [ - -45.087012892836896, - -0.32174240718104485 - ], - [ - -47.41720114314734, - 3.171070419254548 - ], - [ - -49.41938765716614, - 6.951430002988154 - ], - [ - -51.37716284428783, - 11.962969133604677 - ], - [ - -52.667513799822046, - 17.163459905961766 - ], - [ - -53.278479143547536, - 22.486695231400166 - ], - [ - -53.19809749524285, - 27.866468021260374 - ], - [ - -38.56622733980009, - 22.543163171861146 - ], - [ - -38.56622733980009, - 22.543163171861146 - ], - [ - -37.78918554801086, - 17.799841688978947 - ], - [ - -36.131632929528294, - 13.151064102512025 - ], - [ - -33.31672507179529, - 8.424778886897506 - ], - [ - -29.722953315129445, - 4.472764643544799 - ], - [ - -25.496669942606843, - 1.348259345561452 - ], - [ - -20.784231582550888, - -0.8955077244395149 - ], - [ - -15.731989069621903, - -2.2052985933502995 - ], - [ - -10.486301928975067, - -2.5278810817263966 - ], - [ - -5.193520995270404, - -1.8100201132916165 - ], - [ - 5.684352728102526e-14, - 0.0015193882302124706 - ] - ] - }, - { - "type": "line", - "version": 663, - "versionNonce": 1299116858, - "isDeleted": false, - "id": "6oij0WK_m7aP1lp6Uqqr7", - "fillStyle": "cross-hatch", - "strokeWidth": 1, - "strokeStyle": "solid", - "roughness": 1, - "opacity": 100, - "angle": 0, - "x": 1799.8921534112642, - "y": 156.69499793638806, - "strokeColor": "#db212f", - "backgroundColor": "#db212f", - "width": 21.135260958288036, - "height": 19.23375745127928, - "seed": 857872627, - "groupIds": [ - "xe1BDv0Ik6eS3i_ZaaVrg", - "-Hi40yyCOS2FYhEDrTPcO" - ], - "strokeSharpness": "sharp", - "boundElements": [], - "updated": 1662370182112, - "link": null, - "locked": false, - "lastCommittedPoint": null, - "startArrowhead": null, - "endArrowhead": null, - "points": [ - [ - 0, - 0 - ], - [ - -13.901339169330232, - 5.060556419927578 - ], - [ - -13.901339169330232, - 5.060556419927578 - ], - [ - -12.769757584931266, - 8.810053158656753 - ], - [ - -11.295882201859168, - 12.43895479343112 - ], - [ - -9.490534497058649, - 15.92119563255274 - ], - [ - -7.364535585370593, - 19.230721571650527 - ], - [ - 7.233921788957807, - 13.915012214986383 - ], - [ - 7.233921788957807, - 13.915012214986383 - ], - [ - 4.6748345876696735, - 10.861247547283575 - ], - [ - 2.596717045159691, - 7.486259005275251 - ], - [ - 1.0287214273092773, - 3.84613504446863 - ], - [ - -7.105427357601002e-15, - -0.003035879628753513 - ] - ] - }, - { - "type": "line", - "version": 662, - "versionNonce": 999847270, - "isDeleted": false, - "id": "lXLhUsF6cIPdCalY9LsXj", - "fillStyle": "cross-hatch", - "strokeWidth": 1, - "strokeStyle": "solid", - "roughness": 1, - "opacity": 100, - "angle": 0, - "x": 1860.513037699569, - "y": 151.0961531026524, - "strokeColor": "#db212f", - "backgroundColor": "#db212f", - "width": 75.78996437438275, - "height": 45.03934263026952, - "seed": 442393533, - "groupIds": [ - "PDMHehvMnDWQoTOJluHvO", - "-Hi40yyCOS2FYhEDrTPcO" - ], - "strokeSharpness": "sharp", - "boundElements": [], - "updated": 1662370182112, - "link": null, - "locked": false, - "lastCommittedPoint": null, - "startArrowhead": null, - "endArrowhead": null, - "points": [ - [ - 0, - 0 - ], - [ - 0, - 0 - ], - [ - -0.7979612619600112, - 4.809693690948873 - ], - [ - -2.454340663601258, - 9.395140742641292 - ], - [ - -5.269186239452615, - 14.121420164592262 - ], - [ - -8.862810257701469, - 18.07341123329136 - ], - [ - -13.088905336163094, - 21.197864388304026 - ], - [ - -17.801175679979963, - 23.441518481868417 - ], - [ - -22.853313906967415, - 24.751129747213415 - ], - [ - -28.09903291276312, - 25.073442830240726 - ], - [ - -33.392019521518975, - 24.3552023768524 - ], - [ - -38.5859779383772, - 22.543164620276947 - ], - [ - -42.80189644705284, - 20.093852856518723 - ], - [ - -46.506385111553286, - 16.92369928449945 - ], - [ - -61.10484103746573, - 22.239408641163465 - ], - [ - -61.10484103746573, - 22.239408641163465 - ], - [ - -57.800106458011086, - 26.318906654269917 - ], - [ - -53.96413349916998, - 29.986486785993755 - ], - [ - -49.617567880516816, - 33.17992509127249 - ], - [ - -44.781055321626326, - 35.83699762504376 - ], - [ - -40.81719303659254, - 37.44623398748825 - ], - [ - -36.786952749828814, - 38.62433488700707 - ], - [ - -32.71850035602038, - 39.38156669516916 - ], - [ - -28.639998853021027, - 39.72818998988028 - ], - [ - -24.579617032347983, - 39.6744595553821 - ], - [ - -20.565517891854626, - 39.23063596958054 - ], - [ - -16.62587311988986, - 38.40698560404443 - ], - [ - -12.788839920643921, - 37.21376324301611 - ], - [ - -9.082587085634232, - 35.66123525806417 - ], - [ - -5.535283406377404, - 33.759656433431 - ], - [ - -2.1750860870640736, - 31.519293140685605 - ], - [ - 0.9698302871254398, - 28.950400164069887 - ], - [ - 3.871302718337546, - 26.063238081489523 - ], - [ - 6.501168208718221, - 22.868073264513562 - ], - [ - 8.831263760414274, - 19.375166291047492 - ], - [ - 10.833414788244482, - 15.594771945333305 - ], - [ - 12.79060698798517, - 10.58564008186536 - ], - [ - 14.078509396519241, - 5.387200266356471 - ], - [ - 14.685123336917002, - 0.06607093756920435 - ], - [ - 14.5984559259125, - -5.3111526403892615 - ], - [ - 0.0030358796286549246, - 0.0015208366460797156 - ], - [ - 0, - 0 - ] - ] - }, - { - "type": "line", - "version": 663, - "versionNonce": 1080065018, - "isDeleted": false, - "id": "t6zC6Ks9wMbXlSd_IkbXg", - "fillStyle": "cross-hatch", - "strokeWidth": 1, - "strokeStyle": "solid", - "roughness": 1, - "opacity": 100, - "angle": 0, - "x": 1864.2912948506817, - "y": 133.40343309301588, - "strokeColor": "#db212f", - "backgroundColor": "#db212f", - "width": 18.000512463389445, - "height": 20.36979635441513, - "seed": 200835731, - "groupIds": [ - "OATV6O3C6Jj4jKAau1-nj", - "-Hi40yyCOS2FYhEDrTPcO" - ], - "strokeSharpness": "sharp", - "boundElements": [], - "updated": 1662370182112, - "link": null, - "locked": false, - "lastCommittedPoint": null, - "startArrowhead": null, - "endArrowhead": null, - "points": [ - [ - 0, - 0 - ], - [ - -13.901339169330214, - 5.060556419927573 - ], - [ - -13.901339169330214, - 5.060556419927573 - ], - [ - -12.224351706926663, - 8.65100840745738 - ], - [ - -11.082304774830863, - 12.441228806321043 - ], - [ - -10.499259457199686, - 16.36842299560986 - ], - [ - -10.499282631853335, - 20.369796354415122 - ], - [ - 4.099173294059227, - 15.058646610857604 - ], - [ - 4.099173294059227, - 15.058646610857604 - ], - [ - 3.6036702306080626, - 11.15686632613269 - ], - [ - 2.749359798287061, - 7.328845170326803 - ], - [ - 1.544781856967882, - 3.6010601852401734 - ], - [ - -0.0015179398143487788, - 1.0842021724855044e-19 - ] - ] - }, - { - "type": "rectangle", - "version": 887, - "versionNonce": 1357961382, - "isDeleted": false, - "id": "YbM8xe6NaFlLoIbF5ZNkj", - "fillStyle": "cross-hatch", - "strokeWidth": 2, - "strokeStyle": "solid", - "roughness": 1, - "opacity": 90, - "angle": 0, - "x": 735, - "y": 185, - "strokeColor": "#000000", - "backgroundColor": "transparent", - "width": 96, - "height": 61, - "seed": 580511379, - "groupIds": [], - "strokeSharpness": "sharp", - "boundElements": [ - { - "id": "7Syn5DvjY3mv9SneA2hDa", - "type": "arrow" - }, - { - "id": "LUbBz_tU04VUacwIREtSp", - "type": "arrow" - } - ], - "updated": 1662370182112, - "link": null, - "locked": false - }, - { - "type": "text", - "version": 545, - "versionNonce": 362998970, - "isDeleted": false, - "id": "iuxdb0W-9J_Gkd_DYbuW_", - "fillStyle": "cross-hatch", - "strokeWidth": 2, - "strokeStyle": "solid", - "roughness": 1, - "opacity": 90, - "angle": 0, - "x": 758.5, - "y": 147.5, - "strokeColor": "#000000", - "backgroundColor": "transparent", - "width": 37, - "height": 35, - "seed": 81439549, - "groupIds": [], - "strokeSharpness": "sharp", - "boundElements": [], - "updated": 1662370182112, - "link": null, - "locked": false, - "fontSize": 28, - "fontFamily": 1, - "text": "git", - "baseline": 25, - "textAlign": "center", - "verticalAlign": "top", - "containerId": null, - "originalText": "git" - }, - { - "type": "line", - "version": 1019, - "versionNonce": 1004196838, - "isDeleted": false, - "id": "Q8EB985YDHetJxeoUp0Vw", - "fillStyle": "cross-hatch", - "strokeWidth": 1, - "strokeStyle": "solid", - "roughness": 0, - "opacity": 100, - "angle": 0, - "x": 759.3375385298189, - "y": 197.05127472665572, - "strokeColor": "#428f29", - "backgroundColor": "#609926", - "width": 66.5027317863492, - "height": 41.006360360924916, - "seed": 2142521811, - "groupIds": [ - "zl1s8cNmh8UrJcf74pI-f" - ], - "strokeSharpness": "sharp", - "boundElements": [], - "updated": 1662370182112, - "link": null, - "locked": false, - "lastCommittedPoint": null, - "startArrowhead": null, - "endArrowhead": null, - "points": [ - [ - 0, - 0 - ], - [ - 0, - 0 - ], - [ - -1.9819704021413749, - 0.1700804476166412 - ], - [ - -4.021831182534616, - 0.7059082463466613 - ], - [ - -5.030615013067983, - 1.1176989561642738 - ], - [ - -6.014442852708516, - 1.6289927770316832 - ], - [ - -6.9601750754113105, - 2.242479147921579 - ], - [ - -7.854667456926681, - 2.9608434205133602 - ], - [ - -8.68477832756329, - 3.7867791210730144 - ], - [ - -9.437364995806295, - 4.722969557633341 - ], - [ - -10.099284770140986, - 5.772108256460275 - ], - [ - -10.657395980875966, - 6.9368785255865895 - ], - [ - -11.098555936496442, - 8.21997389127839 - ], - [ - -11.40962220094355, - 9.624079705214903 - ], - [ - -11.577452593614222, - 11.15188745001558 - ], - [ - -11.588904422993668, - 12.806082477359743 - ], - [ - -11.336825464130218, - 15.34153676334101 - ], - [ - -10.822590324842285, - 17.589778994775504 - ], - [ - -10.075910561744195, - 19.568065723855852 - ], - [ - -9.12649824236198, - 21.293639197248098 - ], - [ - -8.004065178765881, - 22.783760054438325 - ], - [ - -6.738322927570264, - 24.05567667303228 - ], - [ - -5.358984067212862, - 25.126637430636144 - ], - [ - -3.8957586215729645, - 26.01389479214918 - ], - [ - -2.378360190911682, - 26.734705309764024 - ], - [ - -0.8365003318433182, - 27.30631327379341 - ], - [ - 0.7001093990176681, - 27.745975236429842 - ], - [ - 2.2017574450569644, - 28.07093957527943 - ], - [ - 3.6387312278367414, - 28.298458755241516 - ], - [ - 4.981321234389505, - 28.445785241215386 - ], - [ - 6.199812842630774, - 28.530167410807024 - ], - [ - 7.264495517769529, - 28.56885772891568 - ], - [ - 7.435231975956343, - 29.14575056314516 - ], - [ - 7.7258916623775775, - 29.854327811998132 - ], - [ - 8.125992713438439, - 30.672101187894526 - ], - [ - 8.625047134604204, - 31.576578315960653 - ], - [ - 9.87808658922341, - 33.555678416402095 - ], - [ - 11.401132637362723, - 35.611693201627844 - ], - [ - 13.110309933796094, - 37.564700021823626 - ], - [ - 14.921747220591012, - 39.234768052587974 - ], - [ - 15.839600015888385, - 39.90747112839627 - ], - [ - 16.751565065228064, - 40.44196238222666 - ], - [ - 17.647156417721916, - 40.81575761379161 - ], - [ - 18.515890166128166, - 41.006360360924916 - ], - [ - 38.41932239020985, - 41.00636036092489 - ], - [ - 38.41932239020985, - 41.00636036092489 - ], - [ - 39.52905929908097, - 40.811310638712186 - ], - [ - 40.61893604994564, - 40.40327615141114 - ], - [ - 41.68664740939881, - 39.79659921111167 - ], - [ - 42.72989631862134, - 39.005626217197076 - ], - [ - 43.74637345691538, - 38.044703569050476 - ], - [ - 44.733789940047984, - 36.92816540417523 - ], - [ - 45.68983236002843, - 35.67036629654137 - ], - [ - 46.61220774533085, - 34.285644470945215 - ], - [ - 47.498614949843414, - 32.78834632677018 - ], - [ - 48.3467528274542, - 31.19281826339949 - ], - [ - 49.919011930229885, - 27.76443345284421 - ], - [ - 51.310579972055685, - 24.11524488517218 - ], - [ - 52.503051871330385, - 20.36000740627583 - ], - [ - 53.478018459157994, - 16.613467687461423 - ], - [ - 54.21707465393703, - 12.990384661914874 - ], - [ - 54.701811286772546, - 9.605507044588766 - ], - [ - 54.84305996765153, - 8.038254876070912 - ], - [ - 54.91382736335554, - 6.5735876377294815 - ], - [ - 54.91180824047939, - 5.225847641654507 - ], - [ - 54.83471371479084, - 4.009379243582792 - ], - [ - 54.68023037829856, - 2.938526799250514 - ], - [ - 54.44606117218366, - 2.0276346643947214 - ], - [ - 54.129900863041016, - 1.2910451511050063 - ], - [ - 53.72946056663854, - 0.7431046587646399 - ], - [ - 53.24243504957106, - 0.3981554994636305 - ], - [ - 52.66651499114012, - 0.2705440725852277 - ], - [ - 50.38399467468378, - 0.3905470030386695 - ], - [ - 48.230493857637555, - 0.5018113004773248 - ], - [ - 46.19825894466584, - 0.6044330162933456 - ], - [ - 44.279552689605055, - 0.6985163764650153 - ], - [ - 40.75173220833915, - 0.8614624536761077 - ], - [ - 37.58507313513575, - 0.9914424670054487 - ], - [ - 34.71760392941139, - 1.089257525934066 - ], - [ - 32.08736939975574, - 1.1557066962966545 - ], - [ - 29.632402092878237, - 1.1915849566344754 - ], - [ - 27.290742730075316, - 1.1976913727821934 - ], - [ - 22.699482110825095, - 1.1237828921989905 - ], - [ - 20.32595820967701, - 1.0453620398440044 - ], - [ - 17.81788470132205, - 0.9403656066372221 - ], - [ - 15.11330230705643, - 0.809586527473364 - ], - [ - 12.150247660883139, - 0.6538238681870236 - ], - [ - 8.866755353158485, - 0.4738766946127946 - ], - [ - 7.0854822907078265, - 0.3750827289456167 - ], - [ - 5.200864061532112, - 0.2705440725852437 - ], - [ - 4.105790317272589, - 0.22292301867815878 - ], - [ - 2.8497467020987655, - 0.1318560809408833 - ], - [ - 1.4690467730818961, - 0.042497631791162616 - ], - [ - 0, - 0 - ], - [ - 0, - 0 - ] - ] - }, - { - "type": "line", - "version": 1002, - "versionNonce": 584664442, - "isDeleted": false, - "id": "lGMXFgtMaMylvK7rWo7vG", - "fillStyle": "solid", - "strokeWidth": 1, - "strokeStyle": "solid", - "roughness": 0, - "opacity": 100, - "angle": 0, - "x": 760.6720418266365, - "y": 202.11820636226628, - "strokeColor": "#428f29", - "backgroundColor": "#FFFFFF", - "width": 12.320199869673417, - "height": 18.184807149251014, - "seed": 1005334749, - "groupIds": [ - "zl1s8cNmh8UrJcf74pI-f" - ], - "strokeSharpness": "sharp", - "boundElements": [], - "updated": 1662370182112, - "link": null, - "locked": false, - "lastCommittedPoint": null, - "startArrowhead": null, - "endArrowhead": null, - "points": [ - [ - 0, - 0 - ], - [ - 0, - 0 - ], - [ - 0.29448232745354375, - 2.6187410609760664 - ], - [ - 0.6405902343969956, - 5.014246425338673 - ], - [ - 1.0471563615902326, - 7.2487553513807 - ], - [ - 1.5230133497931106, - 9.384511184688263 - ], - [ - 2.717931494090582, - 13.608722649918137 - ], - [ - 3.4546620189981816, - 15.82166088571943 - ], - [ - 4.296017033424848, - 18.184807149251014 - ], - [ - 2.0584283319027072, - 17.818516188132502 - ], - [ - -0.05507116771784126, - 17.29105916602271 - ], - [ - -2.0054805130394264, - 16.552538406662148 - ], - [ - -3.7537915989014934, - 15.553035797325172 - ], - [ - -4.5399712196319015, - 14.939819187791205 - ], - [ - -5.260998363790126, - 14.242645487165886 - ], - [ - -5.9119989341498105, - 13.455265224036966 - ], - [ - -6.488096789837993, - 12.571449363458553 - ], - [ - -6.984415789981686, - 11.584956608605028 - ], - [ - -7.39608081553121, - 10.48954361900395 - ], - [ - -7.718214703790242, - 9.278975228769639 - ], - [ - -7.945942846620827, - 7.947014228369632 - ], - [ - -8.024182836248567, - 6.4582932691250114 - ], - [ - -7.856660523308257, - 5.005164459689245 - ], - [ - -7.413178985109507, - 3.6405909462753625 - ], - [ - -6.663539766226968, - 2.4175481369762 - ], - [ - -6.164475126828098, - 1.8756507077379005 - ], - [ - -5.577546965793577, - 1.388997134358164 - ], - [ - -4.898980667787072, - 0.9642108755835823 - ], - [ - -4.125001617472318, - 0.6079113028674633 - ], - [ - -3.2518351995130104, - 0.326717787663117 - ], - [ - -2.2757067985728305, - 0.12725583236376134 - ], - [ - -1.1928407774922007, - 0.016142764776073733 - ], - [ - 0.0005354354185769239, - -3.17415905654013e-16 - ], - [ - 0, - 0 - ] - ] - }, - { - "type": "line", - "version": 1056, - "versionNonce": 107177766, - "isDeleted": false, - "id": "Ut5FMjc52z6fgsL0J6BGw", - "fillStyle": "solid", - "strokeWidth": 1, - "strokeStyle": "solid", - "roughness": 0, - "opacity": 100, - "angle": 0, - "x": 787.9164628574821, - "y": 210.2172928355925, - "strokeColor": "#428f29", - "backgroundColor": "#ffffff", - "width": 1.7480862847321295, - "height": 12.703759133952614, - "seed": 1825675123, - "groupIds": [ - "hnittqP4OOF9j9Lcenkuc", - "zl1s8cNmh8UrJcf74pI-f" - ], - "strokeSharpness": "sharp", - "boundElements": [], - "updated": 1662370182112, - "link": null, - "locked": false, - "lastCommittedPoint": null, - "startArrowhead": null, - "endArrowhead": null, - "points": [ - [ - 0, - 0 - ], - [ - 1.7362985309369154, - 0.8619897145081872 - ], - [ - 1.7362985309369154, - -11.841769419444425 - ], - [ - -0.011787753795213948, - -11.841769419444425 - ], - [ - 0, - 0 - ] - ] - }, - { - "type": "rectangle", - "version": 1083, - "versionNonce": 289834554, - "isDeleted": false, - "id": "lYxoc6qsCbufQWfkaYPjn", - "fillStyle": "solid", - "strokeWidth": 1, - "strokeStyle": "solid", - "roughness": 0, - "opacity": 100, - "angle": 0.5235987755982983, - "x": 779.0262304756161, - "y": 209.01417476491508, - "strokeColor": "#428f29", - "backgroundColor": "#fff", - "width": 16.75036748829949, - "height": 16.75036748829949, - "seed": 877399357, - "groupIds": [ - "zl1s8cNmh8UrJcf74pI-f" - ], - "strokeSharpness": "round", - "boundElements": [], - "updated": 1662370182112, - "link": null, - "locked": false - }, - { - "type": "line", - "version": 1099, - "versionNonce": 1895273062, - "isDeleted": false, - "id": "W9GQ91KbkZiI8PMWjEt3V", - "fillStyle": "cross-hatch", - "strokeWidth": 1, - "strokeStyle": "solid", - "roughness": 0, - "opacity": 100, - "angle": 0, - "x": 787.5675536338199, - "y": 213.27043987335145, - "strokeColor": "#609926", - "backgroundColor": "none", - "width": 3.9928709593189584, - "height": 8.607162705368937, - "seed": 271855891, - "groupIds": [ - "S0CmrEuo-ZXU3htKaoIxB", - "zl1s8cNmh8UrJcf74pI-f" - ], - "strokeSharpness": "sharp", - "boundElements": [], - "updated": 1662370182112, - "link": null, - "locked": false, - "lastCommittedPoint": null, - "startArrowhead": null, - "endArrowhead": null, - "points": [ - [ - 0, - 0 - ], - [ - 0, - 0 - ], - [ - 0.8708256796103779, - 0.45456506781286815 - ], - [ - 1.6286245156968555, - 0.842039937231826 - ], - [ - 2.2760685651818604, - 1.1791900911006858 - ], - [ - 2.8158269742504354, - 1.4827653083640089 - ], - [ - 3.250574710562407, - 1.7695310718656039 - ], - [ - 3.582983831040201, - 2.0562403013298867 - ], - [ - 3.8157205711314752, - 2.359655338820815 - ], - [ - 3.9514598984960405, - 2.6965322448426505 - ], - [ - 3.9928709593189584, - 3.083627079899658 - ], - [ - 3.9426287212600317, - 3.5377021860557947 - ], - [ - 3.803399419766926, - 4.075513623815322 - ], - [ - 3.577858022499456, - 4.713820594462351 - ], - [ - 3.268676586380058, - 5.469382299280998 - ], - [ - 2.878524257593769, - 6.358951657995674 - ], - [ - 2.410073093063024, - 7.399294153450177 - ], - [ - 1.8659951497102514, - 8.607162705368937 - ] - ] - }, - { - "type": "line", - "version": 1142, - "versionNonce": 1775087354, - "isDeleted": false, - "id": "1wLhwqt45xhbe4vgxY7NZ", - "fillStyle": "cross-hatch", - "strokeWidth": 1, - "strokeStyle": "solid", - "roughness": 0, - "opacity": 100, - "angle": 0, - "x": 787.19375468775, - "y": 207.89598632136608, - "strokeColor": "#428f29", - "backgroundColor": "#428f29", - "width": 7.847296587542959, - "height": 13.752717991875608, - "seed": 1630625181, - "groupIds": [ - "1pSuO6LCaukkQ9UMQK_hA", - "zl1s8cNmh8UrJcf74pI-f" - ], - "strokeSharpness": "sharp", - "boundElements": [], - "updated": 1662370182112, - "link": null, - "locked": false, - "lastCommittedPoint": null, - "startArrowhead": null, - "endArrowhead": null, - "points": [ - [ - 0, - 0 - ], - [ - 1.43889895103068, - 0.4763351483960596 - ], - [ - -5.121574659356895, - 13.7527179918756 - ], - [ - -6.40839763651228, - 13.124304825957973 - ], - [ - 0, - 0 - ] - ] - }, - { - "type": "ellipse", - "version": 1060, - "versionNonce": 644109734, - "isDeleted": false, - "id": "yF40ew457jmrEJrTbM6rg", - "fillStyle": "solid", - "strokeWidth": 1, - "strokeStyle": "solid", - "roughness": 0, - "opacity": 100, - "angle": 0, - "x": 784.0794541733192, - "y": 210.66429372466973, - "strokeColor": "#609926", - "backgroundColor": "#609926", - "width": 3.5032895688733885, - "height": 3.5032895688733885, - "seed": 189961907, - "groupIds": [ - "KCLSuwLSEWUC_iP7kSNCk", - "zl1s8cNmh8UrJcf74pI-f" - ], - "strokeSharpness": "sharp", - "boundElements": [], - "updated": 1662370182112, - "link": null, - "locked": false - }, - { - "type": "ellipse", - "version": 1060, - "versionNonce": 552714170, - "isDeleted": false, - "id": "kzUT99c-It4ecp0bLdMpU", - "fillStyle": "solid", - "strokeWidth": 1, - "strokeStyle": "solid", - "roughness": 0, - "opacity": 100, - "angle": 0, - "x": 780.0842108335173, - "y": 218.95025900946422, - "strokeColor": "#609926", - "backgroundColor": "#609926", - "width": 3.5032895688733885, - "height": 3.5032895688733885, - "seed": 2043519485, - "groupIds": [ - "KCLSuwLSEWUC_iP7kSNCk", - "zl1s8cNmh8UrJcf74pI-f" - ], - "strokeSharpness": "sharp", - "boundElements": [], - "updated": 1662370182112, - "link": null, - "locked": false - }, - { - "type": "ellipse", - "version": 1060, - "versionNonce": 1876340966, - "isDeleted": false, - "id": "Hw8JiSvWpyA7wcNoYuOcM", - "fillStyle": "solid", - "strokeWidth": 1, - "strokeStyle": "solid", - "roughness": 0, - "opacity": 100, - "angle": 0, - "x": 786.6541178636505, - "y": 221.90003403980205, - "strokeColor": "#609926", - "backgroundColor": "#609926", - "width": 3.5032895688733885, - "height": 3.5032895688733885, - "seed": 215173203, - "groupIds": [ - "KCLSuwLSEWUC_iP7kSNCk", - "zl1s8cNmh8UrJcf74pI-f" - ], - "strokeSharpness": "sharp", - "boundElements": [], - "updated": 1662370182112, - "link": null, - "locked": false - }, - { - "type": "line", - "version": 617, - "versionNonce": 584431738, - "isDeleted": false, - "id": "xDY61qQQ6Ap2p04GrSIhU", - "fillStyle": "cross-hatch", - "strokeWidth": 1, - "strokeStyle": "solid", - "roughness": 1, - "opacity": 100, - "angle": 0, - "x": 943.7650494170268, - "y": 207.5536810655546, - "strokeColor": "#000000", - "backgroundColor": "#fa5252", - "width": 21.361340598602617, - "height": 21.479359054948496, - "seed": 1526894483, - "groupIds": [ - "hLaUC0pyklAgiIpkyHRSs" - ], - "strokeSharpness": "sharp", - "boundElements": [], - "updated": 1662370182112, - "link": null, - "locked": false, - "startBinding": null, - "endBinding": null, - "lastCommittedPoint": null, - "startArrowhead": null, - "endArrowhead": null, - "points": [ - [ - 0, - 0 - ], - [ - 2.9504614086469867, - 4.012627515759613 - ], - [ - -11.093734896511851, - 11.919864090932956 - ], - [ - 3.776590603068043, - 16.640602344767817 - ], - [ - 2.2423506705715397, - 21.479359054948496 - ], - [ - -17.584749995534565, - 14.988343955925606 - ], - [ - -17.584749995534565, - 8.73336576959445 - ], - [ - 0, - 0 - ] - ] - }, - { - "type": "line", - "version": 739, - "versionNonce": 1759224870, - "isDeleted": false, - "id": "vUg5B5lluM1lc6gwDspMM", - "fillStyle": "cross-hatch", - "strokeWidth": 1, - "strokeStyle": "solid", - "roughness": 1, - "opacity": 100, - "angle": 0, - "x": 972.9111084975855, - "y": 208.52784762699463, - "strokeColor": "#000000", - "backgroundColor": "#fa5252", - "width": 22.550726855738834, - "height": 21.479359054948496, - "seed": 937305885, - "groupIds": [ - "hLaUC0pyklAgiIpkyHRSs" - ], - "strokeSharpness": "sharp", - "boundElements": [], - "updated": 1662370182112, - "link": null, - "locked": false, - "startBinding": null, - "endBinding": null, - "lastCommittedPoint": null, - "startArrowhead": null, - "endArrowhead": null, - "points": [ - [ - 0, - 0 - ], - [ - -3.114741278416954, - 4.012627515759613 - ], - [ - 11.71142720684779, - 11.919864090932956 - ], - [ - -3.986868836373726, - 16.64060234476782 - ], - [ - -2.367203371596897, - 21.479359054948496 - ], - [ - 18.563858019365114, - 14.988343955925602 - ], - [ - 18.563858019365114, - 8.73336576959445 - ], - [ - 0, - 0 - ] - ] - }, - { - "type": "line", - "version": 571, - "versionNonce": 1597806906, - "isDeleted": false, - "id": "YKMjthBrNNw97pyLkbxOg", - "fillStyle": "cross-hatch", - "strokeWidth": 1, - "strokeStyle": "solid", - "roughness": 1, - "opacity": 100, - "angle": 0, - "x": 948.8645995700572, - "y": 242.90905653246233, - "strokeColor": "#000000", - "backgroundColor": "#fa5252", - "width": 19.827100666106297, - "height": 47.32540099469423, - "seed": 1506878771, - "groupIds": [ - "hLaUC0pyklAgiIpkyHRSs" - ], - "strokeSharpness": "sharp", - "boundElements": [], - "updated": 1662370182112, - "link": null, - "locked": false, - "startBinding": null, - "endBinding": null, - "lastCommittedPoint": null, - "startArrowhead": null, - "endArrowhead": null, - "points": [ - [ - 0, - 0 - ], - [ - 13.218067110737529, - -47.20738253834822 - ], - [ - 19.827100666106297, - -47.20738253834822 - ], - [ - 6.963088924406386, - 0.1180184563460247 - ], - [ - 0, - 0 - ] - ] - }, - { - "type": "rectangle", - "version": 456, - "versionNonce": 861941606, - "isDeleted": false, - "id": "VWN6cXO1jiN8bNt1WAl7V", - "fillStyle": "cross-hatch", - "strokeWidth": 2, - "strokeStyle": "solid", - "roughness": 1, - "opacity": 90, - "angle": 0, - "x": 910, - "y": 178, - "strokeColor": "#000000", - "backgroundColor": "transparent", - "width": 101, - "height": 78, - "seed": 684609747, - "groupIds": [], - "strokeSharpness": "sharp", - "boundElements": [], - "updated": 1662370182112, - "link": null, - "locked": false - }, - { - "type": "text", - "version": 268, - "versionNonce": 1208552186, - "isDeleted": false, - "id": "HQ1vT1MZXpaMNC0w2UQgN", - "fillStyle": "cross-hatch", - "strokeWidth": 2, - "strokeStyle": "solid", - "roughness": 1, - "opacity": 90, - "angle": 0, - "x": 917, - "y": 155, - "strokeColor": "#000000", - "backgroundColor": "transparent", - "width": 84, - "height": 20, - "seed": 1196888499, - "groupIds": [], - "strokeSharpness": "sharp", - "boundElements": [], - "updated": 1662376440015, - "link": null, - "locked": false, - "fontSize": 16, - "fontFamily": 1, - "text": "DevSpaces", - "baseline": 14, - "textAlign": "center", - "verticalAlign": "top", - "containerId": null, - "originalText": "DevSpaces" - }, - { - "type": "line", - "version": 600, - "versionNonce": 733041318, - "isDeleted": false, - "id": "yTMGBKLcl_krJLO3aWwCo", - "fillStyle": "solid", - "strokeWidth": 4, - "strokeStyle": "solid", - "roughness": 1, - "opacity": 100, - "angle": 0, - "x": 347.39587833125324, - "y": 306.7338110374251, - "strokeColor": "black", - "backgroundColor": "black", - "width": 180.44190813894443, - "height": 0.16613541482645627, - "seed": 269989267, - "groupIds": [ - "Cy3KZUF141Ea66DHXydV1" - ], - "strokeSharpness": "round", - "boundElements": [], - "updated": 1662370182112, - "link": null, - "locked": false, - "startBinding": null, - "endBinding": null, - "lastCommittedPoint": null, - "startArrowhead": null, - "endArrowhead": null, - "points": [ - [ - 0, - 0 - ], - [ - 180.44190813894443, - -0.16613541482645627 - ] - ] - }, - { - "type": "line", - "version": 542, - "versionNonce": 549393082, - "isDeleted": false, - "id": "a5nod2XbFPVWuWRhn2Ua2", - "fillStyle": "solid", - "strokeWidth": 4, - "strokeStyle": "solid", - "roughness": 1, - "opacity": 100, - "angle": 0, - "x": 348.0536140237087, - "y": 306.9778100669535, - "strokeColor": "black", - "backgroundColor": "black", - "width": 29.012907644169655, - "height": 58.08933795512363, - "seed": 1721131293, - "groupIds": [ - "Cy3KZUF141Ea66DHXydV1" - ], - "strokeSharpness": "round", - "boundElements": [], - "updated": 1662370182112, - "link": null, - "locked": false, - "startBinding": null, - "endBinding": null, - "lastCommittedPoint": null, - "startArrowhead": null, - "endArrowhead": null, - "points": [ - [ - 0, - 0 - ], - [ - -10.296989190345768, - -2.7467411689925427 - ], - [ - -14.193104578778739, - -7.075372217895264 - ], - [ - -17.12757102104723, - -14.809660495943007 - ], - [ - -16.25366056491633, - -32.74417995752738 - ], - [ - -13.10830588800304, - -40.96408323021325 - ], - [ - -4.822598747791973, - -50.77138635998338 - ], - [ - 6.5787372689089665, - -58.089337955123625 - ], - [ - 11.885336623122425, - -57.994755862867336 - ] - ] - }, - { - "type": "line", - "version": 583, - "versionNonce": 477892070, - "isDeleted": false, - "id": "BDtRB2MzcmTx5Hgz-V5ax", - "fillStyle": "solid", - "strokeWidth": 4, - "strokeStyle": "solid", - "roughness": 1, - "opacity": 100, - "angle": 0, - "x": 360.2004225510271, - "y": 246.95648206020837, - "strokeColor": "black", - "backgroundColor": "black", - "width": 87.3743402045856, - "height": 60.07029758310275, - "seed": 1028754227, - "groupIds": [ - "Cy3KZUF141Ea66DHXydV1" - ], - "strokeSharpness": "round", - "boundElements": [], - "updated": 1662370182112, - "link": null, - "locked": false, - "startBinding": null, - "endBinding": null, - "lastCommittedPoint": null, - "startArrowhead": null, - "endArrowhead": null, - "points": [ - [ - 0, - 0 - ], - [ - -6.025598732340979, - -21.1279197356401 - ], - [ - -6.406945305423115, - -32.67742851430983 - ], - [ - -3.549899306760304, - -39.69384046690258 - ], - [ - 5.705739293074423, - -50.91185568252725 - ], - [ - 16.1726603909173, - -56.94256079498816 - ], - [ - 26.503200779851944, - -59.91466704948113 - ], - [ - 45.020163433675535, - -60.07029758310275 - ], - [ - 63.567132651090674, - -55.907860782021665 - ], - [ - 68.71201242047414, - -52.3039496607967 - ], - [ - 80.96739489916247, - -31.279192841738087 - ] - ] - }, - { - "type": "line", - "version": 559, - "versionNonce": 58764154, - "isDeleted": false, - "id": "3e7pQ8RjxCYV31m-LfEZK", - "fillStyle": "solid", - "strokeWidth": 4, - "strokeStyle": "solid", - "roughness": 1, - "opacity": 100, - "angle": 0, - "x": 440.39398966562135, - "y": 214.77545838538146, - "strokeColor": "black", - "backgroundColor": "black", - "width": 69.02941518201982, - "height": 34.30764475453057, - "seed": 583415165, - "groupIds": [ - "Cy3KZUF141Ea66DHXydV1" - ], - "strokeSharpness": "round", - "boundElements": [], - "updated": 1662370182112, - "link": null, - "locked": false, - "startBinding": null, - "endBinding": null, - "lastCommittedPoint": null, - "startArrowhead": null, - "endArrowhead": null, - "points": [ - [ - 0, - 0 - ], - [ - 10.083433705603934, - -6.510757486830897 - ], - [ - 24.319495049103143, - -9.086233123277818 - ], - [ - 54.3109325249198, - -5.877671638144303 - ], - [ - 65.34260873541108, - 1.8844999320361318 - ], - [ - 69.02941518201982, - 25.221411631252746 - ] - ] - }, - { - "type": "line", - "version": 595, - "versionNonce": 1926062374, - "isDeleted": false, - "id": "gtGUk5ADqPSYCmPJoRdko", - "fillStyle": "solid", - "strokeWidth": 4, - "strokeStyle": "solid", - "roughness": 1, - "opacity": 100, - "angle": 0, - "x": 527.0558925996764, - "y": 306.9861957034516, - "strokeColor": "black", - "backgroundColor": "black", - "width": 45.23585973757425, - "height": 72.2376608085893, - "seed": 2080353491, - "groupIds": [ - "Cy3KZUF141Ea66DHXydV1" - ], - "strokeSharpness": "round", - "boundElements": [], - "updated": 1662370182112, - "link": null, - "locked": false, - "startBinding": null, - "endBinding": null, - "lastCommittedPoint": null, - "startArrowhead": null, - "endArrowhead": null, - "points": [ - [ - 0, - 0 - ], - [ - 16.245939577793376, - -8.789817408548252 - ], - [ - 27.277124452740487, - -21.062607203659148 - ], - [ - 30.846396418100213, - -32.47282235555152 - ], - [ - 30.85453854997536, - -48.791269021508704 - ], - [ - 25.221025581896626, - -61.49790810213788 - ], - [ - 14.423716425983113, - -70.51089713393569 - ], - [ - 3.3780020570864284, - -72.23766080858931 - ], - [ - -9.197380242452413, - -69.04397977136546 - ], - [ - -14.381321187598894, - -65.757015171538 - ] - ] - }, - { - "type": "line", - "version": 410, - "versionNonce": 1947282490, - "isDeleted": false, - "id": "NthltWo1RmoHdn5C8gHjZ", - "fillStyle": "cross-hatch", - "strokeWidth": 2, - "strokeStyle": "solid", - "roughness": 1, - "opacity": 100, - "angle": 0, - "x": 438.9134165238899, - "y": 215.86291312152872, - "strokeColor": "#000000", - "backgroundColor": "black", - "width": 90.68346509750657, - "height": 88.44483190099747, - "seed": 1892260829, - "groupIds": [ - "9wXTiErT68Cqf6y0xR_9_", - "M7epUKFIsRBu-b5nc04_q" - ], - "strokeSharpness": "sharp", - "boundElements": [], - "updated": 1662370182112, - "link": null, - "locked": false, - "lastCommittedPoint": null, - "startArrowhead": null, - "endArrowhead": null, - "points": [ - [ - 0, - 0 - ], - [ - 0, - 0 - ], - [ - -2.333004985917512, - 0.058997671849454036 - ], - [ - -4.635414563912775, - 0.23409153110242187 - ], - [ - -6.904379999542982, - 0.5224328433152432 - ], - [ - -9.137049845283855, - 0.9211728740447143 - ], - [ - -11.330572653611853, - 1.4274628464555406 - ], - [ - -13.482099690083372, - 2.038454153279929 - ], - [ - -15.588776794094258, - 2.7512978905071748 - ], - [ - -17.6477552312013, - 3.5631454932610893 - ], - [ - -19.656186266960788, - 4.471148057530878 - ], - [ - -21.611215740768728, - 5.472456848873321 - ], - [ - -23.5099962747218, - 6.564223471979915 - ], - [ - -25.349675064756244, - 7.743598853272028 - ], - [ - -27.127402019888166, - 9.007734258306755 - ], - [ - -28.840325692593808, - 10.35378095264036 - ], - [ - -30.485595991889852, - 11.778890201829537 - ], - [ - -32.06036147025219, - 13.280213949701132 - ], - [ - -33.561773393237395, - 14.854902105271375 - ], - [ - -34.98697963505134, - 16.500107290637125 - ], - [ - -36.33312942644136, - 18.21297941481486 - ], - [ - -37.59737267642265, - 19.99067109990125 - ], - [ - -38.77685861574224, - 21.830332254913003 - ], - [ - -39.86873579687597, - 23.729116858486606 - ], - [ - -40.870154467975624, - 25.684173463098837 - ], - [ - -41.778263520651876, - 27.692653334306016 - ], - [ - -42.59021218565141, - 29.751707737664752 - ], - [ - -43.303150032855854, - 31.858490651811962 - ], - [ - -43.91422629301104, - 34.01015062922437 - ], - [ - -44.420590196863365, - 36.20383893545793 - ], - [ - -44.819391102334805, - 38.43670683606979 - ], - [ - -45.1077783037594, - 40.705908309696575 - ], - [ - -45.28290113786346, - 43.00859190881471 - ], - [ - -45.34190889898064, - 45.34190889898089 - ], - [ - -45.30409009989871, - 47.21091473183959 - ], - [ - -45.19160633138682, - 49.06066583294157 - ], - [ - -45.0059165259467, - 50.88969985193921 - ], - [ - -44.74847965847283, - 52.69656257772587 - ], - [ - -44.420754592579954, - 54.479794373034586 - ], - [ - -44.02420041444127, - 56.23793560059818 - ], - [ - -43.56027595587847, - 57.96953204931015 - ], - [ - -43.030440006320134, - 59.67312408190335 - ], - [ - -42.436151948683005, - 61.34725206111081 - ], - [ - -41.77887023326156, - 62.99046177582626 - ], - [ - -41.060054158187256, - 64.60129358878184 - ], - [ - -40.281162682457605, - 66.17828243655016 - ], - [ - -38.54898834761566, - 69.22492524442087 - ], - [ - -36.594019239847, - 72.11872395362188 - ], - [ - -34.42792703112879, - 74.84801774449969 - ], - [ - -32.062382715166734, - 77.40113494507605 - ], - [ - -29.509057963937888, - 79.76641473569669 - ], - [ - -26.779625805958972, - 81.93219629670706 - ], - [ - -23.88575520012625, - 83.88681338229053 - ], - [ - -20.839119174956807, - 85.61859974663234 - ], - [ - -19.26216288415355, - 86.39728638479001 - ], - [ - -17.651390758966954, - 87.11589457007697 - ], - [ - -16.00826243666456, - 87.77295923906482 - ], - [ - -14.334237554512896, - 88.36702618064737 - ], - [ - -13.550545282976657, - 88.44290018773684 - ], - [ - -12.894221284943626, - 88.37164926968703 - ], - [ - -12.35821697747815, - 88.17705086331902 - ], - [ - -11.935478351481443, - 87.88286612697115 - ], - [ - -11.618954110936556, - 87.51287249746414 - ], - [ - -11.401598385986603, - 87.09083655929666 - ], - [ - -11.2763544544528, - 86.64053032312967 - ], - [ - -11.236173733399276, - 86.18572037346115 - ], - [ - -11.238029480408088, - 85.66800494112226 - ], - [ - -11.24308394923463, - 84.94340084810192 - ], - [ - -11.250574764280728, - 84.03857767495202 - ], - [ - -11.259731410705626, - 82.98017787141877 - ], - [ - -11.269788799831183, - 81.79485473957058 - ], - [ - -11.2799791298972, - 80.50927243379788 - ], - [ - -11.297692831974189, - 77.74392180410848 - ], - [ - -12.45136788069647, - 77.9698942724798 - ], - [ - -13.548060101309659, - 78.13584254958863 - ], - [ - -14.58910704246193, - 78.2452393783757 - ], - [ - -15.57583811356044, - 78.3015357971376 - ], - [ - -16.509596289413995, - 78.30821540113732 - ], - [ - -17.391710979429376, - 78.26872922867169 - ], - [ - -19.006354670378716, - 78.06514509994508 - ], - [ - -20.4304505840305, - 77.71851109287377 - ], - [ - -21.674680118006513, - 77.25655488937309 - ], - [ - -22.74972331339023, - 76.70700959751964 - ], - [ - -23.666258854723083, - 76.09758662074707 - ], - [ - -24.434968139627653, - 75.45602449329205 - ], - [ - -25.066532565726916, - 74.81005089707034 - ], - [ - -25.57162946102204, - 74.18738266167597 - ], - [ - -25.96094157967604, - 73.6157528951853 - ], - [ - -26.245148962770763, - 73.12288927951428 - ], - [ - -26.434930294849266, - 72.73651407041748 - ], - [ - -26.54096697353316, - 72.48436037597111 - ], - [ - -26.573939039904985, - 72.39414502576972 - ], - [ - -26.970371638127297, - 71.45595638958659 - ], - [ - -27.38243157958182, - 70.60434757583923 - ], - [ - -27.804430891163236, - 69.83573189220905 - ], - [ - -28.230687025927477, - 69.1465117940564 - ], - [ - -28.65551472384932, - 68.53308973674125 - ], - [ - -29.073226011823234, - 67.99187360178422 - ], - [ - -29.478138342905083, - 67.5192604183851 - ], - [ - -29.8645664570704, - 67.11166349422496 - ], - [ - -30.55922492492941, - 66.47712281890276 - ], - [ - -31.111719335201855, - 66.05949292334141 - ], - [ - -31.320443394788477, - 65.92303040426167 - ], - [ - -31.476570320768527, - 65.8300097289038 - ], - [ - -31.574416209657507, - 65.776833352627 - ], - [ - -31.60829444489064, - 65.75990373079227 - ], - [ - -32.28272554166148, - 65.26516808962968 - ], - [ - -32.77604631138382, - 64.83344645435486 - ], - [ - -33.10724424739261, - 64.4604521579007 - ], - [ - -33.29530277340284, - 64.1418931070391 - ], - [ - -33.3592093827495, - 63.87348263470288 - ], - [ - -33.31795021222773, - 63.65092864766367 - ], - [ - -33.190511398632616, - 63.46992820037207 - ], - [ - -32.99588043529974, - 63.32620547808253 - ], - [ - -32.480979823898714, - 63.13340855711486 - ], - [ - -31.92514154200586, - 63.03819571277549 - ], - [ - -31.480251970901577, - 63.00624647772298 - ], - [ - -31.346879650422984, - 63.00326751541921 - ], - [ - -31.298202918026668, - 63.00322410613244 - ], - [ - -30.469796368050595, - 63.10844279106908 - ], - [ - -29.69226821523324, - 63.29589494360499 - ], - [ - -28.965972516569945, - 63.553290309426785 - ], - [ - -28.29126332905571, - 63.8683549127046 - ], - [ - -27.09802342853555, - 64.62234166669808 - ], - [ - -26.115380969633293, - 65.45959285885061 - ], - [ - -25.346171121391023, - 66.28184071626823 - ], - [ - -25.04248924702466, - 66.65663107196228 - ], - [ - -24.793227696308843, - 66.99082289221691 - ], - [ - -24.598740526237915, - 67.2721313488808 - ], - [ - -24.45938315034795, - 67.48827161380174 - ], - [ - -24.375508269093473, - 67.62696428498823 - ], - [ - -24.34747265254968, - 67.67592453428857 - ], - [ - -23.56128977318537, - 68.87332087401585 - ], - [ - -22.725578254172152, - 69.87560874825559 - ], - [ - -21.849852868551064, - 70.69711322163771 - ], - [ - -20.943627032822803, - 71.35216478495222 - ], - [ - -20.016415520028026, - 71.85509392898992 - ], - [ - -19.077733103208118, - 72.22023114454112 - ], - [ - -18.13708912924295, - 72.46190149623564 - ], - [ - -17.20400108425366, - 72.59444090102478 - ], - [ - -16.28798102820094, - 72.63216899737691 - ], - [ - -15.398546447206176, - 72.58942712840428 - ], - [ - -14.545209401229595, - 72.48053493257578 - ], - [ - -13.737481950231828, - 72.31982290068227 - ], - [ - -12.984878867253943, - 72.12162152351334 - ], - [ - -12.296914925336747, - 71.90026129185998 - ], - [ - -11.683104897520995, - 71.6700726965127 - ], - [ - -11.152960843767687, - 71.44538080210074 - ], - [ - -10.965647058333275, - 70.38979717604575 - ], - [ - -10.713873195146164, - 69.4207553893005 - ], - [ - -10.405222313986727, - 68.53750663166868 - ], - [ - -10.047282900795892, - 67.73931294527466 - ], - [ - -9.64763801535355, - 67.02543094608372 - ], - [ - -9.2138707174405, - 66.39512267622005 - ], - [ - -8.753564066836699, - 65.84763932548769 - ], - [ - -8.274306549483242, - 65.38224836217267 - ], - [ - -10.165928620742303, - 65.13247132617632 - ], - [ - -12.053388826633455, - 64.8027126793317 - ], - [ - -13.920422250025517, - 64.37723112902806 - ], - [ - -15.750761260705929, - 63.84029080881645 - ], - [ - -17.528140941544, - 63.176144999926436 - ], - [ - -19.236299088487897, - 62.36906326206916 - ], - [ - -20.858970784406484, - 61.40330430263523 - ], - [ - -22.37988839908751, - 60.26312682901367 - ], - [ - -23.782788371940228, - 58.93278954859515 - ], - [ - -25.051405785832635, - 57.396556594930246 - ], - [ - -25.630275407429906, - 56.54630974755478 - ], - [ - -26.169475723632893, - 55.63868124924807 - ], - [ - -26.666971924125107, - 54.67171768210642 - ], - [ - -27.120731911669928, - 53.64343849742101 - ], - [ - -27.528723589031245, - 52.55187942496687 - ], - [ - -27.888912145892334, - 51.3950761945178 - ], - [ - -28.199265485016838, - 50.17105910968724 - ], - [ - -28.457748796088204, - 48.8778639002498 - ], - [ - -28.662331338410123, - 47.51351544365743 - ], - [ - -28.81097965820635, - 46.07605489584565 - ], - [ - -28.901658945159966, - 44.56350713426758 - ], - [ - -28.932337102034978, - 42.97391060177688 - ], - [ - -28.85056214502714, - 41.1599857276509 - ], - [ - -28.610249690084114, - 39.43049462934655 - ], - [ - -28.21892446575663, - 37.7850249186397 - ], - [ - -27.684105774435523, - 36.2231642073059 - ], - [ - -27.01331698813141, - 34.744500107121155 - ], - [ - -26.214080122315465, - 33.348617516780905 - ], - [ - -25.293915835917574, - 32.03510676114149 - ], - [ - -24.260347500949536, - 30.80355273889771 - ], - [ - -24.360051849927515, - 30.549179744666333 - ], - [ - -24.477631329268153, - 30.216181679797106 - ], - [ - -24.605620898188874, - 29.807249920069406 - ], - [ - -24.736558228988592, - 29.325070415101326 - ], - [ - -24.862979637425155, - 28.772331827591074 - ], - [ - -24.97742415233773, - 28.151722820237268 - ], - [ - -25.072426732944386, - 27.465934768818673 - ], - [ - -25.140523695003193, - 26.71765090987321 - ], - [ - -25.174254067353225, - 25.9095626191791 - ], - [ - -25.1661541657524, - 25.0443585594357 - ], - [ - -25.10875894941915, - 24.124727393340915 - ], - [ - -24.99460744719204, - 23.15335507051305 - ], - [ - -24.81623597482986, - 22.132932966730667 - ], - [ - -24.566182204630604, - 21.06614703161219 - ], - [ - -24.236981095812496, - 19.955687284396248 - ], - [ - -23.82117032067407, - 18.804242387781017 - ], - [ - -23.77629597048974, - 18.791987403513843 - ], - [ - -23.640643305916058, - 18.763334561173963 - ], - [ - -23.412678079974967, - 18.73044660029538 - ], - [ - -23.09086197606615, - 18.705487616950567 - ], - [ - -22.673655321050713, - 18.70062170721326 - ], - [ - -22.159521154869083, - 18.72801161061622 - ], - [ - -21.54692387400189, - 18.799821423233112 - ], - [ - -20.83432244877036, - 18.92821659767702 - ], - [ - -20.020181275654238, - 19.12535851694082 - ], - [ - -19.102964751135296, - 19.403411277098115 - ], - [ - -18.081129132452986, - 19.77454033076188 - ], - [ - -16.953141529168928, - 20.250908417465496 - ], - [ - -15.717460911603098, - 20.844679633282226 - ], - [ - -14.372554389317028, - 21.56801807428534 - ], - [ - -12.916880932630704, - 22.43308648000763 - ], - [ - -11.348899511864204, - 23.45204894652275 - ], - [ - -8.59178850741722, - 22.79211655152841 - ], - [ - -5.763263800095671, - 22.318812889161563 - ], - [ - -2.8903313924218423, - 22.03073665338438 - ], - [ - -5.329070518200751e-15, - 21.92648789469881 - ], - [ - 2.890887573908456, - 22.03073665338458 - ], - [ - 5.765575344615284, - 22.31881288916172 - ], - [ - 8.597190250538347, - 22.792116551528352 - ], - [ - 11.358861943174986, - 23.452048946522723 - ], - [ - 12.924965912288997, - 22.433086480007674 - ], - [ - 14.37887857978103, - 21.56801807428532 - ], - [ - 15.722146401492719, - 20.844679633282134 - ], - [ - 16.956304980941468, - 20.250908417465492 - ], - [ - 18.082889921647308, - 19.774540330761795 - ], - [ - 19.103442253289927, - 19.403411277097927 - ], - [ - 20.01949215322719, - 19.12535851694082 - ], - [ - 20.832591503461117, - 18.92821659767688 - ], - [ - 21.544270481349397, - 18.79982142323301 - ], - [ - 22.156064690411192, - 18.728011610616132 - ], - [ - 22.669520586487415, - 18.700621707213216 - ], - [ - 23.086168346935864, - 18.705487616950517 - ], - [ - 23.407549001436678, - 18.73044660029521 - ], - [ - 23.63520357966982, - 18.763334561174112 - ], - [ - 23.770667685153825, - 18.791987403513545 - ], - [ - 23.81548234756883, - 18.8042423877812 - ], - [ - 24.2323471544515, - 19.955687284396205 - ], - [ - 24.562458501751053, - 21.066147031612143 - ], - [ - 24.81328821295125, - 22.132932966730763 - ], - [ - 24.99230268537377, - 23.1533550705131 - ], - [ - 25.10699002098392, - 24.12472739334082 - ], - [ - 25.164811190943627, - 25.044358559435736 - ], - [ - 25.173248871056757, - 25.909562619179177 - ], - [ - 25.139769458645844, - 26.71765090987296 - ], - [ - 25.071855629515515, - 27.465934768818585 - ], - [ - 24.976979207148528, - 28.151722820237225 - ], - [ - 24.862606588867294, - 28.772331827591067 - ], - [ - 24.73622045047597, - 29.325070415101298 - ], - [ - 24.605292615457984, - 29.807249920069527 - ], - [ - 24.4772949072958, - 30.216181679797213 - ], - [ - 24.35970457563374, - 30.549179744666205 - ], - [ - 24.259993443954357, - 30.80355273889773 - ], - [ - 25.295153000590272, - 32.03509048265879 - ], - [ - 26.215538403042387, - 33.34856596825297 - ], - [ - 27.013976266674263, - 34.74440514930622 - ], - [ - 27.683309485331918, - 36.22303126636527 - ], - [ - 28.216370100539216, - 37.784870273055546 - ], - [ - 28.605995579981908, - 39.43034540992336 - ], - [ - 28.84502339134516, - 41.15988534367513 - ], - [ - 28.92629642847487, - 42.973910601776694 - ], - [ - 28.895557227290276, - 44.56710196582689 - ], - [ - 28.804707016270182, - 46.08271279520211 - ], - [ - 28.655775179569815, - 47.522734490932336 - ], - [ - 28.45080195366723, - 48.88915031480646 - ], - [ - 28.191816722717704, - 50.18396252017577 - ], - [ - 27.880859723199023, - 51.40915165574849 - ], - [ - 27.519971191589214, - 52.56670912255498 - ], - [ - 27.111175085882792, - 53.65862089546448 - ], - [ - 26.656517068718188, - 54.68688922782765 - ], - [ - 26.15803195041187, - 55.6534946683537 - ], - [ - 25.61774911512035, - 56.56042319191131 - ], - [ - 25.037708799320793, - 57.40967705185223 - ], - [ - 23.76650039362528, - 58.943088401878114 - ], - [ - 22.360685215859174, - 60.269659926670556 - ], - [ - 20.836558027038624, - 61.40530112982597 - ], - [ - 19.210391883535696, - 62.36592694110141 - ], - [ - 17.49848154636809, - 63.16746856873621 - ], - [ - 15.717110924228798, - 63.8258355163267 - ], - [ - 13.882569351974272, - 64.35695356595213 - ], - [ - 12.011135312137124, - 64.77673764736849 - ], - [ - 10.119098139573655, - 65.1011026903341 - ], - [ - 8.222747169138643, - 65.3459744769268 - ], - [ - 8.821784474054883, - 65.9372795026398 - ], - [ - 9.38931206294702, - 66.65675044750077 - ], - [ - 9.910429698135601, - 67.50577640868642 - ], - [ - 10.370220863459341, - 68.48573563105079 - ], - [ - 10.753785321238809, - 69.59801721177008 - ], - [ - 11.04621740763395, - 70.84399939569968 - ], - [ - 11.232606032644124, - 72.22507128001452 - ], - [ - 11.298050958590181, - 73.74261110957016 - ], - [ - 11.295788249518004, - 75.95781956971322 - ], - [ - 11.289824898749941, - 78.0362019580002 - ], - [ - 11.28139807095829, - 79.95190804416767 - ], - [ - 11.271734078494156, - 81.67909302411292 - ], - [ - 11.262075512190961, - 83.19191209373369 - ], - [ - 11.253643258238341, - 84.46452044892717 - ], - [ - 11.250279038514755, - 85.0026708030071 - ], - [ - 11.247679907470172, - 85.47107328559076 - ], - [ - 11.246014076090944, - 85.86649933097648 - ], - [ - 11.245422624558962, - 86.18572037346107 - ], - [ - 11.28497933711595, - 86.6438728382097 - ], - [ - 11.408858589196662, - 87.09724485525413 - ], - [ - 11.624863200096293, - 87.52161946874517 - ], - [ - 11.940812267591973, - 87.89277972283388 - ], - [ - 12.364514037138463, - 88.18651408783217 - ], - [ - 12.903771328030345, - 88.3786001817291 - ], - [ - 13.566392385722963, - 88.44483190099747 - ], - [ - 14.36019630799386, - 88.3609814374666 - ], - [ - 16.033271611997627, - 87.76631761819101 - ], - [ - 17.675412373026205, - 87.10872661160145 - ], - [ - 19.28517523229533, - 86.38966805496428 - ], - [ - 20.861089700216496, - 85.61059615938672 - ], - [ - 23.905589174553683, - 83.87823462199562 - ], - [ - 26.797277107186517, - 81.92329739292207 - ], - [ - 29.524503530781946, - 79.75741816101691 - ], - [ - 32.075640182650375, - 77.39225231977368 - ], - [ - 34.4390479477797, - 74.83943898420443 - ], - [ - 36.60308771115888, - 72.11063354780316 - ], - [ - 38.55612035777557, - 69.21748055174206 - ], - [ - 40.286512198780315, - 66.17161911103315 - ], - [ - 41.06457482844087, - 64.59506978229311 - ], - [ - 41.78261326683901, - 62.984704619169946 - ], - [ - 42.439173302868426, - 61.34198868509172 - ], - [ - 43.032795299262034, - 59.66838161732542 - ], - [ - 43.562030471074166, - 57.9653267746557 - ], - [ - 44.025424607198474, - 56.2342892205107 - ], - [ - 44.42151264420724, - 54.47672316599658 - ], - [ - 44.748845797154615, - 52.69408824838088 - ], - [ - 45.00597528109472, - 50.88782782644792 - ], - [ - 45.191441458761766, - 49.05941238978664 - ], - [ - 45.303784692887, - 47.210285297181684 - ], - [ - 45.341556198525915, - 45.34190889898056 - ], - [ - 45.282557551663245, - 43.00859190881458 - ], - [ - 45.107455341209516, - 40.70590830969657 - ], - [ - 44.81910372776957, - 38.43670683606979 - ], - [ - 44.42035144578648, - 36.203838935457924 - ], - [ - 43.91404722970327, - 34.01015062922436 - ], - [ - 43.3030452401247, - 31.85849065181214 - ], - [ - 42.59018335917233, - 29.751707737664702 - ], - [ - 41.77831574745031, - 27.6926533343059 - ], - [ - 40.87029656556285, - 25.684173463098794 - ], - [ - 39.868963695631855, - 23.72911685848659 - ], - [ - 38.77718215058297, - 21.83033225491276 - ], - [ - 37.59778981253794, - 19.990671099901334 - ], - [ - 36.33363541594019, - 18.21297941481484 - ], - [ - 34.98757312139429, - 16.500107290637203 - ], - [ - 33.56245166334301, - 14.854902105271293 - ], - [ - 32.061119776230214, - 13.280213949701235 - ], - [ - 30.486426194499078, - 11.778890201829531 - ], - [ - 28.841214226432328, - 10.353780952640255 - ], - [ - 27.128343458794912, - 9.007734258306655 - ], - [ - 25.350657199869232, - 7.743598853272244 - ], - [ - 23.511009610259862, - 6.5642234719797585 - ], - [ - 21.61223857208779, - 5.472456848873151 - ], - [ - 19.65720367211924, - 4.471148057530829 - ], - [ - 17.64875364479667, - 3.5631454932609756 - ], - [ - 15.589731798402966, - 2.751297890507118 - ], - [ - 13.482992293542509, - 2.038454153279929 - ], - [ - 11.331383864658108, - 1.4274628464554961 - ], - [ - 9.137749820032752, - 0.9211728740447716 - ], - [ - 6.904949746431896, - 0.5224328433151588 - ], - [ - 4.635821525976269, - 0.23409153110225134 - ], - [ - 2.3332247454316644, - 0.058997671849483124 - ], - [ - 0, - 0 - ] - ] - }, - { - "type": "line", - "version": 407, - "versionNonce": 1913801830, - "isDeleted": false, - "id": "jo_HsTUFmAuaQhr0bKQYK", - "fillStyle": "cross-hatch", - "strokeWidth": 2, - "strokeStyle": "solid", - "roughness": 1, - "opacity": 100, - "angle": 0, - "x": 409.9910689730186, - "y": 280.35433772462017, - "strokeColor": "#000000", - "backgroundColor": "black", - "width": 1.2433247216556111, - "height": 0.9736323188196985, - "seed": 252992627, - "groupIds": [ - "5H1W_moj_Sm0BoAw7Fq0S", - "M7epUKFIsRBu-b5nc04_q" - ], - "strokeSharpness": "sharp", - "boundElements": [], - "updated": 1662370182112, - "link": null, - "locked": false, - "lastCommittedPoint": null, - "startArrowhead": null, - "endArrowhead": null, - "points": [ - [ - 0, - 0 - ], - [ - 0, - 0 - ], - [ - -0.1180569814948198, - 0.13828028296244899 - ], - [ - -0.3048905516942879, - 0.21145206195117172 - ], - [ - -0.5335299781205629, - 0.21348144610703637 - ], - [ - -0.777005884836039, - 0.13832911841005657 - ], - [ - -0.994399592911992, - 0.0012642954767824732 - ], - [ - -1.1439500119485713, - -0.17300228620670577 - ], - [ - -1.211820431792167, - -0.3619466329746887 - ], - [ - -1.1841782119098339, - -0.5430176203572481 - ], - [ - -1.0670599562411194, - -0.6847380892951416 - ], - [ - -0.880132784767091, - -0.7587834801798348 - ], - [ - -0.6499984510281438, - -0.7601508727126616 - ], - [ - -0.40326142164508727, - -0.6838373465949452 - ], - [ - -0.18512839915406332, - -0.5465337725845147 - ], - [ - -0.035206288099637134, - -0.3713881528442098 - ], - [ - 0.03150428986344346, - -0.18151050641095878 - ], - [ - 0, - 0 - ] - ] - }, - { - "type": "line", - "version": 410, - "versionNonce": 676566266, - "isDeleted": false, - "id": "dYxOARM8QmbX1qbxsLmaX", - "fillStyle": "cross-hatch", - "strokeWidth": 2, - "strokeStyle": "solid", - "roughness": 1, - "opacity": 100, - "angle": 0, - "x": 412.22144762234365, - "y": 282.3443225265891, - "strokeColor": "#000000", - "backgroundColor": "black", - "width": 1.3174867749984642, - "height": 1.3444452986143876, - "seed": 1615075389, - "groupIds": [ - "5H1W_moj_Sm0BoAw7Fq0S", - "M7epUKFIsRBu-b5nc04_q" - ], - "strokeSharpness": "sharp", - "boundElements": [], - "updated": 1662370182112, - "link": null, - "locked": false, - "lastCommittedPoint": null, - "startArrowhead": null, - "endArrowhead": null, - "points": [ - [ - 0, - 0 - ], - [ - 0, - 0 - ], - [ - -0.19554662797559091, - 0.09644458285098789 - ], - [ - -0.4364654563930879, - 0.08930375517955805 - ], - [ - -0.6906539611559186, - -0.014851402231530919 - ], - [ - -0.9260055485469003, - -0.2094498085995406 - ], - [ - -1.1027044068289547, - -0.46141358741610194 - ], - [ - -1.1858223386457292, - -0.7227754768154195 - ], - [ - -1.1721931791444442, - -0.9630675836553646 - ], - [ - -1.0586480503918605, - -1.1518165886329488 - ], - [ - -0.8610354116747114, - -1.2480007157633999 - ], - [ - -0.6213822352742093, - -1.2406753986232584 - ], - [ - -0.36779467782491176, - -1.1364659796037238 - ], - [ - -0.12837482634073188, - -0.9420086534176733 - ], - [ - 0.04855193069680286, - -0.6883953217043643 - ], - [ - 0.13166443635273417, - -0.4269520398923845 - ], - [ - 0.11676148559318644, - -0.18744130021405336 - ], - [ - -0.00035541353531609593, - 0.00035812661574397003 - ] - ] - }, - { - "type": "line", - "version": 410, - "versionNonce": 1746390950, - "isDeleted": false, - "id": "bEK86T7KAoWtz-X7SrDxa", - "fillStyle": "cross-hatch", - "strokeWidth": 2, - "strokeStyle": "solid", - "roughness": 1, - "opacity": 100, - "angle": 0, - "x": 413.7516331197485, - "y": 284.89048338896254, - "strokeColor": "#000000", - "backgroundColor": "black", - "width": 1.434260469453551, - "height": 1.6271265739719378, - "seed": 1205229075, - "groupIds": [ - "5H1W_moj_Sm0BoAw7Fq0S", - "M7epUKFIsRBu-b5nc04_q" - ], - "strokeSharpness": "sharp", - "boundElements": [], - "updated": 1662370182112, - "link": null, - "locked": false, - "lastCommittedPoint": null, - "startArrowhead": null, - "endArrowhead": null, - "points": [ - [ - 0, - 0 - ], - [ - 0, - 0 - ], - [ - -0.23616415497744653, - 0.07705148399258024 - ], - [ - -0.5056313721383141, - 0.02804782540547271 - ], - [ - -0.775566595672025, - -0.13276730354438726 - ], - [ - -1.013130700147375, - -0.39117193528343286 - ], - [ - -1.1692589826677473, - -0.7026932555297591 - ], - [ - -1.2206732132100502, - -1.0097488454010062 - ], - [ - -1.1668036448855883, - -1.2776004231703995 - ], - [ - -1.007084600426337, - -1.471509707111153 - ], - [ - -0.7699166056926503, - -1.5500750899793587 - ], - [ - -0.5014098190012602, - -1.503958148961555 - ], - [ - -0.23236855546669133, - -1.3464909612527833 - ], - [ - 0.0064001567161460216, - -1.091005604048103 - ], - [ - 0.16231817550379907, - -0.7753115661123307 - ], - [ - 0.21358725624350144, - -0.4657165329658213 - ], - [ - 0.1595738946566687, - -0.19592238961407737 - ], - [ - -0.0003567700755144898, - 0.0003581266157421937 - ] - ] - }, - { - "type": "line", - "version": 409, - "versionNonce": 566945210, - "isDeleted": false, - "id": "vVApp1Sr2fU7Tf4qWyRaR", - "fillStyle": "cross-hatch", - "strokeWidth": 2, - "strokeStyle": "solid", - "roughness": 1, - "opacity": 100, - "angle": 0, - "x": 416.33904365685993, - "y": 287.8395475463658, - "strokeColor": "#000000", - "backgroundColor": "black", - "width": 1.6720212722595122, - "height": 1.6435786936526044, - "seed": 133171357, - "groupIds": [ - "5H1W_moj_Sm0BoAw7Fq0S", - "M7epUKFIsRBu-b5nc04_q" - ], - "strokeSharpness": "sharp", - "boundElements": [], - "updated": 1662370182112, - "link": null, - "locked": false, - "lastCommittedPoint": null, - "startArrowhead": null, - "endArrowhead": null, - "points": [ - [ - 0, - 0 - ], - [ - 0, - 0 - ], - [ - -0.23244045209787775, - 0.14100964186726195 - ], - [ - -0.5305238850126699, - 0.15620289223199352 - ], - [ - -0.854678664245311, - 0.049909827448146926 - ], - [ - -1.1653317987565028, - -0.17353404996946692 - ], - [ - -1.4077401083258199, - -0.470231098788483 - ], - [ - -1.536098656184013, - -0.7870971874666889 - ], - [ - -1.5434375387262556, - -1.0868220340369634 - ], - [ - -1.4227922785085934, - -1.332111635014728 - ], - [ - -1.1881623705099338, - -1.47296934437834 - ], - [ - -0.8878230112240129, - -1.48737580142061 - ], - [ - -0.5614123056202519, - -1.380768019307789 - ], - [ - -0.2485724282887194, - -1.1585721588844144 - ], - [ - -0.006345895107694288, - -0.8617286037225949 - ], - [ - 0.12286184692267274, - -0.5440811478827854 - ], - [ - 0.12858373353325622, - -0.2440361578226895 - ], - [ - 0.00035541353532586584, - 0 - ] - ] - }, - { - "type": "line", - "version": 410, - "versionNonce": 1628105446, - "isDeleted": false, - "id": "G2tS9Wef41neQfF6rPB2q", - "fillStyle": "cross-hatch", - "strokeWidth": 2, - "strokeStyle": "solid", - "roughness": 1, - "opacity": 100, - "angle": 0, - "x": 419.6831892984356, - "y": 288.83525348750084, - "strokeColor": "#000000", - "backgroundColor": "black", - "width": 1.879079500466814, - "height": 1.4122831614929237, - "seed": 896015283, - "groupIds": [ - "5H1W_moj_Sm0BoAw7Fq0S", - "M7epUKFIsRBu-b5nc04_q" - ], - "strokeSharpness": "sharp", - "boundElements": [], - "updated": 1662370182112, - "link": null, - "locked": false, - "lastCommittedPoint": null, - "startArrowhead": null, - "endArrowhead": null, - "points": [ - [ - 0, - 0 - ], - [ - 0, - 0 - ], - [ - -0.1508174275937666, - 0.2280452618138007 - ], - [ - -0.41468620330328326, - 0.3724082710829882 - ], - [ - -0.7543638721719574, - 0.4219599719154025 - ], - [ - -1.1326161184845205, - 0.36556588225801784 - ], - [ - -1.4799066910180976, - 0.20510887992390536 - ], - [ - -1.7362168246711427, - -0.023294508505632083 - ], - [ - -1.8769768631395554, - -0.2898329553506577 - ], - [ - -1.8776144370387868, - -0.564705985252898 - ], - [ - -1.727844258488009, - -0.7950790700690211 - ], - [ - -1.4635522422326286, - -0.9413412356337876 - ], - [ - -1.1222521512714252, - -0.9903231895775243 - ], - [ - -0.7414441832010825, - -0.9288502133696408 - ], - [ - -0.3945035980419842, - -0.7692668229314972 - ], - [ - -0.13851089479834414, - -0.5419052573841087 - ], - [ - 0.0014650634280251318, - -0.27580090340665464 - ], - [ - 0.00035541353532586584, - 8.881784197001252e-15 - ] - ] - }, - { - "type": "line", - "version": 410, - "versionNonce": 966401658, - "isDeleted": false, - "id": "euKeE09z5Rn7J0q3h5UWn", - "fillStyle": "cross-hatch", - "strokeWidth": 2, - "strokeStyle": "solid", - "roughness": 1, - "opacity": 100, - "angle": 0, - "x": 423.4896248524046, - "y": 289.25735996575924, - "strokeColor": "#000000", - "backgroundColor": "black", - "width": 1.9483797136929517, - "height": 1.352383771929961, - "seed": 1233054973, - "groupIds": [ - "5H1W_moj_Sm0BoAw7Fq0S", - "M7epUKFIsRBu-b5nc04_q" - ], - "strokeSharpness": "sharp", - "boundElements": [], - "updated": 1662370182112, - "link": null, - "locked": false, - "lastCommittedPoint": null, - "startArrowhead": null, - "endArrowhead": null, - "points": [ - [ - 0, - 0 - ], - [ - 0, - 0 - ], - [ - -0.06908587987279091, - 0.2648346323398263 - ], - [ - -0.2739967049258496, - 0.48322675401117055 - ], - [ - -0.5823871303648629, - 0.6327446160826925 - ], - [ - -0.9619199506367375, - 0.6909510434621473 - ], - [ - -1.3440383365510566, - 0.6447038745840685 - ], - [ - -1.6563817201653208, - 0.5039438361156623 - ], - [ - -1.8681078032391394, - 0.29204140281438773 - ], - [ - -1.948379713692951, - 0.03236162327687497 - ], - [ - -1.8734010231430016, - -0.23411713579884663 - ], - [ - -1.6678037887430897, - -0.4528239747991667 - ], - [ - -1.3605908402073403, - -0.6023852461574308 - ], - [ - -0.9807677203302845, - -0.661432728467815 - ], - [ - -0.600089980120206, - -0.6148437114565256 - ], - [ - -0.2882186724994149, - -0.47407282066642104 - ], - [ - -0.07743402833212791, - -0.26162234511985494 - ], - [ - 0, - 0 - ] - ] - }, - { - "type": "line", - "version": 410, - "versionNonce": 1534631462, - "isDeleted": false, - "id": "UF-filpl9RluBeJBGQPYD", - "fillStyle": "cross-hatch", - "strokeWidth": 2, - "strokeStyle": "solid", - "roughness": 1, - "opacity": 100, - "angle": 0, - "x": 427.2284965646142, - "y": 289.1140496316943, - "strokeColor": "#000000", - "backgroundColor": "black", - "width": 1.9259778086462387, - "height": 1.3648530895507331, - "seed": 1139813715, - "groupIds": [ - "5H1W_moj_Sm0BoAw7Fq0S", - "M7epUKFIsRBu-b5nc04_q" - ], - "strokeSharpness": "sharp", - "boundElements": [], - "updated": 1662370182112, - "link": null, - "locked": false, - "lastCommittedPoint": null, - "startArrowhead": null, - "endArrowhead": null, - "points": [ - [ - 0, - 0 - ], - [ - 0, - 0 - ], - [ - -0.029510175753076212, - 0.2710530126676769 - ], - [ - -0.19767232648644747, - 0.5190991033544856 - ], - [ - -0.4783215046077133, - 0.7174090037401603 - ], - [ - -0.8452819102027805, - 0.8392371670219427 - ], - [ - -1.2267220260115081, - 0.8539257844281334 - ], - [ - -1.5577883776198878, - 0.7654956411445409 - ], - [ - -1.8027741135903699, - 0.5912507641044336 - ], - [ - -1.9259778086462376, - 0.34849518024104975 - ], - [ - -1.8959223037282893, - 0.07219507003669512 - ], - [ - -1.7266125199763014, - -0.17820597445663022 - ], - [ - -1.4465547933870848, - -0.3766623811851162 - ], - [ - -1.0842500337966516, - -0.49713943041660075 - ], - [ - -0.6982031074308885, - -0.5109273051225989 - ], - [ - -0.36663212286396174, - -0.4225948327342146 - ], - [ - -0.12280487223381087, - -0.24725387120350417 - ], - [ - 0, - 0 - ] - ] - }, - { - "type": "arrow", - "version": 638, - "versionNonce": 746864442, - "isDeleted": false, - "id": "7Syn5DvjY3mv9SneA2hDa", - "fillStyle": "cross-hatch", - "strokeWidth": 2, - "strokeStyle": "solid", - "roughness": 2, - "opacity": 90, - "angle": 2.9004652802090014, - "x": 724.4149919536901, - "y": 260.2787493726382, - "strokeColor": "#000000", - "backgroundColor": "transparent", - "width": 228.38375337128218, - "height": 15.970868372722578, - "seed": 2097763325, - "groupIds": [], - "strokeSharpness": "round", - "boundElements": [], - "updated": 1662370182112, - "link": null, - "locked": false, - "startBinding": null, - "endBinding": { - "elementId": "YbM8xe6NaFlLoIbF5ZNkj", - "focus": -0.17179110689191787, - "gap": 13.373552388928942 - }, - "lastCommittedPoint": null, - "startArrowhead": null, - "endArrowhead": "arrow", - "points": [ - [ - 0, - 0 - ], - [ - -228.38375337128218, - -15.970868372722578 - ] - ] - }, - { - "type": "text", - "version": 271, - "versionNonce": 2085480806, - "isDeleted": false, - "id": "XQ_OyjCmixaNfFzBEPv1T", - "fillStyle": "cross-hatch", - "strokeWidth": 2, - "strokeStyle": "solid", - "roughness": 2, - "opacity": 90, - "angle": 6.129944343664711, - "x": 569.9910210639403, - "y": 207.50068931986434, - "strokeColor": "#000000", - "backgroundColor": "transparent", - "width": 127, - "height": 44, - "seed": 1484668851, - "groupIds": [], - "strokeSharpness": "sharp", - "boundElements": [], - "updated": 1662370182112, - "link": null, - "locked": false, - "fontSize": 35.29411764705882, - "fontFamily": 1, - "text": "migrate", - "baseline": 31, - "textAlign": "center", - "verticalAlign": "top", - "containerId": null, - "originalText": "migrate" - }, - { - "type": "rectangle", - "version": 1197, - "versionNonce": 653019130, - "isDeleted": false, - "id": "N3_84v1HAfu3aswREv15n", - "fillStyle": "cross-hatch", - "strokeWidth": 2, - "strokeStyle": "solid", - "roughness": 2, - "opacity": 90, - "angle": 0, - "x": 1235, - "y": 172.00000000000017, - "strokeColor": "#000000", - "backgroundColor": "transparent", - "width": 123.00000000000003, - "height": 116.50000000000004, - "seed": 1718817693, - "groupIds": [], - "strokeSharpness": "sharp", - "boundElements": [], - "updated": 1662370182112, - "link": null, - "locked": false - }, - { - "type": "text", - "version": 1146, - "versionNonce": 1121438886, - "isDeleted": false, - "id": "P1FHGZfZVbuyCn1E5w1hV", - "fillStyle": "cross-hatch", - "strokeWidth": 2, - "strokeStyle": "solid", - "roughness": 2, - "opacity": 90, - "angle": 0, - "x": 1237.9999999999995, - "y": 149, - "strokeColor": "#000000", - "backgroundColor": "transparent", - "width": 118, - "height": 24, - "seed": 1462924531, - "groupIds": [], - "strokeSharpness": "sharp", - "boundElements": [], - "updated": 1662370182113, - "link": null, - "locked": false, - "fontSize": 18.800000000000004, - "fontFamily": 1, - "text": "workshop-dev", - "baseline": 17, - "textAlign": "center", - "verticalAlign": "top", - "containerId": null, - "originalText": "workshop-dev" - }, - { - "type": "rectangle", - "version": 1806, - "versionNonce": 1356150970, - "isDeleted": false, - "id": "vmk6BUQQhZk-zdA2Oo77A", - "fillStyle": "cross-hatch", - "strokeWidth": 1, - "strokeStyle": "solid", - "roughness": 2, - "opacity": 100, - "angle": 0, - "x": 1266.5835658482142, - "y": 205.415619389886, - "strokeColor": "#5665dc", - "backgroundColor": "#5665dc", - "width": 57.45616947617656, - "height": 53.44025912987806, - "seed": 947888765, - "groupIds": [ - "_0iEyIKCqAnh2J7YUwrlB" - ], - "strokeSharpness": "round", - "boundElements": [], - "updated": 1662370182113, - "link": null, - "locked": false - }, - { - "type": "rectangle", - "version": 1884, - "versionNonce": 1019430886, - "isDeleted": false, - "id": "JGCv3K6aRrwT7DflWeTHf", - "fillStyle": "solid", - "strokeWidth": 1, - "strokeStyle": "solid", - "roughness": 2, - "opacity": 100, - "angle": 0, - "x": 1269.9381426544435, - "y": 208.74060527777488, - "strokeColor": "#5665dc", - "backgroundColor": "#ffffff", - "width": 51.247712989934, - "height": 46.39762056468513, - "seed": 1251971027, - "groupIds": [ - "_0iEyIKCqAnh2J7YUwrlB" - ], - "strokeSharpness": "round", - "boundElements": [ - { - "id": "YGLbIKYvHLJ7195OM_YrC", - "type": "arrow" - } - ], - "updated": 1662370182113, - "link": null, - "locked": false - }, - { - "type": "line", - "version": 2054, - "versionNonce": 1507987834, - "isDeleted": false, - "id": "spb2oj8YGHpSNEwpHD2wV", - "fillStyle": "cross-hatch", - "strokeWidth": 1, - "strokeStyle": "solid", - "roughness": 1, - "opacity": 100, - "angle": 1.5774237450700657, - "x": 1301.9722141535574, - "y": 217.96881154394697, - "strokeColor": "#c92a2a", - "backgroundColor": "#fa5252", - "width": 33.32257701070834, - "height": 28.85819083936603, - "seed": 1556105949, - "groupIds": [ - "_0iEyIKCqAnh2J7YUwrlB" - ], - "strokeSharpness": "sharp", - "boundElements": [], - "updated": 1662370182113, - "link": null, - "locked": false, - "lastCommittedPoint": null, - "startArrowhead": null, - "endArrowhead": null, - "points": [ - [ - 0, - 0 - ], - [ - 16.661288505354147, - 28.85819083936598 - ], - [ - -16.6612885053542, - 28.858190839366024 - ], - [ - 0, - 0 - ] - ] - }, - { - "type": "line", - "version": 2423, - "versionNonce": 975002406, - "isDeleted": false, - "id": "SutAG57LVzwzVW-B7pjx2", - "fillStyle": "cross-hatch", - "strokeWidth": 1, - "strokeStyle": "solid", - "roughness": 1, - "opacity": 100, - "angle": 4.721247315744137, - "x": 1292.001511263509, - "y": 218.73806334146855, - "strokeColor": "#5665dc", - "backgroundColor": "#5665dc", - "width": 33.32257701070834, - "height": 28.85819083936603, - "seed": 107224435, - "groupIds": [ - "_0iEyIKCqAnh2J7YUwrlB" - ], - "strokeSharpness": "sharp", - "boundElements": [], - "updated": 1662370182113, - "link": null, - "locked": false, - "lastCommittedPoint": null, - "startArrowhead": null, - "endArrowhead": null, - "points": [ - [ - 0, - 0 - ], - [ - 16.661288505354147, - 28.85819083936598 - ], - [ - -16.6612885053542, - 28.858190839366024 - ], - [ - 0, - 0 - ] - ] - }, - { - "type": "line", - "version": 2744, - "versionNonce": 89510458, - "isDeleted": false, - "id": "i26NzthkwBlfiUCin9CYI", - "fillStyle": "cross-hatch", - "strokeWidth": 1, - "strokeStyle": "solid", - "roughness": 1, - "opacity": 100, - "angle": 0.0005581869343673773, - "x": 1296.0624601985858, - "y": 245.1701370116595, - "strokeColor": "#5665dc", - "backgroundColor": "#5665dc", - "width": 12.907571670440605, - "height": 13.318824900087934, - "seed": 395110205, - "groupIds": [ - "_0iEyIKCqAnh2J7YUwrlB" - ], - "strokeSharpness": "sharp", - "boundElements": [], - "updated": 1662370182113, - "link": null, - "locked": false, - "lastCommittedPoint": null, - "startArrowhead": null, - "endArrowhead": null, - "points": [ - [ - 0, - 0 - ], - [ - 6.453785835220252, - 13.318824900087908 - ], - [ - -6.453785835220351, - 13.31882490008794 - ], - [ - 0, - 0 - ] - ] - }, - { - "type": "rectangle", - "version": 1759, - "versionNonce": 22218342, - "isDeleted": false, - "id": "2BfNxEEM8p5HYk7WcE_F9", - "fillStyle": "solid", - "strokeWidth": 1, - "strokeStyle": "solid", - "roughness": 2, - "opacity": 100, - "angle": 5.989889724533434, - "x": 1301.980919550926, - "y": 252.81882394751756, - "strokeColor": "#ffffff", - "backgroundColor": "#ffffff", - "width": 4.533179238462011, - "height": 7.2653956832235504, - "seed": 562427667, - "groupIds": [ - "_0iEyIKCqAnh2J7YUwrlB" - ], - "strokeSharpness": "round", - "boundElements": [], - "updated": 1662370182113, - "link": null, - "locked": false - }, - { - "type": "line", - "version": 1683, - "versionNonce": 907246330, - "isDeleted": false, - "id": "5fGV8W9z-RAs_dgD03VyY", - "fillStyle": "cross-hatch", - "strokeWidth": 1, - "strokeStyle": "solid", - "roughness": 1, - "opacity": 100, - "angle": 0, - "x": 1297.093093580768, - "y": 222.20484551634627, - "strokeColor": "#000000", - "backgroundColor": "#000000", - "width": 18.093574283353416, - "height": 21.608910352169588, - "seed": 457635741, - "groupIds": [ - "_0iEyIKCqAnh2J7YUwrlB" - ], - "strokeSharpness": "sharp", - "boundElements": [], - "updated": 1662370182113, - "link": null, - "locked": false, - "lastCommittedPoint": null, - "startArrowhead": null, - "endArrowhead": null, - "points": [ - [ - 0, - 0 - ], - [ - 9.046787141676653, - 5.402227588042349 - ], - [ - 9.046787141676685, - 16.20668276412716 - ], - [ - 0, - 21.60891035216959 - ], - [ - -9.046787141676738, - 16.20668276412703 - ], - [ - -9.046787141676724, - 5.402227588042457 - ], - [ - 0, - 0 - ] - ] - }, - { - "type": "line", - "version": 1521, - "versionNonce": 53561766, - "isDeleted": false, - "id": "-fAV_aerIzzEWfYYHEKXg", - "fillStyle": "hachure", - "strokeWidth": 2, - "strokeStyle": "solid", - "roughness": 1, - "opacity": 100, - "angle": 0, - "x": 1286.9623124603343, - "y": 225.86946868342477, - "strokeColor": "#ffffff", - "backgroundColor": "#ffffff", - "width": 9.063116136997696, - "height": 6.655277964453662, - "seed": 1518050483, - "groupIds": [ - "_0iEyIKCqAnh2J7YUwrlB" - ], - "strokeSharpness": "round", - "boundElements": [], - "updated": 1662370182113, - "link": null, - "locked": false, - "startBinding": null, - "endBinding": null, - "lastCommittedPoint": null, - "startArrowhead": null, - "endArrowhead": null, - "points": [ - [ - 0, - 0 - ], - [ - 9.063116136997696, - 6.655277964453662 - ] - ] - }, - { - "type": "line", - "version": 1409, - "versionNonce": 2057178042, - "isDeleted": false, - "id": "C0EHFLoMSj-pbdFzB893u", - "fillStyle": "hachure", - "strokeWidth": 1, - "strokeStyle": "solid", - "roughness": 2, - "opacity": 100, - "angle": 0, - "x": 1293.5835666023909, - "y": 231.393259214085, - "strokeColor": "#ffffff", - "backgroundColor": "#ffffff", - "width": 1.938909697019904, - "height": 1.3996974072478967, - "seed": 1377827837, - "groupIds": [ - "_0iEyIKCqAnh2J7YUwrlB" - ], - "strokeSharpness": "round", - "boundElements": [], - "updated": 1662370182113, - "link": null, - "locked": false, - "startBinding": null, - "endBinding": null, - "lastCommittedPoint": null, - "startArrowhead": null, - "endArrowhead": null, - "points": [ - [ - 0, - 0 - ], - [ - 1.938909697019904, - 1.3996974072478967 - ] - ] - }, - { - "type": "line", - "version": 1631, - "versionNonce": 249898214, - "isDeleted": false, - "id": "hZP-cpVoJirzVS5h4IwGP", - "fillStyle": "hachure", - "strokeWidth": 2, - "strokeStyle": "solid", - "roughness": 1, - "opacity": 100, - "angle": 0, - "x": 1295.7896656391133, - "y": 231.83614969191865, - "strokeColor": "#ffffff", - "backgroundColor": "#ffffff", - "width": 0.41793131176457465, - "height": 12.31899938467562, - "seed": 1558941267, - "groupIds": [ - "_0iEyIKCqAnh2J7YUwrlB" - ], - "strokeSharpness": "round", - "boundElements": [], - "updated": 1662370182113, - "link": null, - "locked": false, - "startBinding": null, - "endBinding": null, - "lastCommittedPoint": null, - "startArrowhead": null, - "endArrowhead": null, - "points": [ - [ - 0, - 0 - ], - [ - 0.41793131176457465, - 12.31899938467562 - ] - ] - }, - { - "type": "line", - "version": 1673, - "versionNonce": 421037178, - "isDeleted": false, - "id": "OoBrrmXsBnrkluhSNWntM", - "fillStyle": "hachure", - "strokeWidth": 2, - "strokeStyle": "solid", - "roughness": 1, - "opacity": 100, - "angle": 0, - "x": 1295.8939101463318, - "y": 233.32005387918935, - "strokeColor": "#ffffff", - "backgroundColor": "#ffffff", - "width": 10.257078375565314, - "height": 6.540946725895645, - "seed": 1679389789, - "groupIds": [ - "_0iEyIKCqAnh2J7YUwrlB" - ], - "strokeSharpness": "round", - "boundElements": [], - "updated": 1662370182113, - "link": null, - "locked": false, - "startBinding": null, - "endBinding": null, - "lastCommittedPoint": null, - "startArrowhead": null, - "endArrowhead": null, - "points": [ - [ - 0, - 0 - ], - [ - 10.257078375565314, - -6.540946725895645 - ] - ] - }, - { - "type": "arrow", - "version": 373, - "versionNonce": 100374566, - "isDeleted": false, - "id": "WyT8CHCFzENtI1D28JXqX", - "fillStyle": "cross-hatch", - "strokeWidth": 2, - "strokeStyle": "solid", - "roughness": 2, - "opacity": 90, - "angle": 3.172965356582301, - "x": 913.5652581299081, - "y": 224.42325658610133, - "strokeColor": "#000000", - "backgroundColor": "transparent", - "width": 94.08894820589546, - "height": 4.643393316912409, - "seed": 249565469, - "groupIds": [], - "strokeSharpness": "round", - "boundElements": [], - "updated": 1662370182113, - "link": null, - "locked": false, - "startBinding": null, - "endBinding": null, - "lastCommittedPoint": null, - "startArrowhead": null, - "endArrowhead": "arrow", - "points": [ - [ - 0, - 0 - ], - [ - -94.08894820589546, - -4.643393316912409 - ] - ] - }, - { - "type": "text", - "version": 169, - "versionNonce": 457565498, - "isDeleted": false, - "id": "SmrHnQr2mG7pD6XtPNTbF", - "fillStyle": "cross-hatch", - "strokeWidth": 2, - "strokeStyle": "solid", - "roughness": 2, - "opacity": 90, - "angle": 0, - "x": 839, - "y": 191, - "strokeColor": "#000000", - "backgroundColor": "transparent", - "width": 48, - "height": 25, - "seed": 322424893, - "groupIds": [], - "strokeSharpness": "sharp", - "boundElements": [], - "updated": 1662370182113, - "link": null, - "locked": false, - "fontSize": 20, - "fontFamily": 1, - "text": "clone", - "baseline": 18, - "textAlign": "center", - "verticalAlign": "top", - "containerId": null, - "originalText": "clone" - }, - { - "type": "arrow", - "version": 1624, - "versionNonce": 274834278, - "isDeleted": false, - "id": "YGLbIKYvHLJ7195OM_YrC", - "fillStyle": "cross-hatch", - "strokeWidth": 2, - "strokeStyle": "solid", - "roughness": 2, - "opacity": 90, - "angle": 1.1544546290966737, - "x": 1066.1032297855195, - "y": 349.7657486755516, - "strokeColor": "#000000", - "backgroundColor": "transparent", - "width": 128.09256545730932, - "height": 234.12848935878483, - "seed": 1865112861, - "groupIds": [], - "strokeSharpness": "round", - "boundElements": [], - "updated": 1662370182113, - "link": null, - "locked": false, - "startBinding": null, - "endBinding": { - "elementId": "JGCv3K6aRrwT7DflWeTHf", - "focus": -0.6092445576527593, - "gap": 6.855367883465988 - }, - "lastCommittedPoint": null, - "startArrowhead": null, - "endArrowhead": "arrow", - "points": [ - [ - 0, - 0 - ], - [ - 128.09256545730932, - -234.12848935878483 - ] - ] - }, - { - "type": "rectangle", - "version": 362, - "versionNonce": 1518939642, - "isDeleted": false, - "id": "91F-Fbyycbn74TbDoib9O", - "fillStyle": "cross-hatch", - "strokeWidth": 2, - "strokeStyle": "solid", - "roughness": 2, - "opacity": 100, - "angle": 0, - "x": 593, - "y": 305, - "strokeColor": "#000000", - "backgroundColor": "transparent", - "width": 145, - "height": 123.99999999999999, - "seed": 1883417619, - "groupIds": [], - "strokeSharpness": "sharp", - "boundElements": [], - "updated": 1662370182113, - "link": null, - "locked": false - }, - { - "type": "text", - "version": 311, - "versionNonce": 1348748966, - "isDeleted": false, - "id": "hbDoM_i77W4Y0gTLYkn6S", - "fillStyle": "cross-hatch", - "strokeWidth": 2, - "strokeStyle": "solid", - "roughness": 2, - "opacity": 100, - "angle": 0, - "x": 578, - "y": 278, - "strokeColor": "#000000", - "backgroundColor": "transparent", - "width": 172, - "height": 25, - "seed": 350645171, - "groupIds": [], - "strokeSharpness": "sharp", - "boundElements": [], - "updated": 1662370182113, - "link": null, - "locked": false, - "fontSize": 20, - "fontFamily": 1, - "text": "openshift-pipelines", - "baseline": 18, - "textAlign": "center", - "verticalAlign": "top", - "containerId": null, - "originalText": "openshift-pipelines" - }, - { - "type": "arrow", - "version": 173, - "versionNonce": 199581370, - "isDeleted": false, - "id": "LUbBz_tU04VUacwIREtSp", - "fillStyle": "cross-hatch", - "strokeWidth": 2, - "strokeStyle": "solid", - "roughness": 2, - "opacity": 100, - "angle": 0, - "x": 777.4239640302878, - "y": 247.52451296269896, - "strokeColor": "#000000", - "backgroundColor": "transparent", - "width": 51.77851251264292, - "height": 105.57960552038185, - "seed": 280713363, - "groupIds": [], - "strokeSharpness": "round", - "boundElements": [], - "updated": 1662370182113, - "link": null, - "locked": false, - "startBinding": { - "elementId": "YbM8xe6NaFlLoIbF5ZNkj", - "focus": -0.16089294373087465, - "gap": 1.5245129626989637 - }, - "endBinding": null, - "lastCommittedPoint": null, - "startArrowhead": null, - "endArrowhead": "arrow", - "points": [ - [ - 0, - 0 - ], - [ - -51.77851251264292, - 105.57960552038185 - ] - ] - }, - { - "type": "ellipse", - "version": 897, - "versionNonce": 380666342, - "isDeleted": false, - "id": "bWmX4iEk56oiuov3XaAt4", - "fillStyle": "solid", - "strokeWidth": 1, - "strokeStyle": "solid", - "roughness": 1, - "opacity": 100, - "angle": 1.266735868877067, - "x": 709.5557892992503, - "y": 405.82341225688765, - "strokeColor": "#000000", - "backgroundColor": "#ffffff", - "width": 15.601312082155502, - "height": 39.21410874703946, - "seed": 1077858269, - "groupIds": [ - "jR05h_8U2AWpOQqAZ05t-", - "6Gk3LIiMNio0piIcba3a-" - ], - "strokeSharpness": "round", - "boundElements": [], - "updated": 1662370182113, - "link": null, - "locked": false - }, - { - "type": "ellipse", - "version": 946, - "versionNonce": 1274902394, - "isDeleted": false, - "id": "s246kZzX-8bYd4WOS8lkr", - "fillStyle": "solid", - "strokeWidth": 1, - "strokeStyle": "solid", - "roughness": 1, - "opacity": 100, - "angle": 1.266735868877067, - "x": 748.8627923737827, - "y": 531.0883803581581, - "strokeColor": "#000000", - "backgroundColor": "#868e96", - "width": 15.601312082155502, - "height": 39.21410874703946, - "seed": 62679155, - "groupIds": [ - "jR05h_8U2AWpOQqAZ05t-", - "6Gk3LIiMNio0piIcba3a-" - ], - "strokeSharpness": "round", - "boundElements": [], - "updated": 1662370182113, - "link": null, - "locked": false - }, - { - "type": "line", - "version": 912, - "versionNonce": 374560038, - "isDeleted": false, - "id": "SSI9fa4T-YBGS-_lSSMeL", - "fillStyle": "solid", - "strokeWidth": 1, - "strokeStyle": "solid", - "roughness": 1, - "opacity": 100, - "angle": 1.266735868877067, - "x": 689.1579997848136, - "y": 481.8299936330284, - "strokeColor": "#000000", - "backgroundColor": "#ffffff", - "width": 131.03766347453967, - "height": 0, - "seed": 1928514621, - "groupIds": [ - "jR05h_8U2AWpOQqAZ05t-", - "6Gk3LIiMNio0piIcba3a-" - ], - "strokeSharpness": "round", - "boundElements": [], - "updated": 1662370182113, - "link": null, - "locked": false, - "startBinding": null, - "endBinding": null, - "lastCommittedPoint": null, - "startArrowhead": null, - "endArrowhead": null, - "points": [ - [ - 0, - 0 - ], - [ - 131.03766347453967, - 0 - ] - ] - }, - { - "type": "line", - "version": 933, - "versionNonce": 722761786, - "isDeleted": false, - "id": "O8w8h12pi6dXXFeyZTjuA", - "fillStyle": "solid", - "strokeWidth": 1, - "strokeStyle": "solid", - "roughness": 1, - "opacity": 100, - "angle": 1.266735868877067, - "x": 652.3332843297612, - "y": 495.0998933566772, - "strokeColor": "#000000", - "backgroundColor": "#ffffff", - "width": 134.03924096645102, - "height": 0, - "seed": 60613139, - "groupIds": [ - "jR05h_8U2AWpOQqAZ05t-", - "6Gk3LIiMNio0piIcba3a-" - ], - "strokeSharpness": "round", - "boundElements": [], - "updated": 1662370182113, - "link": null, - "locked": false, - "startBinding": null, - "endBinding": null, - "lastCommittedPoint": null, - "startArrowhead": null, - "endArrowhead": null, - "points": [ - [ - 0, - 0 - ], - [ - 134.03924096645102, - 0 - ] - ] - }, - { - "type": "rectangle", - "version": 929, - "versionNonce": 414826598, - "isDeleted": false, - "id": "PzagH_-6alw3MCAH8cX1J", - "fillStyle": "solid", - "strokeWidth": 1, - "strokeStyle": "solid", - "roughness": 0, - "opacity": 100, - "angle": 1.266735868877067, - "x": 713.597337334139, - "y": 411.00378271589994, - "strokeColor": "transparent", - "backgroundColor": "#ffffff", - "width": 9.948224988021012, - "height": 35.893230121208454, - "seed": 984104093, - "groupIds": [ - "jR05h_8U2AWpOQqAZ05t-", - "6Gk3LIiMNio0piIcba3a-" - ], - "strokeSharpness": "round", - "boundElements": [], - "updated": 1662370182113, - "link": null, - "locked": false - }, - { - "type": "text", - "version": 1388, - "versionNonce": 957178106, - "isDeleted": false, - "id": "XKTEM8qBa4qGOJP7CVrIX", - "fillStyle": "cross-hatch", - "strokeWidth": 2, - "strokeStyle": "solid", - "roughness": 2, - "opacity": 100, - "angle": 7.549921176056646, - "x": 712.0787727644545, - "y": 473.7782965985263, - "strokeColor": "#000000", - "backgroundColor": "transparent", - "width": 45, - "height": 26, - "seed": 456298397, - "groupIds": [], - "strokeSharpness": "sharp", - "boundElements": [ - { - "id": "RN13O3v7s67B4r3OLdUG1", - "type": "arrow" - } - ], - "updated": 1662370182113, - "link": null, - "locked": false, - "fontSize": 20.54864706710939, - "fontFamily": 1, - "text": "build", - "baseline": 18, - "textAlign": "center", - "verticalAlign": "top", - "containerId": null, - "originalText": "build" - }, - { - "type": "rectangle", - "version": 437, - "versionNonce": 833668006, - "isDeleted": false, - "id": "H3OxM00ltL95Cpv7-pntY", - "fillStyle": "cross-hatch", - "strokeWidth": 2, - "strokeStyle": "solid", - "roughness": 2, - "opacity": 100, - "angle": 0, - "x": 1176, - "y": 635.4226804123714, - "strokeColor": "#000000", - "backgroundColor": "transparent", - "width": 149.99999999999997, - "height": 156.18556701030926, - "seed": 130779411, - "groupIds": [], - "strokeSharpness": "sharp", - "boundElements": [], - "updated": 1662370182113, - "link": null, - "locked": false - }, - { - "type": "text", - "version": 411, - "versionNonce": 292237754, - "isDeleted": false, - "id": "xPFM0yRtVl_q9yUM7sXQY", - "fillStyle": "cross-hatch", - "strokeWidth": 2, - "strokeStyle": "solid", - "roughness": 2, - "opacity": 100, - "angle": 0, - "x": 1187.5979381443308, - "y": 613, - "strokeColor": "#000000", - "backgroundColor": "transparent", - "width": 119.07216494845359, - "height": 19.32989690721649, - "seed": 598893427, - "groupIds": [], - "strokeSharpness": "sharp", - "boundElements": [], - "updated": 1662370182113, - "link": null, - "locked": false, - "fontSize": 15.463917525773192, - "fontFamily": 1, - "text": "openshift-gitops", - "baseline": 13.32989690721649, - "textAlign": "center", - "verticalAlign": "top", - "containerId": null, - "originalText": "openshift-gitops" - }, - { - "type": "ellipse", - "version": 562, - "versionNonce": 1936023270, - "isDeleted": false, - "id": "kRM5TuVhksSTfNwx2KHt5", - "fillStyle": "solid", - "strokeWidth": 1, - "strokeStyle": "solid", - "roughness": 1, - "opacity": 100, - "angle": 0.4926441730231774, - "x": 765.624692587189, - "y": 564.9445593601355, - "strokeColor": "#000000", - "backgroundColor": "#ffffff", - "width": 20.437466543852143, - "height": 51.36984833995264, - "seed": 1855880563, - "groupIds": [ - "43vV4vLsFJkYGj6_DkdO9", - "ADEjH6fBicYbBmh1gcf--" - ], - "strokeSharpness": "round", - "boundElements": [], - "updated": 1662370182113, - "link": null, - "locked": false - }, - { - "type": "ellipse", - "version": 611, - "versionNonce": 1733356154, - "isDeleted": false, - "id": "MC_5LeSK8xDrO7b5AJBwv", - "fillStyle": "solid", - "strokeWidth": 1, - "strokeStyle": "solid", - "roughness": 1, - "opacity": 100, - "angle": 0.4926441730231774, - "x": 917.157477852817, - "y": 646.2857521745397, - "strokeColor": "#000000", - "backgroundColor": "#868e96", - "width": 20.437466543852143, - "height": 51.36984833995264, - "seed": 782796605, - "groupIds": [ - "43vV4vLsFJkYGj6_DkdO9", - "ADEjH6fBicYbBmh1gcf--" - ], - "strokeSharpness": "round", - "boundElements": [], - "updated": 1662370182113, - "link": null, - "locked": false - }, - { - "type": "line", - "version": 555, - "versionNonce": 577016358, - "isDeleted": false, - "id": "QsbZlR67AxNiwXQX_mXXR", - "fillStyle": "solid", - "strokeWidth": 1, - "strokeStyle": "solid", - "roughness": 1, - "opacity": 100, - "angle": 0.4926441730231774, - "x": 777.1973181889331, - "y": 609.6645604521143, - "strokeColor": "#000000", - "backgroundColor": "#ffffff", - "width": 171.65722018397398, - "height": 0, - "seed": 1400133395, - "groupIds": [ - "43vV4vLsFJkYGj6_DkdO9", - "ADEjH6fBicYbBmh1gcf--" - ], - "strokeSharpness": "round", - "boundElements": [], - "updated": 1662370182113, - "link": null, - "locked": false, - "startBinding": null, - "endBinding": null, - "lastCommittedPoint": null, - "startArrowhead": null, - "endArrowhead": null, - "points": [ - [ - 0, - 0 - ], - [ - 171.65722018397398, - 0 - ] - ] - }, - { - "type": "line", - "version": 595, - "versionNonce": 293702458, - "isDeleted": false, - "id": "uaarLjGYhNeSc98SyzBXG", - "fillStyle": "solid", - "strokeWidth": 1, - "strokeStyle": "solid", - "roughness": 1, - "opacity": 100, - "angle": 0.4926441730231774, - "x": 753.4520735915288, - "y": 655.1495717743055, - "strokeColor": "#000000", - "backgroundColor": "#ffffff", - "width": 175.58923816083905, - "height": 0, - "seed": 233740189, - "groupIds": [ - "43vV4vLsFJkYGj6_DkdO9", - "ADEjH6fBicYbBmh1gcf--" - ], - "strokeSharpness": "round", - "boundElements": [], - "updated": 1662370182113, - "link": null, - "locked": false, - "startBinding": null, - "endBinding": null, - "lastCommittedPoint": null, - "startArrowhead": null, - "endArrowhead": null, - "points": [ - [ - 0, - 0 - ], - [ - 175.58923816083905, - 0 - ] - ] - }, - { - "type": "rectangle", - "version": 603, - "versionNonce": 1771789670, - "isDeleted": false, - "id": "5yv2VJrDQivTQxlNnCRkL", - "fillStyle": "solid", - "strokeWidth": 1, - "strokeStyle": "solid", - "roughness": 0, - "opacity": 100, - "angle": 0.4926441730231774, - "x": 773.6889627617859, - "y": 569.3042102290493, - "strokeColor": "transparent", - "backgroundColor": "#ffffff", - "width": 13.032013864778914, - "height": 47.01955104096814, - "seed": 2141060275, - "groupIds": [ - "43vV4vLsFJkYGj6_DkdO9", - "ADEjH6fBicYbBmh1gcf--" - ], - "strokeSharpness": "round", - "boundElements": [], - "updated": 1662370182113, - "link": null, - "locked": false - }, - { - "type": "text", - "version": 198, - "versionNonce": 375395322, - "isDeleted": false, - "id": "1vfMPC2D5LPGCEc14VIu0", - "fillStyle": "cross-hatch", - "strokeWidth": 2, - "strokeStyle": "solid", - "roughness": 2, - "opacity": 100, - "angle": 0.4926441730231774, - "x": 783.037418785633, - "y": 617.0290963153875, - "strokeColor": "#000000", - "backgroundColor": "transparent", - "width": 138, - "height": 25, - "seed": 1813240147, - "groupIds": [], - "strokeSharpness": "sharp", - "boundElements": [ - { - "id": "6zKDixmk2nfg2iRiN4mHi", - "type": "arrow" - } - ], - "updated": 1662370182113, - "link": null, - "locked": false, - "fontSize": 20, - "fontFamily": 1, - "text": "Security-check", - "baseline": 18, - "textAlign": "center", - "verticalAlign": "top", - "containerId": null, - "originalText": "Security-check" - }, - { - "type": "rectangle", - "version": 335, - "versionNonce": 834125498, - "isDeleted": false, - "id": "Lh1_hd6uD6QGi2tzImxzK", - "fillStyle": "cross-hatch", - "strokeWidth": 2, - "strokeStyle": "solid", - "roughness": 2, - "opacity": 100, - "angle": 0, - "x": 863, - "y": 341, - "strokeColor": "#000000", - "backgroundColor": "transparent", - "width": 133, - "height": 112.99999999999999, - "seed": 965598813, - "groupIds": [], - "strokeSharpness": "sharp", - "boundElements": [ - { - "id": "pL_41cALMabNFV36MK4XY", - "type": "arrow" - }, - { - "id": "6zKDixmk2nfg2iRiN4mHi", - "type": "arrow" - } - ], - "updated": 1662370621728, - "link": null, - "locked": false - }, - { - "type": "text", - "version": 220, - "versionNonce": 938443962, - "isDeleted": false, - "id": "tkIADUmUYhMbLPj_rlH80", - "fillStyle": "cross-hatch", - "strokeWidth": 2, - "strokeStyle": "solid", - "roughness": 2, - "opacity": 100, - "angle": 0, - "x": 867.5, - "y": 314, - "strokeColor": "#000000", - "backgroundColor": "transparent", - "width": 87, - "height": 25, - "seed": 1565983837, - "groupIds": [], - "strokeSharpness": "sharp", - "boundElements": [], - "updated": 1662370182113, - "link": null, - "locked": false, - "fontSize": 20, - "fontFamily": 1, - "text": "stackrox", - "baseline": 18, - "textAlign": "center", - "verticalAlign": "top", - "containerId": null, - "originalText": "stackrox" - }, - { - "type": "arrow", - "version": 536, - "versionNonce": 1407382822, - "isDeleted": false, - "id": "6zKDixmk2nfg2iRiN4mHi", - "fillStyle": "cross-hatch", - "strokeWidth": 2, - "strokeStyle": "solid", - "roughness": 2, - "opacity": 100, - "angle": 0, - "x": 842.5032628859708, - "y": 606.9591422207375, - "strokeColor": "#000000", - "backgroundColor": "transparent", - "width": 52.30072999437516, - "height": 148.87283782143345, - "seed": 64471859, - "groupIds": [], - "strokeSharpness": "round", - "boundElements": [], - "updated": 1662370622173, - "link": null, - "locked": false, - "startBinding": { - "elementId": "1vfMPC2D5LPGCEc14VIu0", - "focus": -0.23502933460513187, - "gap": 2.876807662286751 - }, - "endBinding": { - "elementId": "Lh1_hd6uD6QGi2tzImxzK", - "focus": 0.15531541528070858, - "gap": 4.0863043993040264 - }, - "lastCommittedPoint": null, - "startArrowhead": null, - "endArrowhead": "arrow", - "points": [ - [ - 0, - 0 - ], - [ - 52.30072999437516, - -148.87283782143345 - ] - ] - }, - { - "type": "arrow", - "version": 249, - "versionNonce": 2144525690, - "isDeleted": false, - "id": "pL_41cALMabNFV36MK4XY", - "fillStyle": "cross-hatch", - "strokeWidth": 2, - "strokeStyle": "solid", - "roughness": 2, - "opacity": 100, - "angle": 0, - "x": 954.4607878470633, - "y": 461.1518987341771, - "strokeColor": "#000000", - "backgroundColor": "transparent", - "width": 67.59026601742673, - "height": 136.40654042622558, - "seed": 1204297789, - "groupIds": [], - "strokeSharpness": "round", - "boundElements": [], - "updated": 1662370182113, - "link": null, - "locked": false, - "startBinding": { - "elementId": "Lh1_hd6uD6QGi2tzImxzK", - "gap": 7.151898734177136, - "focus": 0.06962312337398749 - }, - "endBinding": null, - "lastCommittedPoint": null, - "startArrowhead": null, - "endArrowhead": "arrow", - "points": [ - [ - 0, - 0 - ], - [ - 67.59026601742673, - 136.40654042622558 - ] - ] - }, - { - "type": "text", - "version": 220, - "versionNonce": 617104058, - "isDeleted": false, - "id": "f2gVDpWkJBS13UsIqBS2D", - "fillStyle": "cross-hatch", - "strokeWidth": 2, - "strokeStyle": "solid", - "roughness": 2, - "opacity": 100, - "angle": 1.0879780555375707, - "x": 956.6923516797929, - "y": 507.95499544990946, - "strokeColor": "#000000", - "backgroundColor": "transparent", - "width": 82.10870468764605, - "height": 14.66226869422252, - "seed": 1252521587, - "groupIds": [], - "strokeSharpness": "sharp", - "boundElements": [], - "updated": 1662370610877, - "link": null, - "locked": false, - "fontSize": 11.729814955378004, - "fontFamily": 1, - "text": "passed checks", - "baseline": 10.66226869422252, - "textAlign": "center", - "verticalAlign": "top", - "containerId": null, - "originalText": "passed checks" - }, - { - "type": "ellipse", - "version": 662, - "versionNonce": 1263345210, - "isDeleted": false, - "id": "wMwV6u0KKFw_Dc38afWMF", - "fillStyle": "solid", - "strokeWidth": 1, - "strokeStyle": "solid", - "roughness": 1, - "opacity": 100, - "angle": 5.870209680227749, - "x": 952.2464274867311, - "y": 609.2891895091072, - "strokeColor": "#000000", - "backgroundColor": "#ffffff", - "width": 22.035163420886043, - "height": 55.38568103087571, - "seed": 838055325, - "groupIds": [ - "5sL3E_Kh2M_eVUUFDFE58", - "XH7fEQ9UzUttO2rXPMhBS" - ], - "strokeSharpness": "round", - "boundElements": [], - "updated": 1662370182113, - "link": null, - "locked": false - }, - { - "type": "ellipse", - "version": 711, - "versionNonce": 843479654, - "isDeleted": false, - "id": "MBMG0AaD5nw-RYahlvrZd", - "fillStyle": "solid", - "strokeWidth": 1, - "strokeStyle": "solid", - "roughness": 1, - "opacity": 100, - "angle": 5.870209680227749, - "x": 1122.0866033093514, - "y": 534.8697197970208, - "strokeColor": "#000000", - "backgroundColor": "#868e96", - "width": 22.035163420886043, - "height": 55.38568103087571, - "seed": 1619115699, - "groupIds": [ - "5sL3E_Kh2M_eVUUFDFE58", - "XH7fEQ9UzUttO2rXPMhBS" - ], - "strokeSharpness": "round", - "boundElements": [], - "updated": 1662370182113, - "link": null, - "locked": false - }, - { - "type": "line", - "version": 659, - "versionNonce": 1463895802, - "isDeleted": false, - "id": "AbY3P-Tq38BwFS0a2ybUZ", - "fillStyle": "solid", - "strokeWidth": 1, - "strokeStyle": "solid", - "roughness": 1, - "opacity": 100, - "angle": 5.870209680227749, - "x": 945.0442865075744, - "y": 576.1248555820476, - "strokeColor": "#000000", - "backgroundColor": "#ffffff", - "width": 185.07650598536188, - "height": 0, - "seed": 814021117, - "groupIds": [ - "5sL3E_Kh2M_eVUUFDFE58", - "XH7fEQ9UzUttO2rXPMhBS" - ], - "strokeSharpness": "round", - "boundElements": [], - "updated": 1662370182113, - "link": null, - "locked": false, - "startBinding": null, - "endBinding": null, - "lastCommittedPoint": null, - "startArrowhead": null, - "endArrowhead": null, - "points": [ - [ - 0, - 0 - ], - [ - 185.07650598536188, - 0 - ] - ] - }, - { - "type": "line", - "version": 686, - "versionNonce": 764820902, - "isDeleted": false, - "id": "aJqRo9gGOKlY2ENbYtstW", - "fillStyle": "solid", - "strokeWidth": 1, - "strokeStyle": "solid", - "roughness": 1, - "opacity": 100, - "angle": 5.870209680227749, - "x": 966.8892751515822, - "y": 625.1754000199177, - "strokeColor": "#000000", - "backgroundColor": "#ffffff", - "width": 189.31590906930967, - "height": 0, - "seed": 1105031251, - "groupIds": [ - "5sL3E_Kh2M_eVUUFDFE58", - "XH7fEQ9UzUttO2rXPMhBS" - ], - "strokeSharpness": "round", - "boundElements": [], - "updated": 1662370182113, - "link": null, - "locked": false, - "startBinding": null, - "endBinding": null, - "lastCommittedPoint": null, - "startArrowhead": null, - "endArrowhead": null, - "points": [ - [ - 0, - 0 - ], - [ - 189.31590906930967, - 0 - ] - ] - }, - { - "type": "rectangle", - "version": 695, - "versionNonce": 1278367674, - "isDeleted": false, - "id": "KY2uYD7WFirJTaxA0LQ6k", - "fillStyle": "solid", - "strokeWidth": 1, - "strokeStyle": "solid", - "roughness": 0, - "opacity": 100, - "angle": 5.870209680227749, - "x": 960.9941414232325, - "y": 609.3880821037624, - "strokeColor": "transparent", - "backgroundColor": "#ffffff", - "width": 14.050790228695858, - "height": 50.69529968116781, - "seed": 1764667997, - "groupIds": [ - "5sL3E_Kh2M_eVUUFDFE58", - "XH7fEQ9UzUttO2rXPMhBS" - ], - "strokeSharpness": "round", - "boundElements": [], - "updated": 1662370182113, - "link": null, - "locked": false - }, - { - "type": "text", - "version": 604, - "versionNonce": 143366374, - "isDeleted": false, - "id": "gSA7nLO0_M27ncuD64kRI", - "fillStyle": "solid", - "strokeWidth": 1, - "strokeStyle": "solid", - "roughness": 0, - "opacity": 100, - "angle": 5.870209680227749, - "x": 982.3272915353461, - "y": 582.7889468950017, - "strokeColor": "#000000", - "backgroundColor": "#ffffff", - "width": 105.40259284078581, - "height": 44.796101957333974, - "seed": 202501619, - "groupIds": [ - "XH7fEQ9UzUttO2rXPMhBS" - ], - "strokeSharpness": "round", - "boundElements": [], - "updated": 1662370182113, - "link": null, - "locked": false, - "fontSize": 35.86773720941989, - "fontFamily": 1, - "text": "deploy", - "baseline": 31.796101957333974, - "textAlign": "left", - "verticalAlign": "top", - "containerId": null, - "originalText": "deploy" - }, - { - "type": "ellipse", - "version": 389, - "versionNonce": 1245925498, - "isDeleted": false, - "id": "pxosoNQSb3i47Z74v2vDO", - "fillStyle": "solid", - "strokeWidth": 1, - "strokeStyle": "solid", - "roughness": 1, - "opacity": 100, - "angle": 0.08380053118501518, - "x": 950.617339244592, - "y": 677.1173349299797, - "strokeColor": "#000000", - "backgroundColor": "#ffffff", - "width": 24.878625547778245, - "height": 62.53276151198314, - "seed": 149064573, - "groupIds": [ - "0HX-yqxxA0PAUcoMemv0B", - "BChvbNdhoMJ7QE6skd7OB" - ], - "strokeSharpness": "round", - "boundElements": [], - "updated": 1662370182113, - "link": null, - "locked": false - }, - { - "type": "ellipse", - "version": 438, - "versionNonce": 1790151718, - "isDeleted": false, - "id": "QXSWWWqHL6GblQWOGf7HA", - "fillStyle": "solid", - "strokeWidth": 1, - "strokeStyle": "solid", - "roughness": 1, - "opacity": 100, - "angle": 0.08380053118501518, - "x": 1159.2398821002835, - "y": 694.6410543317654, - "strokeColor": "#000000", - "backgroundColor": "#868e96", - "width": 24.878625547778245, - "height": 62.53276151198314, - "seed": 1425782483, - "groupIds": [ - "0HX-yqxxA0PAUcoMemv0B", - "BChvbNdhoMJ7QE6skd7OB" - ], - "strokeSharpness": "round", - "boundElements": [], - "updated": 1662370182113, - "link": null, - "locked": false - }, - { - "type": "line", - "version": 400, - "versionNonce": 1966551354, - "isDeleted": false, - "id": "GzhhNSJ1i-tpGvltYkiYH", - "fillStyle": "solid", - "strokeWidth": 1, - "strokeStyle": "solid", - "roughness": 1, - "opacity": 100, - "angle": 0.08380053118501518, - "x": 965.3318052323739, - "y": 686.78651231401, - "strokeColor": "#000000", - "backgroundColor": "#ffffff", - "width": 208.95915324760554, - "height": 0, - "seed": 1390285789, - "groupIds": [ - "0HX-yqxxA0PAUcoMemv0B", - "BChvbNdhoMJ7QE6skd7OB" - ], - "strokeSharpness": "round", - "boundElements": [], - "updated": 1662370182113, - "link": null, - "locked": false, - "startBinding": null, - "endBinding": null, - "lastCommittedPoint": null, - "startArrowhead": null, - "endArrowhead": null, - "points": [ - [ - 0, - 0 - ], - [ - 208.95915324760554, - 0 - ] - ] - }, - { - "type": "line", - "version": 421, - "versionNonce": 33232742, - "isDeleted": false, - "id": "w_khHTtgcA2Dpy1SNs6Ai", - "fillStyle": "solid", - "strokeWidth": 1, - "strokeStyle": "solid", - "roughness": 1, - "opacity": 100, - "angle": 0.08380053118501518, - "x": 959.9246459061292, - "y": 747.1070607672225, - "strokeColor": "#000000", - "backgroundColor": "#ffffff", - "width": 213.7456174937323, - "height": 0, - "seed": 1621320819, - "groupIds": [ - "0HX-yqxxA0PAUcoMemv0B", - "BChvbNdhoMJ7QE6skd7OB" - ], - "strokeSharpness": "round", - "boundElements": [], - "updated": 1662370182113, - "link": null, - "locked": false, - "startBinding": null, - "endBinding": null, - "lastCommittedPoint": null, - "startArrowhead": null, - "endArrowhead": null, - "points": [ - [ - 0, - 0 - ], - [ - 213.7456174937323, - 0 - ] - ] - }, - { - "type": "rectangle", - "version": 421, - "versionNonce": 7404026, - "isDeleted": false, - "id": "1t7JhE9gSSVDS_fWcD4LB", - "fillStyle": "solid", - "strokeWidth": 1, - "strokeStyle": "solid", - "roughness": 0, - "opacity": 100, - "angle": 0.08380053118501518, - "x": 961.0535881228944, - "y": 680.0944744540784, - "strokeColor": "transparent", - "backgroundColor": "#ffffff", - "width": 15.863932664042373, - "height": 57.23712385108606, - "seed": 2030669885, - "groupIds": [ - "0HX-yqxxA0PAUcoMemv0B", - "BChvbNdhoMJ7QE6skd7OB" - ], - "strokeSharpness": "round", - "boundElements": [], - "updated": 1662370182113, - "link": null, - "locked": false - }, - { - "type": "text", - "version": 362, - "versionNonce": 917453478, - "isDeleted": false, - "id": "GsqCVavnvOAOfj0cBBnyC", - "fillStyle": "solid", - "strokeWidth": 1, - "strokeStyle": "solid", - "roughness": 0, - "opacity": 100, - "angle": 0.08380053118501518, - "x": 976.4856062594816, - "y": 702.4847037719526, - "strokeColor": "#000000", - "backgroundColor": "#ffffff", - "width": 169, - "height": 25, - "seed": 574905875, - "groupIds": [ - "BChvbNdhoMJ7QE6skd7OB" - ], - "strokeSharpness": "round", - "boundElements": [], - "updated": 1662370182113, - "link": null, - "locked": false, - "fontSize": 20, - "fontFamily": 1, - "text": "git-update-deploy", - "baseline": 18, - "textAlign": "left", - "verticalAlign": "top", - "containerId": null, - "originalText": "git-update-deploy" - }, - { - "type": "rectangle", - "version": 51, - "versionNonce": 989047482, - "isDeleted": false, - "id": "8pt_5ImrdBMySC8OvdS7D", - "fillStyle": "cross-hatch", - "strokeWidth": 2, - "strokeStyle": "solid", - "roughness": 2, - "opacity": 100, - "angle": 0, - "x": 1466, - "y": 330, - "strokeColor": "#000000", - "backgroundColor": "transparent", - "width": 341, - "height": 385, - "seed": 212680499, - "groupIds": [], - "strokeSharpness": "sharp", - "boundElements": [], - "updated": 1662370182113, - "link": null, - "locked": false - }, - { - "type": "text", - "version": 42, - "versionNonce": 1602024934, - "isDeleted": false, - "id": "lanmH1jUBrQxV0-a9Io5g", - "fillStyle": "cross-hatch", - "strokeWidth": 2, - "strokeStyle": "solid", - "roughness": 2, - "opacity": 100, - "angle": 0, - "x": 1473, - "y": 302, - "strokeColor": "#000000", - "backgroundColor": "transparent", - "width": 132, - "height": 50, - "seed": 1775056627, - "groupIds": [], - "strokeSharpness": "sharp", - "boundElements": [], - "updated": 1662370182113, - "link": null, - "locked": false, - "fontSize": 20, - "fontFamily": 1, - "text": "workshop-prod\n", - "baseline": 43, - "textAlign": "center", - "verticalAlign": "top", - "containerId": null, - "originalText": "workshop-prod\n" - }, - { - "type": "rectangle", - "version": 1888, - "versionNonce": 459424634, - "isDeleted": false, - "id": "0_La1aeThN3RPAwqUna9p", - "fillStyle": "cross-hatch", - "strokeWidth": 1, - "strokeStyle": "solid", - "roughness": 2, - "opacity": 100, - "angle": 0, - "x": 1526.610967391419, - "y": 412.1743823584153, - "strokeColor": "#5665dc", - "backgroundColor": "#5665dc", - "width": 221.77806521716144, - "height": 206.2768434196143, - "seed": 354642141, - "groupIds": [ - "Wb2_Fn2dfsI_57i5ug6Oh" - ], - "strokeSharpness": "round", - "boundElements": [ - { - "id": "IdDsqRoxUzCm_nD_ZpV20", - "type": "arrow" - }, - { - "id": "MYovX0mFVqLZ-YhnVlKWi", - "type": "arrow" - } - ], - "updated": 1662370182113, - "link": null, - "locked": false - }, - { - "type": "rectangle", - "version": 1910, - "versionNonce": 1970358566, - "isDeleted": false, - "id": "JAIRv9tb3b79t7mbWBgcj", - "fillStyle": "solid", - "strokeWidth": 1, - "strokeStyle": "solid", - "roughness": 2, - "opacity": 100, - "angle": 0, - "x": 1539.5594733654664, - "y": 425.0086688034263, - "strokeColor": "#5665dc", - "backgroundColor": "#ffffff", - "width": 197.8137202206727, - "height": 179.09259550938995, - "seed": 1338630003, - "groupIds": [ - "Wb2_Fn2dfsI_57i5ug6Oh" - ], - "strokeSharpness": "round", - "boundElements": [ - { - "id": "YGLbIKYvHLJ7195OM_YrC", - "type": "arrow" - }, - { - "id": "IdDsqRoxUzCm_nD_ZpV20", - "type": "arrow" - } - ], - "updated": 1662370182113, - "link": null, - "locked": false - }, - { - "type": "line", - "version": 2078, - "versionNonce": 1275053114, - "isDeleted": false, - "id": "NtzbTA4Zcgw30kjesOoTG", - "fillStyle": "cross-hatch", - "strokeWidth": 1, - "strokeStyle": "solid", - "roughness": 1, - "opacity": 100, - "angle": 1.5774237450700657, - "x": 1658.9280885952755, - "y": 458.18171418176166, - "strokeColor": "#c92a2a", - "backgroundColor": "#fa5252", - "width": 128.62355295977417, - "height": 111.39123593465332, - "seed": 1373390141, - "groupIds": [ - "Wb2_Fn2dfsI_57i5ug6Oh" - ], - "strokeSharpness": "sharp", - "boundElements": [], - "updated": 1662370182113, - "link": null, - "locked": false, - "lastCommittedPoint": null, - "startArrowhead": null, - "endArrowhead": null, - "points": [ - [ - 0, - 0 - ], - [ - 64.31177647988696, - 111.39123593465294 - ], - [ - -64.31177647988724, - 111.39123593465331 - ], - [ - 0, - 0 - ] - ] - }, - { - "type": "line", - "version": 2503, - "versionNonce": 1207514214, - "isDeleted": false, - "id": "02Rx1lBDUIE1KJvQPYMdf", - "fillStyle": "cross-hatch", - "strokeWidth": 1, - "strokeStyle": "solid", - "roughness": 1, - "opacity": 100, - "angle": 4.721247315744137, - "x": 1622.1754295469339, - "y": 459.05789961657365, - "strokeColor": "#5665dc", - "backgroundColor": "#5665dc", - "width": 128.62355295977417, - "height": 111.39123593465332, - "seed": 2095282451, - "groupIds": [ - "Wb2_Fn2dfsI_57i5ug6Oh" - ], - "strokeSharpness": "sharp", - "boundElements": [], - "updated": 1662370182113, - "link": null, - "locked": false, - "lastCommittedPoint": null, - "startArrowhead": null, - "endArrowhead": null, - "points": [ - [ - 0, - 0 - ], - [ - 64.31177647988696, - 111.39123593465294 - ], - [ - -64.31177647988724, - 111.39123593465331 - ], - [ - 0, - 0 - ] - ] - }, - { - "type": "line", - "version": 2825, - "versionNonce": 917449978, - "isDeleted": false, - "id": "GpNTvTCGewFoS0C2oMAtL", - "fillStyle": "cross-hatch", - "strokeWidth": 1, - "strokeStyle": "solid", - "roughness": 1, - "opacity": 100, - "angle": 0.0005581869343673773, - "x": 1638.7180529110083, - "y": 561.6349550140723, - "strokeColor": "#5665dc", - "backgroundColor": "#5665dc", - "width": 49.82260909177225, - "height": 51.410026882011636, - "seed": 1341822365, - "groupIds": [ - "Wb2_Fn2dfsI_57i5ug6Oh" - ], - "strokeSharpness": "sharp", - "boundElements": [], - "updated": 1662370182113, - "link": null, - "locked": false, - "lastCommittedPoint": null, - "startArrowhead": null, - "endArrowhead": null, - "points": [ - [ - 0, - 0 - ], - [ - 24.911304545885905, - 51.41002688201148 - ], - [ - -24.911304545886345, - 51.41002688201164 - ], - [ - 0, - 0 - ] - ] - }, - { - "type": "rectangle", - "version": 1838, - "versionNonce": 820098982, - "isDeleted": false, - "id": "9RvRO0Zj5HMKTJ1HoCS-q", - "fillStyle": "solid", - "strokeWidth": 1, - "strokeStyle": "solid", - "roughness": 2, - "opacity": 100, - "angle": 5.989889724533434, - "x": 1663.2430591157047, - "y": 595.1484839689303, - "strokeColor": "#ffffff", - "backgroundColor": "#ffffff", - "width": 17.497854972834, - "height": 28.044079728122867, - "seed": 853073587, - "groupIds": [ - "Wb2_Fn2dfsI_57i5ug6Oh" - ], - "strokeSharpness": "round", - "boundElements": [], - "updated": 1662370182113, - "link": null, - "locked": false - }, - { - "type": "line", - "version": 1764, - "versionNonce": 284392890, - "isDeleted": false, - "id": "AvM9koHNJw3uQbCDmlhAi", - "fillStyle": "cross-hatch", - "strokeWidth": 1, - "strokeStyle": "solid", - "roughness": 1, - "opacity": 100, - "angle": 0, - "x": 1642.6148868503171, - "y": 474.8880583910558, - "strokeColor": "#000000", - "backgroundColor": "#000000", - "width": 69.84033105598769, - "height": 83.40936009217185, - "seed": 716167677, - "groupIds": [ - "Wb2_Fn2dfsI_57i5ug6Oh" - ], - "strokeSharpness": "sharp", - "boundElements": [], - "updated": 1662370182113, - "link": null, - "locked": false, - "lastCommittedPoint": null, - "startArrowhead": null, - "endArrowhead": null, - "points": [ - [ - 0, - 0 - ], - [ - 34.92016552799359, - 20.852340023042693 - ], - [ - 34.92016552799375, - 62.557020069128804 - ], - [ - -3.552713678800501e-14, - 83.40936009217185 - ], - [ - -34.92016552799395, - 62.55702006912823 - ], - [ - -34.9201655279939, - 20.852340023043222 - ], - [ - 0, - 0 - ] - ] - }, - { - "type": "line", - "version": 1602, - "versionNonce": 1213715174, - "isDeleted": false, - "id": "UfX2oAa4cs5EuKGQM5fqb", - "fillStyle": "hachure", - "strokeWidth": 2, - "strokeStyle": "solid", - "roughness": 1, - "opacity": 100, - "angle": 0, - "x": 1602.917213951931, - "y": 487.26340192544416, - "strokeColor": "#ffffff", - "backgroundColor": "#ffffff", - "width": 34.98319466868052, - "height": 25.689054524439623, - "seed": 2085654611, - "groupIds": [ - "Wb2_Fn2dfsI_57i5ug6Oh" - ], - "strokeSharpness": "round", - "boundElements": [], - "updated": 1662370182113, - "link": null, - "locked": false, - "startBinding": null, - "endBinding": null, - "lastCommittedPoint": null, - "startArrowhead": null, - "endArrowhead": null, - "points": [ - [ - 0, - 0 - ], - [ - 34.98319466868052, - 25.689054524439623 - ] - ] - }, - { - "type": "line", - "version": 1490, - "versionNonce": 1743763066, - "isDeleted": false, - "id": "EVVFMmRHRhfXmUT4-M8sZ", - "fillStyle": "hachure", - "strokeWidth": 1, - "strokeStyle": "solid", - "roughness": 2, - "opacity": 100, - "angle": 0, - "x": 1621.2887361425333, - "y": 502.6564810960499, - "strokeColor": "#ffffff", - "backgroundColor": "#ffffff", - "width": 7.484098664359511, - "height": 5.402765024174263, - "seed": 452825693, - "groupIds": [ - "Wb2_Fn2dfsI_57i5ug6Oh" - ], - "strokeSharpness": "round", - "boundElements": [], - "updated": 1662370182113, - "link": null, - "locked": false, - "startBinding": null, - "endBinding": null, - "lastCommittedPoint": null, - "startArrowhead": null, - "endArrowhead": null, - "points": [ - [ - 0, - 0 - ], - [ - 7.484098664359511, - 5.402765024174263 - ] - ] - }, - { - "type": "line", - "version": 1710, - "versionNonce": 417891878, - "isDeleted": false, - "id": "YhlYZ0qUNmCO_HBX3iZXH", - "fillStyle": "hachure", - "strokeWidth": 2, - "strokeStyle": "solid", - "roughness": 1, - "opacity": 100, - "angle": 0, - "x": 1635.333028553148, - "y": 511.16530082305417, - "strokeColor": "#ffffff", - "backgroundColor": "#ffffff", - "width": 1.6131948677025787, - "height": 47.55074822865768, - "seed": 1260457459, - "groupIds": [ - "Wb2_Fn2dfsI_57i5ug6Oh" - ], - "strokeSharpness": "round", - "boundElements": [], - "updated": 1662370182113, - "link": null, - "locked": false, - "startBinding": null, - "endBinding": null, - "lastCommittedPoint": null, - "startArrowhead": null, - "endArrowhead": null, - "points": [ - [ - 0, - 0 - ], - [ - 1.6131948677025787, - 47.55074822865768 - ] - ] - }, - { - "type": "line", - "version": 1697, - "versionNonce": 744937274, - "isDeleted": false, - "id": "SyQKuaVA586VCFiFEZAn5", - "fillStyle": "hachure", - "strokeWidth": 2, - "strokeStyle": "solid", - "roughness": 1, - "opacity": 100, - "angle": 0, - "x": 1637.6935138972788, - "y": 517.0460602840465, - "strokeColor": "#ffffff", - "backgroundColor": "#ffffff", - "width": 39.591831785042224, - "height": 25.247741413724963, - "seed": 1035288253, - "groupIds": [ - "Wb2_Fn2dfsI_57i5ug6Oh" - ], - "strokeSharpness": "round", - "boundElements": [], - "updated": 1662370182113, - "link": null, - "locked": false, - "startBinding": null, - "endBinding": null, - "lastCommittedPoint": null, - "startArrowhead": null, - "endArrowhead": null, - "points": [ - [ - 0, - 0 - ], - [ - 39.591831785042224, - -25.247741413724963 - ] - ] - }, - { - "type": "arrow", - "version": 169, - "versionNonce": 1400951142, - "isDeleted": false, - "id": "MYovX0mFVqLZ-YhnVlKWi", - "fillStyle": "cross-hatch", - "strokeWidth": 2, - "strokeStyle": "solid", - "roughness": 2, - "opacity": 100, - "angle": 0, - "x": 1317.1564767176133, - "y": 701.6063011924754, - "strokeColor": "#000000", - "backgroundColor": "transparent", - "width": 190.7782746129726, - "height": 119.10973376374363, - "seed": 1441943059, - "groupIds": [], - "strokeSharpness": "round", - "boundElements": [], - "updated": 1662370182113, - "link": null, - "locked": false, - "startBinding": { - "elementId": "ViSSRBSV13MQgSIMp1121", - "gap": 5.643188463702577, - "focus": 0.5687994618431667 - }, - "endBinding": { - "elementId": "0_La1aeThN3RPAwqUna9p", - "gap": 18.676216060833045, - "focus": 0.07952917546208692 - }, - "lastCommittedPoint": null, - "startArrowhead": null, - "endArrowhead": "arrow", - "points": [ - [ - 0, - 0 - ], - [ - 190.7782746129726, - -119.10973376374363 - ] - ] - }, - { - "type": "text", - "version": 99, - "versionNonce": 1052499962, - "isDeleted": false, - "id": "XnKjHY3PMIJ8X3Iut90Vn", - "fillStyle": "cross-hatch", - "strokeWidth": 2, - "strokeStyle": "solid", - "roughness": 2, - "opacity": 100, - "angle": 5.659361291616362, - "x": 1343.8636127028085, - "y": 613.1633505525595, - "strokeColor": "#000000", - "backgroundColor": "transparent", - "width": 82.78366472683508, - "height": 35.07782403679453, - "seed": 1828456029, - "groupIds": [], - "strokeSharpness": "sharp", - "boundElements": [], - "updated": 1662370182113, - "link": null, - "locked": false, - "fontSize": 28.06225922943561, - "fontFamily": 1, - "text": "deploy", - "baseline": 25.07782403679453, - "textAlign": "center", - "verticalAlign": "top", - "containerId": null, - "originalText": "deploy" - }, - { - "type": "line", - "version": 745, - "versionNonce": 57521318, - "isDeleted": false, - "id": "thzNSrLnhzVO2GasUl5cc", - "fillStyle": "cross-hatch", - "strokeWidth": 1, - "strokeStyle": "solid", - "roughness": 1, - "opacity": 100, - "angle": 0, - "x": 925.6494827783839, - "y": 354.3927118461836, - "strokeColor": "#000000", - "backgroundColor": "#fa5252", - "width": 36.80024161240393, - "height": 88.85250563167858, - "seed": 1322750531, - "groupIds": [ - "f5rXZgheTqPG4zyAM423g" - ], - "strokeSharpness": "sharp", - "boundElements": [], - "updated": 1662370182113, - "link": null, - "locked": false, - "startBinding": null, - "endBinding": null, - "lastCommittedPoint": null, - "startArrowhead": null, - "endArrowhead": null, - "points": [ - [ - 0, - 0 - ], - [ - 36.54498897630312, - 15.261051414092641 - ], - [ - 36.525405690682085, - 45.153295005115055 - ], - [ - 33.861707995967805, - 54.6963126323562 - ], - [ - 30.75587306651343, - 62.74498320806545 - ], - [ - 25.995711074158308, - 70.65770726099038 - ], - [ - 19.384635499286603, - 77.89135666010898 - ], - [ - 12.720085711387398, - 83.41935810731395 - ], - [ - 6.3787139693362676, - 86.70159812520359 - ], - [ - -0.10265972239303522, - 88.85250563167858 - ], - [ - -0.06340941077258577, - 75.88601983847225 - ], - [ - 3.235165962349569, - 75.91990478442317 - ], - [ - 3.265892699745965, - 45.02965233649152 - ], - [ - 10.123487985548383, - 41.65139201192042 - ], - [ - 14.054309196616089, - 36.66744582135474 - ], - [ - 15.020182683336147, - 29.556272707018426 - ], - [ - 13.477762673179786, - 23.272149476476017 - ], - [ - 10.332659487738045, - 19.279602634385917 - ], - [ - 5.664390597703437, - 15.97419942970106 - ], - [ - -0.2552526361008107, - 14.639126577777791 - ], - [ - -0.1431362324107487, - 0.028909870259032244 - ] - ] - }, - { - "type": "line", - "version": 919, - "versionNonce": 2062667962, - "isDeleted": false, - "id": "n1fqP2_PtM2rcvpKW08rG", - "fillStyle": "cross-hatch", - "strokeWidth": 1, - "strokeStyle": "solid", - "roughness": 1, - "opacity": 100, - "angle": 0, - "x": 926.2197362499746, - "y": 354.7812737761983, - "strokeColor": "#000000", - "backgroundColor": "#fa5252", - "width": 37.27971210224614, - "height": 88.4324489402708, - "seed": 1507059565, - "groupIds": [ - "f5rXZgheTqPG4zyAM423g" - ], - "strokeSharpness": "sharp", - "boundElements": [], - "updated": 1662370182113, - "link": null, - "locked": false, - "startBinding": null, - "endBinding": null, - "lastCommittedPoint": null, - "startArrowhead": null, - "endArrowhead": null, - "points": [ - [ - 0, - 0 - ], - [ - -36.946879987066026, - 14.582954728276466 - ], - [ - -37.27971210224613, - 44.5147746202494 - ], - [ - -35.28827319268641, - 51.43914687632476 - ], - [ - -33.892904277628304, - 56.51656527348815 - ], - [ - -31.404316686212724, - 62.933662243383665 - ], - [ - -28.13051949289693, - 68.68165564595134 - ], - [ - -24.982733624620305, - 73.2132662199858 - ], - [ - -20.447749509629823, - 77.79425370996469 - ], - [ - -15.523390579710775, - 81.67477087947076 - ], - [ - -9.834529847164426, - 85.02468508597275 - ], - [ - -0.505827773925617, - 88.26419358508505 - ], - [ - -0.3509319998134188, - 75.84395226126611 - ], - [ - -3.382046585963373, - 75.71588929695716 - ], - [ - -3.4159315319143033, - 73.27023360308148 - ], - [ - -9.316146997942827, - 73.06574558062337 - ], - [ - -9.574641582976785, - 66.67822092719408 - ], - [ - -3.2928331757501113, - 66.56177394965253 - ], - [ - -3.639679841391416, - 60.9562109677351 - ], - [ - -13.193338478137523, - 60.87793165835117 - ], - [ - -12.658686069695126, - 54.5946398501366 - ], - [ - -3.403089346749777, - 54.352630156725205 - ], - [ - -3.1780251170416314, - 45.18840614946336 - ], - [ - -7.688574985922852, - 43.89485656228696 - ], - [ - -11.428510004557769, - 40.552102158133266 - ], - [ - -13.822485922084503, - 37.037590256542366 - ], - [ - -15.280597315616209, - 32.15696772994078 - ], - [ - -15.256707381966086, - 27.26905679969558 - ], - [ - -13.898402556508104, - 23.189354168117305 - ], - [ - -11.25508368100924, - 19.441188666582406 - ], - [ - -7.757947907924449, - 17.198450863070793 - ], - [ - -3.850538114059246, - 15.406083767927218 - ], - [ - -0.26874081846960607, - 14.906733910412115 - ], - [ - -0.07050341710929331, - -0.16825535518573176 - ] - ] - }, - { - "type": "ellipse", - "version": 445, - "versionNonce": 1113337830, - "isDeleted": false, - "id": "FpCZgjpwqcVTht-qzpTqJ", - "fillStyle": "cross-hatch", - "strokeWidth": 1, - "strokeStyle": "solid", - "roughness": 1, - "opacity": 100, - "angle": 0, - "x": 917.5989938401738, - "y": 376.4512245752927, - "strokeColor": "#000000", - "backgroundColor": "#fa5252", - "width": 16.598766574025625, - "height": 16.598766574025625, - "seed": 1263686115, - "groupIds": [ - "f5rXZgheTqPG4zyAM423g" - ], - "strokeSharpness": "sharp", - "boundElements": [], - "updated": 1662370182113, - "link": null, - "locked": false - }, - { - "type": "rectangle", - "version": 253, - "versionNonce": 1152100730, - "isDeleted": false, - "id": "XS-ozr6RBj5EVAHcfx2_5", - "fillStyle": "cross-hatch", - "strokeWidth": 1, - "strokeStyle": "solid", - "roughness": 2, - "opacity": 100, - "angle": 0, - "x": 1186.0548095703127, - "y": 722.1477313809243, - "strokeColor": "#000000", - "backgroundColor": "#fa5252", - "width": 51.06135863612197, - "height": 41.56354181243603, - "seed": 1898464195, - "groupIds": [ - "OY6MK1eU2JaL-m31SInn-" - ], - "strokeSharpness": "round", - "boundElements": [], - "updated": 1662370182113, - "link": null, - "locked": false - }, - { - "type": "rectangle", - "version": 379, - "versionNonce": 1817789222, - "isDeleted": false, - "id": "ViSSRBSV13MQgSIMp1121", - "fillStyle": "cross-hatch", - "strokeWidth": 1, - "strokeStyle": "solid", - "roughness": 2, - "opacity": 100, - "angle": 0, - "x": 1216.4738167836779, - "y": 659.2887268066405, - "strokeColor": "#000000", - "backgroundColor": "#fa5252", - "width": 95.03947147023257, - "height": 74.70988753089877, - "seed": 1195445741, - "groupIds": [ - "OY6MK1eU2JaL-m31SInn-" - ], - "strokeSharpness": "round", - "boundElements": [ - { - "id": "O-6qwc0WhxULz_4I0s_HA", - "type": "arrow" - }, - { - "id": "MYovX0mFVqLZ-YhnVlKWi", - "type": "arrow" - } - ], - "updated": 1662370182113, - "link": null, - "locked": false - }, - { - "type": "arrow", - "version": 349, - "versionNonce": 321677882, - "isDeleted": false, - "id": "O-6qwc0WhxULz_4I0s_HA", - "fillStyle": "cross-hatch", - "strokeWidth": 4, - "strokeStyle": "solid", - "roughness": 2, - "opacity": 100, - "angle": 0, - "x": 1207.7365422532155, - "y": 743.2464245057326, - "strokeColor": "#000000", - "backgroundColor": "#fa5252", - "width": 63.91981266360501, - "height": 52.29286799863308, - "seed": 328258403, - "groupIds": [ - "OY6MK1eU2JaL-m31SInn-" - ], - "strokeSharpness": "round", - "boundElements": [], - "updated": 1662370182113, - "link": null, - "locked": false, - "startBinding": { - "elementId": "ViSSRBSV13MQgSIMp1121", - "focus": 0.0075931537938258185, - "gap": 9.247810168193439 - }, - "endBinding": null, - "lastCommittedPoint": null, - "startArrowhead": null, - "endArrowhead": "arrow", - "points": [ - [ - 0, - 0 - ], - [ - 63.91981266360501, - -52.29286799863308 - ] - ] - }, - { - "type": "ellipse", - "version": 669, - "versionNonce": 1406266982, - "isDeleted": false, - "id": "KPZsUz6XrfRgo5gzwOnCF", - "fillStyle": "cross-hatch", - "strokeWidth": 1, - "strokeStyle": "solid", - "roughness": 1, - "opacity": 100, - "angle": 0, - "x": 691.228543069361, - "y": 356.8137377360939, - "strokeColor": "#000000", - "backgroundColor": "#fa5252", - "width": 17.73721237969338, - "height": 17.737212379693382, - "seed": 839994541, - "groupIds": [ - "b1ibwSW8IcqyRbXlyG-Xj" - ], - "strokeSharpness": "sharp", - "boundElements": [], - "updated": 1662370182113, - "link": null, - "locked": false - }, - { - "type": "ellipse", - "version": 821, - "versionNonce": 2102858490, - "isDeleted": false, - "id": "0EvWV8PC9X7e1VrL7zu7Z", - "fillStyle": "cross-hatch", - "strokeWidth": 1, - "strokeStyle": "solid", - "roughness": 1, - "opacity": 100, - "angle": 0, - "x": 620.806908501519, - "y": 324.72344471178013, - "strokeColor": "#000000", - "backgroundColor": "#fa5252", - "width": 14.096941137149154, - "height": 14.096941137149154, - "seed": 737730723, - "groupIds": [ - "b1ibwSW8IcqyRbXlyG-Xj" - ], - "strokeSharpness": "sharp", - "boundElements": [], - "updated": 1662370182113, - "link": null, - "locked": false - }, - { - "type": "ellipse", - "version": 877, - "versionNonce": 1972580774, - "isDeleted": false, - "id": "Ghr9iuQZ3q8DjB1pegFrI", - "fillStyle": "cross-hatch", - "strokeWidth": 1, - "strokeStyle": "solid", - "roughness": 1, - "opacity": 100, - "angle": 0, - "x": 620.8278846144517, - "y": 358.65350858826474, - "strokeColor": "#000000", - "backgroundColor": "#fa5252", - "width": 14.096941137149154, - "height": 14.096941137149154, - "seed": 1425878797, - "groupIds": [ - "b1ibwSW8IcqyRbXlyG-Xj" - ], - "strokeSharpness": "sharp", - "boundElements": [], - "updated": 1662370182113, - "link": null, - "locked": false - }, - { - "type": "ellipse", - "version": 886, - "versionNonce": 1169073082, - "isDeleted": false, - "id": "odlpEEpNgIDZzeq3OXuvP", - "fillStyle": "cross-hatch", - "strokeWidth": 1, - "strokeStyle": "solid", - "roughness": 1, - "opacity": 100, - "angle": 0, - "x": 621.0832978108213, - "y": 391.8841472892281, - "strokeColor": "#000000", - "backgroundColor": "#fa5252", - "width": 14.096941137149154, - "height": 14.096941137149154, - "seed": 1744491587, - "groupIds": [ - "b1ibwSW8IcqyRbXlyG-Xj" - ], - "strokeSharpness": "sharp", - "boundElements": [], - "updated": 1662370182113, - "link": null, - "locked": false - }, - { - "type": "line", - "version": 885, - "versionNonce": 751439078, - "isDeleted": false, - "id": "wsKOdGOVXg-2pEVWlBNMl", - "fillStyle": "cross-hatch", - "strokeWidth": 1, - "strokeStyle": "solid", - "roughness": 1, - "opacity": 100, - "angle": 0, - "x": 642.3923405792287, - "y": 327.0220579467141, - "strokeColor": "#000000", - "backgroundColor": "#fa5252", - "width": 41.4984973634862, - "height": 42.84726016307581, - "seed": 1224590701, - "groupIds": [ - "b1ibwSW8IcqyRbXlyG-Xj" - ], - "strokeSharpness": "sharp", - "boundElements": [], - "updated": 1662370182113, - "link": null, - "locked": false, - "startBinding": null, - "endBinding": null, - "lastCommittedPoint": null, - "startArrowhead": null, - "endArrowhead": null, - "points": [ - [ - 0, - 0 - ], - [ - 6.331539146649046, - 0.6911701828995058 - ], - [ - 12.568263416808293, - 2.7567336315794506 - ], - [ - 17.783689413894457, - 6.115027696806288 - ], - [ - 21.55680080812036, - 10.927360487295218 - ], - [ - 29.238198258256762, - 26.091034405487317 - ], - [ - 32.945365761671674, - 30.574916422617147 - ], - [ - 37.42140189982159, - 33.340894759105936 - ], - [ - 41.416542729958344, - 33.84541709619365 - ], - [ - 40.65242563104734, - 42.84726016307581 - ], - [ - 35.08918171060486, - 41.79625619570694 - ], - [ - 29.89463909166145, - 39.481563741388634 - ], - [ - 24.964704070453816, - 35.15988031617168 - ], - [ - 20.916849385577226, - 28.38179727273358 - ], - [ - 14.999667618648054, - 17.15976986783135 - ], - [ - 10.648842357220921, - 12.302187465926371 - ], - [ - 6.500015817009046, - 9.797189469362907 - ], - [ - 0.20955312070965437, - 9.562246308014643 - ], - [ - -0.08195463352785409, - 0.15905318117947767 - ] - ] - }, - { - "type": "line", - "version": 352, - "versionNonce": 1716919418, - "isDeleted": false, - "id": "I7dID8l91TbWqTx5vRMCa", - "fillStyle": "cross-hatch", - "strokeWidth": 1, - "strokeStyle": "solid", - "roughness": 1, - "opacity": 100, - "angle": 0, - "x": 642.2938208953407, - "y": 360.90387398414344, - "strokeColor": "#000000", - "backgroundColor": "#fa5252", - "width": 18.63572979046503, - "height": 8.945450381946396, - "seed": 582833123, - "groupIds": [ - "b1ibwSW8IcqyRbXlyG-Xj" - ], - "strokeSharpness": "sharp", - "boundElements": [], - "updated": 1662370182114, - "link": null, - "locked": false, - "startBinding": null, - "endBinding": null, - "lastCommittedPoint": null, - "startArrowhead": null, - "endArrowhead": null, - "points": [ - [ - 0, - 0 - ], - [ - 15.731454943862888, - 0.19513615572747334 - ], - [ - 18.438358831347205, - 4.624138277908322 - ], - [ - 15.401474189720787, - 8.645168445782279 - ], - [ - 0.024885395291281753, - 8.945450381946396 - ], - [ - -0.19737095911783126, - 0.22076419337619754 - ] - ] - }, - { - "type": "line", - "version": 496, - "versionNonce": 1728282662, - "isDeleted": false, - "id": "tVJ51sTAhaMQbnsD2z1G_", - "fillStyle": "cross-hatch", - "strokeWidth": 1, - "strokeStyle": "solid", - "roughness": 1, - "opacity": 100, - "angle": 0, - "x": 666.5167310696386, - "y": 371.5341297381931, - "strokeColor": "#000000", - "backgroundColor": "#fa5252", - "width": 31.742377208928268, - "height": 32.08983068742408, - "seed": 1901891533, - "groupIds": [ - "b1ibwSW8IcqyRbXlyG-Xj" - ], - "strokeSharpness": "sharp", - "boundElements": [], - "updated": 1662370182114, - "link": null, - "locked": false, - "startBinding": null, - "endBinding": null, - "lastCommittedPoint": null, - "startArrowhead": null, - "endArrowhead": null, - "points": [ - [ - 0, - 0 - ], - [ - 7.450862008705704, - 4.5261026104118764 - ], - [ - 3.3117379533671727, - 11.615366554240595 - ], - [ - -0.9358050098348354, - 19.767097287751245 - ], - [ - -5.808480930022496, - 26.23722442399886 - ], - [ - -12.050658120454212, - 30.196436491936836 - ], - [ - -18.01532774034885, - 31.68550318172356 - ], - [ - -24.291515200222555, - 32.08983068742408 - ], - [ - -24.279034682827145, - 23.204527460109873 - ], - [ - -18.279667161677786, - 22.96770706391407 - ], - [ - -13.350626061826572, - 21.184189555732566 - ], - [ - -9.64956472890564, - 16.950076041826833 - ], - [ - -0.104031816900326, - 0.32570368426907065 - ] - ] - }, - { - "type": "diamond", - "version": 928, - "versionNonce": 487619898, - "isDeleted": false, - "id": "47h-nRr-nwGO_mQa23UeO", - "fillStyle": "solid", - "strokeWidth": 1, - "strokeStyle": "solid", - "roughness": 1, - "opacity": 100, - "angle": 0, - "x": 632.6763173734828, - "y": 769.1302824085412, - "strokeColor": "#c92a2a", - "backgroundColor": "#fa5252", - "width": 112.64736525303451, - "height": 36.77344700318558, - "seed": 1441517305, - "groupIds": [ - "m2RdbPic1YynJwWKbyYdm" - ], - "strokeSharpness": "sharp", - "boundElements": [], - "updated": 1662370182114, - "link": null, - "locked": false - }, - { - "type": "diamond", - "version": 969, - "versionNonce": 1479314278, - "isDeleted": false, - "id": "qSQncXc-KxT1XqGMW7qed", - "fillStyle": "solid", - "strokeWidth": 1, - "strokeStyle": "solid", - "roughness": 1, - "opacity": 100, - "angle": 0, - "x": 632.6763173734828, - "y": 760.2585024802827, - "strokeColor": "#c92a2a", - "backgroundColor": "#fa5252", - "width": 112.64736525303451, - "height": 36.77344700318558, - "seed": 716667159, - "groupIds": [ - "m2RdbPic1YynJwWKbyYdm" - ], - "strokeSharpness": "sharp", - "boundElements": [], - "updated": 1662370182114, - "link": null, - "locked": false - }, - { - "type": "diamond", - "version": 1049, - "versionNonce": 2000733690, - "isDeleted": false, - "id": "sGGXEhvtRhriU_uNapb9E", - "fillStyle": "solid", - "strokeWidth": 1, - "strokeStyle": "solid", - "roughness": 1, - "opacity": 100, - "angle": 0, - "x": 632.6763173734828, - "y": 747.6279428855705, - "strokeColor": "#c92a2a", - "backgroundColor": "#fa5252", - "width": 112.64736525303451, - "height": 36.77344700318558, - "seed": 426346457, - "groupIds": [ - "m2RdbPic1YynJwWKbyYdm" - ], - "strokeSharpness": "sharp", - "boundElements": [], - "updated": 1662370182114, - "link": null, - "locked": false - }, - { - "type": "diamond", - "version": 1091, - "versionNonce": 781332134, - "isDeleted": false, - "id": "wBe1SK4e7md93lfPcC54E", - "fillStyle": "solid", - "strokeWidth": 1, - "strokeStyle": "solid", - "roughness": 1, - "opacity": 100, - "angle": 0, - "x": 632.6763173734828, - "y": 735.0962705882732, - "strokeColor": "#c92a2a", - "backgroundColor": "#fa5252", - "width": 112.64736525303451, - "height": 36.77344700318558, - "seed": 834027063, - "groupIds": [ - "m2RdbPic1YynJwWKbyYdm" - ], - "strokeSharpness": "sharp", - "boundElements": [], - "updated": 1662370182114, - "link": null, - "locked": false - }, - { - "type": "arrow", - "version": 2165, - "versionNonce": 1575614138, - "isDeleted": false, - "id": "RN13O3v7s67B4r3OLdUG1", - "fillStyle": "cross-hatch", - "strokeWidth": 2, - "strokeStyle": "solid", - "roughness": 2, - "opacity": 90, - "angle": 1.1544546290966737, - "x": 646.0140984387991, - "y": 550.6328008904756, - "strokeColor": "#000000", - "backgroundColor": "transparent", - "width": 123.98231587164719, - "height": 97.69482290541578, - "seed": 1186513049, - "groupIds": [], - "strokeSharpness": "round", - "boundElements": [], - "updated": 1662370182114, - "link": null, - "locked": false, - "startBinding": { - "elementId": "XKTEM8qBa4qGOJP7CVrIX", - "focus": -0.05448887991604787, - "gap": 11.335548920662745 - }, - "endBinding": { - "elementId": "IXATX347s4UD9lGlcr90X", - "focus": -0.19812288467622294, - "gap": 6.56951103650465 - }, - "lastCommittedPoint": null, - "startArrowhead": null, - "endArrowhead": "arrow", - "points": [ - [ - 0, - 0 - ], - [ - 123.98231587164719, - 97.69482290541578 - ] - ] - }, - { - "type": "rectangle", - "version": 437, - "versionNonce": 1189177830, - "isDeleted": false, - "id": "BSTGJy4-i2gkcab8vcVmx", - "fillStyle": "cross-hatch", - "strokeWidth": 2, - "strokeStyle": "solid", - "roughness": 2, - "opacity": 100, - "angle": 0, - "x": 616.5, - "y": 706, - "strokeColor": "#000000", - "backgroundColor": "transparent", - "width": 145, - "height": 123.99999999999999, - "seed": 966959383, - "groupIds": [], - "strokeSharpness": "sharp", - "boundElements": [ - { - "id": "yb6on_IoQ9DCic3wLZCL5", - "type": "arrow" - } - ], - "updated": 1662370182114, - "link": null, - "locked": false - }, - { - "type": "text", - "version": 428, - "versionNonce": 565120890, - "isDeleted": false, - "id": "IXATX347s4UD9lGlcr90X", - "fillStyle": "cross-hatch", - "strokeWidth": 2, - "strokeStyle": "solid", - "roughness": 2, - "opacity": 100, - "angle": 0, - "x": 664.5, - "y": 682.5, - "strokeColor": "#000000", - "backgroundColor": "transparent", - "width": 49, - "height": 25, - "seed": 2017626071, - "groupIds": [], - "strokeSharpness": "sharp", - "boundElements": [ - { - "id": "RN13O3v7s67B4r3OLdUG1", - "type": "arrow" - } - ], - "updated": 1662370182114, - "link": null, - "locked": false, - "fontSize": 20, - "fontFamily": 1, - "text": "Quay", - "baseline": 18, - "textAlign": "center", - "verticalAlign": "top", - "containerId": null, - "originalText": "Quay" - }, - { - "type": "text", - "version": 426, - "versionNonce": 1613184294, - "isDeleted": false, - "id": "5cuIIpz3LTeQ3sO41ieWq", - "fillStyle": "cross-hatch", - "strokeWidth": 2, - "strokeStyle": "solid", - "roughness": 2, - "opacity": 100, - "angle": 4.978294947422523, - "x": 639.41530864279, - "y": 577.9646648179378, - "strokeColor": "#000000", - "backgroundColor": "transparent", - "width": 107, - "height": 20, - "seed": 1296941911, - "groupIds": [], - "strokeSharpness": "sharp", - "boundElements": [ - { - "id": "6zKDixmk2nfg2iRiN4mHi", - "type": "arrow" - } - ], - "updated": 1662370182114, - "link": null, - "locked": false, - "fontSize": 16, - "fontFamily": 1, - "text": "push to Quay", - "baseline": 14, - "textAlign": "center", - "verticalAlign": "top", - "containerId": null, - "originalText": "push to Quay" - }, - { - "type": "line", - "version": 1825, - "versionNonce": 114495546, - "isDeleted": false, - "id": "GP1wLZ1WFSKU2V50lx_PB", - "fillStyle": "hachure", - "strokeWidth": 1, - "strokeStyle": "solid", - "roughness": 1, - "opacity": 100, - "angle": 0, - "x": 888.2359178299338, - "y": 776.0795466994963, - "strokeColor": "#fa5252", - "backgroundColor": "#fa5252", - "width": 45.45537939093032, - "height": 28.55045143932542, - "seed": 910612326, - "groupIds": [ - "aIlUmEWkA-SaliQpUsuSS" - ], - "strokeSharpness": "round", - "boundElements": [], - "updated": 1662370182114, - "link": null, - "locked": false, - "startBinding": null, - "endBinding": null, - "lastCommittedPoint": null, - "startArrowhead": null, - "endArrowhead": null, - "points": [ - [ - 0, - 0 - ], - [ - 0.09881604215418947, - 5.982999014858631 - ], - [ - 0.39526416861678143, - 12.070962924714806 - ], - [ - 5.533698360634995, - 16.899348094600715 - ], - [ - 15.415302576054616, - 19.313540679543642 - ], - [ - 29.743628688413075, - 19.313540679543664 - ], - [ - 39.52641686167853, - 17.109277884595738 - ], - [ - 44.81307511692804, - 12.9631645321937 - ], - [ - 45.45537939093032, - 5.982999014858641 - ], - [ - 44.71425907477384, - -0.9446840549776787 - ], - [ - 38.735888524444896, - -6.717753279841269 - ], - [ - 28.360204098254336, - -9.23691075978176 - ], - [ - 15.31648653390042, - -9.026980969786704 - ], - [ - 5.089026170941105, - -5.668104329866079 - ], - [ - 0, - 0 - ] - ] - }, - { - "type": "ellipse", - "version": 818, - "versionNonce": 1339074662, - "isDeleted": false, - "id": "tKodUHcxsuZtHeAhdzSw-", - "fillStyle": "solid", - "strokeWidth": 1, - "strokeStyle": "solid", - "roughness": 1, - "opacity": 100, - "angle": 0, - "x": 892.2440967427956, - "y": 767.9926814874417, - "strokeColor": "#fa5252", - "backgroundColor": "#fa5252", - "width": 37.0506282457687, - "height": 14.169503720053175, - "seed": 1472281082, - "groupIds": [ - "aIlUmEWkA-SaliQpUsuSS" - ], - "strokeSharpness": "sharp", - "boundElements": [], - "updated": 1662370182114, - "link": null, - "locked": false - }, - { - "type": "line", - "version": 2658, - "versionNonce": 1362688250, - "isDeleted": false, - "id": "JowGyceWZyekC0DpvNjIf", - "fillStyle": "hachure", - "strokeWidth": 1, - "strokeStyle": "solid", - "roughness": 1, - "opacity": 100, - "angle": 0, - "x": 888.4363535962191, - "y": 792.2718279844214, - "strokeColor": "#fa5252", - "backgroundColor": "#fa5252", - "width": 44.75215216926839, - "height": 18.44773266062176, - "seed": 1803745958, - "groupIds": [ - "aIlUmEWkA-SaliQpUsuSS" - ], - "strokeSharpness": "round", - "boundElements": [], - "updated": 1662370182114, - "link": null, - "locked": false, - "startBinding": null, - "endBinding": null, - "lastCommittedPoint": null, - "startArrowhead": null, - "endArrowhead": null, - "points": [ - [ - 0, - 0 - ], - [ - 0.09881604215418954, - 5.7359953692677355 - ], - [ - 0.8360931732406627, - 12.188788492529767 - ], - [ - 6.415356369882757, - 16.27013404810402 - ], - [ - 16.076546082990426, - 18.44773266062176 - ], - [ - 30.037514691495648, - 18.37926974325645 - ], - [ - 38.718230353201484, - 16.745248712978196 - ], - [ - 43.80546596350205, - 13.229984141597614 - ], - [ - 44.75215216926839, - 6.987888715376405 - ], - [ - 44.596758549161464, - 0.571547384474486 - ], - [ - 43.265820916723996, - 1.4122752942962638 - ], - [ - 38.05365316014614, - 3.8485825851177227 - ], - [ - 29.399301037724893, - 5.462958347950173 - ], - [ - 16.785916549313352, - 5.625099676297176 - ], - [ - 6.663415473169238, - 3.7594908843371635 - ], - [ - 0, - 0 - ] - ] - }, - { - "type": "line", - "version": 2737, - "versionNonce": 900377510, - "isDeleted": false, - "id": "LQXzCv6fh_FAdDQyf1dnl", - "fillStyle": "hachure", - "strokeWidth": 1, - "strokeStyle": "solid", - "roughness": 1, - "opacity": 100, - "angle": 0, - "x": 888.4575305030959, - "y": 807.7379899328757, - "strokeColor": "#fa5252", - "backgroundColor": "#fa5252", - "width": 44.75215216926839, - "height": 17.929281850049776, - "seed": 1044114106, - "groupIds": [ - "aIlUmEWkA-SaliQpUsuSS" - ], - "strokeSharpness": "round", - "boundElements": [], - "updated": 1662370182114, - "link": null, - "locked": false, - "startBinding": null, - "endBinding": null, - "lastCommittedPoint": null, - "startArrowhead": null, - "endArrowhead": null, - "points": [ - [ - 0, - 0 - ], - [ - 0.09881604215418954, - 5.5747922825067295 - ], - [ - 0.8360931732406627, - 11.846237600769971 - ], - [ - 6.415356369882757, - 15.812881965122543 - ], - [ - 16.076546082990426, - 17.929281850049776 - ], - [ - 30.037514691495648, - 17.862742998674317 - ], - [ - 38.718230353201484, - 16.274644117379026 - ], - [ - 43.80546596350205, - 12.858171728210504 - ], - [ - 44.75215216926839, - 6.791502707658123 - ], - [ - 44.596758549161464, - 0.5554847490161138 - ], - [ - 43.265820916723996, - 1.3725850361735614 - ], - [ - 38.05365316014614, - 3.7404229105650506 - ], - [ - 29.399301037724893, - 5.3094286304656295 - ], - [ - 16.785916549313352, - 5.467013176434269 - ], - [ - 6.663415473169238, - 3.653835022330706 - ], - [ - 0, - 0 - ] - ] - }, - { - "type": "rectangle", - "version": 717, - "versionNonce": 1348716986, - "isDeleted": false, - "id": "0vx83HbQv2HvAfR2WHYzx", - "fillStyle": "cross-hatch", - "strokeWidth": 2, - "strokeStyle": "solid", - "roughness": 2, - "opacity": 100, - "angle": 0, - "x": 869.5, - "y": 755.6981132075472, - "strokeColor": "#000000", - "backgroundColor": "transparent", - "width": 82.99999999999996, - "height": 78.30188679245282, - "seed": 986179194, - "groupIds": [], - "strokeSharpness": "sharp", - "boundElements": [ - { - "id": "yb6on_IoQ9DCic3wLZCL5", - "type": "arrow" - } - ], - "updated": 1662370182114, - "link": null, - "locked": false - }, - { - "type": "text", - "version": 517, - "versionNonce": 803358438, - "isDeleted": false, - "id": "g1zqTtCSN4y0R3bNwm5QR", - "fillStyle": "cross-hatch", - "strokeWidth": 2, - "strokeStyle": "solid", - "roughness": 2, - "opacity": 100, - "angle": 0, - "x": 889.5, - "y": 728.5, - "strokeColor": "#000000", - "backgroundColor": "transparent", - "width": 43, - "height": 25, - "seed": 1419797434, - "groupIds": [], - "strokeSharpness": "sharp", - "boundElements": [ - { - "id": "RN13O3v7s67B4r3OLdUG1", - "type": "arrow" - } - ], - "updated": 1662370182114, - "link": null, - "locked": false, - "fontSize": 20, - "fontFamily": 1, - "text": "ODF", - "baseline": 18, - "textAlign": "center", - "verticalAlign": "top", - "containerId": null, - "originalText": "ODF" - }, - { - "type": "arrow", - "version": 2378, - "versionNonce": 1802928762, - "isDeleted": false, - "id": "yb6on_IoQ9DCic3wLZCL5", - "fillStyle": "cross-hatch", - "strokeWidth": 2, - "strokeStyle": "solid", - "roughness": 2, - "opacity": 90, - "angle": 1.1544546290966737, - "x": 849.4734835425033, - "y": 746.9428522927587, - "strokeColor": "#000000", - "backgroundColor": "transparent", - "width": 72.92212454127264, - "height": 77.71575432057409, - "seed": 875407398, - "groupIds": [], - "strokeSharpness": "round", - "boundElements": [], - "updated": 1662370182114, - "link": null, - "locked": false, - "startBinding": { - "elementId": "0vx83HbQv2HvAfR2WHYzx", - "focus": -0.43218103748420833, - "gap": 5.5628963344287286 - }, - "endBinding": { - "elementId": "BSTGJy4-i2gkcab8vcVmx", - "focus": -0.2937839155117981, - "gap": 1.2285090703976493 - }, - "lastCommittedPoint": null, - "startArrowhead": null, - "endArrowhead": "arrow", - "points": [ - [ - 0, - 0 - ], - [ - -72.92212454127264, - 77.71575432057409 - ] - ] - }, - { - "type": "text", - "version": 609, - "versionNonce": 251951654, - "isDeleted": false, - "id": "zqlKiPeKDW-kR1ozvN8_S", - "fillStyle": "cross-hatch", - "strokeWidth": 2, - "strokeStyle": "solid", - "roughness": 2, - "opacity": 100, - "angle": 0.31362065221670044, - "x": 774.9285257833599, - "y": 755.4520583425907, - "strokeColor": "#000000", - "backgroundColor": "transparent", - "width": 87.26292617008791, - "height": 15.309285292997872, - "seed": 1237998458, - "groupIds": [], - "strokeSharpness": "sharp", - "boundElements": [ - { - "id": "6zKDixmk2nfg2iRiN4mHi", - "type": "arrow" - } - ], - "updated": 1662370182114, - "link": null, - "locked": false, - "fontSize": 12.247428234398305, - "fontFamily": 1, - "text": "ObjectStorage", - "baseline": 10.309285292997872, - "textAlign": "center", - "verticalAlign": "top", - "containerId": null, - "originalText": "ObjectStorage" - } - ], - "appState": { - "gridSize": null, - "viewBackgroundColor": "#ffffff" - }, - "files": {} -} \ No newline at end of file diff --git a/excalidraw/workshop_architecture_gitops.excalidraw b/excalidraw/workshop_architecture_gitops.excalidraw deleted file mode 100644 index 25b6ef4..0000000 --- a/excalidraw/workshop_architecture_gitops.excalidraw +++ /dev/null @@ -1,8890 +0,0 @@ -{ - "type": "excalidraw", - "version": 2, - "source": "https://excalidraw.com", - "elements": [ - { - "type": "rectangle", - "version": 773, - "versionNonce": 356477818, - "isDeleted": false, - "id": "aCEE8GhXJyiI15OYj-PtO", - "fillStyle": "cross-hatch", - "strokeWidth": 2, - "strokeStyle": "solid", - "roughness": 2, - "opacity": 100, - "angle": 0, - "x": 1129, - "y": 344.7878787878785, - "strokeColor": "#000000", - "backgroundColor": "transparent", - "width": 228.6666666666667, - "height": 224.21212121212136, - "seed": 1921109149, - "groupIds": [], - "strokeSharpness": "sharp", - "boundElements": [], - "updated": 1662376884760, - "link": null, - "locked": false - }, - { - "type": "text", - "version": 679, - "versionNonce": 1610083386, - "isDeleted": false, - "id": "1df0UH0SLiIgY9wx9MNc5", - "fillStyle": "cross-hatch", - "strokeWidth": 2, - "strokeStyle": "solid", - "roughness": 2, - "opacity": 100, - "angle": 0, - "x": 1135.5681818181813, - "y": 323, - "strokeColor": "#000000", - "backgroundColor": "transparent", - "width": 86.86363636363646, - "height": 37.121212121212146, - "seed": 2028306067, - "groupIds": [], - "strokeSharpness": "sharp", - "boundElements": [], - "updated": 1662376884760, - "link": null, - "locked": false, - "fontSize": 14.84848484848486, - "fontFamily": 1, - "text": "workshop-int\n", - "baseline": 31.121212121212146, - "textAlign": "center", - "verticalAlign": "top", - "containerId": null, - "originalText": "workshop-int\n" - }, - { - "type": "rectangle", - "version": 1864, - "versionNonce": 754420838, - "isDeleted": false, - "id": "WfGIRX8nYQy4AUcSeR6I1", - "fillStyle": "cross-hatch", - "strokeWidth": 1, - "strokeStyle": "solid", - "roughness": 2, - "opacity": 100, - "angle": 0, - "x": 1176.7170279974796, - "y": 390.3843234864305, - "strokeColor": "#5665dc", - "backgroundColor": "#5665dc", - "width": 128.77806521716136, - "height": 119.77709684080031, - "seed": 257666643, - "groupIds": [ - "0juXsMdVUXFekjks8pcBc" - ], - "strokeSharpness": "round", - "boundElements": [ - { - "id": "IdDsqRoxUzCm_nD_ZpV20", - "type": "arrow" - } - ], - "updated": 1662376884760, - "link": null, - "locked": false - }, - { - "type": "rectangle", - "version": 1888, - "versionNonce": 1768051962, - "isDeleted": false, - "id": "bWXOj_zq2Qi_SVGQTDWQG", - "fillStyle": "solid", - "strokeWidth": 1, - "strokeStyle": "solid", - "roughness": 2, - "opacity": 100, - "angle": 0, - "x": 1184.2357316400507, - "y": 397.83670420412227, - "strokeColor": "#5665dc", - "backgroundColor": "#ffffff", - "width": 114.862883930759, - "height": 103.99224071972951, - "seed": 1748718685, - "groupIds": [ - "0juXsMdVUXFekjks8pcBc" - ], - "strokeSharpness": "round", - "boundElements": [ - { - "id": "YGLbIKYvHLJ7195OM_YrC", - "type": "arrow" - }, - { - "id": "IdDsqRoxUzCm_nD_ZpV20", - "type": "arrow" - } - ], - "updated": 1662376884760, - "link": null, - "locked": false - }, - { - "type": "line", - "version": 2054, - "versionNonce": 341118886, - "isDeleted": false, - "id": "lcDPG43gFhHt9aIby4doG", - "fillStyle": "cross-hatch", - "strokeWidth": 1, - "strokeStyle": "solid", - "roughness": 1, - "opacity": 100, - "angle": 1.5774237450700657, - "x": 1253.8860691305404, - "y": 417.3889650545235, - "strokeColor": "#c92a2a", - "backgroundColor": "#fa5252", - "width": 74.68679229074219, - "height": 64.68064292907803, - "seed": 1259891699, - "groupIds": [ - "0juXsMdVUXFekjks8pcBc" - ], - "strokeSharpness": "sharp", - "boundElements": [], - "updated": 1662376884760, - "link": null, - "locked": false, - "lastCommittedPoint": null, - "startArrowhead": null, - "endArrowhead": null, - "points": [ - [ - 0, - 0 - ], - [ - 37.343396145371045, - 64.68064292907785 - ], - [ - -37.343396145371145, - 64.68064292907803 - ], - [ - 0, - 0 - ] - ] - }, - { - "type": "line", - "version": 2480, - "versionNonce": 1392616890, - "isDeleted": false, - "id": "JTnJL06DYdPzU92et-hzK", - "fillStyle": "cross-hatch", - "strokeWidth": 1, - "strokeStyle": "solid", - "roughness": 1, - "opacity": 100, - "angle": 4.721247315744137, - "x": 1232.734836722075, - "y": 418.0927781258739, - "strokeColor": "#5665dc", - "backgroundColor": "#5665dc", - "width": 74.68679229074219, - "height": 64.68064292907803, - "seed": 1642774717, - "groupIds": [ - "0juXsMdVUXFekjks8pcBc" - ], - "strokeSharpness": "sharp", - "boundElements": [], - "updated": 1662376884760, - "link": null, - "locked": false, - "lastCommittedPoint": null, - "startArrowhead": null, - "endArrowhead": null, - "points": [ - [ - 0, - 0 - ], - [ - 37.343396145371045, - 64.68064292907785 - ], - [ - -37.343396145371145, - 64.68064292907803 - ], - [ - 0, - 0 - ] - ] - }, - { - "type": "line", - "version": 2802, - "versionNonce": 329263846, - "isDeleted": false, - "id": "iBdZ_9MMf6SLDTGeAMAB1", - "fillStyle": "cross-hatch", - "strokeWidth": 1, - "strokeStyle": "solid", - "roughness": 1, - "opacity": 100, - "angle": 0.0005581869343673773, - "x": 1242.0581191009499, - "y": 477.99447587916006, - "strokeColor": "#5665dc", - "backgroundColor": "#5665dc", - "width": 28.93008917102277, - "height": 29.85184214744162, - "seed": 397178259, - "groupIds": [ - "0juXsMdVUXFekjks8pcBc" - ], - "strokeSharpness": "sharp", - "boundElements": [], - "updated": 1662376884760, - "link": null, - "locked": false, - "lastCommittedPoint": null, - "startArrowhead": null, - "endArrowhead": null, - "points": [ - [ - 0, - 0 - ], - [ - 14.465044585511265, - 29.851842147441538 - ], - [ - -14.465044585511507, - 29.85184214744163 - ], - [ - 0, - 0 - ] - ] - }, - { - "type": "rectangle", - "version": 1816, - "versionNonce": 368631418, - "isDeleted": false, - "id": "H-tSugrM2myy28GQY2IZv", - "fillStyle": "solid", - "strokeWidth": 1, - "strokeStyle": "solid", - "roughness": 2, - "opacity": 100, - "angle": 5.989889724533434, - "x": 1256.0540733522507, - "y": 496.63040678225923, - "strokeColor": "#ffffff", - "backgroundColor": "#ffffff", - "width": 10.160337121913365, - "height": 16.284127669015405, - "seed": 1605214493, - "groupIds": [ - "0juXsMdVUXFekjks8pcBc" - ], - "strokeSharpness": "round", - "boundElements": [], - "updated": 1662376884760, - "link": null, - "locked": false - }, - { - "type": "line", - "version": 1741, - "versionNonce": 157670950, - "isDeleted": false, - "id": "VUXao9dORybHOlVhrhCXA", - "fillStyle": "cross-hatch", - "strokeWidth": 1, - "strokeStyle": "solid", - "roughness": 1, - "opacity": 100, - "angle": 0, - "x": 1244.747048670161, - "y": 427.39842400693544, - "strokeColor": "#000000", - "backgroundColor": "#000000", - "width": 40.55361696256771, - "height": 48.4326346843801, - "seed": 1951288115, - "groupIds": [ - "0juXsMdVUXFekjks8pcBc" - ], - "strokeSharpness": "sharp", - "boundElements": [], - "updated": 1662376884760, - "link": null, - "locked": false, - "lastCommittedPoint": null, - "startArrowhead": null, - "endArrowhead": null, - "points": [ - [ - 0, - 0 - ], - [ - 20.27680848128371, - 12.108158671094856 - ], - [ - 20.2768084812838, - 36.32447601328501 - ], - [ - -2.4868995751603507e-14, - 48.432634684380105 - ], - [ - -20.276808481283926, - 36.32447601328466 - ], - [ - -20.2768084812839, - 12.10815867109517 - ], - [ - 0, - 0 - ] - ] - }, - { - "type": "line", - "version": 1579, - "versionNonce": 252378938, - "isDeleted": false, - "id": "nHMEw2NpxPNvOcrQiy5_c", - "fillStyle": "hachure", - "strokeWidth": 2, - "strokeStyle": "solid", - "roughness": 1, - "opacity": 100, - "angle": 0, - "x": 1221.6645102830248, - "y": 434.3448499324527, - "strokeColor": "#ffffff", - "backgroundColor": "#ffffff", - "width": 20.313407099735958, - "height": 14.916654339445962, - "seed": 1995797885, - "groupIds": [ - "0juXsMdVUXFekjks8pcBc" - ], - "strokeSharpness": "round", - "boundElements": [], - "updated": 1662376884760, - "link": null, - "locked": false, - "startBinding": null, - "endBinding": null, - "lastCommittedPoint": null, - "startArrowhead": null, - "endArrowhead": null, - "points": [ - [ - 0, - 0 - ], - [ - 20.313407099735958, - 14.916654339445962 - ] - ] - }, - { - "type": "line", - "version": 1467, - "versionNonce": 2056464742, - "isDeleted": false, - "id": "K8W9xzsZzyiKou_xdzPIZ", - "fillStyle": "hachure", - "strokeWidth": 1, - "strokeStyle": "solid", - "roughness": 2, - "opacity": 100, - "angle": 0, - "x": 1232.5309223904987, - "y": 443.6306971486025, - "strokeColor": "#ffffff", - "backgroundColor": "#ffffff", - "width": 4.345730696797424, - "height": 3.1371796212345773, - "seed": 895773907, - "groupIds": [ - "0juXsMdVUXFekjks8pcBc" - ], - "strokeSharpness": "round", - "boundElements": [], - "updated": 1662376884760, - "link": null, - "locked": false, - "startBinding": null, - "endBinding": null, - "lastCommittedPoint": null, - "startArrowhead": null, - "endArrowhead": null, - "points": [ - [ - 0, - 0 - ], - [ - 4.345730696797424, - 3.1371796212345773 - ] - ] - }, - { - "type": "line", - "version": 1688, - "versionNonce": 177932282, - "isDeleted": false, - "id": "xw4komaULiQXoDHT1Xp2j", - "fillStyle": "hachure", - "strokeWidth": 2, - "strokeStyle": "solid", - "roughness": 1, - "opacity": 100, - "angle": 0, - "x": 1240.150726932103, - "y": 448.11548902064965, - "strokeColor": "#ffffff", - "backgroundColor": "#ffffff", - "width": 0.9367207423221638, - "height": 27.610906202643964, - "seed": 319012317, - "groupIds": [ - "0juXsMdVUXFekjks8pcBc" - ], - "strokeSharpness": "round", - "boundElements": [], - "updated": 1662376884760, - "link": null, - "locked": false, - "startBinding": null, - "endBinding": null, - "lastCommittedPoint": null, - "startArrowhead": null, - "endArrowhead": null, - "points": [ - [ - 0, - 0 - ], - [ - 0.9367207423221638, - 27.610906202643964 - ] - ] - }, - { - "type": "line", - "version": 1675, - "versionNonce": 1182076070, - "isDeleted": false, - "id": "_yJjDOoKnsMWnTrt1wA0a", - "fillStyle": "hachure", - "strokeWidth": 2, - "strokeStyle": "solid", - "roughness": 1, - "opacity": 100, - "angle": 0, - "x": 1241.4693408347428, - "y": 451.69040493910006, - "strokeColor": "#ffffff", - "backgroundColor": "#ffffff", - "width": 22.989466928068946, - "height": 14.660400645027837, - "seed": 1585797747, - "groupIds": [ - "0juXsMdVUXFekjks8pcBc" - ], - "strokeSharpness": "round", - "boundElements": [], - "updated": 1662376884760, - "link": null, - "locked": false, - "startBinding": null, - "endBinding": null, - "lastCommittedPoint": null, - "startArrowhead": null, - "endArrowhead": null, - "points": [ - [ - 0, - 0 - ], - [ - 22.989466928068946, - -14.660400645027837 - ] - ] - }, - { - "type": "rectangle", - "version": 282, - "versionNonce": 1353447610, - "isDeleted": false, - "id": "eRALweam41mM0DJnwBGGj", - "fillStyle": "cross-hatch", - "strokeWidth": 2, - "strokeStyle": "solid", - "roughness": 1, - "opacity": 100, - "angle": 0, - "x": 321, - "y": 92, - "strokeColor": "#000000", - "backgroundColor": "transparent", - "width": 1567, - "height": 789, - "seed": 1623179475, - "groupIds": [], - "strokeSharpness": "sharp", - "boundElements": [], - "updated": 1662376884761, - "link": null, - "locked": false - }, - { - "type": "text", - "version": 745, - "versionNonce": 1522042854, - "isDeleted": false, - "id": "0WlhYvkWB8XZHimUWgYTe", - "fillStyle": "cross-hatch", - "strokeWidth": 2, - "strokeStyle": "solid", - "roughness": 2, - "opacity": 100, - "angle": 0.0773666766259069, - "x": 1088.0876812573165, - "y": 207.409227074606, - "strokeColor": "#000000", - "backgroundColor": "transparent", - "width": 97.03908202421952, - "height": 20.913595263840417, - "seed": 633111965, - "groupIds": [], - "strokeSharpness": "sharp", - "boundElements": [], - "updated": 1662376884761, - "link": null, - "locked": false, - "fontSize": 16.730876211072335, - "fontFamily": 1, - "text": "build&deploy", - "baseline": 14.913595263840417, - "textAlign": "center", - "verticalAlign": "top", - "containerId": null, - "originalText": "build&deploy" - }, - { - "type": "text", - "version": 289, - "versionNonce": 820040058, - "isDeleted": false, - "id": "AK892q6caE6tpWTkF5uAE", - "fillStyle": "cross-hatch", - "strokeWidth": 2, - "strokeStyle": "solid", - "roughness": 1, - "opacity": 90, - "angle": 0, - "x": 717, - "y": 86, - "strokeColor": "#000000", - "backgroundColor": "transparent", - "width": 758.9142857142855, - "height": 57.00000000000001, - "seed": 354860339, - "groupIds": [], - "strokeSharpness": "sharp", - "boundElements": [], - "updated": 1662376884761, - "link": null, - "locked": false, - "fontSize": 45.6, - "fontFamily": 1, - "text": "DevSecOps Workshop Architecture", - "baseline": 40.00000000000001, - "textAlign": "center", - "verticalAlign": "top", - "containerId": null, - "originalText": "DevSecOps Workshop Architecture" - }, - { - "type": "rectangle", - "version": 718, - "versionNonce": 1735039782, - "isDeleted": false, - "id": "8WrqvqiAjc00nYNjo9gZk", - "fillStyle": "cross-hatch", - "strokeWidth": 2, - "strokeStyle": "solid", - "roughness": 1, - "opacity": 90, - "angle": 0, - "x": 570, - "y": 139, - "strokeColor": "#000000", - "backgroundColor": "transparent", - "width": 1281, - "height": 704, - "seed": 1254526419, - "groupIds": [], - "strokeSharpness": "sharp", - "boundElements": [], - "updated": 1662376884761, - "link": null, - "locked": false - }, - { - "type": "line", - "version": 4447, - "versionNonce": 243044922, - "isDeleted": false, - "id": "wntYgz6uM6s_HBN_KMR65", - "fillStyle": "hachure", - "strokeWidth": 2, - "strokeStyle": "solid", - "roughness": 1, - "opacity": 90, - "angle": 0, - "x": 320.5892304662775, - "y": 65.49173531033286, - "strokeColor": "#c92a2a", - "backgroundColor": "#fa5252", - "width": 130.6580031652458, - "height": 93.55764515124328, - "seed": 717152627, - "groupIds": [ - "g_ZYKV0PmWmJecyAyG0vE" - ], - "strokeSharpness": "round", - "boundElements": [], - "updated": 1662376884761, - "link": null, - "locked": false, - "startBinding": null, - "endBinding": null, - "lastCommittedPoint": null, - "startArrowhead": null, - "endArrowhead": null, - "points": [ - [ - 0, - 0 - ], - [ - 6.751631440482483, - -21.744604760402623 - ], - [ - 12.071098636014012, - -38.24051182001862 - ], - [ - 18.20894540008893, - -49.35058995627114 - ], - [ - 27.006525761929773, - -51.276549057875634 - ], - [ - 38.05464993726463, - -45.7889736593089 - ], - [ - 49.30736900473541, - -53.271073770767785 - ], - [ - 68.33469397336775, - -50.612442114730406 - ], - [ - 102.50204096005159, - -39.927593223842734 - ], - [ - 115.80070894888058, - -28.30547688638609 - ], - [ - 130.6580031652458, - 28.060398329301506 - ], - [ - 111.81824232503068, - 40.286571380475486 - ], - [ - 72.14386401439745, - 36.91440176652914 - ], - [ - 17.18597093940944, - 18.485072139848473 - ], - [ - 0, - 0 - ] - ] - }, - { - "type": "line", - "version": 4631, - "versionNonce": 318260838, - "isDeleted": false, - "id": "JyadeZaz-nApBsaSLy5p6", - "fillStyle": "hachure", - "strokeWidth": 2, - "strokeStyle": "solid", - "roughness": 1, - "opacity": 90, - "angle": 0, - "x": 319.2790907030394, - "y": 70.7991843340742, - "strokeColor": "#c92a2a", - "backgroundColor": "#fa5252", - "width": 216.87058566398125, - "height": 105.98015412636072, - "seed": 238052157, - "groupIds": [ - "g_ZYKV0PmWmJecyAyG0vE" - ], - "strokeSharpness": "round", - "boundElements": [], - "updated": 1662376884761, - "link": null, - "locked": false, - "startBinding": null, - "endBinding": null, - "lastCommittedPoint": null, - "startArrowhead": null, - "endArrowhead": null, - "points": [ - [ - 0, - 0 - ], - [ - -19.027324968632406, - 3.2735182741733384 - ], - [ - -32.53058784959727, - 7.5700110090258 - ], - [ - -40.714383535030386, - 19.027324968632367 - ], - [ - -40.305193750758825, - 39.282219290079546 - ], - [ - -25.36976662484299, - 58.309544258712016 - ], - [ - 7.774605901161586, - 81.01957728578927 - ], - [ - 74.67713562957849, - 103.93420520500231 - ], - [ - 127.87180758489482, - 105.98015412636072 - ], - [ - 165.92645752215952, - 89.2033729712225 - ], - [ - 176.1562021289509, - 64.03820123851503 - ], - [ - 161.425369895171, - 38.05464993726463 - ], - [ - 136.66938794673536, - 25.36976662484304 - ], - [ - 138.53203043061052, - 34.30658204206115 - ], - [ - 136.66289389782435, - 46.66466617069298 - ], - [ - 123.19518701709988, - 53.308145840076726 - ], - [ - 102.76773799801693, - 57.02513045099989 - ], - [ - 69.97145311045328, - 50.813408468305106 - ], - [ - 30.689233820376245, - 36.692103220002295 - ], - [ - 11.61922442992149, - 25.902010098469074 - ], - [ - -0.6265577491993763, - 11.526931487294902 - ], - [ - 0, - 0 - ] - ] - }, - { - "type": "line", - "version": 3903, - "versionNonce": 1818376954, - "isDeleted": false, - "id": "7SyGlpzJiL-b6p38pAfBy", - "fillStyle": "hachure", - "strokeWidth": 2, - "strokeStyle": "solid", - "roughness": 1, - "opacity": 90, - "angle": 0, - "x": 321.0994122611919, - "y": 64.29856312402173, - "strokeColor": "#000000", - "backgroundColor": "#111111", - "width": 139.45788662720503, - "height": 62.401442101428636, - "seed": 1978153747, - "groupIds": [ - "g_ZYKV0PmWmJecyAyG0vE" - ], - "strokeSharpness": "round", - "boundElements": [], - "updated": 1662376884761, - "link": null, - "locked": false, - "startBinding": null, - "endBinding": null, - "lastCommittedPoint": null, - "startArrowhead": null, - "endArrowhead": null, - "points": [ - [ - 0, - 0 - ], - [ - 22.804818964804006, - 21.687058566398193 - ], - [ - 86.12085708379372, - 41.73735799570947 - ], - [ - 125.37374612577968, - 38.463839721536395 - ], - [ - 130.37165585906067, - 26.392741085522232 - ], - [ - 135.7254606218297, - 45.82925583842618 - ], - [ - 128.13291561740596, - 58.104949366576136 - ], - [ - 104.83377820588099, - 62.401442101428636 - ], - [ - 71.03520296880636, - 58.923328935119315 - ], - [ - 24.796399983098315, - 43.16952224066042 - ], - [ - 1.590617998009283, - 24.551387056299777 - ], - [ - -3.7324260053752747, - 14.321642449508143 - ], - [ - 0, - 0 - ] - ] - }, - { - "type": "line", - "version": 718, - "versionNonce": 774801830, - "isDeleted": false, - "id": "f5KYH-B9kAnWXXo51R9-H", - "fillStyle": "cross-hatch", - "strokeWidth": 1, - "strokeStyle": "solid", - "roughness": 1, - "opacity": 100, - "angle": 0, - "x": 1812.0073727222634, - "y": 145.00498424785317, - "strokeColor": "#db212f", - "backgroundColor": "#db212f", - "width": 15.057127222627372, - "height": 12.261063255147196, - "seed": 300826365, - "groupIds": [ - "XlWWhul_UJlIc-Kn2RdKM", - "-Hi40yyCOS2FYhEDrTPcO" - ], - "strokeSharpness": "sharp", - "boundElements": [], - "updated": 1662376884761, - "link": null, - "locked": false, - "lastCommittedPoint": null, - "startArrowhead": null, - "endArrowhead": null, - "points": [ - [ - 0, - 0 - ], - [ - -14.616681342596005, - 5.324819892381999 - ], - [ - -14.616681342596005, - 5.324819892381999 - ], - [ - -14.17376881036628, - 8.82008778368913 - ], - [ - -13.456338021439967, - 12.259542418501105 - ], - [ - 0.44044588003136376, - 7.197468058759137 - ], - [ - 0.44044588003136376, - 7.197468058759137 - ], - [ - -0.011390342271196507, - 3.6270215909966614 - ], - [ - 0.015188088638847574, - -0.0015208366460921496 - ] - ] - }, - { - "type": "line", - "version": 717, - "versionNonce": 2031406010, - "isDeleted": false, - "id": "bc07NLfZ6wBrmPN4gV5sW", - "fillStyle": "cross-hatch", - "strokeWidth": 1, - "strokeStyle": "solid", - "roughness": 1, - "opacity": 100, - "angle": 0, - "x": 1876.872135362504, - "y": 128.39985372330213, - "strokeColor": "#db212f", - "backgroundColor": "#db212f", - "width": 18.197948925199313, - "height": 11.115906574214128, - "seed": 2052520787, - "groupIds": [ - "XlWWhul_UJlIc-Kn2RdKM", - "-Hi40yyCOS2FYhEDrTPcO" - ], - "strokeSharpness": "sharp", - "boundElements": [], - "updated": 1662376884761, - "link": null, - "locked": false, - "lastCommittedPoint": null, - "startArrowhead": null, - "endArrowhead": null, - "points": [ - [ - 0, - 0 - ], - [ - 0, - 0 - ], - [ - -1.6547050329147124, - -3.099058079854779 - ], - [ - -3.5691168220090894, - -6.056870990932633 - ], - [ - -18.197948925199313, - -0.7320496501346963 - ], - [ - -18.197948925199313, - -0.7320496501346963 - ], - [ - -15.849545397116387, - 2.0319304577765314 - ], - [ - -13.899821229515979, - 5.059035583281502 - ], - [ - 0, - 0 - ] - ] - }, - { - "type": "line", - "version": 718, - "versionNonce": 1748657382, - "isDeleted": false, - "id": "WI1EejQvjeUV9LSZ1ot1W", - "fillStyle": "cross-hatch", - "strokeWidth": 1, - "strokeStyle": "solid", - "roughness": 1, - "opacity": 100, - "angle": 0, - "x": 1844.741511980074, - "y": 124.46697546257788, - "strokeColor": "#db212f", - "backgroundColor": "#db212f", - "width": 75.81253322810664, - "height": 45.04589164255064, - "seed": 925325149, - "groupIds": [ - "pBHxrM3AqO8CWPQXmIOZ-", - "-Hi40yyCOS2FYhEDrTPcO" - ], - "strokeSharpness": "sharp", - "boundElements": [], - "updated": 1662376884761, - "link": null, - "locked": false, - "lastCommittedPoint": null, - "startArrowhead": null, - "endArrowhead": null, - "points": [ - [ - 0, - 0 - ], - [ - 0, - 0 - ], - [ - 4.259402849426743, - 2.4949658314576624 - ], - [ - 7.903704041554605, - 5.630095259725732 - ], - [ - 22.53405408455911, - 0.3052739189279503 - ], - [ - 22.53405408455911, - 0.3052739189279503 - ], - [ - 19.138173592281127, - -3.8673601303844958 - ], - [ - 15.24909012092732, - -7.552422641459149 - ], - [ - 10.918506322800576, - -10.706893490825568 - ], - [ - 6.19811905654128, - -13.287754727637926 - ], - [ - 2.234222009527124, - -14.897026214166894 - ], - [ - -1.7961109758512919, - -16.07522705437966 - ], - [ - -5.864716901740125, - -16.83260913568656 - ], - [ - -9.943409595632126, - -17.179423621290262 - ], - [ - -14.004023162841754, - -17.12592239860094 - ], - [ - -18.01837722452531, - -16.682356992925172 - ], - [ - -21.95830009233396, - -15.858980015881567 - ], - [ - -25.795617181087014, - -14.666041906464322 - ], - [ - -29.502151008772366, - -13.113795638395903 - ], - [ - -33.049732783873026, - -11.212492012774932 - ], - [ - -36.410182127544914, - -8.972383641219674 - ], - [ - -39.55533024827102, - -6.4037216869325295 - ], - [ - -42.4569982156232, - -3.5167565889083434 - ], - [ - -45.087012892836896, - -0.32174240718104485 - ], - [ - -47.41720114314734, - 3.171070419254548 - ], - [ - -49.41938765716614, - 6.951430002988154 - ], - [ - -51.37716284428783, - 11.962969133604677 - ], - [ - -52.667513799822046, - 17.163459905961766 - ], - [ - -53.278479143547536, - 22.486695231400166 - ], - [ - -53.19809749524285, - 27.866468021260374 - ], - [ - -38.56622733980009, - 22.543163171861146 - ], - [ - -38.56622733980009, - 22.543163171861146 - ], - [ - -37.78918554801086, - 17.799841688978947 - ], - [ - -36.131632929528294, - 13.151064102512025 - ], - [ - -33.31672507179529, - 8.424778886897506 - ], - [ - -29.722953315129445, - 4.472764643544799 - ], - [ - -25.496669942606843, - 1.348259345561452 - ], - [ - -20.784231582550888, - -0.8955077244395149 - ], - [ - -15.731989069621903, - -2.2052985933502995 - ], - [ - -10.486301928975067, - -2.5278810817263966 - ], - [ - -5.193520995270404, - -1.8100201132916165 - ], - [ - 5.684352728102526e-14, - 0.0015193882302124706 - ] - ] - }, - { - "type": "line", - "version": 717, - "versionNonce": 448218234, - "isDeleted": false, - "id": "6oij0WK_m7aP1lp6Uqqr7", - "fillStyle": "cross-hatch", - "strokeWidth": 1, - "strokeStyle": "solid", - "roughness": 1, - "opacity": 100, - "angle": 0, - "x": 1799.8921534112642, - "y": 156.69499793638806, - "strokeColor": "#db212f", - "backgroundColor": "#db212f", - "width": 21.135260958288036, - "height": 19.23375745127928, - "seed": 857872627, - "groupIds": [ - "xe1BDv0Ik6eS3i_ZaaVrg", - "-Hi40yyCOS2FYhEDrTPcO" - ], - "strokeSharpness": "sharp", - "boundElements": [], - "updated": 1662376884761, - "link": null, - "locked": false, - "lastCommittedPoint": null, - "startArrowhead": null, - "endArrowhead": null, - "points": [ - [ - 0, - 0 - ], - [ - -13.901339169330232, - 5.060556419927578 - ], - [ - -13.901339169330232, - 5.060556419927578 - ], - [ - -12.769757584931266, - 8.810053158656753 - ], - [ - -11.295882201859168, - 12.43895479343112 - ], - [ - -9.490534497058649, - 15.92119563255274 - ], - [ - -7.364535585370593, - 19.230721571650527 - ], - [ - 7.233921788957807, - 13.915012214986383 - ], - [ - 7.233921788957807, - 13.915012214986383 - ], - [ - 4.6748345876696735, - 10.861247547283575 - ], - [ - 2.596717045159691, - 7.486259005275251 - ], - [ - 1.0287214273092773, - 3.84613504446863 - ], - [ - -7.105427357601002e-15, - -0.003035879628753513 - ] - ] - }, - { - "type": "line", - "version": 716, - "versionNonce": 44619814, - "isDeleted": false, - "id": "lXLhUsF6cIPdCalY9LsXj", - "fillStyle": "cross-hatch", - "strokeWidth": 1, - "strokeStyle": "solid", - "roughness": 1, - "opacity": 100, - "angle": 0, - "x": 1860.513037699569, - "y": 151.0961531026524, - "strokeColor": "#db212f", - "backgroundColor": "#db212f", - "width": 75.78996437438275, - "height": 45.03934263026952, - "seed": 442393533, - "groupIds": [ - "PDMHehvMnDWQoTOJluHvO", - "-Hi40yyCOS2FYhEDrTPcO" - ], - "strokeSharpness": "sharp", - "boundElements": [], - "updated": 1662376884761, - "link": null, - "locked": false, - "lastCommittedPoint": null, - "startArrowhead": null, - "endArrowhead": null, - "points": [ - [ - 0, - 0 - ], - [ - 0, - 0 - ], - [ - -0.7979612619600112, - 4.809693690948873 - ], - [ - -2.454340663601258, - 9.395140742641292 - ], - [ - -5.269186239452615, - 14.121420164592262 - ], - [ - -8.862810257701469, - 18.07341123329136 - ], - [ - -13.088905336163094, - 21.197864388304026 - ], - [ - -17.801175679979963, - 23.441518481868417 - ], - [ - -22.853313906967415, - 24.751129747213415 - ], - [ - -28.09903291276312, - 25.073442830240726 - ], - [ - -33.392019521518975, - 24.3552023768524 - ], - [ - -38.5859779383772, - 22.543164620276947 - ], - [ - -42.80189644705284, - 20.093852856518723 - ], - [ - -46.506385111553286, - 16.92369928449945 - ], - [ - -61.10484103746573, - 22.239408641163465 - ], - [ - -61.10484103746573, - 22.239408641163465 - ], - [ - -57.800106458011086, - 26.318906654269917 - ], - [ - -53.96413349916998, - 29.986486785993755 - ], - [ - -49.617567880516816, - 33.17992509127249 - ], - [ - -44.781055321626326, - 35.83699762504376 - ], - [ - -40.81719303659254, - 37.44623398748825 - ], - [ - -36.786952749828814, - 38.62433488700707 - ], - [ - -32.71850035602038, - 39.38156669516916 - ], - [ - -28.639998853021027, - 39.72818998988028 - ], - [ - -24.579617032347983, - 39.6744595553821 - ], - [ - -20.565517891854626, - 39.23063596958054 - ], - [ - -16.62587311988986, - 38.40698560404443 - ], - [ - -12.788839920643921, - 37.21376324301611 - ], - [ - -9.082587085634232, - 35.66123525806417 - ], - [ - -5.535283406377404, - 33.759656433431 - ], - [ - -2.1750860870640736, - 31.519293140685605 - ], - [ - 0.9698302871254398, - 28.950400164069887 - ], - [ - 3.871302718337546, - 26.063238081489523 - ], - [ - 6.501168208718221, - 22.868073264513562 - ], - [ - 8.831263760414274, - 19.375166291047492 - ], - [ - 10.833414788244482, - 15.594771945333305 - ], - [ - 12.79060698798517, - 10.58564008186536 - ], - [ - 14.078509396519241, - 5.387200266356471 - ], - [ - 14.685123336917002, - 0.06607093756920435 - ], - [ - 14.5984559259125, - -5.3111526403892615 - ], - [ - 0.0030358796286549246, - 0.0015208366460797156 - ], - [ - 0, - 0 - ] - ] - }, - { - "type": "line", - "version": 717, - "versionNonce": 2064426298, - "isDeleted": false, - "id": "t6zC6Ks9wMbXlSd_IkbXg", - "fillStyle": "cross-hatch", - "strokeWidth": 1, - "strokeStyle": "solid", - "roughness": 1, - "opacity": 100, - "angle": 0, - "x": 1864.2912948506817, - "y": 133.40343309301588, - "strokeColor": "#db212f", - "backgroundColor": "#db212f", - "width": 18.000512463389445, - "height": 20.36979635441513, - "seed": 200835731, - "groupIds": [ - "OATV6O3C6Jj4jKAau1-nj", - "-Hi40yyCOS2FYhEDrTPcO" - ], - "strokeSharpness": "sharp", - "boundElements": [], - "updated": 1662376884761, - "link": null, - "locked": false, - "lastCommittedPoint": null, - "startArrowhead": null, - "endArrowhead": null, - "points": [ - [ - 0, - 0 - ], - [ - -13.901339169330214, - 5.060556419927573 - ], - [ - -13.901339169330214, - 5.060556419927573 - ], - [ - -12.224351706926663, - 8.65100840745738 - ], - [ - -11.082304774830863, - 12.441228806321043 - ], - [ - -10.499259457199686, - 16.36842299560986 - ], - [ - -10.499282631853335, - 20.369796354415122 - ], - [ - 4.099173294059227, - 15.058646610857604 - ], - [ - 4.099173294059227, - 15.058646610857604 - ], - [ - 3.6036702306080626, - 11.15686632613269 - ], - [ - 2.749359798287061, - 7.328845170326803 - ], - [ - 1.544781856967882, - 3.6010601852401734 - ], - [ - -0.0015179398143487788, - 1.0842021724855044e-19 - ] - ] - }, - { - "type": "rectangle", - "version": 943, - "versionNonce": 90628966, - "isDeleted": false, - "id": "YbM8xe6NaFlLoIbF5ZNkj", - "fillStyle": "cross-hatch", - "strokeWidth": 2, - "strokeStyle": "solid", - "roughness": 1, - "opacity": 90, - "angle": 0, - "x": 735, - "y": 185, - "strokeColor": "#000000", - "backgroundColor": "transparent", - "width": 96, - "height": 61, - "seed": 580511379, - "groupIds": [], - "strokeSharpness": "sharp", - "boundElements": [ - { - "id": "7Syn5DvjY3mv9SneA2hDa", - "type": "arrow" - }, - { - "id": "LUbBz_tU04VUacwIREtSp", - "type": "arrow" - } - ], - "updated": 1662376884761, - "link": null, - "locked": false - }, - { - "type": "text", - "version": 599, - "versionNonce": 326626810, - "isDeleted": false, - "id": "iuxdb0W-9J_Gkd_DYbuW_", - "fillStyle": "cross-hatch", - "strokeWidth": 2, - "strokeStyle": "solid", - "roughness": 1, - "opacity": 90, - "angle": 0, - "x": 758.5, - "y": 147.5, - "strokeColor": "#000000", - "backgroundColor": "transparent", - "width": 37, - "height": 35, - "seed": 81439549, - "groupIds": [], - "strokeSharpness": "sharp", - "boundElements": [], - "updated": 1662376884761, - "link": null, - "locked": false, - "fontSize": 28, - "fontFamily": 1, - "text": "git", - "baseline": 25, - "textAlign": "center", - "verticalAlign": "top", - "containerId": null, - "originalText": "git" - }, - { - "type": "line", - "version": 1073, - "versionNonce": 1925285542, - "isDeleted": false, - "id": "Q8EB985YDHetJxeoUp0Vw", - "fillStyle": "cross-hatch", - "strokeWidth": 1, - "strokeStyle": "solid", - "roughness": 0, - "opacity": 100, - "angle": 0, - "x": 759.3375385298189, - "y": 197.05127472665572, - "strokeColor": "#428f29", - "backgroundColor": "#609926", - "width": 66.5027317863492, - "height": 41.006360360924916, - "seed": 2142521811, - "groupIds": [ - "zl1s8cNmh8UrJcf74pI-f" - ], - "strokeSharpness": "sharp", - "boundElements": [], - "updated": 1662376884761, - "link": null, - "locked": false, - "lastCommittedPoint": null, - "startArrowhead": null, - "endArrowhead": null, - "points": [ - [ - 0, - 0 - ], - [ - 0, - 0 - ], - [ - -1.9819704021413749, - 0.1700804476166412 - ], - [ - -4.021831182534616, - 0.7059082463466613 - ], - [ - -5.030615013067983, - 1.1176989561642738 - ], - [ - -6.014442852708516, - 1.6289927770316832 - ], - [ - -6.9601750754113105, - 2.242479147921579 - ], - [ - -7.854667456926681, - 2.9608434205133602 - ], - [ - -8.68477832756329, - 3.7867791210730144 - ], - [ - -9.437364995806295, - 4.722969557633341 - ], - [ - -10.099284770140986, - 5.772108256460275 - ], - [ - -10.657395980875966, - 6.9368785255865895 - ], - [ - -11.098555936496442, - 8.21997389127839 - ], - [ - -11.40962220094355, - 9.624079705214903 - ], - [ - -11.577452593614222, - 11.15188745001558 - ], - [ - -11.588904422993668, - 12.806082477359743 - ], - [ - -11.336825464130218, - 15.34153676334101 - ], - [ - -10.822590324842285, - 17.589778994775504 - ], - [ - -10.075910561744195, - 19.568065723855852 - ], - [ - -9.12649824236198, - 21.293639197248098 - ], - [ - -8.004065178765881, - 22.783760054438325 - ], - [ - -6.738322927570264, - 24.05567667303228 - ], - [ - -5.358984067212862, - 25.126637430636144 - ], - [ - -3.8957586215729645, - 26.01389479214918 - ], - [ - -2.378360190911682, - 26.734705309764024 - ], - [ - -0.8365003318433182, - 27.30631327379341 - ], - [ - 0.7001093990176681, - 27.745975236429842 - ], - [ - 2.2017574450569644, - 28.07093957527943 - ], - [ - 3.6387312278367414, - 28.298458755241516 - ], - [ - 4.981321234389505, - 28.445785241215386 - ], - [ - 6.199812842630774, - 28.530167410807024 - ], - [ - 7.264495517769529, - 28.56885772891568 - ], - [ - 7.435231975956343, - 29.14575056314516 - ], - [ - 7.7258916623775775, - 29.854327811998132 - ], - [ - 8.125992713438439, - 30.672101187894526 - ], - [ - 8.625047134604204, - 31.576578315960653 - ], - [ - 9.87808658922341, - 33.555678416402095 - ], - [ - 11.401132637362723, - 35.611693201627844 - ], - [ - 13.110309933796094, - 37.564700021823626 - ], - [ - 14.921747220591012, - 39.234768052587974 - ], - [ - 15.839600015888385, - 39.90747112839627 - ], - [ - 16.751565065228064, - 40.44196238222666 - ], - [ - 17.647156417721916, - 40.81575761379161 - ], - [ - 18.515890166128166, - 41.006360360924916 - ], - [ - 38.41932239020985, - 41.00636036092489 - ], - [ - 38.41932239020985, - 41.00636036092489 - ], - [ - 39.52905929908097, - 40.811310638712186 - ], - [ - 40.61893604994564, - 40.40327615141114 - ], - [ - 41.68664740939881, - 39.79659921111167 - ], - [ - 42.72989631862134, - 39.005626217197076 - ], - [ - 43.74637345691538, - 38.044703569050476 - ], - [ - 44.733789940047984, - 36.92816540417523 - ], - [ - 45.68983236002843, - 35.67036629654137 - ], - [ - 46.61220774533085, - 34.285644470945215 - ], - [ - 47.498614949843414, - 32.78834632677018 - ], - [ - 48.3467528274542, - 31.19281826339949 - ], - [ - 49.919011930229885, - 27.76443345284421 - ], - [ - 51.310579972055685, - 24.11524488517218 - ], - [ - 52.503051871330385, - 20.36000740627583 - ], - [ - 53.478018459157994, - 16.613467687461423 - ], - [ - 54.21707465393703, - 12.990384661914874 - ], - [ - 54.701811286772546, - 9.605507044588766 - ], - [ - 54.84305996765153, - 8.038254876070912 - ], - [ - 54.91382736335554, - 6.5735876377294815 - ], - [ - 54.91180824047939, - 5.225847641654507 - ], - [ - 54.83471371479084, - 4.009379243582792 - ], - [ - 54.68023037829856, - 2.938526799250514 - ], - [ - 54.44606117218366, - 2.0276346643947214 - ], - [ - 54.129900863041016, - 1.2910451511050063 - ], - [ - 53.72946056663854, - 0.7431046587646399 - ], - [ - 53.24243504957106, - 0.3981554994636305 - ], - [ - 52.66651499114012, - 0.2705440725852277 - ], - [ - 50.38399467468378, - 0.3905470030386695 - ], - [ - 48.230493857637555, - 0.5018113004773248 - ], - [ - 46.19825894466584, - 0.6044330162933456 - ], - [ - 44.279552689605055, - 0.6985163764650153 - ], - [ - 40.75173220833915, - 0.8614624536761077 - ], - [ - 37.58507313513575, - 0.9914424670054487 - ], - [ - 34.71760392941139, - 1.089257525934066 - ], - [ - 32.08736939975574, - 1.1557066962966545 - ], - [ - 29.632402092878237, - 1.1915849566344754 - ], - [ - 27.290742730075316, - 1.1976913727821934 - ], - [ - 22.699482110825095, - 1.1237828921989905 - ], - [ - 20.32595820967701, - 1.0453620398440044 - ], - [ - 17.81788470132205, - 0.9403656066372221 - ], - [ - 15.11330230705643, - 0.809586527473364 - ], - [ - 12.150247660883139, - 0.6538238681870236 - ], - [ - 8.866755353158485, - 0.4738766946127946 - ], - [ - 7.0854822907078265, - 0.3750827289456167 - ], - [ - 5.200864061532112, - 0.2705440725852437 - ], - [ - 4.105790317272589, - 0.22292301867815878 - ], - [ - 2.8497467020987655, - 0.1318560809408833 - ], - [ - 1.4690467730818961, - 0.042497631791162616 - ], - [ - 0, - 0 - ], - [ - 0, - 0 - ] - ] - }, - { - "type": "line", - "version": 1056, - "versionNonce": 956047034, - "isDeleted": false, - "id": "lGMXFgtMaMylvK7rWo7vG", - "fillStyle": "solid", - "strokeWidth": 1, - "strokeStyle": "solid", - "roughness": 0, - "opacity": 100, - "angle": 0, - "x": 760.6720418266365, - "y": 202.11820636226628, - "strokeColor": "#428f29", - "backgroundColor": "#FFFFFF", - "width": 12.320199869673417, - "height": 18.184807149251014, - "seed": 1005334749, - "groupIds": [ - "zl1s8cNmh8UrJcf74pI-f" - ], - "strokeSharpness": "sharp", - "boundElements": [], - "updated": 1662376884761, - "link": null, - "locked": false, - "lastCommittedPoint": null, - "startArrowhead": null, - "endArrowhead": null, - "points": [ - [ - 0, - 0 - ], - [ - 0, - 0 - ], - [ - 0.29448232745354375, - 2.6187410609760664 - ], - [ - 0.6405902343969956, - 5.014246425338673 - ], - [ - 1.0471563615902326, - 7.2487553513807 - ], - [ - 1.5230133497931106, - 9.384511184688263 - ], - [ - 2.717931494090582, - 13.608722649918137 - ], - [ - 3.4546620189981816, - 15.82166088571943 - ], - [ - 4.296017033424848, - 18.184807149251014 - ], - [ - 2.0584283319027072, - 17.818516188132502 - ], - [ - -0.05507116771784126, - 17.29105916602271 - ], - [ - -2.0054805130394264, - 16.552538406662148 - ], - [ - -3.7537915989014934, - 15.553035797325172 - ], - [ - -4.5399712196319015, - 14.939819187791205 - ], - [ - -5.260998363790126, - 14.242645487165886 - ], - [ - -5.9119989341498105, - 13.455265224036966 - ], - [ - -6.488096789837993, - 12.571449363458553 - ], - [ - -6.984415789981686, - 11.584956608605028 - ], - [ - -7.39608081553121, - 10.48954361900395 - ], - [ - -7.718214703790242, - 9.278975228769639 - ], - [ - -7.945942846620827, - 7.947014228369632 - ], - [ - -8.024182836248567, - 6.4582932691250114 - ], - [ - -7.856660523308257, - 5.005164459689245 - ], - [ - -7.413178985109507, - 3.6405909462753625 - ], - [ - -6.663539766226968, - 2.4175481369762 - ], - [ - -6.164475126828098, - 1.8756507077379005 - ], - [ - -5.577546965793577, - 1.388997134358164 - ], - [ - -4.898980667787072, - 0.9642108755835823 - ], - [ - -4.125001617472318, - 0.6079113028674633 - ], - [ - -3.2518351995130104, - 0.326717787663117 - ], - [ - -2.2757067985728305, - 0.12725583236376134 - ], - [ - -1.1928407774922007, - 0.016142764776073733 - ], - [ - 0.0005354354185769239, - -3.17415905654013e-16 - ], - [ - 0, - 0 - ] - ] - }, - { - "type": "line", - "version": 1110, - "versionNonce": 2070266342, - "isDeleted": false, - "id": "Ut5FMjc52z6fgsL0J6BGw", - "fillStyle": "solid", - "strokeWidth": 1, - "strokeStyle": "solid", - "roughness": 0, - "opacity": 100, - "angle": 0, - "x": 787.9164628574821, - "y": 210.2172928355925, - "strokeColor": "#428f29", - "backgroundColor": "#ffffff", - "width": 1.7480862847321295, - "height": 12.703759133952614, - "seed": 1825675123, - "groupIds": [ - "hnittqP4OOF9j9Lcenkuc", - "zl1s8cNmh8UrJcf74pI-f" - ], - "strokeSharpness": "sharp", - "boundElements": [], - "updated": 1662376884761, - "link": null, - "locked": false, - "lastCommittedPoint": null, - "startArrowhead": null, - "endArrowhead": null, - "points": [ - [ - 0, - 0 - ], - [ - 1.7362985309369154, - 0.8619897145081872 - ], - [ - 1.7362985309369154, - -11.841769419444425 - ], - [ - -0.011787753795213948, - -11.841769419444425 - ], - [ - 0, - 0 - ] - ] - }, - { - "type": "rectangle", - "version": 1137, - "versionNonce": 675035002, - "isDeleted": false, - "id": "lYxoc6qsCbufQWfkaYPjn", - "fillStyle": "solid", - "strokeWidth": 1, - "strokeStyle": "solid", - "roughness": 0, - "opacity": 100, - "angle": 0.5235987755982983, - "x": 779.0262304756161, - "y": 209.01417476491508, - "strokeColor": "#428f29", - "backgroundColor": "#fff", - "width": 16.75036748829949, - "height": 16.75036748829949, - "seed": 877399357, - "groupIds": [ - "zl1s8cNmh8UrJcf74pI-f" - ], - "strokeSharpness": "round", - "boundElements": [], - "updated": 1662376884761, - "link": null, - "locked": false - }, - { - "type": "line", - "version": 1153, - "versionNonce": 845190438, - "isDeleted": false, - "id": "W9GQ91KbkZiI8PMWjEt3V", - "fillStyle": "cross-hatch", - "strokeWidth": 1, - "strokeStyle": "solid", - "roughness": 0, - "opacity": 100, - "angle": 0, - "x": 787.5675536338199, - "y": 213.27043987335145, - "strokeColor": "#609926", - "backgroundColor": "none", - "width": 3.9928709593189584, - "height": 8.607162705368937, - "seed": 271855891, - "groupIds": [ - "S0CmrEuo-ZXU3htKaoIxB", - "zl1s8cNmh8UrJcf74pI-f" - ], - "strokeSharpness": "sharp", - "boundElements": [], - "updated": 1662376884761, - "link": null, - "locked": false, - "lastCommittedPoint": null, - "startArrowhead": null, - "endArrowhead": null, - "points": [ - [ - 0, - 0 - ], - [ - 0, - 0 - ], - [ - 0.8708256796103779, - 0.45456506781286815 - ], - [ - 1.6286245156968555, - 0.842039937231826 - ], - [ - 2.2760685651818604, - 1.1791900911006858 - ], - [ - 2.8158269742504354, - 1.4827653083640089 - ], - [ - 3.250574710562407, - 1.7695310718656039 - ], - [ - 3.582983831040201, - 2.0562403013298867 - ], - [ - 3.8157205711314752, - 2.359655338820815 - ], - [ - 3.9514598984960405, - 2.6965322448426505 - ], - [ - 3.9928709593189584, - 3.083627079899658 - ], - [ - 3.9426287212600317, - 3.5377021860557947 - ], - [ - 3.803399419766926, - 4.075513623815322 - ], - [ - 3.577858022499456, - 4.713820594462351 - ], - [ - 3.268676586380058, - 5.469382299280998 - ], - [ - 2.878524257593769, - 6.358951657995674 - ], - [ - 2.410073093063024, - 7.399294153450177 - ], - [ - 1.8659951497102514, - 8.607162705368937 - ] - ] - }, - { - "type": "line", - "version": 1196, - "versionNonce": 293287994, - "isDeleted": false, - "id": "1wLhwqt45xhbe4vgxY7NZ", - "fillStyle": "cross-hatch", - "strokeWidth": 1, - "strokeStyle": "solid", - "roughness": 0, - "opacity": 100, - "angle": 0, - "x": 787.19375468775, - "y": 207.89598632136608, - "strokeColor": "#428f29", - "backgroundColor": "#428f29", - "width": 7.847296587542959, - "height": 13.752717991875608, - "seed": 1630625181, - "groupIds": [ - "1pSuO6LCaukkQ9UMQK_hA", - "zl1s8cNmh8UrJcf74pI-f" - ], - "strokeSharpness": "sharp", - "boundElements": [], - "updated": 1662376884761, - "link": null, - "locked": false, - "lastCommittedPoint": null, - "startArrowhead": null, - "endArrowhead": null, - "points": [ - [ - 0, - 0 - ], - [ - 1.43889895103068, - 0.4763351483960596 - ], - [ - -5.121574659356895, - 13.7527179918756 - ], - [ - -6.40839763651228, - 13.124304825957973 - ], - [ - 0, - 0 - ] - ] - }, - { - "type": "ellipse", - "version": 1114, - "versionNonce": 1092550758, - "isDeleted": false, - "id": "yF40ew457jmrEJrTbM6rg", - "fillStyle": "solid", - "strokeWidth": 1, - "strokeStyle": "solid", - "roughness": 0, - "opacity": 100, - "angle": 0, - "x": 784.0794541733192, - "y": 210.66429372466973, - "strokeColor": "#609926", - "backgroundColor": "#609926", - "width": 3.5032895688733885, - "height": 3.5032895688733885, - "seed": 189961907, - "groupIds": [ - "KCLSuwLSEWUC_iP7kSNCk", - "zl1s8cNmh8UrJcf74pI-f" - ], - "strokeSharpness": "sharp", - "boundElements": [], - "updated": 1662376884761, - "link": null, - "locked": false - }, - { - "type": "ellipse", - "version": 1114, - "versionNonce": 614211834, - "isDeleted": false, - "id": "kzUT99c-It4ecp0bLdMpU", - "fillStyle": "solid", - "strokeWidth": 1, - "strokeStyle": "solid", - "roughness": 0, - "opacity": 100, - "angle": 0, - "x": 780.0842108335173, - "y": 218.95025900946422, - "strokeColor": "#609926", - "backgroundColor": "#609926", - "width": 3.5032895688733885, - "height": 3.5032895688733885, - "seed": 2043519485, - "groupIds": [ - "KCLSuwLSEWUC_iP7kSNCk", - "zl1s8cNmh8UrJcf74pI-f" - ], - "strokeSharpness": "sharp", - "boundElements": [], - "updated": 1662376884761, - "link": null, - "locked": false - }, - { - "type": "ellipse", - "version": 1114, - "versionNonce": 460194726, - "isDeleted": false, - "id": "Hw8JiSvWpyA7wcNoYuOcM", - "fillStyle": "solid", - "strokeWidth": 1, - "strokeStyle": "solid", - "roughness": 0, - "opacity": 100, - "angle": 0, - "x": 786.6541178636505, - "y": 221.90003403980205, - "strokeColor": "#609926", - "backgroundColor": "#609926", - "width": 3.5032895688733885, - "height": 3.5032895688733885, - "seed": 215173203, - "groupIds": [ - "KCLSuwLSEWUC_iP7kSNCk", - "zl1s8cNmh8UrJcf74pI-f" - ], - "strokeSharpness": "sharp", - "boundElements": [], - "updated": 1662376884761, - "link": null, - "locked": false - }, - { - "type": "line", - "version": 671, - "versionNonce": 488763834, - "isDeleted": false, - "id": "xDY61qQQ6Ap2p04GrSIhU", - "fillStyle": "cross-hatch", - "strokeWidth": 1, - "strokeStyle": "solid", - "roughness": 1, - "opacity": 100, - "angle": 0, - "x": 943.7650494170268, - "y": 207.5536810655546, - "strokeColor": "#000000", - "backgroundColor": "#fa5252", - "width": 21.361340598602617, - "height": 21.479359054948496, - "seed": 1526894483, - "groupIds": [ - "hLaUC0pyklAgiIpkyHRSs" - ], - "strokeSharpness": "sharp", - "boundElements": [], - "updated": 1662376884761, - "link": null, - "locked": false, - "startBinding": null, - "endBinding": null, - "lastCommittedPoint": null, - "startArrowhead": null, - "endArrowhead": null, - "points": [ - [ - 0, - 0 - ], - [ - 2.9504614086469867, - 4.012627515759613 - ], - [ - -11.093734896511851, - 11.919864090932956 - ], - [ - 3.776590603068043, - 16.640602344767817 - ], - [ - 2.2423506705715397, - 21.479359054948496 - ], - [ - -17.584749995534565, - 14.988343955925606 - ], - [ - -17.584749995534565, - 8.73336576959445 - ], - [ - 0, - 0 - ] - ] - }, - { - "type": "line", - "version": 793, - "versionNonce": 863674086, - "isDeleted": false, - "id": "vUg5B5lluM1lc6gwDspMM", - "fillStyle": "cross-hatch", - "strokeWidth": 1, - "strokeStyle": "solid", - "roughness": 1, - "opacity": 100, - "angle": 0, - "x": 972.9111084975855, - "y": 208.52784762699463, - "strokeColor": "#000000", - "backgroundColor": "#fa5252", - "width": 22.550726855738834, - "height": 21.479359054948496, - "seed": 937305885, - "groupIds": [ - "hLaUC0pyklAgiIpkyHRSs" - ], - "strokeSharpness": "sharp", - "boundElements": [], - "updated": 1662376884761, - "link": null, - "locked": false, - "startBinding": null, - "endBinding": null, - "lastCommittedPoint": null, - "startArrowhead": null, - "endArrowhead": null, - "points": [ - [ - 0, - 0 - ], - [ - -3.114741278416954, - 4.012627515759613 - ], - [ - 11.71142720684779, - 11.919864090932956 - ], - [ - -3.986868836373726, - 16.64060234476782 - ], - [ - -2.367203371596897, - 21.479359054948496 - ], - [ - 18.563858019365114, - 14.988343955925602 - ], - [ - 18.563858019365114, - 8.73336576959445 - ], - [ - 0, - 0 - ] - ] - }, - { - "type": "line", - "version": 625, - "versionNonce": 1311746682, - "isDeleted": false, - "id": "YKMjthBrNNw97pyLkbxOg", - "fillStyle": "cross-hatch", - "strokeWidth": 1, - "strokeStyle": "solid", - "roughness": 1, - "opacity": 100, - "angle": 0, - "x": 948.8645995700572, - "y": 242.90905653246233, - "strokeColor": "#000000", - "backgroundColor": "#fa5252", - "width": 19.827100666106297, - "height": 47.32540099469423, - "seed": 1506878771, - "groupIds": [ - "hLaUC0pyklAgiIpkyHRSs" - ], - "strokeSharpness": "sharp", - "boundElements": [], - "updated": 1662376884761, - "link": null, - "locked": false, - "startBinding": null, - "endBinding": null, - "lastCommittedPoint": null, - "startArrowhead": null, - "endArrowhead": null, - "points": [ - [ - 0, - 0 - ], - [ - 13.218067110737529, - -47.20738253834822 - ], - [ - 19.827100666106297, - -47.20738253834822 - ], - [ - 6.963088924406386, - 0.1180184563460247 - ], - [ - 0, - 0 - ] - ] - }, - { - "type": "rectangle", - "version": 510, - "versionNonce": 768725542, - "isDeleted": false, - "id": "VWN6cXO1jiN8bNt1WAl7V", - "fillStyle": "cross-hatch", - "strokeWidth": 2, - "strokeStyle": "solid", - "roughness": 1, - "opacity": 90, - "angle": 0, - "x": 910, - "y": 178, - "strokeColor": "#000000", - "backgroundColor": "transparent", - "width": 101, - "height": 78, - "seed": 684609747, - "groupIds": [], - "strokeSharpness": "sharp", - "boundElements": [], - "updated": 1662376884761, - "link": null, - "locked": false - }, - { - "type": "text", - "version": 331, - "versionNonce": 780684090, - "isDeleted": false, - "id": "HQ1vT1MZXpaMNC0w2UQgN", - "fillStyle": "cross-hatch", - "strokeWidth": 2, - "strokeStyle": "solid", - "roughness": 1, - "opacity": 90, - "angle": 0, - "x": 917, - "y": 155, - "strokeColor": "#000000", - "backgroundColor": "transparent", - "width": 84, - "height": 20, - "seed": 1196888499, - "groupIds": [], - "strokeSharpness": "sharp", - "boundElements": [], - "updated": 1662376884761, - "link": null, - "locked": false, - "fontSize": 16, - "fontFamily": 1, - "text": "DevSpaces", - "baseline": 14, - "textAlign": "center", - "verticalAlign": "top", - "containerId": null, - "originalText": "DevSpaces" - }, - { - "type": "line", - "version": 654, - "versionNonce": 358653286, - "isDeleted": false, - "id": "yTMGBKLcl_krJLO3aWwCo", - "fillStyle": "solid", - "strokeWidth": 4, - "strokeStyle": "solid", - "roughness": 1, - "opacity": 100, - "angle": 0, - "x": 347.39587833125324, - "y": 306.7338110374251, - "strokeColor": "black", - "backgroundColor": "black", - "width": 180.44190813894443, - "height": 0.16613541482645627, - "seed": 269989267, - "groupIds": [ - "Cy3KZUF141Ea66DHXydV1" - ], - "strokeSharpness": "round", - "boundElements": [], - "updated": 1662376884761, - "link": null, - "locked": false, - "startBinding": null, - "endBinding": null, - "lastCommittedPoint": null, - "startArrowhead": null, - "endArrowhead": null, - "points": [ - [ - 0, - 0 - ], - [ - 180.44190813894443, - -0.16613541482645627 - ] - ] - }, - { - "type": "line", - "version": 596, - "versionNonce": 1687081978, - "isDeleted": false, - "id": "a5nod2XbFPVWuWRhn2Ua2", - "fillStyle": "solid", - "strokeWidth": 4, - "strokeStyle": "solid", - "roughness": 1, - "opacity": 100, - "angle": 0, - "x": 348.0536140237087, - "y": 306.9778100669535, - "strokeColor": "black", - "backgroundColor": "black", - "width": 29.012907644169655, - "height": 58.08933795512363, - "seed": 1721131293, - "groupIds": [ - "Cy3KZUF141Ea66DHXydV1" - ], - "strokeSharpness": "round", - "boundElements": [], - "updated": 1662376884761, - "link": null, - "locked": false, - "startBinding": null, - "endBinding": null, - "lastCommittedPoint": null, - "startArrowhead": null, - "endArrowhead": null, - "points": [ - [ - 0, - 0 - ], - [ - -10.296989190345768, - -2.7467411689925427 - ], - [ - -14.193104578778739, - -7.075372217895264 - ], - [ - -17.12757102104723, - -14.809660495943007 - ], - [ - -16.25366056491633, - -32.74417995752738 - ], - [ - -13.10830588800304, - -40.96408323021325 - ], - [ - -4.822598747791973, - -50.77138635998338 - ], - [ - 6.5787372689089665, - -58.089337955123625 - ], - [ - 11.885336623122425, - -57.994755862867336 - ] - ] - }, - { - "type": "line", - "version": 637, - "versionNonce": 259260582, - "isDeleted": false, - "id": "BDtRB2MzcmTx5Hgz-V5ax", - "fillStyle": "solid", - "strokeWidth": 4, - "strokeStyle": "solid", - "roughness": 1, - "opacity": 100, - "angle": 0, - "x": 360.2004225510271, - "y": 246.95648206020837, - "strokeColor": "black", - "backgroundColor": "black", - "width": 87.3743402045856, - "height": 60.07029758310275, - "seed": 1028754227, - "groupIds": [ - "Cy3KZUF141Ea66DHXydV1" - ], - "strokeSharpness": "round", - "boundElements": [], - "updated": 1662376884761, - "link": null, - "locked": false, - "startBinding": null, - "endBinding": null, - "lastCommittedPoint": null, - "startArrowhead": null, - "endArrowhead": null, - "points": [ - [ - 0, - 0 - ], - [ - -6.025598732340979, - -21.1279197356401 - ], - [ - -6.406945305423115, - -32.67742851430983 - ], - [ - -3.549899306760304, - -39.69384046690258 - ], - [ - 5.705739293074423, - -50.91185568252725 - ], - [ - 16.1726603909173, - -56.94256079498816 - ], - [ - 26.503200779851944, - -59.91466704948113 - ], - [ - 45.020163433675535, - -60.07029758310275 - ], - [ - 63.567132651090674, - -55.907860782021665 - ], - [ - 68.71201242047414, - -52.3039496607967 - ], - [ - 80.96739489916247, - -31.279192841738087 - ] - ] - }, - { - "type": "line", - "version": 613, - "versionNonce": 1380336826, - "isDeleted": false, - "id": "3e7pQ8RjxCYV31m-LfEZK", - "fillStyle": "solid", - "strokeWidth": 4, - "strokeStyle": "solid", - "roughness": 1, - "opacity": 100, - "angle": 0, - "x": 440.39398966562135, - "y": 214.77545838538146, - "strokeColor": "black", - "backgroundColor": "black", - "width": 69.02941518201982, - "height": 34.30764475453057, - "seed": 583415165, - "groupIds": [ - "Cy3KZUF141Ea66DHXydV1" - ], - "strokeSharpness": "round", - "boundElements": [], - "updated": 1662376884761, - "link": null, - "locked": false, - "startBinding": null, - "endBinding": null, - "lastCommittedPoint": null, - "startArrowhead": null, - "endArrowhead": null, - "points": [ - [ - 0, - 0 - ], - [ - 10.083433705603934, - -6.510757486830897 - ], - [ - 24.319495049103143, - -9.086233123277818 - ], - [ - 54.3109325249198, - -5.877671638144303 - ], - [ - 65.34260873541108, - 1.8844999320361318 - ], - [ - 69.02941518201982, - 25.221411631252746 - ] - ] - }, - { - "type": "line", - "version": 649, - "versionNonce": 263781350, - "isDeleted": false, - "id": "gtGUk5ADqPSYCmPJoRdko", - "fillStyle": "solid", - "strokeWidth": 4, - "strokeStyle": "solid", - "roughness": 1, - "opacity": 100, - "angle": 0, - "x": 527.0558925996764, - "y": 306.9861957034516, - "strokeColor": "black", - "backgroundColor": "black", - "width": 45.23585973757425, - "height": 72.2376608085893, - "seed": 2080353491, - "groupIds": [ - "Cy3KZUF141Ea66DHXydV1" - ], - "strokeSharpness": "round", - "boundElements": [], - "updated": 1662376884761, - "link": null, - "locked": false, - "startBinding": null, - "endBinding": null, - "lastCommittedPoint": null, - "startArrowhead": null, - "endArrowhead": null, - "points": [ - [ - 0, - 0 - ], - [ - 16.245939577793376, - -8.789817408548252 - ], - [ - 27.277124452740487, - -21.062607203659148 - ], - [ - 30.846396418100213, - -32.47282235555152 - ], - [ - 30.85453854997536, - -48.791269021508704 - ], - [ - 25.221025581896626, - -61.49790810213788 - ], - [ - 14.423716425983113, - -70.51089713393569 - ], - [ - 3.3780020570864284, - -72.23766080858931 - ], - [ - -9.197380242452413, - -69.04397977136546 - ], - [ - -14.381321187598894, - -65.757015171538 - ] - ] - }, - { - "type": "line", - "version": 464, - "versionNonce": 558996858, - "isDeleted": false, - "id": "NthltWo1RmoHdn5C8gHjZ", - "fillStyle": "cross-hatch", - "strokeWidth": 2, - "strokeStyle": "solid", - "roughness": 1, - "opacity": 100, - "angle": 0, - "x": 438.9134165238899, - "y": 215.86291312152872, - "strokeColor": "#000000", - "backgroundColor": "black", - "width": 90.68346509750657, - "height": 88.44483190099747, - "seed": 1892260829, - "groupIds": [ - "9wXTiErT68Cqf6y0xR_9_", - "M7epUKFIsRBu-b5nc04_q" - ], - "strokeSharpness": "sharp", - "boundElements": [], - "updated": 1662376884761, - "link": null, - "locked": false, - "lastCommittedPoint": null, - "startArrowhead": null, - "endArrowhead": null, - "points": [ - [ - 0, - 0 - ], - [ - 0, - 0 - ], - [ - -2.333004985917512, - 0.058997671849454036 - ], - [ - -4.635414563912775, - 0.23409153110242187 - ], - [ - -6.904379999542982, - 0.5224328433152432 - ], - [ - -9.137049845283855, - 0.9211728740447143 - ], - [ - -11.330572653611853, - 1.4274628464555406 - ], - [ - -13.482099690083372, - 2.038454153279929 - ], - [ - -15.588776794094258, - 2.7512978905071748 - ], - [ - -17.6477552312013, - 3.5631454932610893 - ], - [ - -19.656186266960788, - 4.471148057530878 - ], - [ - -21.611215740768728, - 5.472456848873321 - ], - [ - -23.5099962747218, - 6.564223471979915 - ], - [ - -25.349675064756244, - 7.743598853272028 - ], - [ - -27.127402019888166, - 9.007734258306755 - ], - [ - -28.840325692593808, - 10.35378095264036 - ], - [ - -30.485595991889852, - 11.778890201829537 - ], - [ - -32.06036147025219, - 13.280213949701132 - ], - [ - -33.561773393237395, - 14.854902105271375 - ], - [ - -34.98697963505134, - 16.500107290637125 - ], - [ - -36.33312942644136, - 18.21297941481486 - ], - [ - -37.59737267642265, - 19.99067109990125 - ], - [ - -38.77685861574224, - 21.830332254913003 - ], - [ - -39.86873579687597, - 23.729116858486606 - ], - [ - -40.870154467975624, - 25.684173463098837 - ], - [ - -41.778263520651876, - 27.692653334306016 - ], - [ - -42.59021218565141, - 29.751707737664752 - ], - [ - -43.303150032855854, - 31.858490651811962 - ], - [ - -43.91422629301104, - 34.01015062922437 - ], - [ - -44.420590196863365, - 36.20383893545793 - ], - [ - -44.819391102334805, - 38.43670683606979 - ], - [ - -45.1077783037594, - 40.705908309696575 - ], - [ - -45.28290113786346, - 43.00859190881471 - ], - [ - -45.34190889898064, - 45.34190889898089 - ], - [ - -45.30409009989871, - 47.21091473183959 - ], - [ - -45.19160633138682, - 49.06066583294157 - ], - [ - -45.0059165259467, - 50.88969985193921 - ], - [ - -44.74847965847283, - 52.69656257772587 - ], - [ - -44.420754592579954, - 54.479794373034586 - ], - [ - -44.02420041444127, - 56.23793560059818 - ], - [ - -43.56027595587847, - 57.96953204931015 - ], - [ - -43.030440006320134, - 59.67312408190335 - ], - [ - -42.436151948683005, - 61.34725206111081 - ], - [ - -41.77887023326156, - 62.99046177582626 - ], - [ - -41.060054158187256, - 64.60129358878184 - ], - [ - -40.281162682457605, - 66.17828243655016 - ], - [ - -38.54898834761566, - 69.22492524442087 - ], - [ - -36.594019239847, - 72.11872395362188 - ], - [ - -34.42792703112879, - 74.84801774449969 - ], - [ - -32.062382715166734, - 77.40113494507605 - ], - [ - -29.509057963937888, - 79.76641473569669 - ], - [ - -26.779625805958972, - 81.93219629670706 - ], - [ - -23.88575520012625, - 83.88681338229053 - ], - [ - -20.839119174956807, - 85.61859974663234 - ], - [ - -19.26216288415355, - 86.39728638479001 - ], - [ - -17.651390758966954, - 87.11589457007697 - ], - [ - -16.00826243666456, - 87.77295923906482 - ], - [ - -14.334237554512896, - 88.36702618064737 - ], - [ - -13.550545282976657, - 88.44290018773684 - ], - [ - -12.894221284943626, - 88.37164926968703 - ], - [ - -12.35821697747815, - 88.17705086331902 - ], - [ - -11.935478351481443, - 87.88286612697115 - ], - [ - -11.618954110936556, - 87.51287249746414 - ], - [ - -11.401598385986603, - 87.09083655929666 - ], - [ - -11.2763544544528, - 86.64053032312967 - ], - [ - -11.236173733399276, - 86.18572037346115 - ], - [ - -11.238029480408088, - 85.66800494112226 - ], - [ - -11.24308394923463, - 84.94340084810192 - ], - [ - -11.250574764280728, - 84.03857767495202 - ], - [ - -11.259731410705626, - 82.98017787141877 - ], - [ - -11.269788799831183, - 81.79485473957058 - ], - [ - -11.2799791298972, - 80.50927243379788 - ], - [ - -11.297692831974189, - 77.74392180410848 - ], - [ - -12.45136788069647, - 77.9698942724798 - ], - [ - -13.548060101309659, - 78.13584254958863 - ], - [ - -14.58910704246193, - 78.2452393783757 - ], - [ - -15.57583811356044, - 78.3015357971376 - ], - [ - -16.509596289413995, - 78.30821540113732 - ], - [ - -17.391710979429376, - 78.26872922867169 - ], - [ - -19.006354670378716, - 78.06514509994508 - ], - [ - -20.4304505840305, - 77.71851109287377 - ], - [ - -21.674680118006513, - 77.25655488937309 - ], - [ - -22.74972331339023, - 76.70700959751964 - ], - [ - -23.666258854723083, - 76.09758662074707 - ], - [ - -24.434968139627653, - 75.45602449329205 - ], - [ - -25.066532565726916, - 74.81005089707034 - ], - [ - -25.57162946102204, - 74.18738266167597 - ], - [ - -25.96094157967604, - 73.6157528951853 - ], - [ - -26.245148962770763, - 73.12288927951428 - ], - [ - -26.434930294849266, - 72.73651407041748 - ], - [ - -26.54096697353316, - 72.48436037597111 - ], - [ - -26.573939039904985, - 72.39414502576972 - ], - [ - -26.970371638127297, - 71.45595638958659 - ], - [ - -27.38243157958182, - 70.60434757583923 - ], - [ - -27.804430891163236, - 69.83573189220905 - ], - [ - -28.230687025927477, - 69.1465117940564 - ], - [ - -28.65551472384932, - 68.53308973674125 - ], - [ - -29.073226011823234, - 67.99187360178422 - ], - [ - -29.478138342905083, - 67.5192604183851 - ], - [ - -29.8645664570704, - 67.11166349422496 - ], - [ - -30.55922492492941, - 66.47712281890276 - ], - [ - -31.111719335201855, - 66.05949292334141 - ], - [ - -31.320443394788477, - 65.92303040426167 - ], - [ - -31.476570320768527, - 65.8300097289038 - ], - [ - -31.574416209657507, - 65.776833352627 - ], - [ - -31.60829444489064, - 65.75990373079227 - ], - [ - -32.28272554166148, - 65.26516808962968 - ], - [ - -32.77604631138382, - 64.83344645435486 - ], - [ - -33.10724424739261, - 64.4604521579007 - ], - [ - -33.29530277340284, - 64.1418931070391 - ], - [ - -33.3592093827495, - 63.87348263470288 - ], - [ - -33.31795021222773, - 63.65092864766367 - ], - [ - -33.190511398632616, - 63.46992820037207 - ], - [ - -32.99588043529974, - 63.32620547808253 - ], - [ - -32.480979823898714, - 63.13340855711486 - ], - [ - -31.92514154200586, - 63.03819571277549 - ], - [ - -31.480251970901577, - 63.00624647772298 - ], - [ - -31.346879650422984, - 63.00326751541921 - ], - [ - -31.298202918026668, - 63.00322410613244 - ], - [ - -30.469796368050595, - 63.10844279106908 - ], - [ - -29.69226821523324, - 63.29589494360499 - ], - [ - -28.965972516569945, - 63.553290309426785 - ], - [ - -28.29126332905571, - 63.8683549127046 - ], - [ - -27.09802342853555, - 64.62234166669808 - ], - [ - -26.115380969633293, - 65.45959285885061 - ], - [ - -25.346171121391023, - 66.28184071626823 - ], - [ - -25.04248924702466, - 66.65663107196228 - ], - [ - -24.793227696308843, - 66.99082289221691 - ], - [ - -24.598740526237915, - 67.2721313488808 - ], - [ - -24.45938315034795, - 67.48827161380174 - ], - [ - -24.375508269093473, - 67.62696428498823 - ], - [ - -24.34747265254968, - 67.67592453428857 - ], - [ - -23.56128977318537, - 68.87332087401585 - ], - [ - -22.725578254172152, - 69.87560874825559 - ], - [ - -21.849852868551064, - 70.69711322163771 - ], - [ - -20.943627032822803, - 71.35216478495222 - ], - [ - -20.016415520028026, - 71.85509392898992 - ], - [ - -19.077733103208118, - 72.22023114454112 - ], - [ - -18.13708912924295, - 72.46190149623564 - ], - [ - -17.20400108425366, - 72.59444090102478 - ], - [ - -16.28798102820094, - 72.63216899737691 - ], - [ - -15.398546447206176, - 72.58942712840428 - ], - [ - -14.545209401229595, - 72.48053493257578 - ], - [ - -13.737481950231828, - 72.31982290068227 - ], - [ - -12.984878867253943, - 72.12162152351334 - ], - [ - -12.296914925336747, - 71.90026129185998 - ], - [ - -11.683104897520995, - 71.6700726965127 - ], - [ - -11.152960843767687, - 71.44538080210074 - ], - [ - -10.965647058333275, - 70.38979717604575 - ], - [ - -10.713873195146164, - 69.4207553893005 - ], - [ - -10.405222313986727, - 68.53750663166868 - ], - [ - -10.047282900795892, - 67.73931294527466 - ], - [ - -9.64763801535355, - 67.02543094608372 - ], - [ - -9.2138707174405, - 66.39512267622005 - ], - [ - -8.753564066836699, - 65.84763932548769 - ], - [ - -8.274306549483242, - 65.38224836217267 - ], - [ - -10.165928620742303, - 65.13247132617632 - ], - [ - -12.053388826633455, - 64.8027126793317 - ], - [ - -13.920422250025517, - 64.37723112902806 - ], - [ - -15.750761260705929, - 63.84029080881645 - ], - [ - -17.528140941544, - 63.176144999926436 - ], - [ - -19.236299088487897, - 62.36906326206916 - ], - [ - -20.858970784406484, - 61.40330430263523 - ], - [ - -22.37988839908751, - 60.26312682901367 - ], - [ - -23.782788371940228, - 58.93278954859515 - ], - [ - -25.051405785832635, - 57.396556594930246 - ], - [ - -25.630275407429906, - 56.54630974755478 - ], - [ - -26.169475723632893, - 55.63868124924807 - ], - [ - -26.666971924125107, - 54.67171768210642 - ], - [ - -27.120731911669928, - 53.64343849742101 - ], - [ - -27.528723589031245, - 52.55187942496687 - ], - [ - -27.888912145892334, - 51.3950761945178 - ], - [ - -28.199265485016838, - 50.17105910968724 - ], - [ - -28.457748796088204, - 48.8778639002498 - ], - [ - -28.662331338410123, - 47.51351544365743 - ], - [ - -28.81097965820635, - 46.07605489584565 - ], - [ - -28.901658945159966, - 44.56350713426758 - ], - [ - -28.932337102034978, - 42.97391060177688 - ], - [ - -28.85056214502714, - 41.1599857276509 - ], - [ - -28.610249690084114, - 39.43049462934655 - ], - [ - -28.21892446575663, - 37.7850249186397 - ], - [ - -27.684105774435523, - 36.2231642073059 - ], - [ - -27.01331698813141, - 34.744500107121155 - ], - [ - -26.214080122315465, - 33.348617516780905 - ], - [ - -25.293915835917574, - 32.03510676114149 - ], - [ - -24.260347500949536, - 30.80355273889771 - ], - [ - -24.360051849927515, - 30.549179744666333 - ], - [ - -24.477631329268153, - 30.216181679797106 - ], - [ - -24.605620898188874, - 29.807249920069406 - ], - [ - -24.736558228988592, - 29.325070415101326 - ], - [ - -24.862979637425155, - 28.772331827591074 - ], - [ - -24.97742415233773, - 28.151722820237268 - ], - [ - -25.072426732944386, - 27.465934768818673 - ], - [ - -25.140523695003193, - 26.71765090987321 - ], - [ - -25.174254067353225, - 25.9095626191791 - ], - [ - -25.1661541657524, - 25.0443585594357 - ], - [ - -25.10875894941915, - 24.124727393340915 - ], - [ - -24.99460744719204, - 23.15335507051305 - ], - [ - -24.81623597482986, - 22.132932966730667 - ], - [ - -24.566182204630604, - 21.06614703161219 - ], - [ - -24.236981095812496, - 19.955687284396248 - ], - [ - -23.82117032067407, - 18.804242387781017 - ], - [ - -23.77629597048974, - 18.791987403513843 - ], - [ - -23.640643305916058, - 18.763334561173963 - ], - [ - -23.412678079974967, - 18.73044660029538 - ], - [ - -23.09086197606615, - 18.705487616950567 - ], - [ - -22.673655321050713, - 18.70062170721326 - ], - [ - -22.159521154869083, - 18.72801161061622 - ], - [ - -21.54692387400189, - 18.799821423233112 - ], - [ - -20.83432244877036, - 18.92821659767702 - ], - [ - -20.020181275654238, - 19.12535851694082 - ], - [ - -19.102964751135296, - 19.403411277098115 - ], - [ - -18.081129132452986, - 19.77454033076188 - ], - [ - -16.953141529168928, - 20.250908417465496 - ], - [ - -15.717460911603098, - 20.844679633282226 - ], - [ - -14.372554389317028, - 21.56801807428534 - ], - [ - -12.916880932630704, - 22.43308648000763 - ], - [ - -11.348899511864204, - 23.45204894652275 - ], - [ - -8.59178850741722, - 22.79211655152841 - ], - [ - -5.763263800095671, - 22.318812889161563 - ], - [ - -2.8903313924218423, - 22.03073665338438 - ], - [ - -5.329070518200751e-15, - 21.92648789469881 - ], - [ - 2.890887573908456, - 22.03073665338458 - ], - [ - 5.765575344615284, - 22.31881288916172 - ], - [ - 8.597190250538347, - 22.792116551528352 - ], - [ - 11.358861943174986, - 23.452048946522723 - ], - [ - 12.924965912288997, - 22.433086480007674 - ], - [ - 14.37887857978103, - 21.56801807428532 - ], - [ - 15.722146401492719, - 20.844679633282134 - ], - [ - 16.956304980941468, - 20.250908417465492 - ], - [ - 18.082889921647308, - 19.774540330761795 - ], - [ - 19.103442253289927, - 19.403411277097927 - ], - [ - 20.01949215322719, - 19.12535851694082 - ], - [ - 20.832591503461117, - 18.92821659767688 - ], - [ - 21.544270481349397, - 18.79982142323301 - ], - [ - 22.156064690411192, - 18.728011610616132 - ], - [ - 22.669520586487415, - 18.700621707213216 - ], - [ - 23.086168346935864, - 18.705487616950517 - ], - [ - 23.407549001436678, - 18.73044660029521 - ], - [ - 23.63520357966982, - 18.763334561174112 - ], - [ - 23.770667685153825, - 18.791987403513545 - ], - [ - 23.81548234756883, - 18.8042423877812 - ], - [ - 24.2323471544515, - 19.955687284396205 - ], - [ - 24.562458501751053, - 21.066147031612143 - ], - [ - 24.81328821295125, - 22.132932966730763 - ], - [ - 24.99230268537377, - 23.1533550705131 - ], - [ - 25.10699002098392, - 24.12472739334082 - ], - [ - 25.164811190943627, - 25.044358559435736 - ], - [ - 25.173248871056757, - 25.909562619179177 - ], - [ - 25.139769458645844, - 26.71765090987296 - ], - [ - 25.071855629515515, - 27.465934768818585 - ], - [ - 24.976979207148528, - 28.151722820237225 - ], - [ - 24.862606588867294, - 28.772331827591067 - ], - [ - 24.73622045047597, - 29.325070415101298 - ], - [ - 24.605292615457984, - 29.807249920069527 - ], - [ - 24.4772949072958, - 30.216181679797213 - ], - [ - 24.35970457563374, - 30.549179744666205 - ], - [ - 24.259993443954357, - 30.80355273889773 - ], - [ - 25.295153000590272, - 32.03509048265879 - ], - [ - 26.215538403042387, - 33.34856596825297 - ], - [ - 27.013976266674263, - 34.74440514930622 - ], - [ - 27.683309485331918, - 36.22303126636527 - ], - [ - 28.216370100539216, - 37.784870273055546 - ], - [ - 28.605995579981908, - 39.43034540992336 - ], - [ - 28.84502339134516, - 41.15988534367513 - ], - [ - 28.92629642847487, - 42.973910601776694 - ], - [ - 28.895557227290276, - 44.56710196582689 - ], - [ - 28.804707016270182, - 46.08271279520211 - ], - [ - 28.655775179569815, - 47.522734490932336 - ], - [ - 28.45080195366723, - 48.88915031480646 - ], - [ - 28.191816722717704, - 50.18396252017577 - ], - [ - 27.880859723199023, - 51.40915165574849 - ], - [ - 27.519971191589214, - 52.56670912255498 - ], - [ - 27.111175085882792, - 53.65862089546448 - ], - [ - 26.656517068718188, - 54.68688922782765 - ], - [ - 26.15803195041187, - 55.6534946683537 - ], - [ - 25.61774911512035, - 56.56042319191131 - ], - [ - 25.037708799320793, - 57.40967705185223 - ], - [ - 23.76650039362528, - 58.943088401878114 - ], - [ - 22.360685215859174, - 60.269659926670556 - ], - [ - 20.836558027038624, - 61.40530112982597 - ], - [ - 19.210391883535696, - 62.36592694110141 - ], - [ - 17.49848154636809, - 63.16746856873621 - ], - [ - 15.717110924228798, - 63.8258355163267 - ], - [ - 13.882569351974272, - 64.35695356595213 - ], - [ - 12.011135312137124, - 64.77673764736849 - ], - [ - 10.119098139573655, - 65.1011026903341 - ], - [ - 8.222747169138643, - 65.3459744769268 - ], - [ - 8.821784474054883, - 65.9372795026398 - ], - [ - 9.38931206294702, - 66.65675044750077 - ], - [ - 9.910429698135601, - 67.50577640868642 - ], - [ - 10.370220863459341, - 68.48573563105079 - ], - [ - 10.753785321238809, - 69.59801721177008 - ], - [ - 11.04621740763395, - 70.84399939569968 - ], - [ - 11.232606032644124, - 72.22507128001452 - ], - [ - 11.298050958590181, - 73.74261110957016 - ], - [ - 11.295788249518004, - 75.95781956971322 - ], - [ - 11.289824898749941, - 78.0362019580002 - ], - [ - 11.28139807095829, - 79.95190804416767 - ], - [ - 11.271734078494156, - 81.67909302411292 - ], - [ - 11.262075512190961, - 83.19191209373369 - ], - [ - 11.253643258238341, - 84.46452044892717 - ], - [ - 11.250279038514755, - 85.0026708030071 - ], - [ - 11.247679907470172, - 85.47107328559076 - ], - [ - 11.246014076090944, - 85.86649933097648 - ], - [ - 11.245422624558962, - 86.18572037346107 - ], - [ - 11.28497933711595, - 86.6438728382097 - ], - [ - 11.408858589196662, - 87.09724485525413 - ], - [ - 11.624863200096293, - 87.52161946874517 - ], - [ - 11.940812267591973, - 87.89277972283388 - ], - [ - 12.364514037138463, - 88.18651408783217 - ], - [ - 12.903771328030345, - 88.3786001817291 - ], - [ - 13.566392385722963, - 88.44483190099747 - ], - [ - 14.36019630799386, - 88.3609814374666 - ], - [ - 16.033271611997627, - 87.76631761819101 - ], - [ - 17.675412373026205, - 87.10872661160145 - ], - [ - 19.28517523229533, - 86.38966805496428 - ], - [ - 20.861089700216496, - 85.61059615938672 - ], - [ - 23.905589174553683, - 83.87823462199562 - ], - [ - 26.797277107186517, - 81.92329739292207 - ], - [ - 29.524503530781946, - 79.75741816101691 - ], - [ - 32.075640182650375, - 77.39225231977368 - ], - [ - 34.4390479477797, - 74.83943898420443 - ], - [ - 36.60308771115888, - 72.11063354780316 - ], - [ - 38.55612035777557, - 69.21748055174206 - ], - [ - 40.286512198780315, - 66.17161911103315 - ], - [ - 41.06457482844087, - 64.59506978229311 - ], - [ - 41.78261326683901, - 62.984704619169946 - ], - [ - 42.439173302868426, - 61.34198868509172 - ], - [ - 43.032795299262034, - 59.66838161732542 - ], - [ - 43.562030471074166, - 57.9653267746557 - ], - [ - 44.025424607198474, - 56.2342892205107 - ], - [ - 44.42151264420724, - 54.47672316599658 - ], - [ - 44.748845797154615, - 52.69408824838088 - ], - [ - 45.00597528109472, - 50.88782782644792 - ], - [ - 45.191441458761766, - 49.05941238978664 - ], - [ - 45.303784692887, - 47.210285297181684 - ], - [ - 45.341556198525915, - 45.34190889898056 - ], - [ - 45.282557551663245, - 43.00859190881458 - ], - [ - 45.107455341209516, - 40.70590830969657 - ], - [ - 44.81910372776957, - 38.43670683606979 - ], - [ - 44.42035144578648, - 36.203838935457924 - ], - [ - 43.91404722970327, - 34.01015062922436 - ], - [ - 43.3030452401247, - 31.85849065181214 - ], - [ - 42.59018335917233, - 29.751707737664702 - ], - [ - 41.77831574745031, - 27.6926533343059 - ], - [ - 40.87029656556285, - 25.684173463098794 - ], - [ - 39.868963695631855, - 23.72911685848659 - ], - [ - 38.77718215058297, - 21.83033225491276 - ], - [ - 37.59778981253794, - 19.990671099901334 - ], - [ - 36.33363541594019, - 18.21297941481484 - ], - [ - 34.98757312139429, - 16.500107290637203 - ], - [ - 33.56245166334301, - 14.854902105271293 - ], - [ - 32.061119776230214, - 13.280213949701235 - ], - [ - 30.486426194499078, - 11.778890201829531 - ], - [ - 28.841214226432328, - 10.353780952640255 - ], - [ - 27.128343458794912, - 9.007734258306655 - ], - [ - 25.350657199869232, - 7.743598853272244 - ], - [ - 23.511009610259862, - 6.5642234719797585 - ], - [ - 21.61223857208779, - 5.472456848873151 - ], - [ - 19.65720367211924, - 4.471148057530829 - ], - [ - 17.64875364479667, - 3.5631454932609756 - ], - [ - 15.589731798402966, - 2.751297890507118 - ], - [ - 13.482992293542509, - 2.038454153279929 - ], - [ - 11.331383864658108, - 1.4274628464554961 - ], - [ - 9.137749820032752, - 0.9211728740447716 - ], - [ - 6.904949746431896, - 0.5224328433151588 - ], - [ - 4.635821525976269, - 0.23409153110225134 - ], - [ - 2.3332247454316644, - 0.058997671849483124 - ], - [ - 0, - 0 - ] - ] - }, - { - "type": "line", - "version": 461, - "versionNonce": 205295398, - "isDeleted": false, - "id": "jo_HsTUFmAuaQhr0bKQYK", - "fillStyle": "cross-hatch", - "strokeWidth": 2, - "strokeStyle": "solid", - "roughness": 1, - "opacity": 100, - "angle": 0, - "x": 409.9910689730186, - "y": 280.35433772462017, - "strokeColor": "#000000", - "backgroundColor": "black", - "width": 1.2433247216556111, - "height": 0.9736323188196985, - "seed": 252992627, - "groupIds": [ - "5H1W_moj_Sm0BoAw7Fq0S", - "M7epUKFIsRBu-b5nc04_q" - ], - "strokeSharpness": "sharp", - "boundElements": [], - "updated": 1662376884761, - "link": null, - "locked": false, - "lastCommittedPoint": null, - "startArrowhead": null, - "endArrowhead": null, - "points": [ - [ - 0, - 0 - ], - [ - 0, - 0 - ], - [ - -0.1180569814948198, - 0.13828028296244899 - ], - [ - -0.3048905516942879, - 0.21145206195117172 - ], - [ - -0.5335299781205629, - 0.21348144610703637 - ], - [ - -0.777005884836039, - 0.13832911841005657 - ], - [ - -0.994399592911992, - 0.0012642954767824732 - ], - [ - -1.1439500119485713, - -0.17300228620670577 - ], - [ - -1.211820431792167, - -0.3619466329746887 - ], - [ - -1.1841782119098339, - -0.5430176203572481 - ], - [ - -1.0670599562411194, - -0.6847380892951416 - ], - [ - -0.880132784767091, - -0.7587834801798348 - ], - [ - -0.6499984510281438, - -0.7601508727126616 - ], - [ - -0.40326142164508727, - -0.6838373465949452 - ], - [ - -0.18512839915406332, - -0.5465337725845147 - ], - [ - -0.035206288099637134, - -0.3713881528442098 - ], - [ - 0.03150428986344346, - -0.18151050641095878 - ], - [ - 0, - 0 - ] - ] - }, - { - "type": "line", - "version": 464, - "versionNonce": 1324604986, - "isDeleted": false, - "id": "dYxOARM8QmbX1qbxsLmaX", - "fillStyle": "cross-hatch", - "strokeWidth": 2, - "strokeStyle": "solid", - "roughness": 1, - "opacity": 100, - "angle": 0, - "x": 412.22144762234365, - "y": 282.3443225265891, - "strokeColor": "#000000", - "backgroundColor": "black", - "width": 1.3174867749984642, - "height": 1.3444452986143876, - "seed": 1615075389, - "groupIds": [ - "5H1W_moj_Sm0BoAw7Fq0S", - "M7epUKFIsRBu-b5nc04_q" - ], - "strokeSharpness": "sharp", - "boundElements": [], - "updated": 1662376884761, - "link": null, - "locked": false, - "lastCommittedPoint": null, - "startArrowhead": null, - "endArrowhead": null, - "points": [ - [ - 0, - 0 - ], - [ - 0, - 0 - ], - [ - -0.19554662797559091, - 0.09644458285098789 - ], - [ - -0.4364654563930879, - 0.08930375517955805 - ], - [ - -0.6906539611559186, - -0.014851402231530919 - ], - [ - -0.9260055485469003, - -0.2094498085995406 - ], - [ - -1.1027044068289547, - -0.46141358741610194 - ], - [ - -1.1858223386457292, - -0.7227754768154195 - ], - [ - -1.1721931791444442, - -0.9630675836553646 - ], - [ - -1.0586480503918605, - -1.1518165886329488 - ], - [ - -0.8610354116747114, - -1.2480007157633999 - ], - [ - -0.6213822352742093, - -1.2406753986232584 - ], - [ - -0.36779467782491176, - -1.1364659796037238 - ], - [ - -0.12837482634073188, - -0.9420086534176733 - ], - [ - 0.04855193069680286, - -0.6883953217043643 - ], - [ - 0.13166443635273417, - -0.4269520398923845 - ], - [ - 0.11676148559318644, - -0.18744130021405336 - ], - [ - -0.00035541353531609593, - 0.00035812661574397003 - ] - ] - }, - { - "type": "line", - "version": 464, - "versionNonce": 829143654, - "isDeleted": false, - "id": "bEK86T7KAoWtz-X7SrDxa", - "fillStyle": "cross-hatch", - "strokeWidth": 2, - "strokeStyle": "solid", - "roughness": 1, - "opacity": 100, - "angle": 0, - "x": 413.7516331197485, - "y": 284.89048338896254, - "strokeColor": "#000000", - "backgroundColor": "black", - "width": 1.434260469453551, - "height": 1.6271265739719378, - "seed": 1205229075, - "groupIds": [ - "5H1W_moj_Sm0BoAw7Fq0S", - "M7epUKFIsRBu-b5nc04_q" - ], - "strokeSharpness": "sharp", - "boundElements": [], - "updated": 1662376884761, - "link": null, - "locked": false, - "lastCommittedPoint": null, - "startArrowhead": null, - "endArrowhead": null, - "points": [ - [ - 0, - 0 - ], - [ - 0, - 0 - ], - [ - -0.23616415497744653, - 0.07705148399258024 - ], - [ - -0.5056313721383141, - 0.02804782540547271 - ], - [ - -0.775566595672025, - -0.13276730354438726 - ], - [ - -1.013130700147375, - -0.39117193528343286 - ], - [ - -1.1692589826677473, - -0.7026932555297591 - ], - [ - -1.2206732132100502, - -1.0097488454010062 - ], - [ - -1.1668036448855883, - -1.2776004231703995 - ], - [ - -1.007084600426337, - -1.471509707111153 - ], - [ - -0.7699166056926503, - -1.5500750899793587 - ], - [ - -0.5014098190012602, - -1.503958148961555 - ], - [ - -0.23236855546669133, - -1.3464909612527833 - ], - [ - 0.0064001567161460216, - -1.091005604048103 - ], - [ - 0.16231817550379907, - -0.7753115661123307 - ], - [ - 0.21358725624350144, - -0.4657165329658213 - ], - [ - 0.1595738946566687, - -0.19592238961407737 - ], - [ - -0.0003567700755144898, - 0.0003581266157421937 - ] - ] - }, - { - "type": "line", - "version": 463, - "versionNonce": 940574458, - "isDeleted": false, - "id": "vVApp1Sr2fU7Tf4qWyRaR", - "fillStyle": "cross-hatch", - "strokeWidth": 2, - "strokeStyle": "solid", - "roughness": 1, - "opacity": 100, - "angle": 0, - "x": 416.33904365685993, - "y": 287.8395475463658, - "strokeColor": "#000000", - "backgroundColor": "black", - "width": 1.6720212722595122, - "height": 1.6435786936526044, - "seed": 133171357, - "groupIds": [ - "5H1W_moj_Sm0BoAw7Fq0S", - "M7epUKFIsRBu-b5nc04_q" - ], - "strokeSharpness": "sharp", - "boundElements": [], - "updated": 1662376884761, - "link": null, - "locked": false, - "lastCommittedPoint": null, - "startArrowhead": null, - "endArrowhead": null, - "points": [ - [ - 0, - 0 - ], - [ - 0, - 0 - ], - [ - -0.23244045209787775, - 0.14100964186726195 - ], - [ - -0.5305238850126699, - 0.15620289223199352 - ], - [ - -0.854678664245311, - 0.049909827448146926 - ], - [ - -1.1653317987565028, - -0.17353404996946692 - ], - [ - -1.4077401083258199, - -0.470231098788483 - ], - [ - -1.536098656184013, - -0.7870971874666889 - ], - [ - -1.5434375387262556, - -1.0868220340369634 - ], - [ - -1.4227922785085934, - -1.332111635014728 - ], - [ - -1.1881623705099338, - -1.47296934437834 - ], - [ - -0.8878230112240129, - -1.48737580142061 - ], - [ - -0.5614123056202519, - -1.380768019307789 - ], - [ - -0.2485724282887194, - -1.1585721588844144 - ], - [ - -0.006345895107694288, - -0.8617286037225949 - ], - [ - 0.12286184692267274, - -0.5440811478827854 - ], - [ - 0.12858373353325622, - -0.2440361578226895 - ], - [ - 0.00035541353532586584, - 0 - ] - ] - }, - { - "type": "line", - "version": 464, - "versionNonce": 370376102, - "isDeleted": false, - "id": "G2tS9Wef41neQfF6rPB2q", - "fillStyle": "cross-hatch", - "strokeWidth": 2, - "strokeStyle": "solid", - "roughness": 1, - "opacity": 100, - "angle": 0, - "x": 419.6831892984356, - "y": 288.83525348750084, - "strokeColor": "#000000", - "backgroundColor": "black", - "width": 1.879079500466814, - "height": 1.4122831614929237, - "seed": 896015283, - "groupIds": [ - "5H1W_moj_Sm0BoAw7Fq0S", - "M7epUKFIsRBu-b5nc04_q" - ], - "strokeSharpness": "sharp", - "boundElements": [], - "updated": 1662376884761, - "link": null, - "locked": false, - "lastCommittedPoint": null, - "startArrowhead": null, - "endArrowhead": null, - "points": [ - [ - 0, - 0 - ], - [ - 0, - 0 - ], - [ - -0.1508174275937666, - 0.2280452618138007 - ], - [ - -0.41468620330328326, - 0.3724082710829882 - ], - [ - -0.7543638721719574, - 0.4219599719154025 - ], - [ - -1.1326161184845205, - 0.36556588225801784 - ], - [ - -1.4799066910180976, - 0.20510887992390536 - ], - [ - -1.7362168246711427, - -0.023294508505632083 - ], - [ - -1.8769768631395554, - -0.2898329553506577 - ], - [ - -1.8776144370387868, - -0.564705985252898 - ], - [ - -1.727844258488009, - -0.7950790700690211 - ], - [ - -1.4635522422326286, - -0.9413412356337876 - ], - [ - -1.1222521512714252, - -0.9903231895775243 - ], - [ - -0.7414441832010825, - -0.9288502133696408 - ], - [ - -0.3945035980419842, - -0.7692668229314972 - ], - [ - -0.13851089479834414, - -0.5419052573841087 - ], - [ - 0.0014650634280251318, - -0.27580090340665464 - ], - [ - 0.00035541353532586584, - 8.881784197001252e-15 - ] - ] - }, - { - "type": "line", - "version": 464, - "versionNonce": 623450042, - "isDeleted": false, - "id": "euKeE09z5Rn7J0q3h5UWn", - "fillStyle": "cross-hatch", - "strokeWidth": 2, - "strokeStyle": "solid", - "roughness": 1, - "opacity": 100, - "angle": 0, - "x": 423.4896248524046, - "y": 289.25735996575924, - "strokeColor": "#000000", - "backgroundColor": "black", - "width": 1.9483797136929517, - "height": 1.352383771929961, - "seed": 1233054973, - "groupIds": [ - "5H1W_moj_Sm0BoAw7Fq0S", - "M7epUKFIsRBu-b5nc04_q" - ], - "strokeSharpness": "sharp", - "boundElements": [], - "updated": 1662376884761, - "link": null, - "locked": false, - "lastCommittedPoint": null, - "startArrowhead": null, - "endArrowhead": null, - "points": [ - [ - 0, - 0 - ], - [ - 0, - 0 - ], - [ - -0.06908587987279091, - 0.2648346323398263 - ], - [ - -0.2739967049258496, - 0.48322675401117055 - ], - [ - -0.5823871303648629, - 0.6327446160826925 - ], - [ - -0.9619199506367375, - 0.6909510434621473 - ], - [ - -1.3440383365510566, - 0.6447038745840685 - ], - [ - -1.6563817201653208, - 0.5039438361156623 - ], - [ - -1.8681078032391394, - 0.29204140281438773 - ], - [ - -1.948379713692951, - 0.03236162327687497 - ], - [ - -1.8734010231430016, - -0.23411713579884663 - ], - [ - -1.6678037887430897, - -0.4528239747991667 - ], - [ - -1.3605908402073403, - -0.6023852461574308 - ], - [ - -0.9807677203302845, - -0.661432728467815 - ], - [ - -0.600089980120206, - -0.6148437114565256 - ], - [ - -0.2882186724994149, - -0.47407282066642104 - ], - [ - -0.07743402833212791, - -0.26162234511985494 - ], - [ - 0, - 0 - ] - ] - }, - { - "type": "line", - "version": 464, - "versionNonce": 1868617958, - "isDeleted": false, - "id": "UF-filpl9RluBeJBGQPYD", - "fillStyle": "cross-hatch", - "strokeWidth": 2, - "strokeStyle": "solid", - "roughness": 1, - "opacity": 100, - "angle": 0, - "x": 427.2284965646142, - "y": 289.1140496316943, - "strokeColor": "#000000", - "backgroundColor": "black", - "width": 1.9259778086462387, - "height": 1.3648530895507331, - "seed": 1139813715, - "groupIds": [ - "5H1W_moj_Sm0BoAw7Fq0S", - "M7epUKFIsRBu-b5nc04_q" - ], - "strokeSharpness": "sharp", - "boundElements": [], - "updated": 1662376884761, - "link": null, - "locked": false, - "lastCommittedPoint": null, - "startArrowhead": null, - "endArrowhead": null, - "points": [ - [ - 0, - 0 - ], - [ - 0, - 0 - ], - [ - -0.029510175753076212, - 0.2710530126676769 - ], - [ - -0.19767232648644747, - 0.5190991033544856 - ], - [ - -0.4783215046077133, - 0.7174090037401603 - ], - [ - -0.8452819102027805, - 0.8392371670219427 - ], - [ - -1.2267220260115081, - 0.8539257844281334 - ], - [ - -1.5577883776198878, - 0.7654956411445409 - ], - [ - -1.8027741135903699, - 0.5912507641044336 - ], - [ - -1.9259778086462376, - 0.34849518024104975 - ], - [ - -1.8959223037282893, - 0.07219507003669512 - ], - [ - -1.7266125199763014, - -0.17820597445663022 - ], - [ - -1.4465547933870848, - -0.3766623811851162 - ], - [ - -1.0842500337966516, - -0.49713943041660075 - ], - [ - -0.6982031074308885, - -0.5109273051225989 - ], - [ - -0.36663212286396174, - -0.4225948327342146 - ], - [ - -0.12280487223381087, - -0.24725387120350417 - ], - [ - 0, - 0 - ] - ] - }, - { - "type": "arrow", - "version": 692, - "versionNonce": 1449267322, - "isDeleted": false, - "id": "7Syn5DvjY3mv9SneA2hDa", - "fillStyle": "cross-hatch", - "strokeWidth": 2, - "strokeStyle": "solid", - "roughness": 2, - "opacity": 90, - "angle": 2.9004652802090014, - "x": 724.4149919536901, - "y": 260.2787493726382, - "strokeColor": "#000000", - "backgroundColor": "transparent", - "width": 228.38375337128218, - "height": 15.970868372722578, - "seed": 2097763325, - "groupIds": [], - "strokeSharpness": "round", - "boundElements": [], - "updated": 1662376884761, - "link": null, - "locked": false, - "startBinding": null, - "endBinding": { - "elementId": "YbM8xe6NaFlLoIbF5ZNkj", - "focus": -0.17179110689191787, - "gap": 13.373552388928942 - }, - "lastCommittedPoint": null, - "startArrowhead": null, - "endArrowhead": "arrow", - "points": [ - [ - 0, - 0 - ], - [ - -228.38375337128218, - -15.970868372722578 - ] - ] - }, - { - "type": "text", - "version": 325, - "versionNonce": 1155583014, - "isDeleted": false, - "id": "XQ_OyjCmixaNfFzBEPv1T", - "fillStyle": "cross-hatch", - "strokeWidth": 2, - "strokeStyle": "solid", - "roughness": 2, - "opacity": 90, - "angle": 6.129944343664711, - "x": 569.9910210639403, - "y": 207.50068931986434, - "strokeColor": "#000000", - "backgroundColor": "transparent", - "width": 127, - "height": 44, - "seed": 1484668851, - "groupIds": [], - "strokeSharpness": "sharp", - "boundElements": [], - "updated": 1662376884761, - "link": null, - "locked": false, - "fontSize": 35.29411764705882, - "fontFamily": 1, - "text": "migrate", - "baseline": 31, - "textAlign": "center", - "verticalAlign": "top", - "containerId": null, - "originalText": "migrate" - }, - { - "type": "rectangle", - "version": 1252, - "versionNonce": 259911994, - "isDeleted": false, - "id": "N3_84v1HAfu3aswREv15n", - "fillStyle": "cross-hatch", - "strokeWidth": 2, - "strokeStyle": "solid", - "roughness": 2, - "opacity": 90, - "angle": 0, - "x": 1235, - "y": 172.00000000000017, - "strokeColor": "#000000", - "backgroundColor": "transparent", - "width": 123.00000000000003, - "height": 116.50000000000004, - "seed": 1718817693, - "groupIds": [], - "strokeSharpness": "sharp", - "boundElements": [], - "updated": 1662376884761, - "link": null, - "locked": false - }, - { - "type": "text", - "version": 1201, - "versionNonce": 612390758, - "isDeleted": false, - "id": "P1FHGZfZVbuyCn1E5w1hV", - "fillStyle": "cross-hatch", - "strokeWidth": 2, - "strokeStyle": "solid", - "roughness": 2, - "opacity": 90, - "angle": 0, - "x": 1237.9999999999995, - "y": 149, - "strokeColor": "#000000", - "backgroundColor": "transparent", - "width": 118, - "height": 24, - "seed": 1462924531, - "groupIds": [], - "strokeSharpness": "sharp", - "boundElements": [], - "updated": 1662376884761, - "link": null, - "locked": false, - "fontSize": 18.800000000000004, - "fontFamily": 1, - "text": "workshop-dev", - "baseline": 17, - "textAlign": "center", - "verticalAlign": "top", - "containerId": null, - "originalText": "workshop-dev" - }, - { - "type": "rectangle", - "version": 1861, - "versionNonce": 601864698, - "isDeleted": false, - "id": "vmk6BUQQhZk-zdA2Oo77A", - "fillStyle": "cross-hatch", - "strokeWidth": 1, - "strokeStyle": "solid", - "roughness": 2, - "opacity": 100, - "angle": 0, - "x": 1266.5835658482142, - "y": 205.415619389886, - "strokeColor": "#5665dc", - "backgroundColor": "#5665dc", - "width": 57.45616947617656, - "height": 53.44025912987806, - "seed": 947888765, - "groupIds": [ - "_0iEyIKCqAnh2J7YUwrlB" - ], - "strokeSharpness": "round", - "boundElements": [], - "updated": 1662376884761, - "link": null, - "locked": false - }, - { - "type": "rectangle", - "version": 1940, - "versionNonce": 1452047014, - "isDeleted": false, - "id": "JGCv3K6aRrwT7DflWeTHf", - "fillStyle": "solid", - "strokeWidth": 1, - "strokeStyle": "solid", - "roughness": 2, - "opacity": 100, - "angle": 0, - "x": 1269.9381426544435, - "y": 208.74060527777488, - "strokeColor": "#5665dc", - "backgroundColor": "#ffffff", - "width": 51.247712989934, - "height": 46.39762056468513, - "seed": 1251971027, - "groupIds": [ - "_0iEyIKCqAnh2J7YUwrlB" - ], - "strokeSharpness": "round", - "boundElements": [ - { - "id": "YGLbIKYvHLJ7195OM_YrC", - "type": "arrow" - } - ], - "updated": 1662376884761, - "link": null, - "locked": false - }, - { - "type": "line", - "version": 2109, - "versionNonce": 42625722, - "isDeleted": false, - "id": "spb2oj8YGHpSNEwpHD2wV", - "fillStyle": "cross-hatch", - "strokeWidth": 1, - "strokeStyle": "solid", - "roughness": 1, - "opacity": 100, - "angle": 1.5774237450700657, - "x": 1301.9722141535574, - "y": 217.96881154394697, - "strokeColor": "#c92a2a", - "backgroundColor": "#fa5252", - "width": 33.32257701070834, - "height": 28.85819083936603, - "seed": 1556105949, - "groupIds": [ - "_0iEyIKCqAnh2J7YUwrlB" - ], - "strokeSharpness": "sharp", - "boundElements": [], - "updated": 1662376884761, - "link": null, - "locked": false, - "lastCommittedPoint": null, - "startArrowhead": null, - "endArrowhead": null, - "points": [ - [ - 0, - 0 - ], - [ - 16.661288505354147, - 28.85819083936598 - ], - [ - -16.6612885053542, - 28.858190839366024 - ], - [ - 0, - 0 - ] - ] - }, - { - "type": "line", - "version": 2478, - "versionNonce": 296891878, - "isDeleted": false, - "id": "SutAG57LVzwzVW-B7pjx2", - "fillStyle": "cross-hatch", - "strokeWidth": 1, - "strokeStyle": "solid", - "roughness": 1, - "opacity": 100, - "angle": 4.721247315744137, - "x": 1292.001511263509, - "y": 218.73806334146855, - "strokeColor": "#5665dc", - "backgroundColor": "#5665dc", - "width": 33.32257701070834, - "height": 28.85819083936603, - "seed": 107224435, - "groupIds": [ - "_0iEyIKCqAnh2J7YUwrlB" - ], - "strokeSharpness": "sharp", - "boundElements": [], - "updated": 1662376884761, - "link": null, - "locked": false, - "lastCommittedPoint": null, - "startArrowhead": null, - "endArrowhead": null, - "points": [ - [ - 0, - 0 - ], - [ - 16.661288505354147, - 28.85819083936598 - ], - [ - -16.6612885053542, - 28.858190839366024 - ], - [ - 0, - 0 - ] - ] - }, - { - "type": "line", - "version": 2799, - "versionNonce": 1109459834, - "isDeleted": false, - "id": "i26NzthkwBlfiUCin9CYI", - "fillStyle": "cross-hatch", - "strokeWidth": 1, - "strokeStyle": "solid", - "roughness": 1, - "opacity": 100, - "angle": 0.0005581869343673773, - "x": 1296.0624601985858, - "y": 245.1701370116595, - "strokeColor": "#5665dc", - "backgroundColor": "#5665dc", - "width": 12.907571670440605, - "height": 13.318824900087934, - "seed": 395110205, - "groupIds": [ - "_0iEyIKCqAnh2J7YUwrlB" - ], - "strokeSharpness": "sharp", - "boundElements": [], - "updated": 1662376884761, - "link": null, - "locked": false, - "lastCommittedPoint": null, - "startArrowhead": null, - "endArrowhead": null, - "points": [ - [ - 0, - 0 - ], - [ - 6.453785835220252, - 13.318824900087908 - ], - [ - -6.453785835220351, - 13.31882490008794 - ], - [ - 0, - 0 - ] - ] - }, - { - "type": "rectangle", - "version": 1814, - "versionNonce": 788433190, - "isDeleted": false, - "id": "2BfNxEEM8p5HYk7WcE_F9", - "fillStyle": "solid", - "strokeWidth": 1, - "strokeStyle": "solid", - "roughness": 2, - "opacity": 100, - "angle": 5.989889724533434, - "x": 1301.980919550926, - "y": 252.81882394751756, - "strokeColor": "#ffffff", - "backgroundColor": "#ffffff", - "width": 4.533179238462011, - "height": 7.2653956832235504, - "seed": 562427667, - "groupIds": [ - "_0iEyIKCqAnh2J7YUwrlB" - ], - "strokeSharpness": "round", - "boundElements": [], - "updated": 1662376884761, - "link": null, - "locked": false - }, - { - "type": "line", - "version": 1738, - "versionNonce": 753304634, - "isDeleted": false, - "id": "5fGV8W9z-RAs_dgD03VyY", - "fillStyle": "cross-hatch", - "strokeWidth": 1, - "strokeStyle": "solid", - "roughness": 1, - "opacity": 100, - "angle": 0, - "x": 1297.093093580768, - "y": 222.20484551634627, - "strokeColor": "#000000", - "backgroundColor": "#000000", - "width": 18.093574283353416, - "height": 21.608910352169588, - "seed": 457635741, - "groupIds": [ - "_0iEyIKCqAnh2J7YUwrlB" - ], - "strokeSharpness": "sharp", - "boundElements": [], - "updated": 1662376884761, - "link": null, - "locked": false, - "lastCommittedPoint": null, - "startArrowhead": null, - "endArrowhead": null, - "points": [ - [ - 0, - 0 - ], - [ - 9.046787141676653, - 5.402227588042349 - ], - [ - 9.046787141676685, - 16.20668276412716 - ], - [ - 0, - 21.60891035216959 - ], - [ - -9.046787141676738, - 16.20668276412703 - ], - [ - -9.046787141676724, - 5.402227588042457 - ], - [ - 0, - 0 - ] - ] - }, - { - "type": "line", - "version": 1576, - "versionNonce": 1574859878, - "isDeleted": false, - "id": "-fAV_aerIzzEWfYYHEKXg", - "fillStyle": "hachure", - "strokeWidth": 2, - "strokeStyle": "solid", - "roughness": 1, - "opacity": 100, - "angle": 0, - "x": 1286.9623124603343, - "y": 225.86946868342477, - "strokeColor": "#ffffff", - "backgroundColor": "#ffffff", - "width": 9.063116136997696, - "height": 6.655277964453662, - "seed": 1518050483, - "groupIds": [ - "_0iEyIKCqAnh2J7YUwrlB" - ], - "strokeSharpness": "round", - "boundElements": [], - "updated": 1662376884761, - "link": null, - "locked": false, - "startBinding": null, - "endBinding": null, - "lastCommittedPoint": null, - "startArrowhead": null, - "endArrowhead": null, - "points": [ - [ - 0, - 0 - ], - [ - 9.063116136997696, - 6.655277964453662 - ] - ] - }, - { - "type": "line", - "version": 1464, - "versionNonce": 1287515386, - "isDeleted": false, - "id": "C0EHFLoMSj-pbdFzB893u", - "fillStyle": "hachure", - "strokeWidth": 1, - "strokeStyle": "solid", - "roughness": 2, - "opacity": 100, - "angle": 0, - "x": 1293.5835666023909, - "y": 231.393259214085, - "strokeColor": "#ffffff", - "backgroundColor": "#ffffff", - "width": 1.938909697019904, - "height": 1.3996974072478967, - "seed": 1377827837, - "groupIds": [ - "_0iEyIKCqAnh2J7YUwrlB" - ], - "strokeSharpness": "round", - "boundElements": [], - "updated": 1662376884761, - "link": null, - "locked": false, - "startBinding": null, - "endBinding": null, - "lastCommittedPoint": null, - "startArrowhead": null, - "endArrowhead": null, - "points": [ - [ - 0, - 0 - ], - [ - 1.938909697019904, - 1.3996974072478967 - ] - ] - }, - { - "type": "line", - "version": 1686, - "versionNonce": 1478424486, - "isDeleted": false, - "id": "hZP-cpVoJirzVS5h4IwGP", - "fillStyle": "hachure", - "strokeWidth": 2, - "strokeStyle": "solid", - "roughness": 1, - "opacity": 100, - "angle": 0, - "x": 1295.7896656391133, - "y": 231.83614969191865, - "strokeColor": "#ffffff", - "backgroundColor": "#ffffff", - "width": 0.41793131176457465, - "height": 12.31899938467562, - "seed": 1558941267, - "groupIds": [ - "_0iEyIKCqAnh2J7YUwrlB" - ], - "strokeSharpness": "round", - "boundElements": [], - "updated": 1662376884761, - "link": null, - "locked": false, - "startBinding": null, - "endBinding": null, - "lastCommittedPoint": null, - "startArrowhead": null, - "endArrowhead": null, - "points": [ - [ - 0, - 0 - ], - [ - 0.41793131176457465, - 12.31899938467562 - ] - ] - }, - { - "type": "line", - "version": 1728, - "versionNonce": 1999257018, - "isDeleted": false, - "id": "OoBrrmXsBnrkluhSNWntM", - "fillStyle": "hachure", - "strokeWidth": 2, - "strokeStyle": "solid", - "roughness": 1, - "opacity": 100, - "angle": 0, - "x": 1295.8939101463318, - "y": 233.32005387918935, - "strokeColor": "#ffffff", - "backgroundColor": "#ffffff", - "width": 10.257078375565314, - "height": 6.540946725895645, - "seed": 1679389789, - "groupIds": [ - "_0iEyIKCqAnh2J7YUwrlB" - ], - "strokeSharpness": "round", - "boundElements": [], - "updated": 1662376884761, - "link": null, - "locked": false, - "startBinding": null, - "endBinding": null, - "lastCommittedPoint": null, - "startArrowhead": null, - "endArrowhead": null, - "points": [ - [ - 0, - 0 - ], - [ - 10.257078375565314, - -6.540946725895645 - ] - ] - }, - { - "type": "arrow", - "version": 427, - "versionNonce": 367858406, - "isDeleted": false, - "id": "WyT8CHCFzENtI1D28JXqX", - "fillStyle": "cross-hatch", - "strokeWidth": 2, - "strokeStyle": "solid", - "roughness": 2, - "opacity": 90, - "angle": 3.172965356582301, - "x": 913.5652581299081, - "y": 224.42325658610133, - "strokeColor": "#000000", - "backgroundColor": "transparent", - "width": 94.08894820589546, - "height": 4.643393316912409, - "seed": 249565469, - "groupIds": [], - "strokeSharpness": "round", - "boundElements": [], - "updated": 1662376884761, - "link": null, - "locked": false, - "startBinding": null, - "endBinding": null, - "lastCommittedPoint": null, - "startArrowhead": null, - "endArrowhead": "arrow", - "points": [ - [ - 0, - 0 - ], - [ - -94.08894820589546, - -4.643393316912409 - ] - ] - }, - { - "type": "text", - "version": 223, - "versionNonce": 1498314362, - "isDeleted": false, - "id": "SmrHnQr2mG7pD6XtPNTbF", - "fillStyle": "cross-hatch", - "strokeWidth": 2, - "strokeStyle": "solid", - "roughness": 2, - "opacity": 90, - "angle": 0, - "x": 839, - "y": 191, - "strokeColor": "#000000", - "backgroundColor": "transparent", - "width": 48, - "height": 25, - "seed": 322424893, - "groupIds": [], - "strokeSharpness": "sharp", - "boundElements": [], - "updated": 1662376884761, - "link": null, - "locked": false, - "fontSize": 20, - "fontFamily": 1, - "text": "clone", - "baseline": 18, - "textAlign": "center", - "verticalAlign": "top", - "containerId": null, - "originalText": "clone" - }, - { - "type": "arrow", - "version": 1682, - "versionNonce": 30787110, - "isDeleted": false, - "id": "YGLbIKYvHLJ7195OM_YrC", - "fillStyle": "cross-hatch", - "strokeWidth": 2, - "strokeStyle": "solid", - "roughness": 2, - "opacity": 90, - "angle": 1.1544546290966737, - "x": 1066.1032297855195, - "y": 349.7657486755516, - "strokeColor": "#000000", - "backgroundColor": "transparent", - "width": 128.09256545730932, - "height": 234.12848935878483, - "seed": 1865112861, - "groupIds": [], - "strokeSharpness": "round", - "boundElements": [], - "updated": 1662376884761, - "link": null, - "locked": false, - "startBinding": null, - "endBinding": { - "elementId": "JGCv3K6aRrwT7DflWeTHf", - "focus": -0.6092445576527593, - "gap": 6.855367883465988 - }, - "lastCommittedPoint": null, - "startArrowhead": null, - "endArrowhead": "arrow", - "points": [ - [ - 0, - 0 - ], - [ - 128.09256545730932, - -234.12848935878483 - ] - ] - }, - { - "type": "rectangle", - "version": 418, - "versionNonce": 65902394, - "isDeleted": false, - "id": "91F-Fbyycbn74TbDoib9O", - "fillStyle": "cross-hatch", - "strokeWidth": 2, - "strokeStyle": "solid", - "roughness": 2, - "opacity": 100, - "angle": 0, - "x": 593, - "y": 305, - "strokeColor": "#000000", - "backgroundColor": "transparent", - "width": 145, - "height": 123.99999999999999, - "seed": 1883417619, - "groupIds": [], - "strokeSharpness": "sharp", - "boundElements": [], - "updated": 1662376884761, - "link": null, - "locked": false - }, - { - "type": "text", - "version": 367, - "versionNonce": 751178086, - "isDeleted": false, - "id": "hbDoM_i77W4Y0gTLYkn6S", - "fillStyle": "cross-hatch", - "strokeWidth": 2, - "strokeStyle": "solid", - "roughness": 2, - "opacity": 100, - "angle": 0, - "x": 578, - "y": 278, - "strokeColor": "#000000", - "backgroundColor": "transparent", - "width": 172, - "height": 25, - "seed": 350645171, - "groupIds": [], - "strokeSharpness": "sharp", - "boundElements": [], - "updated": 1662376884761, - "link": null, - "locked": false, - "fontSize": 20, - "fontFamily": 1, - "text": "openshift-pipelines", - "baseline": 18, - "textAlign": "center", - "verticalAlign": "top", - "containerId": null, - "originalText": "openshift-pipelines" - }, - { - "type": "arrow", - "version": 229, - "versionNonce": 2003476474, - "isDeleted": false, - "id": "LUbBz_tU04VUacwIREtSp", - "fillStyle": "cross-hatch", - "strokeWidth": 2, - "strokeStyle": "solid", - "roughness": 2, - "opacity": 100, - "angle": 0, - "x": 777.4239640302878, - "y": 247.52451296269896, - "strokeColor": "#000000", - "backgroundColor": "transparent", - "width": 51.77851251264292, - "height": 105.57960552038185, - "seed": 280713363, - "groupIds": [], - "strokeSharpness": "round", - "boundElements": [], - "updated": 1662376884761, - "link": null, - "locked": false, - "startBinding": { - "elementId": "YbM8xe6NaFlLoIbF5ZNkj", - "focus": -0.16089294373087465, - "gap": 1.5245129626989637 - }, - "endBinding": null, - "lastCommittedPoint": null, - "startArrowhead": null, - "endArrowhead": "arrow", - "points": [ - [ - 0, - 0 - ], - [ - -51.77851251264292, - 105.57960552038185 - ] - ] - }, - { - "type": "ellipse", - "version": 1292, - "versionNonce": 34272422, - "isDeleted": false, - "id": "bWmX4iEk56oiuov3XaAt4", - "fillStyle": "solid", - "strokeWidth": 1, - "strokeStyle": "solid", - "roughness": 1, - "opacity": 100, - "angle": 0.24489467703229373, - "x": 728.7529318077941, - "y": 400.2866250616118, - "strokeColor": "#000000", - "backgroundColor": "#ffffff", - "width": 15.493137496703639, - "height": 38.942210464687484, - "seed": 1077858269, - "groupIds": [ - "jR05h_8U2AWpOQqAZ05t-", - "6Gk3LIiMNio0piIcba3a-" - ], - "strokeSharpness": "round", - "boundElements": [], - "updated": 1662376884761, - "link": null, - "locked": false - }, - { - "type": "ellipse", - "version": 1341, - "versionNonce": 801673402, - "isDeleted": false, - "id": "s246kZzX-8bYd4WOS8lkr", - "fillStyle": "solid", - "strokeWidth": 1, - "strokeStyle": "solid", - "roughness": 1, - "opacity": 100, - "angle": 0.24489467703229373, - "x": 855.2398423086024, - "y": 431.8970658357859, - "strokeColor": "#000000", - "backgroundColor": "#868e96", - "width": 15.493137496703639, - "height": 38.942210464687484, - "seed": 62679155, - "groupIds": [ - "jR05h_8U2AWpOQqAZ05t-", - "6Gk3LIiMNio0piIcba3a-" - ], - "strokeSharpness": "round", - "boundElements": [], - "updated": 1662376884761, - "link": null, - "locked": false - }, - { - "type": "line", - "version": 1307, - "versionNonce": 2068934630, - "isDeleted": false, - "id": "SSI9fa4T-YBGS-_lSSMeL", - "fillStyle": "solid", - "strokeWidth": 1, - "strokeStyle": "solid", - "roughness": 1, - "opacity": 100, - "angle": 0.24489467703229373, - "x": 739.1682896882069, - "y": 417.40157852013573, - "strokeColor": "#000000", - "backgroundColor": "#ffffff", - "width": 130.1290895770178, - "height": 0, - "seed": 1928514621, - "groupIds": [ - "jR05h_8U2AWpOQqAZ05t-", - "6Gk3LIiMNio0piIcba3a-" - ], - "strokeSharpness": "round", - "boundElements": [], - "updated": 1662376884761, - "link": null, - "locked": false, - "startBinding": null, - "endBinding": null, - "lastCommittedPoint": null, - "startArrowhead": null, - "endArrowhead": null, - "points": [ - [ - 0, - 0 - ], - [ - 130.1290895770178, - 0 - ] - ] - }, - { - "type": "line", - "version": 1328, - "versionNonce": 816474490, - "isDeleted": false, - "id": "O8w8h12pi6dXXFeyZTjuA", - "fillStyle": "solid", - "strokeWidth": 1, - "strokeStyle": "solid", - "roughness": 1, - "opacity": 100, - "angle": 0.24489467703229373, - "x": 729.9442923188832, - "y": 454.6272878418849, - "strokeColor": "#000000", - "backgroundColor": "#ffffff", - "width": 133.109855075734, - "height": 0, - "seed": 60613139, - "groupIds": [ - "jR05h_8U2AWpOQqAZ05t-", - "6Gk3LIiMNio0piIcba3a-" - ], - "strokeSharpness": "round", - "boundElements": [], - "updated": 1662376884761, - "link": null, - "locked": false, - "startBinding": null, - "endBinding": null, - "lastCommittedPoint": null, - "startArrowhead": null, - "endArrowhead": null, - "points": [ - [ - 0, - 0 - ], - [ - 133.109855075734, - 0 - ] - ] - }, - { - "type": "rectangle", - "version": 1324, - "versionNonce": 1420198694, - "isDeleted": false, - "id": "PzagH_-6alw3MCAH8cX1J", - "fillStyle": "solid", - "strokeWidth": 1, - "strokeStyle": "solid", - "roughness": 0, - "opacity": 100, - "angle": 0.24489467703229373, - "x": 735.171394065713, - "y": 402.73020553790263, - "strokeColor": "transparent", - "backgroundColor": "#ffffff", - "width": 9.879247128441374, - "height": 35.64435776557299, - "seed": 984104093, - "groupIds": [ - "jR05h_8U2AWpOQqAZ05t-", - "6Gk3LIiMNio0piIcba3a-" - ], - "strokeSharpness": "round", - "boundElements": [], - "updated": 1662376884761, - "link": null, - "locked": false - }, - { - "type": "text", - "version": 1543, - "versionNonce": 290662970, - "isDeleted": false, - "id": "XKTEM8qBa4qGOJP7CVrIX", - "fillStyle": "cross-hatch", - "strokeWidth": 2, - "strokeStyle": "solid", - "roughness": 2, - "opacity": 100, - "angle": 0.1878576905630096, - "x": 772.0787727644545, - "y": 423.7782965985263, - "strokeColor": "#000000", - "backgroundColor": "transparent", - "width": 45, - "height": 26, - "seed": 456298397, - "groupIds": [], - "strokeSharpness": "sharp", - "boundElements": [ - { - "id": "RN13O3v7s67B4r3OLdUG1", - "type": "arrow" - } - ], - "updated": 1662376884761, - "link": null, - "locked": false, - "fontSize": 20.54864706710939, - "fontFamily": 1, - "text": "build", - "baseline": 18, - "textAlign": "center", - "verticalAlign": "top", - "containerId": null, - "originalText": "build" - }, - { - "type": "rectangle", - "version": 580, - "versionNonce": 415116326, - "isDeleted": false, - "id": "H3OxM00ltL95Cpv7-pntY", - "fillStyle": "cross-hatch", - "strokeWidth": 2, - "strokeStyle": "solid", - "roughness": 2, - "opacity": 100, - "angle": 0, - "x": 1119, - "y": 606.4226804123714, - "strokeColor": "#000000", - "backgroundColor": "transparent", - "width": 149.99999999999997, - "height": 156.18556701030926, - "seed": 130779411, - "groupIds": [], - "strokeSharpness": "sharp", - "boundElements": [], - "updated": 1662376909141, - "link": null, - "locked": false - }, - { - "type": "text", - "version": 554, - "versionNonce": 2057736506, - "isDeleted": false, - "id": "xPFM0yRtVl_q9yUM7sXQY", - "fillStyle": "cross-hatch", - "strokeWidth": 2, - "strokeStyle": "solid", - "roughness": 2, - "opacity": 100, - "angle": 0, - "x": 1130.5979381443308, - "y": 584, - "strokeColor": "#000000", - "backgroundColor": "transparent", - "width": 119.07216494845359, - "height": 19.32989690721649, - "seed": 598893427, - "groupIds": [], - "strokeSharpness": "sharp", - "boundElements": [], - "updated": 1662376909141, - "link": null, - "locked": false, - "fontSize": 15.463917525773192, - "fontFamily": 1, - "text": "openshift-gitops", - "baseline": 13.32989690721649, - "textAlign": "center", - "verticalAlign": "top", - "containerId": null, - "originalText": "openshift-gitops" - }, - { - "type": "ellipse", - "version": 603, - "versionNonce": 318017894, - "isDeleted": false, - "id": "pxosoNQSb3i47Z74v2vDO", - "fillStyle": "solid", - "strokeWidth": 1, - "strokeStyle": "solid", - "roughness": 1, - "opacity": 100, - "angle": 0.46392565162791577, - "x": 900.3142347933414, - "y": 490.0394661829072, - "strokeColor": "#000000", - "backgroundColor": "#ffffff", - "width": 24.878625547778245, - "height": 62.53276151198314, - "seed": 149064573, - "groupIds": [ - "0HX-yqxxA0PAUcoMemv0B", - "BChvbNdhoMJ7QE6skd7OB" - ], - "strokeSharpness": "round", - "boundElements": [], - "updated": 1662376895922, - "link": null, - "locked": false - }, - { - "type": "ellipse", - "version": 652, - "versionNonce": 828645370, - "isDeleted": false, - "id": "QXSWWWqHL6GblQWOGf7HA", - "fillStyle": "solid", - "strokeWidth": 1, - "strokeStyle": "solid", - "roughness": 1, - "opacity": 100, - "angle": 0.46392565162791577, - "x": 1087.5429865515334, - "y": 583.7189230788379, - "strokeColor": "#000000", - "backgroundColor": "#868e96", - "width": 24.878625547778245, - "height": 62.53276151198314, - "seed": 1425782483, - "groupIds": [ - "0HX-yqxxA0PAUcoMemv0B", - "BChvbNdhoMJ7QE6skd7OB" - ], - "strokeSharpness": "round", - "boundElements": [], - "updated": 1662376895922, - "link": null, - "locked": false - }, - { - "type": "line", - "version": 614, - "versionNonce": 510227622, - "isDeleted": false, - "id": "GzhhNSJ1i-tpGvltYkiYH", - "fillStyle": "solid", - "strokeWidth": 1, - "strokeStyle": "solid", - "roughness": 1, - "opacity": 100, - "angle": 0.46392565162791577, - "x": 915.5065742751888, - "y": 540.6712833788434, - "strokeColor": "#000000", - "backgroundColor": "#ffffff", - "width": 208.95915324760554, - "height": 0, - "seed": 1390285789, - "groupIds": [ - "0HX-yqxxA0PAUcoMemv0B", - "BChvbNdhoMJ7QE6skd7OB" - ], - "strokeSharpness": "round", - "boundElements": [], - "updated": 1662376895922, - "link": null, - "locked": false, - "startBinding": null, - "endBinding": null, - "lastCommittedPoint": null, - "startArrowhead": null, - "endArrowhead": null, - "points": [ - [ - 0, - 0 - ], - [ - 208.95915324760554, - 0 - ] - ] - }, - { - "type": "line", - "version": 635, - "versionNonce": 1855066298, - "isDeleted": false, - "id": "w_khHTtgcA2Dpy1SNs6Ai", - "fillStyle": "solid", - "strokeWidth": 1, - "strokeStyle": "solid", - "roughness": 1, - "opacity": 100, - "angle": 0.46392565162791577, - "x": 888.1332595129658, - "y": 595.9785002849096, - "strokeColor": "#000000", - "backgroundColor": "#ffffff", - "width": 213.7456174937323, - "height": 0, - "seed": 1621320819, - "groupIds": [ - "0HX-yqxxA0PAUcoMemv0B", - "BChvbNdhoMJ7QE6skd7OB" - ], - "strokeSharpness": "round", - "boundElements": [], - "updated": 1662376895922, - "link": null, - "locked": false, - "startBinding": null, - "endBinding": null, - "lastCommittedPoint": null, - "startArrowhead": null, - "endArrowhead": null, - "points": [ - [ - 0, - 0 - ], - [ - 213.7456174937323, - 0 - ] - ] - }, - { - "type": "rectangle", - "version": 635, - "versionNonce": 132116454, - "isDeleted": false, - "id": "1t7JhE9gSSVDS_fWcD4LB", - "fillStyle": "solid", - "strokeWidth": 1, - "strokeStyle": "solid", - "roughness": 0, - "opacity": 100, - "angle": 0.46392565162791577, - "x": 910.2050780031153, - "y": 495.1929383752494, - "strokeColor": "transparent", - "backgroundColor": "#ffffff", - "width": 15.863932664042373, - "height": 57.23712385108606, - "seed": 2030669885, - "groupIds": [ - "0HX-yqxxA0PAUcoMemv0B", - "BChvbNdhoMJ7QE6skd7OB" - ], - "strokeSharpness": "round", - "boundElements": [], - "updated": 1662376895922, - "link": null, - "locked": false - }, - { - "type": "text", - "version": 576, - "versionNonce": 1514400122, - "isDeleted": false, - "id": "GsqCVavnvOAOfj0cBBnyC", - "fillStyle": "solid", - "strokeWidth": 1, - "strokeStyle": "solid", - "roughness": 0, - "opacity": 100, - "angle": 0.46392565162791577, - "x": 916.7429500197009, - "y": 551.270876976001, - "strokeColor": "#000000", - "backgroundColor": "#ffffff", - "width": 169, - "height": 25, - "seed": 574905875, - "groupIds": [ - "BChvbNdhoMJ7QE6skd7OB" - ], - "strokeSharpness": "round", - "boundElements": [], - "updated": 1662376895922, - "link": null, - "locked": false, - "fontSize": 20, - "fontFamily": 1, - "text": "git-update-deploy", - "baseline": 18, - "textAlign": "left", - "verticalAlign": "top", - "containerId": null, - "originalText": "git-update-deploy" - }, - { - "type": "rectangle", - "version": 108, - "versionNonce": 1932422138, - "isDeleted": false, - "id": "8pt_5ImrdBMySC8OvdS7D", - "fillStyle": "cross-hatch", - "strokeWidth": 2, - "strokeStyle": "solid", - "roughness": 2, - "opacity": 100, - "angle": 0, - "x": 1466, - "y": 330, - "strokeColor": "#000000", - "backgroundColor": "transparent", - "width": 341, - "height": 385, - "seed": 212680499, - "groupIds": [], - "strokeSharpness": "sharp", - "boundElements": [], - "updated": 1662376884762, - "link": null, - "locked": false - }, - { - "type": "text", - "version": 99, - "versionNonce": 1849288870, - "isDeleted": false, - "id": "lanmH1jUBrQxV0-a9Io5g", - "fillStyle": "cross-hatch", - "strokeWidth": 2, - "strokeStyle": "solid", - "roughness": 2, - "opacity": 100, - "angle": 0, - "x": 1473, - "y": 302, - "strokeColor": "#000000", - "backgroundColor": "transparent", - "width": 132, - "height": 50, - "seed": 1775056627, - "groupIds": [], - "strokeSharpness": "sharp", - "boundElements": [], - "updated": 1662376884762, - "link": null, - "locked": false, - "fontSize": 20, - "fontFamily": 1, - "text": "workshop-prod\n", - "baseline": 43, - "textAlign": "center", - "verticalAlign": "top", - "containerId": null, - "originalText": "workshop-prod\n" - }, - { - "type": "rectangle", - "version": 1947, - "versionNonce": 422763706, - "isDeleted": false, - "id": "0_La1aeThN3RPAwqUna9p", - "fillStyle": "cross-hatch", - "strokeWidth": 1, - "strokeStyle": "solid", - "roughness": 2, - "opacity": 100, - "angle": 0, - "x": 1526.610967391419, - "y": 412.1743823584153, - "strokeColor": "#5665dc", - "backgroundColor": "#5665dc", - "width": 221.77806521716144, - "height": 206.2768434196143, - "seed": 354642141, - "groupIds": [ - "Wb2_Fn2dfsI_57i5ug6Oh" - ], - "strokeSharpness": "round", - "boundElements": [ - { - "id": "IdDsqRoxUzCm_nD_ZpV20", - "type": "arrow" - }, - { - "id": "MYovX0mFVqLZ-YhnVlKWi", - "type": "arrow" - } - ], - "updated": 1662376884762, - "link": null, - "locked": false - }, - { - "type": "rectangle", - "version": 1967, - "versionNonce": 1837229030, - "isDeleted": false, - "id": "JAIRv9tb3b79t7mbWBgcj", - "fillStyle": "solid", - "strokeWidth": 1, - "strokeStyle": "solid", - "roughness": 2, - "opacity": 100, - "angle": 0, - "x": 1539.5594733654664, - "y": 425.0086688034263, - "strokeColor": "#5665dc", - "backgroundColor": "#ffffff", - "width": 197.8137202206727, - "height": 179.09259550938995, - "seed": 1338630003, - "groupIds": [ - "Wb2_Fn2dfsI_57i5ug6Oh" - ], - "strokeSharpness": "round", - "boundElements": [ - { - "id": "YGLbIKYvHLJ7195OM_YrC", - "type": "arrow" - }, - { - "id": "IdDsqRoxUzCm_nD_ZpV20", - "type": "arrow" - } - ], - "updated": 1662376884762, - "link": null, - "locked": false - }, - { - "type": "line", - "version": 2135, - "versionNonce": 250295674, - "isDeleted": false, - "id": "NtzbTA4Zcgw30kjesOoTG", - "fillStyle": "cross-hatch", - "strokeWidth": 1, - "strokeStyle": "solid", - "roughness": 1, - "opacity": 100, - "angle": 1.5774237450700657, - "x": 1658.9280885952755, - "y": 458.18171418176166, - "strokeColor": "#c92a2a", - "backgroundColor": "#fa5252", - "width": 128.62355295977417, - "height": 111.39123593465332, - "seed": 1373390141, - "groupIds": [ - "Wb2_Fn2dfsI_57i5ug6Oh" - ], - "strokeSharpness": "sharp", - "boundElements": [], - "updated": 1662376884762, - "link": null, - "locked": false, - "lastCommittedPoint": null, - "startArrowhead": null, - "endArrowhead": null, - "points": [ - [ - 0, - 0 - ], - [ - 64.31177647988696, - 111.39123593465294 - ], - [ - -64.31177647988724, - 111.39123593465331 - ], - [ - 0, - 0 - ] - ] - }, - { - "type": "line", - "version": 2560, - "versionNonce": 279476006, - "isDeleted": false, - "id": "02Rx1lBDUIE1KJvQPYMdf", - "fillStyle": "cross-hatch", - "strokeWidth": 1, - "strokeStyle": "solid", - "roughness": 1, - "opacity": 100, - "angle": 4.721247315744137, - "x": 1622.1754295469339, - "y": 459.05789961657365, - "strokeColor": "#5665dc", - "backgroundColor": "#5665dc", - "width": 128.62355295977417, - "height": 111.39123593465332, - "seed": 2095282451, - "groupIds": [ - "Wb2_Fn2dfsI_57i5ug6Oh" - ], - "strokeSharpness": "sharp", - "boundElements": [], - "updated": 1662376884762, - "link": null, - "locked": false, - "lastCommittedPoint": null, - "startArrowhead": null, - "endArrowhead": null, - "points": [ - [ - 0, - 0 - ], - [ - 64.31177647988696, - 111.39123593465294 - ], - [ - -64.31177647988724, - 111.39123593465331 - ], - [ - 0, - 0 - ] - ] - }, - { - "type": "line", - "version": 2882, - "versionNonce": 94008890, - "isDeleted": false, - "id": "GpNTvTCGewFoS0C2oMAtL", - "fillStyle": "cross-hatch", - "strokeWidth": 1, - "strokeStyle": "solid", - "roughness": 1, - "opacity": 100, - "angle": 0.0005581869343673773, - "x": 1638.7180529110083, - "y": 561.6349550140723, - "strokeColor": "#5665dc", - "backgroundColor": "#5665dc", - "width": 49.82260909177225, - "height": 51.410026882011636, - "seed": 1341822365, - "groupIds": [ - "Wb2_Fn2dfsI_57i5ug6Oh" - ], - "strokeSharpness": "sharp", - "boundElements": [], - "updated": 1662376884762, - "link": null, - "locked": false, - "lastCommittedPoint": null, - "startArrowhead": null, - "endArrowhead": null, - "points": [ - [ - 0, - 0 - ], - [ - 24.911304545885905, - 51.41002688201148 - ], - [ - -24.911304545886345, - 51.41002688201164 - ], - [ - 0, - 0 - ] - ] - }, - { - "type": "rectangle", - "version": 1895, - "versionNonce": 270180966, - "isDeleted": false, - "id": "9RvRO0Zj5HMKTJ1HoCS-q", - "fillStyle": "solid", - "strokeWidth": 1, - "strokeStyle": "solid", - "roughness": 2, - "opacity": 100, - "angle": 5.989889724533434, - "x": 1663.2430591157047, - "y": 595.1484839689303, - "strokeColor": "#ffffff", - "backgroundColor": "#ffffff", - "width": 17.497854972834, - "height": 28.044079728122867, - "seed": 853073587, - "groupIds": [ - "Wb2_Fn2dfsI_57i5ug6Oh" - ], - "strokeSharpness": "round", - "boundElements": [], - "updated": 1662376884762, - "link": null, - "locked": false - }, - { - "type": "line", - "version": 1821, - "versionNonce": 237215482, - "isDeleted": false, - "id": "AvM9koHNJw3uQbCDmlhAi", - "fillStyle": "cross-hatch", - "strokeWidth": 1, - "strokeStyle": "solid", - "roughness": 1, - "opacity": 100, - "angle": 0, - "x": 1642.6148868503171, - "y": 474.8880583910558, - "strokeColor": "#000000", - "backgroundColor": "#000000", - "width": 69.84033105598769, - "height": 83.40936009217185, - "seed": 716167677, - "groupIds": [ - "Wb2_Fn2dfsI_57i5ug6Oh" - ], - "strokeSharpness": "sharp", - "boundElements": [], - "updated": 1662376884762, - "link": null, - "locked": false, - "lastCommittedPoint": null, - "startArrowhead": null, - "endArrowhead": null, - "points": [ - [ - 0, - 0 - ], - [ - 34.92016552799359, - 20.852340023042693 - ], - [ - 34.92016552799375, - 62.557020069128804 - ], - [ - -3.552713678800501e-14, - 83.40936009217185 - ], - [ - -34.92016552799395, - 62.55702006912823 - ], - [ - -34.9201655279939, - 20.852340023043222 - ], - [ - 0, - 0 - ] - ] - }, - { - "type": "line", - "version": 1659, - "versionNonce": 245720486, - "isDeleted": false, - "id": "UfX2oAa4cs5EuKGQM5fqb", - "fillStyle": "hachure", - "strokeWidth": 2, - "strokeStyle": "solid", - "roughness": 1, - "opacity": 100, - "angle": 0, - "x": 1602.917213951931, - "y": 487.26340192544416, - "strokeColor": "#ffffff", - "backgroundColor": "#ffffff", - "width": 34.98319466868052, - "height": 25.689054524439623, - "seed": 2085654611, - "groupIds": [ - "Wb2_Fn2dfsI_57i5ug6Oh" - ], - "strokeSharpness": "round", - "boundElements": [], - "updated": 1662376884762, - "link": null, - "locked": false, - "startBinding": null, - "endBinding": null, - "lastCommittedPoint": null, - "startArrowhead": null, - "endArrowhead": null, - "points": [ - [ - 0, - 0 - ], - [ - 34.98319466868052, - 25.689054524439623 - ] - ] - }, - { - "type": "line", - "version": 1547, - "versionNonce": 621391802, - "isDeleted": false, - "id": "EVVFMmRHRhfXmUT4-M8sZ", - "fillStyle": "hachure", - "strokeWidth": 1, - "strokeStyle": "solid", - "roughness": 2, - "opacity": 100, - "angle": 0, - "x": 1621.2887361425333, - "y": 502.6564810960499, - "strokeColor": "#ffffff", - "backgroundColor": "#ffffff", - "width": 7.484098664359511, - "height": 5.402765024174263, - "seed": 452825693, - "groupIds": [ - "Wb2_Fn2dfsI_57i5ug6Oh" - ], - "strokeSharpness": "round", - "boundElements": [], - "updated": 1662376884762, - "link": null, - "locked": false, - "startBinding": null, - "endBinding": null, - "lastCommittedPoint": null, - "startArrowhead": null, - "endArrowhead": null, - "points": [ - [ - 0, - 0 - ], - [ - 7.484098664359511, - 5.402765024174263 - ] - ] - }, - { - "type": "line", - "version": 1767, - "versionNonce": 1299562726, - "isDeleted": false, - "id": "YhlYZ0qUNmCO_HBX3iZXH", - "fillStyle": "hachure", - "strokeWidth": 2, - "strokeStyle": "solid", - "roughness": 1, - "opacity": 100, - "angle": 0, - "x": 1635.333028553148, - "y": 511.16530082305417, - "strokeColor": "#ffffff", - "backgroundColor": "#ffffff", - "width": 1.6131948677025787, - "height": 47.55074822865768, - "seed": 1260457459, - "groupIds": [ - "Wb2_Fn2dfsI_57i5ug6Oh" - ], - "strokeSharpness": "round", - "boundElements": [], - "updated": 1662376884762, - "link": null, - "locked": false, - "startBinding": null, - "endBinding": null, - "lastCommittedPoint": null, - "startArrowhead": null, - "endArrowhead": null, - "points": [ - [ - 0, - 0 - ], - [ - 1.6131948677025787, - 47.55074822865768 - ] - ] - }, - { - "type": "line", - "version": 1754, - "versionNonce": 1047505018, - "isDeleted": false, - "id": "SyQKuaVA586VCFiFEZAn5", - "fillStyle": "hachure", - "strokeWidth": 2, - "strokeStyle": "solid", - "roughness": 1, - "opacity": 100, - "angle": 0, - "x": 1637.6935138972788, - "y": 517.0460602840465, - "strokeColor": "#ffffff", - "backgroundColor": "#ffffff", - "width": 39.591831785042224, - "height": 25.247741413724963, - "seed": 1035288253, - "groupIds": [ - "Wb2_Fn2dfsI_57i5ug6Oh" - ], - "strokeSharpness": "round", - "boundElements": [], - "updated": 1662376884762, - "link": null, - "locked": false, - "startBinding": null, - "endBinding": null, - "lastCommittedPoint": null, - "startArrowhead": null, - "endArrowhead": null, - "points": [ - [ - 0, - 0 - ], - [ - 39.591831785042224, - -25.247741413724963 - ] - ] - }, - { - "type": "arrow", - "version": 401, - "versionNonce": 1846253030, - "isDeleted": false, - "id": "MYovX0mFVqLZ-YhnVlKWi", - "fillStyle": "cross-hatch", - "strokeWidth": 2, - "strokeStyle": "solid", - "roughness": 2, - "opacity": 100, - "angle": 0, - "x": 1260.156476717613, - "y": 676.8242314450896, - "strokeColor": "#000000", - "backgroundColor": "transparent", - "width": 247.77827461297306, - "height": 114.10751506597728, - "seed": 1441943059, - "groupIds": [], - "strokeSharpness": "round", - "boundElements": [], - "updated": 1662376909141, - "link": null, - "locked": false, - "startBinding": { - "elementId": "ViSSRBSV13MQgSIMp1121", - "gap": 5.643188463702577, - "focus": 0.5687994618431667 - }, - "endBinding": { - "elementId": "0_La1aeThN3RPAwqUna9p", - "gap": 18.676216060833045, - "focus": 0.07952917546208692 - }, - "lastCommittedPoint": null, - "startArrowhead": null, - "endArrowhead": "arrow", - "points": [ - [ - 0, - 0 - ], - [ - 247.77827461297306, - -114.10751506597728 - ] - ] - }, - { - "type": "text", - "version": 172, - "versionNonce": 1317392806, - "isDeleted": false, - "id": "XnKjHY3PMIJ8X3Iut90Vn", - "fillStyle": "cross-hatch", - "strokeWidth": 2, - "strokeStyle": "solid", - "roughness": 2, - "opacity": 100, - "angle": 5.776606402622476, - "x": 1344.8636127028085, - "y": 622.1633505525595, - "strokeColor": "#000000", - "backgroundColor": "transparent", - "width": 82.78366472683508, - "height": 35.07782403679453, - "seed": 1828456029, - "groupIds": [], - "strokeSharpness": "sharp", - "boundElements": [], - "updated": 1662376914440, - "link": null, - "locked": false, - "fontSize": 28.06225922943561, - "fontFamily": 1, - "text": "deploy", - "baseline": 25.07782403679453, - "textAlign": "center", - "verticalAlign": "top", - "containerId": null, - "originalText": "deploy" - }, - { - "type": "rectangle", - "version": 396, - "versionNonce": 1437710182, - "isDeleted": false, - "id": "XS-ozr6RBj5EVAHcfx2_5", - "fillStyle": "cross-hatch", - "strokeWidth": 1, - "strokeStyle": "solid", - "roughness": 2, - "opacity": 100, - "angle": 0, - "x": 1129.0548095703127, - "y": 693.1477313809243, - "strokeColor": "#000000", - "backgroundColor": "#fa5252", - "width": 51.06135863612197, - "height": 41.56354181243603, - "seed": 1898464195, - "groupIds": [ - "OY6MK1eU2JaL-m31SInn-" - ], - "strokeSharpness": "round", - "boundElements": [], - "updated": 1662376909141, - "link": null, - "locked": false - }, - { - "type": "rectangle", - "version": 525, - "versionNonce": 1626626554, - "isDeleted": false, - "id": "ViSSRBSV13MQgSIMp1121", - "fillStyle": "cross-hatch", - "strokeWidth": 1, - "strokeStyle": "solid", - "roughness": 2, - "opacity": 100, - "angle": 0, - "x": 1159.4738167836779, - "y": 630.2887268066405, - "strokeColor": "#000000", - "backgroundColor": "#fa5252", - "width": 95.03947147023257, - "height": 74.70988753089877, - "seed": 1195445741, - "groupIds": [ - "OY6MK1eU2JaL-m31SInn-" - ], - "strokeSharpness": "round", - "boundElements": [ - { - "id": "O-6qwc0WhxULz_4I0s_HA", - "type": "arrow" - }, - { - "id": "MYovX0mFVqLZ-YhnVlKWi", - "type": "arrow" - } - ], - "updated": 1662376909141, - "link": null, - "locked": false - }, - { - "type": "arrow", - "version": 580, - "versionNonce": 2032920870, - "isDeleted": false, - "id": "O-6qwc0WhxULz_4I0s_HA", - "fillStyle": "cross-hatch", - "strokeWidth": 4, - "strokeStyle": "solid", - "roughness": 2, - "opacity": 100, - "angle": 0, - "x": 1150.7365422532155, - "y": 714.2464245057326, - "strokeColor": "#000000", - "backgroundColor": "#fa5252", - "width": 63.91981266360501, - "height": 52.29286799863308, - "seed": 328258403, - "groupIds": [ - "OY6MK1eU2JaL-m31SInn-" - ], - "strokeSharpness": "round", - "boundElements": [], - "updated": 1662376909801, - "link": null, - "locked": false, - "startBinding": { - "elementId": "ViSSRBSV13MQgSIMp1121", - "focus": 0.0075931537938258185, - "gap": 9.247810168193439 - }, - "endBinding": null, - "lastCommittedPoint": null, - "startArrowhead": null, - "endArrowhead": "arrow", - "points": [ - [ - 0, - 0 - ], - [ - 63.91981266360501, - -52.29286799863308 - ] - ] - }, - { - "type": "ellipse", - "version": 725, - "versionNonce": 453144870, - "isDeleted": false, - "id": "KPZsUz6XrfRgo5gzwOnCF", - "fillStyle": "cross-hatch", - "strokeWidth": 1, - "strokeStyle": "solid", - "roughness": 1, - "opacity": 100, - "angle": 0, - "x": 691.228543069361, - "y": 356.8137377360939, - "strokeColor": "#000000", - "backgroundColor": "#fa5252", - "width": 17.73721237969338, - "height": 17.737212379693382, - "seed": 839994541, - "groupIds": [ - "b1ibwSW8IcqyRbXlyG-Xj" - ], - "strokeSharpness": "sharp", - "boundElements": [], - "updated": 1662376884762, - "link": null, - "locked": false - }, - { - "type": "ellipse", - "version": 877, - "versionNonce": 1635064890, - "isDeleted": false, - "id": "0EvWV8PC9X7e1VrL7zu7Z", - "fillStyle": "cross-hatch", - "strokeWidth": 1, - "strokeStyle": "solid", - "roughness": 1, - "opacity": 100, - "angle": 0, - "x": 620.806908501519, - "y": 324.72344471178013, - "strokeColor": "#000000", - "backgroundColor": "#fa5252", - "width": 14.096941137149154, - "height": 14.096941137149154, - "seed": 737730723, - "groupIds": [ - "b1ibwSW8IcqyRbXlyG-Xj" - ], - "strokeSharpness": "sharp", - "boundElements": [], - "updated": 1662376884762, - "link": null, - "locked": false - }, - { - "type": "ellipse", - "version": 933, - "versionNonce": 1898273894, - "isDeleted": false, - "id": "Ghr9iuQZ3q8DjB1pegFrI", - "fillStyle": "cross-hatch", - "strokeWidth": 1, - "strokeStyle": "solid", - "roughness": 1, - "opacity": 100, - "angle": 0, - "x": 620.8278846144517, - "y": 358.65350858826474, - "strokeColor": "#000000", - "backgroundColor": "#fa5252", - "width": 14.096941137149154, - "height": 14.096941137149154, - "seed": 1425878797, - "groupIds": [ - "b1ibwSW8IcqyRbXlyG-Xj" - ], - "strokeSharpness": "sharp", - "boundElements": [], - "updated": 1662376884762, - "link": null, - "locked": false - }, - { - "type": "ellipse", - "version": 942, - "versionNonce": 599360762, - "isDeleted": false, - "id": "odlpEEpNgIDZzeq3OXuvP", - "fillStyle": "cross-hatch", - "strokeWidth": 1, - "strokeStyle": "solid", - "roughness": 1, - "opacity": 100, - "angle": 0, - "x": 621.0832978108213, - "y": 391.8841472892281, - "strokeColor": "#000000", - "backgroundColor": "#fa5252", - "width": 14.096941137149154, - "height": 14.096941137149154, - "seed": 1744491587, - "groupIds": [ - "b1ibwSW8IcqyRbXlyG-Xj" - ], - "strokeSharpness": "sharp", - "boundElements": [], - "updated": 1662376884762, - "link": null, - "locked": false - }, - { - "type": "line", - "version": 941, - "versionNonce": 843636646, - "isDeleted": false, - "id": "wsKOdGOVXg-2pEVWlBNMl", - "fillStyle": "cross-hatch", - "strokeWidth": 1, - "strokeStyle": "solid", - "roughness": 1, - "opacity": 100, - "angle": 0, - "x": 642.3923405792287, - "y": 327.0220579467141, - "strokeColor": "#000000", - "backgroundColor": "#fa5252", - "width": 41.4984973634862, - "height": 42.84726016307581, - "seed": 1224590701, - "groupIds": [ - "b1ibwSW8IcqyRbXlyG-Xj" - ], - "strokeSharpness": "sharp", - "boundElements": [], - "updated": 1662376884762, - "link": null, - "locked": false, - "startBinding": null, - "endBinding": null, - "lastCommittedPoint": null, - "startArrowhead": null, - "endArrowhead": null, - "points": [ - [ - 0, - 0 - ], - [ - 6.331539146649046, - 0.6911701828995058 - ], - [ - 12.568263416808293, - 2.7567336315794506 - ], - [ - 17.783689413894457, - 6.115027696806288 - ], - [ - 21.55680080812036, - 10.927360487295218 - ], - [ - 29.238198258256762, - 26.091034405487317 - ], - [ - 32.945365761671674, - 30.574916422617147 - ], - [ - 37.42140189982159, - 33.340894759105936 - ], - [ - 41.416542729958344, - 33.84541709619365 - ], - [ - 40.65242563104734, - 42.84726016307581 - ], - [ - 35.08918171060486, - 41.79625619570694 - ], - [ - 29.89463909166145, - 39.481563741388634 - ], - [ - 24.964704070453816, - 35.15988031617168 - ], - [ - 20.916849385577226, - 28.38179727273358 - ], - [ - 14.999667618648054, - 17.15976986783135 - ], - [ - 10.648842357220921, - 12.302187465926371 - ], - [ - 6.500015817009046, - 9.797189469362907 - ], - [ - 0.20955312070965437, - 9.562246308014643 - ], - [ - -0.08195463352785409, - 0.15905318117947767 - ] - ] - }, - { - "type": "line", - "version": 408, - "versionNonce": 452122042, - "isDeleted": false, - "id": "I7dID8l91TbWqTx5vRMCa", - "fillStyle": "cross-hatch", - "strokeWidth": 1, - "strokeStyle": "solid", - "roughness": 1, - "opacity": 100, - "angle": 0, - "x": 642.2938208953407, - "y": 360.90387398414344, - "strokeColor": "#000000", - "backgroundColor": "#fa5252", - "width": 18.63572979046503, - "height": 8.945450381946396, - "seed": 582833123, - "groupIds": [ - "b1ibwSW8IcqyRbXlyG-Xj" - ], - "strokeSharpness": "sharp", - "boundElements": [], - "updated": 1662376884762, - "link": null, - "locked": false, - "startBinding": null, - "endBinding": null, - "lastCommittedPoint": null, - "startArrowhead": null, - "endArrowhead": null, - "points": [ - [ - 0, - 0 - ], - [ - 15.731454943862888, - 0.19513615572747334 - ], - [ - 18.438358831347205, - 4.624138277908322 - ], - [ - 15.401474189720787, - 8.645168445782279 - ], - [ - 0.024885395291281753, - 8.945450381946396 - ], - [ - -0.19737095911783126, - 0.22076419337619754 - ] - ] - }, - { - "type": "line", - "version": 552, - "versionNonce": 1654258406, - "isDeleted": false, - "id": "tVJ51sTAhaMQbnsD2z1G_", - "fillStyle": "cross-hatch", - "strokeWidth": 1, - "strokeStyle": "solid", - "roughness": 1, - "opacity": 100, - "angle": 0, - "x": 666.5167310696386, - "y": 371.5341297381931, - "strokeColor": "#000000", - "backgroundColor": "#fa5252", - "width": 31.742377208928268, - "height": 32.08983068742408, - "seed": 1901891533, - "groupIds": [ - "b1ibwSW8IcqyRbXlyG-Xj" - ], - "strokeSharpness": "sharp", - "boundElements": [], - "updated": 1662376884762, - "link": null, - "locked": false, - "startBinding": null, - "endBinding": null, - "lastCommittedPoint": null, - "startArrowhead": null, - "endArrowhead": null, - "points": [ - [ - 0, - 0 - ], - [ - 7.450862008705704, - 4.5261026104118764 - ], - [ - 3.3117379533671727, - 11.615366554240595 - ], - [ - -0.9358050098348354, - 19.767097287751245 - ], - [ - -5.808480930022496, - 26.23722442399886 - ], - [ - -12.050658120454212, - 30.196436491936836 - ], - [ - -18.01532774034885, - 31.68550318172356 - ], - [ - -24.291515200222555, - 32.08983068742408 - ], - [ - -24.279034682827145, - 23.204527460109873 - ], - [ - -18.279667161677786, - 22.96770706391407 - ], - [ - -13.350626061826572, - 21.184189555732566 - ], - [ - -9.64956472890564, - 16.950076041826833 - ], - [ - -0.104031816900326, - 0.32570368426907065 - ] - ] - }, - { - "type": "diamond", - "version": 984, - "versionNonce": 675548794, - "isDeleted": false, - "id": "47h-nRr-nwGO_mQa23UeO", - "fillStyle": "solid", - "strokeWidth": 1, - "strokeStyle": "solid", - "roughness": 1, - "opacity": 100, - "angle": 0, - "x": 632.6763173734828, - "y": 769.1302824085412, - "strokeColor": "#c92a2a", - "backgroundColor": "#fa5252", - "width": 112.64736525303451, - "height": 36.77344700318558, - "seed": 1441517305, - "groupIds": [ - "m2RdbPic1YynJwWKbyYdm" - ], - "strokeSharpness": "sharp", - "boundElements": [], - "updated": 1662376884762, - "link": null, - "locked": false - }, - { - "type": "diamond", - "version": 1025, - "versionNonce": 2024123942, - "isDeleted": false, - "id": "qSQncXc-KxT1XqGMW7qed", - "fillStyle": "solid", - "strokeWidth": 1, - "strokeStyle": "solid", - "roughness": 1, - "opacity": 100, - "angle": 0, - "x": 632.6763173734828, - "y": 760.2585024802827, - "strokeColor": "#c92a2a", - "backgroundColor": "#fa5252", - "width": 112.64736525303451, - "height": 36.77344700318558, - "seed": 716667159, - "groupIds": [ - "m2RdbPic1YynJwWKbyYdm" - ], - "strokeSharpness": "sharp", - "boundElements": [], - "updated": 1662376884762, - "link": null, - "locked": false - }, - { - "type": "diamond", - "version": 1105, - "versionNonce": 275787578, - "isDeleted": false, - "id": "sGGXEhvtRhriU_uNapb9E", - "fillStyle": "solid", - "strokeWidth": 1, - "strokeStyle": "solid", - "roughness": 1, - "opacity": 100, - "angle": 0, - "x": 632.6763173734828, - "y": 747.6279428855705, - "strokeColor": "#c92a2a", - "backgroundColor": "#fa5252", - "width": 112.64736525303451, - "height": 36.77344700318558, - "seed": 426346457, - "groupIds": [ - "m2RdbPic1YynJwWKbyYdm" - ], - "strokeSharpness": "sharp", - "boundElements": [], - "updated": 1662376884762, - "link": null, - "locked": false - }, - { - "type": "diamond", - "version": 1147, - "versionNonce": 291043686, - "isDeleted": false, - "id": "wBe1SK4e7md93lfPcC54E", - "fillStyle": "solid", - "strokeWidth": 1, - "strokeStyle": "solid", - "roughness": 1, - "opacity": 100, - "angle": 0, - "x": 632.6763173734828, - "y": 735.0962705882732, - "strokeColor": "#c92a2a", - "backgroundColor": "#fa5252", - "width": 112.64736525303451, - "height": 36.77344700318558, - "seed": 834027063, - "groupIds": [ - "m2RdbPic1YynJwWKbyYdm" - ], - "strokeSharpness": "sharp", - "boundElements": [], - "updated": 1662376884762, - "link": null, - "locked": false - }, - { - "type": "arrow", - "version": 2418, - "versionNonce": 131741690, - "isDeleted": false, - "id": "RN13O3v7s67B4r3OLdUG1", - "fillStyle": "cross-hatch", - "strokeWidth": 2, - "strokeStyle": "solid", - "roughness": 2, - "opacity": 90, - "angle": 1.1544546290966737, - "x": 659.669229641808, - "y": 480.42419718896514, - "strokeColor": "#000000", - "backgroundColor": "transparent", - "width": 159.12252736448056, - "height": 174.7936017430613, - "seed": 1186513049, - "groupIds": [], - "strokeSharpness": "round", - "boundElements": [], - "updated": 1662376884762, - "link": null, - "locked": false, - "startBinding": { - "elementId": "XKTEM8qBa4qGOJP7CVrIX", - "focus": -0.05448887991604787, - "gap": 11.335548920662745 - }, - "endBinding": { - "elementId": "IXATX347s4UD9lGlcr90X", - "focus": -0.19812288467622294, - "gap": 6.56951103650465 - }, - "lastCommittedPoint": null, - "startArrowhead": null, - "endArrowhead": "arrow", - "points": [ - [ - 0, - 0 - ], - [ - 159.12252736448056, - 174.7936017430613 - ] - ] - }, - { - "type": "rectangle", - "version": 493, - "versionNonce": 604036262, - "isDeleted": false, - "id": "BSTGJy4-i2gkcab8vcVmx", - "fillStyle": "cross-hatch", - "strokeWidth": 2, - "strokeStyle": "solid", - "roughness": 2, - "opacity": 100, - "angle": 0, - "x": 616.5, - "y": 706, - "strokeColor": "#000000", - "backgroundColor": "transparent", - "width": 145, - "height": 123.99999999999999, - "seed": 966959383, - "groupIds": [], - "strokeSharpness": "sharp", - "boundElements": [ - { - "id": "yb6on_IoQ9DCic3wLZCL5", - "type": "arrow" - } - ], - "updated": 1662376884762, - "link": null, - "locked": false - }, - { - "type": "text", - "version": 486, - "versionNonce": 1048914106, - "isDeleted": false, - "id": "IXATX347s4UD9lGlcr90X", - "fillStyle": "cross-hatch", - "strokeWidth": 2, - "strokeStyle": "solid", - "roughness": 2, - "opacity": 100, - "angle": 0, - "x": 664.5, - "y": 682.5, - "strokeColor": "#000000", - "backgroundColor": "transparent", - "width": 49, - "height": 25, - "seed": 2017626071, - "groupIds": [], - "strokeSharpness": "sharp", - "boundElements": [ - { - "id": "RN13O3v7s67B4r3OLdUG1", - "type": "arrow" - } - ], - "updated": 1662376884762, - "link": null, - "locked": false, - "fontSize": 20, - "fontFamily": 1, - "text": "Quay", - "baseline": 18, - "textAlign": "center", - "verticalAlign": "top", - "containerId": null, - "originalText": "Quay" - }, - { - "type": "text", - "version": 537, - "versionNonce": 910841830, - "isDeleted": false, - "id": "5cuIIpz3LTeQ3sO41ieWq", - "fillStyle": "cross-hatch", - "strokeWidth": 2, - "strokeStyle": "solid", - "roughness": 2, - "opacity": 100, - "angle": 5.096972061245716, - "x": 666.41530864279, - "y": 560.9646648179378, - "strokeColor": "#000000", - "backgroundColor": "transparent", - "width": 107, - "height": 20, - "seed": 1296941911, - "groupIds": [], - "strokeSharpness": "sharp", - "boundElements": [ - { - "id": "6zKDixmk2nfg2iRiN4mHi", - "type": "arrow" - } - ], - "updated": 1662376884762, - "link": null, - "locked": false, - "fontSize": 16, - "fontFamily": 1, - "text": "push to Quay", - "baseline": 14, - "textAlign": "center", - "verticalAlign": "top", - "containerId": null, - "originalText": "push to Quay" - }, - { - "type": "line", - "version": 1879, - "versionNonce": 1813250426, - "isDeleted": false, - "id": "GP1wLZ1WFSKU2V50lx_PB", - "fillStyle": "hachure", - "strokeWidth": 1, - "strokeStyle": "solid", - "roughness": 1, - "opacity": 100, - "angle": 0, - "x": 888.2359178299338, - "y": 776.0795466994963, - "strokeColor": "#fa5252", - "backgroundColor": "#fa5252", - "width": 45.45537939093032, - "height": 28.55045143932542, - "seed": 910612326, - "groupIds": [ - "aIlUmEWkA-SaliQpUsuSS" - ], - "strokeSharpness": "round", - "boundElements": [], - "updated": 1662376884762, - "link": null, - "locked": false, - "startBinding": null, - "endBinding": null, - "lastCommittedPoint": null, - "startArrowhead": null, - "endArrowhead": null, - "points": [ - [ - 0, - 0 - ], - [ - 0.09881604215418947, - 5.982999014858631 - ], - [ - 0.39526416861678143, - 12.070962924714806 - ], - [ - 5.533698360634995, - 16.899348094600715 - ], - [ - 15.415302576054616, - 19.313540679543642 - ], - [ - 29.743628688413075, - 19.313540679543664 - ], - [ - 39.52641686167853, - 17.109277884595738 - ], - [ - 44.81307511692804, - 12.9631645321937 - ], - [ - 45.45537939093032, - 5.982999014858641 - ], - [ - 44.71425907477384, - -0.9446840549776787 - ], - [ - 38.735888524444896, - -6.717753279841269 - ], - [ - 28.360204098254336, - -9.23691075978176 - ], - [ - 15.31648653390042, - -9.026980969786704 - ], - [ - 5.089026170941105, - -5.668104329866079 - ], - [ - 0, - 0 - ] - ] - }, - { - "type": "ellipse", - "version": 872, - "versionNonce": 272788262, - "isDeleted": false, - "id": "tKodUHcxsuZtHeAhdzSw-", - "fillStyle": "solid", - "strokeWidth": 1, - "strokeStyle": "solid", - "roughness": 1, - "opacity": 100, - "angle": 0, - "x": 892.2440967427956, - "y": 767.9926814874417, - "strokeColor": "#fa5252", - "backgroundColor": "#fa5252", - "width": 37.0506282457687, - "height": 14.169503720053175, - "seed": 1472281082, - "groupIds": [ - "aIlUmEWkA-SaliQpUsuSS" - ], - "strokeSharpness": "sharp", - "boundElements": [], - "updated": 1662376884762, - "link": null, - "locked": false - }, - { - "type": "line", - "version": 2712, - "versionNonce": 1539949114, - "isDeleted": false, - "id": "JowGyceWZyekC0DpvNjIf", - "fillStyle": "hachure", - "strokeWidth": 1, - "strokeStyle": "solid", - "roughness": 1, - "opacity": 100, - "angle": 0, - "x": 888.4363535962191, - "y": 792.2718279844214, - "strokeColor": "#fa5252", - "backgroundColor": "#fa5252", - "width": 44.75215216926839, - "height": 18.44773266062176, - "seed": 1803745958, - "groupIds": [ - "aIlUmEWkA-SaliQpUsuSS" - ], - "strokeSharpness": "round", - "boundElements": [], - "updated": 1662376884762, - "link": null, - "locked": false, - "startBinding": null, - "endBinding": null, - "lastCommittedPoint": null, - "startArrowhead": null, - "endArrowhead": null, - "points": [ - [ - 0, - 0 - ], - [ - 0.09881604215418954, - 5.7359953692677355 - ], - [ - 0.8360931732406627, - 12.188788492529767 - ], - [ - 6.415356369882757, - 16.27013404810402 - ], - [ - 16.076546082990426, - 18.44773266062176 - ], - [ - 30.037514691495648, - 18.37926974325645 - ], - [ - 38.718230353201484, - 16.745248712978196 - ], - [ - 43.80546596350205, - 13.229984141597614 - ], - [ - 44.75215216926839, - 6.987888715376405 - ], - [ - 44.596758549161464, - 0.571547384474486 - ], - [ - 43.265820916723996, - 1.4122752942962638 - ], - [ - 38.05365316014614, - 3.8485825851177227 - ], - [ - 29.399301037724893, - 5.462958347950173 - ], - [ - 16.785916549313352, - 5.625099676297176 - ], - [ - 6.663415473169238, - 3.7594908843371635 - ], - [ - 0, - 0 - ] - ] - }, - { - "type": "line", - "version": 2791, - "versionNonce": 1884690022, - "isDeleted": false, - "id": "LQXzCv6fh_FAdDQyf1dnl", - "fillStyle": "hachure", - "strokeWidth": 1, - "strokeStyle": "solid", - "roughness": 1, - "opacity": 100, - "angle": 0, - "x": 888.4575305030959, - "y": 807.7379899328757, - "strokeColor": "#fa5252", - "backgroundColor": "#fa5252", - "width": 44.75215216926839, - "height": 17.929281850049776, - "seed": 1044114106, - "groupIds": [ - "aIlUmEWkA-SaliQpUsuSS" - ], - "strokeSharpness": "round", - "boundElements": [], - "updated": 1662376884762, - "link": null, - "locked": false, - "startBinding": null, - "endBinding": null, - "lastCommittedPoint": null, - "startArrowhead": null, - "endArrowhead": null, - "points": [ - [ - 0, - 0 - ], - [ - 0.09881604215418954, - 5.5747922825067295 - ], - [ - 0.8360931732406627, - 11.846237600769971 - ], - [ - 6.415356369882757, - 15.812881965122543 - ], - [ - 16.076546082990426, - 17.929281850049776 - ], - [ - 30.037514691495648, - 17.862742998674317 - ], - [ - 38.718230353201484, - 16.274644117379026 - ], - [ - 43.80546596350205, - 12.858171728210504 - ], - [ - 44.75215216926839, - 6.791502707658123 - ], - [ - 44.596758549161464, - 0.5554847490161138 - ], - [ - 43.265820916723996, - 1.3725850361735614 - ], - [ - 38.05365316014614, - 3.7404229105650506 - ], - [ - 29.399301037724893, - 5.3094286304656295 - ], - [ - 16.785916549313352, - 5.467013176434269 - ], - [ - 6.663415473169238, - 3.653835022330706 - ], - [ - 0, - 0 - ] - ] - }, - { - "type": "rectangle", - "version": 773, - "versionNonce": 2022271738, - "isDeleted": false, - "id": "0vx83HbQv2HvAfR2WHYzx", - "fillStyle": "cross-hatch", - "strokeWidth": 2, - "strokeStyle": "solid", - "roughness": 2, - "opacity": 100, - "angle": 0, - "x": 869.5, - "y": 755.6981132075472, - "strokeColor": "#000000", - "backgroundColor": "transparent", - "width": 82.99999999999996, - "height": 78.30188679245282, - "seed": 986179194, - "groupIds": [], - "strokeSharpness": "sharp", - "boundElements": [ - { - "id": "yb6on_IoQ9DCic3wLZCL5", - "type": "arrow" - } - ], - "updated": 1662376884762, - "link": null, - "locked": false - }, - { - "type": "text", - "version": 571, - "versionNonce": 1062361510, - "isDeleted": false, - "id": "g1zqTtCSN4y0R3bNwm5QR", - "fillStyle": "cross-hatch", - "strokeWidth": 2, - "strokeStyle": "solid", - "roughness": 2, - "opacity": 100, - "angle": 0, - "x": 889.5, - "y": 728.5, - "strokeColor": "#000000", - "backgroundColor": "transparent", - "width": 43, - "height": 25, - "seed": 1419797434, - "groupIds": [], - "strokeSharpness": "sharp", - "boundElements": [ - { - "id": "RN13O3v7s67B4r3OLdUG1", - "type": "arrow" - } - ], - "updated": 1662376884762, - "link": null, - "locked": false, - "fontSize": 20, - "fontFamily": 1, - "text": "ODF", - "baseline": 18, - "textAlign": "center", - "verticalAlign": "top", - "containerId": null, - "originalText": "ODF" - }, - { - "type": "arrow", - "version": 2436, - "versionNonce": 1490418618, - "isDeleted": false, - "id": "yb6on_IoQ9DCic3wLZCL5", - "fillStyle": "cross-hatch", - "strokeWidth": 2, - "strokeStyle": "solid", - "roughness": 2, - "opacity": 90, - "angle": 1.1544546290966737, - "x": 849.4734835425033, - "y": 746.9428522927587, - "strokeColor": "#000000", - "backgroundColor": "transparent", - "width": 72.92212454127264, - "height": 77.71575432057409, - "seed": 875407398, - "groupIds": [], - "strokeSharpness": "round", - "boundElements": [], - "updated": 1662376884762, - "link": null, - "locked": false, - "startBinding": { - "elementId": "0vx83HbQv2HvAfR2WHYzx", - "focus": -0.43218103748420833, - "gap": 5.5628963344287286 - }, - "endBinding": { - "elementId": "BSTGJy4-i2gkcab8vcVmx", - "focus": -0.2937839155117981, - "gap": 1.2285090703976493 - }, - "lastCommittedPoint": null, - "startArrowhead": null, - "endArrowhead": "arrow", - "points": [ - [ - 0, - 0 - ], - [ - -72.92212454127264, - 77.71575432057409 - ] - ] - }, - { - "type": "text", - "version": 665, - "versionNonce": 1147417830, - "isDeleted": false, - "id": "zqlKiPeKDW-kR1ozvN8_S", - "fillStyle": "cross-hatch", - "strokeWidth": 2, - "strokeStyle": "solid", - "roughness": 2, - "opacity": 100, - "angle": 0.31362065221670044, - "x": 774.9285257833599, - "y": 755.4520583425907, - "strokeColor": "#000000", - "backgroundColor": "transparent", - "width": 87.26292617008791, - "height": 15.309285292997872, - "seed": 1237998458, - "groupIds": [], - "strokeSharpness": "sharp", - "boundElements": [ - { - "id": "6zKDixmk2nfg2iRiN4mHi", - "type": "arrow" - } - ], - "updated": 1662376884762, - "link": null, - "locked": false, - "fontSize": 12.247428234398305, - "fontFamily": 1, - "text": "ObjectStorage", - "baseline": 10.309285292997872, - "textAlign": "center", - "verticalAlign": "top", - "containerId": null, - "originalText": "ObjectStorage" - }, - { - "type": "ellipse", - "version": 1471, - "versionNonce": 1494788134, - "isDeleted": false, - "id": "W3gPAwxyJkXJh8Ar50Zhq", - "fillStyle": "solid", - "strokeWidth": 1, - "strokeStyle": "solid", - "roughness": 1, - "opacity": 100, - "angle": 6.261608989872856, - "x": 918.7163254321238, - "y": 434.5795641911996, - "strokeColor": "#000000", - "backgroundColor": "#ffffff", - "width": 19.037809392675335, - "height": 47.8517911761839, - "seed": 1254764986, - "groupIds": [ - "RWtC1ikS_VQ9hlNXii0g-", - "6q-raF-CZCIZYVp8CEwvt" - ], - "strokeSharpness": "round", - "boundElements": [], - "updated": 1662376884762, - "link": null, - "locked": false - }, - { - "type": "ellipse", - "version": 1520, - "versionNonce": 1614927162, - "isDeleted": false, - "id": "DMduDjdlZ2hBgQGzpryHX", - "fillStyle": "solid", - "strokeWidth": 1, - "strokeStyle": "solid", - "roughness": 1, - "opacity": 100, - "angle": 6.261608989872856, - "x": 1078.8849471378965, - "y": 431.12317881107117, - "strokeColor": "#000000", - "backgroundColor": "#868e96", - "width": 19.037809392675335, - "height": 47.8517911761839, - "seed": 1131831014, - "groupIds": [ - "RWtC1ikS_VQ9hlNXii0g-", - "6q-raF-CZCIZYVp8CEwvt" - ], - "strokeSharpness": "round", - "boundElements": [], - "updated": 1662376884762, - "link": null, - "locked": false - }, - { - "type": "line", - "version": 1486, - "versionNonce": 492614502, - "isDeleted": false, - "id": "WAOQPn7WwLqMpiCYRsY_A", - "fillStyle": "solid", - "strokeWidth": 1, - "strokeStyle": "solid", - "roughness": 1, - "opacity": 100, - "angle": 6.261608989872856, - "x": 927.9008050064805, - "y": 433.89096043854954, - "strokeColor": "#000000", - "backgroundColor": "#ffffff", - "width": 159.90129851598695, - "height": 0, - "seed": 483388026, - "groupIds": [ - "RWtC1ikS_VQ9hlNXii0g-", - "6q-raF-CZCIZYVp8CEwvt" - ], - "strokeSharpness": "round", - "boundElements": [], - "updated": 1662376884762, - "link": null, - "locked": false, - "startBinding": null, - "endBinding": null, - "lastCommittedPoint": null, - "startArrowhead": null, - "endArrowhead": null, - "points": [ - [ - 0, - 0 - ], - [ - 159.90129851598695, - 0 - ] - ] - }, - { - "type": "line", - "version": 1507, - "versionNonce": 2055675386, - "isDeleted": false, - "id": "3cYyNk-3LtE94c6dvcq9G", - "fillStyle": "solid", - "strokeWidth": 1, - "strokeStyle": "solid", - "roughness": 1, - "opacity": 100, - "angle": 6.261608989872856, - "x": 928.7607805007328, - "y": 480.6406893719525, - "strokeColor": "#000000", - "backgroundColor": "#ffffff", - "width": 163.56403276983937, - "height": 0, - "seed": 1213567526, - "groupIds": [ - "RWtC1ikS_VQ9hlNXii0g-", - "6q-raF-CZCIZYVp8CEwvt" - ], - "strokeSharpness": "round", - "boundElements": [], - "updated": 1662376884762, - "link": null, - "locked": false, - "startBinding": null, - "endBinding": null, - "lastCommittedPoint": null, - "startArrowhead": null, - "endArrowhead": null, - "points": [ - [ - 0, - 0 - ], - [ - 163.56403276983937, - 0 - ] - ] - }, - { - "type": "rectangle", - "version": 1503, - "versionNonce": 729634470, - "isDeleted": false, - "id": "57e280TGFVo8SOl7_3x2a", - "fillStyle": "solid", - "strokeWidth": 1, - "strokeStyle": "solid", - "roughness": 0, - "opacity": 100, - "angle": 6.261608989872856, - "x": 926.7037703416653, - "y": 436.3791492992222, - "strokeColor": "transparent", - "backgroundColor": "#ffffff", - "width": 12.139518145657602, - "height": 43.79942340340581, - "seed": 1059097402, - "groupIds": [ - "RWtC1ikS_VQ9hlNXii0g-", - "6q-raF-CZCIZYVp8CEwvt" - ], - "strokeSharpness": "round", - "boundElements": [], - "updated": 1662376884762, - "link": null, - "locked": false - }, - { - "type": "text", - "version": 1643, - "versionNonce": 1453674170, - "isDeleted": false, - "id": "70vSMdmQQEt10U5qzF72m", - "fillStyle": "cross-hatch", - "strokeWidth": 2, - "strokeStyle": "solid", - "roughness": 2, - "opacity": 100, - "angle": 6.2519454737493145, - "x": 963.5000000000001, - "y": 445.00000000000006, - "strokeColor": "#000000", - "backgroundColor": "transparent", - "width": 45, - "height": 26, - "seed": 1584506, - "groupIds": [], - "strokeSharpness": "sharp", - "boundElements": [ - { - "id": "RN13O3v7s67B4r3OLdUG1", - "type": "arrow" - } - ], - "updated": 1662376884762, - "link": null, - "locked": false, - "fontSize": 20.54864706710939, - "fontFamily": 1, - "text": "build", - "baseline": 18, - "textAlign": "center", - "verticalAlign": "top", - "containerId": null, - "originalText": "build" - } - ], - "appState": { - "gridSize": null, - "viewBackgroundColor": "#ffffff" - }, - "files": {} -} \ No newline at end of file diff --git a/excalidraw/workshop_architecture_inner_loop.excalidraw b/excalidraw/workshop_architecture_inner_loop.excalidraw deleted file mode 100644 index df30c87..0000000 --- a/excalidraw/workshop_architecture_inner_loop.excalidraw +++ /dev/null @@ -1,6075 +0,0 @@ -{ - "type": "excalidraw", - "version": 2, - "source": "https://excalidraw.com", - "elements": [ - { - "type": "rectangle", - "version": 252, - "versionNonce": 1973831782, - "isDeleted": false, - "id": "eRALweam41mM0DJnwBGGj", - "fillStyle": "cross-hatch", - "strokeWidth": 2, - "strokeStyle": "solid", - "roughness": 1, - "opacity": 100, - "angle": 0, - "x": 321, - "y": 92, - "strokeColor": "#000000", - "backgroundColor": "transparent", - "width": 1567, - "height": 789, - "seed": 1623179475, - "groupIds": [], - "strokeSharpness": "sharp", - "boundElements": [], - "updated": 1662376608527, - "link": null, - "locked": false - }, - { - "type": "text", - "version": 715, - "versionNonce": 1426938106, - "isDeleted": false, - "id": "0WlhYvkWB8XZHimUWgYTe", - "fillStyle": "cross-hatch", - "strokeWidth": 2, - "strokeStyle": "solid", - "roughness": 2, - "opacity": 100, - "angle": 0.0773666766259069, - "x": 1088.0876812573165, - "y": 207.409227074606, - "strokeColor": "#000000", - "backgroundColor": "transparent", - "width": 97.03908202421952, - "height": 20.913595263840417, - "seed": 633111965, - "groupIds": [], - "strokeSharpness": "sharp", - "boundElements": [], - "updated": 1662376608527, - "link": null, - "locked": false, - "fontSize": 16.730876211072335, - "fontFamily": 1, - "text": "build&deploy", - "baseline": 14.913595263840417, - "textAlign": "center", - "verticalAlign": "top", - "containerId": null, - "originalText": "build&deploy" - }, - { - "type": "text", - "version": 259, - "versionNonce": 1338788774, - "isDeleted": false, - "id": "AK892q6caE6tpWTkF5uAE", - "fillStyle": "cross-hatch", - "strokeWidth": 2, - "strokeStyle": "solid", - "roughness": 1, - "opacity": 90, - "angle": 0, - "x": 717, - "y": 86, - "strokeColor": "#000000", - "backgroundColor": "transparent", - "width": 758.9142857142855, - "height": 57.00000000000001, - "seed": 354860339, - "groupIds": [], - "strokeSharpness": "sharp", - "boundElements": [], - "updated": 1662376608527, - "link": null, - "locked": false, - "fontSize": 45.6, - "fontFamily": 1, - "text": "DevSecOps Workshop Architecture", - "baseline": 40.00000000000001, - "textAlign": "center", - "verticalAlign": "top", - "containerId": null, - "originalText": "DevSecOps Workshop Architecture" - }, - { - "type": "rectangle", - "version": 688, - "versionNonce": 447490490, - "isDeleted": false, - "id": "8WrqvqiAjc00nYNjo9gZk", - "fillStyle": "cross-hatch", - "strokeWidth": 2, - "strokeStyle": "solid", - "roughness": 1, - "opacity": 90, - "angle": 0, - "x": 570, - "y": 139, - "strokeColor": "#000000", - "backgroundColor": "transparent", - "width": 1281, - "height": 704, - "seed": 1254526419, - "groupIds": [], - "strokeSharpness": "sharp", - "boundElements": [], - "updated": 1662376608527, - "link": null, - "locked": false - }, - { - "type": "line", - "version": 4417, - "versionNonce": 1422911206, - "isDeleted": false, - "id": "wntYgz6uM6s_HBN_KMR65", - "fillStyle": "hachure", - "strokeWidth": 2, - "strokeStyle": "solid", - "roughness": 1, - "opacity": 90, - "angle": 0, - "x": 320.5892304662775, - "y": 65.49173531033286, - "strokeColor": "#c92a2a", - "backgroundColor": "#fa5252", - "width": 130.6580031652458, - "height": 93.55764515124328, - "seed": 717152627, - "groupIds": [ - "g_ZYKV0PmWmJecyAyG0vE" - ], - "strokeSharpness": "round", - "boundElements": [], - "updated": 1662376608527, - "link": null, - "locked": false, - "startBinding": null, - "endBinding": null, - "lastCommittedPoint": null, - "startArrowhead": null, - "endArrowhead": null, - "points": [ - [ - 0, - 0 - ], - [ - 6.751631440482483, - -21.744604760402623 - ], - [ - 12.071098636014012, - -38.24051182001862 - ], - [ - 18.20894540008893, - -49.35058995627114 - ], - [ - 27.006525761929773, - -51.276549057875634 - ], - [ - 38.05464993726463, - -45.7889736593089 - ], - [ - 49.30736900473541, - -53.271073770767785 - ], - [ - 68.33469397336775, - -50.612442114730406 - ], - [ - 102.50204096005159, - -39.927593223842734 - ], - [ - 115.80070894888058, - -28.30547688638609 - ], - [ - 130.6580031652458, - 28.060398329301506 - ], - [ - 111.81824232503068, - 40.286571380475486 - ], - [ - 72.14386401439745, - 36.91440176652914 - ], - [ - 17.18597093940944, - 18.485072139848473 - ], - [ - 0, - 0 - ] - ] - }, - { - "type": "line", - "version": 4601, - "versionNonce": 229827194, - "isDeleted": false, - "id": "JyadeZaz-nApBsaSLy5p6", - "fillStyle": "hachure", - "strokeWidth": 2, - "strokeStyle": "solid", - "roughness": 1, - "opacity": 90, - "angle": 0, - "x": 319.2790907030394, - "y": 70.7991843340742, - "strokeColor": "#c92a2a", - "backgroundColor": "#fa5252", - "width": 216.87058566398125, - "height": 105.98015412636072, - "seed": 238052157, - "groupIds": [ - "g_ZYKV0PmWmJecyAyG0vE" - ], - "strokeSharpness": "round", - "boundElements": [], - "updated": 1662376608527, - "link": null, - "locked": false, - "startBinding": null, - "endBinding": null, - "lastCommittedPoint": null, - "startArrowhead": null, - "endArrowhead": null, - "points": [ - [ - 0, - 0 - ], - [ - -19.027324968632406, - 3.2735182741733384 - ], - [ - -32.53058784959727, - 7.5700110090258 - ], - [ - -40.714383535030386, - 19.027324968632367 - ], - [ - -40.305193750758825, - 39.282219290079546 - ], - [ - -25.36976662484299, - 58.309544258712016 - ], - [ - 7.774605901161586, - 81.01957728578927 - ], - [ - 74.67713562957849, - 103.93420520500231 - ], - [ - 127.87180758489482, - 105.98015412636072 - ], - [ - 165.92645752215952, - 89.2033729712225 - ], - [ - 176.1562021289509, - 64.03820123851503 - ], - [ - 161.425369895171, - 38.05464993726463 - ], - [ - 136.66938794673536, - 25.36976662484304 - ], - [ - 138.53203043061052, - 34.30658204206115 - ], - [ - 136.66289389782435, - 46.66466617069298 - ], - [ - 123.19518701709988, - 53.308145840076726 - ], - [ - 102.76773799801693, - 57.02513045099989 - ], - [ - 69.97145311045328, - 50.813408468305106 - ], - [ - 30.689233820376245, - 36.692103220002295 - ], - [ - 11.61922442992149, - 25.902010098469074 - ], - [ - -0.6265577491993763, - 11.526931487294902 - ], - [ - 0, - 0 - ] - ] - }, - { - "type": "line", - "version": 3873, - "versionNonce": 87956006, - "isDeleted": false, - "id": "7SyGlpzJiL-b6p38pAfBy", - "fillStyle": "hachure", - "strokeWidth": 2, - "strokeStyle": "solid", - "roughness": 1, - "opacity": 90, - "angle": 0, - "x": 321.0994122611919, - "y": 64.29856312402173, - "strokeColor": "#000000", - "backgroundColor": "#111111", - "width": 139.45788662720503, - "height": 62.401442101428636, - "seed": 1978153747, - "groupIds": [ - "g_ZYKV0PmWmJecyAyG0vE" - ], - "strokeSharpness": "round", - "boundElements": [], - "updated": 1662376608527, - "link": null, - "locked": false, - "startBinding": null, - "endBinding": null, - "lastCommittedPoint": null, - "startArrowhead": null, - "endArrowhead": null, - "points": [ - [ - 0, - 0 - ], - [ - 22.804818964804006, - 21.687058566398193 - ], - [ - 86.12085708379372, - 41.73735799570947 - ], - [ - 125.37374612577968, - 38.463839721536395 - ], - [ - 130.37165585906067, - 26.392741085522232 - ], - [ - 135.7254606218297, - 45.82925583842618 - ], - [ - 128.13291561740596, - 58.104949366576136 - ], - [ - 104.83377820588099, - 62.401442101428636 - ], - [ - 71.03520296880636, - 58.923328935119315 - ], - [ - 24.796399983098315, - 43.16952224066042 - ], - [ - 1.590617998009283, - 24.551387056299777 - ], - [ - -3.7324260053752747, - 14.321642449508143 - ], - [ - 0, - 0 - ] - ] - }, - { - "type": "line", - "version": 688, - "versionNonce": 149193530, - "isDeleted": false, - "id": "f5KYH-B9kAnWXXo51R9-H", - "fillStyle": "cross-hatch", - "strokeWidth": 1, - "strokeStyle": "solid", - "roughness": 1, - "opacity": 100, - "angle": 0, - "x": 1812.0073727222634, - "y": 145.00498424785317, - "strokeColor": "#db212f", - "backgroundColor": "#db212f", - "width": 15.057127222627372, - "height": 12.261063255147196, - "seed": 300826365, - "groupIds": [ - "XlWWhul_UJlIc-Kn2RdKM", - "-Hi40yyCOS2FYhEDrTPcO" - ], - "strokeSharpness": "sharp", - "boundElements": [], - "updated": 1662376608527, - "link": null, - "locked": false, - "lastCommittedPoint": null, - "startArrowhead": null, - "endArrowhead": null, - "points": [ - [ - 0, - 0 - ], - [ - -14.616681342596005, - 5.324819892381999 - ], - [ - -14.616681342596005, - 5.324819892381999 - ], - [ - -14.17376881036628, - 8.82008778368913 - ], - [ - -13.456338021439967, - 12.259542418501105 - ], - [ - 0.44044588003136376, - 7.197468058759137 - ], - [ - 0.44044588003136376, - 7.197468058759137 - ], - [ - -0.011390342271196507, - 3.6270215909966614 - ], - [ - 0.015188088638847574, - -0.0015208366460921496 - ] - ] - }, - { - "type": "line", - "version": 687, - "versionNonce": 1208214886, - "isDeleted": false, - "id": "bc07NLfZ6wBrmPN4gV5sW", - "fillStyle": "cross-hatch", - "strokeWidth": 1, - "strokeStyle": "solid", - "roughness": 1, - "opacity": 100, - "angle": 0, - "x": 1876.872135362504, - "y": 128.39985372330213, - "strokeColor": "#db212f", - "backgroundColor": "#db212f", - "width": 18.197948925199313, - "height": 11.115906574214128, - "seed": 2052520787, - "groupIds": [ - "XlWWhul_UJlIc-Kn2RdKM", - "-Hi40yyCOS2FYhEDrTPcO" - ], - "strokeSharpness": "sharp", - "boundElements": [], - "updated": 1662376608528, - "link": null, - "locked": false, - "lastCommittedPoint": null, - "startArrowhead": null, - "endArrowhead": null, - "points": [ - [ - 0, - 0 - ], - [ - 0, - 0 - ], - [ - -1.6547050329147124, - -3.099058079854779 - ], - [ - -3.5691168220090894, - -6.056870990932633 - ], - [ - -18.197948925199313, - -0.7320496501346963 - ], - [ - -18.197948925199313, - -0.7320496501346963 - ], - [ - -15.849545397116387, - 2.0319304577765314 - ], - [ - -13.899821229515979, - 5.059035583281502 - ], - [ - 0, - 0 - ] - ] - }, - { - "type": "line", - "version": 688, - "versionNonce": 379849722, - "isDeleted": false, - "id": "WI1EejQvjeUV9LSZ1ot1W", - "fillStyle": "cross-hatch", - "strokeWidth": 1, - "strokeStyle": "solid", - "roughness": 1, - "opacity": 100, - "angle": 0, - "x": 1844.741511980074, - "y": 124.46697546257788, - "strokeColor": "#db212f", - "backgroundColor": "#db212f", - "width": 75.81253322810664, - "height": 45.04589164255064, - "seed": 925325149, - "groupIds": [ - "pBHxrM3AqO8CWPQXmIOZ-", - "-Hi40yyCOS2FYhEDrTPcO" - ], - "strokeSharpness": "sharp", - "boundElements": [], - "updated": 1662376608528, - "link": null, - "locked": false, - "lastCommittedPoint": null, - "startArrowhead": null, - "endArrowhead": null, - "points": [ - [ - 0, - 0 - ], - [ - 0, - 0 - ], - [ - 4.259402849426743, - 2.4949658314576624 - ], - [ - 7.903704041554605, - 5.630095259725732 - ], - [ - 22.53405408455911, - 0.3052739189279503 - ], - [ - 22.53405408455911, - 0.3052739189279503 - ], - [ - 19.138173592281127, - -3.8673601303844958 - ], - [ - 15.24909012092732, - -7.552422641459149 - ], - [ - 10.918506322800576, - -10.706893490825568 - ], - [ - 6.19811905654128, - -13.287754727637926 - ], - [ - 2.234222009527124, - -14.897026214166894 - ], - [ - -1.7961109758512919, - -16.07522705437966 - ], - [ - -5.864716901740125, - -16.83260913568656 - ], - [ - -9.943409595632126, - -17.179423621290262 - ], - [ - -14.004023162841754, - -17.12592239860094 - ], - [ - -18.01837722452531, - -16.682356992925172 - ], - [ - -21.95830009233396, - -15.858980015881567 - ], - [ - -25.795617181087014, - -14.666041906464322 - ], - [ - -29.502151008772366, - -13.113795638395903 - ], - [ - -33.049732783873026, - -11.212492012774932 - ], - [ - -36.410182127544914, - -8.972383641219674 - ], - [ - -39.55533024827102, - -6.4037216869325295 - ], - [ - -42.4569982156232, - -3.5167565889083434 - ], - [ - -45.087012892836896, - -0.32174240718104485 - ], - [ - -47.41720114314734, - 3.171070419254548 - ], - [ - -49.41938765716614, - 6.951430002988154 - ], - [ - -51.37716284428783, - 11.962969133604677 - ], - [ - -52.667513799822046, - 17.163459905961766 - ], - [ - -53.278479143547536, - 22.486695231400166 - ], - [ - -53.19809749524285, - 27.866468021260374 - ], - [ - -38.56622733980009, - 22.543163171861146 - ], - [ - -38.56622733980009, - 22.543163171861146 - ], - [ - -37.78918554801086, - 17.799841688978947 - ], - [ - -36.131632929528294, - 13.151064102512025 - ], - [ - -33.31672507179529, - 8.424778886897506 - ], - [ - -29.722953315129445, - 4.472764643544799 - ], - [ - -25.496669942606843, - 1.348259345561452 - ], - [ - -20.784231582550888, - -0.8955077244395149 - ], - [ - -15.731989069621903, - -2.2052985933502995 - ], - [ - -10.486301928975067, - -2.5278810817263966 - ], - [ - -5.193520995270404, - -1.8100201132916165 - ], - [ - 5.684352728102526e-14, - 0.0015193882302124706 - ] - ] - }, - { - "type": "line", - "version": 687, - "versionNonce": 510544038, - "isDeleted": false, - "id": "6oij0WK_m7aP1lp6Uqqr7", - "fillStyle": "cross-hatch", - "strokeWidth": 1, - "strokeStyle": "solid", - "roughness": 1, - "opacity": 100, - "angle": 0, - "x": 1799.8921534112642, - "y": 156.69499793638806, - "strokeColor": "#db212f", - "backgroundColor": "#db212f", - "width": 21.135260958288036, - "height": 19.23375745127928, - "seed": 857872627, - "groupIds": [ - "xe1BDv0Ik6eS3i_ZaaVrg", - "-Hi40yyCOS2FYhEDrTPcO" - ], - "strokeSharpness": "sharp", - "boundElements": [], - "updated": 1662376608528, - "link": null, - "locked": false, - "lastCommittedPoint": null, - "startArrowhead": null, - "endArrowhead": null, - "points": [ - [ - 0, - 0 - ], - [ - -13.901339169330232, - 5.060556419927578 - ], - [ - -13.901339169330232, - 5.060556419927578 - ], - [ - -12.769757584931266, - 8.810053158656753 - ], - [ - -11.295882201859168, - 12.43895479343112 - ], - [ - -9.490534497058649, - 15.92119563255274 - ], - [ - -7.364535585370593, - 19.230721571650527 - ], - [ - 7.233921788957807, - 13.915012214986383 - ], - [ - 7.233921788957807, - 13.915012214986383 - ], - [ - 4.6748345876696735, - 10.861247547283575 - ], - [ - 2.596717045159691, - 7.486259005275251 - ], - [ - 1.0287214273092773, - 3.84613504446863 - ], - [ - -7.105427357601002e-15, - -0.003035879628753513 - ] - ] - }, - { - "type": "line", - "version": 686, - "versionNonce": 2096397498, - "isDeleted": false, - "id": "lXLhUsF6cIPdCalY9LsXj", - "fillStyle": "cross-hatch", - "strokeWidth": 1, - "strokeStyle": "solid", - "roughness": 1, - "opacity": 100, - "angle": 0, - "x": 1860.513037699569, - "y": 151.0961531026524, - "strokeColor": "#db212f", - "backgroundColor": "#db212f", - "width": 75.78996437438275, - "height": 45.03934263026952, - "seed": 442393533, - "groupIds": [ - "PDMHehvMnDWQoTOJluHvO", - "-Hi40yyCOS2FYhEDrTPcO" - ], - "strokeSharpness": "sharp", - "boundElements": [], - "updated": 1662376608528, - "link": null, - "locked": false, - "lastCommittedPoint": null, - "startArrowhead": null, - "endArrowhead": null, - "points": [ - [ - 0, - 0 - ], - [ - 0, - 0 - ], - [ - -0.7979612619600112, - 4.809693690948873 - ], - [ - -2.454340663601258, - 9.395140742641292 - ], - [ - -5.269186239452615, - 14.121420164592262 - ], - [ - -8.862810257701469, - 18.07341123329136 - ], - [ - -13.088905336163094, - 21.197864388304026 - ], - [ - -17.801175679979963, - 23.441518481868417 - ], - [ - -22.853313906967415, - 24.751129747213415 - ], - [ - -28.09903291276312, - 25.073442830240726 - ], - [ - -33.392019521518975, - 24.3552023768524 - ], - [ - -38.5859779383772, - 22.543164620276947 - ], - [ - -42.80189644705284, - 20.093852856518723 - ], - [ - -46.506385111553286, - 16.92369928449945 - ], - [ - -61.10484103746573, - 22.239408641163465 - ], - [ - -61.10484103746573, - 22.239408641163465 - ], - [ - -57.800106458011086, - 26.318906654269917 - ], - [ - -53.96413349916998, - 29.986486785993755 - ], - [ - -49.617567880516816, - 33.17992509127249 - ], - [ - -44.781055321626326, - 35.83699762504376 - ], - [ - -40.81719303659254, - 37.44623398748825 - ], - [ - -36.786952749828814, - 38.62433488700707 - ], - [ - -32.71850035602038, - 39.38156669516916 - ], - [ - -28.639998853021027, - 39.72818998988028 - ], - [ - -24.579617032347983, - 39.6744595553821 - ], - [ - -20.565517891854626, - 39.23063596958054 - ], - [ - -16.62587311988986, - 38.40698560404443 - ], - [ - -12.788839920643921, - 37.21376324301611 - ], - [ - -9.082587085634232, - 35.66123525806417 - ], - [ - -5.535283406377404, - 33.759656433431 - ], - [ - -2.1750860870640736, - 31.519293140685605 - ], - [ - 0.9698302871254398, - 28.950400164069887 - ], - [ - 3.871302718337546, - 26.063238081489523 - ], - [ - 6.501168208718221, - 22.868073264513562 - ], - [ - 8.831263760414274, - 19.375166291047492 - ], - [ - 10.833414788244482, - 15.594771945333305 - ], - [ - 12.79060698798517, - 10.58564008186536 - ], - [ - 14.078509396519241, - 5.387200266356471 - ], - [ - 14.685123336917002, - 0.06607093756920435 - ], - [ - 14.5984559259125, - -5.3111526403892615 - ], - [ - 0.0030358796286549246, - 0.0015208366460797156 - ], - [ - 0, - 0 - ] - ] - }, - { - "type": "line", - "version": 687, - "versionNonce": 1479164902, - "isDeleted": false, - "id": "t6zC6Ks9wMbXlSd_IkbXg", - "fillStyle": "cross-hatch", - "strokeWidth": 1, - "strokeStyle": "solid", - "roughness": 1, - "opacity": 100, - "angle": 0, - "x": 1864.2912948506817, - "y": 133.40343309301588, - "strokeColor": "#db212f", - "backgroundColor": "#db212f", - "width": 18.000512463389445, - "height": 20.36979635441513, - "seed": 200835731, - "groupIds": [ - "OATV6O3C6Jj4jKAau1-nj", - "-Hi40yyCOS2FYhEDrTPcO" - ], - "strokeSharpness": "sharp", - "boundElements": [], - "updated": 1662376608528, - "link": null, - "locked": false, - "lastCommittedPoint": null, - "startArrowhead": null, - "endArrowhead": null, - "points": [ - [ - 0, - 0 - ], - [ - -13.901339169330214, - 5.060556419927573 - ], - [ - -13.901339169330214, - 5.060556419927573 - ], - [ - -12.224351706926663, - 8.65100840745738 - ], - [ - -11.082304774830863, - 12.441228806321043 - ], - [ - -10.499259457199686, - 16.36842299560986 - ], - [ - -10.499282631853335, - 20.369796354415122 - ], - [ - 4.099173294059227, - 15.058646610857604 - ], - [ - 4.099173294059227, - 15.058646610857604 - ], - [ - 3.6036702306080626, - 11.15686632613269 - ], - [ - 2.749359798287061, - 7.328845170326803 - ], - [ - 1.544781856967882, - 3.6010601852401734 - ], - [ - -0.0015179398143487788, - 1.0842021724855044e-19 - ] - ] - }, - { - "type": "rectangle", - "version": 913, - "versionNonce": 131765178, - "isDeleted": false, - "id": "YbM8xe6NaFlLoIbF5ZNkj", - "fillStyle": "cross-hatch", - "strokeWidth": 2, - "strokeStyle": "solid", - "roughness": 1, - "opacity": 90, - "angle": 0, - "x": 735, - "y": 185, - "strokeColor": "#000000", - "backgroundColor": "transparent", - "width": 96, - "height": 61, - "seed": 580511379, - "groupIds": [], - "strokeSharpness": "sharp", - "boundElements": [ - { - "id": "7Syn5DvjY3mv9SneA2hDa", - "type": "arrow" - } - ], - "updated": 1662376620915, - "link": null, - "locked": false - }, - { - "type": "text", - "version": 569, - "versionNonce": 1195693862, - "isDeleted": false, - "id": "iuxdb0W-9J_Gkd_DYbuW_", - "fillStyle": "cross-hatch", - "strokeWidth": 2, - "strokeStyle": "solid", - "roughness": 1, - "opacity": 90, - "angle": 0, - "x": 758.5, - "y": 147.5, - "strokeColor": "#000000", - "backgroundColor": "transparent", - "width": 37, - "height": 35, - "seed": 81439549, - "groupIds": [], - "strokeSharpness": "sharp", - "boundElements": [], - "updated": 1662376608528, - "link": null, - "locked": false, - "fontSize": 28, - "fontFamily": 1, - "text": "git", - "baseline": 25, - "textAlign": "center", - "verticalAlign": "top", - "containerId": null, - "originalText": "git" - }, - { - "type": "line", - "version": 1043, - "versionNonce": 1567888954, - "isDeleted": false, - "id": "Q8EB985YDHetJxeoUp0Vw", - "fillStyle": "cross-hatch", - "strokeWidth": 1, - "strokeStyle": "solid", - "roughness": 0, - "opacity": 100, - "angle": 0, - "x": 759.3375385298189, - "y": 197.05127472665572, - "strokeColor": "#428f29", - "backgroundColor": "#609926", - "width": 66.5027317863492, - "height": 41.006360360924916, - "seed": 2142521811, - "groupIds": [ - "zl1s8cNmh8UrJcf74pI-f" - ], - "strokeSharpness": "sharp", - "boundElements": [], - "updated": 1662376608528, - "link": null, - "locked": false, - "lastCommittedPoint": null, - "startArrowhead": null, - "endArrowhead": null, - "points": [ - [ - 0, - 0 - ], - [ - 0, - 0 - ], - [ - -1.9819704021413749, - 0.1700804476166412 - ], - [ - -4.021831182534616, - 0.7059082463466613 - ], - [ - -5.030615013067983, - 1.1176989561642738 - ], - [ - -6.014442852708516, - 1.6289927770316832 - ], - [ - -6.9601750754113105, - 2.242479147921579 - ], - [ - -7.854667456926681, - 2.9608434205133602 - ], - [ - -8.68477832756329, - 3.7867791210730144 - ], - [ - -9.437364995806295, - 4.722969557633341 - ], - [ - -10.099284770140986, - 5.772108256460275 - ], - [ - -10.657395980875966, - 6.9368785255865895 - ], - [ - -11.098555936496442, - 8.21997389127839 - ], - [ - -11.40962220094355, - 9.624079705214903 - ], - [ - -11.577452593614222, - 11.15188745001558 - ], - [ - -11.588904422993668, - 12.806082477359743 - ], - [ - -11.336825464130218, - 15.34153676334101 - ], - [ - -10.822590324842285, - 17.589778994775504 - ], - [ - -10.075910561744195, - 19.568065723855852 - ], - [ - -9.12649824236198, - 21.293639197248098 - ], - [ - -8.004065178765881, - 22.783760054438325 - ], - [ - -6.738322927570264, - 24.05567667303228 - ], - [ - -5.358984067212862, - 25.126637430636144 - ], - [ - -3.8957586215729645, - 26.01389479214918 - ], - [ - -2.378360190911682, - 26.734705309764024 - ], - [ - -0.8365003318433182, - 27.30631327379341 - ], - [ - 0.7001093990176681, - 27.745975236429842 - ], - [ - 2.2017574450569644, - 28.07093957527943 - ], - [ - 3.6387312278367414, - 28.298458755241516 - ], - [ - 4.981321234389505, - 28.445785241215386 - ], - [ - 6.199812842630774, - 28.530167410807024 - ], - [ - 7.264495517769529, - 28.56885772891568 - ], - [ - 7.435231975956343, - 29.14575056314516 - ], - [ - 7.7258916623775775, - 29.854327811998132 - ], - [ - 8.125992713438439, - 30.672101187894526 - ], - [ - 8.625047134604204, - 31.576578315960653 - ], - [ - 9.87808658922341, - 33.555678416402095 - ], - [ - 11.401132637362723, - 35.611693201627844 - ], - [ - 13.110309933796094, - 37.564700021823626 - ], - [ - 14.921747220591012, - 39.234768052587974 - ], - [ - 15.839600015888385, - 39.90747112839627 - ], - [ - 16.751565065228064, - 40.44196238222666 - ], - [ - 17.647156417721916, - 40.81575761379161 - ], - [ - 18.515890166128166, - 41.006360360924916 - ], - [ - 38.41932239020985, - 41.00636036092489 - ], - [ - 38.41932239020985, - 41.00636036092489 - ], - [ - 39.52905929908097, - 40.811310638712186 - ], - [ - 40.61893604994564, - 40.40327615141114 - ], - [ - 41.68664740939881, - 39.79659921111167 - ], - [ - 42.72989631862134, - 39.005626217197076 - ], - [ - 43.74637345691538, - 38.044703569050476 - ], - [ - 44.733789940047984, - 36.92816540417523 - ], - [ - 45.68983236002843, - 35.67036629654137 - ], - [ - 46.61220774533085, - 34.285644470945215 - ], - [ - 47.498614949843414, - 32.78834632677018 - ], - [ - 48.3467528274542, - 31.19281826339949 - ], - [ - 49.919011930229885, - 27.76443345284421 - ], - [ - 51.310579972055685, - 24.11524488517218 - ], - [ - 52.503051871330385, - 20.36000740627583 - ], - [ - 53.478018459157994, - 16.613467687461423 - ], - [ - 54.21707465393703, - 12.990384661914874 - ], - [ - 54.701811286772546, - 9.605507044588766 - ], - [ - 54.84305996765153, - 8.038254876070912 - ], - [ - 54.91382736335554, - 6.5735876377294815 - ], - [ - 54.91180824047939, - 5.225847641654507 - ], - [ - 54.83471371479084, - 4.009379243582792 - ], - [ - 54.68023037829856, - 2.938526799250514 - ], - [ - 54.44606117218366, - 2.0276346643947214 - ], - [ - 54.129900863041016, - 1.2910451511050063 - ], - [ - 53.72946056663854, - 0.7431046587646399 - ], - [ - 53.24243504957106, - 0.3981554994636305 - ], - [ - 52.66651499114012, - 0.2705440725852277 - ], - [ - 50.38399467468378, - 0.3905470030386695 - ], - [ - 48.230493857637555, - 0.5018113004773248 - ], - [ - 46.19825894466584, - 0.6044330162933456 - ], - [ - 44.279552689605055, - 0.6985163764650153 - ], - [ - 40.75173220833915, - 0.8614624536761077 - ], - [ - 37.58507313513575, - 0.9914424670054487 - ], - [ - 34.71760392941139, - 1.089257525934066 - ], - [ - 32.08736939975574, - 1.1557066962966545 - ], - [ - 29.632402092878237, - 1.1915849566344754 - ], - [ - 27.290742730075316, - 1.1976913727821934 - ], - [ - 22.699482110825095, - 1.1237828921989905 - ], - [ - 20.32595820967701, - 1.0453620398440044 - ], - [ - 17.81788470132205, - 0.9403656066372221 - ], - [ - 15.11330230705643, - 0.809586527473364 - ], - [ - 12.150247660883139, - 0.6538238681870236 - ], - [ - 8.866755353158485, - 0.4738766946127946 - ], - [ - 7.0854822907078265, - 0.3750827289456167 - ], - [ - 5.200864061532112, - 0.2705440725852437 - ], - [ - 4.105790317272589, - 0.22292301867815878 - ], - [ - 2.8497467020987655, - 0.1318560809408833 - ], - [ - 1.4690467730818961, - 0.042497631791162616 - ], - [ - 0, - 0 - ], - [ - 0, - 0 - ] - ] - }, - { - "type": "line", - "version": 1026, - "versionNonce": 1948975718, - "isDeleted": false, - "id": "lGMXFgtMaMylvK7rWo7vG", - "fillStyle": "solid", - "strokeWidth": 1, - "strokeStyle": "solid", - "roughness": 0, - "opacity": 100, - "angle": 0, - "x": 760.6720418266365, - "y": 202.11820636226628, - "strokeColor": "#428f29", - "backgroundColor": "#FFFFFF", - "width": 12.320199869673417, - "height": 18.184807149251014, - "seed": 1005334749, - "groupIds": [ - "zl1s8cNmh8UrJcf74pI-f" - ], - "strokeSharpness": "sharp", - "boundElements": [], - "updated": 1662376608528, - "link": null, - "locked": false, - "lastCommittedPoint": null, - "startArrowhead": null, - "endArrowhead": null, - "points": [ - [ - 0, - 0 - ], - [ - 0, - 0 - ], - [ - 0.29448232745354375, - 2.6187410609760664 - ], - [ - 0.6405902343969956, - 5.014246425338673 - ], - [ - 1.0471563615902326, - 7.2487553513807 - ], - [ - 1.5230133497931106, - 9.384511184688263 - ], - [ - 2.717931494090582, - 13.608722649918137 - ], - [ - 3.4546620189981816, - 15.82166088571943 - ], - [ - 4.296017033424848, - 18.184807149251014 - ], - [ - 2.0584283319027072, - 17.818516188132502 - ], - [ - -0.05507116771784126, - 17.29105916602271 - ], - [ - -2.0054805130394264, - 16.552538406662148 - ], - [ - -3.7537915989014934, - 15.553035797325172 - ], - [ - -4.5399712196319015, - 14.939819187791205 - ], - [ - -5.260998363790126, - 14.242645487165886 - ], - [ - -5.9119989341498105, - 13.455265224036966 - ], - [ - -6.488096789837993, - 12.571449363458553 - ], - [ - -6.984415789981686, - 11.584956608605028 - ], - [ - -7.39608081553121, - 10.48954361900395 - ], - [ - -7.718214703790242, - 9.278975228769639 - ], - [ - -7.945942846620827, - 7.947014228369632 - ], - [ - -8.024182836248567, - 6.4582932691250114 - ], - [ - -7.856660523308257, - 5.005164459689245 - ], - [ - -7.413178985109507, - 3.6405909462753625 - ], - [ - -6.663539766226968, - 2.4175481369762 - ], - [ - -6.164475126828098, - 1.8756507077379005 - ], - [ - -5.577546965793577, - 1.388997134358164 - ], - [ - -4.898980667787072, - 0.9642108755835823 - ], - [ - -4.125001617472318, - 0.6079113028674633 - ], - [ - -3.2518351995130104, - 0.326717787663117 - ], - [ - -2.2757067985728305, - 0.12725583236376134 - ], - [ - -1.1928407774922007, - 0.016142764776073733 - ], - [ - 0.0005354354185769239, - -3.17415905654013e-16 - ], - [ - 0, - 0 - ] - ] - }, - { - "type": "line", - "version": 1080, - "versionNonce": 2043231994, - "isDeleted": false, - "id": "Ut5FMjc52z6fgsL0J6BGw", - "fillStyle": "solid", - "strokeWidth": 1, - "strokeStyle": "solid", - "roughness": 0, - "opacity": 100, - "angle": 0, - "x": 787.9164628574821, - "y": 210.2172928355925, - "strokeColor": "#428f29", - "backgroundColor": "#ffffff", - "width": 1.7480862847321295, - "height": 12.703759133952614, - "seed": 1825675123, - "groupIds": [ - "hnittqP4OOF9j9Lcenkuc", - "zl1s8cNmh8UrJcf74pI-f" - ], - "strokeSharpness": "sharp", - "boundElements": [], - "updated": 1662376608528, - "link": null, - "locked": false, - "lastCommittedPoint": null, - "startArrowhead": null, - "endArrowhead": null, - "points": [ - [ - 0, - 0 - ], - [ - 1.7362985309369154, - 0.8619897145081872 - ], - [ - 1.7362985309369154, - -11.841769419444425 - ], - [ - -0.011787753795213948, - -11.841769419444425 - ], - [ - 0, - 0 - ] - ] - }, - { - "type": "rectangle", - "version": 1107, - "versionNonce": 1370080678, - "isDeleted": false, - "id": "lYxoc6qsCbufQWfkaYPjn", - "fillStyle": "solid", - "strokeWidth": 1, - "strokeStyle": "solid", - "roughness": 0, - "opacity": 100, - "angle": 0.5235987755982983, - "x": 779.0262304756161, - "y": 209.01417476491508, - "strokeColor": "#428f29", - "backgroundColor": "#fff", - "width": 16.75036748829949, - "height": 16.75036748829949, - "seed": 877399357, - "groupIds": [ - "zl1s8cNmh8UrJcf74pI-f" - ], - "strokeSharpness": "round", - "boundElements": [], - "updated": 1662376608528, - "link": null, - "locked": false - }, - { - "type": "line", - "version": 1123, - "versionNonce": 1257983930, - "isDeleted": false, - "id": "W9GQ91KbkZiI8PMWjEt3V", - "fillStyle": "cross-hatch", - "strokeWidth": 1, - "strokeStyle": "solid", - "roughness": 0, - "opacity": 100, - "angle": 0, - "x": 787.5675536338199, - "y": 213.27043987335145, - "strokeColor": "#609926", - "backgroundColor": "none", - "width": 3.9928709593189584, - "height": 8.607162705368937, - "seed": 271855891, - "groupIds": [ - "S0CmrEuo-ZXU3htKaoIxB", - "zl1s8cNmh8UrJcf74pI-f" - ], - "strokeSharpness": "sharp", - "boundElements": [], - "updated": 1662376608528, - "link": null, - "locked": false, - "lastCommittedPoint": null, - "startArrowhead": null, - "endArrowhead": null, - "points": [ - [ - 0, - 0 - ], - [ - 0, - 0 - ], - [ - 0.8708256796103779, - 0.45456506781286815 - ], - [ - 1.6286245156968555, - 0.842039937231826 - ], - [ - 2.2760685651818604, - 1.1791900911006858 - ], - [ - 2.8158269742504354, - 1.4827653083640089 - ], - [ - 3.250574710562407, - 1.7695310718656039 - ], - [ - 3.582983831040201, - 2.0562403013298867 - ], - [ - 3.8157205711314752, - 2.359655338820815 - ], - [ - 3.9514598984960405, - 2.6965322448426505 - ], - [ - 3.9928709593189584, - 3.083627079899658 - ], - [ - 3.9426287212600317, - 3.5377021860557947 - ], - [ - 3.803399419766926, - 4.075513623815322 - ], - [ - 3.577858022499456, - 4.713820594462351 - ], - [ - 3.268676586380058, - 5.469382299280998 - ], - [ - 2.878524257593769, - 6.358951657995674 - ], - [ - 2.410073093063024, - 7.399294153450177 - ], - [ - 1.8659951497102514, - 8.607162705368937 - ] - ] - }, - { - "type": "line", - "version": 1166, - "versionNonce": 1894654182, - "isDeleted": false, - "id": "1wLhwqt45xhbe4vgxY7NZ", - "fillStyle": "cross-hatch", - "strokeWidth": 1, - "strokeStyle": "solid", - "roughness": 0, - "opacity": 100, - "angle": 0, - "x": 787.19375468775, - "y": 207.89598632136608, - "strokeColor": "#428f29", - "backgroundColor": "#428f29", - "width": 7.847296587542959, - "height": 13.752717991875608, - "seed": 1630625181, - "groupIds": [ - "1pSuO6LCaukkQ9UMQK_hA", - "zl1s8cNmh8UrJcf74pI-f" - ], - "strokeSharpness": "sharp", - "boundElements": [], - "updated": 1662376608528, - "link": null, - "locked": false, - "lastCommittedPoint": null, - "startArrowhead": null, - "endArrowhead": null, - "points": [ - [ - 0, - 0 - ], - [ - 1.43889895103068, - 0.4763351483960596 - ], - [ - -5.121574659356895, - 13.7527179918756 - ], - [ - -6.40839763651228, - 13.124304825957973 - ], - [ - 0, - 0 - ] - ] - }, - { - "type": "ellipse", - "version": 1084, - "versionNonce": 1965901946, - "isDeleted": false, - "id": "yF40ew457jmrEJrTbM6rg", - "fillStyle": "solid", - "strokeWidth": 1, - "strokeStyle": "solid", - "roughness": 0, - "opacity": 100, - "angle": 0, - "x": 784.0794541733192, - "y": 210.66429372466973, - "strokeColor": "#609926", - "backgroundColor": "#609926", - "width": 3.5032895688733885, - "height": 3.5032895688733885, - "seed": 189961907, - "groupIds": [ - "KCLSuwLSEWUC_iP7kSNCk", - "zl1s8cNmh8UrJcf74pI-f" - ], - "strokeSharpness": "sharp", - "boundElements": [], - "updated": 1662376608528, - "link": null, - "locked": false - }, - { - "type": "ellipse", - "version": 1084, - "versionNonce": 897913894, - "isDeleted": false, - "id": "kzUT99c-It4ecp0bLdMpU", - "fillStyle": "solid", - "strokeWidth": 1, - "strokeStyle": "solid", - "roughness": 0, - "opacity": 100, - "angle": 0, - "x": 780.0842108335173, - "y": 218.95025900946422, - "strokeColor": "#609926", - "backgroundColor": "#609926", - "width": 3.5032895688733885, - "height": 3.5032895688733885, - "seed": 2043519485, - "groupIds": [ - "KCLSuwLSEWUC_iP7kSNCk", - "zl1s8cNmh8UrJcf74pI-f" - ], - "strokeSharpness": "sharp", - "boundElements": [], - "updated": 1662376608528, - "link": null, - "locked": false - }, - { - "type": "ellipse", - "version": 1084, - "versionNonce": 539109690, - "isDeleted": false, - "id": "Hw8JiSvWpyA7wcNoYuOcM", - "fillStyle": "solid", - "strokeWidth": 1, - "strokeStyle": "solid", - "roughness": 0, - "opacity": 100, - "angle": 0, - "x": 786.6541178636505, - "y": 221.90003403980205, - "strokeColor": "#609926", - "backgroundColor": "#609926", - "width": 3.5032895688733885, - "height": 3.5032895688733885, - "seed": 215173203, - "groupIds": [ - "KCLSuwLSEWUC_iP7kSNCk", - "zl1s8cNmh8UrJcf74pI-f" - ], - "strokeSharpness": "sharp", - "boundElements": [], - "updated": 1662376608528, - "link": null, - "locked": false - }, - { - "type": "line", - "version": 641, - "versionNonce": 156999526, - "isDeleted": false, - "id": "xDY61qQQ6Ap2p04GrSIhU", - "fillStyle": "cross-hatch", - "strokeWidth": 1, - "strokeStyle": "solid", - "roughness": 1, - "opacity": 100, - "angle": 0, - "x": 943.7650494170268, - "y": 207.5536810655546, - "strokeColor": "#000000", - "backgroundColor": "#fa5252", - "width": 21.361340598602617, - "height": 21.479359054948496, - "seed": 1526894483, - "groupIds": [ - "hLaUC0pyklAgiIpkyHRSs" - ], - "strokeSharpness": "sharp", - "boundElements": [], - "updated": 1662376608528, - "link": null, - "locked": false, - "startBinding": null, - "endBinding": null, - "lastCommittedPoint": null, - "startArrowhead": null, - "endArrowhead": null, - "points": [ - [ - 0, - 0 - ], - [ - 2.9504614086469867, - 4.012627515759613 - ], - [ - -11.093734896511851, - 11.919864090932956 - ], - [ - 3.776590603068043, - 16.640602344767817 - ], - [ - 2.2423506705715397, - 21.479359054948496 - ], - [ - -17.584749995534565, - 14.988343955925606 - ], - [ - -17.584749995534565, - 8.73336576959445 - ], - [ - 0, - 0 - ] - ] - }, - { - "type": "line", - "version": 763, - "versionNonce": 54325754, - "isDeleted": false, - "id": "vUg5B5lluM1lc6gwDspMM", - "fillStyle": "cross-hatch", - "strokeWidth": 1, - "strokeStyle": "solid", - "roughness": 1, - "opacity": 100, - "angle": 0, - "x": 972.9111084975855, - "y": 208.52784762699463, - "strokeColor": "#000000", - "backgroundColor": "#fa5252", - "width": 22.550726855738834, - "height": 21.479359054948496, - "seed": 937305885, - "groupIds": [ - "hLaUC0pyklAgiIpkyHRSs" - ], - "strokeSharpness": "sharp", - "boundElements": [], - "updated": 1662376608528, - "link": null, - "locked": false, - "startBinding": null, - "endBinding": null, - "lastCommittedPoint": null, - "startArrowhead": null, - "endArrowhead": null, - "points": [ - [ - 0, - 0 - ], - [ - -3.114741278416954, - 4.012627515759613 - ], - [ - 11.71142720684779, - 11.919864090932956 - ], - [ - -3.986868836373726, - 16.64060234476782 - ], - [ - -2.367203371596897, - 21.479359054948496 - ], - [ - 18.563858019365114, - 14.988343955925602 - ], - [ - 18.563858019365114, - 8.73336576959445 - ], - [ - 0, - 0 - ] - ] - }, - { - "type": "line", - "version": 595, - "versionNonce": 280937126, - "isDeleted": false, - "id": "YKMjthBrNNw97pyLkbxOg", - "fillStyle": "cross-hatch", - "strokeWidth": 1, - "strokeStyle": "solid", - "roughness": 1, - "opacity": 100, - "angle": 0, - "x": 948.8645995700572, - "y": 242.90905653246233, - "strokeColor": "#000000", - "backgroundColor": "#fa5252", - "width": 19.827100666106297, - "height": 47.32540099469423, - "seed": 1506878771, - "groupIds": [ - "hLaUC0pyklAgiIpkyHRSs" - ], - "strokeSharpness": "sharp", - "boundElements": [], - "updated": 1662376608528, - "link": null, - "locked": false, - "startBinding": null, - "endBinding": null, - "lastCommittedPoint": null, - "startArrowhead": null, - "endArrowhead": null, - "points": [ - [ - 0, - 0 - ], - [ - 13.218067110737529, - -47.20738253834822 - ], - [ - 19.827100666106297, - -47.20738253834822 - ], - [ - 6.963088924406386, - 0.1180184563460247 - ], - [ - 0, - 0 - ] - ] - }, - { - "type": "rectangle", - "version": 480, - "versionNonce": 1904255674, - "isDeleted": false, - "id": "VWN6cXO1jiN8bNt1WAl7V", - "fillStyle": "cross-hatch", - "strokeWidth": 2, - "strokeStyle": "solid", - "roughness": 1, - "opacity": 90, - "angle": 0, - "x": 910, - "y": 178, - "strokeColor": "#000000", - "backgroundColor": "transparent", - "width": 101, - "height": 78, - "seed": 684609747, - "groupIds": [], - "strokeSharpness": "sharp", - "boundElements": [], - "updated": 1662376608528, - "link": null, - "locked": false - }, - { - "type": "text", - "version": 292, - "versionNonce": 1583054310, - "isDeleted": false, - "id": "HQ1vT1MZXpaMNC0w2UQgN", - "fillStyle": "cross-hatch", - "strokeWidth": 2, - "strokeStyle": "solid", - "roughness": 1, - "opacity": 90, - "angle": 0, - "x": 917, - "y": 155, - "strokeColor": "#000000", - "backgroundColor": "transparent", - "width": 84, - "height": 20, - "seed": 1196888499, - "groupIds": [], - "strokeSharpness": "sharp", - "boundElements": [], - "updated": 1662376608528, - "link": null, - "locked": false, - "fontSize": 16, - "fontFamily": 1, - "text": "DevSpaces", - "baseline": 14, - "textAlign": "center", - "verticalAlign": "top", - "containerId": null, - "originalText": "DevSpaces" - }, - { - "type": "line", - "version": 624, - "versionNonce": 1703951226, - "isDeleted": false, - "id": "yTMGBKLcl_krJLO3aWwCo", - "fillStyle": "solid", - "strokeWidth": 4, - "strokeStyle": "solid", - "roughness": 1, - "opacity": 100, - "angle": 0, - "x": 347.39587833125324, - "y": 306.7338110374251, - "strokeColor": "black", - "backgroundColor": "black", - "width": 180.44190813894443, - "height": 0.16613541482645627, - "seed": 269989267, - "groupIds": [ - "Cy3KZUF141Ea66DHXydV1" - ], - "strokeSharpness": "round", - "boundElements": [], - "updated": 1662376608528, - "link": null, - "locked": false, - "startBinding": null, - "endBinding": null, - "lastCommittedPoint": null, - "startArrowhead": null, - "endArrowhead": null, - "points": [ - [ - 0, - 0 - ], - [ - 180.44190813894443, - -0.16613541482645627 - ] - ] - }, - { - "type": "line", - "version": 566, - "versionNonce": 658428198, - "isDeleted": false, - "id": "a5nod2XbFPVWuWRhn2Ua2", - "fillStyle": "solid", - "strokeWidth": 4, - "strokeStyle": "solid", - "roughness": 1, - "opacity": 100, - "angle": 0, - "x": 348.0536140237087, - "y": 306.9778100669535, - "strokeColor": "black", - "backgroundColor": "black", - "width": 29.012907644169655, - "height": 58.08933795512363, - "seed": 1721131293, - "groupIds": [ - "Cy3KZUF141Ea66DHXydV1" - ], - "strokeSharpness": "round", - "boundElements": [], - "updated": 1662376608528, - "link": null, - "locked": false, - "startBinding": null, - "endBinding": null, - "lastCommittedPoint": null, - "startArrowhead": null, - "endArrowhead": null, - "points": [ - [ - 0, - 0 - ], - [ - -10.296989190345768, - -2.7467411689925427 - ], - [ - -14.193104578778739, - -7.075372217895264 - ], - [ - -17.12757102104723, - -14.809660495943007 - ], - [ - -16.25366056491633, - -32.74417995752738 - ], - [ - -13.10830588800304, - -40.96408323021325 - ], - [ - -4.822598747791973, - -50.77138635998338 - ], - [ - 6.5787372689089665, - -58.089337955123625 - ], - [ - 11.885336623122425, - -57.994755862867336 - ] - ] - }, - { - "type": "line", - "version": 607, - "versionNonce": 229555258, - "isDeleted": false, - "id": "BDtRB2MzcmTx5Hgz-V5ax", - "fillStyle": "solid", - "strokeWidth": 4, - "strokeStyle": "solid", - "roughness": 1, - "opacity": 100, - "angle": 0, - "x": 360.2004225510271, - "y": 246.95648206020837, - "strokeColor": "black", - "backgroundColor": "black", - "width": 87.3743402045856, - "height": 60.07029758310275, - "seed": 1028754227, - "groupIds": [ - "Cy3KZUF141Ea66DHXydV1" - ], - "strokeSharpness": "round", - "boundElements": [], - "updated": 1662376608528, - "link": null, - "locked": false, - "startBinding": null, - "endBinding": null, - "lastCommittedPoint": null, - "startArrowhead": null, - "endArrowhead": null, - "points": [ - [ - 0, - 0 - ], - [ - -6.025598732340979, - -21.1279197356401 - ], - [ - -6.406945305423115, - -32.67742851430983 - ], - [ - -3.549899306760304, - -39.69384046690258 - ], - [ - 5.705739293074423, - -50.91185568252725 - ], - [ - 16.1726603909173, - -56.94256079498816 - ], - [ - 26.503200779851944, - -59.91466704948113 - ], - [ - 45.020163433675535, - -60.07029758310275 - ], - [ - 63.567132651090674, - -55.907860782021665 - ], - [ - 68.71201242047414, - -52.3039496607967 - ], - [ - 80.96739489916247, - -31.279192841738087 - ] - ] - }, - { - "type": "line", - "version": 583, - "versionNonce": 1993718886, - "isDeleted": false, - "id": "3e7pQ8RjxCYV31m-LfEZK", - "fillStyle": "solid", - "strokeWidth": 4, - "strokeStyle": "solid", - "roughness": 1, - "opacity": 100, - "angle": 0, - "x": 440.39398966562135, - "y": 214.77545838538146, - "strokeColor": "black", - "backgroundColor": "black", - "width": 69.02941518201982, - "height": 34.30764475453057, - "seed": 583415165, - "groupIds": [ - "Cy3KZUF141Ea66DHXydV1" - ], - "strokeSharpness": "round", - "boundElements": [], - "updated": 1662376608528, - "link": null, - "locked": false, - "startBinding": null, - "endBinding": null, - "lastCommittedPoint": null, - "startArrowhead": null, - "endArrowhead": null, - "points": [ - [ - 0, - 0 - ], - [ - 10.083433705603934, - -6.510757486830897 - ], - [ - 24.319495049103143, - -9.086233123277818 - ], - [ - 54.3109325249198, - -5.877671638144303 - ], - [ - 65.34260873541108, - 1.8844999320361318 - ], - [ - 69.02941518201982, - 25.221411631252746 - ] - ] - }, - { - "type": "line", - "version": 619, - "versionNonce": 1472144634, - "isDeleted": false, - "id": "gtGUk5ADqPSYCmPJoRdko", - "fillStyle": "solid", - "strokeWidth": 4, - "strokeStyle": "solid", - "roughness": 1, - "opacity": 100, - "angle": 0, - "x": 527.0558925996764, - "y": 306.9861957034516, - "strokeColor": "black", - "backgroundColor": "black", - "width": 45.23585973757425, - "height": 72.2376608085893, - "seed": 2080353491, - "groupIds": [ - "Cy3KZUF141Ea66DHXydV1" - ], - "strokeSharpness": "round", - "boundElements": [], - "updated": 1662376608528, - "link": null, - "locked": false, - "startBinding": null, - "endBinding": null, - "lastCommittedPoint": null, - "startArrowhead": null, - "endArrowhead": null, - "points": [ - [ - 0, - 0 - ], - [ - 16.245939577793376, - -8.789817408548252 - ], - [ - 27.277124452740487, - -21.062607203659148 - ], - [ - 30.846396418100213, - -32.47282235555152 - ], - [ - 30.85453854997536, - -48.791269021508704 - ], - [ - 25.221025581896626, - -61.49790810213788 - ], - [ - 14.423716425983113, - -70.51089713393569 - ], - [ - 3.3780020570864284, - -72.23766080858931 - ], - [ - -9.197380242452413, - -69.04397977136546 - ], - [ - -14.381321187598894, - -65.757015171538 - ] - ] - }, - { - "type": "line", - "version": 434, - "versionNonce": 1659715494, - "isDeleted": false, - "id": "NthltWo1RmoHdn5C8gHjZ", - "fillStyle": "cross-hatch", - "strokeWidth": 2, - "strokeStyle": "solid", - "roughness": 1, - "opacity": 100, - "angle": 0, - "x": 438.9134165238899, - "y": 215.86291312152872, - "strokeColor": "#000000", - "backgroundColor": "black", - "width": 90.68346509750657, - "height": 88.44483190099747, - "seed": 1892260829, - "groupIds": [ - "9wXTiErT68Cqf6y0xR_9_", - "M7epUKFIsRBu-b5nc04_q" - ], - "strokeSharpness": "sharp", - "boundElements": [], - "updated": 1662376608528, - "link": null, - "locked": false, - "lastCommittedPoint": null, - "startArrowhead": null, - "endArrowhead": null, - "points": [ - [ - 0, - 0 - ], - [ - 0, - 0 - ], - [ - -2.333004985917512, - 0.058997671849454036 - ], - [ - -4.635414563912775, - 0.23409153110242187 - ], - [ - -6.904379999542982, - 0.5224328433152432 - ], - [ - -9.137049845283855, - 0.9211728740447143 - ], - [ - -11.330572653611853, - 1.4274628464555406 - ], - [ - -13.482099690083372, - 2.038454153279929 - ], - [ - -15.588776794094258, - 2.7512978905071748 - ], - [ - -17.6477552312013, - 3.5631454932610893 - ], - [ - -19.656186266960788, - 4.471148057530878 - ], - [ - -21.611215740768728, - 5.472456848873321 - ], - [ - -23.5099962747218, - 6.564223471979915 - ], - [ - -25.349675064756244, - 7.743598853272028 - ], - [ - -27.127402019888166, - 9.007734258306755 - ], - [ - -28.840325692593808, - 10.35378095264036 - ], - [ - -30.485595991889852, - 11.778890201829537 - ], - [ - -32.06036147025219, - 13.280213949701132 - ], - [ - -33.561773393237395, - 14.854902105271375 - ], - [ - -34.98697963505134, - 16.500107290637125 - ], - [ - -36.33312942644136, - 18.21297941481486 - ], - [ - -37.59737267642265, - 19.99067109990125 - ], - [ - -38.77685861574224, - 21.830332254913003 - ], - [ - -39.86873579687597, - 23.729116858486606 - ], - [ - -40.870154467975624, - 25.684173463098837 - ], - [ - -41.778263520651876, - 27.692653334306016 - ], - [ - -42.59021218565141, - 29.751707737664752 - ], - [ - -43.303150032855854, - 31.858490651811962 - ], - [ - -43.91422629301104, - 34.01015062922437 - ], - [ - -44.420590196863365, - 36.20383893545793 - ], - [ - -44.819391102334805, - 38.43670683606979 - ], - [ - -45.1077783037594, - 40.705908309696575 - ], - [ - -45.28290113786346, - 43.00859190881471 - ], - [ - -45.34190889898064, - 45.34190889898089 - ], - [ - -45.30409009989871, - 47.21091473183959 - ], - [ - -45.19160633138682, - 49.06066583294157 - ], - [ - -45.0059165259467, - 50.88969985193921 - ], - [ - -44.74847965847283, - 52.69656257772587 - ], - [ - -44.420754592579954, - 54.479794373034586 - ], - [ - -44.02420041444127, - 56.23793560059818 - ], - [ - -43.56027595587847, - 57.96953204931015 - ], - [ - -43.030440006320134, - 59.67312408190335 - ], - [ - -42.436151948683005, - 61.34725206111081 - ], - [ - -41.77887023326156, - 62.99046177582626 - ], - [ - -41.060054158187256, - 64.60129358878184 - ], - [ - -40.281162682457605, - 66.17828243655016 - ], - [ - -38.54898834761566, - 69.22492524442087 - ], - [ - -36.594019239847, - 72.11872395362188 - ], - [ - -34.42792703112879, - 74.84801774449969 - ], - [ - -32.062382715166734, - 77.40113494507605 - ], - [ - -29.509057963937888, - 79.76641473569669 - ], - [ - -26.779625805958972, - 81.93219629670706 - ], - [ - -23.88575520012625, - 83.88681338229053 - ], - [ - -20.839119174956807, - 85.61859974663234 - ], - [ - -19.26216288415355, - 86.39728638479001 - ], - [ - -17.651390758966954, - 87.11589457007697 - ], - [ - -16.00826243666456, - 87.77295923906482 - ], - [ - -14.334237554512896, - 88.36702618064737 - ], - [ - -13.550545282976657, - 88.44290018773684 - ], - [ - -12.894221284943626, - 88.37164926968703 - ], - [ - -12.35821697747815, - 88.17705086331902 - ], - [ - -11.935478351481443, - 87.88286612697115 - ], - [ - -11.618954110936556, - 87.51287249746414 - ], - [ - -11.401598385986603, - 87.09083655929666 - ], - [ - -11.2763544544528, - 86.64053032312967 - ], - [ - -11.236173733399276, - 86.18572037346115 - ], - [ - -11.238029480408088, - 85.66800494112226 - ], - [ - -11.24308394923463, - 84.94340084810192 - ], - [ - -11.250574764280728, - 84.03857767495202 - ], - [ - -11.259731410705626, - 82.98017787141877 - ], - [ - -11.269788799831183, - 81.79485473957058 - ], - [ - -11.2799791298972, - 80.50927243379788 - ], - [ - -11.297692831974189, - 77.74392180410848 - ], - [ - -12.45136788069647, - 77.9698942724798 - ], - [ - -13.548060101309659, - 78.13584254958863 - ], - [ - -14.58910704246193, - 78.2452393783757 - ], - [ - -15.57583811356044, - 78.3015357971376 - ], - [ - -16.509596289413995, - 78.30821540113732 - ], - [ - -17.391710979429376, - 78.26872922867169 - ], - [ - -19.006354670378716, - 78.06514509994508 - ], - [ - -20.4304505840305, - 77.71851109287377 - ], - [ - -21.674680118006513, - 77.25655488937309 - ], - [ - -22.74972331339023, - 76.70700959751964 - ], - [ - -23.666258854723083, - 76.09758662074707 - ], - [ - -24.434968139627653, - 75.45602449329205 - ], - [ - -25.066532565726916, - 74.81005089707034 - ], - [ - -25.57162946102204, - 74.18738266167597 - ], - [ - -25.96094157967604, - 73.6157528951853 - ], - [ - -26.245148962770763, - 73.12288927951428 - ], - [ - -26.434930294849266, - 72.73651407041748 - ], - [ - -26.54096697353316, - 72.48436037597111 - ], - [ - -26.573939039904985, - 72.39414502576972 - ], - [ - -26.970371638127297, - 71.45595638958659 - ], - [ - -27.38243157958182, - 70.60434757583923 - ], - [ - -27.804430891163236, - 69.83573189220905 - ], - [ - -28.230687025927477, - 69.1465117940564 - ], - [ - -28.65551472384932, - 68.53308973674125 - ], - [ - -29.073226011823234, - 67.99187360178422 - ], - [ - -29.478138342905083, - 67.5192604183851 - ], - [ - -29.8645664570704, - 67.11166349422496 - ], - [ - -30.55922492492941, - 66.47712281890276 - ], - [ - -31.111719335201855, - 66.05949292334141 - ], - [ - -31.320443394788477, - 65.92303040426167 - ], - [ - -31.476570320768527, - 65.8300097289038 - ], - [ - -31.574416209657507, - 65.776833352627 - ], - [ - -31.60829444489064, - 65.75990373079227 - ], - [ - -32.28272554166148, - 65.26516808962968 - ], - [ - -32.77604631138382, - 64.83344645435486 - ], - [ - -33.10724424739261, - 64.4604521579007 - ], - [ - -33.29530277340284, - 64.1418931070391 - ], - [ - -33.3592093827495, - 63.87348263470288 - ], - [ - -33.31795021222773, - 63.65092864766367 - ], - [ - -33.190511398632616, - 63.46992820037207 - ], - [ - -32.99588043529974, - 63.32620547808253 - ], - [ - -32.480979823898714, - 63.13340855711486 - ], - [ - -31.92514154200586, - 63.03819571277549 - ], - [ - -31.480251970901577, - 63.00624647772298 - ], - [ - -31.346879650422984, - 63.00326751541921 - ], - [ - -31.298202918026668, - 63.00322410613244 - ], - [ - -30.469796368050595, - 63.10844279106908 - ], - [ - -29.69226821523324, - 63.29589494360499 - ], - [ - -28.965972516569945, - 63.553290309426785 - ], - [ - -28.29126332905571, - 63.8683549127046 - ], - [ - -27.09802342853555, - 64.62234166669808 - ], - [ - -26.115380969633293, - 65.45959285885061 - ], - [ - -25.346171121391023, - 66.28184071626823 - ], - [ - -25.04248924702466, - 66.65663107196228 - ], - [ - -24.793227696308843, - 66.99082289221691 - ], - [ - -24.598740526237915, - 67.2721313488808 - ], - [ - -24.45938315034795, - 67.48827161380174 - ], - [ - -24.375508269093473, - 67.62696428498823 - ], - [ - -24.34747265254968, - 67.67592453428857 - ], - [ - -23.56128977318537, - 68.87332087401585 - ], - [ - -22.725578254172152, - 69.87560874825559 - ], - [ - -21.849852868551064, - 70.69711322163771 - ], - [ - -20.943627032822803, - 71.35216478495222 - ], - [ - -20.016415520028026, - 71.85509392898992 - ], - [ - -19.077733103208118, - 72.22023114454112 - ], - [ - -18.13708912924295, - 72.46190149623564 - ], - [ - -17.20400108425366, - 72.59444090102478 - ], - [ - -16.28798102820094, - 72.63216899737691 - ], - [ - -15.398546447206176, - 72.58942712840428 - ], - [ - -14.545209401229595, - 72.48053493257578 - ], - [ - -13.737481950231828, - 72.31982290068227 - ], - [ - -12.984878867253943, - 72.12162152351334 - ], - [ - -12.296914925336747, - 71.90026129185998 - ], - [ - -11.683104897520995, - 71.6700726965127 - ], - [ - -11.152960843767687, - 71.44538080210074 - ], - [ - -10.965647058333275, - 70.38979717604575 - ], - [ - -10.713873195146164, - 69.4207553893005 - ], - [ - -10.405222313986727, - 68.53750663166868 - ], - [ - -10.047282900795892, - 67.73931294527466 - ], - [ - -9.64763801535355, - 67.02543094608372 - ], - [ - -9.2138707174405, - 66.39512267622005 - ], - [ - -8.753564066836699, - 65.84763932548769 - ], - [ - -8.274306549483242, - 65.38224836217267 - ], - [ - -10.165928620742303, - 65.13247132617632 - ], - [ - -12.053388826633455, - 64.8027126793317 - ], - [ - -13.920422250025517, - 64.37723112902806 - ], - [ - -15.750761260705929, - 63.84029080881645 - ], - [ - -17.528140941544, - 63.176144999926436 - ], - [ - -19.236299088487897, - 62.36906326206916 - ], - [ - -20.858970784406484, - 61.40330430263523 - ], - [ - -22.37988839908751, - 60.26312682901367 - ], - [ - -23.782788371940228, - 58.93278954859515 - ], - [ - -25.051405785832635, - 57.396556594930246 - ], - [ - -25.630275407429906, - 56.54630974755478 - ], - [ - -26.169475723632893, - 55.63868124924807 - ], - [ - -26.666971924125107, - 54.67171768210642 - ], - [ - -27.120731911669928, - 53.64343849742101 - ], - [ - -27.528723589031245, - 52.55187942496687 - ], - [ - -27.888912145892334, - 51.3950761945178 - ], - [ - -28.199265485016838, - 50.17105910968724 - ], - [ - -28.457748796088204, - 48.8778639002498 - ], - [ - -28.662331338410123, - 47.51351544365743 - ], - [ - -28.81097965820635, - 46.07605489584565 - ], - [ - -28.901658945159966, - 44.56350713426758 - ], - [ - -28.932337102034978, - 42.97391060177688 - ], - [ - -28.85056214502714, - 41.1599857276509 - ], - [ - -28.610249690084114, - 39.43049462934655 - ], - [ - -28.21892446575663, - 37.7850249186397 - ], - [ - -27.684105774435523, - 36.2231642073059 - ], - [ - -27.01331698813141, - 34.744500107121155 - ], - [ - -26.214080122315465, - 33.348617516780905 - ], - [ - -25.293915835917574, - 32.03510676114149 - ], - [ - -24.260347500949536, - 30.80355273889771 - ], - [ - -24.360051849927515, - 30.549179744666333 - ], - [ - -24.477631329268153, - 30.216181679797106 - ], - [ - -24.605620898188874, - 29.807249920069406 - ], - [ - -24.736558228988592, - 29.325070415101326 - ], - [ - -24.862979637425155, - 28.772331827591074 - ], - [ - -24.97742415233773, - 28.151722820237268 - ], - [ - -25.072426732944386, - 27.465934768818673 - ], - [ - -25.140523695003193, - 26.71765090987321 - ], - [ - -25.174254067353225, - 25.9095626191791 - ], - [ - -25.1661541657524, - 25.0443585594357 - ], - [ - -25.10875894941915, - 24.124727393340915 - ], - [ - -24.99460744719204, - 23.15335507051305 - ], - [ - -24.81623597482986, - 22.132932966730667 - ], - [ - -24.566182204630604, - 21.06614703161219 - ], - [ - -24.236981095812496, - 19.955687284396248 - ], - [ - -23.82117032067407, - 18.804242387781017 - ], - [ - -23.77629597048974, - 18.791987403513843 - ], - [ - -23.640643305916058, - 18.763334561173963 - ], - [ - -23.412678079974967, - 18.73044660029538 - ], - [ - -23.09086197606615, - 18.705487616950567 - ], - [ - -22.673655321050713, - 18.70062170721326 - ], - [ - -22.159521154869083, - 18.72801161061622 - ], - [ - -21.54692387400189, - 18.799821423233112 - ], - [ - -20.83432244877036, - 18.92821659767702 - ], - [ - -20.020181275654238, - 19.12535851694082 - ], - [ - -19.102964751135296, - 19.403411277098115 - ], - [ - -18.081129132452986, - 19.77454033076188 - ], - [ - -16.953141529168928, - 20.250908417465496 - ], - [ - -15.717460911603098, - 20.844679633282226 - ], - [ - -14.372554389317028, - 21.56801807428534 - ], - [ - -12.916880932630704, - 22.43308648000763 - ], - [ - -11.348899511864204, - 23.45204894652275 - ], - [ - -8.59178850741722, - 22.79211655152841 - ], - [ - -5.763263800095671, - 22.318812889161563 - ], - [ - -2.8903313924218423, - 22.03073665338438 - ], - [ - -5.329070518200751e-15, - 21.92648789469881 - ], - [ - 2.890887573908456, - 22.03073665338458 - ], - [ - 5.765575344615284, - 22.31881288916172 - ], - [ - 8.597190250538347, - 22.792116551528352 - ], - [ - 11.358861943174986, - 23.452048946522723 - ], - [ - 12.924965912288997, - 22.433086480007674 - ], - [ - 14.37887857978103, - 21.56801807428532 - ], - [ - 15.722146401492719, - 20.844679633282134 - ], - [ - 16.956304980941468, - 20.250908417465492 - ], - [ - 18.082889921647308, - 19.774540330761795 - ], - [ - 19.103442253289927, - 19.403411277097927 - ], - [ - 20.01949215322719, - 19.12535851694082 - ], - [ - 20.832591503461117, - 18.92821659767688 - ], - [ - 21.544270481349397, - 18.79982142323301 - ], - [ - 22.156064690411192, - 18.728011610616132 - ], - [ - 22.669520586487415, - 18.700621707213216 - ], - [ - 23.086168346935864, - 18.705487616950517 - ], - [ - 23.407549001436678, - 18.73044660029521 - ], - [ - 23.63520357966982, - 18.763334561174112 - ], - [ - 23.770667685153825, - 18.791987403513545 - ], - [ - 23.81548234756883, - 18.8042423877812 - ], - [ - 24.2323471544515, - 19.955687284396205 - ], - [ - 24.562458501751053, - 21.066147031612143 - ], - [ - 24.81328821295125, - 22.132932966730763 - ], - [ - 24.99230268537377, - 23.1533550705131 - ], - [ - 25.10699002098392, - 24.12472739334082 - ], - [ - 25.164811190943627, - 25.044358559435736 - ], - [ - 25.173248871056757, - 25.909562619179177 - ], - [ - 25.139769458645844, - 26.71765090987296 - ], - [ - 25.071855629515515, - 27.465934768818585 - ], - [ - 24.976979207148528, - 28.151722820237225 - ], - [ - 24.862606588867294, - 28.772331827591067 - ], - [ - 24.73622045047597, - 29.325070415101298 - ], - [ - 24.605292615457984, - 29.807249920069527 - ], - [ - 24.4772949072958, - 30.216181679797213 - ], - [ - 24.35970457563374, - 30.549179744666205 - ], - [ - 24.259993443954357, - 30.80355273889773 - ], - [ - 25.295153000590272, - 32.03509048265879 - ], - [ - 26.215538403042387, - 33.34856596825297 - ], - [ - 27.013976266674263, - 34.74440514930622 - ], - [ - 27.683309485331918, - 36.22303126636527 - ], - [ - 28.216370100539216, - 37.784870273055546 - ], - [ - 28.605995579981908, - 39.43034540992336 - ], - [ - 28.84502339134516, - 41.15988534367513 - ], - [ - 28.92629642847487, - 42.973910601776694 - ], - [ - 28.895557227290276, - 44.56710196582689 - ], - [ - 28.804707016270182, - 46.08271279520211 - ], - [ - 28.655775179569815, - 47.522734490932336 - ], - [ - 28.45080195366723, - 48.88915031480646 - ], - [ - 28.191816722717704, - 50.18396252017577 - ], - [ - 27.880859723199023, - 51.40915165574849 - ], - [ - 27.519971191589214, - 52.56670912255498 - ], - [ - 27.111175085882792, - 53.65862089546448 - ], - [ - 26.656517068718188, - 54.68688922782765 - ], - [ - 26.15803195041187, - 55.6534946683537 - ], - [ - 25.61774911512035, - 56.56042319191131 - ], - [ - 25.037708799320793, - 57.40967705185223 - ], - [ - 23.76650039362528, - 58.943088401878114 - ], - [ - 22.360685215859174, - 60.269659926670556 - ], - [ - 20.836558027038624, - 61.40530112982597 - ], - [ - 19.210391883535696, - 62.36592694110141 - ], - [ - 17.49848154636809, - 63.16746856873621 - ], - [ - 15.717110924228798, - 63.8258355163267 - ], - [ - 13.882569351974272, - 64.35695356595213 - ], - [ - 12.011135312137124, - 64.77673764736849 - ], - [ - 10.119098139573655, - 65.1011026903341 - ], - [ - 8.222747169138643, - 65.3459744769268 - ], - [ - 8.821784474054883, - 65.9372795026398 - ], - [ - 9.38931206294702, - 66.65675044750077 - ], - [ - 9.910429698135601, - 67.50577640868642 - ], - [ - 10.370220863459341, - 68.48573563105079 - ], - [ - 10.753785321238809, - 69.59801721177008 - ], - [ - 11.04621740763395, - 70.84399939569968 - ], - [ - 11.232606032644124, - 72.22507128001452 - ], - [ - 11.298050958590181, - 73.74261110957016 - ], - [ - 11.295788249518004, - 75.95781956971322 - ], - [ - 11.289824898749941, - 78.0362019580002 - ], - [ - 11.28139807095829, - 79.95190804416767 - ], - [ - 11.271734078494156, - 81.67909302411292 - ], - [ - 11.262075512190961, - 83.19191209373369 - ], - [ - 11.253643258238341, - 84.46452044892717 - ], - [ - 11.250279038514755, - 85.0026708030071 - ], - [ - 11.247679907470172, - 85.47107328559076 - ], - [ - 11.246014076090944, - 85.86649933097648 - ], - [ - 11.245422624558962, - 86.18572037346107 - ], - [ - 11.28497933711595, - 86.6438728382097 - ], - [ - 11.408858589196662, - 87.09724485525413 - ], - [ - 11.624863200096293, - 87.52161946874517 - ], - [ - 11.940812267591973, - 87.89277972283388 - ], - [ - 12.364514037138463, - 88.18651408783217 - ], - [ - 12.903771328030345, - 88.3786001817291 - ], - [ - 13.566392385722963, - 88.44483190099747 - ], - [ - 14.36019630799386, - 88.3609814374666 - ], - [ - 16.033271611997627, - 87.76631761819101 - ], - [ - 17.675412373026205, - 87.10872661160145 - ], - [ - 19.28517523229533, - 86.38966805496428 - ], - [ - 20.861089700216496, - 85.61059615938672 - ], - [ - 23.905589174553683, - 83.87823462199562 - ], - [ - 26.797277107186517, - 81.92329739292207 - ], - [ - 29.524503530781946, - 79.75741816101691 - ], - [ - 32.075640182650375, - 77.39225231977368 - ], - [ - 34.4390479477797, - 74.83943898420443 - ], - [ - 36.60308771115888, - 72.11063354780316 - ], - [ - 38.55612035777557, - 69.21748055174206 - ], - [ - 40.286512198780315, - 66.17161911103315 - ], - [ - 41.06457482844087, - 64.59506978229311 - ], - [ - 41.78261326683901, - 62.984704619169946 - ], - [ - 42.439173302868426, - 61.34198868509172 - ], - [ - 43.032795299262034, - 59.66838161732542 - ], - [ - 43.562030471074166, - 57.9653267746557 - ], - [ - 44.025424607198474, - 56.2342892205107 - ], - [ - 44.42151264420724, - 54.47672316599658 - ], - [ - 44.748845797154615, - 52.69408824838088 - ], - [ - 45.00597528109472, - 50.88782782644792 - ], - [ - 45.191441458761766, - 49.05941238978664 - ], - [ - 45.303784692887, - 47.210285297181684 - ], - [ - 45.341556198525915, - 45.34190889898056 - ], - [ - 45.282557551663245, - 43.00859190881458 - ], - [ - 45.107455341209516, - 40.70590830969657 - ], - [ - 44.81910372776957, - 38.43670683606979 - ], - [ - 44.42035144578648, - 36.203838935457924 - ], - [ - 43.91404722970327, - 34.01015062922436 - ], - [ - 43.3030452401247, - 31.85849065181214 - ], - [ - 42.59018335917233, - 29.751707737664702 - ], - [ - 41.77831574745031, - 27.6926533343059 - ], - [ - 40.87029656556285, - 25.684173463098794 - ], - [ - 39.868963695631855, - 23.72911685848659 - ], - [ - 38.77718215058297, - 21.83033225491276 - ], - [ - 37.59778981253794, - 19.990671099901334 - ], - [ - 36.33363541594019, - 18.21297941481484 - ], - [ - 34.98757312139429, - 16.500107290637203 - ], - [ - 33.56245166334301, - 14.854902105271293 - ], - [ - 32.061119776230214, - 13.280213949701235 - ], - [ - 30.486426194499074, - 11.778890201829531 - ], - [ - 28.841214226432328, - 10.353780952640255 - ], - [ - 27.128343458794912, - 9.007734258306655 - ], - [ - 25.350657199869232, - 7.743598853272244 - ], - [ - 23.511009610259862, - 6.5642234719797585 - ], - [ - 21.61223857208779, - 5.472456848873151 - ], - [ - 19.65720367211924, - 4.471148057530829 - ], - [ - 17.64875364479667, - 3.5631454932609756 - ], - [ - 15.589731798402966, - 2.751297890507118 - ], - [ - 13.482992293542509, - 2.038454153279929 - ], - [ - 11.331383864658108, - 1.4274628464554961 - ], - [ - 9.137749820032752, - 0.9211728740447716 - ], - [ - 6.904949746431896, - 0.5224328433151588 - ], - [ - 4.635821525976269, - 0.23409153110225134 - ], - [ - 2.3332247454316644, - 0.058997671849483124 - ], - [ - 0, - 0 - ] - ] - }, - { - "type": "line", - "version": 431, - "versionNonce": 2101638586, - "isDeleted": false, - "id": "jo_HsTUFmAuaQhr0bKQYK", - "fillStyle": "cross-hatch", - "strokeWidth": 2, - "strokeStyle": "solid", - "roughness": 1, - "opacity": 100, - "angle": 0, - "x": 409.9910689730186, - "y": 280.35433772462017, - "strokeColor": "#000000", - "backgroundColor": "black", - "width": 1.2433247216556111, - "height": 0.9736323188196985, - "seed": 252992627, - "groupIds": [ - "5H1W_moj_Sm0BoAw7Fq0S", - "M7epUKFIsRBu-b5nc04_q" - ], - "strokeSharpness": "sharp", - "boundElements": [], - "updated": 1662376608528, - "link": null, - "locked": false, - "lastCommittedPoint": null, - "startArrowhead": null, - "endArrowhead": null, - "points": [ - [ - 0, - 0 - ], - [ - 0, - 0 - ], - [ - -0.1180569814948198, - 0.13828028296244899 - ], - [ - -0.3048905516942879, - 0.21145206195117172 - ], - [ - -0.5335299781205629, - 0.21348144610703637 - ], - [ - -0.777005884836039, - 0.13832911841005657 - ], - [ - -0.994399592911992, - 0.0012642954767824732 - ], - [ - -1.1439500119485713, - -0.17300228620670577 - ], - [ - -1.211820431792167, - -0.3619466329746887 - ], - [ - -1.1841782119098339, - -0.5430176203572481 - ], - [ - -1.0670599562411194, - -0.6847380892951416 - ], - [ - -0.880132784767091, - -0.7587834801798348 - ], - [ - -0.6499984510281438, - -0.7601508727126616 - ], - [ - -0.40326142164508727, - -0.6838373465949452 - ], - [ - -0.18512839915406332, - -0.5465337725845147 - ], - [ - -0.035206288099637134, - -0.3713881528442098 - ], - [ - 0.03150428986344346, - -0.18151050641095878 - ], - [ - 0, - 0 - ] - ] - }, - { - "type": "line", - "version": 434, - "versionNonce": 1068653286, - "isDeleted": false, - "id": "dYxOARM8QmbX1qbxsLmaX", - "fillStyle": "cross-hatch", - "strokeWidth": 2, - "strokeStyle": "solid", - "roughness": 1, - "opacity": 100, - "angle": 0, - "x": 412.22144762234365, - "y": 282.3443225265891, - "strokeColor": "#000000", - "backgroundColor": "black", - "width": 1.3174867749984642, - "height": 1.3444452986143876, - "seed": 1615075389, - "groupIds": [ - "5H1W_moj_Sm0BoAw7Fq0S", - "M7epUKFIsRBu-b5nc04_q" - ], - "strokeSharpness": "sharp", - "boundElements": [], - "updated": 1662376608528, - "link": null, - "locked": false, - "lastCommittedPoint": null, - "startArrowhead": null, - "endArrowhead": null, - "points": [ - [ - 0, - 0 - ], - [ - 0, - 0 - ], - [ - -0.19554662797559091, - 0.09644458285098789 - ], - [ - -0.4364654563930879, - 0.08930375517955805 - ], - [ - -0.6906539611559186, - -0.014851402231530919 - ], - [ - -0.9260055485469003, - -0.2094498085995406 - ], - [ - -1.1027044068289547, - -0.46141358741610194 - ], - [ - -1.1858223386457292, - -0.7227754768154195 - ], - [ - -1.1721931791444442, - -0.9630675836553646 - ], - [ - -1.0586480503918605, - -1.1518165886329488 - ], - [ - -0.8610354116747114, - -1.2480007157633999 - ], - [ - -0.6213822352742093, - -1.2406753986232584 - ], - [ - -0.36779467782491176, - -1.1364659796037238 - ], - [ - -0.12837482634073188, - -0.9420086534176733 - ], - [ - 0.04855193069680286, - -0.6883953217043643 - ], - [ - 0.13166443635273417, - -0.4269520398923845 - ], - [ - 0.11676148559318644, - -0.18744130021405336 - ], - [ - -0.00035541353531609593, - 0.00035812661574397003 - ] - ] - }, - { - "type": "line", - "version": 434, - "versionNonce": 258059898, - "isDeleted": false, - "id": "bEK86T7KAoWtz-X7SrDxa", - "fillStyle": "cross-hatch", - "strokeWidth": 2, - "strokeStyle": "solid", - "roughness": 1, - "opacity": 100, - "angle": 0, - "x": 413.7516331197485, - "y": 284.89048338896254, - "strokeColor": "#000000", - "backgroundColor": "black", - "width": 1.434260469453551, - "height": 1.6271265739719378, - "seed": 1205229075, - "groupIds": [ - "5H1W_moj_Sm0BoAw7Fq0S", - "M7epUKFIsRBu-b5nc04_q" - ], - "strokeSharpness": "sharp", - "boundElements": [], - "updated": 1662376608528, - "link": null, - "locked": false, - "lastCommittedPoint": null, - "startArrowhead": null, - "endArrowhead": null, - "points": [ - [ - 0, - 0 - ], - [ - 0, - 0 - ], - [ - -0.23616415497744653, - 0.07705148399258024 - ], - [ - -0.5056313721383141, - 0.02804782540547271 - ], - [ - -0.775566595672025, - -0.13276730354438726 - ], - [ - -1.013130700147375, - -0.39117193528343286 - ], - [ - -1.1692589826677473, - -0.7026932555297591 - ], - [ - -1.2206732132100502, - -1.0097488454010062 - ], - [ - -1.1668036448855883, - -1.2776004231703995 - ], - [ - -1.007084600426337, - -1.471509707111153 - ], - [ - -0.7699166056926503, - -1.5500750899793587 - ], - [ - -0.5014098190012602, - -1.503958148961555 - ], - [ - -0.23236855546669133, - -1.3464909612527833 - ], - [ - 0.0064001567161460216, - -1.091005604048103 - ], - [ - 0.16231817550379907, - -0.7753115661123307 - ], - [ - 0.21358725624350144, - -0.4657165329658213 - ], - [ - 0.1595738946566687, - -0.19592238961407737 - ], - [ - -0.0003567700755144898, - 0.0003581266157421937 - ] - ] - }, - { - "type": "line", - "version": 433, - "versionNonce": 1404177958, - "isDeleted": false, - "id": "vVApp1Sr2fU7Tf4qWyRaR", - "fillStyle": "cross-hatch", - "strokeWidth": 2, - "strokeStyle": "solid", - "roughness": 1, - "opacity": 100, - "angle": 0, - "x": 416.33904365685993, - "y": 287.8395475463658, - "strokeColor": "#000000", - "backgroundColor": "black", - "width": 1.6720212722595122, - "height": 1.6435786936526044, - "seed": 133171357, - "groupIds": [ - "5H1W_moj_Sm0BoAw7Fq0S", - "M7epUKFIsRBu-b5nc04_q" - ], - "strokeSharpness": "sharp", - "boundElements": [], - "updated": 1662376608528, - "link": null, - "locked": false, - "lastCommittedPoint": null, - "startArrowhead": null, - "endArrowhead": null, - "points": [ - [ - 0, - 0 - ], - [ - 0, - 0 - ], - [ - -0.23244045209787775, - 0.14100964186726195 - ], - [ - -0.5305238850126699, - 0.15620289223199352 - ], - [ - -0.854678664245311, - 0.049909827448146926 - ], - [ - -1.1653317987565028, - -0.17353404996946692 - ], - [ - -1.4077401083258199, - -0.470231098788483 - ], - [ - -1.536098656184013, - -0.7870971874666889 - ], - [ - -1.5434375387262556, - -1.0868220340369634 - ], - [ - -1.4227922785085934, - -1.332111635014728 - ], - [ - -1.1881623705099338, - -1.47296934437834 - ], - [ - -0.8878230112240129, - -1.48737580142061 - ], - [ - -0.5614123056202519, - -1.380768019307789 - ], - [ - -0.2485724282887194, - -1.1585721588844144 - ], - [ - -0.006345895107694288, - -0.8617286037225949 - ], - [ - 0.12286184692267274, - -0.5440811478827854 - ], - [ - 0.12858373353325622, - -0.2440361578226895 - ], - [ - 0.00035541353532586584, - 0 - ] - ] - }, - { - "type": "line", - "version": 434, - "versionNonce": 47828794, - "isDeleted": false, - "id": "G2tS9Wef41neQfF6rPB2q", - "fillStyle": "cross-hatch", - "strokeWidth": 2, - "strokeStyle": "solid", - "roughness": 1, - "opacity": 100, - "angle": 0, - "x": 419.6831892984356, - "y": 288.83525348750084, - "strokeColor": "#000000", - "backgroundColor": "black", - "width": 1.879079500466814, - "height": 1.4122831614929237, - "seed": 896015283, - "groupIds": [ - "5H1W_moj_Sm0BoAw7Fq0S", - "M7epUKFIsRBu-b5nc04_q" - ], - "strokeSharpness": "sharp", - "boundElements": [], - "updated": 1662376608528, - "link": null, - "locked": false, - "lastCommittedPoint": null, - "startArrowhead": null, - "endArrowhead": null, - "points": [ - [ - 0, - 0 - ], - [ - 0, - 0 - ], - [ - -0.1508174275937666, - 0.2280452618138007 - ], - [ - -0.41468620330328326, - 0.3724082710829882 - ], - [ - -0.7543638721719574, - 0.4219599719154025 - ], - [ - -1.1326161184845205, - 0.36556588225801784 - ], - [ - -1.4799066910180976, - 0.20510887992390536 - ], - [ - -1.7362168246711427, - -0.023294508505632083 - ], - [ - -1.8769768631395554, - -0.2898329553506577 - ], - [ - -1.8776144370387868, - -0.564705985252898 - ], - [ - -1.727844258488009, - -0.7950790700690211 - ], - [ - -1.4635522422326286, - -0.9413412356337876 - ], - [ - -1.1222521512714252, - -0.9903231895775243 - ], - [ - -0.7414441832010825, - -0.9288502133696408 - ], - [ - -0.3945035980419842, - -0.7692668229314972 - ], - [ - -0.13851089479834414, - -0.5419052573841087 - ], - [ - 0.0014650634280251318, - -0.27580090340665464 - ], - [ - 0.00035541353532586584, - 8.881784197001252e-15 - ] - ] - }, - { - "type": "line", - "version": 434, - "versionNonce": 198793574, - "isDeleted": false, - "id": "euKeE09z5Rn7J0q3h5UWn", - "fillStyle": "cross-hatch", - "strokeWidth": 2, - "strokeStyle": "solid", - "roughness": 1, - "opacity": 100, - "angle": 0, - "x": 423.4896248524046, - "y": 289.25735996575924, - "strokeColor": "#000000", - "backgroundColor": "black", - "width": 1.9483797136929517, - "height": 1.352383771929961, - "seed": 1233054973, - "groupIds": [ - "5H1W_moj_Sm0BoAw7Fq0S", - "M7epUKFIsRBu-b5nc04_q" - ], - "strokeSharpness": "sharp", - "boundElements": [], - "updated": 1662376608528, - "link": null, - "locked": false, - "lastCommittedPoint": null, - "startArrowhead": null, - "endArrowhead": null, - "points": [ - [ - 0, - 0 - ], - [ - 0, - 0 - ], - [ - -0.06908587987279091, - 0.2648346323398263 - ], - [ - -0.2739967049258496, - 0.48322675401117055 - ], - [ - -0.5823871303648629, - 0.6327446160826925 - ], - [ - -0.9619199506367375, - 0.6909510434621473 - ], - [ - -1.3440383365510566, - 0.6447038745840685 - ], - [ - -1.6563817201653208, - 0.5039438361156623 - ], - [ - -1.8681078032391394, - 0.29204140281438773 - ], - [ - -1.948379713692951, - 0.03236162327687497 - ], - [ - -1.8734010231430016, - -0.23411713579884663 - ], - [ - -1.6678037887430897, - -0.4528239747991667 - ], - [ - -1.3605908402073403, - -0.6023852461574308 - ], - [ - -0.9807677203302845, - -0.661432728467815 - ], - [ - -0.600089980120206, - -0.6148437114565256 - ], - [ - -0.2882186724994149, - -0.47407282066642104 - ], - [ - -0.07743402833212791, - -0.26162234511985494 - ], - [ - 0, - 0 - ] - ] - }, - { - "type": "line", - "version": 434, - "versionNonce": 1007671290, - "isDeleted": false, - "id": "UF-filpl9RluBeJBGQPYD", - "fillStyle": "cross-hatch", - "strokeWidth": 2, - "strokeStyle": "solid", - "roughness": 1, - "opacity": 100, - "angle": 0, - "x": 427.2284965646142, - "y": 289.1140496316943, - "strokeColor": "#000000", - "backgroundColor": "black", - "width": 1.9259778086462387, - "height": 1.3648530895507331, - "seed": 1139813715, - "groupIds": [ - "5H1W_moj_Sm0BoAw7Fq0S", - "M7epUKFIsRBu-b5nc04_q" - ], - "strokeSharpness": "sharp", - "boundElements": [], - "updated": 1662376608528, - "link": null, - "locked": false, - "lastCommittedPoint": null, - "startArrowhead": null, - "endArrowhead": null, - "points": [ - [ - 0, - 0 - ], - [ - 0, - 0 - ], - [ - -0.029510175753076212, - 0.2710530126676769 - ], - [ - -0.19767232648644747, - 0.5190991033544856 - ], - [ - -0.4783215046077133, - 0.7174090037401603 - ], - [ - -0.8452819102027805, - 0.8392371670219427 - ], - [ - -1.2267220260115081, - 0.8539257844281334 - ], - [ - -1.5577883776198878, - 0.7654956411445409 - ], - [ - -1.8027741135903699, - 0.5912507641044336 - ], - [ - -1.9259778086462376, - 0.34849518024104975 - ], - [ - -1.8959223037282893, - 0.07219507003669512 - ], - [ - -1.7266125199763014, - -0.17820597445663022 - ], - [ - -1.4465547933870848, - -0.3766623811851162 - ], - [ - -1.0842500337966516, - -0.49713943041660075 - ], - [ - -0.6982031074308885, - -0.5109273051225989 - ], - [ - -0.36663212286396174, - -0.4225948327342146 - ], - [ - -0.12280487223381087, - -0.24725387120350417 - ], - [ - 0, - 0 - ] - ] - }, - { - "type": "arrow", - "version": 662, - "versionNonce": 796212390, - "isDeleted": false, - "id": "7Syn5DvjY3mv9SneA2hDa", - "fillStyle": "cross-hatch", - "strokeWidth": 2, - "strokeStyle": "solid", - "roughness": 2, - "opacity": 90, - "angle": 2.9004652802090014, - "x": 724.4149919536901, - "y": 260.2787493726382, - "strokeColor": "#000000", - "backgroundColor": "transparent", - "width": 228.38375337128218, - "height": 15.970868372722578, - "seed": 2097763325, - "groupIds": [], - "strokeSharpness": "round", - "boundElements": [], - "updated": 1662376608528, - "link": null, - "locked": false, - "startBinding": null, - "endBinding": { - "elementId": "YbM8xe6NaFlLoIbF5ZNkj", - "focus": -0.17179110689191787, - "gap": 13.373552388928942 - }, - "lastCommittedPoint": null, - "startArrowhead": null, - "endArrowhead": "arrow", - "points": [ - [ - 0, - 0 - ], - [ - -228.38375337128218, - -15.970868372722578 - ] - ] - }, - { - "type": "text", - "version": 295, - "versionNonce": 453429434, - "isDeleted": false, - "id": "XQ_OyjCmixaNfFzBEPv1T", - "fillStyle": "cross-hatch", - "strokeWidth": 2, - "strokeStyle": "solid", - "roughness": 2, - "opacity": 90, - "angle": 6.129944343664711, - "x": 569.9910210639403, - "y": 207.50068931986434, - "strokeColor": "#000000", - "backgroundColor": "transparent", - "width": 127, - "height": 44, - "seed": 1484668851, - "groupIds": [], - "strokeSharpness": "sharp", - "boundElements": [], - "updated": 1662376608528, - "link": null, - "locked": false, - "fontSize": 35.29411764705882, - "fontFamily": 1, - "text": "migrate", - "baseline": 31, - "textAlign": "center", - "verticalAlign": "top", - "containerId": null, - "originalText": "migrate" - }, - { - "type": "rectangle", - "version": 1222, - "versionNonce": 338868198, - "isDeleted": false, - "id": "N3_84v1HAfu3aswREv15n", - "fillStyle": "cross-hatch", - "strokeWidth": 2, - "strokeStyle": "solid", - "roughness": 2, - "opacity": 90, - "angle": 0, - "x": 1235, - "y": 172.00000000000017, - "strokeColor": "#000000", - "backgroundColor": "transparent", - "width": 123.00000000000003, - "height": 116.50000000000004, - "seed": 1718817693, - "groupIds": [], - "strokeSharpness": "sharp", - "boundElements": [], - "updated": 1662376608528, - "link": null, - "locked": false - }, - { - "type": "text", - "version": 1171, - "versionNonce": 123838842, - "isDeleted": false, - "id": "P1FHGZfZVbuyCn1E5w1hV", - "fillStyle": "cross-hatch", - "strokeWidth": 2, - "strokeStyle": "solid", - "roughness": 2, - "opacity": 90, - "angle": 0, - "x": 1237.9999999999995, - "y": 149, - "strokeColor": "#000000", - "backgroundColor": "transparent", - "width": 118, - "height": 24, - "seed": 1462924531, - "groupIds": [], - "strokeSharpness": "sharp", - "boundElements": [], - "updated": 1662376608528, - "link": null, - "locked": false, - "fontSize": 18.800000000000004, - "fontFamily": 1, - "text": "workshop-dev", - "baseline": 17, - "textAlign": "center", - "verticalAlign": "top", - "containerId": null, - "originalText": "workshop-dev" - }, - { - "type": "rectangle", - "version": 1831, - "versionNonce": 1377749798, - "isDeleted": false, - "id": "vmk6BUQQhZk-zdA2Oo77A", - "fillStyle": "cross-hatch", - "strokeWidth": 1, - "strokeStyle": "solid", - "roughness": 2, - "opacity": 100, - "angle": 0, - "x": 1266.5835658482142, - "y": 205.415619389886, - "strokeColor": "#5665dc", - "backgroundColor": "#5665dc", - "width": 57.45616947617656, - "height": 53.44025912987806, - "seed": 947888765, - "groupIds": [ - "_0iEyIKCqAnh2J7YUwrlB" - ], - "strokeSharpness": "round", - "boundElements": [], - "updated": 1662376608528, - "link": null, - "locked": false - }, - { - "type": "rectangle", - "version": 1910, - "versionNonce": 2086887994, - "isDeleted": false, - "id": "JGCv3K6aRrwT7DflWeTHf", - "fillStyle": "solid", - "strokeWidth": 1, - "strokeStyle": "solid", - "roughness": 2, - "opacity": 100, - "angle": 0, - "x": 1269.9381426544435, - "y": 208.74060527777488, - "strokeColor": "#5665dc", - "backgroundColor": "#ffffff", - "width": 51.247712989934, - "height": 46.39762056468513, - "seed": 1251971027, - "groupIds": [ - "_0iEyIKCqAnh2J7YUwrlB" - ], - "strokeSharpness": "round", - "boundElements": [ - { - "id": "YGLbIKYvHLJ7195OM_YrC", - "type": "arrow" - } - ], - "updated": 1662376608528, - "link": null, - "locked": false - }, - { - "type": "line", - "version": 2079, - "versionNonce": 2007397990, - "isDeleted": false, - "id": "spb2oj8YGHpSNEwpHD2wV", - "fillStyle": "cross-hatch", - "strokeWidth": 1, - "strokeStyle": "solid", - "roughness": 1, - "opacity": 100, - "angle": 1.5774237450700657, - "x": 1301.9722141535574, - "y": 217.96881154394697, - "strokeColor": "#c92a2a", - "backgroundColor": "#fa5252", - "width": 33.32257701070834, - "height": 28.85819083936603, - "seed": 1556105949, - "groupIds": [ - "_0iEyIKCqAnh2J7YUwrlB" - ], - "strokeSharpness": "sharp", - "boundElements": [], - "updated": 1662376608528, - "link": null, - "locked": false, - "lastCommittedPoint": null, - "startArrowhead": null, - "endArrowhead": null, - "points": [ - [ - 0, - 0 - ], - [ - 16.661288505354147, - 28.85819083936598 - ], - [ - -16.6612885053542, - 28.858190839366024 - ], - [ - 0, - 0 - ] - ] - }, - { - "type": "line", - "version": 2448, - "versionNonce": 351210234, - "isDeleted": false, - "id": "SutAG57LVzwzVW-B7pjx2", - "fillStyle": "cross-hatch", - "strokeWidth": 1, - "strokeStyle": "solid", - "roughness": 1, - "opacity": 100, - "angle": 4.721247315744137, - "x": 1292.001511263509, - "y": 218.73806334146855, - "strokeColor": "#5665dc", - "backgroundColor": "#5665dc", - "width": 33.32257701070834, - "height": 28.85819083936603, - "seed": 107224435, - "groupIds": [ - "_0iEyIKCqAnh2J7YUwrlB" - ], - "strokeSharpness": "sharp", - "boundElements": [], - "updated": 1662376608528, - "link": null, - "locked": false, - "lastCommittedPoint": null, - "startArrowhead": null, - "endArrowhead": null, - "points": [ - [ - 0, - 0 - ], - [ - 16.661288505354147, - 28.85819083936598 - ], - [ - -16.6612885053542, - 28.858190839366024 - ], - [ - 0, - 0 - ] - ] - }, - { - "type": "line", - "version": 2769, - "versionNonce": 1033288102, - "isDeleted": false, - "id": "i26NzthkwBlfiUCin9CYI", - "fillStyle": "cross-hatch", - "strokeWidth": 1, - "strokeStyle": "solid", - "roughness": 1, - "opacity": 100, - "angle": 0.0005581869343673773, - "x": 1296.0624601985858, - "y": 245.1701370116595, - "strokeColor": "#5665dc", - "backgroundColor": "#5665dc", - "width": 12.907571670440605, - "height": 13.318824900087934, - "seed": 395110205, - "groupIds": [ - "_0iEyIKCqAnh2J7YUwrlB" - ], - "strokeSharpness": "sharp", - "boundElements": [], - "updated": 1662376608528, - "link": null, - "locked": false, - "lastCommittedPoint": null, - "startArrowhead": null, - "endArrowhead": null, - "points": [ - [ - 0, - 0 - ], - [ - 6.453785835220252, - 13.318824900087908 - ], - [ - -6.453785835220351, - 13.31882490008794 - ], - [ - 0, - 0 - ] - ] - }, - { - "type": "rectangle", - "version": 1784, - "versionNonce": 394763194, - "isDeleted": false, - "id": "2BfNxEEM8p5HYk7WcE_F9", - "fillStyle": "solid", - "strokeWidth": 1, - "strokeStyle": "solid", - "roughness": 2, - "opacity": 100, - "angle": 5.989889724533434, - "x": 1301.980919550926, - "y": 252.81882394751756, - "strokeColor": "#ffffff", - "backgroundColor": "#ffffff", - "width": 4.533179238462011, - "height": 7.2653956832235504, - "seed": 562427667, - "groupIds": [ - "_0iEyIKCqAnh2J7YUwrlB" - ], - "strokeSharpness": "round", - "boundElements": [], - "updated": 1662376608528, - "link": null, - "locked": false - }, - { - "type": "line", - "version": 1708, - "versionNonce": 991728870, - "isDeleted": false, - "id": "5fGV8W9z-RAs_dgD03VyY", - "fillStyle": "cross-hatch", - "strokeWidth": 1, - "strokeStyle": "solid", - "roughness": 1, - "opacity": 100, - "angle": 0, - "x": 1297.093093580768, - "y": 222.20484551634627, - "strokeColor": "#000000", - "backgroundColor": "#000000", - "width": 18.093574283353416, - "height": 21.608910352169588, - "seed": 457635741, - "groupIds": [ - "_0iEyIKCqAnh2J7YUwrlB" - ], - "strokeSharpness": "sharp", - "boundElements": [], - "updated": 1662376608528, - "link": null, - "locked": false, - "lastCommittedPoint": null, - "startArrowhead": null, - "endArrowhead": null, - "points": [ - [ - 0, - 0 - ], - [ - 9.046787141676653, - 5.402227588042349 - ], - [ - 9.046787141676685, - 16.20668276412716 - ], - [ - 0, - 21.60891035216959 - ], - [ - -9.046787141676738, - 16.20668276412703 - ], - [ - -9.046787141676724, - 5.402227588042457 - ], - [ - 0, - 0 - ] - ] - }, - { - "type": "line", - "version": 1546, - "versionNonce": 38802554, - "isDeleted": false, - "id": "-fAV_aerIzzEWfYYHEKXg", - "fillStyle": "hachure", - "strokeWidth": 2, - "strokeStyle": "solid", - "roughness": 1, - "opacity": 100, - "angle": 0, - "x": 1286.9623124603343, - "y": 225.86946868342477, - "strokeColor": "#ffffff", - "backgroundColor": "#ffffff", - "width": 9.063116136997696, - "height": 6.655277964453662, - "seed": 1518050483, - "groupIds": [ - "_0iEyIKCqAnh2J7YUwrlB" - ], - "strokeSharpness": "round", - "boundElements": [], - "updated": 1662376608528, - "link": null, - "locked": false, - "startBinding": null, - "endBinding": null, - "lastCommittedPoint": null, - "startArrowhead": null, - "endArrowhead": null, - "points": [ - [ - 0, - 0 - ], - [ - 9.063116136997696, - 6.655277964453662 - ] - ] - }, - { - "type": "line", - "version": 1434, - "versionNonce": 432343078, - "isDeleted": false, - "id": "C0EHFLoMSj-pbdFzB893u", - "fillStyle": "hachure", - "strokeWidth": 1, - "strokeStyle": "solid", - "roughness": 2, - "opacity": 100, - "angle": 0, - "x": 1293.5835666023909, - "y": 231.393259214085, - "strokeColor": "#ffffff", - "backgroundColor": "#ffffff", - "width": 1.938909697019904, - "height": 1.3996974072478967, - "seed": 1377827837, - "groupIds": [ - "_0iEyIKCqAnh2J7YUwrlB" - ], - "strokeSharpness": "round", - "boundElements": [], - "updated": 1662376608528, - "link": null, - "locked": false, - "startBinding": null, - "endBinding": null, - "lastCommittedPoint": null, - "startArrowhead": null, - "endArrowhead": null, - "points": [ - [ - 0, - 0 - ], - [ - 1.938909697019904, - 1.3996974072478967 - ] - ] - }, - { - "type": "line", - "version": 1656, - "versionNonce": 386626874, - "isDeleted": false, - "id": "hZP-cpVoJirzVS5h4IwGP", - "fillStyle": "hachure", - "strokeWidth": 2, - "strokeStyle": "solid", - "roughness": 1, - "opacity": 100, - "angle": 0, - "x": 1295.7896656391133, - "y": 231.83614969191865, - "strokeColor": "#ffffff", - "backgroundColor": "#ffffff", - "width": 0.41793131176457465, - "height": 12.31899938467562, - "seed": 1558941267, - "groupIds": [ - "_0iEyIKCqAnh2J7YUwrlB" - ], - "strokeSharpness": "round", - "boundElements": [], - "updated": 1662376608528, - "link": null, - "locked": false, - "startBinding": null, - "endBinding": null, - "lastCommittedPoint": null, - "startArrowhead": null, - "endArrowhead": null, - "points": [ - [ - 0, - 0 - ], - [ - 0.41793131176457465, - 12.31899938467562 - ] - ] - }, - { - "type": "line", - "version": 1698, - "versionNonce": 1232933734, - "isDeleted": false, - "id": "OoBrrmXsBnrkluhSNWntM", - "fillStyle": "hachure", - "strokeWidth": 2, - "strokeStyle": "solid", - "roughness": 1, - "opacity": 100, - "angle": 0, - "x": 1295.8939101463318, - "y": 233.32005387918935, - "strokeColor": "#ffffff", - "backgroundColor": "#ffffff", - "width": 10.257078375565314, - "height": 6.540946725895645, - "seed": 1679389789, - "groupIds": [ - "_0iEyIKCqAnh2J7YUwrlB" - ], - "strokeSharpness": "round", - "boundElements": [], - "updated": 1662376608528, - "link": null, - "locked": false, - "startBinding": null, - "endBinding": null, - "lastCommittedPoint": null, - "startArrowhead": null, - "endArrowhead": null, - "points": [ - [ - 0, - 0 - ], - [ - 10.257078375565314, - -6.540946725895645 - ] - ] - }, - { - "type": "arrow", - "version": 397, - "versionNonce": 1729936890, - "isDeleted": false, - "id": "WyT8CHCFzENtI1D28JXqX", - "fillStyle": "cross-hatch", - "strokeWidth": 2, - "strokeStyle": "solid", - "roughness": 2, - "opacity": 90, - "angle": 3.172965356582301, - "x": 913.5652581299081, - "y": 224.42325658610133, - "strokeColor": "#000000", - "backgroundColor": "transparent", - "width": 94.08894820589546, - "height": 4.643393316912409, - "seed": 249565469, - "groupIds": [], - "strokeSharpness": "round", - "boundElements": [], - "updated": 1662376608528, - "link": null, - "locked": false, - "startBinding": null, - "endBinding": null, - "lastCommittedPoint": null, - "startArrowhead": null, - "endArrowhead": "arrow", - "points": [ - [ - 0, - 0 - ], - [ - -94.08894820589546, - -4.643393316912409 - ] - ] - }, - { - "type": "text", - "version": 193, - "versionNonce": 881964710, - "isDeleted": false, - "id": "SmrHnQr2mG7pD6XtPNTbF", - "fillStyle": "cross-hatch", - "strokeWidth": 2, - "strokeStyle": "solid", - "roughness": 2, - "opacity": 90, - "angle": 0, - "x": 839, - "y": 191, - "strokeColor": "#000000", - "backgroundColor": "transparent", - "width": 48, - "height": 25, - "seed": 322424893, - "groupIds": [], - "strokeSharpness": "sharp", - "boundElements": [], - "updated": 1662376608528, - "link": null, - "locked": false, - "fontSize": 20, - "fontFamily": 1, - "text": "clone", - "baseline": 18, - "textAlign": "center", - "verticalAlign": "top", - "containerId": null, - "originalText": "clone" - }, - { - "type": "arrow", - "version": 1651, - "versionNonce": 1038194214, - "isDeleted": false, - "id": "YGLbIKYvHLJ7195OM_YrC", - "fillStyle": "cross-hatch", - "strokeWidth": 2, - "strokeStyle": "solid", - "roughness": 2, - "opacity": 90, - "angle": 1.1544546290966737, - "x": 1066.1032297855195, - "y": 349.7657486755516, - "strokeColor": "#000000", - "backgroundColor": "transparent", - "width": 128.09256545730932, - "height": 234.12848935878483, - "seed": 1865112861, - "groupIds": [], - "strokeSharpness": "round", - "boundElements": [], - "updated": 1662376616706, - "link": null, - "locked": false, - "startBinding": null, - "endBinding": { - "elementId": "JGCv3K6aRrwT7DflWeTHf", - "focus": -0.6092445576527593, - "gap": 6.855367883465988 - }, - "lastCommittedPoint": null, - "startArrowhead": null, - "endArrowhead": "arrow", - "points": [ - [ - 0, - 0 - ], - [ - 128.09256545730932, - -234.12848935878483 - ] - ] - }, - { - "type": "line", - "version": 1849, - "versionNonce": 1038097318, - "isDeleted": false, - "id": "GP1wLZ1WFSKU2V50lx_PB", - "fillStyle": "hachure", - "strokeWidth": 1, - "strokeStyle": "solid", - "roughness": 1, - "opacity": 100, - "angle": 0, - "x": 888.2359178299338, - "y": 776.0795466994963, - "strokeColor": "#fa5252", - "backgroundColor": "#fa5252", - "width": 45.45537939093032, - "height": 28.55045143932542, - "seed": 910612326, - "groupIds": [ - "aIlUmEWkA-SaliQpUsuSS" - ], - "strokeSharpness": "round", - "boundElements": [], - "updated": 1662376608529, - "link": null, - "locked": false, - "startBinding": null, - "endBinding": null, - "lastCommittedPoint": null, - "startArrowhead": null, - "endArrowhead": null, - "points": [ - [ - 0, - 0 - ], - [ - 0.09881604215418947, - 5.982999014858631 - ], - [ - 0.39526416861678143, - 12.070962924714806 - ], - [ - 5.533698360634995, - 16.899348094600715 - ], - [ - 15.415302576054616, - 19.313540679543642 - ], - [ - 29.743628688413075, - 19.313540679543664 - ], - [ - 39.52641686167853, - 17.109277884595738 - ], - [ - 44.81307511692804, - 12.9631645321937 - ], - [ - 45.45537939093032, - 5.982999014858641 - ], - [ - 44.71425907477384, - -0.9446840549776787 - ], - [ - 38.735888524444896, - -6.717753279841269 - ], - [ - 28.360204098254336, - -9.23691075978176 - ], - [ - 15.31648653390042, - -9.026980969786704 - ], - [ - 5.089026170941105, - -5.668104329866079 - ], - [ - 0, - 0 - ] - ] - }, - { - "type": "ellipse", - "version": 842, - "versionNonce": 612194746, - "isDeleted": false, - "id": "tKodUHcxsuZtHeAhdzSw-", - "fillStyle": "solid", - "strokeWidth": 1, - "strokeStyle": "solid", - "roughness": 1, - "opacity": 100, - "angle": 0, - "x": 892.2440967427956, - "y": 767.9926814874417, - "strokeColor": "#fa5252", - "backgroundColor": "#fa5252", - "width": 37.0506282457687, - "height": 14.169503720053175, - "seed": 1472281082, - "groupIds": [ - "aIlUmEWkA-SaliQpUsuSS" - ], - "strokeSharpness": "sharp", - "boundElements": [], - "updated": 1662376608529, - "link": null, - "locked": false - }, - { - "type": "line", - "version": 2682, - "versionNonce": 1877587686, - "isDeleted": false, - "id": "JowGyceWZyekC0DpvNjIf", - "fillStyle": "hachure", - "strokeWidth": 1, - "strokeStyle": "solid", - "roughness": 1, - "opacity": 100, - "angle": 0, - "x": 888.4363535962191, - "y": 792.2718279844214, - "strokeColor": "#fa5252", - "backgroundColor": "#fa5252", - "width": 44.75215216926839, - "height": 18.44773266062176, - "seed": 1803745958, - "groupIds": [ - "aIlUmEWkA-SaliQpUsuSS" - ], - "strokeSharpness": "round", - "boundElements": [], - "updated": 1662376608529, - "link": null, - "locked": false, - "startBinding": null, - "endBinding": null, - "lastCommittedPoint": null, - "startArrowhead": null, - "endArrowhead": null, - "points": [ - [ - 0, - 0 - ], - [ - 0.09881604215418954, - 5.7359953692677355 - ], - [ - 0.8360931732406627, - 12.188788492529767 - ], - [ - 6.415356369882757, - 16.27013404810402 - ], - [ - 16.076546082990426, - 18.44773266062176 - ], - [ - 30.037514691495648, - 18.37926974325645 - ], - [ - 38.718230353201484, - 16.745248712978196 - ], - [ - 43.80546596350205, - 13.229984141597614 - ], - [ - 44.75215216926839, - 6.987888715376405 - ], - [ - 44.596758549161464, - 0.571547384474486 - ], - [ - 43.265820916723996, - 1.4122752942962638 - ], - [ - 38.05365316014614, - 3.8485825851177227 - ], - [ - 29.399301037724893, - 5.462958347950173 - ], - [ - 16.785916549313352, - 5.625099676297176 - ], - [ - 6.663415473169238, - 3.7594908843371635 - ], - [ - 0, - 0 - ] - ] - }, - { - "type": "line", - "version": 2761, - "versionNonce": 635310714, - "isDeleted": false, - "id": "LQXzCv6fh_FAdDQyf1dnl", - "fillStyle": "hachure", - "strokeWidth": 1, - "strokeStyle": "solid", - "roughness": 1, - "opacity": 100, - "angle": 0, - "x": 888.4575305030959, - "y": 807.7379899328757, - "strokeColor": "#fa5252", - "backgroundColor": "#fa5252", - "width": 44.75215216926839, - "height": 17.929281850049776, - "seed": 1044114106, - "groupIds": [ - "aIlUmEWkA-SaliQpUsuSS" - ], - "strokeSharpness": "round", - "boundElements": [], - "updated": 1662376608529, - "link": null, - "locked": false, - "startBinding": null, - "endBinding": null, - "lastCommittedPoint": null, - "startArrowhead": null, - "endArrowhead": null, - "points": [ - [ - 0, - 0 - ], - [ - 0.09881604215418954, - 5.5747922825067295 - ], - [ - 0.8360931732406627, - 11.846237600769971 - ], - [ - 6.415356369882757, - 15.812881965122543 - ], - [ - 16.076546082990426, - 17.929281850049776 - ], - [ - 30.037514691495648, - 17.862742998674317 - ], - [ - 38.718230353201484, - 16.274644117379026 - ], - [ - 43.80546596350205, - 12.858171728210504 - ], - [ - 44.75215216926839, - 6.791502707658123 - ], - [ - 44.596758549161464, - 0.5554847490161138 - ], - [ - 43.265820916723996, - 1.3725850361735614 - ], - [ - 38.05365316014614, - 3.7404229105650506 - ], - [ - 29.399301037724893, - 5.3094286304656295 - ], - [ - 16.785916549313352, - 5.467013176434269 - ], - [ - 6.663415473169238, - 3.653835022330706 - ], - [ - 0, - 0 - ] - ] - }, - { - "type": "rectangle", - "version": 743, - "versionNonce": 438112102, - "isDeleted": false, - "id": "0vx83HbQv2HvAfR2WHYzx", - "fillStyle": "cross-hatch", - "strokeWidth": 2, - "strokeStyle": "solid", - "roughness": 2, - "opacity": 100, - "angle": 0, - "x": 869.5, - "y": 755.6981132075472, - "strokeColor": "#000000", - "backgroundColor": "transparent", - "width": 82.99999999999996, - "height": 78.30188679245282, - "seed": 986179194, - "groupIds": [], - "strokeSharpness": "sharp", - "boundElements": [], - "updated": 1662376629786, - "link": null, - "locked": false - }, - { - "type": "text", - "version": 541, - "versionNonce": 1412019002, - "isDeleted": false, - "id": "g1zqTtCSN4y0R3bNwm5QR", - "fillStyle": "cross-hatch", - "strokeWidth": 2, - "strokeStyle": "solid", - "roughness": 2, - "opacity": 100, - "angle": 0, - "x": 889.5, - "y": 728.5, - "strokeColor": "#000000", - "backgroundColor": "transparent", - "width": 43, - "height": 25, - "seed": 1419797434, - "groupIds": [], - "strokeSharpness": "sharp", - "boundElements": [ - { - "id": "RN13O3v7s67B4r3OLdUG1", - "type": "arrow" - } - ], - "updated": 1662376608529, - "link": null, - "locked": false, - "fontSize": 20, - "fontFamily": 1, - "text": "ODF", - "baseline": 18, - "textAlign": "center", - "verticalAlign": "top", - "containerId": null, - "originalText": "ODF" - } - ], - "appState": { - "gridSize": null, - "viewBackgroundColor": "#ffffff" - }, - "files": {} -} \ No newline at end of file diff --git a/excalidraw/workshop_architecture_outer_loop.excalidraw b/excalidraw/workshop_architecture_outer_loop.excalidraw deleted file mode 100644 index f3552d0..0000000 --- a/excalidraw/workshop_architecture_outer_loop.excalidraw +++ /dev/null @@ -1,7882 +0,0 @@ -{ - "type": "excalidraw", - "version": 2, - "source": "https://excalidraw.com", - "elements": [ - { - "type": "rectangle", - "version": 763, - "versionNonce": 432622438, - "isDeleted": false, - "id": "aCEE8GhXJyiI15OYj-PtO", - "fillStyle": "cross-hatch", - "strokeWidth": 2, - "strokeStyle": "solid", - "roughness": 2, - "opacity": 100, - "angle": 0, - "x": 1129, - "y": 344.7878787878785, - "strokeColor": "#000000", - "backgroundColor": "transparent", - "width": 228.6666666666667, - "height": 224.21212121212136, - "seed": 1921109149, - "groupIds": [], - "strokeSharpness": "sharp", - "boundElements": [], - "updated": 1662376667301, - "link": null, - "locked": false - }, - { - "type": "text", - "version": 669, - "versionNonce": 513207974, - "isDeleted": false, - "id": "1df0UH0SLiIgY9wx9MNc5", - "fillStyle": "cross-hatch", - "strokeWidth": 2, - "strokeStyle": "solid", - "roughness": 2, - "opacity": 100, - "angle": 0, - "x": 1135.5681818181813, - "y": 323, - "strokeColor": "#000000", - "backgroundColor": "transparent", - "width": 86.86363636363646, - "height": 37.121212121212146, - "seed": 2028306067, - "groupIds": [], - "strokeSharpness": "sharp", - "boundElements": [], - "updated": 1662376667301, - "link": null, - "locked": false, - "fontSize": 14.84848484848486, - "fontFamily": 1, - "text": "workshop-int\n", - "baseline": 31.121212121212146, - "textAlign": "center", - "verticalAlign": "top", - "containerId": null, - "originalText": "workshop-int\n" - }, - { - "type": "rectangle", - "version": 1854, - "versionNonce": 1838233274, - "isDeleted": false, - "id": "WfGIRX8nYQy4AUcSeR6I1", - "fillStyle": "cross-hatch", - "strokeWidth": 1, - "strokeStyle": "solid", - "roughness": 2, - "opacity": 100, - "angle": 0, - "x": 1176.7170279974796, - "y": 390.3843234864305, - "strokeColor": "#5665dc", - "backgroundColor": "#5665dc", - "width": 128.77806521716136, - "height": 119.77709684080031, - "seed": 257666643, - "groupIds": [ - "0juXsMdVUXFekjks8pcBc" - ], - "strokeSharpness": "round", - "boundElements": [ - { - "id": "IdDsqRoxUzCm_nD_ZpV20", - "type": "arrow" - } - ], - "updated": 1662376667301, - "link": null, - "locked": false - }, - { - "type": "rectangle", - "version": 1878, - "versionNonce": 1481517542, - "isDeleted": false, - "id": "bWXOj_zq2Qi_SVGQTDWQG", - "fillStyle": "solid", - "strokeWidth": 1, - "strokeStyle": "solid", - "roughness": 2, - "opacity": 100, - "angle": 0, - "x": 1184.2357316400507, - "y": 397.83670420412227, - "strokeColor": "#5665dc", - "backgroundColor": "#ffffff", - "width": 114.862883930759, - "height": 103.99224071972951, - "seed": 1748718685, - "groupIds": [ - "0juXsMdVUXFekjks8pcBc" - ], - "strokeSharpness": "round", - "boundElements": [ - { - "id": "YGLbIKYvHLJ7195OM_YrC", - "type": "arrow" - }, - { - "id": "IdDsqRoxUzCm_nD_ZpV20", - "type": "arrow" - } - ], - "updated": 1662376667301, - "link": null, - "locked": false - }, - { - "type": "line", - "version": 2044, - "versionNonce": 980307834, - "isDeleted": false, - "id": "lcDPG43gFhHt9aIby4doG", - "fillStyle": "cross-hatch", - "strokeWidth": 1, - "strokeStyle": "solid", - "roughness": 1, - "opacity": 100, - "angle": 1.5774237450700657, - "x": 1253.8860691305404, - "y": 417.3889650545235, - "strokeColor": "#c92a2a", - "backgroundColor": "#fa5252", - "width": 74.68679229074219, - "height": 64.68064292907803, - "seed": 1259891699, - "groupIds": [ - "0juXsMdVUXFekjks8pcBc" - ], - "strokeSharpness": "sharp", - "boundElements": [], - "updated": 1662376667301, - "link": null, - "locked": false, - "lastCommittedPoint": null, - "startArrowhead": null, - "endArrowhead": null, - "points": [ - [ - 0, - 0 - ], - [ - 37.343396145371045, - 64.68064292907785 - ], - [ - -37.343396145371145, - 64.68064292907803 - ], - [ - 0, - 0 - ] - ] - }, - { - "type": "line", - "version": 2470, - "versionNonce": 637271334, - "isDeleted": false, - "id": "JTnJL06DYdPzU92et-hzK", - "fillStyle": "cross-hatch", - "strokeWidth": 1, - "strokeStyle": "solid", - "roughness": 1, - "opacity": 100, - "angle": 4.721247315744137, - "x": 1232.734836722075, - "y": 418.0927781258739, - "strokeColor": "#5665dc", - "backgroundColor": "#5665dc", - "width": 74.68679229074219, - "height": 64.68064292907803, - "seed": 1642774717, - "groupIds": [ - "0juXsMdVUXFekjks8pcBc" - ], - "strokeSharpness": "sharp", - "boundElements": [], - "updated": 1662376667301, - "link": null, - "locked": false, - "lastCommittedPoint": null, - "startArrowhead": null, - "endArrowhead": null, - "points": [ - [ - 0, - 0 - ], - [ - 37.343396145371045, - 64.68064292907785 - ], - [ - -37.343396145371145, - 64.68064292907803 - ], - [ - 0, - 0 - ] - ] - }, - { - "type": "line", - "version": 2792, - "versionNonce": 1168789562, - "isDeleted": false, - "id": "iBdZ_9MMf6SLDTGeAMAB1", - "fillStyle": "cross-hatch", - "strokeWidth": 1, - "strokeStyle": "solid", - "roughness": 1, - "opacity": 100, - "angle": 0.0005581869343673773, - "x": 1242.0581191009499, - "y": 477.99447587916006, - "strokeColor": "#5665dc", - "backgroundColor": "#5665dc", - "width": 28.93008917102277, - "height": 29.85184214744162, - "seed": 397178259, - "groupIds": [ - "0juXsMdVUXFekjks8pcBc" - ], - "strokeSharpness": "sharp", - "boundElements": [], - "updated": 1662376667301, - "link": null, - "locked": false, - "lastCommittedPoint": null, - "startArrowhead": null, - "endArrowhead": null, - "points": [ - [ - 0, - 0 - ], - [ - 14.465044585511265, - 29.851842147441538 - ], - [ - -14.465044585511507, - 29.85184214744163 - ], - [ - 0, - 0 - ] - ] - }, - { - "type": "rectangle", - "version": 1806, - "versionNonce": 2098030694, - "isDeleted": false, - "id": "H-tSugrM2myy28GQY2IZv", - "fillStyle": "solid", - "strokeWidth": 1, - "strokeStyle": "solid", - "roughness": 2, - "opacity": 100, - "angle": 5.989889724533434, - "x": 1256.0540733522507, - "y": 496.63040678225923, - "strokeColor": "#ffffff", - "backgroundColor": "#ffffff", - "width": 10.160337121913365, - "height": 16.284127669015405, - "seed": 1605214493, - "groupIds": [ - "0juXsMdVUXFekjks8pcBc" - ], - "strokeSharpness": "round", - "boundElements": [], - "updated": 1662376667301, - "link": null, - "locked": false - }, - { - "type": "line", - "version": 1731, - "versionNonce": 858274042, - "isDeleted": false, - "id": "VUXao9dORybHOlVhrhCXA", - "fillStyle": "cross-hatch", - "strokeWidth": 1, - "strokeStyle": "solid", - "roughness": 1, - "opacity": 100, - "angle": 0, - "x": 1244.747048670161, - "y": 427.39842400693544, - "strokeColor": "#000000", - "backgroundColor": "#000000", - "width": 40.55361696256771, - "height": 48.4326346843801, - "seed": 1951288115, - "groupIds": [ - "0juXsMdVUXFekjks8pcBc" - ], - "strokeSharpness": "sharp", - "boundElements": [], - "updated": 1662376667301, - "link": null, - "locked": false, - "lastCommittedPoint": null, - "startArrowhead": null, - "endArrowhead": null, - "points": [ - [ - 0, - 0 - ], - [ - 20.27680848128371, - 12.108158671094856 - ], - [ - 20.2768084812838, - 36.32447601328501 - ], - [ - -2.4868995751603507e-14, - 48.432634684380105 - ], - [ - -20.276808481283926, - 36.32447601328466 - ], - [ - -20.2768084812839, - 12.10815867109517 - ], - [ - 0, - 0 - ] - ] - }, - { - "type": "line", - "version": 1569, - "versionNonce": 491744166, - "isDeleted": false, - "id": "nHMEw2NpxPNvOcrQiy5_c", - "fillStyle": "hachure", - "strokeWidth": 2, - "strokeStyle": "solid", - "roughness": 1, - "opacity": 100, - "angle": 0, - "x": 1221.6645102830248, - "y": 434.3448499324527, - "strokeColor": "#ffffff", - "backgroundColor": "#ffffff", - "width": 20.313407099735958, - "height": 14.916654339445962, - "seed": 1995797885, - "groupIds": [ - "0juXsMdVUXFekjks8pcBc" - ], - "strokeSharpness": "round", - "boundElements": [], - "updated": 1662376667301, - "link": null, - "locked": false, - "startBinding": null, - "endBinding": null, - "lastCommittedPoint": null, - "startArrowhead": null, - "endArrowhead": null, - "points": [ - [ - 0, - 0 - ], - [ - 20.313407099735958, - 14.916654339445962 - ] - ] - }, - { - "type": "line", - "version": 1457, - "versionNonce": 845875642, - "isDeleted": false, - "id": "K8W9xzsZzyiKou_xdzPIZ", - "fillStyle": "hachure", - "strokeWidth": 1, - "strokeStyle": "solid", - "roughness": 2, - "opacity": 100, - "angle": 0, - "x": 1232.5309223904987, - "y": 443.6306971486025, - "strokeColor": "#ffffff", - "backgroundColor": "#ffffff", - "width": 4.345730696797424, - "height": 3.1371796212345773, - "seed": 895773907, - "groupIds": [ - "0juXsMdVUXFekjks8pcBc" - ], - "strokeSharpness": "round", - "boundElements": [], - "updated": 1662376667301, - "link": null, - "locked": false, - "startBinding": null, - "endBinding": null, - "lastCommittedPoint": null, - "startArrowhead": null, - "endArrowhead": null, - "points": [ - [ - 0, - 0 - ], - [ - 4.345730696797424, - 3.1371796212345773 - ] - ] - }, - { - "type": "line", - "version": 1678, - "versionNonce": 1156515558, - "isDeleted": false, - "id": "xw4komaULiQXoDHT1Xp2j", - "fillStyle": "hachure", - "strokeWidth": 2, - "strokeStyle": "solid", - "roughness": 1, - "opacity": 100, - "angle": 0, - "x": 1240.150726932103, - "y": 448.11548902064965, - "strokeColor": "#ffffff", - "backgroundColor": "#ffffff", - "width": 0.9367207423221638, - "height": 27.610906202643964, - "seed": 319012317, - "groupIds": [ - "0juXsMdVUXFekjks8pcBc" - ], - "strokeSharpness": "round", - "boundElements": [], - "updated": 1662376667301, - "link": null, - "locked": false, - "startBinding": null, - "endBinding": null, - "lastCommittedPoint": null, - "startArrowhead": null, - "endArrowhead": null, - "points": [ - [ - 0, - 0 - ], - [ - 0.9367207423221638, - 27.610906202643964 - ] - ] - }, - { - "type": "line", - "version": 1665, - "versionNonce": 177586810, - "isDeleted": false, - "id": "_yJjDOoKnsMWnTrt1wA0a", - "fillStyle": "hachure", - "strokeWidth": 2, - "strokeStyle": "solid", - "roughness": 1, - "opacity": 100, - "angle": 0, - "x": 1241.4693408347428, - "y": 451.69040493910006, - "strokeColor": "#ffffff", - "backgroundColor": "#ffffff", - "width": 22.989466928068946, - "height": 14.660400645027837, - "seed": 1585797747, - "groupIds": [ - "0juXsMdVUXFekjks8pcBc" - ], - "strokeSharpness": "round", - "boundElements": [], - "updated": 1662376667301, - "link": null, - "locked": false, - "startBinding": null, - "endBinding": null, - "lastCommittedPoint": null, - "startArrowhead": null, - "endArrowhead": null, - "points": [ - [ - 0, - 0 - ], - [ - 22.989466928068946, - -14.660400645027837 - ] - ] - }, - { - "type": "rectangle", - "version": 272, - "versionNonce": 1685666342, - "isDeleted": false, - "id": "eRALweam41mM0DJnwBGGj", - "fillStyle": "cross-hatch", - "strokeWidth": 2, - "strokeStyle": "solid", - "roughness": 1, - "opacity": 100, - "angle": 0, - "x": 321, - "y": 92, - "strokeColor": "#000000", - "backgroundColor": "transparent", - "width": 1567, - "height": 789, - "seed": 1623179475, - "groupIds": [], - "strokeSharpness": "sharp", - "boundElements": [], - "updated": 1662376667301, - "link": null, - "locked": false - }, - { - "type": "text", - "version": 735, - "versionNonce": 644571962, - "isDeleted": false, - "id": "0WlhYvkWB8XZHimUWgYTe", - "fillStyle": "cross-hatch", - "strokeWidth": 2, - "strokeStyle": "solid", - "roughness": 2, - "opacity": 100, - "angle": 0.0773666766259069, - "x": 1088.0876812573165, - "y": 207.409227074606, - "strokeColor": "#000000", - "backgroundColor": "transparent", - "width": 97.03908202421952, - "height": 20.913595263840417, - "seed": 633111965, - "groupIds": [], - "strokeSharpness": "sharp", - "boundElements": [], - "updated": 1662376667301, - "link": null, - "locked": false, - "fontSize": 16.730876211072335, - "fontFamily": 1, - "text": "build&deploy", - "baseline": 14.913595263840417, - "textAlign": "center", - "verticalAlign": "top", - "containerId": null, - "originalText": "build&deploy" - }, - { - "type": "text", - "version": 279, - "versionNonce": 1390085478, - "isDeleted": false, - "id": "AK892q6caE6tpWTkF5uAE", - "fillStyle": "cross-hatch", - "strokeWidth": 2, - "strokeStyle": "solid", - "roughness": 1, - "opacity": 90, - "angle": 0, - "x": 717, - "y": 86, - "strokeColor": "#000000", - "backgroundColor": "transparent", - "width": 758.9142857142855, - "height": 57.00000000000001, - "seed": 354860339, - "groupIds": [], - "strokeSharpness": "sharp", - "boundElements": [], - "updated": 1662376667301, - "link": null, - "locked": false, - "fontSize": 45.6, - "fontFamily": 1, - "text": "DevSecOps Workshop Architecture", - "baseline": 40.00000000000001, - "textAlign": "center", - "verticalAlign": "top", - "containerId": null, - "originalText": "DevSecOps Workshop Architecture" - }, - { - "type": "rectangle", - "version": 708, - "versionNonce": 542043130, - "isDeleted": false, - "id": "8WrqvqiAjc00nYNjo9gZk", - "fillStyle": "cross-hatch", - "strokeWidth": 2, - "strokeStyle": "solid", - "roughness": 1, - "opacity": 90, - "angle": 0, - "x": 570, - "y": 139, - "strokeColor": "#000000", - "backgroundColor": "transparent", - "width": 1281, - "height": 704, - "seed": 1254526419, - "groupIds": [], - "strokeSharpness": "sharp", - "boundElements": [], - "updated": 1662376667301, - "link": null, - "locked": false - }, - { - "type": "line", - "version": 4437, - "versionNonce": 23160998, - "isDeleted": false, - "id": "wntYgz6uM6s_HBN_KMR65", - "fillStyle": "hachure", - "strokeWidth": 2, - "strokeStyle": "solid", - "roughness": 1, - "opacity": 90, - "angle": 0, - "x": 320.5892304662775, - "y": 65.49173531033286, - "strokeColor": "#c92a2a", - "backgroundColor": "#fa5252", - "width": 130.6580031652458, - "height": 93.55764515124328, - "seed": 717152627, - "groupIds": [ - "g_ZYKV0PmWmJecyAyG0vE" - ], - "strokeSharpness": "round", - "boundElements": [], - "updated": 1662376667301, - "link": null, - "locked": false, - "startBinding": null, - "endBinding": null, - "lastCommittedPoint": null, - "startArrowhead": null, - "endArrowhead": null, - "points": [ - [ - 0, - 0 - ], - [ - 6.751631440482483, - -21.744604760402623 - ], - [ - 12.071098636014012, - -38.24051182001862 - ], - [ - 18.20894540008893, - -49.35058995627114 - ], - [ - 27.006525761929773, - -51.276549057875634 - ], - [ - 38.05464993726463, - -45.7889736593089 - ], - [ - 49.30736900473541, - -53.271073770767785 - ], - [ - 68.33469397336775, - -50.612442114730406 - ], - [ - 102.50204096005159, - -39.927593223842734 - ], - [ - 115.80070894888058, - -28.30547688638609 - ], - [ - 130.6580031652458, - 28.060398329301506 - ], - [ - 111.81824232503068, - 40.286571380475486 - ], - [ - 72.14386401439745, - 36.91440176652914 - ], - [ - 17.18597093940944, - 18.485072139848473 - ], - [ - 0, - 0 - ] - ] - }, - { - "type": "line", - "version": 4621, - "versionNonce": 1313037498, - "isDeleted": false, - "id": "JyadeZaz-nApBsaSLy5p6", - "fillStyle": "hachure", - "strokeWidth": 2, - "strokeStyle": "solid", - "roughness": 1, - "opacity": 90, - "angle": 0, - "x": 319.2790907030394, - "y": 70.7991843340742, - "strokeColor": "#c92a2a", - "backgroundColor": "#fa5252", - "width": 216.87058566398125, - "height": 105.98015412636072, - "seed": 238052157, - "groupIds": [ - "g_ZYKV0PmWmJecyAyG0vE" - ], - "strokeSharpness": "round", - "boundElements": [], - "updated": 1662376667301, - "link": null, - "locked": false, - "startBinding": null, - "endBinding": null, - "lastCommittedPoint": null, - "startArrowhead": null, - "endArrowhead": null, - "points": [ - [ - 0, - 0 - ], - [ - -19.027324968632406, - 3.2735182741733384 - ], - [ - -32.53058784959727, - 7.5700110090258 - ], - [ - -40.714383535030386, - 19.027324968632367 - ], - [ - -40.305193750758825, - 39.282219290079546 - ], - [ - -25.36976662484299, - 58.309544258712016 - ], - [ - 7.774605901161586, - 81.01957728578927 - ], - [ - 74.67713562957849, - 103.93420520500231 - ], - [ - 127.87180758489482, - 105.98015412636072 - ], - [ - 165.92645752215952, - 89.2033729712225 - ], - [ - 176.1562021289509, - 64.03820123851503 - ], - [ - 161.425369895171, - 38.05464993726463 - ], - [ - 136.66938794673536, - 25.36976662484304 - ], - [ - 138.53203043061052, - 34.30658204206115 - ], - [ - 136.66289389782435, - 46.66466617069298 - ], - [ - 123.19518701709988, - 53.308145840076726 - ], - [ - 102.76773799801693, - 57.02513045099989 - ], - [ - 69.97145311045328, - 50.813408468305106 - ], - [ - 30.689233820376245, - 36.692103220002295 - ], - [ - 11.61922442992149, - 25.902010098469074 - ], - [ - -0.6265577491993763, - 11.526931487294902 - ], - [ - 0, - 0 - ] - ] - }, - { - "type": "line", - "version": 3893, - "versionNonce": 800678886, - "isDeleted": false, - "id": "7SyGlpzJiL-b6p38pAfBy", - "fillStyle": "hachure", - "strokeWidth": 2, - "strokeStyle": "solid", - "roughness": 1, - "opacity": 90, - "angle": 0, - "x": 321.0994122611919, - "y": 64.29856312402173, - "strokeColor": "#000000", - "backgroundColor": "#111111", - "width": 139.45788662720503, - "height": 62.401442101428636, - "seed": 1978153747, - "groupIds": [ - "g_ZYKV0PmWmJecyAyG0vE" - ], - "strokeSharpness": "round", - "boundElements": [], - "updated": 1662376667301, - "link": null, - "locked": false, - "startBinding": null, - "endBinding": null, - "lastCommittedPoint": null, - "startArrowhead": null, - "endArrowhead": null, - "points": [ - [ - 0, - 0 - ], - [ - 22.804818964804006, - 21.687058566398193 - ], - [ - 86.12085708379372, - 41.73735799570947 - ], - [ - 125.37374612577968, - 38.463839721536395 - ], - [ - 130.37165585906067, - 26.392741085522232 - ], - [ - 135.7254606218297, - 45.82925583842618 - ], - [ - 128.13291561740596, - 58.104949366576136 - ], - [ - 104.83377820588099, - 62.401442101428636 - ], - [ - 71.03520296880636, - 58.923328935119315 - ], - [ - 24.796399983098315, - 43.16952224066042 - ], - [ - 1.590617998009283, - 24.551387056299777 - ], - [ - -3.7324260053752747, - 14.321642449508143 - ], - [ - 0, - 0 - ] - ] - }, - { - "type": "line", - "version": 708, - "versionNonce": 1307293050, - "isDeleted": false, - "id": "f5KYH-B9kAnWXXo51R9-H", - "fillStyle": "cross-hatch", - "strokeWidth": 1, - "strokeStyle": "solid", - "roughness": 1, - "opacity": 100, - "angle": 0, - "x": 1812.0073727222634, - "y": 145.00498424785317, - "strokeColor": "#db212f", - "backgroundColor": "#db212f", - "width": 15.057127222627372, - "height": 12.261063255147196, - "seed": 300826365, - "groupIds": [ - "XlWWhul_UJlIc-Kn2RdKM", - "-Hi40yyCOS2FYhEDrTPcO" - ], - "strokeSharpness": "sharp", - "boundElements": [], - "updated": 1662376667301, - "link": null, - "locked": false, - "lastCommittedPoint": null, - "startArrowhead": null, - "endArrowhead": null, - "points": [ - [ - 0, - 0 - ], - [ - -14.616681342596005, - 5.324819892381999 - ], - [ - -14.616681342596005, - 5.324819892381999 - ], - [ - -14.17376881036628, - 8.82008778368913 - ], - [ - -13.456338021439967, - 12.259542418501105 - ], - [ - 0.44044588003136376, - 7.197468058759137 - ], - [ - 0.44044588003136376, - 7.197468058759137 - ], - [ - -0.011390342271196507, - 3.6270215909966614 - ], - [ - 0.015188088638847574, - -0.0015208366460921496 - ] - ] - }, - { - "type": "line", - "version": 707, - "versionNonce": 535820070, - "isDeleted": false, - "id": "bc07NLfZ6wBrmPN4gV5sW", - "fillStyle": "cross-hatch", - "strokeWidth": 1, - "strokeStyle": "solid", - "roughness": 1, - "opacity": 100, - "angle": 0, - "x": 1876.872135362504, - "y": 128.39985372330213, - "strokeColor": "#db212f", - "backgroundColor": "#db212f", - "width": 18.197948925199313, - "height": 11.115906574214128, - "seed": 2052520787, - "groupIds": [ - "XlWWhul_UJlIc-Kn2RdKM", - "-Hi40yyCOS2FYhEDrTPcO" - ], - "strokeSharpness": "sharp", - "boundElements": [], - "updated": 1662376667301, - "link": null, - "locked": false, - "lastCommittedPoint": null, - "startArrowhead": null, - "endArrowhead": null, - "points": [ - [ - 0, - 0 - ], - [ - 0, - 0 - ], - [ - -1.6547050329147124, - -3.099058079854779 - ], - [ - -3.5691168220090894, - -6.056870990932633 - ], - [ - -18.197948925199313, - -0.7320496501346963 - ], - [ - -18.197948925199313, - -0.7320496501346963 - ], - [ - -15.849545397116387, - 2.0319304577765314 - ], - [ - -13.899821229515979, - 5.059035583281502 - ], - [ - 0, - 0 - ] - ] - }, - { - "type": "line", - "version": 708, - "versionNonce": 277542458, - "isDeleted": false, - "id": "WI1EejQvjeUV9LSZ1ot1W", - "fillStyle": "cross-hatch", - "strokeWidth": 1, - "strokeStyle": "solid", - "roughness": 1, - "opacity": 100, - "angle": 0, - "x": 1844.741511980074, - "y": 124.46697546257788, - "strokeColor": "#db212f", - "backgroundColor": "#db212f", - "width": 75.81253322810664, - "height": 45.04589164255064, - "seed": 925325149, - "groupIds": [ - "pBHxrM3AqO8CWPQXmIOZ-", - "-Hi40yyCOS2FYhEDrTPcO" - ], - "strokeSharpness": "sharp", - "boundElements": [], - "updated": 1662376667301, - "link": null, - "locked": false, - "lastCommittedPoint": null, - "startArrowhead": null, - "endArrowhead": null, - "points": [ - [ - 0, - 0 - ], - [ - 0, - 0 - ], - [ - 4.259402849426743, - 2.4949658314576624 - ], - [ - 7.903704041554605, - 5.630095259725732 - ], - [ - 22.53405408455911, - 0.3052739189279503 - ], - [ - 22.53405408455911, - 0.3052739189279503 - ], - [ - 19.138173592281127, - -3.8673601303844958 - ], - [ - 15.24909012092732, - -7.552422641459149 - ], - [ - 10.918506322800576, - -10.706893490825568 - ], - [ - 6.19811905654128, - -13.287754727637926 - ], - [ - 2.234222009527124, - -14.897026214166894 - ], - [ - -1.7961109758512919, - -16.07522705437966 - ], - [ - -5.864716901740125, - -16.83260913568656 - ], - [ - -9.943409595632126, - -17.179423621290262 - ], - [ - -14.004023162841754, - -17.12592239860094 - ], - [ - -18.01837722452531, - -16.682356992925172 - ], - [ - -21.95830009233396, - -15.858980015881567 - ], - [ - -25.795617181087014, - -14.666041906464322 - ], - [ - -29.502151008772366, - -13.113795638395903 - ], - [ - -33.049732783873026, - -11.212492012774932 - ], - [ - -36.410182127544914, - -8.972383641219674 - ], - [ - -39.55533024827102, - -6.4037216869325295 - ], - [ - -42.4569982156232, - -3.5167565889083434 - ], - [ - -45.087012892836896, - -0.32174240718104485 - ], - [ - -47.41720114314734, - 3.171070419254548 - ], - [ - -49.41938765716614, - 6.951430002988154 - ], - [ - -51.37716284428783, - 11.962969133604677 - ], - [ - -52.667513799822046, - 17.163459905961766 - ], - [ - -53.278479143547536, - 22.486695231400166 - ], - [ - -53.19809749524285, - 27.866468021260374 - ], - [ - -38.56622733980009, - 22.543163171861146 - ], - [ - -38.56622733980009, - 22.543163171861146 - ], - [ - -37.78918554801086, - 17.799841688978947 - ], - [ - -36.131632929528294, - 13.151064102512025 - ], - [ - -33.31672507179529, - 8.424778886897506 - ], - [ - -29.722953315129445, - 4.472764643544799 - ], - [ - -25.496669942606843, - 1.348259345561452 - ], - [ - -20.784231582550888, - -0.8955077244395149 - ], - [ - -15.731989069621903, - -2.2052985933502995 - ], - [ - -10.486301928975067, - -2.5278810817263966 - ], - [ - -5.193520995270404, - -1.8100201132916165 - ], - [ - 5.684352728102526e-14, - 0.0015193882302124706 - ] - ] - }, - { - "type": "line", - "version": 707, - "versionNonce": 1248993894, - "isDeleted": false, - "id": "6oij0WK_m7aP1lp6Uqqr7", - "fillStyle": "cross-hatch", - "strokeWidth": 1, - "strokeStyle": "solid", - "roughness": 1, - "opacity": 100, - "angle": 0, - "x": 1799.8921534112642, - "y": 156.69499793638806, - "strokeColor": "#db212f", - "backgroundColor": "#db212f", - "width": 21.135260958288036, - "height": 19.23375745127928, - "seed": 857872627, - "groupIds": [ - "xe1BDv0Ik6eS3i_ZaaVrg", - "-Hi40yyCOS2FYhEDrTPcO" - ], - "strokeSharpness": "sharp", - "boundElements": [], - "updated": 1662376667301, - "link": null, - "locked": false, - "lastCommittedPoint": null, - "startArrowhead": null, - "endArrowhead": null, - "points": [ - [ - 0, - 0 - ], - [ - -13.901339169330232, - 5.060556419927578 - ], - [ - -13.901339169330232, - 5.060556419927578 - ], - [ - -12.769757584931266, - 8.810053158656753 - ], - [ - -11.295882201859168, - 12.43895479343112 - ], - [ - -9.490534497058649, - 15.92119563255274 - ], - [ - -7.364535585370593, - 19.230721571650527 - ], - [ - 7.233921788957807, - 13.915012214986383 - ], - [ - 7.233921788957807, - 13.915012214986383 - ], - [ - 4.6748345876696735, - 10.861247547283575 - ], - [ - 2.596717045159691, - 7.486259005275251 - ], - [ - 1.0287214273092773, - 3.84613504446863 - ], - [ - -7.105427357601002e-15, - -0.003035879628753513 - ] - ] - }, - { - "type": "line", - "version": 706, - "versionNonce": 1728323322, - "isDeleted": false, - "id": "lXLhUsF6cIPdCalY9LsXj", - "fillStyle": "cross-hatch", - "strokeWidth": 1, - "strokeStyle": "solid", - "roughness": 1, - "opacity": 100, - "angle": 0, - "x": 1860.513037699569, - "y": 151.0961531026524, - "strokeColor": "#db212f", - "backgroundColor": "#db212f", - "width": 75.78996437438275, - "height": 45.03934263026952, - "seed": 442393533, - "groupIds": [ - "PDMHehvMnDWQoTOJluHvO", - "-Hi40yyCOS2FYhEDrTPcO" - ], - "strokeSharpness": "sharp", - "boundElements": [], - "updated": 1662376667301, - "link": null, - "locked": false, - "lastCommittedPoint": null, - "startArrowhead": null, - "endArrowhead": null, - "points": [ - [ - 0, - 0 - ], - [ - 0, - 0 - ], - [ - -0.7979612619600112, - 4.809693690948873 - ], - [ - -2.454340663601258, - 9.395140742641292 - ], - [ - -5.269186239452615, - 14.121420164592262 - ], - [ - -8.862810257701469, - 18.07341123329136 - ], - [ - -13.088905336163094, - 21.197864388304026 - ], - [ - -17.801175679979963, - 23.441518481868417 - ], - [ - -22.853313906967415, - 24.751129747213415 - ], - [ - -28.09903291276312, - 25.073442830240726 - ], - [ - -33.392019521518975, - 24.3552023768524 - ], - [ - -38.5859779383772, - 22.543164620276947 - ], - [ - -42.80189644705284, - 20.093852856518723 - ], - [ - -46.506385111553286, - 16.92369928449945 - ], - [ - -61.10484103746573, - 22.239408641163465 - ], - [ - -61.10484103746573, - 22.239408641163465 - ], - [ - -57.800106458011086, - 26.318906654269917 - ], - [ - -53.96413349916998, - 29.986486785993755 - ], - [ - -49.617567880516816, - 33.17992509127249 - ], - [ - -44.781055321626326, - 35.83699762504376 - ], - [ - -40.81719303659254, - 37.44623398748825 - ], - [ - -36.786952749828814, - 38.62433488700707 - ], - [ - -32.71850035602038, - 39.38156669516916 - ], - [ - -28.639998853021027, - 39.72818998988028 - ], - [ - -24.579617032347983, - 39.6744595553821 - ], - [ - -20.565517891854626, - 39.23063596958054 - ], - [ - -16.62587311988986, - 38.40698560404443 - ], - [ - -12.788839920643921, - 37.21376324301611 - ], - [ - -9.082587085634232, - 35.66123525806417 - ], - [ - -5.535283406377404, - 33.759656433431 - ], - [ - -2.1750860870640736, - 31.519293140685605 - ], - [ - 0.9698302871254398, - 28.950400164069887 - ], - [ - 3.871302718337546, - 26.063238081489523 - ], - [ - 6.501168208718221, - 22.868073264513562 - ], - [ - 8.831263760414274, - 19.375166291047492 - ], - [ - 10.833414788244482, - 15.594771945333305 - ], - [ - 12.79060698798517, - 10.58564008186536 - ], - [ - 14.078509396519241, - 5.387200266356471 - ], - [ - 14.685123336917002, - 0.06607093756920435 - ], - [ - 14.5984559259125, - -5.3111526403892615 - ], - [ - 0.0030358796286549246, - 0.0015208366460797156 - ], - [ - 0, - 0 - ] - ] - }, - { - "type": "line", - "version": 707, - "versionNonce": 302835110, - "isDeleted": false, - "id": "t6zC6Ks9wMbXlSd_IkbXg", - "fillStyle": "cross-hatch", - "strokeWidth": 1, - "strokeStyle": "solid", - "roughness": 1, - "opacity": 100, - "angle": 0, - "x": 1864.2912948506817, - "y": 133.40343309301588, - "strokeColor": "#db212f", - "backgroundColor": "#db212f", - "width": 18.000512463389445, - "height": 20.36979635441513, - "seed": 200835731, - "groupIds": [ - "OATV6O3C6Jj4jKAau1-nj", - "-Hi40yyCOS2FYhEDrTPcO" - ], - "strokeSharpness": "sharp", - "boundElements": [], - "updated": 1662376667301, - "link": null, - "locked": false, - "lastCommittedPoint": null, - "startArrowhead": null, - "endArrowhead": null, - "points": [ - [ - 0, - 0 - ], - [ - -13.901339169330214, - 5.060556419927573 - ], - [ - -13.901339169330214, - 5.060556419927573 - ], - [ - -12.224351706926663, - 8.65100840745738 - ], - [ - -11.082304774830863, - 12.441228806321043 - ], - [ - -10.499259457199686, - 16.36842299560986 - ], - [ - -10.499282631853335, - 20.369796354415122 - ], - [ - 4.099173294059227, - 15.058646610857604 - ], - [ - 4.099173294059227, - 15.058646610857604 - ], - [ - 3.6036702306080626, - 11.15686632613269 - ], - [ - 2.749359798287061, - 7.328845170326803 - ], - [ - 1.544781856967882, - 3.6010601852401734 - ], - [ - -0.0015179398143487788, - 1.0842021724855044e-19 - ] - ] - }, - { - "type": "rectangle", - "version": 933, - "versionNonce": 232402874, - "isDeleted": false, - "id": "YbM8xe6NaFlLoIbF5ZNkj", - "fillStyle": "cross-hatch", - "strokeWidth": 2, - "strokeStyle": "solid", - "roughness": 1, - "opacity": 90, - "angle": 0, - "x": 735, - "y": 185, - "strokeColor": "#000000", - "backgroundColor": "transparent", - "width": 96, - "height": 61, - "seed": 580511379, - "groupIds": [], - "strokeSharpness": "sharp", - "boundElements": [ - { - "id": "7Syn5DvjY3mv9SneA2hDa", - "type": "arrow" - }, - { - "id": "LUbBz_tU04VUacwIREtSp", - "type": "arrow" - } - ], - "updated": 1662376667301, - "link": null, - "locked": false - }, - { - "type": "text", - "version": 589, - "versionNonce": 2012037350, - "isDeleted": false, - "id": "iuxdb0W-9J_Gkd_DYbuW_", - "fillStyle": "cross-hatch", - "strokeWidth": 2, - "strokeStyle": "solid", - "roughness": 1, - "opacity": 90, - "angle": 0, - "x": 758.5, - "y": 147.5, - "strokeColor": "#000000", - "backgroundColor": "transparent", - "width": 37, - "height": 35, - "seed": 81439549, - "groupIds": [], - "strokeSharpness": "sharp", - "boundElements": [], - "updated": 1662376667301, - "link": null, - "locked": false, - "fontSize": 28, - "fontFamily": 1, - "text": "git", - "baseline": 25, - "textAlign": "center", - "verticalAlign": "top", - "containerId": null, - "originalText": "git" - }, - { - "type": "line", - "version": 1063, - "versionNonce": 959457402, - "isDeleted": false, - "id": "Q8EB985YDHetJxeoUp0Vw", - "fillStyle": "cross-hatch", - "strokeWidth": 1, - "strokeStyle": "solid", - "roughness": 0, - "opacity": 100, - "angle": 0, - "x": 759.3375385298189, - "y": 197.05127472665572, - "strokeColor": "#428f29", - "backgroundColor": "#609926", - "width": 66.5027317863492, - "height": 41.006360360924916, - "seed": 2142521811, - "groupIds": [ - "zl1s8cNmh8UrJcf74pI-f" - ], - "strokeSharpness": "sharp", - "boundElements": [], - "updated": 1662376667301, - "link": null, - "locked": false, - "lastCommittedPoint": null, - "startArrowhead": null, - "endArrowhead": null, - "points": [ - [ - 0, - 0 - ], - [ - 0, - 0 - ], - [ - -1.9819704021413749, - 0.1700804476166412 - ], - [ - -4.021831182534616, - 0.7059082463466613 - ], - [ - -5.030615013067983, - 1.1176989561642738 - ], - [ - -6.014442852708516, - 1.6289927770316832 - ], - [ - -6.9601750754113105, - 2.242479147921579 - ], - [ - -7.854667456926681, - 2.9608434205133602 - ], - [ - -8.68477832756329, - 3.7867791210730144 - ], - [ - -9.437364995806295, - 4.722969557633341 - ], - [ - -10.099284770140986, - 5.772108256460275 - ], - [ - -10.657395980875966, - 6.9368785255865895 - ], - [ - -11.098555936496442, - 8.21997389127839 - ], - [ - -11.40962220094355, - 9.624079705214903 - ], - [ - -11.577452593614222, - 11.15188745001558 - ], - [ - -11.588904422993668, - 12.806082477359743 - ], - [ - -11.336825464130218, - 15.34153676334101 - ], - [ - -10.822590324842285, - 17.589778994775504 - ], - [ - -10.075910561744195, - 19.568065723855852 - ], - [ - -9.12649824236198, - 21.293639197248098 - ], - [ - -8.004065178765881, - 22.783760054438325 - ], - [ - -6.738322927570264, - 24.05567667303228 - ], - [ - -5.358984067212862, - 25.126637430636144 - ], - [ - -3.8957586215729645, - 26.01389479214918 - ], - [ - -2.378360190911682, - 26.734705309764024 - ], - [ - -0.8365003318433182, - 27.30631327379341 - ], - [ - 0.7001093990176681, - 27.745975236429842 - ], - [ - 2.2017574450569644, - 28.07093957527943 - ], - [ - 3.6387312278367414, - 28.298458755241516 - ], - [ - 4.981321234389505, - 28.445785241215386 - ], - [ - 6.199812842630774, - 28.530167410807024 - ], - [ - 7.264495517769529, - 28.56885772891568 - ], - [ - 7.435231975956343, - 29.14575056314516 - ], - [ - 7.7258916623775775, - 29.854327811998132 - ], - [ - 8.125992713438439, - 30.672101187894526 - ], - [ - 8.625047134604204, - 31.576578315960653 - ], - [ - 9.87808658922341, - 33.555678416402095 - ], - [ - 11.401132637362723, - 35.611693201627844 - ], - [ - 13.110309933796094, - 37.564700021823626 - ], - [ - 14.921747220591012, - 39.234768052587974 - ], - [ - 15.839600015888385, - 39.90747112839627 - ], - [ - 16.751565065228064, - 40.44196238222666 - ], - [ - 17.647156417721916, - 40.81575761379161 - ], - [ - 18.515890166128166, - 41.006360360924916 - ], - [ - 38.41932239020985, - 41.00636036092489 - ], - [ - 38.41932239020985, - 41.00636036092489 - ], - [ - 39.52905929908097, - 40.811310638712186 - ], - [ - 40.61893604994564, - 40.40327615141114 - ], - [ - 41.68664740939881, - 39.79659921111167 - ], - [ - 42.72989631862134, - 39.005626217197076 - ], - [ - 43.74637345691538, - 38.044703569050476 - ], - [ - 44.733789940047984, - 36.92816540417523 - ], - [ - 45.68983236002843, - 35.67036629654137 - ], - [ - 46.61220774533085, - 34.285644470945215 - ], - [ - 47.498614949843414, - 32.78834632677018 - ], - [ - 48.3467528274542, - 31.19281826339949 - ], - [ - 49.919011930229885, - 27.76443345284421 - ], - [ - 51.310579972055685, - 24.11524488517218 - ], - [ - 52.503051871330385, - 20.36000740627583 - ], - [ - 53.478018459157994, - 16.613467687461423 - ], - [ - 54.21707465393703, - 12.990384661914874 - ], - [ - 54.701811286772546, - 9.605507044588766 - ], - [ - 54.84305996765153, - 8.038254876070912 - ], - [ - 54.91382736335554, - 6.5735876377294815 - ], - [ - 54.91180824047939, - 5.225847641654507 - ], - [ - 54.83471371479084, - 4.009379243582792 - ], - [ - 54.68023037829856, - 2.938526799250514 - ], - [ - 54.44606117218366, - 2.0276346643947214 - ], - [ - 54.129900863041016, - 1.2910451511050063 - ], - [ - 53.72946056663854, - 0.7431046587646399 - ], - [ - 53.24243504957106, - 0.3981554994636305 - ], - [ - 52.66651499114012, - 0.2705440725852277 - ], - [ - 50.38399467468378, - 0.3905470030386695 - ], - [ - 48.230493857637555, - 0.5018113004773248 - ], - [ - 46.19825894466584, - 0.6044330162933456 - ], - [ - 44.279552689605055, - 0.6985163764650153 - ], - [ - 40.75173220833915, - 0.8614624536761077 - ], - [ - 37.58507313513575, - 0.9914424670054487 - ], - [ - 34.71760392941139, - 1.089257525934066 - ], - [ - 32.08736939975574, - 1.1557066962966545 - ], - [ - 29.632402092878237, - 1.1915849566344754 - ], - [ - 27.290742730075316, - 1.1976913727821934 - ], - [ - 22.699482110825095, - 1.1237828921989905 - ], - [ - 20.32595820967701, - 1.0453620398440044 - ], - [ - 17.81788470132205, - 0.9403656066372221 - ], - [ - 15.11330230705643, - 0.809586527473364 - ], - [ - 12.150247660883139, - 0.6538238681870236 - ], - [ - 8.866755353158485, - 0.4738766946127946 - ], - [ - 7.0854822907078265, - 0.3750827289456167 - ], - [ - 5.200864061532112, - 0.2705440725852437 - ], - [ - 4.105790317272589, - 0.22292301867815878 - ], - [ - 2.8497467020987655, - 0.1318560809408833 - ], - [ - 1.4690467730818961, - 0.042497631791162616 - ], - [ - 0, - 0 - ], - [ - 0, - 0 - ] - ] - }, - { - "type": "line", - "version": 1046, - "versionNonce": 1335899174, - "isDeleted": false, - "id": "lGMXFgtMaMylvK7rWo7vG", - "fillStyle": "solid", - "strokeWidth": 1, - "strokeStyle": "solid", - "roughness": 0, - "opacity": 100, - "angle": 0, - "x": 760.6720418266365, - "y": 202.11820636226628, - "strokeColor": "#428f29", - "backgroundColor": "#FFFFFF", - "width": 12.320199869673417, - "height": 18.184807149251014, - "seed": 1005334749, - "groupIds": [ - "zl1s8cNmh8UrJcf74pI-f" - ], - "strokeSharpness": "sharp", - "boundElements": [], - "updated": 1662376667301, - "link": null, - "locked": false, - "lastCommittedPoint": null, - "startArrowhead": null, - "endArrowhead": null, - "points": [ - [ - 0, - 0 - ], - [ - 0, - 0 - ], - [ - 0.29448232745354375, - 2.6187410609760664 - ], - [ - 0.6405902343969956, - 5.014246425338673 - ], - [ - 1.0471563615902326, - 7.2487553513807 - ], - [ - 1.5230133497931106, - 9.384511184688263 - ], - [ - 2.717931494090582, - 13.608722649918137 - ], - [ - 3.4546620189981816, - 15.82166088571943 - ], - [ - 4.296017033424848, - 18.184807149251014 - ], - [ - 2.0584283319027072, - 17.818516188132502 - ], - [ - -0.05507116771784126, - 17.29105916602271 - ], - [ - -2.0054805130394264, - 16.552538406662148 - ], - [ - -3.7537915989014934, - 15.553035797325172 - ], - [ - -4.5399712196319015, - 14.939819187791205 - ], - [ - -5.260998363790126, - 14.242645487165886 - ], - [ - -5.9119989341498105, - 13.455265224036966 - ], - [ - -6.488096789837993, - 12.571449363458553 - ], - [ - -6.984415789981686, - 11.584956608605028 - ], - [ - -7.39608081553121, - 10.48954361900395 - ], - [ - -7.718214703790242, - 9.278975228769639 - ], - [ - -7.945942846620827, - 7.947014228369632 - ], - [ - -8.024182836248567, - 6.4582932691250114 - ], - [ - -7.856660523308257, - 5.005164459689245 - ], - [ - -7.413178985109507, - 3.6405909462753625 - ], - [ - -6.663539766226968, - 2.4175481369762 - ], - [ - -6.164475126828098, - 1.8756507077379005 - ], - [ - -5.577546965793577, - 1.388997134358164 - ], - [ - -4.898980667787072, - 0.9642108755835823 - ], - [ - -4.125001617472318, - 0.6079113028674633 - ], - [ - -3.2518351995130104, - 0.326717787663117 - ], - [ - -2.2757067985728305, - 0.12725583236376134 - ], - [ - -1.1928407774922007, - 0.016142764776073733 - ], - [ - 0.0005354354185769239, - -3.17415905654013e-16 - ], - [ - 0, - 0 - ] - ] - }, - { - "type": "line", - "version": 1100, - "versionNonce": 550046010, - "isDeleted": false, - "id": "Ut5FMjc52z6fgsL0J6BGw", - "fillStyle": "solid", - "strokeWidth": 1, - "strokeStyle": "solid", - "roughness": 0, - "opacity": 100, - "angle": 0, - "x": 787.9164628574821, - "y": 210.2172928355925, - "strokeColor": "#428f29", - "backgroundColor": "#ffffff", - "width": 1.7480862847321295, - "height": 12.703759133952614, - "seed": 1825675123, - "groupIds": [ - "hnittqP4OOF9j9Lcenkuc", - "zl1s8cNmh8UrJcf74pI-f" - ], - "strokeSharpness": "sharp", - "boundElements": [], - "updated": 1662376667302, - "link": null, - "locked": false, - "lastCommittedPoint": null, - "startArrowhead": null, - "endArrowhead": null, - "points": [ - [ - 0, - 0 - ], - [ - 1.7362985309369154, - 0.8619897145081872 - ], - [ - 1.7362985309369154, - -11.841769419444425 - ], - [ - -0.011787753795213948, - -11.841769419444425 - ], - [ - 0, - 0 - ] - ] - }, - { - "type": "rectangle", - "version": 1127, - "versionNonce": 1930608486, - "isDeleted": false, - "id": "lYxoc6qsCbufQWfkaYPjn", - "fillStyle": "solid", - "strokeWidth": 1, - "strokeStyle": "solid", - "roughness": 0, - "opacity": 100, - "angle": 0.5235987755982983, - "x": 779.0262304756161, - "y": 209.01417476491508, - "strokeColor": "#428f29", - "backgroundColor": "#fff", - "width": 16.75036748829949, - "height": 16.75036748829949, - "seed": 877399357, - "groupIds": [ - "zl1s8cNmh8UrJcf74pI-f" - ], - "strokeSharpness": "round", - "boundElements": [], - "updated": 1662376667302, - "link": null, - "locked": false - }, - { - "type": "line", - "version": 1143, - "versionNonce": 201839098, - "isDeleted": false, - "id": "W9GQ91KbkZiI8PMWjEt3V", - "fillStyle": "cross-hatch", - "strokeWidth": 1, - "strokeStyle": "solid", - "roughness": 0, - "opacity": 100, - "angle": 0, - "x": 787.5675536338199, - "y": 213.27043987335145, - "strokeColor": "#609926", - "backgroundColor": "none", - "width": 3.9928709593189584, - "height": 8.607162705368937, - "seed": 271855891, - "groupIds": [ - "S0CmrEuo-ZXU3htKaoIxB", - "zl1s8cNmh8UrJcf74pI-f" - ], - "strokeSharpness": "sharp", - "boundElements": [], - "updated": 1662376667302, - "link": null, - "locked": false, - "lastCommittedPoint": null, - "startArrowhead": null, - "endArrowhead": null, - "points": [ - [ - 0, - 0 - ], - [ - 0, - 0 - ], - [ - 0.8708256796103779, - 0.45456506781286815 - ], - [ - 1.6286245156968555, - 0.842039937231826 - ], - [ - 2.2760685651818604, - 1.1791900911006858 - ], - [ - 2.8158269742504354, - 1.4827653083640089 - ], - [ - 3.250574710562407, - 1.7695310718656039 - ], - [ - 3.582983831040201, - 2.0562403013298867 - ], - [ - 3.8157205711314752, - 2.359655338820815 - ], - [ - 3.9514598984960405, - 2.6965322448426505 - ], - [ - 3.9928709593189584, - 3.083627079899658 - ], - [ - 3.9426287212600317, - 3.5377021860557947 - ], - [ - 3.803399419766926, - 4.075513623815322 - ], - [ - 3.577858022499456, - 4.713820594462351 - ], - [ - 3.268676586380058, - 5.469382299280998 - ], - [ - 2.878524257593769, - 6.358951657995674 - ], - [ - 2.410073093063024, - 7.399294153450177 - ], - [ - 1.8659951497102514, - 8.607162705368937 - ] - ] - }, - { - "type": "line", - "version": 1186, - "versionNonce": 1989272230, - "isDeleted": false, - "id": "1wLhwqt45xhbe4vgxY7NZ", - "fillStyle": "cross-hatch", - "strokeWidth": 1, - "strokeStyle": "solid", - "roughness": 0, - "opacity": 100, - "angle": 0, - "x": 787.19375468775, - "y": 207.89598632136608, - "strokeColor": "#428f29", - "backgroundColor": "#428f29", - "width": 7.847296587542959, - "height": 13.752717991875608, - "seed": 1630625181, - "groupIds": [ - "1pSuO6LCaukkQ9UMQK_hA", - "zl1s8cNmh8UrJcf74pI-f" - ], - "strokeSharpness": "sharp", - "boundElements": [], - "updated": 1662376667302, - "link": null, - "locked": false, - "lastCommittedPoint": null, - "startArrowhead": null, - "endArrowhead": null, - "points": [ - [ - 0, - 0 - ], - [ - 1.43889895103068, - 0.4763351483960596 - ], - [ - -5.121574659356895, - 13.7527179918756 - ], - [ - -6.40839763651228, - 13.124304825957973 - ], - [ - 0, - 0 - ] - ] - }, - { - "type": "ellipse", - "version": 1104, - "versionNonce": 1575977658, - "isDeleted": false, - "id": "yF40ew457jmrEJrTbM6rg", - "fillStyle": "solid", - "strokeWidth": 1, - "strokeStyle": "solid", - "roughness": 0, - "opacity": 100, - "angle": 0, - "x": 784.0794541733192, - "y": 210.66429372466973, - "strokeColor": "#609926", - "backgroundColor": "#609926", - "width": 3.5032895688733885, - "height": 3.5032895688733885, - "seed": 189961907, - "groupIds": [ - "KCLSuwLSEWUC_iP7kSNCk", - "zl1s8cNmh8UrJcf74pI-f" - ], - "strokeSharpness": "sharp", - "boundElements": [], - "updated": 1662376667302, - "link": null, - "locked": false - }, - { - "type": "ellipse", - "version": 1104, - "versionNonce": 1556782566, - "isDeleted": false, - "id": "kzUT99c-It4ecp0bLdMpU", - "fillStyle": "solid", - "strokeWidth": 1, - "strokeStyle": "solid", - "roughness": 0, - "opacity": 100, - "angle": 0, - "x": 780.0842108335173, - "y": 218.95025900946422, - "strokeColor": "#609926", - "backgroundColor": "#609926", - "width": 3.5032895688733885, - "height": 3.5032895688733885, - "seed": 2043519485, - "groupIds": [ - "KCLSuwLSEWUC_iP7kSNCk", - "zl1s8cNmh8UrJcf74pI-f" - ], - "strokeSharpness": "sharp", - "boundElements": [], - "updated": 1662376667302, - "link": null, - "locked": false - }, - { - "type": "ellipse", - "version": 1104, - "versionNonce": 555948922, - "isDeleted": false, - "id": "Hw8JiSvWpyA7wcNoYuOcM", - "fillStyle": "solid", - "strokeWidth": 1, - "strokeStyle": "solid", - "roughness": 0, - "opacity": 100, - "angle": 0, - "x": 786.6541178636505, - "y": 221.90003403980205, - "strokeColor": "#609926", - "backgroundColor": "#609926", - "width": 3.5032895688733885, - "height": 3.5032895688733885, - "seed": 215173203, - "groupIds": [ - "KCLSuwLSEWUC_iP7kSNCk", - "zl1s8cNmh8UrJcf74pI-f" - ], - "strokeSharpness": "sharp", - "boundElements": [], - "updated": 1662376667302, - "link": null, - "locked": false - }, - { - "type": "line", - "version": 661, - "versionNonce": 1254748454, - "isDeleted": false, - "id": "xDY61qQQ6Ap2p04GrSIhU", - "fillStyle": "cross-hatch", - "strokeWidth": 1, - "strokeStyle": "solid", - "roughness": 1, - "opacity": 100, - "angle": 0, - "x": 943.7650494170268, - "y": 207.5536810655546, - "strokeColor": "#000000", - "backgroundColor": "#fa5252", - "width": 21.361340598602617, - "height": 21.479359054948496, - "seed": 1526894483, - "groupIds": [ - "hLaUC0pyklAgiIpkyHRSs" - ], - "strokeSharpness": "sharp", - "boundElements": [], - "updated": 1662376667302, - "link": null, - "locked": false, - "startBinding": null, - "endBinding": null, - "lastCommittedPoint": null, - "startArrowhead": null, - "endArrowhead": null, - "points": [ - [ - 0, - 0 - ], - [ - 2.9504614086469867, - 4.012627515759613 - ], - [ - -11.093734896511851, - 11.919864090932956 - ], - [ - 3.776590603068043, - 16.640602344767817 - ], - [ - 2.2423506705715397, - 21.479359054948496 - ], - [ - -17.584749995534565, - 14.988343955925606 - ], - [ - -17.584749995534565, - 8.73336576959445 - ], - [ - 0, - 0 - ] - ] - }, - { - "type": "line", - "version": 783, - "versionNonce": 333814842, - "isDeleted": false, - "id": "vUg5B5lluM1lc6gwDspMM", - "fillStyle": "cross-hatch", - "strokeWidth": 1, - "strokeStyle": "solid", - "roughness": 1, - "opacity": 100, - "angle": 0, - "x": 972.9111084975855, - "y": 208.52784762699463, - "strokeColor": "#000000", - "backgroundColor": "#fa5252", - "width": 22.550726855738834, - "height": 21.479359054948496, - "seed": 937305885, - "groupIds": [ - "hLaUC0pyklAgiIpkyHRSs" - ], - "strokeSharpness": "sharp", - "boundElements": [], - "updated": 1662376667302, - "link": null, - "locked": false, - "startBinding": null, - "endBinding": null, - "lastCommittedPoint": null, - "startArrowhead": null, - "endArrowhead": null, - "points": [ - [ - 0, - 0 - ], - [ - -3.114741278416954, - 4.012627515759613 - ], - [ - 11.71142720684779, - 11.919864090932956 - ], - [ - -3.986868836373726, - 16.64060234476782 - ], - [ - -2.367203371596897, - 21.479359054948496 - ], - [ - 18.563858019365114, - 14.988343955925602 - ], - [ - 18.563858019365114, - 8.73336576959445 - ], - [ - 0, - 0 - ] - ] - }, - { - "type": "line", - "version": 615, - "versionNonce": 1006427238, - "isDeleted": false, - "id": "YKMjthBrNNw97pyLkbxOg", - "fillStyle": "cross-hatch", - "strokeWidth": 1, - "strokeStyle": "solid", - "roughness": 1, - "opacity": 100, - "angle": 0, - "x": 948.8645995700572, - "y": 242.90905653246233, - "strokeColor": "#000000", - "backgroundColor": "#fa5252", - "width": 19.827100666106297, - "height": 47.32540099469423, - "seed": 1506878771, - "groupIds": [ - "hLaUC0pyklAgiIpkyHRSs" - ], - "strokeSharpness": "sharp", - "boundElements": [], - "updated": 1662376667302, - "link": null, - "locked": false, - "startBinding": null, - "endBinding": null, - "lastCommittedPoint": null, - "startArrowhead": null, - "endArrowhead": null, - "points": [ - [ - 0, - 0 - ], - [ - 13.218067110737529, - -47.20738253834822 - ], - [ - 19.827100666106297, - -47.20738253834822 - ], - [ - 6.963088924406386, - 0.1180184563460247 - ], - [ - 0, - 0 - ] - ] - }, - { - "type": "rectangle", - "version": 500, - "versionNonce": 874120442, - "isDeleted": false, - "id": "VWN6cXO1jiN8bNt1WAl7V", - "fillStyle": "cross-hatch", - "strokeWidth": 2, - "strokeStyle": "solid", - "roughness": 1, - "opacity": 90, - "angle": 0, - "x": 910, - "y": 178, - "strokeColor": "#000000", - "backgroundColor": "transparent", - "width": 101, - "height": 78, - "seed": 684609747, - "groupIds": [], - "strokeSharpness": "sharp", - "boundElements": [], - "updated": 1662376667302, - "link": null, - "locked": false - }, - { - "type": "text", - "version": 321, - "versionNonce": 837927206, - "isDeleted": false, - "id": "HQ1vT1MZXpaMNC0w2UQgN", - "fillStyle": "cross-hatch", - "strokeWidth": 2, - "strokeStyle": "solid", - "roughness": 1, - "opacity": 90, - "angle": 0, - "x": 917, - "y": 155, - "strokeColor": "#000000", - "backgroundColor": "transparent", - "width": 84, - "height": 20, - "seed": 1196888499, - "groupIds": [], - "strokeSharpness": "sharp", - "boundElements": [], - "updated": 1662376676438, - "link": null, - "locked": false, - "fontSize": 16, - "fontFamily": 1, - "text": "DevSpaces", - "baseline": 14, - "textAlign": "center", - "verticalAlign": "top", - "containerId": null, - "originalText": "DevSpaces" - }, - { - "type": "line", - "version": 644, - "versionNonce": 1262704058, - "isDeleted": false, - "id": "yTMGBKLcl_krJLO3aWwCo", - "fillStyle": "solid", - "strokeWidth": 4, - "strokeStyle": "solid", - "roughness": 1, - "opacity": 100, - "angle": 0, - "x": 347.39587833125324, - "y": 306.7338110374251, - "strokeColor": "black", - "backgroundColor": "black", - "width": 180.44190813894443, - "height": 0.16613541482645627, - "seed": 269989267, - "groupIds": [ - "Cy3KZUF141Ea66DHXydV1" - ], - "strokeSharpness": "round", - "boundElements": [], - "updated": 1662376667302, - "link": null, - "locked": false, - "startBinding": null, - "endBinding": null, - "lastCommittedPoint": null, - "startArrowhead": null, - "endArrowhead": null, - "points": [ - [ - 0, - 0 - ], - [ - 180.44190813894443, - -0.16613541482645627 - ] - ] - }, - { - "type": "line", - "version": 586, - "versionNonce": 2106686182, - "isDeleted": false, - "id": "a5nod2XbFPVWuWRhn2Ua2", - "fillStyle": "solid", - "strokeWidth": 4, - "strokeStyle": "solid", - "roughness": 1, - "opacity": 100, - "angle": 0, - "x": 348.0536140237087, - "y": 306.9778100669535, - "strokeColor": "black", - "backgroundColor": "black", - "width": 29.012907644169655, - "height": 58.08933795512363, - "seed": 1721131293, - "groupIds": [ - "Cy3KZUF141Ea66DHXydV1" - ], - "strokeSharpness": "round", - "boundElements": [], - "updated": 1662376667302, - "link": null, - "locked": false, - "startBinding": null, - "endBinding": null, - "lastCommittedPoint": null, - "startArrowhead": null, - "endArrowhead": null, - "points": [ - [ - 0, - 0 - ], - [ - -10.296989190345768, - -2.7467411689925427 - ], - [ - -14.193104578778739, - -7.075372217895264 - ], - [ - -17.12757102104723, - -14.809660495943007 - ], - [ - -16.25366056491633, - -32.74417995752738 - ], - [ - -13.10830588800304, - -40.96408323021325 - ], - [ - -4.822598747791973, - -50.77138635998338 - ], - [ - 6.5787372689089665, - -58.089337955123625 - ], - [ - 11.885336623122425, - -57.994755862867336 - ] - ] - }, - { - "type": "line", - "version": 627, - "versionNonce": 2055507578, - "isDeleted": false, - "id": "BDtRB2MzcmTx5Hgz-V5ax", - "fillStyle": "solid", - "strokeWidth": 4, - "strokeStyle": "solid", - "roughness": 1, - "opacity": 100, - "angle": 0, - "x": 360.2004225510271, - "y": 246.95648206020837, - "strokeColor": "black", - "backgroundColor": "black", - "width": 87.3743402045856, - "height": 60.07029758310275, - "seed": 1028754227, - "groupIds": [ - "Cy3KZUF141Ea66DHXydV1" - ], - "strokeSharpness": "round", - "boundElements": [], - "updated": 1662376667302, - "link": null, - "locked": false, - "startBinding": null, - "endBinding": null, - "lastCommittedPoint": null, - "startArrowhead": null, - "endArrowhead": null, - "points": [ - [ - 0, - 0 - ], - [ - -6.025598732340979, - -21.1279197356401 - ], - [ - -6.406945305423115, - -32.67742851430983 - ], - [ - -3.549899306760304, - -39.69384046690258 - ], - [ - 5.705739293074423, - -50.91185568252725 - ], - [ - 16.1726603909173, - -56.94256079498816 - ], - [ - 26.503200779851944, - -59.91466704948113 - ], - [ - 45.020163433675535, - -60.07029758310275 - ], - [ - 63.567132651090674, - -55.907860782021665 - ], - [ - 68.71201242047414, - -52.3039496607967 - ], - [ - 80.96739489916247, - -31.279192841738087 - ] - ] - }, - { - "type": "line", - "version": 603, - "versionNonce": 1219309094, - "isDeleted": false, - "id": "3e7pQ8RjxCYV31m-LfEZK", - "fillStyle": "solid", - "strokeWidth": 4, - "strokeStyle": "solid", - "roughness": 1, - "opacity": 100, - "angle": 0, - "x": 440.39398966562135, - "y": 214.77545838538146, - "strokeColor": "black", - "backgroundColor": "black", - "width": 69.02941518201982, - "height": 34.30764475453057, - "seed": 583415165, - "groupIds": [ - "Cy3KZUF141Ea66DHXydV1" - ], - "strokeSharpness": "round", - "boundElements": [], - "updated": 1662376667302, - "link": null, - "locked": false, - "startBinding": null, - "endBinding": null, - "lastCommittedPoint": null, - "startArrowhead": null, - "endArrowhead": null, - "points": [ - [ - 0, - 0 - ], - [ - 10.083433705603934, - -6.510757486830897 - ], - [ - 24.319495049103143, - -9.086233123277818 - ], - [ - 54.3109325249198, - -5.877671638144303 - ], - [ - 65.34260873541108, - 1.8844999320361318 - ], - [ - 69.02941518201982, - 25.221411631252746 - ] - ] - }, - { - "type": "line", - "version": 639, - "versionNonce": 1184935738, - "isDeleted": false, - "id": "gtGUk5ADqPSYCmPJoRdko", - "fillStyle": "solid", - "strokeWidth": 4, - "strokeStyle": "solid", - "roughness": 1, - "opacity": 100, - "angle": 0, - "x": 527.0558925996764, - "y": 306.9861957034516, - "strokeColor": "black", - "backgroundColor": "black", - "width": 45.23585973757425, - "height": 72.2376608085893, - "seed": 2080353491, - "groupIds": [ - "Cy3KZUF141Ea66DHXydV1" - ], - "strokeSharpness": "round", - "boundElements": [], - "updated": 1662376667302, - "link": null, - "locked": false, - "startBinding": null, - "endBinding": null, - "lastCommittedPoint": null, - "startArrowhead": null, - "endArrowhead": null, - "points": [ - [ - 0, - 0 - ], - [ - 16.245939577793376, - -8.789817408548252 - ], - [ - 27.277124452740487, - -21.062607203659148 - ], - [ - 30.846396418100213, - -32.47282235555152 - ], - [ - 30.85453854997536, - -48.791269021508704 - ], - [ - 25.221025581896626, - -61.49790810213788 - ], - [ - 14.423716425983113, - -70.51089713393569 - ], - [ - 3.3780020570864284, - -72.23766080858931 - ], - [ - -9.197380242452413, - -69.04397977136546 - ], - [ - -14.381321187598894, - -65.757015171538 - ] - ] - }, - { - "type": "line", - "version": 454, - "versionNonce": 1953528166, - "isDeleted": false, - "id": "NthltWo1RmoHdn5C8gHjZ", - "fillStyle": "cross-hatch", - "strokeWidth": 2, - "strokeStyle": "solid", - "roughness": 1, - "opacity": 100, - "angle": 0, - "x": 438.9134165238899, - "y": 215.86291312152872, - "strokeColor": "#000000", - "backgroundColor": "black", - "width": 90.68346509750657, - "height": 88.44483190099747, - "seed": 1892260829, - "groupIds": [ - "9wXTiErT68Cqf6y0xR_9_", - "M7epUKFIsRBu-b5nc04_q" - ], - "strokeSharpness": "sharp", - "boundElements": [], - "updated": 1662376667302, - "link": null, - "locked": false, - "lastCommittedPoint": null, - "startArrowhead": null, - "endArrowhead": null, - "points": [ - [ - 0, - 0 - ], - [ - 0, - 0 - ], - [ - -2.333004985917512, - 0.058997671849454036 - ], - [ - -4.635414563912775, - 0.23409153110242187 - ], - [ - -6.904379999542982, - 0.5224328433152432 - ], - [ - -9.137049845283855, - 0.9211728740447143 - ], - [ - -11.330572653611853, - 1.4274628464555406 - ], - [ - -13.482099690083372, - 2.038454153279929 - ], - [ - -15.588776794094258, - 2.7512978905071748 - ], - [ - -17.6477552312013, - 3.5631454932610893 - ], - [ - -19.656186266960788, - 4.471148057530878 - ], - [ - -21.611215740768728, - 5.472456848873321 - ], - [ - -23.5099962747218, - 6.564223471979915 - ], - [ - -25.349675064756244, - 7.743598853272028 - ], - [ - -27.127402019888166, - 9.007734258306755 - ], - [ - -28.840325692593808, - 10.35378095264036 - ], - [ - -30.485595991889852, - 11.778890201829537 - ], - [ - -32.06036147025219, - 13.280213949701132 - ], - [ - -33.561773393237395, - 14.854902105271375 - ], - [ - -34.98697963505134, - 16.500107290637125 - ], - [ - -36.33312942644136, - 18.21297941481486 - ], - [ - -37.59737267642265, - 19.99067109990125 - ], - [ - -38.77685861574224, - 21.830332254913003 - ], - [ - -39.86873579687597, - 23.729116858486606 - ], - [ - -40.870154467975624, - 25.684173463098837 - ], - [ - -41.778263520651876, - 27.692653334306016 - ], - [ - -42.59021218565141, - 29.751707737664752 - ], - [ - -43.303150032855854, - 31.858490651811962 - ], - [ - -43.91422629301104, - 34.01015062922437 - ], - [ - -44.420590196863365, - 36.20383893545793 - ], - [ - -44.819391102334805, - 38.43670683606979 - ], - [ - -45.1077783037594, - 40.705908309696575 - ], - [ - -45.28290113786346, - 43.00859190881471 - ], - [ - -45.34190889898064, - 45.34190889898089 - ], - [ - -45.30409009989871, - 47.21091473183959 - ], - [ - -45.19160633138682, - 49.06066583294157 - ], - [ - -45.0059165259467, - 50.88969985193921 - ], - [ - -44.74847965847283, - 52.69656257772587 - ], - [ - -44.420754592579954, - 54.479794373034586 - ], - [ - -44.02420041444127, - 56.23793560059818 - ], - [ - -43.56027595587847, - 57.96953204931015 - ], - [ - -43.030440006320134, - 59.67312408190335 - ], - [ - -42.436151948683005, - 61.34725206111081 - ], - [ - -41.77887023326156, - 62.99046177582626 - ], - [ - -41.060054158187256, - 64.60129358878184 - ], - [ - -40.281162682457605, - 66.17828243655016 - ], - [ - -38.54898834761566, - 69.22492524442087 - ], - [ - -36.594019239847, - 72.11872395362188 - ], - [ - -34.42792703112879, - 74.84801774449969 - ], - [ - -32.062382715166734, - 77.40113494507605 - ], - [ - -29.509057963937888, - 79.76641473569669 - ], - [ - -26.779625805958972, - 81.93219629670706 - ], - [ - -23.88575520012625, - 83.88681338229053 - ], - [ - -20.839119174956807, - 85.61859974663234 - ], - [ - -19.26216288415355, - 86.39728638479001 - ], - [ - -17.651390758966954, - 87.11589457007697 - ], - [ - -16.00826243666456, - 87.77295923906482 - ], - [ - -14.334237554512896, - 88.36702618064737 - ], - [ - -13.550545282976657, - 88.44290018773684 - ], - [ - -12.894221284943626, - 88.37164926968703 - ], - [ - -12.35821697747815, - 88.17705086331902 - ], - [ - -11.935478351481443, - 87.88286612697115 - ], - [ - -11.618954110936556, - 87.51287249746414 - ], - [ - -11.401598385986603, - 87.09083655929666 - ], - [ - -11.2763544544528, - 86.64053032312967 - ], - [ - -11.236173733399276, - 86.18572037346115 - ], - [ - -11.238029480408088, - 85.66800494112226 - ], - [ - -11.24308394923463, - 84.94340084810192 - ], - [ - -11.250574764280728, - 84.03857767495202 - ], - [ - -11.259731410705626, - 82.98017787141877 - ], - [ - -11.269788799831183, - 81.79485473957058 - ], - [ - -11.2799791298972, - 80.50927243379788 - ], - [ - -11.297692831974189, - 77.74392180410848 - ], - [ - -12.45136788069647, - 77.9698942724798 - ], - [ - -13.548060101309659, - 78.13584254958863 - ], - [ - -14.58910704246193, - 78.2452393783757 - ], - [ - -15.57583811356044, - 78.3015357971376 - ], - [ - -16.509596289413995, - 78.30821540113732 - ], - [ - -17.391710979429376, - 78.26872922867169 - ], - [ - -19.006354670378716, - 78.06514509994508 - ], - [ - -20.4304505840305, - 77.71851109287377 - ], - [ - -21.674680118006513, - 77.25655488937309 - ], - [ - -22.74972331339023, - 76.70700959751964 - ], - [ - -23.666258854723083, - 76.09758662074707 - ], - [ - -24.434968139627653, - 75.45602449329205 - ], - [ - -25.066532565726916, - 74.81005089707034 - ], - [ - -25.57162946102204, - 74.18738266167597 - ], - [ - -25.96094157967604, - 73.6157528951853 - ], - [ - -26.245148962770763, - 73.12288927951428 - ], - [ - -26.434930294849266, - 72.73651407041748 - ], - [ - -26.54096697353316, - 72.48436037597111 - ], - [ - -26.573939039904985, - 72.39414502576972 - ], - [ - -26.970371638127297, - 71.45595638958659 - ], - [ - -27.38243157958182, - 70.60434757583923 - ], - [ - -27.804430891163236, - 69.83573189220905 - ], - [ - -28.230687025927477, - 69.1465117940564 - ], - [ - -28.65551472384932, - 68.53308973674125 - ], - [ - -29.073226011823234, - 67.99187360178422 - ], - [ - -29.478138342905083, - 67.5192604183851 - ], - [ - -29.8645664570704, - 67.11166349422496 - ], - [ - -30.55922492492941, - 66.47712281890276 - ], - [ - -31.111719335201855, - 66.05949292334141 - ], - [ - -31.320443394788477, - 65.92303040426167 - ], - [ - -31.476570320768527, - 65.8300097289038 - ], - [ - -31.574416209657507, - 65.776833352627 - ], - [ - -31.60829444489064, - 65.75990373079227 - ], - [ - -32.28272554166148, - 65.26516808962968 - ], - [ - -32.77604631138382, - 64.83344645435486 - ], - [ - -33.10724424739261, - 64.4604521579007 - ], - [ - -33.29530277340284, - 64.1418931070391 - ], - [ - -33.3592093827495, - 63.87348263470288 - ], - [ - -33.31795021222773, - 63.65092864766367 - ], - [ - -33.190511398632616, - 63.46992820037207 - ], - [ - -32.99588043529974, - 63.32620547808253 - ], - [ - -32.480979823898714, - 63.13340855711486 - ], - [ - -31.92514154200586, - 63.03819571277549 - ], - [ - -31.480251970901577, - 63.00624647772298 - ], - [ - -31.346879650422984, - 63.00326751541921 - ], - [ - -31.298202918026668, - 63.00322410613244 - ], - [ - -30.469796368050595, - 63.10844279106908 - ], - [ - -29.69226821523324, - 63.29589494360499 - ], - [ - -28.965972516569945, - 63.553290309426785 - ], - [ - -28.29126332905571, - 63.8683549127046 - ], - [ - -27.09802342853555, - 64.62234166669808 - ], - [ - -26.115380969633293, - 65.45959285885061 - ], - [ - -25.346171121391023, - 66.28184071626823 - ], - [ - -25.04248924702466, - 66.65663107196228 - ], - [ - -24.793227696308843, - 66.99082289221691 - ], - [ - -24.598740526237915, - 67.2721313488808 - ], - [ - -24.45938315034795, - 67.48827161380174 - ], - [ - -24.375508269093473, - 67.62696428498823 - ], - [ - -24.34747265254968, - 67.67592453428857 - ], - [ - -23.56128977318537, - 68.87332087401585 - ], - [ - -22.725578254172152, - 69.87560874825559 - ], - [ - -21.849852868551064, - 70.69711322163771 - ], - [ - -20.943627032822803, - 71.35216478495222 - ], - [ - -20.016415520028026, - 71.85509392898992 - ], - [ - -19.077733103208118, - 72.22023114454112 - ], - [ - -18.13708912924295, - 72.46190149623564 - ], - [ - -17.20400108425366, - 72.59444090102478 - ], - [ - -16.28798102820094, - 72.63216899737691 - ], - [ - -15.398546447206176, - 72.58942712840428 - ], - [ - -14.545209401229595, - 72.48053493257578 - ], - [ - -13.737481950231828, - 72.31982290068227 - ], - [ - -12.984878867253943, - 72.12162152351334 - ], - [ - -12.296914925336747, - 71.90026129185998 - ], - [ - -11.683104897520995, - 71.6700726965127 - ], - [ - -11.152960843767687, - 71.44538080210074 - ], - [ - -10.965647058333275, - 70.38979717604575 - ], - [ - -10.713873195146164, - 69.4207553893005 - ], - [ - -10.405222313986727, - 68.53750663166868 - ], - [ - -10.047282900795892, - 67.73931294527466 - ], - [ - -9.64763801535355, - 67.02543094608372 - ], - [ - -9.2138707174405, - 66.39512267622005 - ], - [ - -8.753564066836699, - 65.84763932548769 - ], - [ - -8.274306549483242, - 65.38224836217267 - ], - [ - -10.165928620742303, - 65.13247132617632 - ], - [ - -12.053388826633455, - 64.8027126793317 - ], - [ - -13.920422250025517, - 64.37723112902806 - ], - [ - -15.750761260705929, - 63.84029080881645 - ], - [ - -17.528140941544, - 63.176144999926436 - ], - [ - -19.236299088487897, - 62.36906326206916 - ], - [ - -20.858970784406484, - 61.40330430263523 - ], - [ - -22.37988839908751, - 60.26312682901367 - ], - [ - -23.782788371940228, - 58.93278954859515 - ], - [ - -25.051405785832635, - 57.396556594930246 - ], - [ - -25.630275407429906, - 56.54630974755478 - ], - [ - -26.169475723632893, - 55.63868124924807 - ], - [ - -26.666971924125107, - 54.67171768210642 - ], - [ - -27.120731911669928, - 53.64343849742101 - ], - [ - -27.528723589031245, - 52.55187942496687 - ], - [ - -27.888912145892334, - 51.3950761945178 - ], - [ - -28.199265485016838, - 50.17105910968724 - ], - [ - -28.457748796088204, - 48.8778639002498 - ], - [ - -28.662331338410123, - 47.51351544365743 - ], - [ - -28.81097965820635, - 46.07605489584565 - ], - [ - -28.901658945159966, - 44.56350713426758 - ], - [ - -28.932337102034978, - 42.97391060177688 - ], - [ - -28.85056214502714, - 41.1599857276509 - ], - [ - -28.610249690084114, - 39.43049462934655 - ], - [ - -28.21892446575663, - 37.7850249186397 - ], - [ - -27.684105774435523, - 36.2231642073059 - ], - [ - -27.01331698813141, - 34.744500107121155 - ], - [ - -26.214080122315465, - 33.348617516780905 - ], - [ - -25.293915835917574, - 32.03510676114149 - ], - [ - -24.260347500949536, - 30.80355273889771 - ], - [ - -24.360051849927515, - 30.549179744666333 - ], - [ - -24.477631329268153, - 30.216181679797106 - ], - [ - -24.605620898188874, - 29.807249920069406 - ], - [ - -24.736558228988592, - 29.325070415101326 - ], - [ - -24.862979637425155, - 28.772331827591074 - ], - [ - -24.97742415233773, - 28.151722820237268 - ], - [ - -25.072426732944386, - 27.465934768818673 - ], - [ - -25.140523695003193, - 26.71765090987321 - ], - [ - -25.174254067353225, - 25.9095626191791 - ], - [ - -25.1661541657524, - 25.0443585594357 - ], - [ - -25.10875894941915, - 24.124727393340915 - ], - [ - -24.99460744719204, - 23.15335507051305 - ], - [ - -24.81623597482986, - 22.132932966730667 - ], - [ - -24.566182204630604, - 21.06614703161219 - ], - [ - -24.236981095812496, - 19.955687284396248 - ], - [ - -23.82117032067407, - 18.804242387781017 - ], - [ - -23.77629597048974, - 18.791987403513843 - ], - [ - -23.640643305916058, - 18.763334561173963 - ], - [ - -23.412678079974967, - 18.73044660029538 - ], - [ - -23.09086197606615, - 18.705487616950567 - ], - [ - -22.673655321050713, - 18.70062170721326 - ], - [ - -22.159521154869083, - 18.72801161061622 - ], - [ - -21.54692387400189, - 18.799821423233112 - ], - [ - -20.83432244877036, - 18.92821659767702 - ], - [ - -20.020181275654238, - 19.12535851694082 - ], - [ - -19.102964751135296, - 19.403411277098115 - ], - [ - -18.081129132452986, - 19.77454033076188 - ], - [ - -16.953141529168928, - 20.250908417465496 - ], - [ - -15.717460911603098, - 20.844679633282226 - ], - [ - -14.372554389317028, - 21.56801807428534 - ], - [ - -12.916880932630704, - 22.43308648000763 - ], - [ - -11.348899511864204, - 23.45204894652275 - ], - [ - -8.59178850741722, - 22.79211655152841 - ], - [ - -5.763263800095671, - 22.318812889161563 - ], - [ - -2.8903313924218423, - 22.03073665338438 - ], - [ - -5.329070518200751e-15, - 21.92648789469881 - ], - [ - 2.890887573908456, - 22.03073665338458 - ], - [ - 5.765575344615284, - 22.31881288916172 - ], - [ - 8.597190250538347, - 22.792116551528352 - ], - [ - 11.358861943174986, - 23.452048946522723 - ], - [ - 12.924965912288997, - 22.433086480007674 - ], - [ - 14.37887857978103, - 21.56801807428532 - ], - [ - 15.722146401492719, - 20.844679633282134 - ], - [ - 16.956304980941468, - 20.250908417465492 - ], - [ - 18.082889921647308, - 19.774540330761795 - ], - [ - 19.103442253289927, - 19.403411277097927 - ], - [ - 20.01949215322719, - 19.12535851694082 - ], - [ - 20.832591503461117, - 18.92821659767688 - ], - [ - 21.544270481349397, - 18.79982142323301 - ], - [ - 22.156064690411192, - 18.728011610616132 - ], - [ - 22.669520586487415, - 18.700621707213216 - ], - [ - 23.086168346935864, - 18.705487616950517 - ], - [ - 23.407549001436678, - 18.73044660029521 - ], - [ - 23.63520357966982, - 18.763334561174112 - ], - [ - 23.770667685153825, - 18.791987403513545 - ], - [ - 23.81548234756883, - 18.8042423877812 - ], - [ - 24.2323471544515, - 19.955687284396205 - ], - [ - 24.562458501751053, - 21.066147031612143 - ], - [ - 24.81328821295125, - 22.132932966730763 - ], - [ - 24.99230268537377, - 23.1533550705131 - ], - [ - 25.10699002098392, - 24.12472739334082 - ], - [ - 25.164811190943627, - 25.044358559435736 - ], - [ - 25.173248871056757, - 25.909562619179177 - ], - [ - 25.139769458645844, - 26.71765090987296 - ], - [ - 25.071855629515515, - 27.465934768818585 - ], - [ - 24.976979207148528, - 28.151722820237225 - ], - [ - 24.862606588867294, - 28.772331827591067 - ], - [ - 24.73622045047597, - 29.325070415101298 - ], - [ - 24.605292615457984, - 29.807249920069527 - ], - [ - 24.4772949072958, - 30.216181679797213 - ], - [ - 24.35970457563374, - 30.549179744666205 - ], - [ - 24.259993443954357, - 30.80355273889773 - ], - [ - 25.295153000590272, - 32.03509048265879 - ], - [ - 26.215538403042387, - 33.34856596825297 - ], - [ - 27.013976266674263, - 34.74440514930622 - ], - [ - 27.683309485331918, - 36.22303126636527 - ], - [ - 28.216370100539216, - 37.784870273055546 - ], - [ - 28.605995579981908, - 39.43034540992336 - ], - [ - 28.84502339134516, - 41.15988534367513 - ], - [ - 28.92629642847487, - 42.973910601776694 - ], - [ - 28.895557227290276, - 44.56710196582689 - ], - [ - 28.804707016270182, - 46.08271279520211 - ], - [ - 28.655775179569815, - 47.522734490932336 - ], - [ - 28.45080195366723, - 48.88915031480646 - ], - [ - 28.191816722717704, - 50.18396252017577 - ], - [ - 27.880859723199023, - 51.40915165574849 - ], - [ - 27.519971191589214, - 52.56670912255498 - ], - [ - 27.111175085882792, - 53.65862089546448 - ], - [ - 26.656517068718188, - 54.68688922782765 - ], - [ - 26.15803195041187, - 55.6534946683537 - ], - [ - 25.61774911512035, - 56.56042319191131 - ], - [ - 25.037708799320793, - 57.40967705185223 - ], - [ - 23.76650039362528, - 58.943088401878114 - ], - [ - 22.360685215859174, - 60.269659926670556 - ], - [ - 20.836558027038624, - 61.40530112982597 - ], - [ - 19.210391883535696, - 62.36592694110141 - ], - [ - 17.49848154636809, - 63.16746856873621 - ], - [ - 15.717110924228798, - 63.8258355163267 - ], - [ - 13.882569351974272, - 64.35695356595213 - ], - [ - 12.011135312137124, - 64.77673764736849 - ], - [ - 10.119098139573655, - 65.1011026903341 - ], - [ - 8.222747169138643, - 65.3459744769268 - ], - [ - 8.821784474054883, - 65.9372795026398 - ], - [ - 9.38931206294702, - 66.65675044750077 - ], - [ - 9.910429698135601, - 67.50577640868642 - ], - [ - 10.370220863459341, - 68.48573563105079 - ], - [ - 10.753785321238809, - 69.59801721177008 - ], - [ - 11.04621740763395, - 70.84399939569968 - ], - [ - 11.232606032644124, - 72.22507128001452 - ], - [ - 11.298050958590181, - 73.74261110957016 - ], - [ - 11.295788249518004, - 75.95781956971322 - ], - [ - 11.289824898749941, - 78.0362019580002 - ], - [ - 11.28139807095829, - 79.95190804416767 - ], - [ - 11.271734078494156, - 81.67909302411292 - ], - [ - 11.262075512190961, - 83.19191209373369 - ], - [ - 11.253643258238341, - 84.46452044892717 - ], - [ - 11.250279038514755, - 85.0026708030071 - ], - [ - 11.247679907470172, - 85.47107328559076 - ], - [ - 11.246014076090944, - 85.86649933097648 - ], - [ - 11.245422624558962, - 86.18572037346107 - ], - [ - 11.28497933711595, - 86.6438728382097 - ], - [ - 11.408858589196662, - 87.09724485525413 - ], - [ - 11.624863200096293, - 87.52161946874517 - ], - [ - 11.940812267591973, - 87.89277972283388 - ], - [ - 12.364514037138463, - 88.18651408783217 - ], - [ - 12.903771328030345, - 88.3786001817291 - ], - [ - 13.566392385722963, - 88.44483190099747 - ], - [ - 14.36019630799386, - 88.3609814374666 - ], - [ - 16.033271611997627, - 87.76631761819101 - ], - [ - 17.675412373026205, - 87.10872661160145 - ], - [ - 19.28517523229533, - 86.38966805496428 - ], - [ - 20.861089700216496, - 85.61059615938672 - ], - [ - 23.905589174553683, - 83.87823462199562 - ], - [ - 26.797277107186517, - 81.92329739292207 - ], - [ - 29.524503530781946, - 79.75741816101691 - ], - [ - 32.075640182650375, - 77.39225231977368 - ], - [ - 34.4390479477797, - 74.83943898420443 - ], - [ - 36.60308771115888, - 72.11063354780316 - ], - [ - 38.55612035777557, - 69.21748055174206 - ], - [ - 40.286512198780315, - 66.17161911103315 - ], - [ - 41.06457482844087, - 64.59506978229311 - ], - [ - 41.78261326683901, - 62.984704619169946 - ], - [ - 42.439173302868426, - 61.34198868509172 - ], - [ - 43.032795299262034, - 59.66838161732542 - ], - [ - 43.562030471074166, - 57.9653267746557 - ], - [ - 44.025424607198474, - 56.2342892205107 - ], - [ - 44.42151264420724, - 54.47672316599658 - ], - [ - 44.748845797154615, - 52.69408824838088 - ], - [ - 45.00597528109472, - 50.88782782644792 - ], - [ - 45.191441458761766, - 49.05941238978664 - ], - [ - 45.303784692887, - 47.210285297181684 - ], - [ - 45.341556198525915, - 45.34190889898056 - ], - [ - 45.282557551663245, - 43.00859190881458 - ], - [ - 45.107455341209516, - 40.70590830969657 - ], - [ - 44.81910372776957, - 38.43670683606979 - ], - [ - 44.42035144578648, - 36.203838935457924 - ], - [ - 43.91404722970327, - 34.01015062922436 - ], - [ - 43.3030452401247, - 31.85849065181214 - ], - [ - 42.59018335917233, - 29.751707737664702 - ], - [ - 41.77831574745031, - 27.6926533343059 - ], - [ - 40.87029656556285, - 25.684173463098794 - ], - [ - 39.868963695631855, - 23.72911685848659 - ], - [ - 38.77718215058297, - 21.83033225491276 - ], - [ - 37.59778981253794, - 19.990671099901334 - ], - [ - 36.33363541594019, - 18.21297941481484 - ], - [ - 34.98757312139429, - 16.500107290637203 - ], - [ - 33.56245166334301, - 14.854902105271293 - ], - [ - 32.061119776230214, - 13.280213949701235 - ], - [ - 30.486426194499074, - 11.778890201829528 - ], - [ - 28.841214226432328, - 10.353780952640255 - ], - [ - 27.128343458794912, - 9.007734258306655 - ], - [ - 25.350657199869232, - 7.743598853272244 - ], - [ - 23.511009610259862, - 6.5642234719797585 - ], - [ - 21.61223857208779, - 5.472456848873151 - ], - [ - 19.65720367211924, - 4.471148057530829 - ], - [ - 17.64875364479667, - 3.5631454932609756 - ], - [ - 15.589731798402966, - 2.751297890507118 - ], - [ - 13.482992293542509, - 2.038454153279929 - ], - [ - 11.331383864658108, - 1.4274628464554961 - ], - [ - 9.137749820032752, - 0.9211728740447716 - ], - [ - 6.904949746431896, - 0.5224328433151588 - ], - [ - 4.635821525976269, - 0.23409153110225134 - ], - [ - 2.3332247454316644, - 0.058997671849483124 - ], - [ - 0, - 0 - ] - ] - }, - { - "type": "line", - "version": 451, - "versionNonce": 603633658, - "isDeleted": false, - "id": "jo_HsTUFmAuaQhr0bKQYK", - "fillStyle": "cross-hatch", - "strokeWidth": 2, - "strokeStyle": "solid", - "roughness": 1, - "opacity": 100, - "angle": 0, - "x": 409.9910689730186, - "y": 280.35433772462017, - "strokeColor": "#000000", - "backgroundColor": "black", - "width": 1.2433247216556111, - "height": 0.9736323188196985, - "seed": 252992627, - "groupIds": [ - "5H1W_moj_Sm0BoAw7Fq0S", - "M7epUKFIsRBu-b5nc04_q" - ], - "strokeSharpness": "sharp", - "boundElements": [], - "updated": 1662376667302, - "link": null, - "locked": false, - "lastCommittedPoint": null, - "startArrowhead": null, - "endArrowhead": null, - "points": [ - [ - 0, - 0 - ], - [ - 0, - 0 - ], - [ - -0.1180569814948198, - 0.13828028296244899 - ], - [ - -0.3048905516942879, - 0.21145206195117172 - ], - [ - -0.5335299781205629, - 0.21348144610703637 - ], - [ - -0.777005884836039, - 0.13832911841005657 - ], - [ - -0.994399592911992, - 0.0012642954767824732 - ], - [ - -1.1439500119485713, - -0.17300228620670577 - ], - [ - -1.211820431792167, - -0.3619466329746887 - ], - [ - -1.1841782119098339, - -0.5430176203572481 - ], - [ - -1.0670599562411194, - -0.6847380892951416 - ], - [ - -0.880132784767091, - -0.7587834801798348 - ], - [ - -0.6499984510281438, - -0.7601508727126616 - ], - [ - -0.40326142164508727, - -0.6838373465949452 - ], - [ - -0.18512839915406332, - -0.5465337725845147 - ], - [ - -0.035206288099637134, - -0.3713881528442098 - ], - [ - 0.03150428986344346, - -0.18151050641095878 - ], - [ - 0, - 0 - ] - ] - }, - { - "type": "line", - "version": 454, - "versionNonce": 942169254, - "isDeleted": false, - "id": "dYxOARM8QmbX1qbxsLmaX", - "fillStyle": "cross-hatch", - "strokeWidth": 2, - "strokeStyle": "solid", - "roughness": 1, - "opacity": 100, - "angle": 0, - "x": 412.22144762234365, - "y": 282.3443225265891, - "strokeColor": "#000000", - "backgroundColor": "black", - "width": 1.3174867749984642, - "height": 1.3444452986143876, - "seed": 1615075389, - "groupIds": [ - "5H1W_moj_Sm0BoAw7Fq0S", - "M7epUKFIsRBu-b5nc04_q" - ], - "strokeSharpness": "sharp", - "boundElements": [], - "updated": 1662376667302, - "link": null, - "locked": false, - "lastCommittedPoint": null, - "startArrowhead": null, - "endArrowhead": null, - "points": [ - [ - 0, - 0 - ], - [ - 0, - 0 - ], - [ - -0.19554662797559091, - 0.09644458285098789 - ], - [ - -0.4364654563930879, - 0.08930375517955805 - ], - [ - -0.6906539611559186, - -0.014851402231530919 - ], - [ - -0.9260055485469003, - -0.2094498085995406 - ], - [ - -1.1027044068289547, - -0.46141358741610194 - ], - [ - -1.1858223386457292, - -0.7227754768154195 - ], - [ - -1.1721931791444442, - -0.9630675836553646 - ], - [ - -1.0586480503918605, - -1.1518165886329488 - ], - [ - -0.8610354116747114, - -1.2480007157633999 - ], - [ - -0.6213822352742093, - -1.2406753986232584 - ], - [ - -0.36779467782491176, - -1.1364659796037238 - ], - [ - -0.12837482634073188, - -0.9420086534176733 - ], - [ - 0.04855193069680286, - -0.6883953217043643 - ], - [ - 0.13166443635273417, - -0.4269520398923845 - ], - [ - 0.11676148559318644, - -0.18744130021405336 - ], - [ - -0.00035541353531609593, - 0.00035812661574397003 - ] - ] - }, - { - "type": "line", - "version": 454, - "versionNonce": 43362490, - "isDeleted": false, - "id": "bEK86T7KAoWtz-X7SrDxa", - "fillStyle": "cross-hatch", - "strokeWidth": 2, - "strokeStyle": "solid", - "roughness": 1, - "opacity": 100, - "angle": 0, - "x": 413.7516331197485, - "y": 284.89048338896254, - "strokeColor": "#000000", - "backgroundColor": "black", - "width": 1.434260469453551, - "height": 1.6271265739719378, - "seed": 1205229075, - "groupIds": [ - "5H1W_moj_Sm0BoAw7Fq0S", - "M7epUKFIsRBu-b5nc04_q" - ], - "strokeSharpness": "sharp", - "boundElements": [], - "updated": 1662376667302, - "link": null, - "locked": false, - "lastCommittedPoint": null, - "startArrowhead": null, - "endArrowhead": null, - "points": [ - [ - 0, - 0 - ], - [ - 0, - 0 - ], - [ - -0.23616415497744653, - 0.07705148399258024 - ], - [ - -0.5056313721383141, - 0.02804782540547271 - ], - [ - -0.775566595672025, - -0.13276730354438726 - ], - [ - -1.013130700147375, - -0.39117193528343286 - ], - [ - -1.1692589826677473, - -0.7026932555297591 - ], - [ - -1.2206732132100502, - -1.0097488454010062 - ], - [ - -1.1668036448855883, - -1.2776004231703995 - ], - [ - -1.007084600426337, - -1.471509707111153 - ], - [ - -0.7699166056926503, - -1.5500750899793587 - ], - [ - -0.5014098190012602, - -1.503958148961555 - ], - [ - -0.23236855546669133, - -1.3464909612527833 - ], - [ - 0.0064001567161460216, - -1.091005604048103 - ], - [ - 0.16231817550379907, - -0.7753115661123307 - ], - [ - 0.21358725624350144, - -0.4657165329658213 - ], - [ - 0.1595738946566687, - -0.19592238961407737 - ], - [ - -0.0003567700755144898, - 0.0003581266157421937 - ] - ] - }, - { - "type": "line", - "version": 453, - "versionNonce": 1501681638, - "isDeleted": false, - "id": "vVApp1Sr2fU7Tf4qWyRaR", - "fillStyle": "cross-hatch", - "strokeWidth": 2, - "strokeStyle": "solid", - "roughness": 1, - "opacity": 100, - "angle": 0, - "x": 416.33904365685993, - "y": 287.8395475463658, - "strokeColor": "#000000", - "backgroundColor": "black", - "width": 1.6720212722595122, - "height": 1.6435786936526044, - "seed": 133171357, - "groupIds": [ - "5H1W_moj_Sm0BoAw7Fq0S", - "M7epUKFIsRBu-b5nc04_q" - ], - "strokeSharpness": "sharp", - "boundElements": [], - "updated": 1662376667302, - "link": null, - "locked": false, - "lastCommittedPoint": null, - "startArrowhead": null, - "endArrowhead": null, - "points": [ - [ - 0, - 0 - ], - [ - 0, - 0 - ], - [ - -0.23244045209787775, - 0.14100964186726195 - ], - [ - -0.5305238850126699, - 0.15620289223199352 - ], - [ - -0.854678664245311, - 0.049909827448146926 - ], - [ - -1.1653317987565028, - -0.17353404996946692 - ], - [ - -1.4077401083258199, - -0.470231098788483 - ], - [ - -1.536098656184013, - -0.7870971874666889 - ], - [ - -1.5434375387262556, - -1.0868220340369634 - ], - [ - -1.4227922785085934, - -1.332111635014728 - ], - [ - -1.1881623705099338, - -1.47296934437834 - ], - [ - -0.8878230112240129, - -1.48737580142061 - ], - [ - -0.5614123056202519, - -1.380768019307789 - ], - [ - -0.2485724282887194, - -1.1585721588844144 - ], - [ - -0.006345895107694288, - -0.8617286037225949 - ], - [ - 0.12286184692267274, - -0.5440811478827854 - ], - [ - 0.12858373353325622, - -0.2440361578226895 - ], - [ - 0.00035541353532586584, - 0 - ] - ] - }, - { - "type": "line", - "version": 454, - "versionNonce": 1511293306, - "isDeleted": false, - "id": "G2tS9Wef41neQfF6rPB2q", - "fillStyle": "cross-hatch", - "strokeWidth": 2, - "strokeStyle": "solid", - "roughness": 1, - "opacity": 100, - "angle": 0, - "x": 419.6831892984356, - "y": 288.83525348750084, - "strokeColor": "#000000", - "backgroundColor": "black", - "width": 1.879079500466814, - "height": 1.4122831614929237, - "seed": 896015283, - "groupIds": [ - "5H1W_moj_Sm0BoAw7Fq0S", - "M7epUKFIsRBu-b5nc04_q" - ], - "strokeSharpness": "sharp", - "boundElements": [], - "updated": 1662376667302, - "link": null, - "locked": false, - "lastCommittedPoint": null, - "startArrowhead": null, - "endArrowhead": null, - "points": [ - [ - 0, - 0 - ], - [ - 0, - 0 - ], - [ - -0.1508174275937666, - 0.2280452618138007 - ], - [ - -0.41468620330328326, - 0.3724082710829882 - ], - [ - -0.7543638721719574, - 0.4219599719154025 - ], - [ - -1.1326161184845205, - 0.36556588225801784 - ], - [ - -1.4799066910180976, - 0.20510887992390536 - ], - [ - -1.7362168246711427, - -0.023294508505632083 - ], - [ - -1.8769768631395554, - -0.2898329553506577 - ], - [ - -1.8776144370387868, - -0.564705985252898 - ], - [ - -1.727844258488009, - -0.7950790700690211 - ], - [ - -1.4635522422326286, - -0.9413412356337876 - ], - [ - -1.1222521512714252, - -0.9903231895775243 - ], - [ - -0.7414441832010825, - -0.9288502133696408 - ], - [ - -0.3945035980419842, - -0.7692668229314972 - ], - [ - -0.13851089479834414, - -0.5419052573841087 - ], - [ - 0.0014650634280251318, - -0.27580090340665464 - ], - [ - 0.00035541353532586584, - 8.881784197001252e-15 - ] - ] - }, - { - "type": "line", - "version": 454, - "versionNonce": 1619651366, - "isDeleted": false, - "id": "euKeE09z5Rn7J0q3h5UWn", - "fillStyle": "cross-hatch", - "strokeWidth": 2, - "strokeStyle": "solid", - "roughness": 1, - "opacity": 100, - "angle": 0, - "x": 423.4896248524046, - "y": 289.25735996575924, - "strokeColor": "#000000", - "backgroundColor": "black", - "width": 1.9483797136929517, - "height": 1.352383771929961, - "seed": 1233054973, - "groupIds": [ - "5H1W_moj_Sm0BoAw7Fq0S", - "M7epUKFIsRBu-b5nc04_q" - ], - "strokeSharpness": "sharp", - "boundElements": [], - "updated": 1662376667302, - "link": null, - "locked": false, - "lastCommittedPoint": null, - "startArrowhead": null, - "endArrowhead": null, - "points": [ - [ - 0, - 0 - ], - [ - 0, - 0 - ], - [ - -0.06908587987279091, - 0.2648346323398263 - ], - [ - -0.2739967049258496, - 0.48322675401117055 - ], - [ - -0.5823871303648629, - 0.6327446160826925 - ], - [ - -0.9619199506367375, - 0.6909510434621473 - ], - [ - -1.3440383365510566, - 0.6447038745840685 - ], - [ - -1.6563817201653208, - 0.5039438361156623 - ], - [ - -1.8681078032391394, - 0.29204140281438773 - ], - [ - -1.948379713692951, - 0.03236162327687497 - ], - [ - -1.8734010231430016, - -0.23411713579884663 - ], - [ - -1.6678037887430897, - -0.4528239747991667 - ], - [ - -1.3605908402073403, - -0.6023852461574308 - ], - [ - -0.9807677203302845, - -0.661432728467815 - ], - [ - -0.600089980120206, - -0.6148437114565256 - ], - [ - -0.2882186724994149, - -0.47407282066642104 - ], - [ - -0.07743402833212791, - -0.26162234511985494 - ], - [ - 0, - 0 - ] - ] - }, - { - "type": "line", - "version": 454, - "versionNonce": 901399098, - "isDeleted": false, - "id": "UF-filpl9RluBeJBGQPYD", - "fillStyle": "cross-hatch", - "strokeWidth": 2, - "strokeStyle": "solid", - "roughness": 1, - "opacity": 100, - "angle": 0, - "x": 427.2284965646142, - "y": 289.1140496316943, - "strokeColor": "#000000", - "backgroundColor": "black", - "width": 1.9259778086462387, - "height": 1.3648530895507331, - "seed": 1139813715, - "groupIds": [ - "5H1W_moj_Sm0BoAw7Fq0S", - "M7epUKFIsRBu-b5nc04_q" - ], - "strokeSharpness": "sharp", - "boundElements": [], - "updated": 1662376667302, - "link": null, - "locked": false, - "lastCommittedPoint": null, - "startArrowhead": null, - "endArrowhead": null, - "points": [ - [ - 0, - 0 - ], - [ - 0, - 0 - ], - [ - -0.029510175753076212, - 0.2710530126676769 - ], - [ - -0.19767232648644747, - 0.5190991033544856 - ], - [ - -0.4783215046077133, - 0.7174090037401603 - ], - [ - -0.8452819102027805, - 0.8392371670219427 - ], - [ - -1.2267220260115081, - 0.8539257844281334 - ], - [ - -1.5577883776198878, - 0.7654956411445409 - ], - [ - -1.8027741135903699, - 0.5912507641044336 - ], - [ - -1.9259778086462376, - 0.34849518024104975 - ], - [ - -1.8959223037282893, - 0.07219507003669512 - ], - [ - -1.7266125199763014, - -0.17820597445663022 - ], - [ - -1.4465547933870848, - -0.3766623811851162 - ], - [ - -1.0842500337966516, - -0.49713943041660075 - ], - [ - -0.6982031074308885, - -0.5109273051225989 - ], - [ - -0.36663212286396174, - -0.4225948327342146 - ], - [ - -0.12280487223381087, - -0.24725387120350417 - ], - [ - 0, - 0 - ] - ] - }, - { - "type": "arrow", - "version": 682, - "versionNonce": 1269667430, - "isDeleted": false, - "id": "7Syn5DvjY3mv9SneA2hDa", - "fillStyle": "cross-hatch", - "strokeWidth": 2, - "strokeStyle": "solid", - "roughness": 2, - "opacity": 90, - "angle": 2.9004652802090014, - "x": 724.4149919536901, - "y": 260.2787493726382, - "strokeColor": "#000000", - "backgroundColor": "transparent", - "width": 228.38375337128218, - "height": 15.970868372722578, - "seed": 2097763325, - "groupIds": [], - "strokeSharpness": "round", - "boundElements": [], - "updated": 1662376667302, - "link": null, - "locked": false, - "startBinding": null, - "endBinding": { - "elementId": "YbM8xe6NaFlLoIbF5ZNkj", - "focus": -0.17179110689191787, - "gap": 13.373552388928942 - }, - "lastCommittedPoint": null, - "startArrowhead": null, - "endArrowhead": "arrow", - "points": [ - [ - 0, - 0 - ], - [ - -228.38375337128218, - -15.970868372722578 - ] - ] - }, - { - "type": "text", - "version": 315, - "versionNonce": 1080683258, - "isDeleted": false, - "id": "XQ_OyjCmixaNfFzBEPv1T", - "fillStyle": "cross-hatch", - "strokeWidth": 2, - "strokeStyle": "solid", - "roughness": 2, - "opacity": 90, - "angle": 6.129944343664711, - "x": 569.9910210639403, - "y": 207.50068931986434, - "strokeColor": "#000000", - "backgroundColor": "transparent", - "width": 127, - "height": 44, - "seed": 1484668851, - "groupIds": [], - "strokeSharpness": "sharp", - "boundElements": [], - "updated": 1662376667302, - "link": null, - "locked": false, - "fontSize": 35.29411764705882, - "fontFamily": 1, - "text": "migrate", - "baseline": 31, - "textAlign": "center", - "verticalAlign": "top", - "containerId": null, - "originalText": "migrate" - }, - { - "type": "rectangle", - "version": 1242, - "versionNonce": 1136253350, - "isDeleted": false, - "id": "N3_84v1HAfu3aswREv15n", - "fillStyle": "cross-hatch", - "strokeWidth": 2, - "strokeStyle": "solid", - "roughness": 2, - "opacity": 90, - "angle": 0, - "x": 1235, - "y": 172.00000000000017, - "strokeColor": "#000000", - "backgroundColor": "transparent", - "width": 123.00000000000003, - "height": 116.50000000000004, - "seed": 1718817693, - "groupIds": [], - "strokeSharpness": "sharp", - "boundElements": [], - "updated": 1662376667302, - "link": null, - "locked": false - }, - { - "type": "text", - "version": 1191, - "versionNonce": 1353087930, - "isDeleted": false, - "id": "P1FHGZfZVbuyCn1E5w1hV", - "fillStyle": "cross-hatch", - "strokeWidth": 2, - "strokeStyle": "solid", - "roughness": 2, - "opacity": 90, - "angle": 0, - "x": 1237.9999999999995, - "y": 149, - "strokeColor": "#000000", - "backgroundColor": "transparent", - "width": 118, - "height": 24, - "seed": 1462924531, - "groupIds": [], - "strokeSharpness": "sharp", - "boundElements": [], - "updated": 1662376667302, - "link": null, - "locked": false, - "fontSize": 18.800000000000004, - "fontFamily": 1, - "text": "workshop-dev", - "baseline": 17, - "textAlign": "center", - "verticalAlign": "top", - "containerId": null, - "originalText": "workshop-dev" - }, - { - "type": "rectangle", - "version": 1851, - "versionNonce": 1339798758, - "isDeleted": false, - "id": "vmk6BUQQhZk-zdA2Oo77A", - "fillStyle": "cross-hatch", - "strokeWidth": 1, - "strokeStyle": "solid", - "roughness": 2, - "opacity": 100, - "angle": 0, - "x": 1266.5835658482142, - "y": 205.415619389886, - "strokeColor": "#5665dc", - "backgroundColor": "#5665dc", - "width": 57.45616947617656, - "height": 53.44025912987806, - "seed": 947888765, - "groupIds": [ - "_0iEyIKCqAnh2J7YUwrlB" - ], - "strokeSharpness": "round", - "boundElements": [], - "updated": 1662376667302, - "link": null, - "locked": false - }, - { - "type": "rectangle", - "version": 1930, - "versionNonce": 1955787898, - "isDeleted": false, - "id": "JGCv3K6aRrwT7DflWeTHf", - "fillStyle": "solid", - "strokeWidth": 1, - "strokeStyle": "solid", - "roughness": 2, - "opacity": 100, - "angle": 0, - "x": 1269.9381426544435, - "y": 208.74060527777488, - "strokeColor": "#5665dc", - "backgroundColor": "#ffffff", - "width": 51.247712989934, - "height": 46.39762056468513, - "seed": 1251971027, - "groupIds": [ - "_0iEyIKCqAnh2J7YUwrlB" - ], - "strokeSharpness": "round", - "boundElements": [ - { - "id": "YGLbIKYvHLJ7195OM_YrC", - "type": "arrow" - } - ], - "updated": 1662376667302, - "link": null, - "locked": false - }, - { - "type": "line", - "version": 2099, - "versionNonce": 161490982, - "isDeleted": false, - "id": "spb2oj8YGHpSNEwpHD2wV", - "fillStyle": "cross-hatch", - "strokeWidth": 1, - "strokeStyle": "solid", - "roughness": 1, - "opacity": 100, - "angle": 1.5774237450700657, - "x": 1301.9722141535574, - "y": 217.96881154394697, - "strokeColor": "#c92a2a", - "backgroundColor": "#fa5252", - "width": 33.32257701070834, - "height": 28.85819083936603, - "seed": 1556105949, - "groupIds": [ - "_0iEyIKCqAnh2J7YUwrlB" - ], - "strokeSharpness": "sharp", - "boundElements": [], - "updated": 1662376667302, - "link": null, - "locked": false, - "lastCommittedPoint": null, - "startArrowhead": null, - "endArrowhead": null, - "points": [ - [ - 0, - 0 - ], - [ - 16.661288505354147, - 28.85819083936598 - ], - [ - -16.6612885053542, - 28.858190839366024 - ], - [ - 0, - 0 - ] - ] - }, - { - "type": "line", - "version": 2468, - "versionNonce": 2113033530, - "isDeleted": false, - "id": "SutAG57LVzwzVW-B7pjx2", - "fillStyle": "cross-hatch", - "strokeWidth": 1, - "strokeStyle": "solid", - "roughness": 1, - "opacity": 100, - "angle": 4.721247315744137, - "x": 1292.001511263509, - "y": 218.73806334146855, - "strokeColor": "#5665dc", - "backgroundColor": "#5665dc", - "width": 33.32257701070834, - "height": 28.85819083936603, - "seed": 107224435, - "groupIds": [ - "_0iEyIKCqAnh2J7YUwrlB" - ], - "strokeSharpness": "sharp", - "boundElements": [], - "updated": 1662376667302, - "link": null, - "locked": false, - "lastCommittedPoint": null, - "startArrowhead": null, - "endArrowhead": null, - "points": [ - [ - 0, - 0 - ], - [ - 16.661288505354147, - 28.85819083936598 - ], - [ - -16.6612885053542, - 28.858190839366024 - ], - [ - 0, - 0 - ] - ] - }, - { - "type": "line", - "version": 2789, - "versionNonce": 1358181222, - "isDeleted": false, - "id": "i26NzthkwBlfiUCin9CYI", - "fillStyle": "cross-hatch", - "strokeWidth": 1, - "strokeStyle": "solid", - "roughness": 1, - "opacity": 100, - "angle": 0.0005581869343673773, - "x": 1296.0624601985858, - "y": 245.1701370116595, - "strokeColor": "#5665dc", - "backgroundColor": "#5665dc", - "width": 12.907571670440605, - "height": 13.318824900087934, - "seed": 395110205, - "groupIds": [ - "_0iEyIKCqAnh2J7YUwrlB" - ], - "strokeSharpness": "sharp", - "boundElements": [], - "updated": 1662376667302, - "link": null, - "locked": false, - "lastCommittedPoint": null, - "startArrowhead": null, - "endArrowhead": null, - "points": [ - [ - 0, - 0 - ], - [ - 6.453785835220252, - 13.318824900087908 - ], - [ - -6.453785835220351, - 13.31882490008794 - ], - [ - 0, - 0 - ] - ] - }, - { - "type": "rectangle", - "version": 1804, - "versionNonce": 237477370, - "isDeleted": false, - "id": "2BfNxEEM8p5HYk7WcE_F9", - "fillStyle": "solid", - "strokeWidth": 1, - "strokeStyle": "solid", - "roughness": 2, - "opacity": 100, - "angle": 5.989889724533434, - "x": 1301.980919550926, - "y": 252.81882394751756, - "strokeColor": "#ffffff", - "backgroundColor": "#ffffff", - "width": 4.533179238462011, - "height": 7.2653956832235504, - "seed": 562427667, - "groupIds": [ - "_0iEyIKCqAnh2J7YUwrlB" - ], - "strokeSharpness": "round", - "boundElements": [], - "updated": 1662376667302, - "link": null, - "locked": false - }, - { - "type": "line", - "version": 1728, - "versionNonce": 2414246, - "isDeleted": false, - "id": "5fGV8W9z-RAs_dgD03VyY", - "fillStyle": "cross-hatch", - "strokeWidth": 1, - "strokeStyle": "solid", - "roughness": 1, - "opacity": 100, - "angle": 0, - "x": 1297.093093580768, - "y": 222.20484551634627, - "strokeColor": "#000000", - "backgroundColor": "#000000", - "width": 18.093574283353416, - "height": 21.608910352169588, - "seed": 457635741, - "groupIds": [ - "_0iEyIKCqAnh2J7YUwrlB" - ], - "strokeSharpness": "sharp", - "boundElements": [], - "updated": 1662376667302, - "link": null, - "locked": false, - "lastCommittedPoint": null, - "startArrowhead": null, - "endArrowhead": null, - "points": [ - [ - 0, - 0 - ], - [ - 9.046787141676653, - 5.402227588042349 - ], - [ - 9.046787141676685, - 16.20668276412716 - ], - [ - 0, - 21.60891035216959 - ], - [ - -9.046787141676738, - 16.20668276412703 - ], - [ - -9.046787141676724, - 5.402227588042457 - ], - [ - 0, - 0 - ] - ] - }, - { - "type": "line", - "version": 1566, - "versionNonce": 573951674, - "isDeleted": false, - "id": "-fAV_aerIzzEWfYYHEKXg", - "fillStyle": "hachure", - "strokeWidth": 2, - "strokeStyle": "solid", - "roughness": 1, - "opacity": 100, - "angle": 0, - "x": 1286.9623124603343, - "y": 225.86946868342477, - "strokeColor": "#ffffff", - "backgroundColor": "#ffffff", - "width": 9.063116136997696, - "height": 6.655277964453662, - "seed": 1518050483, - "groupIds": [ - "_0iEyIKCqAnh2J7YUwrlB" - ], - "strokeSharpness": "round", - "boundElements": [], - "updated": 1662376667302, - "link": null, - "locked": false, - "startBinding": null, - "endBinding": null, - "lastCommittedPoint": null, - "startArrowhead": null, - "endArrowhead": null, - "points": [ - [ - 0, - 0 - ], - [ - 9.063116136997696, - 6.655277964453662 - ] - ] - }, - { - "type": "line", - "version": 1454, - "versionNonce": 534712806, - "isDeleted": false, - "id": "C0EHFLoMSj-pbdFzB893u", - "fillStyle": "hachure", - "strokeWidth": 1, - "strokeStyle": "solid", - "roughness": 2, - "opacity": 100, - "angle": 0, - "x": 1293.5835666023909, - "y": 231.393259214085, - "strokeColor": "#ffffff", - "backgroundColor": "#ffffff", - "width": 1.938909697019904, - "height": 1.3996974072478967, - "seed": 1377827837, - "groupIds": [ - "_0iEyIKCqAnh2J7YUwrlB" - ], - "strokeSharpness": "round", - "boundElements": [], - "updated": 1662376667302, - "link": null, - "locked": false, - "startBinding": null, - "endBinding": null, - "lastCommittedPoint": null, - "startArrowhead": null, - "endArrowhead": null, - "points": [ - [ - 0, - 0 - ], - [ - 1.938909697019904, - 1.3996974072478967 - ] - ] - }, - { - "type": "line", - "version": 1676, - "versionNonce": 515893114, - "isDeleted": false, - "id": "hZP-cpVoJirzVS5h4IwGP", - "fillStyle": "hachure", - "strokeWidth": 2, - "strokeStyle": "solid", - "roughness": 1, - "opacity": 100, - "angle": 0, - "x": 1295.7896656391133, - "y": 231.83614969191865, - "strokeColor": "#ffffff", - "backgroundColor": "#ffffff", - "width": 0.41793131176457465, - "height": 12.31899938467562, - "seed": 1558941267, - "groupIds": [ - "_0iEyIKCqAnh2J7YUwrlB" - ], - "strokeSharpness": "round", - "boundElements": [], - "updated": 1662376667302, - "link": null, - "locked": false, - "startBinding": null, - "endBinding": null, - "lastCommittedPoint": null, - "startArrowhead": null, - "endArrowhead": null, - "points": [ - [ - 0, - 0 - ], - [ - 0.41793131176457465, - 12.31899938467562 - ] - ] - }, - { - "type": "line", - "version": 1718, - "versionNonce": 456123686, - "isDeleted": false, - "id": "OoBrrmXsBnrkluhSNWntM", - "fillStyle": "hachure", - "strokeWidth": 2, - "strokeStyle": "solid", - "roughness": 1, - "opacity": 100, - "angle": 0, - "x": 1295.8939101463318, - "y": 233.32005387918935, - "strokeColor": "#ffffff", - "backgroundColor": "#ffffff", - "width": 10.257078375565314, - "height": 6.540946725895645, - "seed": 1679389789, - "groupIds": [ - "_0iEyIKCqAnh2J7YUwrlB" - ], - "strokeSharpness": "round", - "boundElements": [], - "updated": 1662376667302, - "link": null, - "locked": false, - "startBinding": null, - "endBinding": null, - "lastCommittedPoint": null, - "startArrowhead": null, - "endArrowhead": null, - "points": [ - [ - 0, - 0 - ], - [ - 10.257078375565314, - -6.540946725895645 - ] - ] - }, - { - "type": "arrow", - "version": 417, - "versionNonce": 1544087610, - "isDeleted": false, - "id": "WyT8CHCFzENtI1D28JXqX", - "fillStyle": "cross-hatch", - "strokeWidth": 2, - "strokeStyle": "solid", - "roughness": 2, - "opacity": 90, - "angle": 3.172965356582301, - "x": 913.5652581299081, - "y": 224.42325658610133, - "strokeColor": "#000000", - "backgroundColor": "transparent", - "width": 94.08894820589546, - "height": 4.643393316912409, - "seed": 249565469, - "groupIds": [], - "strokeSharpness": "round", - "boundElements": [], - "updated": 1662376667302, - "link": null, - "locked": false, - "startBinding": null, - "endBinding": null, - "lastCommittedPoint": null, - "startArrowhead": null, - "endArrowhead": "arrow", - "points": [ - [ - 0, - 0 - ], - [ - -94.08894820589546, - -4.643393316912409 - ] - ] - }, - { - "type": "text", - "version": 213, - "versionNonce": 1938051174, - "isDeleted": false, - "id": "SmrHnQr2mG7pD6XtPNTbF", - "fillStyle": "cross-hatch", - "strokeWidth": 2, - "strokeStyle": "solid", - "roughness": 2, - "opacity": 90, - "angle": 0, - "x": 839, - "y": 191, - "strokeColor": "#000000", - "backgroundColor": "transparent", - "width": 48, - "height": 25, - "seed": 322424893, - "groupIds": [], - "strokeSharpness": "sharp", - "boundElements": [], - "updated": 1662376667302, - "link": null, - "locked": false, - "fontSize": 20, - "fontFamily": 1, - "text": "clone", - "baseline": 18, - "textAlign": "center", - "verticalAlign": "top", - "containerId": null, - "originalText": "clone" - }, - { - "type": "arrow", - "version": 1672, - "versionNonce": 1246513594, - "isDeleted": false, - "id": "YGLbIKYvHLJ7195OM_YrC", - "fillStyle": "cross-hatch", - "strokeWidth": 2, - "strokeStyle": "solid", - "roughness": 2, - "opacity": 90, - "angle": 1.1544546290966737, - "x": 1066.1032297855195, - "y": 349.7657486755516, - "strokeColor": "#000000", - "backgroundColor": "transparent", - "width": 128.09256545730932, - "height": 234.12848935878483, - "seed": 1865112861, - "groupIds": [], - "strokeSharpness": "round", - "boundElements": [], - "updated": 1662376796438, - "link": null, - "locked": false, - "startBinding": null, - "endBinding": { - "elementId": "JGCv3K6aRrwT7DflWeTHf", - "focus": -0.6092445576527593, - "gap": 6.855367883465988 - }, - "lastCommittedPoint": null, - "startArrowhead": null, - "endArrowhead": "arrow", - "points": [ - [ - 0, - 0 - ], - [ - 128.09256545730932, - -234.12848935878483 - ] - ] - }, - { - "type": "rectangle", - "version": 408, - "versionNonce": 1957254054, - "isDeleted": false, - "id": "91F-Fbyycbn74TbDoib9O", - "fillStyle": "cross-hatch", - "strokeWidth": 2, - "strokeStyle": "solid", - "roughness": 2, - "opacity": 100, - "angle": 0, - "x": 593, - "y": 305, - "strokeColor": "#000000", - "backgroundColor": "transparent", - "width": 145, - "height": 123.99999999999999, - "seed": 1883417619, - "groupIds": [], - "strokeSharpness": "sharp", - "boundElements": [], - "updated": 1662376667302, - "link": null, - "locked": false - }, - { - "type": "text", - "version": 357, - "versionNonce": 67346874, - "isDeleted": false, - "id": "hbDoM_i77W4Y0gTLYkn6S", - "fillStyle": "cross-hatch", - "strokeWidth": 2, - "strokeStyle": "solid", - "roughness": 2, - "opacity": 100, - "angle": 0, - "x": 578, - "y": 278, - "strokeColor": "#000000", - "backgroundColor": "transparent", - "width": 172, - "height": 25, - "seed": 350645171, - "groupIds": [], - "strokeSharpness": "sharp", - "boundElements": [], - "updated": 1662376667302, - "link": null, - "locked": false, - "fontSize": 20, - "fontFamily": 1, - "text": "openshift-pipelines", - "baseline": 18, - "textAlign": "center", - "verticalAlign": "top", - "containerId": null, - "originalText": "openshift-pipelines" - }, - { - "type": "arrow", - "version": 219, - "versionNonce": 1758195430, - "isDeleted": false, - "id": "LUbBz_tU04VUacwIREtSp", - "fillStyle": "cross-hatch", - "strokeWidth": 2, - "strokeStyle": "solid", - "roughness": 2, - "opacity": 100, - "angle": 0, - "x": 777.4239640302878, - "y": 247.52451296269896, - "strokeColor": "#000000", - "backgroundColor": "transparent", - "width": 51.77851251264292, - "height": 105.57960552038185, - "seed": 280713363, - "groupIds": [], - "strokeSharpness": "round", - "boundElements": [], - "updated": 1662376667302, - "link": null, - "locked": false, - "startBinding": { - "elementId": "YbM8xe6NaFlLoIbF5ZNkj", - "focus": -0.16089294373087465, - "gap": 1.5245129626989637 - }, - "endBinding": null, - "lastCommittedPoint": null, - "startArrowhead": null, - "endArrowhead": "arrow", - "points": [ - [ - 0, - 0 - ], - [ - -51.77851251264292, - 105.57960552038185 - ] - ] - }, - { - "type": "ellipse", - "version": 1282, - "versionNonce": 1681202214, - "isDeleted": false, - "id": "bWmX4iEk56oiuov3XaAt4", - "fillStyle": "solid", - "strokeWidth": 1, - "strokeStyle": "solid", - "roughness": 1, - "opacity": 100, - "angle": 0.24489467703229373, - "x": 728.7529318077941, - "y": 400.2866250616118, - "strokeColor": "#000000", - "backgroundColor": "#ffffff", - "width": 15.493137496703639, - "height": 38.942210464687484, - "seed": 1077858269, - "groupIds": [ - "jR05h_8U2AWpOQqAZ05t-", - "6Gk3LIiMNio0piIcba3a-" - ], - "strokeSharpness": "round", - "boundElements": [], - "updated": 1662376752680, - "link": null, - "locked": false - }, - { - "type": "ellipse", - "version": 1331, - "versionNonce": 2052497722, - "isDeleted": false, - "id": "s246kZzX-8bYd4WOS8lkr", - "fillStyle": "solid", - "strokeWidth": 1, - "strokeStyle": "solid", - "roughness": 1, - "opacity": 100, - "angle": 0.24489467703229373, - "x": 855.2398423086024, - "y": 431.8970658357859, - "strokeColor": "#000000", - "backgroundColor": "#868e96", - "width": 15.493137496703639, - "height": 38.942210464687484, - "seed": 62679155, - "groupIds": [ - "jR05h_8U2AWpOQqAZ05t-", - "6Gk3LIiMNio0piIcba3a-" - ], - "strokeSharpness": "round", - "boundElements": [], - "updated": 1662376752680, - "link": null, - "locked": false - }, - { - "type": "line", - "version": 1297, - "versionNonce": 1959438182, - "isDeleted": false, - "id": "SSI9fa4T-YBGS-_lSSMeL", - "fillStyle": "solid", - "strokeWidth": 1, - "strokeStyle": "solid", - "roughness": 1, - "opacity": 100, - "angle": 0.24489467703229373, - "x": 739.1682896882069, - "y": 417.40157852013573, - "strokeColor": "#000000", - "backgroundColor": "#ffffff", - "width": 130.1290895770178, - "height": 0, - "seed": 1928514621, - "groupIds": [ - "jR05h_8U2AWpOQqAZ05t-", - "6Gk3LIiMNio0piIcba3a-" - ], - "strokeSharpness": "round", - "boundElements": [], - "updated": 1662376752680, - "link": null, - "locked": false, - "startBinding": null, - "endBinding": null, - "lastCommittedPoint": null, - "startArrowhead": null, - "endArrowhead": null, - "points": [ - [ - 0, - 0 - ], - [ - 130.1290895770178, - 0 - ] - ] - }, - { - "type": "line", - "version": 1318, - "versionNonce": 270690810, - "isDeleted": false, - "id": "O8w8h12pi6dXXFeyZTjuA", - "fillStyle": "solid", - "strokeWidth": 1, - "strokeStyle": "solid", - "roughness": 1, - "opacity": 100, - "angle": 0.24489467703229373, - "x": 729.9442923188832, - "y": 454.6272878418849, - "strokeColor": "#000000", - "backgroundColor": "#ffffff", - "width": 133.109855075734, - "height": 0, - "seed": 60613139, - "groupIds": [ - "jR05h_8U2AWpOQqAZ05t-", - "6Gk3LIiMNio0piIcba3a-" - ], - "strokeSharpness": "round", - "boundElements": [], - "updated": 1662376752680, - "link": null, - "locked": false, - "startBinding": null, - "endBinding": null, - "lastCommittedPoint": null, - "startArrowhead": null, - "endArrowhead": null, - "points": [ - [ - 0, - 0 - ], - [ - 133.109855075734, - 0 - ] - ] - }, - { - "type": "rectangle", - "version": 1314, - "versionNonce": 1225575078, - "isDeleted": false, - "id": "PzagH_-6alw3MCAH8cX1J", - "fillStyle": "solid", - "strokeWidth": 1, - "strokeStyle": "solid", - "roughness": 0, - "opacity": 100, - "angle": 0.24489467703229373, - "x": 735.171394065713, - "y": 402.73020553790263, - "strokeColor": "transparent", - "backgroundColor": "#ffffff", - "width": 9.879247128441374, - "height": 35.64435776557299, - "seed": 984104093, - "groupIds": [ - "jR05h_8U2AWpOQqAZ05t-", - "6Gk3LIiMNio0piIcba3a-" - ], - "strokeSharpness": "round", - "boundElements": [], - "updated": 1662376752680, - "link": null, - "locked": false - }, - { - "type": "text", - "version": 1533, - "versionNonce": 541741690, - "isDeleted": false, - "id": "XKTEM8qBa4qGOJP7CVrIX", - "fillStyle": "cross-hatch", - "strokeWidth": 2, - "strokeStyle": "solid", - "roughness": 2, - "opacity": 100, - "angle": 0.1878576905630096, - "x": 772.0787727644545, - "y": 423.7782965985263, - "strokeColor": "#000000", - "backgroundColor": "transparent", - "width": 45, - "height": 26, - "seed": 456298397, - "groupIds": [], - "strokeSharpness": "sharp", - "boundElements": [ - { - "id": "RN13O3v7s67B4r3OLdUG1", - "type": "arrow" - } - ], - "updated": 1662376760869, - "link": null, - "locked": false, - "fontSize": 20.54864706710939, - "fontFamily": 1, - "text": "build", - "baseline": 18, - "textAlign": "center", - "verticalAlign": "top", - "containerId": null, - "originalText": "build" - }, - { - "type": "ellipse", - "version": 715, - "versionNonce": 1696544250, - "isDeleted": false, - "id": "KPZsUz6XrfRgo5gzwOnCF", - "fillStyle": "cross-hatch", - "strokeWidth": 1, - "strokeStyle": "solid", - "roughness": 1, - "opacity": 100, - "angle": 0, - "x": 691.228543069361, - "y": 356.8137377360939, - "strokeColor": "#000000", - "backgroundColor": "#fa5252", - "width": 17.73721237969338, - "height": 17.737212379693382, - "seed": 839994541, - "groupIds": [ - "b1ibwSW8IcqyRbXlyG-Xj" - ], - "strokeSharpness": "sharp", - "boundElements": [], - "updated": 1662376667303, - "link": null, - "locked": false - }, - { - "type": "ellipse", - "version": 867, - "versionNonce": 1746058918, - "isDeleted": false, - "id": "0EvWV8PC9X7e1VrL7zu7Z", - "fillStyle": "cross-hatch", - "strokeWidth": 1, - "strokeStyle": "solid", - "roughness": 1, - "opacity": 100, - "angle": 0, - "x": 620.806908501519, - "y": 324.72344471178013, - "strokeColor": "#000000", - "backgroundColor": "#fa5252", - "width": 14.096941137149154, - "height": 14.096941137149154, - "seed": 737730723, - "groupIds": [ - "b1ibwSW8IcqyRbXlyG-Xj" - ], - "strokeSharpness": "sharp", - "boundElements": [], - "updated": 1662376667303, - "link": null, - "locked": false - }, - { - "type": "ellipse", - "version": 923, - "versionNonce": 1719297722, - "isDeleted": false, - "id": "Ghr9iuQZ3q8DjB1pegFrI", - "fillStyle": "cross-hatch", - "strokeWidth": 1, - "strokeStyle": "solid", - "roughness": 1, - "opacity": 100, - "angle": 0, - "x": 620.8278846144517, - "y": 358.65350858826474, - "strokeColor": "#000000", - "backgroundColor": "#fa5252", - "width": 14.096941137149154, - "height": 14.096941137149154, - "seed": 1425878797, - "groupIds": [ - "b1ibwSW8IcqyRbXlyG-Xj" - ], - "strokeSharpness": "sharp", - "boundElements": [], - "updated": 1662376667303, - "link": null, - "locked": false - }, - { - "type": "ellipse", - "version": 932, - "versionNonce": 567278054, - "isDeleted": false, - "id": "odlpEEpNgIDZzeq3OXuvP", - "fillStyle": "cross-hatch", - "strokeWidth": 1, - "strokeStyle": "solid", - "roughness": 1, - "opacity": 100, - "angle": 0, - "x": 621.0832978108213, - "y": 391.8841472892281, - "strokeColor": "#000000", - "backgroundColor": "#fa5252", - "width": 14.096941137149154, - "height": 14.096941137149154, - "seed": 1744491587, - "groupIds": [ - "b1ibwSW8IcqyRbXlyG-Xj" - ], - "strokeSharpness": "sharp", - "boundElements": [], - "updated": 1662376667303, - "link": null, - "locked": false - }, - { - "type": "line", - "version": 931, - "versionNonce": 514948986, - "isDeleted": false, - "id": "wsKOdGOVXg-2pEVWlBNMl", - "fillStyle": "cross-hatch", - "strokeWidth": 1, - "strokeStyle": "solid", - "roughness": 1, - "opacity": 100, - "angle": 0, - "x": 642.3923405792287, - "y": 327.0220579467141, - "strokeColor": "#000000", - "backgroundColor": "#fa5252", - "width": 41.4984973634862, - "height": 42.84726016307581, - "seed": 1224590701, - "groupIds": [ - "b1ibwSW8IcqyRbXlyG-Xj" - ], - "strokeSharpness": "sharp", - "boundElements": [], - "updated": 1662376667303, - "link": null, - "locked": false, - "startBinding": null, - "endBinding": null, - "lastCommittedPoint": null, - "startArrowhead": null, - "endArrowhead": null, - "points": [ - [ - 0, - 0 - ], - [ - 6.331539146649046, - 0.6911701828995058 - ], - [ - 12.568263416808293, - 2.7567336315794506 - ], - [ - 17.783689413894457, - 6.115027696806288 - ], - [ - 21.55680080812036, - 10.927360487295218 - ], - [ - 29.238198258256762, - 26.091034405487317 - ], - [ - 32.945365761671674, - 30.574916422617147 - ], - [ - 37.42140189982159, - 33.340894759105936 - ], - [ - 41.416542729958344, - 33.84541709619365 - ], - [ - 40.65242563104734, - 42.84726016307581 - ], - [ - 35.08918171060486, - 41.79625619570694 - ], - [ - 29.89463909166145, - 39.481563741388634 - ], - [ - 24.964704070453816, - 35.15988031617168 - ], - [ - 20.916849385577226, - 28.38179727273358 - ], - [ - 14.999667618648054, - 17.15976986783135 - ], - [ - 10.648842357220921, - 12.302187465926371 - ], - [ - 6.500015817009046, - 9.797189469362907 - ], - [ - 0.20955312070965437, - 9.562246308014643 - ], - [ - -0.08195463352785409, - 0.15905318117947767 - ] - ] - }, - { - "type": "line", - "version": 398, - "versionNonce": 2126761254, - "isDeleted": false, - "id": "I7dID8l91TbWqTx5vRMCa", - "fillStyle": "cross-hatch", - "strokeWidth": 1, - "strokeStyle": "solid", - "roughness": 1, - "opacity": 100, - "angle": 0, - "x": 642.2938208953407, - "y": 360.90387398414344, - "strokeColor": "#000000", - "backgroundColor": "#fa5252", - "width": 18.63572979046503, - "height": 8.945450381946396, - "seed": 582833123, - "groupIds": [ - "b1ibwSW8IcqyRbXlyG-Xj" - ], - "strokeSharpness": "sharp", - "boundElements": [], - "updated": 1662376667303, - "link": null, - "locked": false, - "startBinding": null, - "endBinding": null, - "lastCommittedPoint": null, - "startArrowhead": null, - "endArrowhead": null, - "points": [ - [ - 0, - 0 - ], - [ - 15.731454943862888, - 0.19513615572747334 - ], - [ - 18.438358831347205, - 4.624138277908322 - ], - [ - 15.401474189720787, - 8.645168445782279 - ], - [ - 0.024885395291281753, - 8.945450381946396 - ], - [ - -0.19737095911783126, - 0.22076419337619754 - ] - ] - }, - { - "type": "line", - "version": 542, - "versionNonce": 436699194, - "isDeleted": false, - "id": "tVJ51sTAhaMQbnsD2z1G_", - "fillStyle": "cross-hatch", - "strokeWidth": 1, - "strokeStyle": "solid", - "roughness": 1, - "opacity": 100, - "angle": 0, - "x": 666.5167310696386, - "y": 371.5341297381931, - "strokeColor": "#000000", - "backgroundColor": "#fa5252", - "width": 31.742377208928268, - "height": 32.08983068742408, - "seed": 1901891533, - "groupIds": [ - "b1ibwSW8IcqyRbXlyG-Xj" - ], - "strokeSharpness": "sharp", - "boundElements": [], - "updated": 1662376667303, - "link": null, - "locked": false, - "startBinding": null, - "endBinding": null, - "lastCommittedPoint": null, - "startArrowhead": null, - "endArrowhead": null, - "points": [ - [ - 0, - 0 - ], - [ - 7.450862008705704, - 4.5261026104118764 - ], - [ - 3.3117379533671727, - 11.615366554240595 - ], - [ - -0.9358050098348354, - 19.767097287751245 - ], - [ - -5.808480930022496, - 26.23722442399886 - ], - [ - -12.050658120454212, - 30.196436491936836 - ], - [ - -18.01532774034885, - 31.68550318172356 - ], - [ - -24.291515200222555, - 32.08983068742408 - ], - [ - -24.279034682827145, - 23.204527460109873 - ], - [ - -18.279667161677786, - 22.96770706391407 - ], - [ - -13.350626061826572, - 21.184189555732566 - ], - [ - -9.64956472890564, - 16.950076041826833 - ], - [ - -0.104031816900326, - 0.32570368426907065 - ] - ] - }, - { - "type": "diamond", - "version": 974, - "versionNonce": 207304806, - "isDeleted": false, - "id": "47h-nRr-nwGO_mQa23UeO", - "fillStyle": "solid", - "strokeWidth": 1, - "strokeStyle": "solid", - "roughness": 1, - "opacity": 100, - "angle": 0, - "x": 632.6763173734828, - "y": 769.1302824085412, - "strokeColor": "#c92a2a", - "backgroundColor": "#fa5252", - "width": 112.64736525303451, - "height": 36.77344700318558, - "seed": 1441517305, - "groupIds": [ - "m2RdbPic1YynJwWKbyYdm" - ], - "strokeSharpness": "sharp", - "boundElements": [], - "updated": 1662376667303, - "link": null, - "locked": false - }, - { - "type": "diamond", - "version": 1015, - "versionNonce": 1683974394, - "isDeleted": false, - "id": "qSQncXc-KxT1XqGMW7qed", - "fillStyle": "solid", - "strokeWidth": 1, - "strokeStyle": "solid", - "roughness": 1, - "opacity": 100, - "angle": 0, - "x": 632.6763173734828, - "y": 760.2585024802827, - "strokeColor": "#c92a2a", - "backgroundColor": "#fa5252", - "width": 112.64736525303451, - "height": 36.77344700318558, - "seed": 716667159, - "groupIds": [ - "m2RdbPic1YynJwWKbyYdm" - ], - "strokeSharpness": "sharp", - "boundElements": [], - "updated": 1662376667303, - "link": null, - "locked": false - }, - { - "type": "diamond", - "version": 1095, - "versionNonce": 576928678, - "isDeleted": false, - "id": "sGGXEhvtRhriU_uNapb9E", - "fillStyle": "solid", - "strokeWidth": 1, - "strokeStyle": "solid", - "roughness": 1, - "opacity": 100, - "angle": 0, - "x": 632.6763173734828, - "y": 747.6279428855705, - "strokeColor": "#c92a2a", - "backgroundColor": "#fa5252", - "width": 112.64736525303451, - "height": 36.77344700318558, - "seed": 426346457, - "groupIds": [ - "m2RdbPic1YynJwWKbyYdm" - ], - "strokeSharpness": "sharp", - "boundElements": [], - "updated": 1662376667303, - "link": null, - "locked": false - }, - { - "type": "diamond", - "version": 1137, - "versionNonce": 356268474, - "isDeleted": false, - "id": "wBe1SK4e7md93lfPcC54E", - "fillStyle": "solid", - "strokeWidth": 1, - "strokeStyle": "solid", - "roughness": 1, - "opacity": 100, - "angle": 0, - "x": 632.6763173734828, - "y": 735.0962705882732, - "strokeColor": "#c92a2a", - "backgroundColor": "#fa5252", - "width": 112.64736525303451, - "height": 36.77344700318558, - "seed": 834027063, - "groupIds": [ - "m2RdbPic1YynJwWKbyYdm" - ], - "strokeSharpness": "sharp", - "boundElements": [], - "updated": 1662376667303, - "link": null, - "locked": false - }, - { - "type": "arrow", - "version": 2408, - "versionNonce": 923661114, - "isDeleted": false, - "id": "RN13O3v7s67B4r3OLdUG1", - "fillStyle": "cross-hatch", - "strokeWidth": 2, - "strokeStyle": "solid", - "roughness": 2, - "opacity": 90, - "angle": 1.1544546290966737, - "x": 659.669229641808, - "y": 480.42419718896514, - "strokeColor": "#000000", - "backgroundColor": "transparent", - "width": 159.12252736448056, - "height": 174.7936017430613, - "seed": 1186513049, - "groupIds": [], - "strokeSharpness": "round", - "boundElements": [], - "updated": 1662376760869, - "link": null, - "locked": false, - "startBinding": { - "elementId": "XKTEM8qBa4qGOJP7CVrIX", - "focus": -0.05448887991604787, - "gap": 11.335548920662745 - }, - "endBinding": { - "elementId": "IXATX347s4UD9lGlcr90X", - "focus": -0.19812288467622294, - "gap": 6.56951103650465 - }, - "lastCommittedPoint": null, - "startArrowhead": null, - "endArrowhead": "arrow", - "points": [ - [ - 0, - 0 - ], - [ - 159.12252736448056, - 174.7936017430613 - ] - ] - }, - { - "type": "rectangle", - "version": 483, - "versionNonce": 1539371642, - "isDeleted": false, - "id": "BSTGJy4-i2gkcab8vcVmx", - "fillStyle": "cross-hatch", - "strokeWidth": 2, - "strokeStyle": "solid", - "roughness": 2, - "opacity": 100, - "angle": 0, - "x": 616.5, - "y": 706, - "strokeColor": "#000000", - "backgroundColor": "transparent", - "width": 145, - "height": 123.99999999999999, - "seed": 966959383, - "groupIds": [], - "strokeSharpness": "sharp", - "boundElements": [ - { - "id": "yb6on_IoQ9DCic3wLZCL5", - "type": "arrow" - } - ], - "updated": 1662376667303, - "link": null, - "locked": false - }, - { - "type": "text", - "version": 476, - "versionNonce": 1926826534, - "isDeleted": false, - "id": "IXATX347s4UD9lGlcr90X", - "fillStyle": "cross-hatch", - "strokeWidth": 2, - "strokeStyle": "solid", - "roughness": 2, - "opacity": 100, - "angle": 0, - "x": 664.5, - "y": 682.5, - "strokeColor": "#000000", - "backgroundColor": "transparent", - "width": 49, - "height": 25, - "seed": 2017626071, - "groupIds": [], - "strokeSharpness": "sharp", - "boundElements": [ - { - "id": "RN13O3v7s67B4r3OLdUG1", - "type": "arrow" - } - ], - "updated": 1662376667303, - "link": null, - "locked": false, - "fontSize": 20, - "fontFamily": 1, - "text": "Quay", - "baseline": 18, - "textAlign": "center", - "verticalAlign": "top", - "containerId": null, - "originalText": "Quay" - }, - { - "type": "text", - "version": 527, - "versionNonce": 1917608186, - "isDeleted": false, - "id": "5cuIIpz3LTeQ3sO41ieWq", - "fillStyle": "cross-hatch", - "strokeWidth": 2, - "strokeStyle": "solid", - "roughness": 2, - "opacity": 100, - "angle": 5.096972061245716, - "x": 666.41530864279, - "y": 560.9646648179378, - "strokeColor": "#000000", - "backgroundColor": "transparent", - "width": 107, - "height": 20, - "seed": 1296941911, - "groupIds": [], - "strokeSharpness": "sharp", - "boundElements": [ - { - "id": "6zKDixmk2nfg2iRiN4mHi", - "type": "arrow" - } - ], - "updated": 1662376764991, - "link": null, - "locked": false, - "fontSize": 16, - "fontFamily": 1, - "text": "push to Quay", - "baseline": 14, - "textAlign": "center", - "verticalAlign": "top", - "containerId": null, - "originalText": "push to Quay" - }, - { - "type": "line", - "version": 1869, - "versionNonce": 616617318, - "isDeleted": false, - "id": "GP1wLZ1WFSKU2V50lx_PB", - "fillStyle": "hachure", - "strokeWidth": 1, - "strokeStyle": "solid", - "roughness": 1, - "opacity": 100, - "angle": 0, - "x": 888.2359178299338, - "y": 776.0795466994963, - "strokeColor": "#fa5252", - "backgroundColor": "#fa5252", - "width": 45.45537939093032, - "height": 28.55045143932542, - "seed": 910612326, - "groupIds": [ - "aIlUmEWkA-SaliQpUsuSS" - ], - "strokeSharpness": "round", - "boundElements": [], - "updated": 1662376667303, - "link": null, - "locked": false, - "startBinding": null, - "endBinding": null, - "lastCommittedPoint": null, - "startArrowhead": null, - "endArrowhead": null, - "points": [ - [ - 0, - 0 - ], - [ - 0.09881604215418947, - 5.982999014858631 - ], - [ - 0.39526416861678143, - 12.070962924714806 - ], - [ - 5.533698360634995, - 16.899348094600715 - ], - [ - 15.415302576054616, - 19.313540679543642 - ], - [ - 29.743628688413075, - 19.313540679543664 - ], - [ - 39.52641686167853, - 17.109277884595738 - ], - [ - 44.81307511692804, - 12.9631645321937 - ], - [ - 45.45537939093032, - 5.982999014858641 - ], - [ - 44.71425907477384, - -0.9446840549776787 - ], - [ - 38.735888524444896, - -6.717753279841269 - ], - [ - 28.360204098254336, - -9.23691075978176 - ], - [ - 15.31648653390042, - -9.026980969786704 - ], - [ - 5.089026170941105, - -5.668104329866079 - ], - [ - 0, - 0 - ] - ] - }, - { - "type": "ellipse", - "version": 862, - "versionNonce": 611195898, - "isDeleted": false, - "id": "tKodUHcxsuZtHeAhdzSw-", - "fillStyle": "solid", - "strokeWidth": 1, - "strokeStyle": "solid", - "roughness": 1, - "opacity": 100, - "angle": 0, - "x": 892.2440967427956, - "y": 767.9926814874417, - "strokeColor": "#fa5252", - "backgroundColor": "#fa5252", - "width": 37.0506282457687, - "height": 14.169503720053175, - "seed": 1472281082, - "groupIds": [ - "aIlUmEWkA-SaliQpUsuSS" - ], - "strokeSharpness": "sharp", - "boundElements": [], - "updated": 1662376667303, - "link": null, - "locked": false - }, - { - "type": "line", - "version": 2702, - "versionNonce": 906836134, - "isDeleted": false, - "id": "JowGyceWZyekC0DpvNjIf", - "fillStyle": "hachure", - "strokeWidth": 1, - "strokeStyle": "solid", - "roughness": 1, - "opacity": 100, - "angle": 0, - "x": 888.4363535962191, - "y": 792.2718279844214, - "strokeColor": "#fa5252", - "backgroundColor": "#fa5252", - "width": 44.75215216926839, - "height": 18.44773266062176, - "seed": 1803745958, - "groupIds": [ - "aIlUmEWkA-SaliQpUsuSS" - ], - "strokeSharpness": "round", - "boundElements": [], - "updated": 1662376667303, - "link": null, - "locked": false, - "startBinding": null, - "endBinding": null, - "lastCommittedPoint": null, - "startArrowhead": null, - "endArrowhead": null, - "points": [ - [ - 0, - 0 - ], - [ - 0.09881604215418954, - 5.7359953692677355 - ], - [ - 0.8360931732406627, - 12.188788492529767 - ], - [ - 6.415356369882757, - 16.27013404810402 - ], - [ - 16.076546082990426, - 18.44773266062176 - ], - [ - 30.037514691495648, - 18.37926974325645 - ], - [ - 38.718230353201484, - 16.745248712978196 - ], - [ - 43.80546596350205, - 13.229984141597614 - ], - [ - 44.75215216926839, - 6.987888715376405 - ], - [ - 44.596758549161464, - 0.571547384474486 - ], - [ - 43.265820916723996, - 1.4122752942962638 - ], - [ - 38.05365316014614, - 3.8485825851177227 - ], - [ - 29.399301037724893, - 5.462958347950173 - ], - [ - 16.785916549313352, - 5.625099676297176 - ], - [ - 6.663415473169238, - 3.7594908843371635 - ], - [ - 0, - 0 - ] - ] - }, - { - "type": "line", - "version": 2781, - "versionNonce": 1727827130, - "isDeleted": false, - "id": "LQXzCv6fh_FAdDQyf1dnl", - "fillStyle": "hachure", - "strokeWidth": 1, - "strokeStyle": "solid", - "roughness": 1, - "opacity": 100, - "angle": 0, - "x": 888.4575305030959, - "y": 807.7379899328757, - "strokeColor": "#fa5252", - "backgroundColor": "#fa5252", - "width": 44.75215216926839, - "height": 17.929281850049776, - "seed": 1044114106, - "groupIds": [ - "aIlUmEWkA-SaliQpUsuSS" - ], - "strokeSharpness": "round", - "boundElements": [], - "updated": 1662376667303, - "link": null, - "locked": false, - "startBinding": null, - "endBinding": null, - "lastCommittedPoint": null, - "startArrowhead": null, - "endArrowhead": null, - "points": [ - [ - 0, - 0 - ], - [ - 0.09881604215418954, - 5.5747922825067295 - ], - [ - 0.8360931732406627, - 11.846237600769971 - ], - [ - 6.415356369882757, - 15.812881965122543 - ], - [ - 16.076546082990426, - 17.929281850049776 - ], - [ - 30.037514691495648, - 17.862742998674317 - ], - [ - 38.718230353201484, - 16.274644117379026 - ], - [ - 43.80546596350205, - 12.858171728210504 - ], - [ - 44.75215216926839, - 6.791502707658123 - ], - [ - 44.596758549161464, - 0.5554847490161138 - ], - [ - 43.265820916723996, - 1.3725850361735614 - ], - [ - 38.05365316014614, - 3.7404229105650506 - ], - [ - 29.399301037724893, - 5.3094286304656295 - ], - [ - 16.785916549313352, - 5.467013176434269 - ], - [ - 6.663415473169238, - 3.653835022330706 - ], - [ - 0, - 0 - ] - ] - }, - { - "type": "rectangle", - "version": 763, - "versionNonce": 2120954854, - "isDeleted": false, - "id": "0vx83HbQv2HvAfR2WHYzx", - "fillStyle": "cross-hatch", - "strokeWidth": 2, - "strokeStyle": "solid", - "roughness": 2, - "opacity": 100, - "angle": 0, - "x": 869.5, - "y": 755.6981132075472, - "strokeColor": "#000000", - "backgroundColor": "transparent", - "width": 82.99999999999996, - "height": 78.30188679245282, - "seed": 986179194, - "groupIds": [], - "strokeSharpness": "sharp", - "boundElements": [ - { - "id": "yb6on_IoQ9DCic3wLZCL5", - "type": "arrow" - } - ], - "updated": 1662376667303, - "link": null, - "locked": false - }, - { - "type": "text", - "version": 561, - "versionNonce": 1476322682, - "isDeleted": false, - "id": "g1zqTtCSN4y0R3bNwm5QR", - "fillStyle": "cross-hatch", - "strokeWidth": 2, - "strokeStyle": "solid", - "roughness": 2, - "opacity": 100, - "angle": 0, - "x": 889.5, - "y": 728.5, - "strokeColor": "#000000", - "backgroundColor": "transparent", - "width": 43, - "height": 25, - "seed": 1419797434, - "groupIds": [], - "strokeSharpness": "sharp", - "boundElements": [ - { - "id": "RN13O3v7s67B4r3OLdUG1", - "type": "arrow" - } - ], - "updated": 1662376667303, - "link": null, - "locked": false, - "fontSize": 20, - "fontFamily": 1, - "text": "ODF", - "baseline": 18, - "textAlign": "center", - "verticalAlign": "top", - "containerId": null, - "originalText": "ODF" - }, - { - "type": "arrow", - "version": 2426, - "versionNonce": 1474807590, - "isDeleted": false, - "id": "yb6on_IoQ9DCic3wLZCL5", - "fillStyle": "cross-hatch", - "strokeWidth": 2, - "strokeStyle": "solid", - "roughness": 2, - "opacity": 90, - "angle": 1.1544546290966737, - "x": 849.4734835425033, - "y": 746.9428522927587, - "strokeColor": "#000000", - "backgroundColor": "transparent", - "width": 72.92212454127264, - "height": 77.71575432057409, - "seed": 875407398, - "groupIds": [], - "strokeSharpness": "round", - "boundElements": [], - "updated": 1662376667303, - "link": null, - "locked": false, - "startBinding": { - "elementId": "0vx83HbQv2HvAfR2WHYzx", - "focus": -0.43218103748420833, - "gap": 5.5628963344287286 - }, - "endBinding": { - "elementId": "BSTGJy4-i2gkcab8vcVmx", - "focus": -0.2937839155117981, - "gap": 1.2285090703976493 - }, - "lastCommittedPoint": null, - "startArrowhead": null, - "endArrowhead": "arrow", - "points": [ - [ - 0, - 0 - ], - [ - -72.92212454127264, - 77.71575432057409 - ] - ] - }, - { - "type": "text", - "version": 655, - "versionNonce": 1354245690, - "isDeleted": false, - "id": "zqlKiPeKDW-kR1ozvN8_S", - "fillStyle": "cross-hatch", - "strokeWidth": 2, - "strokeStyle": "solid", - "roughness": 2, - "opacity": 100, - "angle": 0.31362065221670044, - "x": 774.9285257833599, - "y": 755.4520583425907, - "strokeColor": "#000000", - "backgroundColor": "transparent", - "width": 87.26292617008791, - "height": 15.309285292997872, - "seed": 1237998458, - "groupIds": [], - "strokeSharpness": "sharp", - "boundElements": [ - { - "id": "6zKDixmk2nfg2iRiN4mHi", - "type": "arrow" - } - ], - "updated": 1662376667303, - "link": null, - "locked": false, - "fontSize": 12.247428234398305, - "fontFamily": 1, - "text": "ObjectStorage", - "baseline": 10.309285292997872, - "textAlign": "center", - "verticalAlign": "top", - "containerId": null, - "originalText": "ObjectStorage" - }, - { - "type": "ellipse", - "version": 1461, - "versionNonce": 549772090, - "isDeleted": false, - "id": "W3gPAwxyJkXJh8Ar50Zhq", - "fillStyle": "solid", - "strokeWidth": 1, - "strokeStyle": "solid", - "roughness": 1, - "opacity": 100, - "angle": 6.261608989872856, - "x": 918.7163254321238, - "y": 434.5795641911996, - "strokeColor": "#000000", - "backgroundColor": "#ffffff", - "width": 19.037809392675335, - "height": 47.8517911761839, - "seed": 1254764986, - "groupIds": [ - "RWtC1ikS_VQ9hlNXii0g-", - "6q-raF-CZCIZYVp8CEwvt" - ], - "strokeSharpness": "round", - "boundElements": [], - "updated": 1662376774000, - "link": null, - "locked": false - }, - { - "type": "ellipse", - "version": 1510, - "versionNonce": 1593118054, - "isDeleted": false, - "id": "DMduDjdlZ2hBgQGzpryHX", - "fillStyle": "solid", - "strokeWidth": 1, - "strokeStyle": "solid", - "roughness": 1, - "opacity": 100, - "angle": 6.261608989872856, - "x": 1078.8849471378965, - "y": 431.12317881107117, - "strokeColor": "#000000", - "backgroundColor": "#868e96", - "width": 19.037809392675335, - "height": 47.8517911761839, - "seed": 1131831014, - "groupIds": [ - "RWtC1ikS_VQ9hlNXii0g-", - "6q-raF-CZCIZYVp8CEwvt" - ], - "strokeSharpness": "round", - "boundElements": [], - "updated": 1662376774000, - "link": null, - "locked": false - }, - { - "type": "line", - "version": 1476, - "versionNonce": 12149754, - "isDeleted": false, - "id": "WAOQPn7WwLqMpiCYRsY_A", - "fillStyle": "solid", - "strokeWidth": 1, - "strokeStyle": "solid", - "roughness": 1, - "opacity": 100, - "angle": 6.261608989872856, - "x": 927.9008050064805, - "y": 433.89096043854954, - "strokeColor": "#000000", - "backgroundColor": "#ffffff", - "width": 159.90129851598695, - "height": 0, - "seed": 483388026, - "groupIds": [ - "RWtC1ikS_VQ9hlNXii0g-", - "6q-raF-CZCIZYVp8CEwvt" - ], - "strokeSharpness": "round", - "boundElements": [], - "updated": 1662376774000, - "link": null, - "locked": false, - "startBinding": null, - "endBinding": null, - "lastCommittedPoint": null, - "startArrowhead": null, - "endArrowhead": null, - "points": [ - [ - 0, - 0 - ], - [ - 159.90129851598695, - 0 - ] - ] - }, - { - "type": "line", - "version": 1497, - "versionNonce": 217739430, - "isDeleted": false, - "id": "3cYyNk-3LtE94c6dvcq9G", - "fillStyle": "solid", - "strokeWidth": 1, - "strokeStyle": "solid", - "roughness": 1, - "opacity": 100, - "angle": 6.261608989872856, - "x": 928.7607805007328, - "y": 480.6406893719525, - "strokeColor": "#000000", - "backgroundColor": "#ffffff", - "width": 163.56403276983937, - "height": 0, - "seed": 1213567526, - "groupIds": [ - "RWtC1ikS_VQ9hlNXii0g-", - "6q-raF-CZCIZYVp8CEwvt" - ], - "strokeSharpness": "round", - "boundElements": [], - "updated": 1662376774000, - "link": null, - "locked": false, - "startBinding": null, - "endBinding": null, - "lastCommittedPoint": null, - "startArrowhead": null, - "endArrowhead": null, - "points": [ - [ - 0, - 0 - ], - [ - 163.56403276983937, - 0 - ] - ] - }, - { - "type": "rectangle", - "version": 1493, - "versionNonce": 715052218, - "isDeleted": false, - "id": "57e280TGFVo8SOl7_3x2a", - "fillStyle": "solid", - "strokeWidth": 1, - "strokeStyle": "solid", - "roughness": 0, - "opacity": 100, - "angle": 6.261608989872856, - "x": 926.7037703416653, - "y": 436.3791492992222, - "strokeColor": "transparent", - "backgroundColor": "#ffffff", - "width": 12.139518145657602, - "height": 43.79942340340581, - "seed": 1059097402, - "groupIds": [ - "RWtC1ikS_VQ9hlNXii0g-", - "6q-raF-CZCIZYVp8CEwvt" - ], - "strokeSharpness": "round", - "boundElements": [], - "updated": 1662376774000, - "link": null, - "locked": false - }, - { - "type": "text", - "version": 1633, - "versionNonce": 74515578, - "isDeleted": false, - "id": "70vSMdmQQEt10U5qzF72m", - "fillStyle": "cross-hatch", - "strokeWidth": 2, - "strokeStyle": "solid", - "roughness": 2, - "opacity": 100, - "angle": 6.2519454737493145, - "x": 956.0000000000001, - "y": 445.00000000000006, - "strokeColor": "#000000", - "backgroundColor": "transparent", - "width": 60, - "height": 26, - "seed": 1584506, - "groupIds": [], - "strokeSharpness": "sharp", - "boundElements": [ - { - "id": "RN13O3v7s67B4r3OLdUG1", - "type": "arrow" - } - ], - "updated": 1662376783993, - "link": null, - "locked": false, - "fontSize": 20.54864706710939, - "fontFamily": 1, - "text": "deploy", - "baseline": 18, - "textAlign": "center", - "verticalAlign": "top", - "containerId": null, - "originalText": "deploy" - } - ], - "appState": { - "gridSize": null, - "viewBackgroundColor": "#ffffff" - }, - "files": {} -} \ No newline at end of file diff --git a/excalidraw/workshop_architecture_prepare.excalidraw b/excalidraw/workshop_architecture_prepare.excalidraw deleted file mode 100644 index 075bb6c..0000000 --- a/excalidraw/workshop_architecture_prepare.excalidraw +++ /dev/null @@ -1,5467 +0,0 @@ -{ - "type": "excalidraw", - "version": 2, - "source": "https://excalidraw.com", - "elements": [ - { - "type": "rectangle", - "version": 228, - "versionNonce": 300670842, - "isDeleted": false, - "id": "eRALweam41mM0DJnwBGGj", - "fillStyle": "cross-hatch", - "strokeWidth": 2, - "strokeStyle": "solid", - "roughness": 1, - "opacity": 100, - "angle": 0, - "x": 321, - "y": 92, - "strokeColor": "#000000", - "backgroundColor": "transparent", - "width": 1567, - "height": 789, - "seed": 1623179475, - "groupIds": [], - "strokeSharpness": "sharp", - "boundElements": [], - "updated": 1662370182112, - "link": null, - "locked": false - }, - { - "type": "text", - "version": 235, - "versionNonce": 1995825210, - "isDeleted": false, - "id": "AK892q6caE6tpWTkF5uAE", - "fillStyle": "cross-hatch", - "strokeWidth": 2, - "strokeStyle": "solid", - "roughness": 1, - "opacity": 90, - "angle": 0, - "x": 717, - "y": 86, - "strokeColor": "#000000", - "backgroundColor": "transparent", - "width": 758.9142857142855, - "height": 57.00000000000001, - "seed": 354860339, - "groupIds": [], - "strokeSharpness": "sharp", - "boundElements": [], - "updated": 1662370182112, - "link": null, - "locked": false, - "fontSize": 45.6, - "fontFamily": 1, - "text": "DevSecOps Workshop Architecture", - "baseline": 40.00000000000001, - "textAlign": "center", - "verticalAlign": "top", - "containerId": null, - "originalText": "DevSecOps Workshop Architecture" - }, - { - "type": "rectangle", - "version": 664, - "versionNonce": 67295334, - "isDeleted": false, - "id": "8WrqvqiAjc00nYNjo9gZk", - "fillStyle": "cross-hatch", - "strokeWidth": 2, - "strokeStyle": "solid", - "roughness": 1, - "opacity": 90, - "angle": 0, - "x": 570, - "y": 139, - "strokeColor": "#000000", - "backgroundColor": "transparent", - "width": 1281, - "height": 704, - "seed": 1254526419, - "groupIds": [], - "strokeSharpness": "sharp", - "boundElements": [], - "updated": 1662370182112, - "link": null, - "locked": false - }, - { - "type": "line", - "version": 4393, - "versionNonce": 1417791738, - "isDeleted": false, - "id": "wntYgz6uM6s_HBN_KMR65", - "fillStyle": "hachure", - "strokeWidth": 2, - "strokeStyle": "solid", - "roughness": 1, - "opacity": 90, - "angle": 0, - "x": 320.5892304662775, - "y": 65.49173531033286, - "strokeColor": "#c92a2a", - "backgroundColor": "#fa5252", - "width": 130.6580031652458, - "height": 93.55764515124328, - "seed": 717152627, - "groupIds": [ - "g_ZYKV0PmWmJecyAyG0vE" - ], - "strokeSharpness": "round", - "boundElements": [], - "updated": 1662370182112, - "link": null, - "locked": false, - "startBinding": null, - "endBinding": null, - "lastCommittedPoint": null, - "startArrowhead": null, - "endArrowhead": null, - "points": [ - [ - 0, - 0 - ], - [ - 6.751631440482483, - -21.744604760402623 - ], - [ - 12.071098636014012, - -38.24051182001862 - ], - [ - 18.20894540008893, - -49.35058995627114 - ], - [ - 27.006525761929773, - -51.276549057875634 - ], - [ - 38.05464993726463, - -45.7889736593089 - ], - [ - 49.30736900473541, - -53.271073770767785 - ], - [ - 68.33469397336775, - -50.612442114730406 - ], - [ - 102.50204096005159, - -39.927593223842734 - ], - [ - 115.80070894888058, - -28.30547688638609 - ], - [ - 130.6580031652458, - 28.060398329301506 - ], - [ - 111.81824232503068, - 40.286571380475486 - ], - [ - 72.14386401439745, - 36.91440176652914 - ], - [ - 17.18597093940944, - 18.485072139848473 - ], - [ - 0, - 0 - ] - ] - }, - { - "type": "line", - "version": 4577, - "versionNonce": 68606886, - "isDeleted": false, - "id": "JyadeZaz-nApBsaSLy5p6", - "fillStyle": "hachure", - "strokeWidth": 2, - "strokeStyle": "solid", - "roughness": 1, - "opacity": 90, - "angle": 0, - "x": 319.2790907030394, - "y": 70.7991843340742, - "strokeColor": "#c92a2a", - "backgroundColor": "#fa5252", - "width": 216.87058566398125, - "height": 105.98015412636072, - "seed": 238052157, - "groupIds": [ - "g_ZYKV0PmWmJecyAyG0vE" - ], - "strokeSharpness": "round", - "boundElements": [], - "updated": 1662370182112, - "link": null, - "locked": false, - "startBinding": null, - "endBinding": null, - "lastCommittedPoint": null, - "startArrowhead": null, - "endArrowhead": null, - "points": [ - [ - 0, - 0 - ], - [ - -19.027324968632406, - 3.2735182741733384 - ], - [ - -32.53058784959727, - 7.5700110090258 - ], - [ - -40.714383535030386, - 19.027324968632367 - ], - [ - -40.305193750758825, - 39.282219290079546 - ], - [ - -25.36976662484299, - 58.309544258712016 - ], - [ - 7.774605901161586, - 81.01957728578927 - ], - [ - 74.67713562957849, - 103.93420520500231 - ], - [ - 127.87180758489482, - 105.98015412636072 - ], - [ - 165.92645752215952, - 89.2033729712225 - ], - [ - 176.1562021289509, - 64.03820123851503 - ], - [ - 161.425369895171, - 38.05464993726463 - ], - [ - 136.66938794673536, - 25.36976662484304 - ], - [ - 138.53203043061052, - 34.30658204206115 - ], - [ - 136.66289389782435, - 46.66466617069298 - ], - [ - 123.19518701709988, - 53.308145840076726 - ], - [ - 102.76773799801693, - 57.02513045099989 - ], - [ - 69.97145311045328, - 50.813408468305106 - ], - [ - 30.689233820376245, - 36.692103220002295 - ], - [ - 11.61922442992149, - 25.902010098469074 - ], - [ - -0.6265577491993763, - 11.526931487294902 - ], - [ - 0, - 0 - ] - ] - }, - { - "type": "line", - "version": 3849, - "versionNonce": 303208890, - "isDeleted": false, - "id": "7SyGlpzJiL-b6p38pAfBy", - "fillStyle": "hachure", - "strokeWidth": 2, - "strokeStyle": "solid", - "roughness": 1, - "opacity": 90, - "angle": 0, - "x": 321.0994122611919, - "y": 64.29856312402173, - "strokeColor": "#000000", - "backgroundColor": "#111111", - "width": 139.45788662720503, - "height": 62.401442101428636, - "seed": 1978153747, - "groupIds": [ - "g_ZYKV0PmWmJecyAyG0vE" - ], - "strokeSharpness": "round", - "boundElements": [], - "updated": 1662370182112, - "link": null, - "locked": false, - "startBinding": null, - "endBinding": null, - "lastCommittedPoint": null, - "startArrowhead": null, - "endArrowhead": null, - "points": [ - [ - 0, - 0 - ], - [ - 22.804818964804006, - 21.687058566398193 - ], - [ - 86.12085708379372, - 41.73735799570947 - ], - [ - 125.37374612577968, - 38.463839721536395 - ], - [ - 130.37165585906067, - 26.392741085522232 - ], - [ - 135.7254606218297, - 45.82925583842618 - ], - [ - 128.13291561740596, - 58.104949366576136 - ], - [ - 104.83377820588099, - 62.401442101428636 - ], - [ - 71.03520296880636, - 58.923328935119315 - ], - [ - 24.796399983098315, - 43.16952224066042 - ], - [ - 1.590617998009283, - 24.551387056299777 - ], - [ - -3.7324260053752747, - 14.321642449508143 - ], - [ - 0, - 0 - ] - ] - }, - { - "type": "line", - "version": 664, - "versionNonce": 1095268070, - "isDeleted": false, - "id": "f5KYH-B9kAnWXXo51R9-H", - "fillStyle": "cross-hatch", - "strokeWidth": 1, - "strokeStyle": "solid", - "roughness": 1, - "opacity": 100, - "angle": 0, - "x": 1812.0073727222634, - "y": 145.00498424785317, - "strokeColor": "#db212f", - "backgroundColor": "#db212f", - "width": 15.057127222627372, - "height": 12.261063255147196, - "seed": 300826365, - "groupIds": [ - "XlWWhul_UJlIc-Kn2RdKM", - "-Hi40yyCOS2FYhEDrTPcO" - ], - "strokeSharpness": "sharp", - "boundElements": [], - "updated": 1662370182112, - "link": null, - "locked": false, - "lastCommittedPoint": null, - "startArrowhead": null, - "endArrowhead": null, - "points": [ - [ - 0, - 0 - ], - [ - -14.616681342596005, - 5.324819892381999 - ], - [ - -14.616681342596005, - 5.324819892381999 - ], - [ - -14.17376881036628, - 8.82008778368913 - ], - [ - -13.456338021439967, - 12.259542418501105 - ], - [ - 0.44044588003136376, - 7.197468058759137 - ], - [ - 0.44044588003136376, - 7.197468058759137 - ], - [ - -0.011390342271196507, - 3.6270215909966614 - ], - [ - 0.015188088638847574, - -0.0015208366460921496 - ] - ] - }, - { - "type": "line", - "version": 663, - "versionNonce": 785076858, - "isDeleted": false, - "id": "bc07NLfZ6wBrmPN4gV5sW", - "fillStyle": "cross-hatch", - "strokeWidth": 1, - "strokeStyle": "solid", - "roughness": 1, - "opacity": 100, - "angle": 0, - "x": 1876.872135362504, - "y": 128.39985372330213, - "strokeColor": "#db212f", - "backgroundColor": "#db212f", - "width": 18.197948925199313, - "height": 11.115906574214128, - "seed": 2052520787, - "groupIds": [ - "XlWWhul_UJlIc-Kn2RdKM", - "-Hi40yyCOS2FYhEDrTPcO" - ], - "strokeSharpness": "sharp", - "boundElements": [], - "updated": 1662370182112, - "link": null, - "locked": false, - "lastCommittedPoint": null, - "startArrowhead": null, - "endArrowhead": null, - "points": [ - [ - 0, - 0 - ], - [ - 0, - 0 - ], - [ - -1.6547050329147124, - -3.099058079854779 - ], - [ - -3.5691168220090894, - -6.056870990932633 - ], - [ - -18.197948925199313, - -0.7320496501346963 - ], - [ - -18.197948925199313, - -0.7320496501346963 - ], - [ - -15.849545397116387, - 2.0319304577765314 - ], - [ - -13.899821229515979, - 5.059035583281502 - ], - [ - 0, - 0 - ] - ] - }, - { - "type": "line", - "version": 664, - "versionNonce": 1948559910, - "isDeleted": false, - "id": "WI1EejQvjeUV9LSZ1ot1W", - "fillStyle": "cross-hatch", - "strokeWidth": 1, - "strokeStyle": "solid", - "roughness": 1, - "opacity": 100, - "angle": 0, - "x": 1844.741511980074, - "y": 124.46697546257788, - "strokeColor": "#db212f", - "backgroundColor": "#db212f", - "width": 75.81253322810664, - "height": 45.04589164255064, - "seed": 925325149, - "groupIds": [ - "pBHxrM3AqO8CWPQXmIOZ-", - "-Hi40yyCOS2FYhEDrTPcO" - ], - "strokeSharpness": "sharp", - "boundElements": [], - "updated": 1662370182112, - "link": null, - "locked": false, - "lastCommittedPoint": null, - "startArrowhead": null, - "endArrowhead": null, - "points": [ - [ - 0, - 0 - ], - [ - 0, - 0 - ], - [ - 4.259402849426743, - 2.4949658314576624 - ], - [ - 7.903704041554605, - 5.630095259725732 - ], - [ - 22.53405408455911, - 0.3052739189279503 - ], - [ - 22.53405408455911, - 0.3052739189279503 - ], - [ - 19.138173592281127, - -3.8673601303844958 - ], - [ - 15.24909012092732, - -7.552422641459149 - ], - [ - 10.918506322800576, - -10.706893490825568 - ], - [ - 6.19811905654128, - -13.287754727637926 - ], - [ - 2.234222009527124, - -14.897026214166894 - ], - [ - -1.7961109758512919, - -16.07522705437966 - ], - [ - -5.864716901740125, - -16.83260913568656 - ], - [ - -9.943409595632126, - -17.179423621290262 - ], - [ - -14.004023162841754, - -17.12592239860094 - ], - [ - -18.01837722452531, - -16.682356992925172 - ], - [ - -21.95830009233396, - -15.858980015881567 - ], - [ - -25.795617181087014, - -14.666041906464322 - ], - [ - -29.502151008772366, - -13.113795638395903 - ], - [ - -33.049732783873026, - -11.212492012774932 - ], - [ - -36.410182127544914, - -8.972383641219674 - ], - [ - -39.55533024827102, - -6.4037216869325295 - ], - [ - -42.4569982156232, - -3.5167565889083434 - ], - [ - -45.087012892836896, - -0.32174240718104485 - ], - [ - -47.41720114314734, - 3.171070419254548 - ], - [ - -49.41938765716614, - 6.951430002988154 - ], - [ - -51.37716284428783, - 11.962969133604677 - ], - [ - -52.667513799822046, - 17.163459905961766 - ], - [ - -53.278479143547536, - 22.486695231400166 - ], - [ - -53.19809749524285, - 27.866468021260374 - ], - [ - -38.56622733980009, - 22.543163171861146 - ], - [ - -38.56622733980009, - 22.543163171861146 - ], - [ - -37.78918554801086, - 17.799841688978947 - ], - [ - -36.131632929528294, - 13.151064102512025 - ], - [ - -33.31672507179529, - 8.424778886897506 - ], - [ - -29.722953315129445, - 4.472764643544799 - ], - [ - -25.496669942606843, - 1.348259345561452 - ], - [ - -20.784231582550888, - -0.8955077244395149 - ], - [ - -15.731989069621903, - -2.2052985933502995 - ], - [ - -10.486301928975067, - -2.5278810817263966 - ], - [ - -5.193520995270404, - -1.8100201132916165 - ], - [ - 5.684352728102526e-14, - 0.0015193882302124706 - ] - ] - }, - { - "type": "line", - "version": 663, - "versionNonce": 1299116858, - "isDeleted": false, - "id": "6oij0WK_m7aP1lp6Uqqr7", - "fillStyle": "cross-hatch", - "strokeWidth": 1, - "strokeStyle": "solid", - "roughness": 1, - "opacity": 100, - "angle": 0, - "x": 1799.8921534112642, - "y": 156.69499793638806, - "strokeColor": "#db212f", - "backgroundColor": "#db212f", - "width": 21.135260958288036, - "height": 19.23375745127928, - "seed": 857872627, - "groupIds": [ - "xe1BDv0Ik6eS3i_ZaaVrg", - "-Hi40yyCOS2FYhEDrTPcO" - ], - "strokeSharpness": "sharp", - "boundElements": [], - "updated": 1662370182112, - "link": null, - "locked": false, - "lastCommittedPoint": null, - "startArrowhead": null, - "endArrowhead": null, - "points": [ - [ - 0, - 0 - ], - [ - -13.901339169330232, - 5.060556419927578 - ], - [ - -13.901339169330232, - 5.060556419927578 - ], - [ - -12.769757584931266, - 8.810053158656753 - ], - [ - -11.295882201859168, - 12.43895479343112 - ], - [ - -9.490534497058649, - 15.92119563255274 - ], - [ - -7.364535585370593, - 19.230721571650527 - ], - [ - 7.233921788957807, - 13.915012214986383 - ], - [ - 7.233921788957807, - 13.915012214986383 - ], - [ - 4.6748345876696735, - 10.861247547283575 - ], - [ - 2.596717045159691, - 7.486259005275251 - ], - [ - 1.0287214273092773, - 3.84613504446863 - ], - [ - -7.105427357601002e-15, - -0.003035879628753513 - ] - ] - }, - { - "type": "line", - "version": 662, - "versionNonce": 999847270, - "isDeleted": false, - "id": "lXLhUsF6cIPdCalY9LsXj", - "fillStyle": "cross-hatch", - "strokeWidth": 1, - "strokeStyle": "solid", - "roughness": 1, - "opacity": 100, - "angle": 0, - "x": 1860.513037699569, - "y": 151.0961531026524, - "strokeColor": "#db212f", - "backgroundColor": "#db212f", - "width": 75.78996437438275, - "height": 45.03934263026952, - "seed": 442393533, - "groupIds": [ - "PDMHehvMnDWQoTOJluHvO", - "-Hi40yyCOS2FYhEDrTPcO" - ], - "strokeSharpness": "sharp", - "boundElements": [], - "updated": 1662370182112, - "link": null, - "locked": false, - "lastCommittedPoint": null, - "startArrowhead": null, - "endArrowhead": null, - "points": [ - [ - 0, - 0 - ], - [ - 0, - 0 - ], - [ - -0.7979612619600112, - 4.809693690948873 - ], - [ - -2.454340663601258, - 9.395140742641292 - ], - [ - -5.269186239452615, - 14.121420164592262 - ], - [ - -8.862810257701469, - 18.07341123329136 - ], - [ - -13.088905336163094, - 21.197864388304026 - ], - [ - -17.801175679979963, - 23.441518481868417 - ], - [ - -22.853313906967415, - 24.751129747213415 - ], - [ - -28.09903291276312, - 25.073442830240726 - ], - [ - -33.392019521518975, - 24.3552023768524 - ], - [ - -38.5859779383772, - 22.543164620276947 - ], - [ - -42.80189644705284, - 20.093852856518723 - ], - [ - -46.506385111553286, - 16.92369928449945 - ], - [ - -61.10484103746573, - 22.239408641163465 - ], - [ - -61.10484103746573, - 22.239408641163465 - ], - [ - -57.800106458011086, - 26.318906654269917 - ], - [ - -53.96413349916998, - 29.986486785993755 - ], - [ - -49.617567880516816, - 33.17992509127249 - ], - [ - -44.781055321626326, - 35.83699762504376 - ], - [ - -40.81719303659254, - 37.44623398748825 - ], - [ - -36.786952749828814, - 38.62433488700707 - ], - [ - -32.71850035602038, - 39.38156669516916 - ], - [ - -28.639998853021027, - 39.72818998988028 - ], - [ - -24.579617032347983, - 39.6744595553821 - ], - [ - -20.565517891854626, - 39.23063596958054 - ], - [ - -16.62587311988986, - 38.40698560404443 - ], - [ - -12.788839920643921, - 37.21376324301611 - ], - [ - -9.082587085634232, - 35.66123525806417 - ], - [ - -5.535283406377404, - 33.759656433431 - ], - [ - -2.1750860870640736, - 31.519293140685605 - ], - [ - 0.9698302871254398, - 28.950400164069887 - ], - [ - 3.871302718337546, - 26.063238081489523 - ], - [ - 6.501168208718221, - 22.868073264513562 - ], - [ - 8.831263760414274, - 19.375166291047492 - ], - [ - 10.833414788244482, - 15.594771945333305 - ], - [ - 12.79060698798517, - 10.58564008186536 - ], - [ - 14.078509396519241, - 5.387200266356471 - ], - [ - 14.685123336917002, - 0.06607093756920435 - ], - [ - 14.5984559259125, - -5.3111526403892615 - ], - [ - 0.0030358796286549246, - 0.0015208366460797156 - ], - [ - 0, - 0 - ] - ] - }, - { - "type": "line", - "version": 663, - "versionNonce": 1080065018, - "isDeleted": false, - "id": "t6zC6Ks9wMbXlSd_IkbXg", - "fillStyle": "cross-hatch", - "strokeWidth": 1, - "strokeStyle": "solid", - "roughness": 1, - "opacity": 100, - "angle": 0, - "x": 1864.2912948506817, - "y": 133.40343309301588, - "strokeColor": "#db212f", - "backgroundColor": "#db212f", - "width": 18.000512463389445, - "height": 20.36979635441513, - "seed": 200835731, - "groupIds": [ - "OATV6O3C6Jj4jKAau1-nj", - "-Hi40yyCOS2FYhEDrTPcO" - ], - "strokeSharpness": "sharp", - "boundElements": [], - "updated": 1662370182112, - "link": null, - "locked": false, - "lastCommittedPoint": null, - "startArrowhead": null, - "endArrowhead": null, - "points": [ - [ - 0, - 0 - ], - [ - -13.901339169330214, - 5.060556419927573 - ], - [ - -13.901339169330214, - 5.060556419927573 - ], - [ - -12.224351706926663, - 8.65100840745738 - ], - [ - -11.082304774830863, - 12.441228806321043 - ], - [ - -10.499259457199686, - 16.36842299560986 - ], - [ - -10.499282631853335, - 20.369796354415122 - ], - [ - 4.099173294059227, - 15.058646610857604 - ], - [ - 4.099173294059227, - 15.058646610857604 - ], - [ - 3.6036702306080626, - 11.15686632613269 - ], - [ - 2.749359798287061, - 7.328845170326803 - ], - [ - 1.544781856967882, - 3.6010601852401734 - ], - [ - -0.0015179398143487788, - 1.0842021724855044e-19 - ] - ] - }, - { - "type": "rectangle", - "version": 888, - "versionNonce": 1022501434, - "isDeleted": false, - "id": "YbM8xe6NaFlLoIbF5ZNkj", - "fillStyle": "cross-hatch", - "strokeWidth": 2, - "strokeStyle": "solid", - "roughness": 1, - "opacity": 90, - "angle": 0, - "x": 735, - "y": 185, - "strokeColor": "#000000", - "backgroundColor": "transparent", - "width": 96, - "height": 61, - "seed": 580511379, - "groupIds": [], - "strokeSharpness": "sharp", - "boundElements": [ - { - "id": "7Syn5DvjY3mv9SneA2hDa", - "type": "arrow" - } - ], - "updated": 1662376547510, - "link": null, - "locked": false - }, - { - "type": "text", - "version": 545, - "versionNonce": 362998970, - "isDeleted": false, - "id": "iuxdb0W-9J_Gkd_DYbuW_", - "fillStyle": "cross-hatch", - "strokeWidth": 2, - "strokeStyle": "solid", - "roughness": 1, - "opacity": 90, - "angle": 0, - "x": 758.5, - "y": 147.5, - "strokeColor": "#000000", - "backgroundColor": "transparent", - "width": 37, - "height": 35, - "seed": 81439549, - "groupIds": [], - "strokeSharpness": "sharp", - "boundElements": [], - "updated": 1662370182112, - "link": null, - "locked": false, - "fontSize": 28, - "fontFamily": 1, - "text": "git", - "baseline": 25, - "textAlign": "center", - "verticalAlign": "top", - "containerId": null, - "originalText": "git" - }, - { - "type": "line", - "version": 1019, - "versionNonce": 1004196838, - "isDeleted": false, - "id": "Q8EB985YDHetJxeoUp0Vw", - "fillStyle": "cross-hatch", - "strokeWidth": 1, - "strokeStyle": "solid", - "roughness": 0, - "opacity": 100, - "angle": 0, - "x": 759.3375385298189, - "y": 197.05127472665572, - "strokeColor": "#428f29", - "backgroundColor": "#609926", - "width": 66.5027317863492, - "height": 41.006360360924916, - "seed": 2142521811, - "groupIds": [ - "zl1s8cNmh8UrJcf74pI-f" - ], - "strokeSharpness": "sharp", - "boundElements": [], - "updated": 1662370182112, - "link": null, - "locked": false, - "lastCommittedPoint": null, - "startArrowhead": null, - "endArrowhead": null, - "points": [ - [ - 0, - 0 - ], - [ - 0, - 0 - ], - [ - -1.9819704021413749, - 0.1700804476166412 - ], - [ - -4.021831182534616, - 0.7059082463466613 - ], - [ - -5.030615013067983, - 1.1176989561642738 - ], - [ - -6.014442852708516, - 1.6289927770316832 - ], - [ - -6.9601750754113105, - 2.242479147921579 - ], - [ - -7.854667456926681, - 2.9608434205133602 - ], - [ - -8.68477832756329, - 3.7867791210730144 - ], - [ - -9.437364995806295, - 4.722969557633341 - ], - [ - -10.099284770140986, - 5.772108256460275 - ], - [ - -10.657395980875966, - 6.9368785255865895 - ], - [ - -11.098555936496442, - 8.21997389127839 - ], - [ - -11.40962220094355, - 9.624079705214903 - ], - [ - -11.577452593614222, - 11.15188745001558 - ], - [ - -11.588904422993668, - 12.806082477359743 - ], - [ - -11.336825464130218, - 15.34153676334101 - ], - [ - -10.822590324842285, - 17.589778994775504 - ], - [ - -10.075910561744195, - 19.568065723855852 - ], - [ - -9.12649824236198, - 21.293639197248098 - ], - [ - -8.004065178765881, - 22.783760054438325 - ], - [ - -6.738322927570264, - 24.05567667303228 - ], - [ - -5.358984067212862, - 25.126637430636144 - ], - [ - -3.8957586215729645, - 26.01389479214918 - ], - [ - -2.378360190911682, - 26.734705309764024 - ], - [ - -0.8365003318433182, - 27.30631327379341 - ], - [ - 0.7001093990176681, - 27.745975236429842 - ], - [ - 2.2017574450569644, - 28.07093957527943 - ], - [ - 3.6387312278367414, - 28.298458755241516 - ], - [ - 4.981321234389505, - 28.445785241215386 - ], - [ - 6.199812842630774, - 28.530167410807024 - ], - [ - 7.264495517769529, - 28.56885772891568 - ], - [ - 7.435231975956343, - 29.14575056314516 - ], - [ - 7.7258916623775775, - 29.854327811998132 - ], - [ - 8.125992713438439, - 30.672101187894526 - ], - [ - 8.625047134604204, - 31.576578315960653 - ], - [ - 9.87808658922341, - 33.555678416402095 - ], - [ - 11.401132637362723, - 35.611693201627844 - ], - [ - 13.110309933796094, - 37.564700021823626 - ], - [ - 14.921747220591012, - 39.234768052587974 - ], - [ - 15.839600015888385, - 39.90747112839627 - ], - [ - 16.751565065228064, - 40.44196238222666 - ], - [ - 17.647156417721916, - 40.81575761379161 - ], - [ - 18.515890166128166, - 41.006360360924916 - ], - [ - 38.41932239020985, - 41.00636036092489 - ], - [ - 38.41932239020985, - 41.00636036092489 - ], - [ - 39.52905929908097, - 40.811310638712186 - ], - [ - 40.61893604994564, - 40.40327615141114 - ], - [ - 41.68664740939881, - 39.79659921111167 - ], - [ - 42.72989631862134, - 39.005626217197076 - ], - [ - 43.74637345691538, - 38.044703569050476 - ], - [ - 44.733789940047984, - 36.92816540417523 - ], - [ - 45.68983236002843, - 35.67036629654137 - ], - [ - 46.61220774533085, - 34.285644470945215 - ], - [ - 47.498614949843414, - 32.78834632677018 - ], - [ - 48.3467528274542, - 31.19281826339949 - ], - [ - 49.919011930229885, - 27.76443345284421 - ], - [ - 51.310579972055685, - 24.11524488517218 - ], - [ - 52.503051871330385, - 20.36000740627583 - ], - [ - 53.478018459157994, - 16.613467687461423 - ], - [ - 54.21707465393703, - 12.990384661914874 - ], - [ - 54.701811286772546, - 9.605507044588766 - ], - [ - 54.84305996765153, - 8.038254876070912 - ], - [ - 54.91382736335554, - 6.5735876377294815 - ], - [ - 54.91180824047939, - 5.225847641654507 - ], - [ - 54.83471371479084, - 4.009379243582792 - ], - [ - 54.68023037829856, - 2.938526799250514 - ], - [ - 54.44606117218366, - 2.0276346643947214 - ], - [ - 54.129900863041016, - 1.2910451511050063 - ], - [ - 53.72946056663854, - 0.7431046587646399 - ], - [ - 53.24243504957106, - 0.3981554994636305 - ], - [ - 52.66651499114012, - 0.2705440725852277 - ], - [ - 50.38399467468378, - 0.3905470030386695 - ], - [ - 48.230493857637555, - 0.5018113004773248 - ], - [ - 46.19825894466584, - 0.6044330162933456 - ], - [ - 44.279552689605055, - 0.6985163764650153 - ], - [ - 40.75173220833915, - 0.8614624536761077 - ], - [ - 37.58507313513575, - 0.9914424670054487 - ], - [ - 34.71760392941139, - 1.089257525934066 - ], - [ - 32.08736939975574, - 1.1557066962966545 - ], - [ - 29.632402092878237, - 1.1915849566344754 - ], - [ - 27.290742730075316, - 1.1976913727821934 - ], - [ - 22.699482110825095, - 1.1237828921989905 - ], - [ - 20.32595820967701, - 1.0453620398440044 - ], - [ - 17.81788470132205, - 0.9403656066372221 - ], - [ - 15.11330230705643, - 0.809586527473364 - ], - [ - 12.150247660883139, - 0.6538238681870236 - ], - [ - 8.866755353158485, - 0.4738766946127946 - ], - [ - 7.0854822907078265, - 0.3750827289456167 - ], - [ - 5.200864061532112, - 0.2705440725852437 - ], - [ - 4.105790317272589, - 0.22292301867815878 - ], - [ - 2.8497467020987655, - 0.1318560809408833 - ], - [ - 1.4690467730818961, - 0.042497631791162616 - ], - [ - 0, - 0 - ], - [ - 0, - 0 - ] - ] - }, - { - "type": "line", - "version": 1002, - "versionNonce": 584664442, - "isDeleted": false, - "id": "lGMXFgtMaMylvK7rWo7vG", - "fillStyle": "solid", - "strokeWidth": 1, - "strokeStyle": "solid", - "roughness": 0, - "opacity": 100, - "angle": 0, - "x": 760.6720418266365, - "y": 202.11820636226628, - "strokeColor": "#428f29", - "backgroundColor": "#FFFFFF", - "width": 12.320199869673417, - "height": 18.184807149251014, - "seed": 1005334749, - "groupIds": [ - "zl1s8cNmh8UrJcf74pI-f" - ], - "strokeSharpness": "sharp", - "boundElements": [], - "updated": 1662370182112, - "link": null, - "locked": false, - "lastCommittedPoint": null, - "startArrowhead": null, - "endArrowhead": null, - "points": [ - [ - 0, - 0 - ], - [ - 0, - 0 - ], - [ - 0.29448232745354375, - 2.6187410609760664 - ], - [ - 0.6405902343969956, - 5.014246425338673 - ], - [ - 1.0471563615902326, - 7.2487553513807 - ], - [ - 1.5230133497931106, - 9.384511184688263 - ], - [ - 2.717931494090582, - 13.608722649918137 - ], - [ - 3.4546620189981816, - 15.82166088571943 - ], - [ - 4.296017033424848, - 18.184807149251014 - ], - [ - 2.0584283319027072, - 17.818516188132502 - ], - [ - -0.05507116771784126, - 17.29105916602271 - ], - [ - -2.0054805130394264, - 16.552538406662148 - ], - [ - -3.7537915989014934, - 15.553035797325172 - ], - [ - -4.5399712196319015, - 14.939819187791205 - ], - [ - -5.260998363790126, - 14.242645487165886 - ], - [ - -5.9119989341498105, - 13.455265224036966 - ], - [ - -6.488096789837993, - 12.571449363458553 - ], - [ - -6.984415789981686, - 11.584956608605028 - ], - [ - -7.39608081553121, - 10.48954361900395 - ], - [ - -7.718214703790242, - 9.278975228769639 - ], - [ - -7.945942846620827, - 7.947014228369632 - ], - [ - -8.024182836248567, - 6.4582932691250114 - ], - [ - -7.856660523308257, - 5.005164459689245 - ], - [ - -7.413178985109507, - 3.6405909462753625 - ], - [ - -6.663539766226968, - 2.4175481369762 - ], - [ - -6.164475126828098, - 1.8756507077379005 - ], - [ - -5.577546965793577, - 1.388997134358164 - ], - [ - -4.898980667787072, - 0.9642108755835823 - ], - [ - -4.125001617472318, - 0.6079113028674633 - ], - [ - -3.2518351995130104, - 0.326717787663117 - ], - [ - -2.2757067985728305, - 0.12725583236376134 - ], - [ - -1.1928407774922007, - 0.016142764776073733 - ], - [ - 0.0005354354185769239, - -3.17415905654013e-16 - ], - [ - 0, - 0 - ] - ] - }, - { - "type": "line", - "version": 1056, - "versionNonce": 107177766, - "isDeleted": false, - "id": "Ut5FMjc52z6fgsL0J6BGw", - "fillStyle": "solid", - "strokeWidth": 1, - "strokeStyle": "solid", - "roughness": 0, - "opacity": 100, - "angle": 0, - "x": 787.9164628574821, - "y": 210.2172928355925, - "strokeColor": "#428f29", - "backgroundColor": "#ffffff", - "width": 1.7480862847321295, - "height": 12.703759133952614, - "seed": 1825675123, - "groupIds": [ - "hnittqP4OOF9j9Lcenkuc", - "zl1s8cNmh8UrJcf74pI-f" - ], - "strokeSharpness": "sharp", - "boundElements": [], - "updated": 1662370182112, - "link": null, - "locked": false, - "lastCommittedPoint": null, - "startArrowhead": null, - "endArrowhead": null, - "points": [ - [ - 0, - 0 - ], - [ - 1.7362985309369154, - 0.8619897145081872 - ], - [ - 1.7362985309369154, - -11.841769419444425 - ], - [ - -0.011787753795213948, - -11.841769419444425 - ], - [ - 0, - 0 - ] - ] - }, - { - "type": "rectangle", - "version": 1083, - "versionNonce": 289834554, - "isDeleted": false, - "id": "lYxoc6qsCbufQWfkaYPjn", - "fillStyle": "solid", - "strokeWidth": 1, - "strokeStyle": "solid", - "roughness": 0, - "opacity": 100, - "angle": 0.5235987755982983, - "x": 779.0262304756161, - "y": 209.01417476491508, - "strokeColor": "#428f29", - "backgroundColor": "#fff", - "width": 16.75036748829949, - "height": 16.75036748829949, - "seed": 877399357, - "groupIds": [ - "zl1s8cNmh8UrJcf74pI-f" - ], - "strokeSharpness": "round", - "boundElements": [], - "updated": 1662370182112, - "link": null, - "locked": false - }, - { - "type": "line", - "version": 1099, - "versionNonce": 1895273062, - "isDeleted": false, - "id": "W9GQ91KbkZiI8PMWjEt3V", - "fillStyle": "cross-hatch", - "strokeWidth": 1, - "strokeStyle": "solid", - "roughness": 0, - "opacity": 100, - "angle": 0, - "x": 787.5675536338199, - "y": 213.27043987335145, - "strokeColor": "#609926", - "backgroundColor": "none", - "width": 3.9928709593189584, - "height": 8.607162705368937, - "seed": 271855891, - "groupIds": [ - "S0CmrEuo-ZXU3htKaoIxB", - "zl1s8cNmh8UrJcf74pI-f" - ], - "strokeSharpness": "sharp", - "boundElements": [], - "updated": 1662370182112, - "link": null, - "locked": false, - "lastCommittedPoint": null, - "startArrowhead": null, - "endArrowhead": null, - "points": [ - [ - 0, - 0 - ], - [ - 0, - 0 - ], - [ - 0.8708256796103779, - 0.45456506781286815 - ], - [ - 1.6286245156968555, - 0.842039937231826 - ], - [ - 2.2760685651818604, - 1.1791900911006858 - ], - [ - 2.8158269742504354, - 1.4827653083640089 - ], - [ - 3.250574710562407, - 1.7695310718656039 - ], - [ - 3.582983831040201, - 2.0562403013298867 - ], - [ - 3.8157205711314752, - 2.359655338820815 - ], - [ - 3.9514598984960405, - 2.6965322448426505 - ], - [ - 3.9928709593189584, - 3.083627079899658 - ], - [ - 3.9426287212600317, - 3.5377021860557947 - ], - [ - 3.803399419766926, - 4.075513623815322 - ], - [ - 3.577858022499456, - 4.713820594462351 - ], - [ - 3.268676586380058, - 5.469382299280998 - ], - [ - 2.878524257593769, - 6.358951657995674 - ], - [ - 2.410073093063024, - 7.399294153450177 - ], - [ - 1.8659951497102514, - 8.607162705368937 - ] - ] - }, - { - "type": "line", - "version": 1142, - "versionNonce": 1775087354, - "isDeleted": false, - "id": "1wLhwqt45xhbe4vgxY7NZ", - "fillStyle": "cross-hatch", - "strokeWidth": 1, - "strokeStyle": "solid", - "roughness": 0, - "opacity": 100, - "angle": 0, - "x": 787.19375468775, - "y": 207.89598632136608, - "strokeColor": "#428f29", - "backgroundColor": "#428f29", - "width": 7.847296587542959, - "height": 13.752717991875608, - "seed": 1630625181, - "groupIds": [ - "1pSuO6LCaukkQ9UMQK_hA", - "zl1s8cNmh8UrJcf74pI-f" - ], - "strokeSharpness": "sharp", - "boundElements": [], - "updated": 1662370182112, - "link": null, - "locked": false, - "lastCommittedPoint": null, - "startArrowhead": null, - "endArrowhead": null, - "points": [ - [ - 0, - 0 - ], - [ - 1.43889895103068, - 0.4763351483960596 - ], - [ - -5.121574659356895, - 13.7527179918756 - ], - [ - -6.40839763651228, - 13.124304825957973 - ], - [ - 0, - 0 - ] - ] - }, - { - "type": "ellipse", - "version": 1060, - "versionNonce": 644109734, - "isDeleted": false, - "id": "yF40ew457jmrEJrTbM6rg", - "fillStyle": "solid", - "strokeWidth": 1, - "strokeStyle": "solid", - "roughness": 0, - "opacity": 100, - "angle": 0, - "x": 784.0794541733192, - "y": 210.66429372466973, - "strokeColor": "#609926", - "backgroundColor": "#609926", - "width": 3.5032895688733885, - "height": 3.5032895688733885, - "seed": 189961907, - "groupIds": [ - "KCLSuwLSEWUC_iP7kSNCk", - "zl1s8cNmh8UrJcf74pI-f" - ], - "strokeSharpness": "sharp", - "boundElements": [], - "updated": 1662370182112, - "link": null, - "locked": false - }, - { - "type": "ellipse", - "version": 1060, - "versionNonce": 552714170, - "isDeleted": false, - "id": "kzUT99c-It4ecp0bLdMpU", - "fillStyle": "solid", - "strokeWidth": 1, - "strokeStyle": "solid", - "roughness": 0, - "opacity": 100, - "angle": 0, - "x": 780.0842108335173, - "y": 218.95025900946422, - "strokeColor": "#609926", - "backgroundColor": "#609926", - "width": 3.5032895688733885, - "height": 3.5032895688733885, - "seed": 2043519485, - "groupIds": [ - "KCLSuwLSEWUC_iP7kSNCk", - "zl1s8cNmh8UrJcf74pI-f" - ], - "strokeSharpness": "sharp", - "boundElements": [], - "updated": 1662370182112, - "link": null, - "locked": false - }, - { - "type": "ellipse", - "version": 1060, - "versionNonce": 1876340966, - "isDeleted": false, - "id": "Hw8JiSvWpyA7wcNoYuOcM", - "fillStyle": "solid", - "strokeWidth": 1, - "strokeStyle": "solid", - "roughness": 0, - "opacity": 100, - "angle": 0, - "x": 786.6541178636505, - "y": 221.90003403980205, - "strokeColor": "#609926", - "backgroundColor": "#609926", - "width": 3.5032895688733885, - "height": 3.5032895688733885, - "seed": 215173203, - "groupIds": [ - "KCLSuwLSEWUC_iP7kSNCk", - "zl1s8cNmh8UrJcf74pI-f" - ], - "strokeSharpness": "sharp", - "boundElements": [], - "updated": 1662370182112, - "link": null, - "locked": false - }, - { - "type": "line", - "version": 617, - "versionNonce": 584431738, - "isDeleted": false, - "id": "xDY61qQQ6Ap2p04GrSIhU", - "fillStyle": "cross-hatch", - "strokeWidth": 1, - "strokeStyle": "solid", - "roughness": 1, - "opacity": 100, - "angle": 0, - "x": 943.7650494170268, - "y": 207.5536810655546, - "strokeColor": "#000000", - "backgroundColor": "#fa5252", - "width": 21.361340598602617, - "height": 21.479359054948496, - "seed": 1526894483, - "groupIds": [ - "hLaUC0pyklAgiIpkyHRSs" - ], - "strokeSharpness": "sharp", - "boundElements": [], - "updated": 1662370182112, - "link": null, - "locked": false, - "startBinding": null, - "endBinding": null, - "lastCommittedPoint": null, - "startArrowhead": null, - "endArrowhead": null, - "points": [ - [ - 0, - 0 - ], - [ - 2.9504614086469867, - 4.012627515759613 - ], - [ - -11.093734896511851, - 11.919864090932956 - ], - [ - 3.776590603068043, - 16.640602344767817 - ], - [ - 2.2423506705715397, - 21.479359054948496 - ], - [ - -17.584749995534565, - 14.988343955925606 - ], - [ - -17.584749995534565, - 8.73336576959445 - ], - [ - 0, - 0 - ] - ] - }, - { - "type": "line", - "version": 739, - "versionNonce": 1759224870, - "isDeleted": false, - "id": "vUg5B5lluM1lc6gwDspMM", - "fillStyle": "cross-hatch", - "strokeWidth": 1, - "strokeStyle": "solid", - "roughness": 1, - "opacity": 100, - "angle": 0, - "x": 972.9111084975855, - "y": 208.52784762699463, - "strokeColor": "#000000", - "backgroundColor": "#fa5252", - "width": 22.550726855738834, - "height": 21.479359054948496, - "seed": 937305885, - "groupIds": [ - "hLaUC0pyklAgiIpkyHRSs" - ], - "strokeSharpness": "sharp", - "boundElements": [], - "updated": 1662370182112, - "link": null, - "locked": false, - "startBinding": null, - "endBinding": null, - "lastCommittedPoint": null, - "startArrowhead": null, - "endArrowhead": null, - "points": [ - [ - 0, - 0 - ], - [ - -3.114741278416954, - 4.012627515759613 - ], - [ - 11.71142720684779, - 11.919864090932956 - ], - [ - -3.986868836373726, - 16.64060234476782 - ], - [ - -2.367203371596897, - 21.479359054948496 - ], - [ - 18.563858019365114, - 14.988343955925602 - ], - [ - 18.563858019365114, - 8.73336576959445 - ], - [ - 0, - 0 - ] - ] - }, - { - "type": "line", - "version": 571, - "versionNonce": 1597806906, - "isDeleted": false, - "id": "YKMjthBrNNw97pyLkbxOg", - "fillStyle": "cross-hatch", - "strokeWidth": 1, - "strokeStyle": "solid", - "roughness": 1, - "opacity": 100, - "angle": 0, - "x": 948.8645995700572, - "y": 242.90905653246233, - "strokeColor": "#000000", - "backgroundColor": "#fa5252", - "width": 19.827100666106297, - "height": 47.32540099469423, - "seed": 1506878771, - "groupIds": [ - "hLaUC0pyklAgiIpkyHRSs" - ], - "strokeSharpness": "sharp", - "boundElements": [], - "updated": 1662370182112, - "link": null, - "locked": false, - "startBinding": null, - "endBinding": null, - "lastCommittedPoint": null, - "startArrowhead": null, - "endArrowhead": null, - "points": [ - [ - 0, - 0 - ], - [ - 13.218067110737529, - -47.20738253834822 - ], - [ - 19.827100666106297, - -47.20738253834822 - ], - [ - 6.963088924406386, - 0.1180184563460247 - ], - [ - 0, - 0 - ] - ] - }, - { - "type": "rectangle", - "version": 456, - "versionNonce": 861941606, - "isDeleted": false, - "id": "VWN6cXO1jiN8bNt1WAl7V", - "fillStyle": "cross-hatch", - "strokeWidth": 2, - "strokeStyle": "solid", - "roughness": 1, - "opacity": 90, - "angle": 0, - "x": 910, - "y": 178, - "strokeColor": "#000000", - "backgroundColor": "transparent", - "width": 101, - "height": 78, - "seed": 684609747, - "groupIds": [], - "strokeSharpness": "sharp", - "boundElements": [], - "updated": 1662370182112, - "link": null, - "locked": false - }, - { - "type": "text", - "version": 268, - "versionNonce": 1208552186, - "isDeleted": false, - "id": "HQ1vT1MZXpaMNC0w2UQgN", - "fillStyle": "cross-hatch", - "strokeWidth": 2, - "strokeStyle": "solid", - "roughness": 1, - "opacity": 90, - "angle": 0, - "x": 917, - "y": 155, - "strokeColor": "#000000", - "backgroundColor": "transparent", - "width": 84, - "height": 20, - "seed": 1196888499, - "groupIds": [], - "strokeSharpness": "sharp", - "boundElements": [], - "updated": 1662376440015, - "link": null, - "locked": false, - "fontSize": 16, - "fontFamily": 1, - "text": "DevSpaces", - "baseline": 14, - "textAlign": "center", - "verticalAlign": "top", - "containerId": null, - "originalText": "DevSpaces" - }, - { - "type": "line", - "version": 600, - "versionNonce": 733041318, - "isDeleted": false, - "id": "yTMGBKLcl_krJLO3aWwCo", - "fillStyle": "solid", - "strokeWidth": 4, - "strokeStyle": "solid", - "roughness": 1, - "opacity": 100, - "angle": 0, - "x": 347.39587833125324, - "y": 306.7338110374251, - "strokeColor": "black", - "backgroundColor": "black", - "width": 180.44190813894443, - "height": 0.16613541482645627, - "seed": 269989267, - "groupIds": [ - "Cy3KZUF141Ea66DHXydV1" - ], - "strokeSharpness": "round", - "boundElements": [], - "updated": 1662370182112, - "link": null, - "locked": false, - "startBinding": null, - "endBinding": null, - "lastCommittedPoint": null, - "startArrowhead": null, - "endArrowhead": null, - "points": [ - [ - 0, - 0 - ], - [ - 180.44190813894443, - -0.16613541482645627 - ] - ] - }, - { - "type": "line", - "version": 542, - "versionNonce": 549393082, - "isDeleted": false, - "id": "a5nod2XbFPVWuWRhn2Ua2", - "fillStyle": "solid", - "strokeWidth": 4, - "strokeStyle": "solid", - "roughness": 1, - "opacity": 100, - "angle": 0, - "x": 348.0536140237087, - "y": 306.9778100669535, - "strokeColor": "black", - "backgroundColor": "black", - "width": 29.012907644169655, - "height": 58.08933795512363, - "seed": 1721131293, - "groupIds": [ - "Cy3KZUF141Ea66DHXydV1" - ], - "strokeSharpness": "round", - "boundElements": [], - "updated": 1662370182112, - "link": null, - "locked": false, - "startBinding": null, - "endBinding": null, - "lastCommittedPoint": null, - "startArrowhead": null, - "endArrowhead": null, - "points": [ - [ - 0, - 0 - ], - [ - -10.296989190345768, - -2.7467411689925427 - ], - [ - -14.193104578778739, - -7.075372217895264 - ], - [ - -17.12757102104723, - -14.809660495943007 - ], - [ - -16.25366056491633, - -32.74417995752738 - ], - [ - -13.10830588800304, - -40.96408323021325 - ], - [ - -4.822598747791973, - -50.77138635998338 - ], - [ - 6.5787372689089665, - -58.089337955123625 - ], - [ - 11.885336623122425, - -57.994755862867336 - ] - ] - }, - { - "type": "line", - "version": 583, - "versionNonce": 477892070, - "isDeleted": false, - "id": "BDtRB2MzcmTx5Hgz-V5ax", - "fillStyle": "solid", - "strokeWidth": 4, - "strokeStyle": "solid", - "roughness": 1, - "opacity": 100, - "angle": 0, - "x": 360.2004225510271, - "y": 246.95648206020837, - "strokeColor": "black", - "backgroundColor": "black", - "width": 87.3743402045856, - "height": 60.07029758310275, - "seed": 1028754227, - "groupIds": [ - "Cy3KZUF141Ea66DHXydV1" - ], - "strokeSharpness": "round", - "boundElements": [], - "updated": 1662370182112, - "link": null, - "locked": false, - "startBinding": null, - "endBinding": null, - "lastCommittedPoint": null, - "startArrowhead": null, - "endArrowhead": null, - "points": [ - [ - 0, - 0 - ], - [ - -6.025598732340979, - -21.1279197356401 - ], - [ - -6.406945305423115, - -32.67742851430983 - ], - [ - -3.549899306760304, - -39.69384046690258 - ], - [ - 5.705739293074423, - -50.91185568252725 - ], - [ - 16.1726603909173, - -56.94256079498816 - ], - [ - 26.503200779851944, - -59.91466704948113 - ], - [ - 45.020163433675535, - -60.07029758310275 - ], - [ - 63.567132651090674, - -55.907860782021665 - ], - [ - 68.71201242047414, - -52.3039496607967 - ], - [ - 80.96739489916247, - -31.279192841738087 - ] - ] - }, - { - "type": "line", - "version": 559, - "versionNonce": 58764154, - "isDeleted": false, - "id": "3e7pQ8RjxCYV31m-LfEZK", - "fillStyle": "solid", - "strokeWidth": 4, - "strokeStyle": "solid", - "roughness": 1, - "opacity": 100, - "angle": 0, - "x": 440.39398966562135, - "y": 214.77545838538146, - "strokeColor": "black", - "backgroundColor": "black", - "width": 69.02941518201982, - "height": 34.30764475453057, - "seed": 583415165, - "groupIds": [ - "Cy3KZUF141Ea66DHXydV1" - ], - "strokeSharpness": "round", - "boundElements": [], - "updated": 1662370182112, - "link": null, - "locked": false, - "startBinding": null, - "endBinding": null, - "lastCommittedPoint": null, - "startArrowhead": null, - "endArrowhead": null, - "points": [ - [ - 0, - 0 - ], - [ - 10.083433705603934, - -6.510757486830897 - ], - [ - 24.319495049103143, - -9.086233123277818 - ], - [ - 54.3109325249198, - -5.877671638144303 - ], - [ - 65.34260873541108, - 1.8844999320361318 - ], - [ - 69.02941518201982, - 25.221411631252746 - ] - ] - }, - { - "type": "line", - "version": 595, - "versionNonce": 1926062374, - "isDeleted": false, - "id": "gtGUk5ADqPSYCmPJoRdko", - "fillStyle": "solid", - "strokeWidth": 4, - "strokeStyle": "solid", - "roughness": 1, - "opacity": 100, - "angle": 0, - "x": 527.0558925996764, - "y": 306.9861957034516, - "strokeColor": "black", - "backgroundColor": "black", - "width": 45.23585973757425, - "height": 72.2376608085893, - "seed": 2080353491, - "groupIds": [ - "Cy3KZUF141Ea66DHXydV1" - ], - "strokeSharpness": "round", - "boundElements": [], - "updated": 1662370182112, - "link": null, - "locked": false, - "startBinding": null, - "endBinding": null, - "lastCommittedPoint": null, - "startArrowhead": null, - "endArrowhead": null, - "points": [ - [ - 0, - 0 - ], - [ - 16.245939577793376, - -8.789817408548252 - ], - [ - 27.277124452740487, - -21.062607203659148 - ], - [ - 30.846396418100213, - -32.47282235555152 - ], - [ - 30.85453854997536, - -48.791269021508704 - ], - [ - 25.221025581896626, - -61.49790810213788 - ], - [ - 14.423716425983113, - -70.51089713393569 - ], - [ - 3.3780020570864284, - -72.23766080858931 - ], - [ - -9.197380242452413, - -69.04397977136546 - ], - [ - -14.381321187598894, - -65.757015171538 - ] - ] - }, - { - "type": "line", - "version": 410, - "versionNonce": 1947282490, - "isDeleted": false, - "id": "NthltWo1RmoHdn5C8gHjZ", - "fillStyle": "cross-hatch", - "strokeWidth": 2, - "strokeStyle": "solid", - "roughness": 1, - "opacity": 100, - "angle": 0, - "x": 438.9134165238899, - "y": 215.86291312152872, - "strokeColor": "#000000", - "backgroundColor": "black", - "width": 90.68346509750657, - "height": 88.44483190099747, - "seed": 1892260829, - "groupIds": [ - "9wXTiErT68Cqf6y0xR_9_", - "M7epUKFIsRBu-b5nc04_q" - ], - "strokeSharpness": "sharp", - "boundElements": [], - "updated": 1662370182112, - "link": null, - "locked": false, - "lastCommittedPoint": null, - "startArrowhead": null, - "endArrowhead": null, - "points": [ - [ - 0, - 0 - ], - [ - 0, - 0 - ], - [ - -2.333004985917512, - 0.058997671849454036 - ], - [ - -4.635414563912775, - 0.23409153110242187 - ], - [ - -6.904379999542982, - 0.5224328433152432 - ], - [ - -9.137049845283855, - 0.9211728740447143 - ], - [ - -11.330572653611853, - 1.4274628464555406 - ], - [ - -13.482099690083372, - 2.038454153279929 - ], - [ - -15.588776794094258, - 2.7512978905071748 - ], - [ - -17.6477552312013, - 3.5631454932610893 - ], - [ - -19.656186266960788, - 4.471148057530878 - ], - [ - -21.611215740768728, - 5.472456848873321 - ], - [ - -23.5099962747218, - 6.564223471979915 - ], - [ - -25.349675064756244, - 7.743598853272028 - ], - [ - -27.127402019888166, - 9.007734258306755 - ], - [ - -28.840325692593808, - 10.35378095264036 - ], - [ - -30.485595991889852, - 11.778890201829537 - ], - [ - -32.06036147025219, - 13.280213949701132 - ], - [ - -33.561773393237395, - 14.854902105271375 - ], - [ - -34.98697963505134, - 16.500107290637125 - ], - [ - -36.33312942644136, - 18.21297941481486 - ], - [ - -37.59737267642265, - 19.99067109990125 - ], - [ - -38.77685861574224, - 21.830332254913003 - ], - [ - -39.86873579687597, - 23.729116858486606 - ], - [ - -40.870154467975624, - 25.684173463098837 - ], - [ - -41.778263520651876, - 27.692653334306016 - ], - [ - -42.59021218565141, - 29.751707737664752 - ], - [ - -43.303150032855854, - 31.858490651811962 - ], - [ - -43.91422629301104, - 34.01015062922437 - ], - [ - -44.420590196863365, - 36.20383893545793 - ], - [ - -44.819391102334805, - 38.43670683606979 - ], - [ - -45.1077783037594, - 40.705908309696575 - ], - [ - -45.28290113786346, - 43.00859190881471 - ], - [ - -45.34190889898064, - 45.34190889898089 - ], - [ - -45.30409009989871, - 47.21091473183959 - ], - [ - -45.19160633138682, - 49.06066583294157 - ], - [ - -45.0059165259467, - 50.88969985193921 - ], - [ - -44.74847965847283, - 52.69656257772587 - ], - [ - -44.420754592579954, - 54.479794373034586 - ], - [ - -44.02420041444127, - 56.23793560059818 - ], - [ - -43.56027595587847, - 57.96953204931015 - ], - [ - -43.030440006320134, - 59.67312408190335 - ], - [ - -42.436151948683005, - 61.34725206111081 - ], - [ - -41.77887023326156, - 62.99046177582626 - ], - [ - -41.060054158187256, - 64.60129358878184 - ], - [ - -40.281162682457605, - 66.17828243655016 - ], - [ - -38.54898834761566, - 69.22492524442087 - ], - [ - -36.594019239847, - 72.11872395362188 - ], - [ - -34.42792703112879, - 74.84801774449969 - ], - [ - -32.062382715166734, - 77.40113494507605 - ], - [ - -29.509057963937888, - 79.76641473569669 - ], - [ - -26.779625805958972, - 81.93219629670706 - ], - [ - -23.88575520012625, - 83.88681338229053 - ], - [ - -20.839119174956807, - 85.61859974663234 - ], - [ - -19.26216288415355, - 86.39728638479001 - ], - [ - -17.651390758966954, - 87.11589457007697 - ], - [ - -16.00826243666456, - 87.77295923906482 - ], - [ - -14.334237554512896, - 88.36702618064737 - ], - [ - -13.550545282976657, - 88.44290018773684 - ], - [ - -12.894221284943626, - 88.37164926968703 - ], - [ - -12.35821697747815, - 88.17705086331902 - ], - [ - -11.935478351481443, - 87.88286612697115 - ], - [ - -11.618954110936556, - 87.51287249746414 - ], - [ - -11.401598385986603, - 87.09083655929666 - ], - [ - -11.2763544544528, - 86.64053032312967 - ], - [ - -11.236173733399276, - 86.18572037346115 - ], - [ - -11.238029480408088, - 85.66800494112226 - ], - [ - -11.24308394923463, - 84.94340084810192 - ], - [ - -11.250574764280728, - 84.03857767495202 - ], - [ - -11.259731410705626, - 82.98017787141877 - ], - [ - -11.269788799831183, - 81.79485473957058 - ], - [ - -11.2799791298972, - 80.50927243379788 - ], - [ - -11.297692831974189, - 77.74392180410848 - ], - [ - -12.45136788069647, - 77.9698942724798 - ], - [ - -13.548060101309659, - 78.13584254958863 - ], - [ - -14.58910704246193, - 78.2452393783757 - ], - [ - -15.57583811356044, - 78.3015357971376 - ], - [ - -16.509596289413995, - 78.30821540113732 - ], - [ - -17.391710979429376, - 78.26872922867169 - ], - [ - -19.006354670378716, - 78.06514509994508 - ], - [ - -20.4304505840305, - 77.71851109287377 - ], - [ - -21.674680118006513, - 77.25655488937309 - ], - [ - -22.74972331339023, - 76.70700959751964 - ], - [ - -23.666258854723083, - 76.09758662074707 - ], - [ - -24.434968139627653, - 75.45602449329205 - ], - [ - -25.066532565726916, - 74.81005089707034 - ], - [ - -25.57162946102204, - 74.18738266167597 - ], - [ - -25.96094157967604, - 73.6157528951853 - ], - [ - -26.245148962770763, - 73.12288927951428 - ], - [ - -26.434930294849266, - 72.73651407041748 - ], - [ - -26.54096697353316, - 72.48436037597111 - ], - [ - -26.573939039904985, - 72.39414502576972 - ], - [ - -26.970371638127297, - 71.45595638958659 - ], - [ - -27.38243157958182, - 70.60434757583923 - ], - [ - -27.804430891163236, - 69.83573189220905 - ], - [ - -28.230687025927477, - 69.1465117940564 - ], - [ - -28.65551472384932, - 68.53308973674125 - ], - [ - -29.073226011823234, - 67.99187360178422 - ], - [ - -29.478138342905083, - 67.5192604183851 - ], - [ - -29.8645664570704, - 67.11166349422496 - ], - [ - -30.55922492492941, - 66.47712281890276 - ], - [ - -31.111719335201855, - 66.05949292334141 - ], - [ - -31.320443394788477, - 65.92303040426167 - ], - [ - -31.476570320768527, - 65.8300097289038 - ], - [ - -31.574416209657507, - 65.776833352627 - ], - [ - -31.60829444489064, - 65.75990373079227 - ], - [ - -32.28272554166148, - 65.26516808962968 - ], - [ - -32.77604631138382, - 64.83344645435486 - ], - [ - -33.10724424739261, - 64.4604521579007 - ], - [ - -33.29530277340284, - 64.1418931070391 - ], - [ - -33.3592093827495, - 63.87348263470288 - ], - [ - -33.31795021222773, - 63.65092864766367 - ], - [ - -33.190511398632616, - 63.46992820037207 - ], - [ - -32.99588043529974, - 63.32620547808253 - ], - [ - -32.480979823898714, - 63.13340855711486 - ], - [ - -31.92514154200586, - 63.03819571277549 - ], - [ - -31.480251970901577, - 63.00624647772298 - ], - [ - -31.346879650422984, - 63.00326751541921 - ], - [ - -31.298202918026668, - 63.00322410613244 - ], - [ - -30.469796368050595, - 63.10844279106908 - ], - [ - -29.69226821523324, - 63.29589494360499 - ], - [ - -28.965972516569945, - 63.553290309426785 - ], - [ - -28.29126332905571, - 63.8683549127046 - ], - [ - -27.09802342853555, - 64.62234166669808 - ], - [ - -26.115380969633293, - 65.45959285885061 - ], - [ - -25.346171121391023, - 66.28184071626823 - ], - [ - -25.04248924702466, - 66.65663107196228 - ], - [ - -24.793227696308843, - 66.99082289221691 - ], - [ - -24.598740526237915, - 67.2721313488808 - ], - [ - -24.45938315034795, - 67.48827161380174 - ], - [ - -24.375508269093473, - 67.62696428498823 - ], - [ - -24.34747265254968, - 67.67592453428857 - ], - [ - -23.56128977318537, - 68.87332087401585 - ], - [ - -22.725578254172152, - 69.87560874825559 - ], - [ - -21.849852868551064, - 70.69711322163771 - ], - [ - -20.943627032822803, - 71.35216478495222 - ], - [ - -20.016415520028026, - 71.85509392898992 - ], - [ - -19.077733103208118, - 72.22023114454112 - ], - [ - -18.13708912924295, - 72.46190149623564 - ], - [ - -17.20400108425366, - 72.59444090102478 - ], - [ - -16.28798102820094, - 72.63216899737691 - ], - [ - -15.398546447206176, - 72.58942712840428 - ], - [ - -14.545209401229595, - 72.48053493257578 - ], - [ - -13.737481950231828, - 72.31982290068227 - ], - [ - -12.984878867253943, - 72.12162152351334 - ], - [ - -12.296914925336747, - 71.90026129185998 - ], - [ - -11.683104897520995, - 71.6700726965127 - ], - [ - -11.152960843767687, - 71.44538080210074 - ], - [ - -10.965647058333275, - 70.38979717604575 - ], - [ - -10.713873195146164, - 69.4207553893005 - ], - [ - -10.405222313986727, - 68.53750663166868 - ], - [ - -10.047282900795892, - 67.73931294527466 - ], - [ - -9.64763801535355, - 67.02543094608372 - ], - [ - -9.2138707174405, - 66.39512267622005 - ], - [ - -8.753564066836699, - 65.84763932548769 - ], - [ - -8.274306549483242, - 65.38224836217267 - ], - [ - -10.165928620742303, - 65.13247132617632 - ], - [ - -12.053388826633455, - 64.8027126793317 - ], - [ - -13.920422250025517, - 64.37723112902806 - ], - [ - -15.750761260705929, - 63.84029080881645 - ], - [ - -17.528140941544, - 63.176144999926436 - ], - [ - -19.236299088487897, - 62.36906326206916 - ], - [ - -20.858970784406484, - 61.40330430263523 - ], - [ - -22.37988839908751, - 60.26312682901367 - ], - [ - -23.782788371940228, - 58.93278954859515 - ], - [ - -25.051405785832635, - 57.396556594930246 - ], - [ - -25.630275407429906, - 56.54630974755478 - ], - [ - -26.169475723632893, - 55.63868124924807 - ], - [ - -26.666971924125107, - 54.67171768210642 - ], - [ - -27.120731911669928, - 53.64343849742101 - ], - [ - -27.528723589031245, - 52.55187942496687 - ], - [ - -27.888912145892334, - 51.3950761945178 - ], - [ - -28.199265485016838, - 50.17105910968724 - ], - [ - -28.457748796088204, - 48.8778639002498 - ], - [ - -28.662331338410123, - 47.51351544365743 - ], - [ - -28.81097965820635, - 46.07605489584565 - ], - [ - -28.901658945159966, - 44.56350713426758 - ], - [ - -28.932337102034978, - 42.97391060177688 - ], - [ - -28.85056214502714, - 41.1599857276509 - ], - [ - -28.610249690084114, - 39.43049462934655 - ], - [ - -28.21892446575663, - 37.7850249186397 - ], - [ - -27.684105774435523, - 36.2231642073059 - ], - [ - -27.01331698813141, - 34.744500107121155 - ], - [ - -26.214080122315465, - 33.348617516780905 - ], - [ - -25.293915835917574, - 32.03510676114149 - ], - [ - -24.260347500949536, - 30.80355273889771 - ], - [ - -24.360051849927515, - 30.549179744666333 - ], - [ - -24.477631329268153, - 30.216181679797106 - ], - [ - -24.605620898188874, - 29.807249920069406 - ], - [ - -24.736558228988592, - 29.325070415101326 - ], - [ - -24.862979637425155, - 28.772331827591074 - ], - [ - -24.97742415233773, - 28.151722820237268 - ], - [ - -25.072426732944386, - 27.465934768818673 - ], - [ - -25.140523695003193, - 26.71765090987321 - ], - [ - -25.174254067353225, - 25.9095626191791 - ], - [ - -25.1661541657524, - 25.0443585594357 - ], - [ - -25.10875894941915, - 24.124727393340915 - ], - [ - -24.99460744719204, - 23.15335507051305 - ], - [ - -24.81623597482986, - 22.132932966730667 - ], - [ - -24.566182204630604, - 21.06614703161219 - ], - [ - -24.236981095812496, - 19.955687284396248 - ], - [ - -23.82117032067407, - 18.804242387781017 - ], - [ - -23.77629597048974, - 18.791987403513843 - ], - [ - -23.640643305916058, - 18.763334561173963 - ], - [ - -23.412678079974967, - 18.73044660029538 - ], - [ - -23.09086197606615, - 18.705487616950567 - ], - [ - -22.673655321050713, - 18.70062170721326 - ], - [ - -22.159521154869083, - 18.72801161061622 - ], - [ - -21.54692387400189, - 18.799821423233112 - ], - [ - -20.83432244877036, - 18.92821659767702 - ], - [ - -20.020181275654238, - 19.12535851694082 - ], - [ - -19.102964751135296, - 19.403411277098115 - ], - [ - -18.081129132452986, - 19.77454033076188 - ], - [ - -16.953141529168928, - 20.250908417465496 - ], - [ - -15.717460911603098, - 20.844679633282226 - ], - [ - -14.372554389317028, - 21.56801807428534 - ], - [ - -12.916880932630704, - 22.43308648000763 - ], - [ - -11.348899511864204, - 23.45204894652275 - ], - [ - -8.59178850741722, - 22.79211655152841 - ], - [ - -5.763263800095671, - 22.318812889161563 - ], - [ - -2.8903313924218423, - 22.03073665338438 - ], - [ - -5.329070518200751e-15, - 21.92648789469881 - ], - [ - 2.890887573908456, - 22.03073665338458 - ], - [ - 5.765575344615284, - 22.31881288916172 - ], - [ - 8.597190250538347, - 22.792116551528352 - ], - [ - 11.358861943174986, - 23.452048946522723 - ], - [ - 12.924965912288997, - 22.433086480007674 - ], - [ - 14.37887857978103, - 21.56801807428532 - ], - [ - 15.722146401492719, - 20.844679633282134 - ], - [ - 16.956304980941468, - 20.250908417465492 - ], - [ - 18.082889921647308, - 19.774540330761795 - ], - [ - 19.103442253289927, - 19.403411277097927 - ], - [ - 20.01949215322719, - 19.12535851694082 - ], - [ - 20.832591503461117, - 18.92821659767688 - ], - [ - 21.544270481349397, - 18.79982142323301 - ], - [ - 22.156064690411192, - 18.728011610616132 - ], - [ - 22.669520586487415, - 18.700621707213216 - ], - [ - 23.086168346935864, - 18.705487616950517 - ], - [ - 23.407549001436678, - 18.73044660029521 - ], - [ - 23.63520357966982, - 18.763334561174112 - ], - [ - 23.770667685153825, - 18.791987403513545 - ], - [ - 23.81548234756883, - 18.8042423877812 - ], - [ - 24.2323471544515, - 19.955687284396205 - ], - [ - 24.562458501751053, - 21.066147031612143 - ], - [ - 24.81328821295125, - 22.132932966730763 - ], - [ - 24.99230268537377, - 23.1533550705131 - ], - [ - 25.10699002098392, - 24.12472739334082 - ], - [ - 25.164811190943627, - 25.044358559435736 - ], - [ - 25.173248871056757, - 25.909562619179177 - ], - [ - 25.139769458645844, - 26.71765090987296 - ], - [ - 25.071855629515515, - 27.465934768818585 - ], - [ - 24.976979207148528, - 28.151722820237225 - ], - [ - 24.862606588867294, - 28.772331827591067 - ], - [ - 24.73622045047597, - 29.325070415101298 - ], - [ - 24.605292615457984, - 29.807249920069527 - ], - [ - 24.4772949072958, - 30.216181679797213 - ], - [ - 24.35970457563374, - 30.549179744666205 - ], - [ - 24.259993443954357, - 30.80355273889773 - ], - [ - 25.295153000590272, - 32.03509048265879 - ], - [ - 26.215538403042387, - 33.34856596825297 - ], - [ - 27.013976266674263, - 34.74440514930622 - ], - [ - 27.683309485331918, - 36.22303126636527 - ], - [ - 28.216370100539216, - 37.784870273055546 - ], - [ - 28.605995579981908, - 39.43034540992336 - ], - [ - 28.84502339134516, - 41.15988534367513 - ], - [ - 28.92629642847487, - 42.973910601776694 - ], - [ - 28.895557227290276, - 44.56710196582689 - ], - [ - 28.804707016270182, - 46.08271279520211 - ], - [ - 28.655775179569815, - 47.522734490932336 - ], - [ - 28.45080195366723, - 48.88915031480646 - ], - [ - 28.191816722717704, - 50.18396252017577 - ], - [ - 27.880859723199023, - 51.40915165574849 - ], - [ - 27.519971191589214, - 52.56670912255498 - ], - [ - 27.111175085882792, - 53.65862089546448 - ], - [ - 26.656517068718188, - 54.68688922782765 - ], - [ - 26.15803195041187, - 55.6534946683537 - ], - [ - 25.61774911512035, - 56.56042319191131 - ], - [ - 25.037708799320793, - 57.40967705185223 - ], - [ - 23.76650039362528, - 58.943088401878114 - ], - [ - 22.360685215859174, - 60.269659926670556 - ], - [ - 20.836558027038624, - 61.40530112982597 - ], - [ - 19.210391883535696, - 62.36592694110141 - ], - [ - 17.49848154636809, - 63.16746856873621 - ], - [ - 15.717110924228798, - 63.8258355163267 - ], - [ - 13.882569351974272, - 64.35695356595213 - ], - [ - 12.011135312137124, - 64.77673764736849 - ], - [ - 10.119098139573655, - 65.1011026903341 - ], - [ - 8.222747169138643, - 65.3459744769268 - ], - [ - 8.821784474054883, - 65.9372795026398 - ], - [ - 9.38931206294702, - 66.65675044750077 - ], - [ - 9.910429698135601, - 67.50577640868642 - ], - [ - 10.370220863459341, - 68.48573563105079 - ], - [ - 10.753785321238809, - 69.59801721177008 - ], - [ - 11.04621740763395, - 70.84399939569968 - ], - [ - 11.232606032644124, - 72.22507128001452 - ], - [ - 11.298050958590181, - 73.74261110957016 - ], - [ - 11.295788249518004, - 75.95781956971322 - ], - [ - 11.289824898749941, - 78.0362019580002 - ], - [ - 11.28139807095829, - 79.95190804416767 - ], - [ - 11.271734078494156, - 81.67909302411292 - ], - [ - 11.262075512190961, - 83.19191209373369 - ], - [ - 11.253643258238341, - 84.46452044892717 - ], - [ - 11.250279038514755, - 85.0026708030071 - ], - [ - 11.247679907470172, - 85.47107328559076 - ], - [ - 11.246014076090944, - 85.86649933097648 - ], - [ - 11.245422624558962, - 86.18572037346107 - ], - [ - 11.28497933711595, - 86.6438728382097 - ], - [ - 11.408858589196662, - 87.09724485525413 - ], - [ - 11.624863200096293, - 87.52161946874517 - ], - [ - 11.940812267591973, - 87.89277972283388 - ], - [ - 12.364514037138463, - 88.18651408783217 - ], - [ - 12.903771328030345, - 88.3786001817291 - ], - [ - 13.566392385722963, - 88.44483190099747 - ], - [ - 14.36019630799386, - 88.3609814374666 - ], - [ - 16.033271611997627, - 87.76631761819101 - ], - [ - 17.675412373026205, - 87.10872661160145 - ], - [ - 19.28517523229533, - 86.38966805496428 - ], - [ - 20.861089700216496, - 85.61059615938672 - ], - [ - 23.905589174553683, - 83.87823462199562 - ], - [ - 26.797277107186517, - 81.92329739292207 - ], - [ - 29.524503530781946, - 79.75741816101691 - ], - [ - 32.075640182650375, - 77.39225231977368 - ], - [ - 34.4390479477797, - 74.83943898420443 - ], - [ - 36.60308771115888, - 72.11063354780316 - ], - [ - 38.55612035777557, - 69.21748055174206 - ], - [ - 40.286512198780315, - 66.17161911103315 - ], - [ - 41.06457482844087, - 64.59506978229311 - ], - [ - 41.78261326683901, - 62.984704619169946 - ], - [ - 42.439173302868426, - 61.34198868509172 - ], - [ - 43.032795299262034, - 59.66838161732542 - ], - [ - 43.562030471074166, - 57.9653267746557 - ], - [ - 44.025424607198474, - 56.2342892205107 - ], - [ - 44.42151264420724, - 54.47672316599658 - ], - [ - 44.748845797154615, - 52.69408824838088 - ], - [ - 45.00597528109472, - 50.88782782644792 - ], - [ - 45.191441458761766, - 49.05941238978664 - ], - [ - 45.303784692887, - 47.210285297181684 - ], - [ - 45.341556198525915, - 45.34190889898056 - ], - [ - 45.282557551663245, - 43.00859190881458 - ], - [ - 45.107455341209516, - 40.70590830969657 - ], - [ - 44.81910372776957, - 38.43670683606979 - ], - [ - 44.42035144578648, - 36.203838935457924 - ], - [ - 43.91404722970327, - 34.01015062922436 - ], - [ - 43.3030452401247, - 31.85849065181214 - ], - [ - 42.59018335917233, - 29.751707737664702 - ], - [ - 41.77831574745031, - 27.6926533343059 - ], - [ - 40.87029656556285, - 25.684173463098794 - ], - [ - 39.868963695631855, - 23.72911685848659 - ], - [ - 38.77718215058297, - 21.83033225491276 - ], - [ - 37.59778981253794, - 19.990671099901334 - ], - [ - 36.33363541594019, - 18.21297941481484 - ], - [ - 34.98757312139429, - 16.500107290637203 - ], - [ - 33.56245166334301, - 14.854902105271293 - ], - [ - 32.061119776230214, - 13.280213949701235 - ], - [ - 30.486426194499078, - 11.778890201829531 - ], - [ - 28.841214226432328, - 10.353780952640255 - ], - [ - 27.128343458794912, - 9.007734258306655 - ], - [ - 25.350657199869232, - 7.743598853272244 - ], - [ - 23.511009610259862, - 6.5642234719797585 - ], - [ - 21.61223857208779, - 5.472456848873151 - ], - [ - 19.65720367211924, - 4.471148057530829 - ], - [ - 17.64875364479667, - 3.5631454932609756 - ], - [ - 15.589731798402966, - 2.751297890507118 - ], - [ - 13.482992293542509, - 2.038454153279929 - ], - [ - 11.331383864658108, - 1.4274628464554961 - ], - [ - 9.137749820032752, - 0.9211728740447716 - ], - [ - 6.904949746431896, - 0.5224328433151588 - ], - [ - 4.635821525976269, - 0.23409153110225134 - ], - [ - 2.3332247454316644, - 0.058997671849483124 - ], - [ - 0, - 0 - ] - ] - }, - { - "type": "line", - "version": 407, - "versionNonce": 1913801830, - "isDeleted": false, - "id": "jo_HsTUFmAuaQhr0bKQYK", - "fillStyle": "cross-hatch", - "strokeWidth": 2, - "strokeStyle": "solid", - "roughness": 1, - "opacity": 100, - "angle": 0, - "x": 409.9910689730186, - "y": 280.35433772462017, - "strokeColor": "#000000", - "backgroundColor": "black", - "width": 1.2433247216556111, - "height": 0.9736323188196985, - "seed": 252992627, - "groupIds": [ - "5H1W_moj_Sm0BoAw7Fq0S", - "M7epUKFIsRBu-b5nc04_q" - ], - "strokeSharpness": "sharp", - "boundElements": [], - "updated": 1662370182112, - "link": null, - "locked": false, - "lastCommittedPoint": null, - "startArrowhead": null, - "endArrowhead": null, - "points": [ - [ - 0, - 0 - ], - [ - 0, - 0 - ], - [ - -0.1180569814948198, - 0.13828028296244899 - ], - [ - -0.3048905516942879, - 0.21145206195117172 - ], - [ - -0.5335299781205629, - 0.21348144610703637 - ], - [ - -0.777005884836039, - 0.13832911841005657 - ], - [ - -0.994399592911992, - 0.0012642954767824732 - ], - [ - -1.1439500119485713, - -0.17300228620670577 - ], - [ - -1.211820431792167, - -0.3619466329746887 - ], - [ - -1.1841782119098339, - -0.5430176203572481 - ], - [ - -1.0670599562411194, - -0.6847380892951416 - ], - [ - -0.880132784767091, - -0.7587834801798348 - ], - [ - -0.6499984510281438, - -0.7601508727126616 - ], - [ - -0.40326142164508727, - -0.6838373465949452 - ], - [ - -0.18512839915406332, - -0.5465337725845147 - ], - [ - -0.035206288099637134, - -0.3713881528442098 - ], - [ - 0.03150428986344346, - -0.18151050641095878 - ], - [ - 0, - 0 - ] - ] - }, - { - "type": "line", - "version": 410, - "versionNonce": 676566266, - "isDeleted": false, - "id": "dYxOARM8QmbX1qbxsLmaX", - "fillStyle": "cross-hatch", - "strokeWidth": 2, - "strokeStyle": "solid", - "roughness": 1, - "opacity": 100, - "angle": 0, - "x": 412.22144762234365, - "y": 282.3443225265891, - "strokeColor": "#000000", - "backgroundColor": "black", - "width": 1.3174867749984642, - "height": 1.3444452986143876, - "seed": 1615075389, - "groupIds": [ - "5H1W_moj_Sm0BoAw7Fq0S", - "M7epUKFIsRBu-b5nc04_q" - ], - "strokeSharpness": "sharp", - "boundElements": [], - "updated": 1662370182112, - "link": null, - "locked": false, - "lastCommittedPoint": null, - "startArrowhead": null, - "endArrowhead": null, - "points": [ - [ - 0, - 0 - ], - [ - 0, - 0 - ], - [ - -0.19554662797559091, - 0.09644458285098789 - ], - [ - -0.4364654563930879, - 0.08930375517955805 - ], - [ - -0.6906539611559186, - -0.014851402231530919 - ], - [ - -0.9260055485469003, - -0.2094498085995406 - ], - [ - -1.1027044068289547, - -0.46141358741610194 - ], - [ - -1.1858223386457292, - -0.7227754768154195 - ], - [ - -1.1721931791444442, - -0.9630675836553646 - ], - [ - -1.0586480503918605, - -1.1518165886329488 - ], - [ - -0.8610354116747114, - -1.2480007157633999 - ], - [ - -0.6213822352742093, - -1.2406753986232584 - ], - [ - -0.36779467782491176, - -1.1364659796037238 - ], - [ - -0.12837482634073188, - -0.9420086534176733 - ], - [ - 0.04855193069680286, - -0.6883953217043643 - ], - [ - 0.13166443635273417, - -0.4269520398923845 - ], - [ - 0.11676148559318644, - -0.18744130021405336 - ], - [ - -0.00035541353531609593, - 0.00035812661574397003 - ] - ] - }, - { - "type": "line", - "version": 410, - "versionNonce": 1746390950, - "isDeleted": false, - "id": "bEK86T7KAoWtz-X7SrDxa", - "fillStyle": "cross-hatch", - "strokeWidth": 2, - "strokeStyle": "solid", - "roughness": 1, - "opacity": 100, - "angle": 0, - "x": 413.7516331197485, - "y": 284.89048338896254, - "strokeColor": "#000000", - "backgroundColor": "black", - "width": 1.434260469453551, - "height": 1.6271265739719378, - "seed": 1205229075, - "groupIds": [ - "5H1W_moj_Sm0BoAw7Fq0S", - "M7epUKFIsRBu-b5nc04_q" - ], - "strokeSharpness": "sharp", - "boundElements": [], - "updated": 1662370182112, - "link": null, - "locked": false, - "lastCommittedPoint": null, - "startArrowhead": null, - "endArrowhead": null, - "points": [ - [ - 0, - 0 - ], - [ - 0, - 0 - ], - [ - -0.23616415497744653, - 0.07705148399258024 - ], - [ - -0.5056313721383141, - 0.02804782540547271 - ], - [ - -0.775566595672025, - -0.13276730354438726 - ], - [ - -1.013130700147375, - -0.39117193528343286 - ], - [ - -1.1692589826677473, - -0.7026932555297591 - ], - [ - -1.2206732132100502, - -1.0097488454010062 - ], - [ - -1.1668036448855883, - -1.2776004231703995 - ], - [ - -1.007084600426337, - -1.471509707111153 - ], - [ - -0.7699166056926503, - -1.5500750899793587 - ], - [ - -0.5014098190012602, - -1.503958148961555 - ], - [ - -0.23236855546669133, - -1.3464909612527833 - ], - [ - 0.0064001567161460216, - -1.091005604048103 - ], - [ - 0.16231817550379907, - -0.7753115661123307 - ], - [ - 0.21358725624350144, - -0.4657165329658213 - ], - [ - 0.1595738946566687, - -0.19592238961407737 - ], - [ - -0.0003567700755144898, - 0.0003581266157421937 - ] - ] - }, - { - "type": "line", - "version": 409, - "versionNonce": 566945210, - "isDeleted": false, - "id": "vVApp1Sr2fU7Tf4qWyRaR", - "fillStyle": "cross-hatch", - "strokeWidth": 2, - "strokeStyle": "solid", - "roughness": 1, - "opacity": 100, - "angle": 0, - "x": 416.33904365685993, - "y": 287.8395475463658, - "strokeColor": "#000000", - "backgroundColor": "black", - "width": 1.6720212722595122, - "height": 1.6435786936526044, - "seed": 133171357, - "groupIds": [ - "5H1W_moj_Sm0BoAw7Fq0S", - "M7epUKFIsRBu-b5nc04_q" - ], - "strokeSharpness": "sharp", - "boundElements": [], - "updated": 1662370182112, - "link": null, - "locked": false, - "lastCommittedPoint": null, - "startArrowhead": null, - "endArrowhead": null, - "points": [ - [ - 0, - 0 - ], - [ - 0, - 0 - ], - [ - -0.23244045209787775, - 0.14100964186726195 - ], - [ - -0.5305238850126699, - 0.15620289223199352 - ], - [ - -0.854678664245311, - 0.049909827448146926 - ], - [ - -1.1653317987565028, - -0.17353404996946692 - ], - [ - -1.4077401083258199, - -0.470231098788483 - ], - [ - -1.536098656184013, - -0.7870971874666889 - ], - [ - -1.5434375387262556, - -1.0868220340369634 - ], - [ - -1.4227922785085934, - -1.332111635014728 - ], - [ - -1.1881623705099338, - -1.47296934437834 - ], - [ - -0.8878230112240129, - -1.48737580142061 - ], - [ - -0.5614123056202519, - -1.380768019307789 - ], - [ - -0.2485724282887194, - -1.1585721588844144 - ], - [ - -0.006345895107694288, - -0.8617286037225949 - ], - [ - 0.12286184692267274, - -0.5440811478827854 - ], - [ - 0.12858373353325622, - -0.2440361578226895 - ], - [ - 0.00035541353532586584, - 0 - ] - ] - }, - { - "type": "line", - "version": 410, - "versionNonce": 1628105446, - "isDeleted": false, - "id": "G2tS9Wef41neQfF6rPB2q", - "fillStyle": "cross-hatch", - "strokeWidth": 2, - "strokeStyle": "solid", - "roughness": 1, - "opacity": 100, - "angle": 0, - "x": 419.6831892984356, - "y": 288.83525348750084, - "strokeColor": "#000000", - "backgroundColor": "black", - "width": 1.879079500466814, - "height": 1.4122831614929237, - "seed": 896015283, - "groupIds": [ - "5H1W_moj_Sm0BoAw7Fq0S", - "M7epUKFIsRBu-b5nc04_q" - ], - "strokeSharpness": "sharp", - "boundElements": [], - "updated": 1662370182112, - "link": null, - "locked": false, - "lastCommittedPoint": null, - "startArrowhead": null, - "endArrowhead": null, - "points": [ - [ - 0, - 0 - ], - [ - 0, - 0 - ], - [ - -0.1508174275937666, - 0.2280452618138007 - ], - [ - -0.41468620330328326, - 0.3724082710829882 - ], - [ - -0.7543638721719574, - 0.4219599719154025 - ], - [ - -1.1326161184845205, - 0.36556588225801784 - ], - [ - -1.4799066910180976, - 0.20510887992390536 - ], - [ - -1.7362168246711427, - -0.023294508505632083 - ], - [ - -1.8769768631395554, - -0.2898329553506577 - ], - [ - -1.8776144370387868, - -0.564705985252898 - ], - [ - -1.727844258488009, - -0.7950790700690211 - ], - [ - -1.4635522422326286, - -0.9413412356337876 - ], - [ - -1.1222521512714252, - -0.9903231895775243 - ], - [ - -0.7414441832010825, - -0.9288502133696408 - ], - [ - -0.3945035980419842, - -0.7692668229314972 - ], - [ - -0.13851089479834414, - -0.5419052573841087 - ], - [ - 0.0014650634280251318, - -0.27580090340665464 - ], - [ - 0.00035541353532586584, - 8.881784197001252e-15 - ] - ] - }, - { - "type": "line", - "version": 410, - "versionNonce": 966401658, - "isDeleted": false, - "id": "euKeE09z5Rn7J0q3h5UWn", - "fillStyle": "cross-hatch", - "strokeWidth": 2, - "strokeStyle": "solid", - "roughness": 1, - "opacity": 100, - "angle": 0, - "x": 423.4896248524046, - "y": 289.25735996575924, - "strokeColor": "#000000", - "backgroundColor": "black", - "width": 1.9483797136929517, - "height": 1.352383771929961, - "seed": 1233054973, - "groupIds": [ - "5H1W_moj_Sm0BoAw7Fq0S", - "M7epUKFIsRBu-b5nc04_q" - ], - "strokeSharpness": "sharp", - "boundElements": [], - "updated": 1662370182112, - "link": null, - "locked": false, - "lastCommittedPoint": null, - "startArrowhead": null, - "endArrowhead": null, - "points": [ - [ - 0, - 0 - ], - [ - 0, - 0 - ], - [ - -0.06908587987279091, - 0.2648346323398263 - ], - [ - -0.2739967049258496, - 0.48322675401117055 - ], - [ - -0.5823871303648629, - 0.6327446160826925 - ], - [ - -0.9619199506367375, - 0.6909510434621473 - ], - [ - -1.3440383365510566, - 0.6447038745840685 - ], - [ - -1.6563817201653208, - 0.5039438361156623 - ], - [ - -1.8681078032391394, - 0.29204140281438773 - ], - [ - -1.948379713692951, - 0.03236162327687497 - ], - [ - -1.8734010231430016, - -0.23411713579884663 - ], - [ - -1.6678037887430897, - -0.4528239747991667 - ], - [ - -1.3605908402073403, - -0.6023852461574308 - ], - [ - -0.9807677203302845, - -0.661432728467815 - ], - [ - -0.600089980120206, - -0.6148437114565256 - ], - [ - -0.2882186724994149, - -0.47407282066642104 - ], - [ - -0.07743402833212791, - -0.26162234511985494 - ], - [ - 0, - 0 - ] - ] - }, - { - "type": "line", - "version": 410, - "versionNonce": 1534631462, - "isDeleted": false, - "id": "UF-filpl9RluBeJBGQPYD", - "fillStyle": "cross-hatch", - "strokeWidth": 2, - "strokeStyle": "solid", - "roughness": 1, - "opacity": 100, - "angle": 0, - "x": 427.2284965646142, - "y": 289.1140496316943, - "strokeColor": "#000000", - "backgroundColor": "black", - "width": 1.9259778086462387, - "height": 1.3648530895507331, - "seed": 1139813715, - "groupIds": [ - "5H1W_moj_Sm0BoAw7Fq0S", - "M7epUKFIsRBu-b5nc04_q" - ], - "strokeSharpness": "sharp", - "boundElements": [], - "updated": 1662370182112, - "link": null, - "locked": false, - "lastCommittedPoint": null, - "startArrowhead": null, - "endArrowhead": null, - "points": [ - [ - 0, - 0 - ], - [ - 0, - 0 - ], - [ - -0.029510175753076212, - 0.2710530126676769 - ], - [ - -0.19767232648644747, - 0.5190991033544856 - ], - [ - -0.4783215046077133, - 0.7174090037401603 - ], - [ - -0.8452819102027805, - 0.8392371670219427 - ], - [ - -1.2267220260115081, - 0.8539257844281334 - ], - [ - -1.5577883776198878, - 0.7654956411445409 - ], - [ - -1.8027741135903699, - 0.5912507641044336 - ], - [ - -1.9259778086462376, - 0.34849518024104975 - ], - [ - -1.8959223037282893, - 0.07219507003669512 - ], - [ - -1.7266125199763014, - -0.17820597445663022 - ], - [ - -1.4465547933870848, - -0.3766623811851162 - ], - [ - -1.0842500337966516, - -0.49713943041660075 - ], - [ - -0.6982031074308885, - -0.5109273051225989 - ], - [ - -0.36663212286396174, - -0.4225948327342146 - ], - [ - -0.12280487223381087, - -0.24725387120350417 - ], - [ - 0, - 0 - ] - ] - }, - { - "type": "arrow", - "version": 638, - "versionNonce": 746864442, - "isDeleted": false, - "id": "7Syn5DvjY3mv9SneA2hDa", - "fillStyle": "cross-hatch", - "strokeWidth": 2, - "strokeStyle": "solid", - "roughness": 2, - "opacity": 90, - "angle": 2.9004652802090014, - "x": 724.4149919536901, - "y": 260.2787493726382, - "strokeColor": "#000000", - "backgroundColor": "transparent", - "width": 228.38375337128218, - "height": 15.970868372722578, - "seed": 2097763325, - "groupIds": [], - "strokeSharpness": "round", - "boundElements": [], - "updated": 1662370182112, - "link": null, - "locked": false, - "startBinding": null, - "endBinding": { - "elementId": "YbM8xe6NaFlLoIbF5ZNkj", - "focus": -0.17179110689191787, - "gap": 13.373552388928942 - }, - "lastCommittedPoint": null, - "startArrowhead": null, - "endArrowhead": "arrow", - "points": [ - [ - 0, - 0 - ], - [ - -228.38375337128218, - -15.970868372722578 - ] - ] - }, - { - "type": "text", - "version": 271, - "versionNonce": 2085480806, - "isDeleted": false, - "id": "XQ_OyjCmixaNfFzBEPv1T", - "fillStyle": "cross-hatch", - "strokeWidth": 2, - "strokeStyle": "solid", - "roughness": 2, - "opacity": 90, - "angle": 6.129944343664711, - "x": 569.9910210639403, - "y": 207.50068931986434, - "strokeColor": "#000000", - "backgroundColor": "transparent", - "width": 127, - "height": 44, - "seed": 1484668851, - "groupIds": [], - "strokeSharpness": "sharp", - "boundElements": [], - "updated": 1662370182112, - "link": null, - "locked": false, - "fontSize": 35.29411764705882, - "fontFamily": 1, - "text": "migrate", - "baseline": 31, - "textAlign": "center", - "verticalAlign": "top", - "containerId": null, - "originalText": "migrate" - }, - { - "type": "arrow", - "version": 373, - "versionNonce": 100374566, - "isDeleted": false, - "id": "WyT8CHCFzENtI1D28JXqX", - "fillStyle": "cross-hatch", - "strokeWidth": 2, - "strokeStyle": "solid", - "roughness": 2, - "opacity": 90, - "angle": 3.172965356582301, - "x": 913.5652581299081, - "y": 224.42325658610133, - "strokeColor": "#000000", - "backgroundColor": "transparent", - "width": 94.08894820589546, - "height": 4.643393316912409, - "seed": 249565469, - "groupIds": [], - "strokeSharpness": "round", - "boundElements": [], - "updated": 1662370182113, - "link": null, - "locked": false, - "startBinding": null, - "endBinding": null, - "lastCommittedPoint": null, - "startArrowhead": null, - "endArrowhead": "arrow", - "points": [ - [ - 0, - 0 - ], - [ - -94.08894820589546, - -4.643393316912409 - ] - ] - }, - { - "type": "text", - "version": 169, - "versionNonce": 457565498, - "isDeleted": false, - "id": "SmrHnQr2mG7pD6XtPNTbF", - "fillStyle": "cross-hatch", - "strokeWidth": 2, - "strokeStyle": "solid", - "roughness": 2, - "opacity": 90, - "angle": 0, - "x": 839, - "y": 191, - "strokeColor": "#000000", - "backgroundColor": "transparent", - "width": 48, - "height": 25, - "seed": 322424893, - "groupIds": [], - "strokeSharpness": "sharp", - "boundElements": [], - "updated": 1662370182113, - "link": null, - "locked": false, - "fontSize": 20, - "fontFamily": 1, - "text": "clone", - "baseline": 18, - "textAlign": "center", - "verticalAlign": "top", - "containerId": null, - "originalText": "clone" - }, - { - "type": "line", - "version": 1825, - "versionNonce": 114495546, - "isDeleted": false, - "id": "GP1wLZ1WFSKU2V50lx_PB", - "fillStyle": "hachure", - "strokeWidth": 1, - "strokeStyle": "solid", - "roughness": 1, - "opacity": 100, - "angle": 0, - "x": 888.2359178299338, - "y": 776.0795466994963, - "strokeColor": "#fa5252", - "backgroundColor": "#fa5252", - "width": 45.45537939093032, - "height": 28.55045143932542, - "seed": 910612326, - "groupIds": [ - "aIlUmEWkA-SaliQpUsuSS" - ], - "strokeSharpness": "round", - "boundElements": [], - "updated": 1662370182114, - "link": null, - "locked": false, - "startBinding": null, - "endBinding": null, - "lastCommittedPoint": null, - "startArrowhead": null, - "endArrowhead": null, - "points": [ - [ - 0, - 0 - ], - [ - 0.09881604215418947, - 5.982999014858631 - ], - [ - 0.39526416861678143, - 12.070962924714806 - ], - [ - 5.533698360634995, - 16.899348094600715 - ], - [ - 15.415302576054616, - 19.313540679543642 - ], - [ - 29.743628688413075, - 19.313540679543664 - ], - [ - 39.52641686167853, - 17.109277884595738 - ], - [ - 44.81307511692804, - 12.9631645321937 - ], - [ - 45.45537939093032, - 5.982999014858641 - ], - [ - 44.71425907477384, - -0.9446840549776787 - ], - [ - 38.735888524444896, - -6.717753279841269 - ], - [ - 28.360204098254336, - -9.23691075978176 - ], - [ - 15.31648653390042, - -9.026980969786704 - ], - [ - 5.089026170941105, - -5.668104329866079 - ], - [ - 0, - 0 - ] - ] - }, - { - "type": "ellipse", - "version": 818, - "versionNonce": 1339074662, - "isDeleted": false, - "id": "tKodUHcxsuZtHeAhdzSw-", - "fillStyle": "solid", - "strokeWidth": 1, - "strokeStyle": "solid", - "roughness": 1, - "opacity": 100, - "angle": 0, - "x": 892.2440967427956, - "y": 767.9926814874417, - "strokeColor": "#fa5252", - "backgroundColor": "#fa5252", - "width": 37.0506282457687, - "height": 14.169503720053175, - "seed": 1472281082, - "groupIds": [ - "aIlUmEWkA-SaliQpUsuSS" - ], - "strokeSharpness": "sharp", - "boundElements": [], - "updated": 1662370182114, - "link": null, - "locked": false - }, - { - "type": "line", - "version": 2658, - "versionNonce": 1362688250, - "isDeleted": false, - "id": "JowGyceWZyekC0DpvNjIf", - "fillStyle": "hachure", - "strokeWidth": 1, - "strokeStyle": "solid", - "roughness": 1, - "opacity": 100, - "angle": 0, - "x": 888.4363535962191, - "y": 792.2718279844214, - "strokeColor": "#fa5252", - "backgroundColor": "#fa5252", - "width": 44.75215216926839, - "height": 18.44773266062176, - "seed": 1803745958, - "groupIds": [ - "aIlUmEWkA-SaliQpUsuSS" - ], - "strokeSharpness": "round", - "boundElements": [], - "updated": 1662370182114, - "link": null, - "locked": false, - "startBinding": null, - "endBinding": null, - "lastCommittedPoint": null, - "startArrowhead": null, - "endArrowhead": null, - "points": [ - [ - 0, - 0 - ], - [ - 0.09881604215418954, - 5.7359953692677355 - ], - [ - 0.8360931732406627, - 12.188788492529767 - ], - [ - 6.415356369882757, - 16.27013404810402 - ], - [ - 16.076546082990426, - 18.44773266062176 - ], - [ - 30.037514691495648, - 18.37926974325645 - ], - [ - 38.718230353201484, - 16.745248712978196 - ], - [ - 43.80546596350205, - 13.229984141597614 - ], - [ - 44.75215216926839, - 6.987888715376405 - ], - [ - 44.596758549161464, - 0.571547384474486 - ], - [ - 43.265820916723996, - 1.4122752942962638 - ], - [ - 38.05365316014614, - 3.8485825851177227 - ], - [ - 29.399301037724893, - 5.462958347950173 - ], - [ - 16.785916549313352, - 5.625099676297176 - ], - [ - 6.663415473169238, - 3.7594908843371635 - ], - [ - 0, - 0 - ] - ] - }, - { - "type": "line", - "version": 2737, - "versionNonce": 900377510, - "isDeleted": false, - "id": "LQXzCv6fh_FAdDQyf1dnl", - "fillStyle": "hachure", - "strokeWidth": 1, - "strokeStyle": "solid", - "roughness": 1, - "opacity": 100, - "angle": 0, - "x": 888.4575305030959, - "y": 807.7379899328757, - "strokeColor": "#fa5252", - "backgroundColor": "#fa5252", - "width": 44.75215216926839, - "height": 17.929281850049776, - "seed": 1044114106, - "groupIds": [ - "aIlUmEWkA-SaliQpUsuSS" - ], - "strokeSharpness": "round", - "boundElements": [], - "updated": 1662370182114, - "link": null, - "locked": false, - "startBinding": null, - "endBinding": null, - "lastCommittedPoint": null, - "startArrowhead": null, - "endArrowhead": null, - "points": [ - [ - 0, - 0 - ], - [ - 0.09881604215418954, - 5.5747922825067295 - ], - [ - 0.8360931732406627, - 11.846237600769971 - ], - [ - 6.415356369882757, - 15.812881965122543 - ], - [ - 16.076546082990426, - 17.929281850049776 - ], - [ - 30.037514691495648, - 17.862742998674317 - ], - [ - 38.718230353201484, - 16.274644117379026 - ], - [ - 43.80546596350205, - 12.858171728210504 - ], - [ - 44.75215216926839, - 6.791502707658123 - ], - [ - 44.596758549161464, - 0.5554847490161138 - ], - [ - 43.265820916723996, - 1.3725850361735614 - ], - [ - 38.05365316014614, - 3.7404229105650506 - ], - [ - 29.399301037724893, - 5.3094286304656295 - ], - [ - 16.785916549313352, - 5.467013176434269 - ], - [ - 6.663415473169238, - 3.653835022330706 - ], - [ - 0, - 0 - ] - ] - }, - { - "type": "rectangle", - "version": 718, - "versionNonce": 419265594, - "isDeleted": false, - "id": "0vx83HbQv2HvAfR2WHYzx", - "fillStyle": "cross-hatch", - "strokeWidth": 2, - "strokeStyle": "solid", - "roughness": 2, - "opacity": 100, - "angle": 0, - "x": 869.5, - "y": 755.6981132075472, - "strokeColor": "#000000", - "backgroundColor": "transparent", - "width": 82.99999999999996, - "height": 78.30188679245282, - "seed": 986179194, - "groupIds": [], - "strokeSharpness": "sharp", - "boundElements": [], - "updated": 1662376543308, - "link": null, - "locked": false - }, - { - "type": "text", - "version": 517, - "versionNonce": 803358438, - "isDeleted": false, - "id": "g1zqTtCSN4y0R3bNwm5QR", - "fillStyle": "cross-hatch", - "strokeWidth": 2, - "strokeStyle": "solid", - "roughness": 2, - "opacity": 100, - "angle": 0, - "x": 889.5, - "y": 728.5, - "strokeColor": "#000000", - "backgroundColor": "transparent", - "width": 43, - "height": 25, - "seed": 1419797434, - "groupIds": [], - "strokeSharpness": "sharp", - "boundElements": [ - { - "id": "RN13O3v7s67B4r3OLdUG1", - "type": "arrow" - } - ], - "updated": 1662370182114, - "link": null, - "locked": false, - "fontSize": 20, - "fontFamily": 1, - "text": "ODF", - "baseline": 18, - "textAlign": "center", - "verticalAlign": "top", - "containerId": null, - "originalText": "ODF" - } - ], - "appState": { - "gridSize": null, - "viewBackgroundColor": "#ffffff" - }, - "files": {} -} \ No newline at end of file diff --git a/excalidraw/workshop_architecture_stackrox.excalidraw b/excalidraw/workshop_architecture_stackrox.excalidraw deleted file mode 100644 index 3888b9f..0000000 --- a/excalidraw/workshop_architecture_stackrox.excalidraw +++ /dev/null @@ -1,9265 +0,0 @@ -{ - "type": "excalidraw", - "version": 2, - "source": "https://excalidraw.com", - "elements": [ - { - "type": "rectangle", - "version": 802, - "versionNonce": 1156455482, - "isDeleted": false, - "id": "aCEE8GhXJyiI15OYj-PtO", - "fillStyle": "cross-hatch", - "strokeWidth": 2, - "strokeStyle": "solid", - "roughness": 2, - "opacity": 100, - "angle": 0, - "x": 1129, - "y": 344.7878787878785, - "strokeColor": "#000000", - "backgroundColor": "transparent", - "width": 228.6666666666667, - "height": 224.21212121212136, - "seed": 1921109149, - "groupIds": [], - "strokeSharpness": "sharp", - "boundElements": [], - "updated": 1662377013459, - "link": null, - "locked": false - }, - { - "type": "text", - "version": 708, - "versionNonce": 806520058, - "isDeleted": false, - "id": "1df0UH0SLiIgY9wx9MNc5", - "fillStyle": "cross-hatch", - "strokeWidth": 2, - "strokeStyle": "solid", - "roughness": 2, - "opacity": 100, - "angle": 0, - "x": 1135.5681818181813, - "y": 323, - "strokeColor": "#000000", - "backgroundColor": "transparent", - "width": 86.86363636363646, - "height": 37.121212121212146, - "seed": 2028306067, - "groupIds": [], - "strokeSharpness": "sharp", - "boundElements": [], - "updated": 1662377013459, - "link": null, - "locked": false, - "fontSize": 14.84848484848486, - "fontFamily": 1, - "text": "workshop-int\n", - "baseline": 31.121212121212146, - "textAlign": "center", - "verticalAlign": "top", - "containerId": null, - "originalText": "workshop-int\n" - }, - { - "type": "rectangle", - "version": 1893, - "versionNonce": 1946148774, - "isDeleted": false, - "id": "WfGIRX8nYQy4AUcSeR6I1", - "fillStyle": "cross-hatch", - "strokeWidth": 1, - "strokeStyle": "solid", - "roughness": 2, - "opacity": 100, - "angle": 0, - "x": 1176.7170279974796, - "y": 390.3843234864305, - "strokeColor": "#5665dc", - "backgroundColor": "#5665dc", - "width": 128.77806521716136, - "height": 119.77709684080031, - "seed": 257666643, - "groupIds": [ - "0juXsMdVUXFekjks8pcBc" - ], - "strokeSharpness": "round", - "boundElements": [ - { - "id": "IdDsqRoxUzCm_nD_ZpV20", - "type": "arrow" - } - ], - "updated": 1662377013459, - "link": null, - "locked": false - }, - { - "type": "rectangle", - "version": 1917, - "versionNonce": 875287994, - "isDeleted": false, - "id": "bWXOj_zq2Qi_SVGQTDWQG", - "fillStyle": "solid", - "strokeWidth": 1, - "strokeStyle": "solid", - "roughness": 2, - "opacity": 100, - "angle": 0, - "x": 1184.2357316400507, - "y": 397.83670420412227, - "strokeColor": "#5665dc", - "backgroundColor": "#ffffff", - "width": 114.862883930759, - "height": 103.99224071972951, - "seed": 1748718685, - "groupIds": [ - "0juXsMdVUXFekjks8pcBc" - ], - "strokeSharpness": "round", - "boundElements": [ - { - "id": "YGLbIKYvHLJ7195OM_YrC", - "type": "arrow" - }, - { - "id": "IdDsqRoxUzCm_nD_ZpV20", - "type": "arrow" - } - ], - "updated": 1662377013459, - "link": null, - "locked": false - }, - { - "type": "line", - "version": 2083, - "versionNonce": 1433467622, - "isDeleted": false, - "id": "lcDPG43gFhHt9aIby4doG", - "fillStyle": "cross-hatch", - "strokeWidth": 1, - "strokeStyle": "solid", - "roughness": 1, - "opacity": 100, - "angle": 1.5774237450700657, - "x": 1253.8860691305404, - "y": 417.3889650545235, - "strokeColor": "#c92a2a", - "backgroundColor": "#fa5252", - "width": 74.68679229074219, - "height": 64.68064292907803, - "seed": 1259891699, - "groupIds": [ - "0juXsMdVUXFekjks8pcBc" - ], - "strokeSharpness": "sharp", - "boundElements": [], - "updated": 1662377013459, - "link": null, - "locked": false, - "lastCommittedPoint": null, - "startArrowhead": null, - "endArrowhead": null, - "points": [ - [ - 0, - 0 - ], - [ - 37.343396145371045, - 64.68064292907785 - ], - [ - -37.343396145371145, - 64.68064292907803 - ], - [ - 0, - 0 - ] - ] - }, - { - "type": "line", - "version": 2509, - "versionNonce": 844959354, - "isDeleted": false, - "id": "JTnJL06DYdPzU92et-hzK", - "fillStyle": "cross-hatch", - "strokeWidth": 1, - "strokeStyle": "solid", - "roughness": 1, - "opacity": 100, - "angle": 4.721247315744137, - "x": 1232.734836722075, - "y": 418.0927781258739, - "strokeColor": "#5665dc", - "backgroundColor": "#5665dc", - "width": 74.68679229074219, - "height": 64.68064292907803, - "seed": 1642774717, - "groupIds": [ - "0juXsMdVUXFekjks8pcBc" - ], - "strokeSharpness": "sharp", - "boundElements": [], - "updated": 1662377013459, - "link": null, - "locked": false, - "lastCommittedPoint": null, - "startArrowhead": null, - "endArrowhead": null, - "points": [ - [ - 0, - 0 - ], - [ - 37.343396145371045, - 64.68064292907785 - ], - [ - -37.343396145371145, - 64.68064292907803 - ], - [ - 0, - 0 - ] - ] - }, - { - "type": "line", - "version": 2831, - "versionNonce": 2023534118, - "isDeleted": false, - "id": "iBdZ_9MMf6SLDTGeAMAB1", - "fillStyle": "cross-hatch", - "strokeWidth": 1, - "strokeStyle": "solid", - "roughness": 1, - "opacity": 100, - "angle": 0.0005581869343673773, - "x": 1242.0581191009499, - "y": 477.99447587916006, - "strokeColor": "#5665dc", - "backgroundColor": "#5665dc", - "width": 28.93008917102277, - "height": 29.85184214744162, - "seed": 397178259, - "groupIds": [ - "0juXsMdVUXFekjks8pcBc" - ], - "strokeSharpness": "sharp", - "boundElements": [], - "updated": 1662377013459, - "link": null, - "locked": false, - "lastCommittedPoint": null, - "startArrowhead": null, - "endArrowhead": null, - "points": [ - [ - 0, - 0 - ], - [ - 14.465044585511265, - 29.851842147441538 - ], - [ - -14.465044585511507, - 29.85184214744163 - ], - [ - 0, - 0 - ] - ] - }, - { - "type": "rectangle", - "version": 1845, - "versionNonce": 1869164346, - "isDeleted": false, - "id": "H-tSugrM2myy28GQY2IZv", - "fillStyle": "solid", - "strokeWidth": 1, - "strokeStyle": "solid", - "roughness": 2, - "opacity": 100, - "angle": 5.989889724533434, - "x": 1256.0540733522507, - "y": 496.63040678225923, - "strokeColor": "#ffffff", - "backgroundColor": "#ffffff", - "width": 10.160337121913365, - "height": 16.284127669015405, - "seed": 1605214493, - "groupIds": [ - "0juXsMdVUXFekjks8pcBc" - ], - "strokeSharpness": "round", - "boundElements": [], - "updated": 1662377013459, - "link": null, - "locked": false - }, - { - "type": "line", - "version": 1770, - "versionNonce": 2054158694, - "isDeleted": false, - "id": "VUXao9dORybHOlVhrhCXA", - "fillStyle": "cross-hatch", - "strokeWidth": 1, - "strokeStyle": "solid", - "roughness": 1, - "opacity": 100, - "angle": 0, - "x": 1244.747048670161, - "y": 427.39842400693544, - "strokeColor": "#000000", - "backgroundColor": "#000000", - "width": 40.55361696256771, - "height": 48.4326346843801, - "seed": 1951288115, - "groupIds": [ - "0juXsMdVUXFekjks8pcBc" - ], - "strokeSharpness": "sharp", - "boundElements": [], - "updated": 1662377013459, - "link": null, - "locked": false, - "lastCommittedPoint": null, - "startArrowhead": null, - "endArrowhead": null, - "points": [ - [ - 0, - 0 - ], - [ - 20.27680848128371, - 12.108158671094856 - ], - [ - 20.2768084812838, - 36.32447601328501 - ], - [ - -2.4868995751603507e-14, - 48.432634684380105 - ], - [ - -20.276808481283926, - 36.32447601328466 - ], - [ - -20.2768084812839, - 12.10815867109517 - ], - [ - 0, - 0 - ] - ] - }, - { - "type": "line", - "version": 1608, - "versionNonce": 531838970, - "isDeleted": false, - "id": "nHMEw2NpxPNvOcrQiy5_c", - "fillStyle": "hachure", - "strokeWidth": 2, - "strokeStyle": "solid", - "roughness": 1, - "opacity": 100, - "angle": 0, - "x": 1221.6645102830248, - "y": 434.3448499324527, - "strokeColor": "#ffffff", - "backgroundColor": "#ffffff", - "width": 20.313407099735958, - "height": 14.916654339445962, - "seed": 1995797885, - "groupIds": [ - "0juXsMdVUXFekjks8pcBc" - ], - "strokeSharpness": "round", - "boundElements": [], - "updated": 1662377013459, - "link": null, - "locked": false, - "startBinding": null, - "endBinding": null, - "lastCommittedPoint": null, - "startArrowhead": null, - "endArrowhead": null, - "points": [ - [ - 0, - 0 - ], - [ - 20.313407099735958, - 14.916654339445962 - ] - ] - }, - { - "type": "line", - "version": 1496, - "versionNonce": 1379392678, - "isDeleted": false, - "id": "K8W9xzsZzyiKou_xdzPIZ", - "fillStyle": "hachure", - "strokeWidth": 1, - "strokeStyle": "solid", - "roughness": 2, - "opacity": 100, - "angle": 0, - "x": 1232.5309223904987, - "y": 443.6306971486025, - "strokeColor": "#ffffff", - "backgroundColor": "#ffffff", - "width": 4.345730696797424, - "height": 3.1371796212345773, - "seed": 895773907, - "groupIds": [ - "0juXsMdVUXFekjks8pcBc" - ], - "strokeSharpness": "round", - "boundElements": [], - "updated": 1662377013459, - "link": null, - "locked": false, - "startBinding": null, - "endBinding": null, - "lastCommittedPoint": null, - "startArrowhead": null, - "endArrowhead": null, - "points": [ - [ - 0, - 0 - ], - [ - 4.345730696797424, - 3.1371796212345773 - ] - ] - }, - { - "type": "line", - "version": 1717, - "versionNonce": 1933453498, - "isDeleted": false, - "id": "xw4komaULiQXoDHT1Xp2j", - "fillStyle": "hachure", - "strokeWidth": 2, - "strokeStyle": "solid", - "roughness": 1, - "opacity": 100, - "angle": 0, - "x": 1240.150726932103, - "y": 448.11548902064965, - "strokeColor": "#ffffff", - "backgroundColor": "#ffffff", - "width": 0.9367207423221638, - "height": 27.610906202643964, - "seed": 319012317, - "groupIds": [ - "0juXsMdVUXFekjks8pcBc" - ], - "strokeSharpness": "round", - "boundElements": [], - "updated": 1662377013459, - "link": null, - "locked": false, - "startBinding": null, - "endBinding": null, - "lastCommittedPoint": null, - "startArrowhead": null, - "endArrowhead": null, - "points": [ - [ - 0, - 0 - ], - [ - 0.9367207423221638, - 27.610906202643964 - ] - ] - }, - { - "type": "line", - "version": 1704, - "versionNonce": 94459878, - "isDeleted": false, - "id": "_yJjDOoKnsMWnTrt1wA0a", - "fillStyle": "hachure", - "strokeWidth": 2, - "strokeStyle": "solid", - "roughness": 1, - "opacity": 100, - "angle": 0, - "x": 1241.4693408347428, - "y": 451.69040493910006, - "strokeColor": "#ffffff", - "backgroundColor": "#ffffff", - "width": 22.989466928068946, - "height": 14.660400645027837, - "seed": 1585797747, - "groupIds": [ - "0juXsMdVUXFekjks8pcBc" - ], - "strokeSharpness": "round", - "boundElements": [], - "updated": 1662377013459, - "link": null, - "locked": false, - "startBinding": null, - "endBinding": null, - "lastCommittedPoint": null, - "startArrowhead": null, - "endArrowhead": null, - "points": [ - [ - 0, - 0 - ], - [ - 22.989466928068946, - -14.660400645027837 - ] - ] - }, - { - "type": "rectangle", - "version": 311, - "versionNonce": 564986234, - "isDeleted": false, - "id": "eRALweam41mM0DJnwBGGj", - "fillStyle": "cross-hatch", - "strokeWidth": 2, - "strokeStyle": "solid", - "roughness": 1, - "opacity": 100, - "angle": 0, - "x": 321, - "y": 92, - "strokeColor": "#000000", - "backgroundColor": "transparent", - "width": 1567, - "height": 789, - "seed": 1623179475, - "groupIds": [], - "strokeSharpness": "sharp", - "boundElements": [], - "updated": 1662377013459, - "link": null, - "locked": false - }, - { - "type": "text", - "version": 774, - "versionNonce": 1555655462, - "isDeleted": false, - "id": "0WlhYvkWB8XZHimUWgYTe", - "fillStyle": "cross-hatch", - "strokeWidth": 2, - "strokeStyle": "solid", - "roughness": 2, - "opacity": 100, - "angle": 0.0773666766259069, - "x": 1088.0876812573165, - "y": 207.409227074606, - "strokeColor": "#000000", - "backgroundColor": "transparent", - "width": 97.03908202421952, - "height": 20.913595263840417, - "seed": 633111965, - "groupIds": [], - "strokeSharpness": "sharp", - "boundElements": [], - "updated": 1662377013459, - "link": null, - "locked": false, - "fontSize": 16.730876211072335, - "fontFamily": 1, - "text": "build&deploy", - "baseline": 14.913595263840417, - "textAlign": "center", - "verticalAlign": "top", - "containerId": null, - "originalText": "build&deploy" - }, - { - "type": "text", - "version": 318, - "versionNonce": 1984086586, - "isDeleted": false, - "id": "AK892q6caE6tpWTkF5uAE", - "fillStyle": "cross-hatch", - "strokeWidth": 2, - "strokeStyle": "solid", - "roughness": 1, - "opacity": 90, - "angle": 0, - "x": 717, - "y": 86, - "strokeColor": "#000000", - "backgroundColor": "transparent", - "width": 758.9142857142855, - "height": 57.00000000000001, - "seed": 354860339, - "groupIds": [], - "strokeSharpness": "sharp", - "boundElements": [], - "updated": 1662377013459, - "link": null, - "locked": false, - "fontSize": 45.6, - "fontFamily": 1, - "text": "DevSecOps Workshop Architecture", - "baseline": 40.00000000000001, - "textAlign": "center", - "verticalAlign": "top", - "containerId": null, - "originalText": "DevSecOps Workshop Architecture" - }, - { - "type": "rectangle", - "version": 747, - "versionNonce": 367859302, - "isDeleted": false, - "id": "8WrqvqiAjc00nYNjo9gZk", - "fillStyle": "cross-hatch", - "strokeWidth": 2, - "strokeStyle": "solid", - "roughness": 1, - "opacity": 90, - "angle": 0, - "x": 570, - "y": 139, - "strokeColor": "#000000", - "backgroundColor": "transparent", - "width": 1281, - "height": 704, - "seed": 1254526419, - "groupIds": [], - "strokeSharpness": "sharp", - "boundElements": [], - "updated": 1662377013459, - "link": null, - "locked": false - }, - { - "type": "line", - "version": 4476, - "versionNonce": 1541565178, - "isDeleted": false, - "id": "wntYgz6uM6s_HBN_KMR65", - "fillStyle": "hachure", - "strokeWidth": 2, - "strokeStyle": "solid", - "roughness": 1, - "opacity": 90, - "angle": 0, - "x": 320.5892304662775, - "y": 65.49173531033286, - "strokeColor": "#c92a2a", - "backgroundColor": "#fa5252", - "width": 130.6580031652458, - "height": 93.55764515124328, - "seed": 717152627, - "groupIds": [ - "g_ZYKV0PmWmJecyAyG0vE" - ], - "strokeSharpness": "round", - "boundElements": [], - "updated": 1662377013459, - "link": null, - "locked": false, - "startBinding": null, - "endBinding": null, - "lastCommittedPoint": null, - "startArrowhead": null, - "endArrowhead": null, - "points": [ - [ - 0, - 0 - ], - [ - 6.751631440482483, - -21.744604760402623 - ], - [ - 12.071098636014012, - -38.24051182001862 - ], - [ - 18.20894540008893, - -49.35058995627114 - ], - [ - 27.006525761929773, - -51.276549057875634 - ], - [ - 38.05464993726463, - -45.7889736593089 - ], - [ - 49.30736900473541, - -53.271073770767785 - ], - [ - 68.33469397336775, - -50.612442114730406 - ], - [ - 102.50204096005159, - -39.927593223842734 - ], - [ - 115.80070894888058, - -28.30547688638609 - ], - [ - 130.6580031652458, - 28.060398329301506 - ], - [ - 111.81824232503068, - 40.286571380475486 - ], - [ - 72.14386401439745, - 36.91440176652914 - ], - [ - 17.18597093940944, - 18.485072139848473 - ], - [ - 0, - 0 - ] - ] - }, - { - "type": "line", - "version": 4660, - "versionNonce": 436820390, - "isDeleted": false, - "id": "JyadeZaz-nApBsaSLy5p6", - "fillStyle": "hachure", - "strokeWidth": 2, - "strokeStyle": "solid", - "roughness": 1, - "opacity": 90, - "angle": 0, - "x": 319.2790907030394, - "y": 70.7991843340742, - "strokeColor": "#c92a2a", - "backgroundColor": "#fa5252", - "width": 216.87058566398125, - "height": 105.98015412636072, - "seed": 238052157, - "groupIds": [ - "g_ZYKV0PmWmJecyAyG0vE" - ], - "strokeSharpness": "round", - "boundElements": [], - "updated": 1662377013459, - "link": null, - "locked": false, - "startBinding": null, - "endBinding": null, - "lastCommittedPoint": null, - "startArrowhead": null, - "endArrowhead": null, - "points": [ - [ - 0, - 0 - ], - [ - -19.027324968632406, - 3.2735182741733384 - ], - [ - -32.53058784959727, - 7.5700110090258 - ], - [ - -40.714383535030386, - 19.027324968632367 - ], - [ - -40.305193750758825, - 39.282219290079546 - ], - [ - -25.36976662484299, - 58.309544258712016 - ], - [ - 7.774605901161586, - 81.01957728578927 - ], - [ - 74.67713562957849, - 103.93420520500231 - ], - [ - 127.87180758489482, - 105.98015412636072 - ], - [ - 165.92645752215952, - 89.2033729712225 - ], - [ - 176.1562021289509, - 64.03820123851503 - ], - [ - 161.425369895171, - 38.05464993726463 - ], - [ - 136.66938794673536, - 25.36976662484304 - ], - [ - 138.53203043061052, - 34.30658204206115 - ], - [ - 136.66289389782435, - 46.66466617069298 - ], - [ - 123.19518701709988, - 53.308145840076726 - ], - [ - 102.76773799801693, - 57.02513045099989 - ], - [ - 69.97145311045328, - 50.813408468305106 - ], - [ - 30.689233820376245, - 36.692103220002295 - ], - [ - 11.61922442992149, - 25.902010098469074 - ], - [ - -0.6265577491993763, - 11.526931487294902 - ], - [ - 0, - 0 - ] - ] - }, - { - "type": "line", - "version": 3932, - "versionNonce": 1762589626, - "isDeleted": false, - "id": "7SyGlpzJiL-b6p38pAfBy", - "fillStyle": "hachure", - "strokeWidth": 2, - "strokeStyle": "solid", - "roughness": 1, - "opacity": 90, - "angle": 0, - "x": 321.0994122611919, - "y": 64.29856312402173, - "strokeColor": "#000000", - "backgroundColor": "#111111", - "width": 139.45788662720503, - "height": 62.401442101428636, - "seed": 1978153747, - "groupIds": [ - "g_ZYKV0PmWmJecyAyG0vE" - ], - "strokeSharpness": "round", - "boundElements": [], - "updated": 1662377013459, - "link": null, - "locked": false, - "startBinding": null, - "endBinding": null, - "lastCommittedPoint": null, - "startArrowhead": null, - "endArrowhead": null, - "points": [ - [ - 0, - 0 - ], - [ - 22.804818964804006, - 21.687058566398193 - ], - [ - 86.12085708379372, - 41.73735799570947 - ], - [ - 125.37374612577968, - 38.463839721536395 - ], - [ - 130.37165585906067, - 26.392741085522232 - ], - [ - 135.7254606218297, - 45.82925583842618 - ], - [ - 128.13291561740596, - 58.104949366576136 - ], - [ - 104.83377820588099, - 62.401442101428636 - ], - [ - 71.03520296880636, - 58.923328935119315 - ], - [ - 24.796399983098315, - 43.16952224066042 - ], - [ - 1.590617998009283, - 24.551387056299777 - ], - [ - -3.7324260053752747, - 14.321642449508143 - ], - [ - 0, - 0 - ] - ] - }, - { - "type": "line", - "version": 747, - "versionNonce": 809186534, - "isDeleted": false, - "id": "f5KYH-B9kAnWXXo51R9-H", - "fillStyle": "cross-hatch", - "strokeWidth": 1, - "strokeStyle": "solid", - "roughness": 1, - "opacity": 100, - "angle": 0, - "x": 1812.0073727222634, - "y": 145.00498424785317, - "strokeColor": "#db212f", - "backgroundColor": "#db212f", - "width": 15.057127222627372, - "height": 12.261063255147196, - "seed": 300826365, - "groupIds": [ - "XlWWhul_UJlIc-Kn2RdKM", - "-Hi40yyCOS2FYhEDrTPcO" - ], - "strokeSharpness": "sharp", - "boundElements": [], - "updated": 1662377013459, - "link": null, - "locked": false, - "lastCommittedPoint": null, - "startArrowhead": null, - "endArrowhead": null, - "points": [ - [ - 0, - 0 - ], - [ - -14.616681342596005, - 5.324819892381999 - ], - [ - -14.616681342596005, - 5.324819892381999 - ], - [ - -14.17376881036628, - 8.82008778368913 - ], - [ - -13.456338021439967, - 12.259542418501105 - ], - [ - 0.44044588003136376, - 7.197468058759137 - ], - [ - 0.44044588003136376, - 7.197468058759137 - ], - [ - -0.011390342271196507, - 3.6270215909966614 - ], - [ - 0.015188088638847574, - -0.0015208366460921496 - ] - ] - }, - { - "type": "line", - "version": 746, - "versionNonce": 1810592890, - "isDeleted": false, - "id": "bc07NLfZ6wBrmPN4gV5sW", - "fillStyle": "cross-hatch", - "strokeWidth": 1, - "strokeStyle": "solid", - "roughness": 1, - "opacity": 100, - "angle": 0, - "x": 1876.872135362504, - "y": 128.39985372330213, - "strokeColor": "#db212f", - "backgroundColor": "#db212f", - "width": 18.197948925199313, - "height": 11.115906574214128, - "seed": 2052520787, - "groupIds": [ - "XlWWhul_UJlIc-Kn2RdKM", - "-Hi40yyCOS2FYhEDrTPcO" - ], - "strokeSharpness": "sharp", - "boundElements": [], - "updated": 1662377013459, - "link": null, - "locked": false, - "lastCommittedPoint": null, - "startArrowhead": null, - "endArrowhead": null, - "points": [ - [ - 0, - 0 - ], - [ - 0, - 0 - ], - [ - -1.6547050329147124, - -3.099058079854779 - ], - [ - -3.5691168220090894, - -6.056870990932633 - ], - [ - -18.197948925199313, - -0.7320496501346963 - ], - [ - -18.197948925199313, - -0.7320496501346963 - ], - [ - -15.849545397116387, - 2.0319304577765314 - ], - [ - -13.899821229515979, - 5.059035583281502 - ], - [ - 0, - 0 - ] - ] - }, - { - "type": "line", - "version": 747, - "versionNonce": 839886886, - "isDeleted": false, - "id": "WI1EejQvjeUV9LSZ1ot1W", - "fillStyle": "cross-hatch", - "strokeWidth": 1, - "strokeStyle": "solid", - "roughness": 1, - "opacity": 100, - "angle": 0, - "x": 1844.741511980074, - "y": 124.46697546257788, - "strokeColor": "#db212f", - "backgroundColor": "#db212f", - "width": 75.81253322810664, - "height": 45.04589164255064, - "seed": 925325149, - "groupIds": [ - "pBHxrM3AqO8CWPQXmIOZ-", - "-Hi40yyCOS2FYhEDrTPcO" - ], - "strokeSharpness": "sharp", - "boundElements": [], - "updated": 1662377013459, - "link": null, - "locked": false, - "lastCommittedPoint": null, - "startArrowhead": null, - "endArrowhead": null, - "points": [ - [ - 0, - 0 - ], - [ - 0, - 0 - ], - [ - 4.259402849426743, - 2.4949658314576624 - ], - [ - 7.903704041554605, - 5.630095259725732 - ], - [ - 22.53405408455911, - 0.3052739189279503 - ], - [ - 22.53405408455911, - 0.3052739189279503 - ], - [ - 19.138173592281127, - -3.8673601303844958 - ], - [ - 15.24909012092732, - -7.552422641459149 - ], - [ - 10.918506322800576, - -10.706893490825568 - ], - [ - 6.19811905654128, - -13.287754727637926 - ], - [ - 2.234222009527124, - -14.897026214166894 - ], - [ - -1.7961109758512919, - -16.07522705437966 - ], - [ - -5.864716901740125, - -16.83260913568656 - ], - [ - -9.943409595632126, - -17.179423621290262 - ], - [ - -14.004023162841754, - -17.12592239860094 - ], - [ - -18.01837722452531, - -16.682356992925172 - ], - [ - -21.95830009233396, - -15.858980015881567 - ], - [ - -25.795617181087014, - -14.666041906464322 - ], - [ - -29.502151008772366, - -13.113795638395903 - ], - [ - -33.049732783873026, - -11.212492012774932 - ], - [ - -36.410182127544914, - -8.972383641219674 - ], - [ - -39.55533024827102, - -6.4037216869325295 - ], - [ - -42.4569982156232, - -3.5167565889083434 - ], - [ - -45.087012892836896, - -0.32174240718104485 - ], - [ - -47.41720114314734, - 3.171070419254548 - ], - [ - -49.41938765716614, - 6.951430002988154 - ], - [ - -51.37716284428783, - 11.962969133604677 - ], - [ - -52.667513799822046, - 17.163459905961766 - ], - [ - -53.278479143547536, - 22.486695231400166 - ], - [ - -53.19809749524285, - 27.866468021260374 - ], - [ - -38.56622733980009, - 22.543163171861146 - ], - [ - -38.56622733980009, - 22.543163171861146 - ], - [ - -37.78918554801086, - 17.799841688978947 - ], - [ - -36.131632929528294, - 13.151064102512025 - ], - [ - -33.31672507179529, - 8.424778886897506 - ], - [ - -29.722953315129445, - 4.472764643544799 - ], - [ - -25.496669942606843, - 1.348259345561452 - ], - [ - -20.784231582550888, - -0.8955077244395149 - ], - [ - -15.731989069621903, - -2.2052985933502995 - ], - [ - -10.486301928975067, - -2.5278810817263966 - ], - [ - -5.193520995270404, - -1.8100201132916165 - ], - [ - 5.684352728102526e-14, - 0.0015193882302124706 - ] - ] - }, - { - "type": "line", - "version": 746, - "versionNonce": 1983567162, - "isDeleted": false, - "id": "6oij0WK_m7aP1lp6Uqqr7", - "fillStyle": "cross-hatch", - "strokeWidth": 1, - "strokeStyle": "solid", - "roughness": 1, - "opacity": 100, - "angle": 0, - "x": 1799.8921534112642, - "y": 156.69499793638806, - "strokeColor": "#db212f", - "backgroundColor": "#db212f", - "width": 21.135260958288036, - "height": 19.23375745127928, - "seed": 857872627, - "groupIds": [ - "xe1BDv0Ik6eS3i_ZaaVrg", - "-Hi40yyCOS2FYhEDrTPcO" - ], - "strokeSharpness": "sharp", - "boundElements": [], - "updated": 1662377013459, - "link": null, - "locked": false, - "lastCommittedPoint": null, - "startArrowhead": null, - "endArrowhead": null, - "points": [ - [ - 0, - 0 - ], - [ - -13.901339169330232, - 5.060556419927578 - ], - [ - -13.901339169330232, - 5.060556419927578 - ], - [ - -12.769757584931266, - 8.810053158656753 - ], - [ - -11.295882201859168, - 12.43895479343112 - ], - [ - -9.490534497058649, - 15.92119563255274 - ], - [ - -7.364535585370593, - 19.230721571650527 - ], - [ - 7.233921788957807, - 13.915012214986383 - ], - [ - 7.233921788957807, - 13.915012214986383 - ], - [ - 4.6748345876696735, - 10.861247547283575 - ], - [ - 2.596717045159691, - 7.486259005275251 - ], - [ - 1.0287214273092773, - 3.84613504446863 - ], - [ - -7.105427357601002e-15, - -0.003035879628753513 - ] - ] - }, - { - "type": "line", - "version": 745, - "versionNonce": 1064547174, - "isDeleted": false, - "id": "lXLhUsF6cIPdCalY9LsXj", - "fillStyle": "cross-hatch", - "strokeWidth": 1, - "strokeStyle": "solid", - "roughness": 1, - "opacity": 100, - "angle": 0, - "x": 1860.513037699569, - "y": 151.0961531026524, - "strokeColor": "#db212f", - "backgroundColor": "#db212f", - "width": 75.78996437438275, - "height": 45.03934263026952, - "seed": 442393533, - "groupIds": [ - "PDMHehvMnDWQoTOJluHvO", - "-Hi40yyCOS2FYhEDrTPcO" - ], - "strokeSharpness": "sharp", - "boundElements": [], - "updated": 1662377013459, - "link": null, - "locked": false, - "lastCommittedPoint": null, - "startArrowhead": null, - "endArrowhead": null, - "points": [ - [ - 0, - 0 - ], - [ - 0, - 0 - ], - [ - -0.7979612619600112, - 4.809693690948873 - ], - [ - -2.454340663601258, - 9.395140742641292 - ], - [ - -5.269186239452615, - 14.121420164592262 - ], - [ - -8.862810257701469, - 18.07341123329136 - ], - [ - -13.088905336163094, - 21.197864388304026 - ], - [ - -17.801175679979963, - 23.441518481868417 - ], - [ - -22.853313906967415, - 24.751129747213415 - ], - [ - -28.09903291276312, - 25.073442830240726 - ], - [ - -33.392019521518975, - 24.3552023768524 - ], - [ - -38.5859779383772, - 22.543164620276947 - ], - [ - -42.80189644705284, - 20.093852856518723 - ], - [ - -46.506385111553286, - 16.92369928449945 - ], - [ - -61.10484103746573, - 22.239408641163465 - ], - [ - -61.10484103746573, - 22.239408641163465 - ], - [ - -57.800106458011086, - 26.318906654269917 - ], - [ - -53.96413349916998, - 29.986486785993755 - ], - [ - -49.617567880516816, - 33.17992509127249 - ], - [ - -44.781055321626326, - 35.83699762504376 - ], - [ - -40.81719303659254, - 37.44623398748825 - ], - [ - -36.786952749828814, - 38.62433488700707 - ], - [ - -32.71850035602038, - 39.38156669516916 - ], - [ - -28.639998853021027, - 39.72818998988028 - ], - [ - -24.579617032347983, - 39.6744595553821 - ], - [ - -20.565517891854626, - 39.23063596958054 - ], - [ - -16.62587311988986, - 38.40698560404443 - ], - [ - -12.788839920643921, - 37.21376324301611 - ], - [ - -9.082587085634232, - 35.66123525806417 - ], - [ - -5.535283406377404, - 33.759656433431 - ], - [ - -2.1750860870640736, - 31.519293140685605 - ], - [ - 0.9698302871254398, - 28.950400164069887 - ], - [ - 3.871302718337546, - 26.063238081489523 - ], - [ - 6.501168208718221, - 22.868073264513562 - ], - [ - 8.831263760414274, - 19.375166291047492 - ], - [ - 10.833414788244482, - 15.594771945333305 - ], - [ - 12.79060698798517, - 10.58564008186536 - ], - [ - 14.078509396519241, - 5.387200266356471 - ], - [ - 14.685123336917002, - 0.06607093756920435 - ], - [ - 14.5984559259125, - -5.3111526403892615 - ], - [ - 0.0030358796286549246, - 0.0015208366460797156 - ], - [ - 0, - 0 - ] - ] - }, - { - "type": "line", - "version": 746, - "versionNonce": 1767906810, - "isDeleted": false, - "id": "t6zC6Ks9wMbXlSd_IkbXg", - "fillStyle": "cross-hatch", - "strokeWidth": 1, - "strokeStyle": "solid", - "roughness": 1, - "opacity": 100, - "angle": 0, - "x": 1864.2912948506817, - "y": 133.40343309301588, - "strokeColor": "#db212f", - "backgroundColor": "#db212f", - "width": 18.000512463389445, - "height": 20.36979635441513, - "seed": 200835731, - "groupIds": [ - "OATV6O3C6Jj4jKAau1-nj", - "-Hi40yyCOS2FYhEDrTPcO" - ], - "strokeSharpness": "sharp", - "boundElements": [], - "updated": 1662377013460, - "link": null, - "locked": false, - "lastCommittedPoint": null, - "startArrowhead": null, - "endArrowhead": null, - "points": [ - [ - 0, - 0 - ], - [ - -13.901339169330214, - 5.060556419927573 - ], - [ - -13.901339169330214, - 5.060556419927573 - ], - [ - -12.224351706926663, - 8.65100840745738 - ], - [ - -11.082304774830863, - 12.441228806321043 - ], - [ - -10.499259457199686, - 16.36842299560986 - ], - [ - -10.499282631853335, - 20.369796354415122 - ], - [ - 4.099173294059227, - 15.058646610857604 - ], - [ - 4.099173294059227, - 15.058646610857604 - ], - [ - 3.6036702306080626, - 11.15686632613269 - ], - [ - 2.749359798287061, - 7.328845170326803 - ], - [ - 1.544781856967882, - 3.6010601852401734 - ], - [ - -0.0015179398143487788, - 1.0842021724855044e-19 - ] - ] - }, - { - "type": "rectangle", - "version": 972, - "versionNonce": 1924421286, - "isDeleted": false, - "id": "YbM8xe6NaFlLoIbF5ZNkj", - "fillStyle": "cross-hatch", - "strokeWidth": 2, - "strokeStyle": "solid", - "roughness": 1, - "opacity": 90, - "angle": 0, - "x": 735, - "y": 185, - "strokeColor": "#000000", - "backgroundColor": "transparent", - "width": 96, - "height": 61, - "seed": 580511379, - "groupIds": [], - "strokeSharpness": "sharp", - "boundElements": [ - { - "id": "7Syn5DvjY3mv9SneA2hDa", - "type": "arrow" - }, - { - "id": "LUbBz_tU04VUacwIREtSp", - "type": "arrow" - } - ], - "updated": 1662377013460, - "link": null, - "locked": false - }, - { - "type": "text", - "version": 628, - "versionNonce": 39734970, - "isDeleted": false, - "id": "iuxdb0W-9J_Gkd_DYbuW_", - "fillStyle": "cross-hatch", - "strokeWidth": 2, - "strokeStyle": "solid", - "roughness": 1, - "opacity": 90, - "angle": 0, - "x": 758.5, - "y": 147.5, - "strokeColor": "#000000", - "backgroundColor": "transparent", - "width": 37, - "height": 35, - "seed": 81439549, - "groupIds": [], - "strokeSharpness": "sharp", - "boundElements": [], - "updated": 1662377013460, - "link": null, - "locked": false, - "fontSize": 28, - "fontFamily": 1, - "text": "git", - "baseline": 25, - "textAlign": "center", - "verticalAlign": "top", - "containerId": null, - "originalText": "git" - }, - { - "type": "line", - "version": 1102, - "versionNonce": 343839206, - "isDeleted": false, - "id": "Q8EB985YDHetJxeoUp0Vw", - "fillStyle": "cross-hatch", - "strokeWidth": 1, - "strokeStyle": "solid", - "roughness": 0, - "opacity": 100, - "angle": 0, - "x": 759.3375385298189, - "y": 197.05127472665572, - "strokeColor": "#428f29", - "backgroundColor": "#609926", - "width": 66.5027317863492, - "height": 41.006360360924916, - "seed": 2142521811, - "groupIds": [ - "zl1s8cNmh8UrJcf74pI-f" - ], - "strokeSharpness": "sharp", - "boundElements": [], - "updated": 1662377013460, - "link": null, - "locked": false, - "lastCommittedPoint": null, - "startArrowhead": null, - "endArrowhead": null, - "points": [ - [ - 0, - 0 - ], - [ - 0, - 0 - ], - [ - -1.9819704021413749, - 0.1700804476166412 - ], - [ - -4.021831182534616, - 0.7059082463466613 - ], - [ - -5.030615013067983, - 1.1176989561642738 - ], - [ - -6.014442852708516, - 1.6289927770316832 - ], - [ - -6.9601750754113105, - 2.242479147921579 - ], - [ - -7.854667456926681, - 2.9608434205133602 - ], - [ - -8.68477832756329, - 3.7867791210730144 - ], - [ - -9.437364995806295, - 4.722969557633341 - ], - [ - -10.099284770140986, - 5.772108256460275 - ], - [ - -10.657395980875966, - 6.9368785255865895 - ], - [ - -11.098555936496442, - 8.21997389127839 - ], - [ - -11.40962220094355, - 9.624079705214903 - ], - [ - -11.577452593614222, - 11.15188745001558 - ], - [ - -11.588904422993668, - 12.806082477359743 - ], - [ - -11.336825464130218, - 15.34153676334101 - ], - [ - -10.822590324842285, - 17.589778994775504 - ], - [ - -10.075910561744195, - 19.568065723855852 - ], - [ - -9.12649824236198, - 21.293639197248098 - ], - [ - -8.004065178765881, - 22.783760054438325 - ], - [ - -6.738322927570264, - 24.05567667303228 - ], - [ - -5.358984067212862, - 25.126637430636144 - ], - [ - -3.8957586215729645, - 26.01389479214918 - ], - [ - -2.378360190911682, - 26.734705309764024 - ], - [ - -0.8365003318433182, - 27.30631327379341 - ], - [ - 0.7001093990176681, - 27.745975236429842 - ], - [ - 2.2017574450569644, - 28.07093957527943 - ], - [ - 3.6387312278367414, - 28.298458755241516 - ], - [ - 4.981321234389505, - 28.445785241215386 - ], - [ - 6.199812842630774, - 28.530167410807024 - ], - [ - 7.264495517769529, - 28.56885772891568 - ], - [ - 7.435231975956343, - 29.14575056314516 - ], - [ - 7.7258916623775775, - 29.854327811998132 - ], - [ - 8.125992713438439, - 30.672101187894526 - ], - [ - 8.625047134604204, - 31.576578315960653 - ], - [ - 9.87808658922341, - 33.555678416402095 - ], - [ - 11.401132637362723, - 35.611693201627844 - ], - [ - 13.110309933796094, - 37.564700021823626 - ], - [ - 14.921747220591012, - 39.234768052587974 - ], - [ - 15.839600015888385, - 39.90747112839627 - ], - [ - 16.751565065228064, - 40.44196238222666 - ], - [ - 17.647156417721916, - 40.81575761379161 - ], - [ - 18.515890166128166, - 41.006360360924916 - ], - [ - 38.41932239020985, - 41.00636036092489 - ], - [ - 38.41932239020985, - 41.00636036092489 - ], - [ - 39.52905929908097, - 40.811310638712186 - ], - [ - 40.61893604994564, - 40.40327615141114 - ], - [ - 41.68664740939881, - 39.79659921111167 - ], - [ - 42.72989631862134, - 39.005626217197076 - ], - [ - 43.74637345691538, - 38.044703569050476 - ], - [ - 44.733789940047984, - 36.92816540417523 - ], - [ - 45.68983236002843, - 35.67036629654137 - ], - [ - 46.61220774533085, - 34.285644470945215 - ], - [ - 47.498614949843414, - 32.78834632677018 - ], - [ - 48.3467528274542, - 31.19281826339949 - ], - [ - 49.919011930229885, - 27.76443345284421 - ], - [ - 51.310579972055685, - 24.11524488517218 - ], - [ - 52.503051871330385, - 20.36000740627583 - ], - [ - 53.478018459157994, - 16.613467687461423 - ], - [ - 54.21707465393703, - 12.990384661914874 - ], - [ - 54.701811286772546, - 9.605507044588766 - ], - [ - 54.84305996765153, - 8.038254876070912 - ], - [ - 54.91382736335554, - 6.5735876377294815 - ], - [ - 54.91180824047939, - 5.225847641654507 - ], - [ - 54.83471371479084, - 4.009379243582792 - ], - [ - 54.68023037829856, - 2.938526799250514 - ], - [ - 54.44606117218366, - 2.0276346643947214 - ], - [ - 54.129900863041016, - 1.2910451511050063 - ], - [ - 53.72946056663854, - 0.7431046587646399 - ], - [ - 53.24243504957106, - 0.3981554994636305 - ], - [ - 52.66651499114012, - 0.2705440725852277 - ], - [ - 50.38399467468378, - 0.3905470030386695 - ], - [ - 48.230493857637555, - 0.5018113004773248 - ], - [ - 46.19825894466584, - 0.6044330162933456 - ], - [ - 44.279552689605055, - 0.6985163764650153 - ], - [ - 40.75173220833915, - 0.8614624536761077 - ], - [ - 37.58507313513575, - 0.9914424670054487 - ], - [ - 34.71760392941139, - 1.089257525934066 - ], - [ - 32.08736939975574, - 1.1557066962966545 - ], - [ - 29.632402092878237, - 1.1915849566344754 - ], - [ - 27.290742730075316, - 1.1976913727821934 - ], - [ - 22.699482110825095, - 1.1237828921989905 - ], - [ - 20.32595820967701, - 1.0453620398440044 - ], - [ - 17.81788470132205, - 0.9403656066372221 - ], - [ - 15.11330230705643, - 0.809586527473364 - ], - [ - 12.150247660883139, - 0.6538238681870236 - ], - [ - 8.866755353158485, - 0.4738766946127946 - ], - [ - 7.0854822907078265, - 0.3750827289456167 - ], - [ - 5.200864061532112, - 0.2705440725852437 - ], - [ - 4.105790317272589, - 0.22292301867815878 - ], - [ - 2.8497467020987655, - 0.1318560809408833 - ], - [ - 1.4690467730818961, - 0.042497631791162616 - ], - [ - 0, - 0 - ], - [ - 0, - 0 - ] - ] - }, - { - "type": "line", - "version": 1085, - "versionNonce": 1708681082, - "isDeleted": false, - "id": "lGMXFgtMaMylvK7rWo7vG", - "fillStyle": "solid", - "strokeWidth": 1, - "strokeStyle": "solid", - "roughness": 0, - "opacity": 100, - "angle": 0, - "x": 760.6720418266365, - "y": 202.11820636226628, - "strokeColor": "#428f29", - "backgroundColor": "#FFFFFF", - "width": 12.320199869673417, - "height": 18.184807149251014, - "seed": 1005334749, - "groupIds": [ - "zl1s8cNmh8UrJcf74pI-f" - ], - "strokeSharpness": "sharp", - "boundElements": [], - "updated": 1662377013460, - "link": null, - "locked": false, - "lastCommittedPoint": null, - "startArrowhead": null, - "endArrowhead": null, - "points": [ - [ - 0, - 0 - ], - [ - 0, - 0 - ], - [ - 0.29448232745354375, - 2.6187410609760664 - ], - [ - 0.6405902343969956, - 5.014246425338673 - ], - [ - 1.0471563615902326, - 7.2487553513807 - ], - [ - 1.5230133497931106, - 9.384511184688263 - ], - [ - 2.717931494090582, - 13.608722649918137 - ], - [ - 3.4546620189981816, - 15.82166088571943 - ], - [ - 4.296017033424848, - 18.184807149251014 - ], - [ - 2.0584283319027072, - 17.818516188132502 - ], - [ - -0.05507116771784126, - 17.29105916602271 - ], - [ - -2.0054805130394264, - 16.552538406662148 - ], - [ - -3.7537915989014934, - 15.553035797325172 - ], - [ - -4.5399712196319015, - 14.939819187791205 - ], - [ - -5.260998363790126, - 14.242645487165886 - ], - [ - -5.9119989341498105, - 13.455265224036966 - ], - [ - -6.488096789837993, - 12.571449363458553 - ], - [ - -6.984415789981686, - 11.584956608605028 - ], - [ - -7.39608081553121, - 10.48954361900395 - ], - [ - -7.718214703790242, - 9.278975228769639 - ], - [ - -7.945942846620827, - 7.947014228369632 - ], - [ - -8.024182836248567, - 6.4582932691250114 - ], - [ - -7.856660523308257, - 5.005164459689245 - ], - [ - -7.413178985109507, - 3.6405909462753625 - ], - [ - -6.663539766226968, - 2.4175481369762 - ], - [ - -6.164475126828098, - 1.8756507077379005 - ], - [ - -5.577546965793577, - 1.388997134358164 - ], - [ - -4.898980667787072, - 0.9642108755835823 - ], - [ - -4.125001617472318, - 0.6079113028674633 - ], - [ - -3.2518351995130104, - 0.326717787663117 - ], - [ - -2.2757067985728305, - 0.12725583236376134 - ], - [ - -1.1928407774922007, - 0.016142764776073733 - ], - [ - 0.0005354354185769239, - -3.17415905654013e-16 - ], - [ - 0, - 0 - ] - ] - }, - { - "type": "line", - "version": 1139, - "versionNonce": 1340040486, - "isDeleted": false, - "id": "Ut5FMjc52z6fgsL0J6BGw", - "fillStyle": "solid", - "strokeWidth": 1, - "strokeStyle": "solid", - "roughness": 0, - "opacity": 100, - "angle": 0, - "x": 787.9164628574821, - "y": 210.2172928355925, - "strokeColor": "#428f29", - "backgroundColor": "#ffffff", - "width": 1.7480862847321295, - "height": 12.703759133952614, - "seed": 1825675123, - "groupIds": [ - "hnittqP4OOF9j9Lcenkuc", - "zl1s8cNmh8UrJcf74pI-f" - ], - "strokeSharpness": "sharp", - "boundElements": [], - "updated": 1662377013460, - "link": null, - "locked": false, - "lastCommittedPoint": null, - "startArrowhead": null, - "endArrowhead": null, - "points": [ - [ - 0, - 0 - ], - [ - 1.7362985309369154, - 0.8619897145081872 - ], - [ - 1.7362985309369154, - -11.841769419444425 - ], - [ - -0.011787753795213948, - -11.841769419444425 - ], - [ - 0, - 0 - ] - ] - }, - { - "type": "rectangle", - "version": 1166, - "versionNonce": 739338298, - "isDeleted": false, - "id": "lYxoc6qsCbufQWfkaYPjn", - "fillStyle": "solid", - "strokeWidth": 1, - "strokeStyle": "solid", - "roughness": 0, - "opacity": 100, - "angle": 0.5235987755982983, - "x": 779.0262304756161, - "y": 209.01417476491508, - "strokeColor": "#428f29", - "backgroundColor": "#fff", - "width": 16.75036748829949, - "height": 16.75036748829949, - "seed": 877399357, - "groupIds": [ - "zl1s8cNmh8UrJcf74pI-f" - ], - "strokeSharpness": "round", - "boundElements": [], - "updated": 1662377013460, - "link": null, - "locked": false - }, - { - "type": "line", - "version": 1182, - "versionNonce": 1715720294, - "isDeleted": false, - "id": "W9GQ91KbkZiI8PMWjEt3V", - "fillStyle": "cross-hatch", - "strokeWidth": 1, - "strokeStyle": "solid", - "roughness": 0, - "opacity": 100, - "angle": 0, - "x": 787.5675536338199, - "y": 213.27043987335145, - "strokeColor": "#609926", - "backgroundColor": "none", - "width": 3.9928709593189584, - "height": 8.607162705368937, - "seed": 271855891, - "groupIds": [ - "S0CmrEuo-ZXU3htKaoIxB", - "zl1s8cNmh8UrJcf74pI-f" - ], - "strokeSharpness": "sharp", - "boundElements": [], - "updated": 1662377013460, - "link": null, - "locked": false, - "lastCommittedPoint": null, - "startArrowhead": null, - "endArrowhead": null, - "points": [ - [ - 0, - 0 - ], - [ - 0, - 0 - ], - [ - 0.8708256796103779, - 0.45456506781286815 - ], - [ - 1.6286245156968555, - 0.842039937231826 - ], - [ - 2.2760685651818604, - 1.1791900911006858 - ], - [ - 2.8158269742504354, - 1.4827653083640089 - ], - [ - 3.250574710562407, - 1.7695310718656039 - ], - [ - 3.582983831040201, - 2.0562403013298867 - ], - [ - 3.8157205711314752, - 2.359655338820815 - ], - [ - 3.9514598984960405, - 2.6965322448426505 - ], - [ - 3.9928709593189584, - 3.083627079899658 - ], - [ - 3.9426287212600317, - 3.5377021860557947 - ], - [ - 3.803399419766926, - 4.075513623815322 - ], - [ - 3.577858022499456, - 4.713820594462351 - ], - [ - 3.268676586380058, - 5.469382299280998 - ], - [ - 2.878524257593769, - 6.358951657995674 - ], - [ - 2.410073093063024, - 7.399294153450177 - ], - [ - 1.8659951497102514, - 8.607162705368937 - ] - ] - }, - { - "type": "line", - "version": 1225, - "versionNonce": 1827426554, - "isDeleted": false, - "id": "1wLhwqt45xhbe4vgxY7NZ", - "fillStyle": "cross-hatch", - "strokeWidth": 1, - "strokeStyle": "solid", - "roughness": 0, - "opacity": 100, - "angle": 0, - "x": 787.19375468775, - "y": 207.89598632136608, - "strokeColor": "#428f29", - "backgroundColor": "#428f29", - "width": 7.847296587542959, - "height": 13.752717991875608, - "seed": 1630625181, - "groupIds": [ - "1pSuO6LCaukkQ9UMQK_hA", - "zl1s8cNmh8UrJcf74pI-f" - ], - "strokeSharpness": "sharp", - "boundElements": [], - "updated": 1662377013460, - "link": null, - "locked": false, - "lastCommittedPoint": null, - "startArrowhead": null, - "endArrowhead": null, - "points": [ - [ - 0, - 0 - ], - [ - 1.43889895103068, - 0.4763351483960596 - ], - [ - -5.121574659356895, - 13.7527179918756 - ], - [ - -6.40839763651228, - 13.124304825957973 - ], - [ - 0, - 0 - ] - ] - }, - { - "type": "ellipse", - "version": 1143, - "versionNonce": 1668862886, - "isDeleted": false, - "id": "yF40ew457jmrEJrTbM6rg", - "fillStyle": "solid", - "strokeWidth": 1, - "strokeStyle": "solid", - "roughness": 0, - "opacity": 100, - "angle": 0, - "x": 784.0794541733192, - "y": 210.66429372466973, - "strokeColor": "#609926", - "backgroundColor": "#609926", - "width": 3.5032895688733885, - "height": 3.5032895688733885, - "seed": 189961907, - "groupIds": [ - "KCLSuwLSEWUC_iP7kSNCk", - "zl1s8cNmh8UrJcf74pI-f" - ], - "strokeSharpness": "sharp", - "boundElements": [], - "updated": 1662377013460, - "link": null, - "locked": false - }, - { - "type": "ellipse", - "version": 1143, - "versionNonce": 1273766330, - "isDeleted": false, - "id": "kzUT99c-It4ecp0bLdMpU", - "fillStyle": "solid", - "strokeWidth": 1, - "strokeStyle": "solid", - "roughness": 0, - "opacity": 100, - "angle": 0, - "x": 780.0842108335173, - "y": 218.95025900946422, - "strokeColor": "#609926", - "backgroundColor": "#609926", - "width": 3.5032895688733885, - "height": 3.5032895688733885, - "seed": 2043519485, - "groupIds": [ - "KCLSuwLSEWUC_iP7kSNCk", - "zl1s8cNmh8UrJcf74pI-f" - ], - "strokeSharpness": "sharp", - "boundElements": [], - "updated": 1662377013460, - "link": null, - "locked": false - }, - { - "type": "ellipse", - "version": 1143, - "versionNonce": 1370189542, - "isDeleted": false, - "id": "Hw8JiSvWpyA7wcNoYuOcM", - "fillStyle": "solid", - "strokeWidth": 1, - "strokeStyle": "solid", - "roughness": 0, - "opacity": 100, - "angle": 0, - "x": 786.6541178636505, - "y": 221.90003403980205, - "strokeColor": "#609926", - "backgroundColor": "#609926", - "width": 3.5032895688733885, - "height": 3.5032895688733885, - "seed": 215173203, - "groupIds": [ - "KCLSuwLSEWUC_iP7kSNCk", - "zl1s8cNmh8UrJcf74pI-f" - ], - "strokeSharpness": "sharp", - "boundElements": [], - "updated": 1662377013460, - "link": null, - "locked": false - }, - { - "type": "line", - "version": 700, - "versionNonce": 70507130, - "isDeleted": false, - "id": "xDY61qQQ6Ap2p04GrSIhU", - "fillStyle": "cross-hatch", - "strokeWidth": 1, - "strokeStyle": "solid", - "roughness": 1, - "opacity": 100, - "angle": 0, - "x": 943.7650494170268, - "y": 207.5536810655546, - "strokeColor": "#000000", - "backgroundColor": "#fa5252", - "width": 21.361340598602617, - "height": 21.479359054948496, - "seed": 1526894483, - "groupIds": [ - "hLaUC0pyklAgiIpkyHRSs" - ], - "strokeSharpness": "sharp", - "boundElements": [], - "updated": 1662377013460, - "link": null, - "locked": false, - "startBinding": null, - "endBinding": null, - "lastCommittedPoint": null, - "startArrowhead": null, - "endArrowhead": null, - "points": [ - [ - 0, - 0 - ], - [ - 2.9504614086469867, - 4.012627515759613 - ], - [ - -11.093734896511851, - 11.919864090932956 - ], - [ - 3.776590603068043, - 16.640602344767817 - ], - [ - 2.2423506705715397, - 21.479359054948496 - ], - [ - -17.584749995534565, - 14.988343955925606 - ], - [ - -17.584749995534565, - 8.73336576959445 - ], - [ - 0, - 0 - ] - ] - }, - { - "type": "line", - "version": 822, - "versionNonce": 1835573798, - "isDeleted": false, - "id": "vUg5B5lluM1lc6gwDspMM", - "fillStyle": "cross-hatch", - "strokeWidth": 1, - "strokeStyle": "solid", - "roughness": 1, - "opacity": 100, - "angle": 0, - "x": 972.9111084975855, - "y": 208.52784762699463, - "strokeColor": "#000000", - "backgroundColor": "#fa5252", - "width": 22.550726855738834, - "height": 21.479359054948496, - "seed": 937305885, - "groupIds": [ - "hLaUC0pyklAgiIpkyHRSs" - ], - "strokeSharpness": "sharp", - "boundElements": [], - "updated": 1662377013460, - "link": null, - "locked": false, - "startBinding": null, - "endBinding": null, - "lastCommittedPoint": null, - "startArrowhead": null, - "endArrowhead": null, - "points": [ - [ - 0, - 0 - ], - [ - -3.114741278416954, - 4.012627515759613 - ], - [ - 11.71142720684779, - 11.919864090932956 - ], - [ - -3.986868836373726, - 16.64060234476782 - ], - [ - -2.367203371596897, - 21.479359054948496 - ], - [ - 18.563858019365114, - 14.988343955925602 - ], - [ - 18.563858019365114, - 8.73336576959445 - ], - [ - 0, - 0 - ] - ] - }, - { - "type": "line", - "version": 654, - "versionNonce": 1954970426, - "isDeleted": false, - "id": "YKMjthBrNNw97pyLkbxOg", - "fillStyle": "cross-hatch", - "strokeWidth": 1, - "strokeStyle": "solid", - "roughness": 1, - "opacity": 100, - "angle": 0, - "x": 948.8645995700572, - "y": 242.90905653246233, - "strokeColor": "#000000", - "backgroundColor": "#fa5252", - "width": 19.827100666106297, - "height": 47.32540099469423, - "seed": 1506878771, - "groupIds": [ - "hLaUC0pyklAgiIpkyHRSs" - ], - "strokeSharpness": "sharp", - "boundElements": [], - "updated": 1662377013460, - "link": null, - "locked": false, - "startBinding": null, - "endBinding": null, - "lastCommittedPoint": null, - "startArrowhead": null, - "endArrowhead": null, - "points": [ - [ - 0, - 0 - ], - [ - 13.218067110737529, - -47.20738253834822 - ], - [ - 19.827100666106297, - -47.20738253834822 - ], - [ - 6.963088924406386, - 0.1180184563460247 - ], - [ - 0, - 0 - ] - ] - }, - { - "type": "rectangle", - "version": 539, - "versionNonce": 1503489382, - "isDeleted": false, - "id": "VWN6cXO1jiN8bNt1WAl7V", - "fillStyle": "cross-hatch", - "strokeWidth": 2, - "strokeStyle": "solid", - "roughness": 1, - "opacity": 90, - "angle": 0, - "x": 910, - "y": 178, - "strokeColor": "#000000", - "backgroundColor": "transparent", - "width": 101, - "height": 78, - "seed": 684609747, - "groupIds": [], - "strokeSharpness": "sharp", - "boundElements": [], - "updated": 1662377013460, - "link": null, - "locked": false - }, - { - "type": "text", - "version": 360, - "versionNonce": 726074362, - "isDeleted": false, - "id": "HQ1vT1MZXpaMNC0w2UQgN", - "fillStyle": "cross-hatch", - "strokeWidth": 2, - "strokeStyle": "solid", - "roughness": 1, - "opacity": 90, - "angle": 0, - "x": 917, - "y": 155, - "strokeColor": "#000000", - "backgroundColor": "transparent", - "width": 84, - "height": 20, - "seed": 1196888499, - "groupIds": [], - "strokeSharpness": "sharp", - "boundElements": [], - "updated": 1662377013460, - "link": null, - "locked": false, - "fontSize": 16, - "fontFamily": 1, - "text": "DevSpaces", - "baseline": 14, - "textAlign": "center", - "verticalAlign": "top", - "containerId": null, - "originalText": "DevSpaces" - }, - { - "type": "line", - "version": 683, - "versionNonce": 1402392742, - "isDeleted": false, - "id": "yTMGBKLcl_krJLO3aWwCo", - "fillStyle": "solid", - "strokeWidth": 4, - "strokeStyle": "solid", - "roughness": 1, - "opacity": 100, - "angle": 0, - "x": 347.39587833125324, - "y": 306.7338110374251, - "strokeColor": "black", - "backgroundColor": "black", - "width": 180.44190813894443, - "height": 0.16613541482645627, - "seed": 269989267, - "groupIds": [ - "Cy3KZUF141Ea66DHXydV1" - ], - "strokeSharpness": "round", - "boundElements": [], - "updated": 1662377013460, - "link": null, - "locked": false, - "startBinding": null, - "endBinding": null, - "lastCommittedPoint": null, - "startArrowhead": null, - "endArrowhead": null, - "points": [ - [ - 0, - 0 - ], - [ - 180.44190813894443, - -0.16613541482645627 - ] - ] - }, - { - "type": "line", - "version": 625, - "versionNonce": 1920496826, - "isDeleted": false, - "id": "a5nod2XbFPVWuWRhn2Ua2", - "fillStyle": "solid", - "strokeWidth": 4, - "strokeStyle": "solid", - "roughness": 1, - "opacity": 100, - "angle": 0, - "x": 348.0536140237087, - "y": 306.9778100669535, - "strokeColor": "black", - "backgroundColor": "black", - "width": 29.012907644169655, - "height": 58.08933795512363, - "seed": 1721131293, - "groupIds": [ - "Cy3KZUF141Ea66DHXydV1" - ], - "strokeSharpness": "round", - "boundElements": [], - "updated": 1662377013460, - "link": null, - "locked": false, - "startBinding": null, - "endBinding": null, - "lastCommittedPoint": null, - "startArrowhead": null, - "endArrowhead": null, - "points": [ - [ - 0, - 0 - ], - [ - -10.296989190345768, - -2.7467411689925427 - ], - [ - -14.193104578778739, - -7.075372217895264 - ], - [ - -17.12757102104723, - -14.809660495943007 - ], - [ - -16.25366056491633, - -32.74417995752738 - ], - [ - -13.10830588800304, - -40.96408323021325 - ], - [ - -4.822598747791973, - -50.77138635998338 - ], - [ - 6.5787372689089665, - -58.089337955123625 - ], - [ - 11.885336623122425, - -57.994755862867336 - ] - ] - }, - { - "type": "line", - "version": 666, - "versionNonce": 1728170982, - "isDeleted": false, - "id": "BDtRB2MzcmTx5Hgz-V5ax", - "fillStyle": "solid", - "strokeWidth": 4, - "strokeStyle": "solid", - "roughness": 1, - "opacity": 100, - "angle": 0, - "x": 360.2004225510271, - "y": 246.95648206020837, - "strokeColor": "black", - "backgroundColor": "black", - "width": 87.3743402045856, - "height": 60.07029758310275, - "seed": 1028754227, - "groupIds": [ - "Cy3KZUF141Ea66DHXydV1" - ], - "strokeSharpness": "round", - "boundElements": [], - "updated": 1662377013460, - "link": null, - "locked": false, - "startBinding": null, - "endBinding": null, - "lastCommittedPoint": null, - "startArrowhead": null, - "endArrowhead": null, - "points": [ - [ - 0, - 0 - ], - [ - -6.025598732340979, - -21.1279197356401 - ], - [ - -6.406945305423115, - -32.67742851430983 - ], - [ - -3.549899306760304, - -39.69384046690258 - ], - [ - 5.705739293074423, - -50.91185568252725 - ], - [ - 16.1726603909173, - -56.94256079498816 - ], - [ - 26.503200779851944, - -59.91466704948113 - ], - [ - 45.020163433675535, - -60.07029758310275 - ], - [ - 63.567132651090674, - -55.907860782021665 - ], - [ - 68.71201242047414, - -52.3039496607967 - ], - [ - 80.96739489916247, - -31.279192841738087 - ] - ] - }, - { - "type": "line", - "version": 642, - "versionNonce": 1539165562, - "isDeleted": false, - "id": "3e7pQ8RjxCYV31m-LfEZK", - "fillStyle": "solid", - "strokeWidth": 4, - "strokeStyle": "solid", - "roughness": 1, - "opacity": 100, - "angle": 0, - "x": 440.39398966562135, - "y": 214.77545838538146, - "strokeColor": "black", - "backgroundColor": "black", - "width": 69.02941518201982, - "height": 34.30764475453057, - "seed": 583415165, - "groupIds": [ - "Cy3KZUF141Ea66DHXydV1" - ], - "strokeSharpness": "round", - "boundElements": [], - "updated": 1662377013460, - "link": null, - "locked": false, - "startBinding": null, - "endBinding": null, - "lastCommittedPoint": null, - "startArrowhead": null, - "endArrowhead": null, - "points": [ - [ - 0, - 0 - ], - [ - 10.083433705603934, - -6.510757486830897 - ], - [ - 24.319495049103143, - -9.086233123277818 - ], - [ - 54.3109325249198, - -5.877671638144303 - ], - [ - 65.34260873541108, - 1.8844999320361318 - ], - [ - 69.02941518201982, - 25.221411631252746 - ] - ] - }, - { - "type": "line", - "version": 678, - "versionNonce": 569073446, - "isDeleted": false, - "id": "gtGUk5ADqPSYCmPJoRdko", - "fillStyle": "solid", - "strokeWidth": 4, - "strokeStyle": "solid", - "roughness": 1, - "opacity": 100, - "angle": 0, - "x": 527.0558925996764, - "y": 306.9861957034516, - "strokeColor": "black", - "backgroundColor": "black", - "width": 45.23585973757425, - "height": 72.2376608085893, - "seed": 2080353491, - "groupIds": [ - "Cy3KZUF141Ea66DHXydV1" - ], - "strokeSharpness": "round", - "boundElements": [], - "updated": 1662377013460, - "link": null, - "locked": false, - "startBinding": null, - "endBinding": null, - "lastCommittedPoint": null, - "startArrowhead": null, - "endArrowhead": null, - "points": [ - [ - 0, - 0 - ], - [ - 16.245939577793376, - -8.789817408548252 - ], - [ - 27.277124452740487, - -21.062607203659148 - ], - [ - 30.846396418100213, - -32.47282235555152 - ], - [ - 30.85453854997536, - -48.791269021508704 - ], - [ - 25.221025581896626, - -61.49790810213788 - ], - [ - 14.423716425983113, - -70.51089713393569 - ], - [ - 3.3780020570864284, - -72.23766080858931 - ], - [ - -9.197380242452413, - -69.04397977136546 - ], - [ - -14.381321187598894, - -65.757015171538 - ] - ] - }, - { - "type": "line", - "version": 493, - "versionNonce": 1280970298, - "isDeleted": false, - "id": "NthltWo1RmoHdn5C8gHjZ", - "fillStyle": "cross-hatch", - "strokeWidth": 2, - "strokeStyle": "solid", - "roughness": 1, - "opacity": 100, - "angle": 0, - "x": 438.9134165238899, - "y": 215.86291312152872, - "strokeColor": "#000000", - "backgroundColor": "black", - "width": 90.68346509750657, - "height": 88.44483190099747, - "seed": 1892260829, - "groupIds": [ - "9wXTiErT68Cqf6y0xR_9_", - "M7epUKFIsRBu-b5nc04_q" - ], - "strokeSharpness": "sharp", - "boundElements": [], - "updated": 1662377013460, - "link": null, - "locked": false, - "lastCommittedPoint": null, - "startArrowhead": null, - "endArrowhead": null, - "points": [ - [ - 0, - 0 - ], - [ - 0, - 0 - ], - [ - -2.333004985917512, - 0.058997671849454036 - ], - [ - -4.635414563912775, - 0.23409153110242187 - ], - [ - -6.904379999542982, - 0.5224328433152432 - ], - [ - -9.137049845283855, - 0.9211728740447143 - ], - [ - -11.330572653611853, - 1.4274628464555406 - ], - [ - -13.482099690083372, - 2.038454153279929 - ], - [ - -15.588776794094258, - 2.7512978905071748 - ], - [ - -17.6477552312013, - 3.5631454932610893 - ], - [ - -19.656186266960788, - 4.471148057530878 - ], - [ - -21.611215740768728, - 5.472456848873321 - ], - [ - -23.5099962747218, - 6.564223471979915 - ], - [ - -25.349675064756244, - 7.743598853272028 - ], - [ - -27.127402019888166, - 9.007734258306755 - ], - [ - -28.840325692593808, - 10.35378095264036 - ], - [ - -30.485595991889852, - 11.778890201829537 - ], - [ - -32.06036147025219, - 13.280213949701132 - ], - [ - -33.561773393237395, - 14.854902105271375 - ], - [ - -34.98697963505134, - 16.500107290637125 - ], - [ - -36.33312942644136, - 18.21297941481486 - ], - [ - -37.59737267642265, - 19.99067109990125 - ], - [ - -38.77685861574224, - 21.830332254913003 - ], - [ - -39.86873579687597, - 23.729116858486606 - ], - [ - -40.870154467975624, - 25.684173463098837 - ], - [ - -41.778263520651876, - 27.692653334306016 - ], - [ - -42.59021218565141, - 29.751707737664752 - ], - [ - -43.303150032855854, - 31.858490651811962 - ], - [ - -43.91422629301104, - 34.01015062922437 - ], - [ - -44.420590196863365, - 36.20383893545793 - ], - [ - -44.819391102334805, - 38.43670683606979 - ], - [ - -45.1077783037594, - 40.705908309696575 - ], - [ - -45.28290113786346, - 43.00859190881471 - ], - [ - -45.34190889898064, - 45.34190889898089 - ], - [ - -45.30409009989871, - 47.21091473183959 - ], - [ - -45.19160633138682, - 49.06066583294157 - ], - [ - -45.0059165259467, - 50.88969985193921 - ], - [ - -44.74847965847283, - 52.69656257772587 - ], - [ - -44.420754592579954, - 54.479794373034586 - ], - [ - -44.02420041444127, - 56.23793560059818 - ], - [ - -43.56027595587847, - 57.96953204931015 - ], - [ - -43.030440006320134, - 59.67312408190335 - ], - [ - -42.436151948683005, - 61.34725206111081 - ], - [ - -41.77887023326156, - 62.99046177582626 - ], - [ - -41.060054158187256, - 64.60129358878184 - ], - [ - -40.281162682457605, - 66.17828243655016 - ], - [ - -38.54898834761566, - 69.22492524442087 - ], - [ - -36.594019239847, - 72.11872395362188 - ], - [ - -34.42792703112879, - 74.84801774449969 - ], - [ - -32.062382715166734, - 77.40113494507605 - ], - [ - -29.509057963937888, - 79.76641473569669 - ], - [ - -26.779625805958972, - 81.93219629670706 - ], - [ - -23.88575520012625, - 83.88681338229053 - ], - [ - -20.839119174956807, - 85.61859974663234 - ], - [ - -19.26216288415355, - 86.39728638479001 - ], - [ - -17.651390758966954, - 87.11589457007697 - ], - [ - -16.00826243666456, - 87.77295923906482 - ], - [ - -14.334237554512896, - 88.36702618064737 - ], - [ - -13.550545282976657, - 88.44290018773684 - ], - [ - -12.894221284943626, - 88.37164926968703 - ], - [ - -12.35821697747815, - 88.17705086331902 - ], - [ - -11.935478351481443, - 87.88286612697115 - ], - [ - -11.618954110936556, - 87.51287249746414 - ], - [ - -11.401598385986603, - 87.09083655929666 - ], - [ - -11.2763544544528, - 86.64053032312967 - ], - [ - -11.236173733399276, - 86.18572037346115 - ], - [ - -11.238029480408088, - 85.66800494112226 - ], - [ - -11.24308394923463, - 84.94340084810192 - ], - [ - -11.250574764280728, - 84.03857767495202 - ], - [ - -11.259731410705626, - 82.98017787141877 - ], - [ - -11.269788799831183, - 81.79485473957058 - ], - [ - -11.2799791298972, - 80.50927243379788 - ], - [ - -11.297692831974189, - 77.74392180410848 - ], - [ - -12.45136788069647, - 77.9698942724798 - ], - [ - -13.548060101309659, - 78.13584254958863 - ], - [ - -14.58910704246193, - 78.2452393783757 - ], - [ - -15.57583811356044, - 78.3015357971376 - ], - [ - -16.509596289413995, - 78.30821540113732 - ], - [ - -17.391710979429376, - 78.26872922867169 - ], - [ - -19.006354670378716, - 78.06514509994508 - ], - [ - -20.4304505840305, - 77.71851109287377 - ], - [ - -21.674680118006513, - 77.25655488937309 - ], - [ - -22.74972331339023, - 76.70700959751964 - ], - [ - -23.666258854723083, - 76.09758662074707 - ], - [ - -24.434968139627653, - 75.45602449329205 - ], - [ - -25.066532565726916, - 74.81005089707034 - ], - [ - -25.57162946102204, - 74.18738266167597 - ], - [ - -25.96094157967604, - 73.6157528951853 - ], - [ - -26.245148962770763, - 73.12288927951428 - ], - [ - -26.434930294849266, - 72.73651407041748 - ], - [ - -26.54096697353316, - 72.48436037597111 - ], - [ - -26.573939039904985, - 72.39414502576972 - ], - [ - -26.970371638127297, - 71.45595638958659 - ], - [ - -27.38243157958182, - 70.60434757583923 - ], - [ - -27.804430891163236, - 69.83573189220905 - ], - [ - -28.230687025927477, - 69.1465117940564 - ], - [ - -28.65551472384932, - 68.53308973674125 - ], - [ - -29.073226011823234, - 67.99187360178422 - ], - [ - -29.478138342905083, - 67.5192604183851 - ], - [ - -29.8645664570704, - 67.11166349422496 - ], - [ - -30.55922492492941, - 66.47712281890276 - ], - [ - -31.111719335201855, - 66.05949292334141 - ], - [ - -31.320443394788477, - 65.92303040426167 - ], - [ - -31.476570320768527, - 65.8300097289038 - ], - [ - -31.574416209657507, - 65.776833352627 - ], - [ - -31.60829444489064, - 65.75990373079227 - ], - [ - -32.28272554166148, - 65.26516808962968 - ], - [ - -32.77604631138382, - 64.83344645435486 - ], - [ - -33.10724424739261, - 64.4604521579007 - ], - [ - -33.29530277340284, - 64.1418931070391 - ], - [ - -33.3592093827495, - 63.87348263470288 - ], - [ - -33.31795021222773, - 63.65092864766367 - ], - [ - -33.190511398632616, - 63.46992820037207 - ], - [ - -32.99588043529974, - 63.32620547808253 - ], - [ - -32.480979823898714, - 63.13340855711486 - ], - [ - -31.92514154200586, - 63.03819571277549 - ], - [ - -31.480251970901577, - 63.00624647772298 - ], - [ - -31.346879650422984, - 63.00326751541921 - ], - [ - -31.298202918026668, - 63.00322410613244 - ], - [ - -30.469796368050595, - 63.10844279106908 - ], - [ - -29.69226821523324, - 63.29589494360499 - ], - [ - -28.965972516569945, - 63.553290309426785 - ], - [ - -28.29126332905571, - 63.8683549127046 - ], - [ - -27.09802342853555, - 64.62234166669808 - ], - [ - -26.115380969633293, - 65.45959285885061 - ], - [ - -25.346171121391023, - 66.28184071626823 - ], - [ - -25.04248924702466, - 66.65663107196228 - ], - [ - -24.793227696308843, - 66.99082289221691 - ], - [ - -24.598740526237915, - 67.2721313488808 - ], - [ - -24.45938315034795, - 67.48827161380174 - ], - [ - -24.375508269093473, - 67.62696428498823 - ], - [ - -24.34747265254968, - 67.67592453428857 - ], - [ - -23.56128977318537, - 68.87332087401585 - ], - [ - -22.725578254172152, - 69.87560874825559 - ], - [ - -21.849852868551064, - 70.69711322163771 - ], - [ - -20.943627032822803, - 71.35216478495222 - ], - [ - -20.016415520028026, - 71.85509392898992 - ], - [ - -19.077733103208118, - 72.22023114454112 - ], - [ - -18.13708912924295, - 72.46190149623564 - ], - [ - -17.20400108425366, - 72.59444090102478 - ], - [ - -16.28798102820094, - 72.63216899737691 - ], - [ - -15.398546447206176, - 72.58942712840428 - ], - [ - -14.545209401229595, - 72.48053493257578 - ], - [ - -13.737481950231828, - 72.31982290068227 - ], - [ - -12.984878867253943, - 72.12162152351334 - ], - [ - -12.296914925336747, - 71.90026129185998 - ], - [ - -11.683104897520995, - 71.6700726965127 - ], - [ - -11.152960843767687, - 71.44538080210074 - ], - [ - -10.965647058333275, - 70.38979717604575 - ], - [ - -10.713873195146164, - 69.4207553893005 - ], - [ - -10.405222313986727, - 68.53750663166868 - ], - [ - -10.047282900795892, - 67.73931294527466 - ], - [ - -9.64763801535355, - 67.02543094608372 - ], - [ - -9.2138707174405, - 66.39512267622005 - ], - [ - -8.753564066836699, - 65.84763932548769 - ], - [ - -8.274306549483242, - 65.38224836217267 - ], - [ - -10.165928620742303, - 65.13247132617632 - ], - [ - -12.053388826633455, - 64.8027126793317 - ], - [ - -13.920422250025517, - 64.37723112902806 - ], - [ - -15.750761260705929, - 63.84029080881645 - ], - [ - -17.528140941544, - 63.176144999926436 - ], - [ - -19.236299088487897, - 62.36906326206916 - ], - [ - -20.858970784406484, - 61.40330430263523 - ], - [ - -22.37988839908751, - 60.26312682901367 - ], - [ - -23.782788371940228, - 58.93278954859515 - ], - [ - -25.051405785832635, - 57.396556594930246 - ], - [ - -25.630275407429906, - 56.54630974755478 - ], - [ - -26.169475723632893, - 55.63868124924807 - ], - [ - -26.666971924125107, - 54.67171768210642 - ], - [ - -27.120731911669928, - 53.64343849742101 - ], - [ - -27.528723589031245, - 52.55187942496687 - ], - [ - -27.888912145892334, - 51.3950761945178 - ], - [ - -28.199265485016838, - 50.17105910968724 - ], - [ - -28.457748796088204, - 48.8778639002498 - ], - [ - -28.662331338410123, - 47.51351544365743 - ], - [ - -28.81097965820635, - 46.07605489584565 - ], - [ - -28.901658945159966, - 44.56350713426758 - ], - [ - -28.932337102034978, - 42.97391060177688 - ], - [ - -28.85056214502714, - 41.1599857276509 - ], - [ - -28.610249690084114, - 39.43049462934655 - ], - [ - -28.21892446575663, - 37.7850249186397 - ], - [ - -27.684105774435523, - 36.2231642073059 - ], - [ - -27.01331698813141, - 34.744500107121155 - ], - [ - -26.214080122315465, - 33.348617516780905 - ], - [ - -25.293915835917574, - 32.03510676114149 - ], - [ - -24.260347500949536, - 30.80355273889771 - ], - [ - -24.360051849927515, - 30.549179744666333 - ], - [ - -24.477631329268153, - 30.216181679797106 - ], - [ - -24.605620898188874, - 29.807249920069406 - ], - [ - -24.736558228988592, - 29.325070415101326 - ], - [ - -24.862979637425155, - 28.772331827591074 - ], - [ - -24.97742415233773, - 28.151722820237268 - ], - [ - -25.072426732944386, - 27.465934768818673 - ], - [ - -25.140523695003193, - 26.71765090987321 - ], - [ - -25.174254067353225, - 25.9095626191791 - ], - [ - -25.1661541657524, - 25.0443585594357 - ], - [ - -25.10875894941915, - 24.124727393340915 - ], - [ - -24.99460744719204, - 23.15335507051305 - ], - [ - -24.81623597482986, - 22.132932966730667 - ], - [ - -24.566182204630604, - 21.06614703161219 - ], - [ - -24.236981095812496, - 19.955687284396248 - ], - [ - -23.82117032067407, - 18.804242387781017 - ], - [ - -23.77629597048974, - 18.791987403513843 - ], - [ - -23.640643305916058, - 18.763334561173963 - ], - [ - -23.412678079974967, - 18.73044660029538 - ], - [ - -23.09086197606615, - 18.705487616950567 - ], - [ - -22.673655321050713, - 18.70062170721326 - ], - [ - -22.159521154869083, - 18.72801161061622 - ], - [ - -21.54692387400189, - 18.799821423233112 - ], - [ - -20.83432244877036, - 18.92821659767702 - ], - [ - -20.020181275654238, - 19.12535851694082 - ], - [ - -19.102964751135296, - 19.403411277098115 - ], - [ - -18.081129132452986, - 19.77454033076188 - ], - [ - -16.953141529168928, - 20.250908417465496 - ], - [ - -15.717460911603098, - 20.844679633282226 - ], - [ - -14.372554389317028, - 21.56801807428534 - ], - [ - -12.916880932630704, - 22.43308648000763 - ], - [ - -11.348899511864204, - 23.45204894652275 - ], - [ - -8.59178850741722, - 22.79211655152841 - ], - [ - -5.763263800095671, - 22.318812889161563 - ], - [ - -2.8903313924218423, - 22.03073665338438 - ], - [ - -5.329070518200751e-15, - 21.92648789469881 - ], - [ - 2.890887573908456, - 22.03073665338458 - ], - [ - 5.765575344615284, - 22.31881288916172 - ], - [ - 8.597190250538347, - 22.792116551528352 - ], - [ - 11.358861943174986, - 23.452048946522723 - ], - [ - 12.924965912288997, - 22.433086480007674 - ], - [ - 14.37887857978103, - 21.56801807428532 - ], - [ - 15.722146401492719, - 20.844679633282134 - ], - [ - 16.956304980941468, - 20.250908417465492 - ], - [ - 18.082889921647308, - 19.774540330761795 - ], - [ - 19.103442253289927, - 19.403411277097927 - ], - [ - 20.01949215322719, - 19.12535851694082 - ], - [ - 20.832591503461117, - 18.92821659767688 - ], - [ - 21.544270481349397, - 18.79982142323301 - ], - [ - 22.156064690411192, - 18.728011610616132 - ], - [ - 22.669520586487415, - 18.700621707213216 - ], - [ - 23.086168346935864, - 18.705487616950517 - ], - [ - 23.407549001436678, - 18.73044660029521 - ], - [ - 23.63520357966982, - 18.763334561174112 - ], - [ - 23.770667685153825, - 18.791987403513545 - ], - [ - 23.81548234756883, - 18.8042423877812 - ], - [ - 24.2323471544515, - 19.955687284396205 - ], - [ - 24.562458501751053, - 21.066147031612143 - ], - [ - 24.81328821295125, - 22.132932966730763 - ], - [ - 24.99230268537377, - 23.1533550705131 - ], - [ - 25.10699002098392, - 24.12472739334082 - ], - [ - 25.164811190943627, - 25.044358559435736 - ], - [ - 25.173248871056757, - 25.909562619179177 - ], - [ - 25.139769458645844, - 26.71765090987296 - ], - [ - 25.071855629515515, - 27.465934768818585 - ], - [ - 24.976979207148528, - 28.151722820237225 - ], - [ - 24.862606588867294, - 28.772331827591067 - ], - [ - 24.73622045047597, - 29.325070415101298 - ], - [ - 24.605292615457984, - 29.807249920069527 - ], - [ - 24.4772949072958, - 30.216181679797213 - ], - [ - 24.35970457563374, - 30.549179744666205 - ], - [ - 24.259993443954357, - 30.80355273889773 - ], - [ - 25.295153000590272, - 32.03509048265879 - ], - [ - 26.215538403042387, - 33.34856596825297 - ], - [ - 27.013976266674263, - 34.74440514930622 - ], - [ - 27.683309485331918, - 36.22303126636527 - ], - [ - 28.216370100539216, - 37.784870273055546 - ], - [ - 28.605995579981908, - 39.43034540992336 - ], - [ - 28.84502339134516, - 41.15988534367513 - ], - [ - 28.92629642847487, - 42.973910601776694 - ], - [ - 28.895557227290276, - 44.56710196582689 - ], - [ - 28.804707016270182, - 46.08271279520211 - ], - [ - 28.655775179569815, - 47.522734490932336 - ], - [ - 28.45080195366723, - 48.88915031480646 - ], - [ - 28.191816722717704, - 50.18396252017577 - ], - [ - 27.880859723199023, - 51.40915165574849 - ], - [ - 27.519971191589214, - 52.56670912255498 - ], - [ - 27.111175085882792, - 53.65862089546448 - ], - [ - 26.656517068718188, - 54.68688922782765 - ], - [ - 26.15803195041187, - 55.6534946683537 - ], - [ - 25.61774911512035, - 56.56042319191131 - ], - [ - 25.037708799320793, - 57.40967705185223 - ], - [ - 23.76650039362528, - 58.943088401878114 - ], - [ - 22.360685215859174, - 60.269659926670556 - ], - [ - 20.836558027038624, - 61.40530112982597 - ], - [ - 19.210391883535696, - 62.36592694110141 - ], - [ - 17.49848154636809, - 63.16746856873621 - ], - [ - 15.717110924228798, - 63.8258355163267 - ], - [ - 13.882569351974272, - 64.35695356595213 - ], - [ - 12.011135312137124, - 64.77673764736849 - ], - [ - 10.119098139573655, - 65.1011026903341 - ], - [ - 8.222747169138643, - 65.3459744769268 - ], - [ - 8.821784474054883, - 65.9372795026398 - ], - [ - 9.38931206294702, - 66.65675044750077 - ], - [ - 9.910429698135601, - 67.50577640868642 - ], - [ - 10.370220863459341, - 68.48573563105079 - ], - [ - 10.753785321238809, - 69.59801721177008 - ], - [ - 11.04621740763395, - 70.84399939569968 - ], - [ - 11.232606032644124, - 72.22507128001452 - ], - [ - 11.298050958590181, - 73.74261110957016 - ], - [ - 11.295788249518004, - 75.95781956971322 - ], - [ - 11.289824898749941, - 78.0362019580002 - ], - [ - 11.28139807095829, - 79.95190804416767 - ], - [ - 11.271734078494156, - 81.67909302411292 - ], - [ - 11.262075512190961, - 83.19191209373369 - ], - [ - 11.253643258238341, - 84.46452044892717 - ], - [ - 11.250279038514755, - 85.0026708030071 - ], - [ - 11.247679907470172, - 85.47107328559076 - ], - [ - 11.246014076090944, - 85.86649933097648 - ], - [ - 11.245422624558962, - 86.18572037346107 - ], - [ - 11.28497933711595, - 86.6438728382097 - ], - [ - 11.408858589196662, - 87.09724485525413 - ], - [ - 11.624863200096293, - 87.52161946874517 - ], - [ - 11.940812267591973, - 87.89277972283388 - ], - [ - 12.364514037138463, - 88.18651408783217 - ], - [ - 12.903771328030345, - 88.3786001817291 - ], - [ - 13.566392385722963, - 88.44483190099747 - ], - [ - 14.36019630799386, - 88.3609814374666 - ], - [ - 16.033271611997627, - 87.76631761819101 - ], - [ - 17.675412373026205, - 87.10872661160145 - ], - [ - 19.28517523229533, - 86.38966805496428 - ], - [ - 20.861089700216496, - 85.61059615938672 - ], - [ - 23.905589174553683, - 83.87823462199562 - ], - [ - 26.797277107186517, - 81.92329739292207 - ], - [ - 29.524503530781946, - 79.75741816101691 - ], - [ - 32.075640182650375, - 77.39225231977368 - ], - [ - 34.4390479477797, - 74.83943898420443 - ], - [ - 36.60308771115888, - 72.11063354780316 - ], - [ - 38.55612035777557, - 69.21748055174206 - ], - [ - 40.286512198780315, - 66.17161911103315 - ], - [ - 41.06457482844087, - 64.59506978229311 - ], - [ - 41.78261326683901, - 62.984704619169946 - ], - [ - 42.439173302868426, - 61.34198868509172 - ], - [ - 43.032795299262034, - 59.66838161732542 - ], - [ - 43.562030471074166, - 57.9653267746557 - ], - [ - 44.025424607198474, - 56.2342892205107 - ], - [ - 44.42151264420724, - 54.47672316599658 - ], - [ - 44.748845797154615, - 52.69408824838088 - ], - [ - 45.00597528109472, - 50.88782782644792 - ], - [ - 45.191441458761766, - 49.05941238978664 - ], - [ - 45.303784692887, - 47.210285297181684 - ], - [ - 45.341556198525915, - 45.34190889898056 - ], - [ - 45.282557551663245, - 43.00859190881458 - ], - [ - 45.107455341209516, - 40.70590830969657 - ], - [ - 44.81910372776957, - 38.43670683606979 - ], - [ - 44.42035144578648, - 36.203838935457924 - ], - [ - 43.91404722970327, - 34.01015062922436 - ], - [ - 43.3030452401247, - 31.85849065181214 - ], - [ - 42.59018335917233, - 29.751707737664702 - ], - [ - 41.77831574745031, - 27.6926533343059 - ], - [ - 40.87029656556285, - 25.684173463098794 - ], - [ - 39.868963695631855, - 23.72911685848659 - ], - [ - 38.77718215058297, - 21.83033225491276 - ], - [ - 37.59778981253794, - 19.990671099901334 - ], - [ - 36.33363541594019, - 18.21297941481484 - ], - [ - 34.98757312139429, - 16.500107290637203 - ], - [ - 33.56245166334301, - 14.854902105271293 - ], - [ - 32.061119776230214, - 13.280213949701235 - ], - [ - 30.486426194499078, - 11.77889020182953 - ], - [ - 28.841214226432328, - 10.353780952640255 - ], - [ - 27.128343458794912, - 9.007734258306655 - ], - [ - 25.350657199869232, - 7.743598853272244 - ], - [ - 23.511009610259862, - 6.5642234719797585 - ], - [ - 21.61223857208779, - 5.472456848873151 - ], - [ - 19.65720367211924, - 4.471148057530829 - ], - [ - 17.64875364479667, - 3.5631454932609756 - ], - [ - 15.589731798402966, - 2.751297890507118 - ], - [ - 13.482992293542509, - 2.038454153279929 - ], - [ - 11.331383864658108, - 1.4274628464554961 - ], - [ - 9.137749820032752, - 0.9211728740447716 - ], - [ - 6.904949746431896, - 0.5224328433151588 - ], - [ - 4.635821525976269, - 0.23409153110225134 - ], - [ - 2.3332247454316644, - 0.058997671849483124 - ], - [ - 0, - 0 - ] - ] - }, - { - "type": "line", - "version": 490, - "versionNonce": 1220577894, - "isDeleted": false, - "id": "jo_HsTUFmAuaQhr0bKQYK", - "fillStyle": "cross-hatch", - "strokeWidth": 2, - "strokeStyle": "solid", - "roughness": 1, - "opacity": 100, - "angle": 0, - "x": 409.9910689730186, - "y": 280.35433772462017, - "strokeColor": "#000000", - "backgroundColor": "black", - "width": 1.2433247216556111, - "height": 0.9736323188196985, - "seed": 252992627, - "groupIds": [ - "5H1W_moj_Sm0BoAw7Fq0S", - "M7epUKFIsRBu-b5nc04_q" - ], - "strokeSharpness": "sharp", - "boundElements": [], - "updated": 1662377013460, - "link": null, - "locked": false, - "lastCommittedPoint": null, - "startArrowhead": null, - "endArrowhead": null, - "points": [ - [ - 0, - 0 - ], - [ - 0, - 0 - ], - [ - -0.1180569814948198, - 0.13828028296244899 - ], - [ - -0.3048905516942879, - 0.21145206195117172 - ], - [ - -0.5335299781205629, - 0.21348144610703637 - ], - [ - -0.777005884836039, - 0.13832911841005657 - ], - [ - -0.994399592911992, - 0.0012642954767824732 - ], - [ - -1.1439500119485713, - -0.17300228620670577 - ], - [ - -1.211820431792167, - -0.3619466329746887 - ], - [ - -1.1841782119098339, - -0.5430176203572481 - ], - [ - -1.0670599562411194, - -0.6847380892951416 - ], - [ - -0.880132784767091, - -0.7587834801798348 - ], - [ - -0.6499984510281438, - -0.7601508727126616 - ], - [ - -0.40326142164508727, - -0.6838373465949452 - ], - [ - -0.18512839915406332, - -0.5465337725845147 - ], - [ - -0.035206288099637134, - -0.3713881528442098 - ], - [ - 0.03150428986344346, - -0.18151050641095878 - ], - [ - 0, - 0 - ] - ] - }, - { - "type": "line", - "version": 493, - "versionNonce": 154154746, - "isDeleted": false, - "id": "dYxOARM8QmbX1qbxsLmaX", - "fillStyle": "cross-hatch", - "strokeWidth": 2, - "strokeStyle": "solid", - "roughness": 1, - "opacity": 100, - "angle": 0, - "x": 412.22144762234365, - "y": 282.3443225265891, - "strokeColor": "#000000", - "backgroundColor": "black", - "width": 1.3174867749984642, - "height": 1.3444452986143876, - "seed": 1615075389, - "groupIds": [ - "5H1W_moj_Sm0BoAw7Fq0S", - "M7epUKFIsRBu-b5nc04_q" - ], - "strokeSharpness": "sharp", - "boundElements": [], - "updated": 1662377013460, - "link": null, - "locked": false, - "lastCommittedPoint": null, - "startArrowhead": null, - "endArrowhead": null, - "points": [ - [ - 0, - 0 - ], - [ - 0, - 0 - ], - [ - -0.19554662797559091, - 0.09644458285098789 - ], - [ - -0.4364654563930879, - 0.08930375517955805 - ], - [ - -0.6906539611559186, - -0.014851402231530919 - ], - [ - -0.9260055485469003, - -0.2094498085995406 - ], - [ - -1.1027044068289547, - -0.46141358741610194 - ], - [ - -1.1858223386457292, - -0.7227754768154195 - ], - [ - -1.1721931791444442, - -0.9630675836553646 - ], - [ - -1.0586480503918605, - -1.1518165886329488 - ], - [ - -0.8610354116747114, - -1.2480007157633999 - ], - [ - -0.6213822352742093, - -1.2406753986232584 - ], - [ - -0.36779467782491176, - -1.1364659796037238 - ], - [ - -0.12837482634073188, - -0.9420086534176733 - ], - [ - 0.04855193069680286, - -0.6883953217043643 - ], - [ - 0.13166443635273417, - -0.4269520398923845 - ], - [ - 0.11676148559318644, - -0.18744130021405336 - ], - [ - -0.00035541353531609593, - 0.00035812661574397003 - ] - ] - }, - { - "type": "line", - "version": 493, - "versionNonce": 172903846, - "isDeleted": false, - "id": "bEK86T7KAoWtz-X7SrDxa", - "fillStyle": "cross-hatch", - "strokeWidth": 2, - "strokeStyle": "solid", - "roughness": 1, - "opacity": 100, - "angle": 0, - "x": 413.7516331197485, - "y": 284.89048338896254, - "strokeColor": "#000000", - "backgroundColor": "black", - "width": 1.434260469453551, - "height": 1.6271265739719378, - "seed": 1205229075, - "groupIds": [ - "5H1W_moj_Sm0BoAw7Fq0S", - "M7epUKFIsRBu-b5nc04_q" - ], - "strokeSharpness": "sharp", - "boundElements": [], - "updated": 1662377013460, - "link": null, - "locked": false, - "lastCommittedPoint": null, - "startArrowhead": null, - "endArrowhead": null, - "points": [ - [ - 0, - 0 - ], - [ - 0, - 0 - ], - [ - -0.23616415497744653, - 0.07705148399258024 - ], - [ - -0.5056313721383141, - 0.02804782540547271 - ], - [ - -0.775566595672025, - -0.13276730354438726 - ], - [ - -1.013130700147375, - -0.39117193528343286 - ], - [ - -1.1692589826677473, - -0.7026932555297591 - ], - [ - -1.2206732132100502, - -1.0097488454010062 - ], - [ - -1.1668036448855883, - -1.2776004231703995 - ], - [ - -1.007084600426337, - -1.471509707111153 - ], - [ - -0.7699166056926503, - -1.5500750899793587 - ], - [ - -0.5014098190012602, - -1.503958148961555 - ], - [ - -0.23236855546669133, - -1.3464909612527833 - ], - [ - 0.0064001567161460216, - -1.091005604048103 - ], - [ - 0.16231817550379907, - -0.7753115661123307 - ], - [ - 0.21358725624350144, - -0.4657165329658213 - ], - [ - 0.1595738946566687, - -0.19592238961407737 - ], - [ - -0.0003567700755144898, - 0.0003581266157421937 - ] - ] - }, - { - "type": "line", - "version": 492, - "versionNonce": 1120094138, - "isDeleted": false, - "id": "vVApp1Sr2fU7Tf4qWyRaR", - "fillStyle": "cross-hatch", - "strokeWidth": 2, - "strokeStyle": "solid", - "roughness": 1, - "opacity": 100, - "angle": 0, - "x": 416.33904365685993, - "y": 287.8395475463658, - "strokeColor": "#000000", - "backgroundColor": "black", - "width": 1.6720212722595122, - "height": 1.6435786936526044, - "seed": 133171357, - "groupIds": [ - "5H1W_moj_Sm0BoAw7Fq0S", - "M7epUKFIsRBu-b5nc04_q" - ], - "strokeSharpness": "sharp", - "boundElements": [], - "updated": 1662377013460, - "link": null, - "locked": false, - "lastCommittedPoint": null, - "startArrowhead": null, - "endArrowhead": null, - "points": [ - [ - 0, - 0 - ], - [ - 0, - 0 - ], - [ - -0.23244045209787775, - 0.14100964186726195 - ], - [ - -0.5305238850126699, - 0.15620289223199352 - ], - [ - -0.854678664245311, - 0.049909827448146926 - ], - [ - -1.1653317987565028, - -0.17353404996946692 - ], - [ - -1.4077401083258199, - -0.470231098788483 - ], - [ - -1.536098656184013, - -0.7870971874666889 - ], - [ - -1.5434375387262556, - -1.0868220340369634 - ], - [ - -1.4227922785085934, - -1.332111635014728 - ], - [ - -1.1881623705099338, - -1.47296934437834 - ], - [ - -0.8878230112240129, - -1.48737580142061 - ], - [ - -0.5614123056202519, - -1.380768019307789 - ], - [ - -0.2485724282887194, - -1.1585721588844144 - ], - [ - -0.006345895107694288, - -0.8617286037225949 - ], - [ - 0.12286184692267274, - -0.5440811478827854 - ], - [ - 0.12858373353325622, - -0.2440361578226895 - ], - [ - 0.00035541353532586584, - 0 - ] - ] - }, - { - "type": "line", - "version": 493, - "versionNonce": 868329702, - "isDeleted": false, - "id": "G2tS9Wef41neQfF6rPB2q", - "fillStyle": "cross-hatch", - "strokeWidth": 2, - "strokeStyle": "solid", - "roughness": 1, - "opacity": 100, - "angle": 0, - "x": 419.6831892984356, - "y": 288.83525348750084, - "strokeColor": "#000000", - "backgroundColor": "black", - "width": 1.879079500466814, - "height": 1.4122831614929237, - "seed": 896015283, - "groupIds": [ - "5H1W_moj_Sm0BoAw7Fq0S", - "M7epUKFIsRBu-b5nc04_q" - ], - "strokeSharpness": "sharp", - "boundElements": [], - "updated": 1662377013460, - "link": null, - "locked": false, - "lastCommittedPoint": null, - "startArrowhead": null, - "endArrowhead": null, - "points": [ - [ - 0, - 0 - ], - [ - 0, - 0 - ], - [ - -0.1508174275937666, - 0.2280452618138007 - ], - [ - -0.41468620330328326, - 0.3724082710829882 - ], - [ - -0.7543638721719574, - 0.4219599719154025 - ], - [ - -1.1326161184845205, - 0.36556588225801784 - ], - [ - -1.4799066910180976, - 0.20510887992390536 - ], - [ - -1.7362168246711427, - -0.023294508505632083 - ], - [ - -1.8769768631395554, - -0.2898329553506577 - ], - [ - -1.8776144370387868, - -0.564705985252898 - ], - [ - -1.727844258488009, - -0.7950790700690211 - ], - [ - -1.4635522422326286, - -0.9413412356337876 - ], - [ - -1.1222521512714252, - -0.9903231895775243 - ], - [ - -0.7414441832010825, - -0.9288502133696408 - ], - [ - -0.3945035980419842, - -0.7692668229314972 - ], - [ - -0.13851089479834414, - -0.5419052573841087 - ], - [ - 0.0014650634280251318, - -0.27580090340665464 - ], - [ - 0.00035541353532586584, - 8.881784197001252e-15 - ] - ] - }, - { - "type": "line", - "version": 493, - "versionNonce": 557203578, - "isDeleted": false, - "id": "euKeE09z5Rn7J0q3h5UWn", - "fillStyle": "cross-hatch", - "strokeWidth": 2, - "strokeStyle": "solid", - "roughness": 1, - "opacity": 100, - "angle": 0, - "x": 423.4896248524046, - "y": 289.25735996575924, - "strokeColor": "#000000", - "backgroundColor": "black", - "width": 1.9483797136929517, - "height": 1.352383771929961, - "seed": 1233054973, - "groupIds": [ - "5H1W_moj_Sm0BoAw7Fq0S", - "M7epUKFIsRBu-b5nc04_q" - ], - "strokeSharpness": "sharp", - "boundElements": [], - "updated": 1662377013460, - "link": null, - "locked": false, - "lastCommittedPoint": null, - "startArrowhead": null, - "endArrowhead": null, - "points": [ - [ - 0, - 0 - ], - [ - 0, - 0 - ], - [ - -0.06908587987279091, - 0.2648346323398263 - ], - [ - -0.2739967049258496, - 0.48322675401117055 - ], - [ - -0.5823871303648629, - 0.6327446160826925 - ], - [ - -0.9619199506367375, - 0.6909510434621473 - ], - [ - -1.3440383365510566, - 0.6447038745840685 - ], - [ - -1.6563817201653208, - 0.5039438361156623 - ], - [ - -1.8681078032391394, - 0.29204140281438773 - ], - [ - -1.948379713692951, - 0.03236162327687497 - ], - [ - -1.8734010231430016, - -0.23411713579884663 - ], - [ - -1.6678037887430897, - -0.4528239747991667 - ], - [ - -1.3605908402073403, - -0.6023852461574308 - ], - [ - -0.9807677203302845, - -0.661432728467815 - ], - [ - -0.600089980120206, - -0.6148437114565256 - ], - [ - -0.2882186724994149, - -0.47407282066642104 - ], - [ - -0.07743402833212791, - -0.26162234511985494 - ], - [ - 0, - 0 - ] - ] - }, - { - "type": "line", - "version": 493, - "versionNonce": 1688706086, - "isDeleted": false, - "id": "UF-filpl9RluBeJBGQPYD", - "fillStyle": "cross-hatch", - "strokeWidth": 2, - "strokeStyle": "solid", - "roughness": 1, - "opacity": 100, - "angle": 0, - "x": 427.2284965646142, - "y": 289.1140496316943, - "strokeColor": "#000000", - "backgroundColor": "black", - "width": 1.9259778086462387, - "height": 1.3648530895507331, - "seed": 1139813715, - "groupIds": [ - "5H1W_moj_Sm0BoAw7Fq0S", - "M7epUKFIsRBu-b5nc04_q" - ], - "strokeSharpness": "sharp", - "boundElements": [], - "updated": 1662377013460, - "link": null, - "locked": false, - "lastCommittedPoint": null, - "startArrowhead": null, - "endArrowhead": null, - "points": [ - [ - 0, - 0 - ], - [ - 0, - 0 - ], - [ - -0.029510175753076212, - 0.2710530126676769 - ], - [ - -0.19767232648644747, - 0.5190991033544856 - ], - [ - -0.4783215046077133, - 0.7174090037401603 - ], - [ - -0.8452819102027805, - 0.8392371670219427 - ], - [ - -1.2267220260115081, - 0.8539257844281334 - ], - [ - -1.5577883776198878, - 0.7654956411445409 - ], - [ - -1.8027741135903699, - 0.5912507641044336 - ], - [ - -1.9259778086462376, - 0.34849518024104975 - ], - [ - -1.8959223037282893, - 0.07219507003669512 - ], - [ - -1.7266125199763014, - -0.17820597445663022 - ], - [ - -1.4465547933870848, - -0.3766623811851162 - ], - [ - -1.0842500337966516, - -0.49713943041660075 - ], - [ - -0.6982031074308885, - -0.5109273051225989 - ], - [ - -0.36663212286396174, - -0.4225948327342146 - ], - [ - -0.12280487223381087, - -0.24725387120350417 - ], - [ - 0, - 0 - ] - ] - }, - { - "type": "arrow", - "version": 721, - "versionNonce": 1347166522, - "isDeleted": false, - "id": "7Syn5DvjY3mv9SneA2hDa", - "fillStyle": "cross-hatch", - "strokeWidth": 2, - "strokeStyle": "solid", - "roughness": 2, - "opacity": 90, - "angle": 2.9004652802090014, - "x": 724.4149919536901, - "y": 260.2787493726382, - "strokeColor": "#000000", - "backgroundColor": "transparent", - "width": 228.38375337128218, - "height": 15.970868372722578, - "seed": 2097763325, - "groupIds": [], - "strokeSharpness": "round", - "boundElements": [], - "updated": 1662377013460, - "link": null, - "locked": false, - "startBinding": null, - "endBinding": { - "elementId": "YbM8xe6NaFlLoIbF5ZNkj", - "focus": -0.17179110689191787, - "gap": 13.373552388928942 - }, - "lastCommittedPoint": null, - "startArrowhead": null, - "endArrowhead": "arrow", - "points": [ - [ - 0, - 0 - ], - [ - -228.38375337128218, - -15.970868372722578 - ] - ] - }, - { - "type": "text", - "version": 354, - "versionNonce": 1122838374, - "isDeleted": false, - "id": "XQ_OyjCmixaNfFzBEPv1T", - "fillStyle": "cross-hatch", - "strokeWidth": 2, - "strokeStyle": "solid", - "roughness": 2, - "opacity": 90, - "angle": 6.129944343664711, - "x": 569.9910210639403, - "y": 207.50068931986434, - "strokeColor": "#000000", - "backgroundColor": "transparent", - "width": 127, - "height": 44, - "seed": 1484668851, - "groupIds": [], - "strokeSharpness": "sharp", - "boundElements": [], - "updated": 1662377013460, - "link": null, - "locked": false, - "fontSize": 35.29411764705882, - "fontFamily": 1, - "text": "migrate", - "baseline": 31, - "textAlign": "center", - "verticalAlign": "top", - "containerId": null, - "originalText": "migrate" - }, - { - "type": "rectangle", - "version": 1281, - "versionNonce": 191359482, - "isDeleted": false, - "id": "N3_84v1HAfu3aswREv15n", - "fillStyle": "cross-hatch", - "strokeWidth": 2, - "strokeStyle": "solid", - "roughness": 2, - "opacity": 90, - "angle": 0, - "x": 1235, - "y": 172.00000000000017, - "strokeColor": "#000000", - "backgroundColor": "transparent", - "width": 123.00000000000003, - "height": 116.50000000000004, - "seed": 1718817693, - "groupIds": [], - "strokeSharpness": "sharp", - "boundElements": [], - "updated": 1662377013460, - "link": null, - "locked": false - }, - { - "type": "text", - "version": 1230, - "versionNonce": 786385574, - "isDeleted": false, - "id": "P1FHGZfZVbuyCn1E5w1hV", - "fillStyle": "cross-hatch", - "strokeWidth": 2, - "strokeStyle": "solid", - "roughness": 2, - "opacity": 90, - "angle": 0, - "x": 1237.9999999999995, - "y": 149, - "strokeColor": "#000000", - "backgroundColor": "transparent", - "width": 118, - "height": 24, - "seed": 1462924531, - "groupIds": [], - "strokeSharpness": "sharp", - "boundElements": [], - "updated": 1662377013460, - "link": null, - "locked": false, - "fontSize": 18.800000000000004, - "fontFamily": 1, - "text": "workshop-dev", - "baseline": 17, - "textAlign": "center", - "verticalAlign": "top", - "containerId": null, - "originalText": "workshop-dev" - }, - { - "type": "rectangle", - "version": 1890, - "versionNonce": 697080506, - "isDeleted": false, - "id": "vmk6BUQQhZk-zdA2Oo77A", - "fillStyle": "cross-hatch", - "strokeWidth": 1, - "strokeStyle": "solid", - "roughness": 2, - "opacity": 100, - "angle": 0, - "x": 1266.5835658482142, - "y": 205.415619389886, - "strokeColor": "#5665dc", - "backgroundColor": "#5665dc", - "width": 57.45616947617656, - "height": 53.44025912987806, - "seed": 947888765, - "groupIds": [ - "_0iEyIKCqAnh2J7YUwrlB" - ], - "strokeSharpness": "round", - "boundElements": [], - "updated": 1662377013460, - "link": null, - "locked": false - }, - { - "type": "rectangle", - "version": 1969, - "versionNonce": 1999308262, - "isDeleted": false, - "id": "JGCv3K6aRrwT7DflWeTHf", - "fillStyle": "solid", - "strokeWidth": 1, - "strokeStyle": "solid", - "roughness": 2, - "opacity": 100, - "angle": 0, - "x": 1269.9381426544435, - "y": 208.74060527777488, - "strokeColor": "#5665dc", - "backgroundColor": "#ffffff", - "width": 51.247712989934, - "height": 46.39762056468513, - "seed": 1251971027, - "groupIds": [ - "_0iEyIKCqAnh2J7YUwrlB" - ], - "strokeSharpness": "round", - "boundElements": [ - { - "id": "YGLbIKYvHLJ7195OM_YrC", - "type": "arrow" - } - ], - "updated": 1662377013460, - "link": null, - "locked": false - }, - { - "type": "line", - "version": 2138, - "versionNonce": 693973882, - "isDeleted": false, - "id": "spb2oj8YGHpSNEwpHD2wV", - "fillStyle": "cross-hatch", - "strokeWidth": 1, - "strokeStyle": "solid", - "roughness": 1, - "opacity": 100, - "angle": 1.5774237450700657, - "x": 1301.9722141535574, - "y": 217.96881154394697, - "strokeColor": "#c92a2a", - "backgroundColor": "#fa5252", - "width": 33.32257701070834, - "height": 28.85819083936603, - "seed": 1556105949, - "groupIds": [ - "_0iEyIKCqAnh2J7YUwrlB" - ], - "strokeSharpness": "sharp", - "boundElements": [], - "updated": 1662377013460, - "link": null, - "locked": false, - "lastCommittedPoint": null, - "startArrowhead": null, - "endArrowhead": null, - "points": [ - [ - 0, - 0 - ], - [ - 16.661288505354147, - 28.85819083936598 - ], - [ - -16.6612885053542, - 28.858190839366024 - ], - [ - 0, - 0 - ] - ] - }, - { - "type": "line", - "version": 2507, - "versionNonce": 215832870, - "isDeleted": false, - "id": "SutAG57LVzwzVW-B7pjx2", - "fillStyle": "cross-hatch", - "strokeWidth": 1, - "strokeStyle": "solid", - "roughness": 1, - "opacity": 100, - "angle": 4.721247315744137, - "x": 1292.001511263509, - "y": 218.73806334146855, - "strokeColor": "#5665dc", - "backgroundColor": "#5665dc", - "width": 33.32257701070834, - "height": 28.85819083936603, - "seed": 107224435, - "groupIds": [ - "_0iEyIKCqAnh2J7YUwrlB" - ], - "strokeSharpness": "sharp", - "boundElements": [], - "updated": 1662377013460, - "link": null, - "locked": false, - "lastCommittedPoint": null, - "startArrowhead": null, - "endArrowhead": null, - "points": [ - [ - 0, - 0 - ], - [ - 16.661288505354147, - 28.85819083936598 - ], - [ - -16.6612885053542, - 28.858190839366024 - ], - [ - 0, - 0 - ] - ] - }, - { - "type": "line", - "version": 2828, - "versionNonce": 1025291322, - "isDeleted": false, - "id": "i26NzthkwBlfiUCin9CYI", - "fillStyle": "cross-hatch", - "strokeWidth": 1, - "strokeStyle": "solid", - "roughness": 1, - "opacity": 100, - "angle": 0.0005581869343673773, - "x": 1296.0624601985858, - "y": 245.1701370116595, - "strokeColor": "#5665dc", - "backgroundColor": "#5665dc", - "width": 12.907571670440605, - "height": 13.318824900087934, - "seed": 395110205, - "groupIds": [ - "_0iEyIKCqAnh2J7YUwrlB" - ], - "strokeSharpness": "sharp", - "boundElements": [], - "updated": 1662377013460, - "link": null, - "locked": false, - "lastCommittedPoint": null, - "startArrowhead": null, - "endArrowhead": null, - "points": [ - [ - 0, - 0 - ], - [ - 6.453785835220252, - 13.318824900087908 - ], - [ - -6.453785835220351, - 13.31882490008794 - ], - [ - 0, - 0 - ] - ] - }, - { - "type": "rectangle", - "version": 1843, - "versionNonce": 929252454, - "isDeleted": false, - "id": "2BfNxEEM8p5HYk7WcE_F9", - "fillStyle": "solid", - "strokeWidth": 1, - "strokeStyle": "solid", - "roughness": 2, - "opacity": 100, - "angle": 5.989889724533434, - "x": 1301.980919550926, - "y": 252.81882394751756, - "strokeColor": "#ffffff", - "backgroundColor": "#ffffff", - "width": 4.533179238462011, - "height": 7.2653956832235504, - "seed": 562427667, - "groupIds": [ - "_0iEyIKCqAnh2J7YUwrlB" - ], - "strokeSharpness": "round", - "boundElements": [], - "updated": 1662377013460, - "link": null, - "locked": false - }, - { - "type": "line", - "version": 1767, - "versionNonce": 1454251258, - "isDeleted": false, - "id": "5fGV8W9z-RAs_dgD03VyY", - "fillStyle": "cross-hatch", - "strokeWidth": 1, - "strokeStyle": "solid", - "roughness": 1, - "opacity": 100, - "angle": 0, - "x": 1297.093093580768, - "y": 222.20484551634627, - "strokeColor": "#000000", - "backgroundColor": "#000000", - "width": 18.093574283353416, - "height": 21.608910352169588, - "seed": 457635741, - "groupIds": [ - "_0iEyIKCqAnh2J7YUwrlB" - ], - "strokeSharpness": "sharp", - "boundElements": [], - "updated": 1662377013460, - "link": null, - "locked": false, - "lastCommittedPoint": null, - "startArrowhead": null, - "endArrowhead": null, - "points": [ - [ - 0, - 0 - ], - [ - 9.046787141676653, - 5.402227588042349 - ], - [ - 9.046787141676685, - 16.20668276412716 - ], - [ - 0, - 21.60891035216959 - ], - [ - -9.046787141676738, - 16.20668276412703 - ], - [ - -9.046787141676724, - 5.402227588042457 - ], - [ - 0, - 0 - ] - ] - }, - { - "type": "line", - "version": 1605, - "versionNonce": 1216989094, - "isDeleted": false, - "id": "-fAV_aerIzzEWfYYHEKXg", - "fillStyle": "hachure", - "strokeWidth": 2, - "strokeStyle": "solid", - "roughness": 1, - "opacity": 100, - "angle": 0, - "x": 1286.9623124603343, - "y": 225.86946868342477, - "strokeColor": "#ffffff", - "backgroundColor": "#ffffff", - "width": 9.063116136997696, - "height": 6.655277964453662, - "seed": 1518050483, - "groupIds": [ - "_0iEyIKCqAnh2J7YUwrlB" - ], - "strokeSharpness": "round", - "boundElements": [], - "updated": 1662377013460, - "link": null, - "locked": false, - "startBinding": null, - "endBinding": null, - "lastCommittedPoint": null, - "startArrowhead": null, - "endArrowhead": null, - "points": [ - [ - 0, - 0 - ], - [ - 9.063116136997696, - 6.655277964453662 - ] - ] - }, - { - "type": "line", - "version": 1493, - "versionNonce": 865365434, - "isDeleted": false, - "id": "C0EHFLoMSj-pbdFzB893u", - "fillStyle": "hachure", - "strokeWidth": 1, - "strokeStyle": "solid", - "roughness": 2, - "opacity": 100, - "angle": 0, - "x": 1293.5835666023909, - "y": 231.393259214085, - "strokeColor": "#ffffff", - "backgroundColor": "#ffffff", - "width": 1.938909697019904, - "height": 1.3996974072478967, - "seed": 1377827837, - "groupIds": [ - "_0iEyIKCqAnh2J7YUwrlB" - ], - "strokeSharpness": "round", - "boundElements": [], - "updated": 1662377013460, - "link": null, - "locked": false, - "startBinding": null, - "endBinding": null, - "lastCommittedPoint": null, - "startArrowhead": null, - "endArrowhead": null, - "points": [ - [ - 0, - 0 - ], - [ - 1.938909697019904, - 1.3996974072478967 - ] - ] - }, - { - "type": "line", - "version": 1715, - "versionNonce": 1350427366, - "isDeleted": false, - "id": "hZP-cpVoJirzVS5h4IwGP", - "fillStyle": "hachure", - "strokeWidth": 2, - "strokeStyle": "solid", - "roughness": 1, - "opacity": 100, - "angle": 0, - "x": 1295.7896656391133, - "y": 231.83614969191865, - "strokeColor": "#ffffff", - "backgroundColor": "#ffffff", - "width": 0.41793131176457465, - "height": 12.31899938467562, - "seed": 1558941267, - "groupIds": [ - "_0iEyIKCqAnh2J7YUwrlB" - ], - "strokeSharpness": "round", - "boundElements": [], - "updated": 1662377013460, - "link": null, - "locked": false, - "startBinding": null, - "endBinding": null, - "lastCommittedPoint": null, - "startArrowhead": null, - "endArrowhead": null, - "points": [ - [ - 0, - 0 - ], - [ - 0.41793131176457465, - 12.31899938467562 - ] - ] - }, - { - "type": "line", - "version": 1757, - "versionNonce": 1760732794, - "isDeleted": false, - "id": "OoBrrmXsBnrkluhSNWntM", - "fillStyle": "hachure", - "strokeWidth": 2, - "strokeStyle": "solid", - "roughness": 1, - "opacity": 100, - "angle": 0, - "x": 1295.8939101463318, - "y": 233.32005387918935, - "strokeColor": "#ffffff", - "backgroundColor": "#ffffff", - "width": 10.257078375565314, - "height": 6.540946725895645, - "seed": 1679389789, - "groupIds": [ - "_0iEyIKCqAnh2J7YUwrlB" - ], - "strokeSharpness": "round", - "boundElements": [], - "updated": 1662377013460, - "link": null, - "locked": false, - "startBinding": null, - "endBinding": null, - "lastCommittedPoint": null, - "startArrowhead": null, - "endArrowhead": null, - "points": [ - [ - 0, - 0 - ], - [ - 10.257078375565314, - -6.540946725895645 - ] - ] - }, - { - "type": "arrow", - "version": 456, - "versionNonce": 1372362278, - "isDeleted": false, - "id": "WyT8CHCFzENtI1D28JXqX", - "fillStyle": "cross-hatch", - "strokeWidth": 2, - "strokeStyle": "solid", - "roughness": 2, - "opacity": 90, - "angle": 3.172965356582301, - "x": 913.5652581299081, - "y": 224.42325658610133, - "strokeColor": "#000000", - "backgroundColor": "transparent", - "width": 94.08894820589546, - "height": 4.643393316912409, - "seed": 249565469, - "groupIds": [], - "strokeSharpness": "round", - "boundElements": [], - "updated": 1662377013460, - "link": null, - "locked": false, - "startBinding": null, - "endBinding": null, - "lastCommittedPoint": null, - "startArrowhead": null, - "endArrowhead": "arrow", - "points": [ - [ - 0, - 0 - ], - [ - -94.08894820589546, - -4.643393316912409 - ] - ] - }, - { - "type": "text", - "version": 252, - "versionNonce": 1871431482, - "isDeleted": false, - "id": "SmrHnQr2mG7pD6XtPNTbF", - "fillStyle": "cross-hatch", - "strokeWidth": 2, - "strokeStyle": "solid", - "roughness": 2, - "opacity": 90, - "angle": 0, - "x": 839, - "y": 191, - "strokeColor": "#000000", - "backgroundColor": "transparent", - "width": 48, - "height": 25, - "seed": 322424893, - "groupIds": [], - "strokeSharpness": "sharp", - "boundElements": [], - "updated": 1662377013460, - "link": null, - "locked": false, - "fontSize": 20, - "fontFamily": 1, - "text": "clone", - "baseline": 18, - "textAlign": "center", - "verticalAlign": "top", - "containerId": null, - "originalText": "clone" - }, - { - "type": "arrow", - "version": 1711, - "versionNonce": 1969414502, - "isDeleted": false, - "id": "YGLbIKYvHLJ7195OM_YrC", - "fillStyle": "cross-hatch", - "strokeWidth": 2, - "strokeStyle": "solid", - "roughness": 2, - "opacity": 90, - "angle": 1.1544546290966737, - "x": 1066.1032297855195, - "y": 349.7657486755516, - "strokeColor": "#000000", - "backgroundColor": "transparent", - "width": 128.09256545730932, - "height": 234.12848935878483, - "seed": 1865112861, - "groupIds": [], - "strokeSharpness": "round", - "boundElements": [], - "updated": 1662377013460, - "link": null, - "locked": false, - "startBinding": null, - "endBinding": { - "elementId": "JGCv3K6aRrwT7DflWeTHf", - "focus": -0.6092445576527593, - "gap": 6.855367883465988 - }, - "lastCommittedPoint": null, - "startArrowhead": null, - "endArrowhead": "arrow", - "points": [ - [ - 0, - 0 - ], - [ - 128.09256545730932, - -234.12848935878483 - ] - ] - }, - { - "type": "rectangle", - "version": 447, - "versionNonce": 801296378, - "isDeleted": false, - "id": "91F-Fbyycbn74TbDoib9O", - "fillStyle": "cross-hatch", - "strokeWidth": 2, - "strokeStyle": "solid", - "roughness": 2, - "opacity": 100, - "angle": 0, - "x": 593, - "y": 305, - "strokeColor": "#000000", - "backgroundColor": "transparent", - "width": 145, - "height": 123.99999999999999, - "seed": 1883417619, - "groupIds": [], - "strokeSharpness": "sharp", - "boundElements": [], - "updated": 1662377013460, - "link": null, - "locked": false - }, - { - "type": "text", - "version": 396, - "versionNonce": 1049478310, - "isDeleted": false, - "id": "hbDoM_i77W4Y0gTLYkn6S", - "fillStyle": "cross-hatch", - "strokeWidth": 2, - "strokeStyle": "solid", - "roughness": 2, - "opacity": 100, - "angle": 0, - "x": 578, - "y": 278, - "strokeColor": "#000000", - "backgroundColor": "transparent", - "width": 172, - "height": 25, - "seed": 350645171, - "groupIds": [], - "strokeSharpness": "sharp", - "boundElements": [], - "updated": 1662377013460, - "link": null, - "locked": false, - "fontSize": 20, - "fontFamily": 1, - "text": "openshift-pipelines", - "baseline": 18, - "textAlign": "center", - "verticalAlign": "top", - "containerId": null, - "originalText": "openshift-pipelines" - }, - { - "type": "arrow", - "version": 258, - "versionNonce": 228245690, - "isDeleted": false, - "id": "LUbBz_tU04VUacwIREtSp", - "fillStyle": "cross-hatch", - "strokeWidth": 2, - "strokeStyle": "solid", - "roughness": 2, - "opacity": 100, - "angle": 0, - "x": 777.4239640302878, - "y": 247.52451296269896, - "strokeColor": "#000000", - "backgroundColor": "transparent", - "width": 51.77851251264292, - "height": 105.57960552038185, - "seed": 280713363, - "groupIds": [], - "strokeSharpness": "round", - "boundElements": [], - "updated": 1662377013460, - "link": null, - "locked": false, - "startBinding": { - "elementId": "YbM8xe6NaFlLoIbF5ZNkj", - "focus": -0.16089294373087465, - "gap": 1.5245129626989637 - }, - "endBinding": null, - "lastCommittedPoint": null, - "startArrowhead": null, - "endArrowhead": "arrow", - "points": [ - [ - 0, - 0 - ], - [ - -51.77851251264292, - 105.57960552038185 - ] - ] - }, - { - "type": "ellipse", - "version": 1515, - "versionNonce": 374771558, - "isDeleted": false, - "id": "bWmX4iEk56oiuov3XaAt4", - "fillStyle": "solid", - "strokeWidth": 1, - "strokeStyle": "solid", - "roughness": 1, - "opacity": 100, - "angle": 0.7346836565880874, - "x": 729.1473605872104, - "y": 408.8665235470267, - "strokeColor": "#000000", - "backgroundColor": "#ffffff", - "width": 23.70454827121257, - "height": 59.58170241142612, - "seed": 1077858269, - "groupIds": [ - "jR05h_8U2AWpOQqAZ05t-", - "6Gk3LIiMNio0piIcba3a-" - ], - "strokeSharpness": "round", - "boundElements": [], - "updated": 1662377039130, - "link": null, - "locked": false - }, - { - "type": "ellipse", - "version": 1564, - "versionNonce": 195625466, - "isDeleted": false, - "id": "s246kZzX-8bYd4WOS8lkr", - "fillStyle": "solid", - "strokeWidth": 1, - "strokeStyle": "solid", - "roughness": 1, - "opacity": 100, - "angle": 0.7346836565880874, - "x": 877.1679848967656, - "y": 542.5865475311155, - "strokeColor": "#000000", - "backgroundColor": "#868e96", - "width": 23.70454827121257, - "height": 59.58170241142612, - "seed": 62679155, - "groupIds": [ - "jR05h_8U2AWpOQqAZ05t-", - "6Gk3LIiMNio0piIcba3a-" - ], - "strokeSharpness": "round", - "boundElements": [], - "updated": 1662377039130, - "link": null, - "locked": false - }, - { - "type": "line", - "version": 1530, - "versionNonce": 551269030, - "isDeleted": false, - "id": "SSI9fa4T-YBGS-_lSSMeL", - "fillStyle": "solid", - "strokeWidth": 1, - "strokeStyle": "solid", - "roughness": 1, - "opacity": 100, - "angle": 0.7346836565880874, - "x": 734.1055961331948, - "y": 483.8371535861579, - "strokeColor": "#000000", - "backgroundColor": "#ffffff", - "width": 199.09790938237407, - "height": 0, - "seed": 1928514621, - "groupIds": [ - "jR05h_8U2AWpOQqAZ05t-", - "6Gk3LIiMNio0piIcba3a-" - ], - "strokeSharpness": "round", - "boundElements": [], - "updated": 1662377039130, - "link": null, - "locked": false, - "startBinding": null, - "endBinding": null, - "lastCommittedPoint": null, - "startArrowhead": null, - "endArrowhead": null, - "points": [ - [ - 0, - 0 - ], - [ - 199.09790938237407, - 0 - ] - ] - }, - { - "type": "line", - "version": 1551, - "versionNonce": 837464762, - "isDeleted": false, - "id": "O8w8h12pi6dXXFeyZTjuA", - "fillStyle": "solid", - "strokeWidth": 1, - "strokeStyle": "solid", - "roughness": 1, - "opacity": 100, - "angle": 0.7346836565880874, - "x": 695.3962754841205, - "y": 528.5737715189417, - "strokeColor": "#000000", - "backgroundColor": "#ffffff", - "width": 203.65848981125856, - "height": 0, - "seed": 60613139, - "groupIds": [ - "jR05h_8U2AWpOQqAZ05t-", - "6Gk3LIiMNio0piIcba3a-" - ], - "strokeSharpness": "round", - "boundElements": [], - "updated": 1662377039130, - "link": null, - "locked": false, - "startBinding": null, - "endBinding": null, - "lastCommittedPoint": null, - "startArrowhead": null, - "endArrowhead": null, - "points": [ - [ - 0, - 0 - ], - [ - 203.65848981125856, - 0 - ] - ] - }, - { - "type": "rectangle", - "version": 1547, - "versionNonce": 1029336550, - "isDeleted": false, - "id": "PzagH_-6alw3MCAH8cX1J", - "fillStyle": "solid", - "strokeWidth": 1, - "strokeStyle": "solid", - "roughness": 0, - "opacity": 100, - "angle": 0.7346836565880874, - "x": 737.7460194622672, - "y": 415.061744230402, - "strokeColor": "transparent", - "backgroundColor": "#ffffff", - "width": 15.115278650899608, - "height": 54.53597758557076, - "seed": 984104093, - "groupIds": [ - "jR05h_8U2AWpOQqAZ05t-", - "6Gk3LIiMNio0piIcba3a-" - ], - "strokeSharpness": "round", - "boundElements": [], - "updated": 1662377039130, - "link": null, - "locked": false - }, - { - "type": "text", - "version": 1663, - "versionNonce": 1549559078, - "isDeleted": false, - "id": "XKTEM8qBa4qGOJP7CVrIX", - "fillStyle": "cross-hatch", - "strokeWidth": 2, - "strokeStyle": "solid", - "roughness": 2, - "opacity": 100, - "angle": 0.7752543581152134, - "x": 765.8750464376772, - "y": 478.37872604099863, - "strokeColor": "#000000", - "backgroundColor": "transparent", - "width": 75.28403818978259, - "height": 43.49744428742995, - "seed": 456298397, - "groupIds": [], - "strokeSharpness": "sharp", - "boundElements": [ - { - "id": "RN13O3v7s67B4r3OLdUG1", - "type": "arrow" - } - ], - "updated": 1662377058521, - "link": null, - "locked": false, - "fontSize": 34.377447345525056, - "fontFamily": 1, - "text": "build", - "baseline": 30.49744428742995, - "textAlign": "center", - "verticalAlign": "top", - "containerId": null, - "originalText": "build" - }, - { - "type": "rectangle", - "version": 658, - "versionNonce": 368730618, - "isDeleted": false, - "id": "H3OxM00ltL95Cpv7-pntY", - "fillStyle": "cross-hatch", - "strokeWidth": 2, - "strokeStyle": "solid", - "roughness": 2, - "opacity": 100, - "angle": 0, - "x": 1142, - "y": 615.4226804123714, - "strokeColor": "#000000", - "backgroundColor": "transparent", - "width": 149.99999999999997, - "height": 156.18556701030926, - "seed": 130779411, - "groupIds": [], - "strokeSharpness": "sharp", - "boundElements": [], - "updated": 1662377080212, - "link": null, - "locked": false - }, - { - "type": "text", - "version": 632, - "versionNonce": 651186854, - "isDeleted": false, - "id": "xPFM0yRtVl_q9yUM7sXQY", - "fillStyle": "cross-hatch", - "strokeWidth": 2, - "strokeStyle": "solid", - "roughness": 2, - "opacity": 100, - "angle": 0, - "x": 1153.5979381443308, - "y": 593, - "strokeColor": "#000000", - "backgroundColor": "transparent", - "width": 119.07216494845359, - "height": 19.32989690721649, - "seed": 598893427, - "groupIds": [], - "strokeSharpness": "sharp", - "boundElements": [], - "updated": 1662377080212, - "link": null, - "locked": false, - "fontSize": 15.463917525773192, - "fontFamily": 1, - "text": "openshift-gitops", - "baseline": 13.32989690721649, - "textAlign": "center", - "verticalAlign": "top", - "containerId": null, - "originalText": "openshift-gitops" - }, - { - "type": "rectangle", - "version": 426, - "versionNonce": 2089107174, - "isDeleted": false, - "id": "Lh1_hd6uD6QGi2tzImxzK", - "fillStyle": "cross-hatch", - "strokeWidth": 2, - "strokeStyle": "solid", - "roughness": 2, - "opacity": 100, - "angle": 0, - "x": 863, - "y": 341, - "strokeColor": "#000000", - "backgroundColor": "transparent", - "width": 133, - "height": 112.99999999999999, - "seed": 965598813, - "groupIds": [], - "strokeSharpness": "sharp", - "boundElements": [], - "updated": 1662377027436, - "link": null, - "locked": false - }, - { - "type": "text", - "version": 306, - "versionNonce": 77784762, - "isDeleted": false, - "id": "tkIADUmUYhMbLPj_rlH80", - "fillStyle": "cross-hatch", - "strokeWidth": 2, - "strokeStyle": "solid", - "roughness": 2, - "opacity": 100, - "angle": 0, - "x": 867.5, - "y": 314, - "strokeColor": "#000000", - "backgroundColor": "transparent", - "width": 87, - "height": 25, - "seed": 1565983837, - "groupIds": [], - "strokeSharpness": "sharp", - "boundElements": [], - "updated": 1662377013460, - "link": null, - "locked": false, - "fontSize": 20, - "fontFamily": 1, - "text": "stackrox", - "baseline": 18, - "textAlign": "center", - "verticalAlign": "top", - "containerId": null, - "originalText": "stackrox" - }, - { - "type": "ellipse", - "version": 856, - "versionNonce": 366769594, - "isDeleted": false, - "id": "wMwV6u0KKFw_Dc38afWMF", - "fillStyle": "solid", - "strokeWidth": 1, - "strokeStyle": "solid", - "roughness": 1, - "opacity": 100, - "angle": 6.171742221443356, - "x": 923.0322971761982, - "y": 531.3912617437729, - "strokeColor": "#000000", - "backgroundColor": "#ffffff", - "width": 22.035163420886043, - "height": 55.38568103087571, - "seed": 838055325, - "groupIds": [ - "5sL3E_Kh2M_eVUUFDFE58", - "XH7fEQ9UzUttO2rXPMhBS" - ], - "strokeSharpness": "round", - "boundElements": [], - "updated": 1662377047837, - "link": null, - "locked": false - }, - { - "type": "ellipse", - "version": 905, - "versionNonce": 479877862, - "isDeleted": false, - "id": "MBMG0AaD5nw-RYahlvrZd", - "fillStyle": "solid", - "strokeWidth": 1, - "strokeStyle": "solid", - "roughness": 1, - "opacity": 100, - "angle": 6.171742221443356, - "x": 1107.3110920488577, - "y": 510.76922120538217, - "strokeColor": "#000000", - "backgroundColor": "#868e96", - "width": 22.035163420886043, - "height": 55.38568103087571, - "seed": 1619115699, - "groupIds": [ - "5sL3E_Kh2M_eVUUFDFE58", - "XH7fEQ9UzUttO2rXPMhBS" - ], - "strokeSharpness": "round", - "boundElements": [], - "updated": 1662377047837, - "link": null, - "locked": false - }, - { - "type": "line", - "version": 853, - "versionNonce": 1425649274, - "isDeleted": false, - "id": "AbY3P-Tq38BwFS0a2ybUZ", - "fillStyle": "solid", - "strokeWidth": 1, - "strokeStyle": "solid", - "roughness": 1, - "opacity": 100, - "angle": 6.171742221443356, - "x": 930.5270754650107, - "y": 522.8986712363732, - "strokeColor": "#000000", - "backgroundColor": "#ffffff", - "width": 185.07650598536188, - "height": 0, - "seed": 814021117, - "groupIds": [ - "5sL3E_Kh2M_eVUUFDFE58", - "XH7fEQ9UzUttO2rXPMhBS" - ], - "strokeSharpness": "round", - "boundElements": [], - "updated": 1662377047837, - "link": null, - "locked": false, - "startBinding": null, - "endBinding": null, - "lastCommittedPoint": null, - "startArrowhead": null, - "endArrowhead": null, - "points": [ - [ - 0, - 0 - ], - [ - 185.07650598536188, - 0 - ] - ] - }, - { - "type": "line", - "version": 880, - "versionNonce": 1402605094, - "isDeleted": false, - "id": "aJqRo9gGOKlY2ENbYtstW", - "fillStyle": "solid", - "strokeWidth": 1, - "strokeStyle": "solid", - "roughness": 1, - "opacity": 100, - "angle": 6.171742221443356, - "x": 936.6726735119306, - "y": 576.8683557622097, - "strokeColor": "#000000", - "backgroundColor": "#ffffff", - "width": 189.31590906930967, - "height": 0, - "seed": 1105031251, - "groupIds": [ - "5sL3E_Kh2M_eVUUFDFE58", - "XH7fEQ9UzUttO2rXPMhBS" - ], - "strokeSharpness": "round", - "boundElements": [], - "updated": 1662377047837, - "link": null, - "locked": false, - "startBinding": null, - "endBinding": null, - "lastCommittedPoint": null, - "startArrowhead": null, - "endArrowhead": null, - "points": [ - [ - 0, - 0 - ], - [ - 189.31590906930967, - 0 - ] - ] - }, - { - "type": "rectangle", - "version": 889, - "versionNonce": 1433521978, - "isDeleted": false, - "id": "KY2uYD7WFirJTaxA0LQ6k", - "fillStyle": "solid", - "strokeWidth": 1, - "strokeStyle": "solid", - "roughness": 0, - "opacity": 100, - "angle": 6.171742221443356, - "x": 932.2325679480125, - "y": 533.0038170597461, - "strokeColor": "transparent", - "backgroundColor": "#ffffff", - "width": 14.050790228695858, - "height": 50.69529968116781, - "seed": 1764667997, - "groupIds": [ - "5sL3E_Kh2M_eVUUFDFE58", - "XH7fEQ9UzUttO2rXPMhBS" - ], - "strokeSharpness": "round", - "boundElements": [], - "updated": 1662377047837, - "link": null, - "locked": false - }, - { - "type": "text", - "version": 798, - "versionNonce": 1321294182, - "isDeleted": false, - "id": "gSA7nLO0_M27ncuD64kRI", - "fillStyle": "solid", - "strokeWidth": 1, - "strokeStyle": "solid", - "roughness": 0, - "opacity": 100, - "angle": 6.171742221443356, - "x": 959.3179350158473, - "y": 527.6384606141891, - "strokeColor": "#000000", - "backgroundColor": "#ffffff", - "width": 105.40259284078581, - "height": 44.796101957333974, - "seed": 202501619, - "groupIds": [ - "XH7fEQ9UzUttO2rXPMhBS" - ], - "strokeSharpness": "round", - "boundElements": [], - "updated": 1662377047837, - "link": null, - "locked": false, - "fontSize": 35.86773720941989, - "fontFamily": 1, - "text": "deploy", - "baseline": 31.796101957333974, - "textAlign": "left", - "verticalAlign": "top", - "containerId": null, - "originalText": "deploy" - }, - { - "type": "ellipse", - "version": 776, - "versionNonce": 1721948006, - "isDeleted": false, - "id": "pxosoNQSb3i47Z74v2vDO", - "fillStyle": "solid", - "strokeWidth": 1, - "strokeStyle": "solid", - "roughness": 1, - "opacity": 100, - "angle": 0.19736959647071828, - "x": 905.2822549169852, - "y": 597.3526951134962, - "strokeColor": "#000000", - "backgroundColor": "#ffffff", - "width": 24.878625547778245, - "height": 62.53276151198314, - "seed": 149064573, - "groupIds": [ - "0HX-yqxxA0PAUcoMemv0B", - "BChvbNdhoMJ7QE6skd7OB" - ], - "strokeSharpness": "round", - "boundElements": [], - "updated": 1662377075242, - "link": null, - "locked": false - }, - { - "type": "ellipse", - "version": 825, - "versionNonce": 1797601786, - "isDeleted": false, - "id": "QXSWWWqHL6GblQWOGf7HA", - "fillStyle": "solid", - "strokeWidth": 1, - "strokeStyle": "solid", - "roughness": 1, - "opacity": 100, - "angle": 0.19736959647071828, - "x": 1110.5749664278906, - "y": 638.405694148249, - "strokeColor": "#000000", - "backgroundColor": "#868e96", - "width": 24.878625547778245, - "height": 62.53276151198314, - "seed": 1425782483, - "groupIds": [ - "0HX-yqxxA0PAUcoMemv0B", - "BChvbNdhoMJ7QE6skd7OB" - ], - "strokeSharpness": "round", - "boundElements": [], - "updated": 1662377075242, - "link": null, - "locked": false - }, - { - "type": "line", - "version": 787, - "versionNonce": 811530918, - "isDeleted": false, - "id": "GzhhNSJ1i-tpGvltYkiYH", - "fillStyle": "solid", - "strokeWidth": 1, - "strokeStyle": "solid", - "roughness": 1, - "opacity": 100, - "angle": 0.19736959647071828, - "x": 921.7742335148887, - "y": 619.1993517241623, - "strokeColor": "#000000", - "backgroundColor": "#ffffff", - "width": 208.95915324760554, - "height": 0, - "seed": 1390285789, - "groupIds": [ - "0HX-yqxxA0PAUcoMemv0B", - "BChvbNdhoMJ7QE6skd7OB" - ], - "strokeSharpness": "round", - "boundElements": [], - "updated": 1662377075242, - "link": null, - "locked": false, - "startBinding": null, - "endBinding": null, - "lastCommittedPoint": null, - "startArrowhead": null, - "endArrowhead": null, - "points": [ - [ - 0, - 0 - ], - [ - 208.95915324760554, - 0 - ] - ] - }, - { - "type": "line", - "version": 808, - "versionNonce": 1159719610, - "isDeleted": false, - "id": "w_khHTtgcA2Dpy1SNs6Ai", - "fillStyle": "solid", - "strokeWidth": 1, - "strokeStyle": "solid", - "roughness": 1, - "opacity": 100, - "angle": 0.19736959647071828, - "x": 909.6265570413314, - "y": 678.9040771472897, - "strokeColor": "#000000", - "backgroundColor": "#ffffff", - "width": 213.7456174937323, - "height": 0, - "seed": 1621320819, - "groupIds": [ - "0HX-yqxxA0PAUcoMemv0B", - "BChvbNdhoMJ7QE6skd7OB" - ], - "strokeSharpness": "round", - "boundElements": [], - "updated": 1662377075242, - "link": null, - "locked": false, - "startBinding": null, - "endBinding": null, - "lastCommittedPoint": null, - "startArrowhead": null, - "endArrowhead": null, - "points": [ - [ - 0, - 0 - ], - [ - 213.7456174937323, - 0 - ] - ] - }, - { - "type": "rectangle", - "version": 808, - "versionNonce": 221558246, - "isDeleted": false, - "id": "1t7JhE9gSSVDS_fWcD4LB", - "fillStyle": "solid", - "strokeWidth": 1, - "strokeStyle": "solid", - "roughness": 0, - "opacity": 100, - "angle": 0.19736959647071828, - "x": 915.6429892853021, - "y": 600.9996065335094, - "strokeColor": "transparent", - "backgroundColor": "#ffffff", - "width": 15.863932664042373, - "height": 57.23712385108606, - "seed": 2030669885, - "groupIds": [ - "0HX-yqxxA0PAUcoMemv0B", - "BChvbNdhoMJ7QE6skd7OB" - ], - "strokeSharpness": "round", - "boundElements": [], - "updated": 1662377075242, - "link": null, - "locked": false - }, - { - "type": "text", - "version": 749, - "versionNonce": 369525626, - "isDeleted": false, - "id": "GsqCVavnvOAOfj0cBBnyC", - "fillStyle": "solid", - "strokeWidth": 1, - "strokeStyle": "solid", - "roughness": 0, - "opacity": 100, - "angle": 0.19736959647071828, - "x": 929.77160235432, - "y": 633.7753475295716, - "strokeColor": "#000000", - "backgroundColor": "#ffffff", - "width": 169, - "height": 25, - "seed": 574905875, - "groupIds": [ - "BChvbNdhoMJ7QE6skd7OB" - ], - "strokeSharpness": "round", - "boundElements": [], - "updated": 1662377075242, - "link": null, - "locked": false, - "fontSize": 20, - "fontFamily": 1, - "text": "git-update-deploy", - "baseline": 18, - "textAlign": "left", - "verticalAlign": "top", - "containerId": null, - "originalText": "git-update-deploy" - }, - { - "type": "rectangle", - "version": 137, - "versionNonce": 1956973754, - "isDeleted": false, - "id": "8pt_5ImrdBMySC8OvdS7D", - "fillStyle": "cross-hatch", - "strokeWidth": 2, - "strokeStyle": "solid", - "roughness": 2, - "opacity": 100, - "angle": 0, - "x": 1466, - "y": 330, - "strokeColor": "#000000", - "backgroundColor": "transparent", - "width": 341, - "height": 385, - "seed": 212680499, - "groupIds": [], - "strokeSharpness": "sharp", - "boundElements": [], - "updated": 1662377013461, - "link": null, - "locked": false - }, - { - "type": "text", - "version": 128, - "versionNonce": 1569371110, - "isDeleted": false, - "id": "lanmH1jUBrQxV0-a9Io5g", - "fillStyle": "cross-hatch", - "strokeWidth": 2, - "strokeStyle": "solid", - "roughness": 2, - "opacity": 100, - "angle": 0, - "x": 1473, - "y": 302, - "strokeColor": "#000000", - "backgroundColor": "transparent", - "width": 132, - "height": 50, - "seed": 1775056627, - "groupIds": [], - "strokeSharpness": "sharp", - "boundElements": [], - "updated": 1662377013461, - "link": null, - "locked": false, - "fontSize": 20, - "fontFamily": 1, - "text": "workshop-prod\n", - "baseline": 43, - "textAlign": "center", - "verticalAlign": "top", - "containerId": null, - "originalText": "workshop-prod\n" - }, - { - "type": "rectangle", - "version": 1976, - "versionNonce": 479683962, - "isDeleted": false, - "id": "0_La1aeThN3RPAwqUna9p", - "fillStyle": "cross-hatch", - "strokeWidth": 1, - "strokeStyle": "solid", - "roughness": 2, - "opacity": 100, - "angle": 0, - "x": 1526.610967391419, - "y": 412.1743823584153, - "strokeColor": "#5665dc", - "backgroundColor": "#5665dc", - "width": 221.77806521716144, - "height": 206.2768434196143, - "seed": 354642141, - "groupIds": [ - "Wb2_Fn2dfsI_57i5ug6Oh" - ], - "strokeSharpness": "round", - "boundElements": [ - { - "id": "IdDsqRoxUzCm_nD_ZpV20", - "type": "arrow" - }, - { - "id": "MYovX0mFVqLZ-YhnVlKWi", - "type": "arrow" - } - ], - "updated": 1662377013461, - "link": null, - "locked": false - }, - { - "type": "rectangle", - "version": 1996, - "versionNonce": 655836966, - "isDeleted": false, - "id": "JAIRv9tb3b79t7mbWBgcj", - "fillStyle": "solid", - "strokeWidth": 1, - "strokeStyle": "solid", - "roughness": 2, - "opacity": 100, - "angle": 0, - "x": 1539.5594733654664, - "y": 425.0086688034263, - "strokeColor": "#5665dc", - "backgroundColor": "#ffffff", - "width": 197.8137202206727, - "height": 179.09259550938995, - "seed": 1338630003, - "groupIds": [ - "Wb2_Fn2dfsI_57i5ug6Oh" - ], - "strokeSharpness": "round", - "boundElements": [ - { - "id": "YGLbIKYvHLJ7195OM_YrC", - "type": "arrow" - }, - { - "id": "IdDsqRoxUzCm_nD_ZpV20", - "type": "arrow" - } - ], - "updated": 1662377013461, - "link": null, - "locked": false - }, - { - "type": "line", - "version": 2164, - "versionNonce": 1849730618, - "isDeleted": false, - "id": "NtzbTA4Zcgw30kjesOoTG", - "fillStyle": "cross-hatch", - "strokeWidth": 1, - "strokeStyle": "solid", - "roughness": 1, - "opacity": 100, - "angle": 1.5774237450700657, - "x": 1658.9280885952755, - "y": 458.18171418176166, - "strokeColor": "#c92a2a", - "backgroundColor": "#fa5252", - "width": 128.62355295977417, - "height": 111.39123593465332, - "seed": 1373390141, - "groupIds": [ - "Wb2_Fn2dfsI_57i5ug6Oh" - ], - "strokeSharpness": "sharp", - "boundElements": [], - "updated": 1662377013461, - "link": null, - "locked": false, - "lastCommittedPoint": null, - "startArrowhead": null, - "endArrowhead": null, - "points": [ - [ - 0, - 0 - ], - [ - 64.31177647988696, - 111.39123593465294 - ], - [ - -64.31177647988724, - 111.39123593465331 - ], - [ - 0, - 0 - ] - ] - }, - { - "type": "line", - "version": 2589, - "versionNonce": 271544934, - "isDeleted": false, - "id": "02Rx1lBDUIE1KJvQPYMdf", - "fillStyle": "cross-hatch", - "strokeWidth": 1, - "strokeStyle": "solid", - "roughness": 1, - "opacity": 100, - "angle": 4.721247315744137, - "x": 1622.1754295469339, - "y": 459.05789961657365, - "strokeColor": "#5665dc", - "backgroundColor": "#5665dc", - "width": 128.62355295977417, - "height": 111.39123593465332, - "seed": 2095282451, - "groupIds": [ - "Wb2_Fn2dfsI_57i5ug6Oh" - ], - "strokeSharpness": "sharp", - "boundElements": [], - "updated": 1662377013461, - "link": null, - "locked": false, - "lastCommittedPoint": null, - "startArrowhead": null, - "endArrowhead": null, - "points": [ - [ - 0, - 0 - ], - [ - 64.31177647988696, - 111.39123593465294 - ], - [ - -64.31177647988724, - 111.39123593465331 - ], - [ - 0, - 0 - ] - ] - }, - { - "type": "line", - "version": 2911, - "versionNonce": 1652805370, - "isDeleted": false, - "id": "GpNTvTCGewFoS0C2oMAtL", - "fillStyle": "cross-hatch", - "strokeWidth": 1, - "strokeStyle": "solid", - "roughness": 1, - "opacity": 100, - "angle": 0.0005581869343673773, - "x": 1638.7180529110083, - "y": 561.6349550140723, - "strokeColor": "#5665dc", - "backgroundColor": "#5665dc", - "width": 49.82260909177225, - "height": 51.410026882011636, - "seed": 1341822365, - "groupIds": [ - "Wb2_Fn2dfsI_57i5ug6Oh" - ], - "strokeSharpness": "sharp", - "boundElements": [], - "updated": 1662377013461, - "link": null, - "locked": false, - "lastCommittedPoint": null, - "startArrowhead": null, - "endArrowhead": null, - "points": [ - [ - 0, - 0 - ], - [ - 24.911304545885905, - 51.41002688201148 - ], - [ - -24.911304545886345, - 51.41002688201164 - ], - [ - 0, - 0 - ] - ] - }, - { - "type": "rectangle", - "version": 1924, - "versionNonce": 1403008422, - "isDeleted": false, - "id": "9RvRO0Zj5HMKTJ1HoCS-q", - "fillStyle": "solid", - "strokeWidth": 1, - "strokeStyle": "solid", - "roughness": 2, - "opacity": 100, - "angle": 5.989889724533434, - "x": 1663.2430591157047, - "y": 595.1484839689303, - "strokeColor": "#ffffff", - "backgroundColor": "#ffffff", - "width": 17.497854972834, - "height": 28.044079728122867, - "seed": 853073587, - "groupIds": [ - "Wb2_Fn2dfsI_57i5ug6Oh" - ], - "strokeSharpness": "round", - "boundElements": [], - "updated": 1662377013461, - "link": null, - "locked": false - }, - { - "type": "line", - "version": 1850, - "versionNonce": 1575215034, - "isDeleted": false, - "id": "AvM9koHNJw3uQbCDmlhAi", - "fillStyle": "cross-hatch", - "strokeWidth": 1, - "strokeStyle": "solid", - "roughness": 1, - "opacity": 100, - "angle": 0, - "x": 1642.6148868503171, - "y": 474.8880583910558, - "strokeColor": "#000000", - "backgroundColor": "#000000", - "width": 69.84033105598769, - "height": 83.40936009217185, - "seed": 716167677, - "groupIds": [ - "Wb2_Fn2dfsI_57i5ug6Oh" - ], - "strokeSharpness": "sharp", - "boundElements": [], - "updated": 1662377013461, - "link": null, - "locked": false, - "lastCommittedPoint": null, - "startArrowhead": null, - "endArrowhead": null, - "points": [ - [ - 0, - 0 - ], - [ - 34.92016552799359, - 20.852340023042693 - ], - [ - 34.92016552799375, - 62.557020069128804 - ], - [ - -3.552713678800501e-14, - 83.40936009217185 - ], - [ - -34.92016552799395, - 62.55702006912823 - ], - [ - -34.9201655279939, - 20.852340023043222 - ], - [ - 0, - 0 - ] - ] - }, - { - "type": "line", - "version": 1688, - "versionNonce": 1251381478, - "isDeleted": false, - "id": "UfX2oAa4cs5EuKGQM5fqb", - "fillStyle": "hachure", - "strokeWidth": 2, - "strokeStyle": "solid", - "roughness": 1, - "opacity": 100, - "angle": 0, - "x": 1602.917213951931, - "y": 487.26340192544416, - "strokeColor": "#ffffff", - "backgroundColor": "#ffffff", - "width": 34.98319466868052, - "height": 25.689054524439623, - "seed": 2085654611, - "groupIds": [ - "Wb2_Fn2dfsI_57i5ug6Oh" - ], - "strokeSharpness": "round", - "boundElements": [], - "updated": 1662377013461, - "link": null, - "locked": false, - "startBinding": null, - "endBinding": null, - "lastCommittedPoint": null, - "startArrowhead": null, - "endArrowhead": null, - "points": [ - [ - 0, - 0 - ], - [ - 34.98319466868052, - 25.689054524439623 - ] - ] - }, - { - "type": "line", - "version": 1576, - "versionNonce": 1015273594, - "isDeleted": false, - "id": "EVVFMmRHRhfXmUT4-M8sZ", - "fillStyle": "hachure", - "strokeWidth": 1, - "strokeStyle": "solid", - "roughness": 2, - "opacity": 100, - "angle": 0, - "x": 1621.2887361425333, - "y": 502.6564810960499, - "strokeColor": "#ffffff", - "backgroundColor": "#ffffff", - "width": 7.484098664359511, - "height": 5.402765024174263, - "seed": 452825693, - "groupIds": [ - "Wb2_Fn2dfsI_57i5ug6Oh" - ], - "strokeSharpness": "round", - "boundElements": [], - "updated": 1662377013461, - "link": null, - "locked": false, - "startBinding": null, - "endBinding": null, - "lastCommittedPoint": null, - "startArrowhead": null, - "endArrowhead": null, - "points": [ - [ - 0, - 0 - ], - [ - 7.484098664359511, - 5.402765024174263 - ] - ] - }, - { - "type": "line", - "version": 1796, - "versionNonce": 547324966, - "isDeleted": false, - "id": "YhlYZ0qUNmCO_HBX3iZXH", - "fillStyle": "hachure", - "strokeWidth": 2, - "strokeStyle": "solid", - "roughness": 1, - "opacity": 100, - "angle": 0, - "x": 1635.333028553148, - "y": 511.16530082305417, - "strokeColor": "#ffffff", - "backgroundColor": "#ffffff", - "width": 1.6131948677025787, - "height": 47.55074822865768, - "seed": 1260457459, - "groupIds": [ - "Wb2_Fn2dfsI_57i5ug6Oh" - ], - "strokeSharpness": "round", - "boundElements": [], - "updated": 1662377013461, - "link": null, - "locked": false, - "startBinding": null, - "endBinding": null, - "lastCommittedPoint": null, - "startArrowhead": null, - "endArrowhead": null, - "points": [ - [ - 0, - 0 - ], - [ - 1.6131948677025787, - 47.55074822865768 - ] - ] - }, - { - "type": "line", - "version": 1783, - "versionNonce": 1579596090, - "isDeleted": false, - "id": "SyQKuaVA586VCFiFEZAn5", - "fillStyle": "hachure", - "strokeWidth": 2, - "strokeStyle": "solid", - "roughness": 1, - "opacity": 100, - "angle": 0, - "x": 1637.6935138972788, - "y": 517.0460602840465, - "strokeColor": "#ffffff", - "backgroundColor": "#ffffff", - "width": 39.591831785042224, - "height": 25.247741413724963, - "seed": 1035288253, - "groupIds": [ - "Wb2_Fn2dfsI_57i5ug6Oh" - ], - "strokeSharpness": "round", - "boundElements": [], - "updated": 1662377013461, - "link": null, - "locked": false, - "startBinding": null, - "endBinding": null, - "lastCommittedPoint": null, - "startArrowhead": null, - "endArrowhead": null, - "points": [ - [ - 0, - 0 - ], - [ - 39.591831785042224, - -25.247741413724963 - ] - ] - }, - { - "type": "arrow", - "version": 528, - "versionNonce": 1579297850, - "isDeleted": false, - "id": "MYovX0mFVqLZ-YhnVlKWi", - "fillStyle": "cross-hatch", - "strokeWidth": 2, - "strokeStyle": "solid", - "roughness": 2, - "opacity": 100, - "angle": 0, - "x": 1283.1564767176133, - "y": 684.4581282044126, - "strokeColor": "#000000", - "backgroundColor": "transparent", - "width": 224.77827461297284, - "height": 115.37221903422255, - "seed": 1441943059, - "groupIds": [], - "strokeSharpness": "round", - "boundElements": [], - "updated": 1662377080212, - "link": null, - "locked": false, - "startBinding": { - "elementId": "ViSSRBSV13MQgSIMp1121", - "gap": 5.643188463702577, - "focus": 0.5687994618431667 - }, - "endBinding": { - "elementId": "0_La1aeThN3RPAwqUna9p", - "gap": 18.676216060833045, - "focus": 0.07952917546208692 - }, - "lastCommittedPoint": null, - "startArrowhead": null, - "endArrowhead": "arrow", - "points": [ - [ - 0, - 0 - ], - [ - 224.77827461297284, - -115.37221903422255 - ] - ] - }, - { - "type": "text", - "version": 220, - "versionNonce": 763578022, - "isDeleted": false, - "id": "XnKjHY3PMIJ8X3Iut90Vn", - "fillStyle": "cross-hatch", - "strokeWidth": 2, - "strokeStyle": "solid", - "roughness": 2, - "opacity": 100, - "angle": 5.7336898209154965, - "x": 1330.2327148757256, - "y": 599.1706796069483, - "strokeColor": "#000000", - "backgroundColor": "transparent", - "width": 82, - "height": 35, - "seed": 1828456029, - "groupIds": [], - "strokeSharpness": "sharp", - "boundElements": [], - "updated": 1662377085089, - "link": null, - "locked": false, - "fontSize": 28.06225922943561, - "fontFamily": 1, - "text": "deploy", - "baseline": 25, - "textAlign": "center", - "verticalAlign": "top", - "containerId": null, - "originalText": "deploy" - }, - { - "type": "line", - "version": 831, - "versionNonce": 1811755686, - "isDeleted": false, - "id": "thzNSrLnhzVO2GasUl5cc", - "fillStyle": "cross-hatch", - "strokeWidth": 1, - "strokeStyle": "solid", - "roughness": 1, - "opacity": 100, - "angle": 0, - "x": 925.6494827783839, - "y": 354.3927118461836, - "strokeColor": "#000000", - "backgroundColor": "#fa5252", - "width": 36.80024161240393, - "height": 88.85250563167858, - "seed": 1322750531, - "groupIds": [ - "f5rXZgheTqPG4zyAM423g" - ], - "strokeSharpness": "sharp", - "boundElements": [], - "updated": 1662377013461, - "link": null, - "locked": false, - "startBinding": null, - "endBinding": null, - "lastCommittedPoint": null, - "startArrowhead": null, - "endArrowhead": null, - "points": [ - [ - 0, - 0 - ], - [ - 36.54498897630312, - 15.261051414092641 - ], - [ - 36.525405690682085, - 45.153295005115055 - ], - [ - 33.861707995967805, - 54.6963126323562 - ], - [ - 30.75587306651343, - 62.74498320806545 - ], - [ - 25.995711074158308, - 70.65770726099038 - ], - [ - 19.384635499286603, - 77.89135666010898 - ], - [ - 12.720085711387398, - 83.41935810731395 - ], - [ - 6.3787139693362676, - 86.70159812520359 - ], - [ - -0.10265972239303522, - 88.85250563167858 - ], - [ - -0.06340941077258577, - 75.88601983847225 - ], - [ - 3.235165962349569, - 75.91990478442317 - ], - [ - 3.265892699745965, - 45.02965233649152 - ], - [ - 10.123487985548383, - 41.65139201192042 - ], - [ - 14.054309196616089, - 36.66744582135474 - ], - [ - 15.020182683336147, - 29.556272707018426 - ], - [ - 13.477762673179786, - 23.272149476476017 - ], - [ - 10.332659487738045, - 19.279602634385917 - ], - [ - 5.664390597703437, - 15.97419942970106 - ], - [ - -0.2552526361008107, - 14.639126577777791 - ], - [ - -0.1431362324107487, - 0.028909870259032244 - ] - ] - }, - { - "type": "line", - "version": 1005, - "versionNonce": 1134637754, - "isDeleted": false, - "id": "n1fqP2_PtM2rcvpKW08rG", - "fillStyle": "cross-hatch", - "strokeWidth": 1, - "strokeStyle": "solid", - "roughness": 1, - "opacity": 100, - "angle": 0, - "x": 926.2197362499746, - "y": 354.7812737761983, - "strokeColor": "#000000", - "backgroundColor": "#fa5252", - "width": 37.27971210224614, - "height": 88.4324489402708, - "seed": 1507059565, - "groupIds": [ - "f5rXZgheTqPG4zyAM423g" - ], - "strokeSharpness": "sharp", - "boundElements": [], - "updated": 1662377013461, - "link": null, - "locked": false, - "startBinding": null, - "endBinding": null, - "lastCommittedPoint": null, - "startArrowhead": null, - "endArrowhead": null, - "points": [ - [ - 0, - 0 - ], - [ - -36.946879987066026, - 14.582954728276466 - ], - [ - -37.27971210224613, - 44.5147746202494 - ], - [ - -35.28827319268641, - 51.43914687632476 - ], - [ - -33.892904277628304, - 56.51656527348815 - ], - [ - -31.404316686212724, - 62.933662243383665 - ], - [ - -28.13051949289693, - 68.68165564595134 - ], - [ - -24.982733624620305, - 73.2132662199858 - ], - [ - -20.447749509629823, - 77.79425370996469 - ], - [ - -15.523390579710775, - 81.67477087947076 - ], - [ - -9.834529847164426, - 85.02468508597275 - ], - [ - -0.505827773925617, - 88.26419358508505 - ], - [ - -0.3509319998134188, - 75.84395226126611 - ], - [ - -3.382046585963373, - 75.71588929695716 - ], - [ - -3.4159315319143033, - 73.27023360308148 - ], - [ - -9.316146997942827, - 73.06574558062337 - ], - [ - -9.574641582976785, - 66.67822092719408 - ], - [ - -3.2928331757501113, - 66.56177394965253 - ], - [ - -3.639679841391416, - 60.9562109677351 - ], - [ - -13.193338478137523, - 60.87793165835117 - ], - [ - -12.658686069695126, - 54.5946398501366 - ], - [ - -3.403089346749777, - 54.352630156725205 - ], - [ - -3.1780251170416314, - 45.18840614946336 - ], - [ - -7.688574985922852, - 43.89485656228696 - ], - [ - -11.428510004557769, - 40.552102158133266 - ], - [ - -13.822485922084503, - 37.037590256542366 - ], - [ - -15.280597315616209, - 32.15696772994078 - ], - [ - -15.256707381966086, - 27.26905679969558 - ], - [ - -13.898402556508104, - 23.189354168117305 - ], - [ - -11.25508368100924, - 19.441188666582406 - ], - [ - -7.757947907924449, - 17.198450863070793 - ], - [ - -3.850538114059246, - 15.406083767927218 - ], - [ - -0.26874081846960607, - 14.906733910412115 - ], - [ - -0.07050341710929331, - -0.16825535518573176 - ] - ] - }, - { - "type": "ellipse", - "version": 531, - "versionNonce": 676064742, - "isDeleted": false, - "id": "FpCZgjpwqcVTht-qzpTqJ", - "fillStyle": "cross-hatch", - "strokeWidth": 1, - "strokeStyle": "solid", - "roughness": 1, - "opacity": 100, - "angle": 0, - "x": 917.5989938401738, - "y": 376.4512245752927, - "strokeColor": "#000000", - "backgroundColor": "#fa5252", - "width": 16.598766574025625, - "height": 16.598766574025625, - "seed": 1263686115, - "groupIds": [ - "f5rXZgheTqPG4zyAM423g" - ], - "strokeSharpness": "sharp", - "boundElements": [], - "updated": 1662377013461, - "link": null, - "locked": false - }, - { - "type": "rectangle", - "version": 474, - "versionNonce": 722473658, - "isDeleted": false, - "id": "XS-ozr6RBj5EVAHcfx2_5", - "fillStyle": "cross-hatch", - "strokeWidth": 1, - "strokeStyle": "solid", - "roughness": 2, - "opacity": 100, - "angle": 0, - "x": 1152.0548095703127, - "y": 702.1477313809243, - "strokeColor": "#000000", - "backgroundColor": "#fa5252", - "width": 51.06135863612197, - "height": 41.56354181243603, - "seed": 1898464195, - "groupIds": [ - "OY6MK1eU2JaL-m31SInn-" - ], - "strokeSharpness": "round", - "boundElements": [], - "updated": 1662377080212, - "link": null, - "locked": false - }, - { - "type": "rectangle", - "version": 603, - "versionNonce": 1538985446, - "isDeleted": false, - "id": "ViSSRBSV13MQgSIMp1121", - "fillStyle": "cross-hatch", - "strokeWidth": 1, - "strokeStyle": "solid", - "roughness": 2, - "opacity": 100, - "angle": 0, - "x": 1182.4738167836779, - "y": 639.2887268066405, - "strokeColor": "#000000", - "backgroundColor": "#fa5252", - "width": 95.03947147023257, - "height": 74.70988753089877, - "seed": 1195445741, - "groupIds": [ - "OY6MK1eU2JaL-m31SInn-" - ], - "strokeSharpness": "round", - "boundElements": [ - { - "id": "O-6qwc0WhxULz_4I0s_HA", - "type": "arrow" - }, - { - "id": "MYovX0mFVqLZ-YhnVlKWi", - "type": "arrow" - } - ], - "updated": 1662377080212, - "link": null, - "locked": false - }, - { - "type": "arrow", - "version": 708, - "versionNonce": 675583226, - "isDeleted": false, - "id": "O-6qwc0WhxULz_4I0s_HA", - "fillStyle": "cross-hatch", - "strokeWidth": 4, - "strokeStyle": "solid", - "roughness": 2, - "opacity": 100, - "angle": 0, - "x": 1173.7365422532155, - "y": 723.2464245057326, - "strokeColor": "#000000", - "backgroundColor": "#fa5252", - "width": 63.91981266360501, - "height": 52.29286799863308, - "seed": 328258403, - "groupIds": [ - "OY6MK1eU2JaL-m31SInn-" - ], - "strokeSharpness": "round", - "boundElements": [], - "updated": 1662377080765, - "link": null, - "locked": false, - "startBinding": { - "elementId": "ViSSRBSV13MQgSIMp1121", - "focus": 0.0075931537938258185, - "gap": 9.247810168193439 - }, - "endBinding": null, - "lastCommittedPoint": null, - "startArrowhead": null, - "endArrowhead": "arrow", - "points": [ - [ - 0, - 0 - ], - [ - 63.91981266360501, - -52.29286799863308 - ] - ] - }, - { - "type": "ellipse", - "version": 754, - "versionNonce": 1936338022, - "isDeleted": false, - "id": "KPZsUz6XrfRgo5gzwOnCF", - "fillStyle": "cross-hatch", - "strokeWidth": 1, - "strokeStyle": "solid", - "roughness": 1, - "opacity": 100, - "angle": 0, - "x": 691.228543069361, - "y": 356.8137377360939, - "strokeColor": "#000000", - "backgroundColor": "#fa5252", - "width": 17.73721237969338, - "height": 17.737212379693382, - "seed": 839994541, - "groupIds": [ - "b1ibwSW8IcqyRbXlyG-Xj" - ], - "strokeSharpness": "sharp", - "boundElements": [], - "updated": 1662377013461, - "link": null, - "locked": false - }, - { - "type": "ellipse", - "version": 906, - "versionNonce": 1894364410, - "isDeleted": false, - "id": "0EvWV8PC9X7e1VrL7zu7Z", - "fillStyle": "cross-hatch", - "strokeWidth": 1, - "strokeStyle": "solid", - "roughness": 1, - "opacity": 100, - "angle": 0, - "x": 620.806908501519, - "y": 324.72344471178013, - "strokeColor": "#000000", - "backgroundColor": "#fa5252", - "width": 14.096941137149154, - "height": 14.096941137149154, - "seed": 737730723, - "groupIds": [ - "b1ibwSW8IcqyRbXlyG-Xj" - ], - "strokeSharpness": "sharp", - "boundElements": [], - "updated": 1662377013461, - "link": null, - "locked": false - }, - { - "type": "ellipse", - "version": 962, - "versionNonce": 863219622, - "isDeleted": false, - "id": "Ghr9iuQZ3q8DjB1pegFrI", - "fillStyle": "cross-hatch", - "strokeWidth": 1, - "strokeStyle": "solid", - "roughness": 1, - "opacity": 100, - "angle": 0, - "x": 620.8278846144517, - "y": 358.65350858826474, - "strokeColor": "#000000", - "backgroundColor": "#fa5252", - "width": 14.096941137149154, - "height": 14.096941137149154, - "seed": 1425878797, - "groupIds": [ - "b1ibwSW8IcqyRbXlyG-Xj" - ], - "strokeSharpness": "sharp", - "boundElements": [], - "updated": 1662377013461, - "link": null, - "locked": false - }, - { - "type": "ellipse", - "version": 971, - "versionNonce": 849151418, - "isDeleted": false, - "id": "odlpEEpNgIDZzeq3OXuvP", - "fillStyle": "cross-hatch", - "strokeWidth": 1, - "strokeStyle": "solid", - "roughness": 1, - "opacity": 100, - "angle": 0, - "x": 621.0832978108213, - "y": 391.8841472892281, - "strokeColor": "#000000", - "backgroundColor": "#fa5252", - "width": 14.096941137149154, - "height": 14.096941137149154, - "seed": 1744491587, - "groupIds": [ - "b1ibwSW8IcqyRbXlyG-Xj" - ], - "strokeSharpness": "sharp", - "boundElements": [], - "updated": 1662377013461, - "link": null, - "locked": false - }, - { - "type": "line", - "version": 970, - "versionNonce": 367708902, - "isDeleted": false, - "id": "wsKOdGOVXg-2pEVWlBNMl", - "fillStyle": "cross-hatch", - "strokeWidth": 1, - "strokeStyle": "solid", - "roughness": 1, - "opacity": 100, - "angle": 0, - "x": 642.3923405792287, - "y": 327.0220579467141, - "strokeColor": "#000000", - "backgroundColor": "#fa5252", - "width": 41.4984973634862, - "height": 42.84726016307581, - "seed": 1224590701, - "groupIds": [ - "b1ibwSW8IcqyRbXlyG-Xj" - ], - "strokeSharpness": "sharp", - "boundElements": [], - "updated": 1662377013461, - "link": null, - "locked": false, - "startBinding": null, - "endBinding": null, - "lastCommittedPoint": null, - "startArrowhead": null, - "endArrowhead": null, - "points": [ - [ - 0, - 0 - ], - [ - 6.331539146649046, - 0.6911701828995058 - ], - [ - 12.568263416808293, - 2.7567336315794506 - ], - [ - 17.783689413894457, - 6.115027696806288 - ], - [ - 21.55680080812036, - 10.927360487295218 - ], - [ - 29.238198258256762, - 26.091034405487317 - ], - [ - 32.945365761671674, - 30.574916422617147 - ], - [ - 37.42140189982159, - 33.340894759105936 - ], - [ - 41.416542729958344, - 33.84541709619365 - ], - [ - 40.65242563104734, - 42.84726016307581 - ], - [ - 35.08918171060486, - 41.79625619570694 - ], - [ - 29.89463909166145, - 39.481563741388634 - ], - [ - 24.964704070453816, - 35.15988031617168 - ], - [ - 20.916849385577226, - 28.38179727273358 - ], - [ - 14.999667618648054, - 17.15976986783135 - ], - [ - 10.648842357220921, - 12.302187465926371 - ], - [ - 6.500015817009046, - 9.797189469362907 - ], - [ - 0.20955312070965437, - 9.562246308014643 - ], - [ - -0.08195463352785409, - 0.15905318117947767 - ] - ] - }, - { - "type": "line", - "version": 437, - "versionNonce": 724057722, - "isDeleted": false, - "id": "I7dID8l91TbWqTx5vRMCa", - "fillStyle": "cross-hatch", - "strokeWidth": 1, - "strokeStyle": "solid", - "roughness": 1, - "opacity": 100, - "angle": 0, - "x": 642.2938208953407, - "y": 360.90387398414344, - "strokeColor": "#000000", - "backgroundColor": "#fa5252", - "width": 18.63572979046503, - "height": 8.945450381946396, - "seed": 582833123, - "groupIds": [ - "b1ibwSW8IcqyRbXlyG-Xj" - ], - "strokeSharpness": "sharp", - "boundElements": [], - "updated": 1662377013461, - "link": null, - "locked": false, - "startBinding": null, - "endBinding": null, - "lastCommittedPoint": null, - "startArrowhead": null, - "endArrowhead": null, - "points": [ - [ - 0, - 0 - ], - [ - 15.731454943862888, - 0.19513615572747334 - ], - [ - 18.438358831347205, - 4.624138277908322 - ], - [ - 15.401474189720787, - 8.645168445782279 - ], - [ - 0.024885395291281753, - 8.945450381946396 - ], - [ - -0.19737095911783126, - 0.22076419337619754 - ] - ] - }, - { - "type": "line", - "version": 581, - "versionNonce": 693927462, - "isDeleted": false, - "id": "tVJ51sTAhaMQbnsD2z1G_", - "fillStyle": "cross-hatch", - "strokeWidth": 1, - "strokeStyle": "solid", - "roughness": 1, - "opacity": 100, - "angle": 0, - "x": 666.5167310696386, - "y": 371.5341297381931, - "strokeColor": "#000000", - "backgroundColor": "#fa5252", - "width": 31.742377208928268, - "height": 32.08983068742408, - "seed": 1901891533, - "groupIds": [ - "b1ibwSW8IcqyRbXlyG-Xj" - ], - "strokeSharpness": "sharp", - "boundElements": [], - "updated": 1662377013461, - "link": null, - "locked": false, - "startBinding": null, - "endBinding": null, - "lastCommittedPoint": null, - "startArrowhead": null, - "endArrowhead": null, - "points": [ - [ - 0, - 0 - ], - [ - 7.450862008705704, - 4.5261026104118764 - ], - [ - 3.3117379533671727, - 11.615366554240595 - ], - [ - -0.9358050098348354, - 19.767097287751245 - ], - [ - -5.808480930022496, - 26.23722442399886 - ], - [ - -12.050658120454212, - 30.196436491936836 - ], - [ - -18.01532774034885, - 31.68550318172356 - ], - [ - -24.291515200222555, - 32.08983068742408 - ], - [ - -24.279034682827145, - 23.204527460109873 - ], - [ - -18.279667161677786, - 22.96770706391407 - ], - [ - -13.350626061826572, - 21.184189555732566 - ], - [ - -9.64956472890564, - 16.950076041826833 - ], - [ - -0.104031816900326, - 0.32570368426907065 - ] - ] - }, - { - "type": "diamond", - "version": 1013, - "versionNonce": 122576698, - "isDeleted": false, - "id": "47h-nRr-nwGO_mQa23UeO", - "fillStyle": "solid", - "strokeWidth": 1, - "strokeStyle": "solid", - "roughness": 1, - "opacity": 100, - "angle": 0, - "x": 632.6763173734828, - "y": 769.1302824085412, - "strokeColor": "#c92a2a", - "backgroundColor": "#fa5252", - "width": 112.64736525303451, - "height": 36.77344700318558, - "seed": 1441517305, - "groupIds": [ - "m2RdbPic1YynJwWKbyYdm" - ], - "strokeSharpness": "sharp", - "boundElements": [], - "updated": 1662377013461, - "link": null, - "locked": false - }, - { - "type": "diamond", - "version": 1054, - "versionNonce": 582338918, - "isDeleted": false, - "id": "qSQncXc-KxT1XqGMW7qed", - "fillStyle": "solid", - "strokeWidth": 1, - "strokeStyle": "solid", - "roughness": 1, - "opacity": 100, - "angle": 0, - "x": 632.6763173734828, - "y": 760.2585024802827, - "strokeColor": "#c92a2a", - "backgroundColor": "#fa5252", - "width": 112.64736525303451, - "height": 36.77344700318558, - "seed": 716667159, - "groupIds": [ - "m2RdbPic1YynJwWKbyYdm" - ], - "strokeSharpness": "sharp", - "boundElements": [], - "updated": 1662377013461, - "link": null, - "locked": false - }, - { - "type": "diamond", - "version": 1134, - "versionNonce": 1668442106, - "isDeleted": false, - "id": "sGGXEhvtRhriU_uNapb9E", - "fillStyle": "solid", - "strokeWidth": 1, - "strokeStyle": "solid", - "roughness": 1, - "opacity": 100, - "angle": 0, - "x": 632.6763173734828, - "y": 747.6279428855705, - "strokeColor": "#c92a2a", - "backgroundColor": "#fa5252", - "width": 112.64736525303451, - "height": 36.77344700318558, - "seed": 426346457, - "groupIds": [ - "m2RdbPic1YynJwWKbyYdm" - ], - "strokeSharpness": "sharp", - "boundElements": [], - "updated": 1662377013461, - "link": null, - "locked": false - }, - { - "type": "diamond", - "version": 1176, - "versionNonce": 289647782, - "isDeleted": false, - "id": "wBe1SK4e7md93lfPcC54E", - "fillStyle": "solid", - "strokeWidth": 1, - "strokeStyle": "solid", - "roughness": 1, - "opacity": 100, - "angle": 0, - "x": 632.6763173734828, - "y": 735.0962705882732, - "strokeColor": "#c92a2a", - "backgroundColor": "#fa5252", - "width": 112.64736525303451, - "height": 36.77344700318558, - "seed": 834027063, - "groupIds": [ - "m2RdbPic1YynJwWKbyYdm" - ], - "strokeSharpness": "sharp", - "boundElements": [], - "updated": 1662377013461, - "link": null, - "locked": false - }, - { - "type": "arrow", - "version": 2649, - "versionNonce": 1528877158, - "isDeleted": false, - "id": "RN13O3v7s67B4r3OLdUG1", - "fillStyle": "cross-hatch", - "strokeWidth": 2, - "strokeStyle": "solid", - "roughness": 2, - "opacity": 90, - "angle": 1.1544546290966737, - "x": 693.5666094633606, - "y": 530.8021443946824, - "strokeColor": "#000000", - "backgroundColor": "transparent", - "width": 95.70133660559611, - "height": 144.3521611229338, - "seed": 1186513049, - "groupIds": [], - "strokeSharpness": "round", - "boundElements": [], - "updated": 1662377058521, - "link": null, - "locked": false, - "startBinding": { - "elementId": "XKTEM8qBa4qGOJP7CVrIX", - "focus": -0.05448887991604787, - "gap": 11.335548920662745 - }, - "endBinding": { - "elementId": "IXATX347s4UD9lGlcr90X", - "focus": -0.19812288467622294, - "gap": 6.56951103650465 - }, - "lastCommittedPoint": null, - "startArrowhead": null, - "endArrowhead": "arrow", - "points": [ - [ - 0, - 0 - ], - [ - 95.70133660559611, - 144.3521611229338 - ] - ] - }, - { - "type": "rectangle", - "version": 522, - "versionNonce": 313731046, - "isDeleted": false, - "id": "BSTGJy4-i2gkcab8vcVmx", - "fillStyle": "cross-hatch", - "strokeWidth": 2, - "strokeStyle": "solid", - "roughness": 2, - "opacity": 100, - "angle": 0, - "x": 616.5, - "y": 706, - "strokeColor": "#000000", - "backgroundColor": "transparent", - "width": 145, - "height": 123.99999999999999, - "seed": 966959383, - "groupIds": [], - "strokeSharpness": "sharp", - "boundElements": [ - { - "id": "yb6on_IoQ9DCic3wLZCL5", - "type": "arrow" - } - ], - "updated": 1662377013461, - "link": null, - "locked": false - }, - { - "type": "text", - "version": 515, - "versionNonce": 56635770, - "isDeleted": false, - "id": "IXATX347s4UD9lGlcr90X", - "fillStyle": "cross-hatch", - "strokeWidth": 2, - "strokeStyle": "solid", - "roughness": 2, - "opacity": 100, - "angle": 0, - "x": 664.5, - "y": 682.5, - "strokeColor": "#000000", - "backgroundColor": "transparent", - "width": 49, - "height": 25, - "seed": 2017626071, - "groupIds": [], - "strokeSharpness": "sharp", - "boundElements": [ - { - "id": "RN13O3v7s67B4r3OLdUG1", - "type": "arrow" - } - ], - "updated": 1662377013461, - "link": null, - "locked": false, - "fontSize": 20, - "fontFamily": 1, - "text": "Quay", - "baseline": 18, - "textAlign": "center", - "verticalAlign": "top", - "containerId": null, - "originalText": "Quay" - }, - { - "type": "text", - "version": 619, - "versionNonce": 1113299814, - "isDeleted": false, - "id": "5cuIIpz3LTeQ3sO41ieWq", - "fillStyle": "cross-hatch", - "strokeWidth": 2, - "strokeStyle": "solid", - "roughness": 2, - "opacity": 100, - "angle": 5.282239200745634, - "x": 676.41530864279, - "y": 572.9646648179378, - "strokeColor": "#000000", - "backgroundColor": "transparent", - "width": 107, - "height": 20, - "seed": 1296941911, - "groupIds": [], - "strokeSharpness": "sharp", - "boundElements": [ - { - "id": "6zKDixmk2nfg2iRiN4mHi", - "type": "arrow" - } - ], - "updated": 1662377062758, - "link": null, - "locked": false, - "fontSize": 16, - "fontFamily": 1, - "text": "push to Quay", - "baseline": 14, - "textAlign": "center", - "verticalAlign": "top", - "containerId": null, - "originalText": "push to Quay" - }, - { - "type": "line", - "version": 1908, - "versionNonce": 437252666, - "isDeleted": false, - "id": "GP1wLZ1WFSKU2V50lx_PB", - "fillStyle": "hachure", - "strokeWidth": 1, - "strokeStyle": "solid", - "roughness": 1, - "opacity": 100, - "angle": 0, - "x": 888.2359178299338, - "y": 776.0795466994963, - "strokeColor": "#fa5252", - "backgroundColor": "#fa5252", - "width": 45.45537939093032, - "height": 28.55045143932542, - "seed": 910612326, - "groupIds": [ - "aIlUmEWkA-SaliQpUsuSS" - ], - "strokeSharpness": "round", - "boundElements": [], - "updated": 1662377013461, - "link": null, - "locked": false, - "startBinding": null, - "endBinding": null, - "lastCommittedPoint": null, - "startArrowhead": null, - "endArrowhead": null, - "points": [ - [ - 0, - 0 - ], - [ - 0.09881604215418947, - 5.982999014858631 - ], - [ - 0.39526416861678143, - 12.070962924714806 - ], - [ - 5.533698360634995, - 16.899348094600715 - ], - [ - 15.415302576054616, - 19.313540679543642 - ], - [ - 29.743628688413075, - 19.313540679543664 - ], - [ - 39.52641686167853, - 17.109277884595738 - ], - [ - 44.81307511692804, - 12.9631645321937 - ], - [ - 45.45537939093032, - 5.982999014858641 - ], - [ - 44.71425907477384, - -0.9446840549776787 - ], - [ - 38.735888524444896, - -6.717753279841269 - ], - [ - 28.360204098254336, - -9.23691075978176 - ], - [ - 15.31648653390042, - -9.026980969786704 - ], - [ - 5.089026170941105, - -5.668104329866079 - ], - [ - 0, - 0 - ] - ] - }, - { - "type": "ellipse", - "version": 901, - "versionNonce": 1154147942, - "isDeleted": false, - "id": "tKodUHcxsuZtHeAhdzSw-", - "fillStyle": "solid", - "strokeWidth": 1, - "strokeStyle": "solid", - "roughness": 1, - "opacity": 100, - "angle": 0, - "x": 892.2440967427956, - "y": 767.9926814874417, - "strokeColor": "#fa5252", - "backgroundColor": "#fa5252", - "width": 37.0506282457687, - "height": 14.169503720053175, - "seed": 1472281082, - "groupIds": [ - "aIlUmEWkA-SaliQpUsuSS" - ], - "strokeSharpness": "sharp", - "boundElements": [], - "updated": 1662377013461, - "link": null, - "locked": false - }, - { - "type": "line", - "version": 2741, - "versionNonce": 1854511866, - "isDeleted": false, - "id": "JowGyceWZyekC0DpvNjIf", - "fillStyle": "hachure", - "strokeWidth": 1, - "strokeStyle": "solid", - "roughness": 1, - "opacity": 100, - "angle": 0, - "x": 888.4363535962191, - "y": 792.2718279844214, - "strokeColor": "#fa5252", - "backgroundColor": "#fa5252", - "width": 44.75215216926839, - "height": 18.44773266062176, - "seed": 1803745958, - "groupIds": [ - "aIlUmEWkA-SaliQpUsuSS" - ], - "strokeSharpness": "round", - "boundElements": [], - "updated": 1662377013461, - "link": null, - "locked": false, - "startBinding": null, - "endBinding": null, - "lastCommittedPoint": null, - "startArrowhead": null, - "endArrowhead": null, - "points": [ - [ - 0, - 0 - ], - [ - 0.09881604215418954, - 5.7359953692677355 - ], - [ - 0.8360931732406627, - 12.188788492529767 - ], - [ - 6.415356369882757, - 16.27013404810402 - ], - [ - 16.076546082990426, - 18.44773266062176 - ], - [ - 30.037514691495648, - 18.37926974325645 - ], - [ - 38.718230353201484, - 16.745248712978196 - ], - [ - 43.80546596350205, - 13.229984141597614 - ], - [ - 44.75215216926839, - 6.987888715376405 - ], - [ - 44.596758549161464, - 0.571547384474486 - ], - [ - 43.265820916723996, - 1.4122752942962638 - ], - [ - 38.05365316014614, - 3.8485825851177227 - ], - [ - 29.399301037724893, - 5.462958347950173 - ], - [ - 16.785916549313352, - 5.625099676297176 - ], - [ - 6.663415473169238, - 3.7594908843371635 - ], - [ - 0, - 0 - ] - ] - }, - { - "type": "line", - "version": 2820, - "versionNonce": 1286416806, - "isDeleted": false, - "id": "LQXzCv6fh_FAdDQyf1dnl", - "fillStyle": "hachure", - "strokeWidth": 1, - "strokeStyle": "solid", - "roughness": 1, - "opacity": 100, - "angle": 0, - "x": 888.4575305030959, - "y": 807.7379899328757, - "strokeColor": "#fa5252", - "backgroundColor": "#fa5252", - "width": 44.75215216926839, - "height": 17.929281850049776, - "seed": 1044114106, - "groupIds": [ - "aIlUmEWkA-SaliQpUsuSS" - ], - "strokeSharpness": "round", - "boundElements": [], - "updated": 1662377013461, - "link": null, - "locked": false, - "startBinding": null, - "endBinding": null, - "lastCommittedPoint": null, - "startArrowhead": null, - "endArrowhead": null, - "points": [ - [ - 0, - 0 - ], - [ - 0.09881604215418954, - 5.5747922825067295 - ], - [ - 0.8360931732406627, - 11.846237600769971 - ], - [ - 6.415356369882757, - 15.812881965122543 - ], - [ - 16.076546082990426, - 17.929281850049776 - ], - [ - 30.037514691495648, - 17.862742998674317 - ], - [ - 38.718230353201484, - 16.274644117379026 - ], - [ - 43.80546596350205, - 12.858171728210504 - ], - [ - 44.75215216926839, - 6.791502707658123 - ], - [ - 44.596758549161464, - 0.5554847490161138 - ], - [ - 43.265820916723996, - 1.3725850361735614 - ], - [ - 38.05365316014614, - 3.7404229105650506 - ], - [ - 29.399301037724893, - 5.3094286304656295 - ], - [ - 16.785916549313352, - 5.467013176434269 - ], - [ - 6.663415473169238, - 3.653835022330706 - ], - [ - 0, - 0 - ] - ] - }, - { - "type": "rectangle", - "version": 802, - "versionNonce": 2135960506, - "isDeleted": false, - "id": "0vx83HbQv2HvAfR2WHYzx", - "fillStyle": "cross-hatch", - "strokeWidth": 2, - "strokeStyle": "solid", - "roughness": 2, - "opacity": 100, - "angle": 0, - "x": 869.5, - "y": 755.6981132075472, - "strokeColor": "#000000", - "backgroundColor": "transparent", - "width": 82.99999999999996, - "height": 78.30188679245282, - "seed": 986179194, - "groupIds": [], - "strokeSharpness": "sharp", - "boundElements": [ - { - "id": "yb6on_IoQ9DCic3wLZCL5", - "type": "arrow" - } - ], - "updated": 1662377013461, - "link": null, - "locked": false - }, - { - "type": "text", - "version": 600, - "versionNonce": 2112160998, - "isDeleted": false, - "id": "g1zqTtCSN4y0R3bNwm5QR", - "fillStyle": "cross-hatch", - "strokeWidth": 2, - "strokeStyle": "solid", - "roughness": 2, - "opacity": 100, - "angle": 0, - "x": 889.5, - "y": 728.5, - "strokeColor": "#000000", - "backgroundColor": "transparent", - "width": 43, - "height": 25, - "seed": 1419797434, - "groupIds": [], - "strokeSharpness": "sharp", - "boundElements": [ - { - "id": "RN13O3v7s67B4r3OLdUG1", - "type": "arrow" - } - ], - "updated": 1662377013461, - "link": null, - "locked": false, - "fontSize": 20, - "fontFamily": 1, - "text": "ODF", - "baseline": 18, - "textAlign": "center", - "verticalAlign": "top", - "containerId": null, - "originalText": "ODF" - }, - { - "type": "arrow", - "version": 2465, - "versionNonce": 42378362, - "isDeleted": false, - "id": "yb6on_IoQ9DCic3wLZCL5", - "fillStyle": "cross-hatch", - "strokeWidth": 2, - "strokeStyle": "solid", - "roughness": 2, - "opacity": 90, - "angle": 1.1544546290966737, - "x": 849.4734835425033, - "y": 746.9428522927587, - "strokeColor": "#000000", - "backgroundColor": "transparent", - "width": 72.92212454127264, - "height": 77.71575432057409, - "seed": 875407398, - "groupIds": [], - "strokeSharpness": "round", - "boundElements": [], - "updated": 1662377013461, - "link": null, - "locked": false, - "startBinding": { - "elementId": "0vx83HbQv2HvAfR2WHYzx", - "focus": -0.43218103748420833, - "gap": 5.5628963344287286 - }, - "endBinding": { - "elementId": "BSTGJy4-i2gkcab8vcVmx", - "focus": -0.2937839155117981, - "gap": 1.2285090703976493 - }, - "lastCommittedPoint": null, - "startArrowhead": null, - "endArrowhead": "arrow", - "points": [ - [ - 0, - 0 - ], - [ - -72.92212454127264, - 77.71575432057409 - ] - ] - }, - { - "type": "text", - "version": 694, - "versionNonce": 1241479206, - "isDeleted": false, - "id": "zqlKiPeKDW-kR1ozvN8_S", - "fillStyle": "cross-hatch", - "strokeWidth": 2, - "strokeStyle": "solid", - "roughness": 2, - "opacity": 100, - "angle": 0.31362065221670044, - "x": 774.9285257833599, - "y": 755.4520583425907, - "strokeColor": "#000000", - "backgroundColor": "transparent", - "width": 87.26292617008791, - "height": 15.309285292997872, - "seed": 1237998458, - "groupIds": [], - "strokeSharpness": "sharp", - "boundElements": [ - { - "id": "6zKDixmk2nfg2iRiN4mHi", - "type": "arrow" - } - ], - "updated": 1662377013461, - "link": null, - "locked": false, - "fontSize": 12.247428234398305, - "fontFamily": 1, - "text": "ObjectStorage", - "baseline": 10.309285292997872, - "textAlign": "center", - "verticalAlign": "top", - "containerId": null, - "originalText": "ObjectStorage" - } - ], - "appState": { - "gridSize": null, - "viewBackgroundColor": "#ffffff" - }, - "files": {} -} \ No newline at end of file diff --git a/fonts/Inconsolata.eot b/fonts/Inconsolata.eot deleted file mode 100644 index 0a705d6..0000000 Binary files a/fonts/Inconsolata.eot and /dev/null differ diff --git a/fonts/Inconsolata.svg b/fonts/Inconsolata.svg deleted file mode 100644 index 36775f0..0000000 --- a/fonts/Inconsolata.svg +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/fonts/Inconsolata.ttf b/fonts/Inconsolata.ttf deleted file mode 100644 index 4b8a36d..0000000 Binary files a/fonts/Inconsolata.ttf and /dev/null differ diff --git a/fonts/Inconsolata.woff b/fonts/Inconsolata.woff deleted file mode 100644 index 6f39625..0000000 Binary files a/fonts/Inconsolata.woff and /dev/null differ diff --git a/fonts/Novecentosanswide-Normal-webfont.eot b/fonts/Novecentosanswide-Normal-webfont.eot deleted file mode 100644 index 9984682..0000000 Binary files a/fonts/Novecentosanswide-Normal-webfont.eot and /dev/null differ diff --git a/fonts/Novecentosanswide-Normal-webfont.svg b/fonts/Novecentosanswide-Normal-webfont.svg deleted file mode 100644 index 6fa1a66..0000000 --- a/fonts/Novecentosanswide-Normal-webfont.svg +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/fonts/Novecentosanswide-Normal-webfont.ttf b/fonts/Novecentosanswide-Normal-webfont.ttf deleted file mode 100644 index 8cfb62d..0000000 Binary files a/fonts/Novecentosanswide-Normal-webfont.ttf and /dev/null differ diff --git a/fonts/Novecentosanswide-Normal-webfont.woff b/fonts/Novecentosanswide-Normal-webfont.woff deleted file mode 100644 index d5c4290..0000000 Binary files a/fonts/Novecentosanswide-Normal-webfont.woff and /dev/null differ diff --git a/fonts/Novecentosanswide-Normal-webfont.woff2 b/fonts/Novecentosanswide-Normal-webfont.woff2 deleted file mode 100644 index eefb4a3..0000000 Binary files a/fonts/Novecentosanswide-Normal-webfont.woff2 and /dev/null differ diff --git a/fonts/Novecentosanswide-UltraLight-webfont.eot b/fonts/Novecentosanswide-UltraLight-webfont.eot deleted file mode 100644 index 2a26561..0000000 Binary files a/fonts/Novecentosanswide-UltraLight-webfont.eot and /dev/null differ diff --git a/fonts/Novecentosanswide-UltraLight-webfont.svg b/fonts/Novecentosanswide-UltraLight-webfont.svg deleted file mode 100644 index c4e903b..0000000 --- a/fonts/Novecentosanswide-UltraLight-webfont.svg +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/fonts/Novecentosanswide-UltraLight-webfont.ttf b/fonts/Novecentosanswide-UltraLight-webfont.ttf deleted file mode 100644 index 9ce9c7f..0000000 Binary files a/fonts/Novecentosanswide-UltraLight-webfont.ttf and /dev/null differ diff --git a/fonts/Novecentosanswide-UltraLight-webfont.woff b/fonts/Novecentosanswide-UltraLight-webfont.woff deleted file mode 100644 index 381650c..0000000 Binary files a/fonts/Novecentosanswide-UltraLight-webfont.woff and /dev/null differ diff --git a/fonts/Novecentosanswide-UltraLight-webfont.woff2 b/fonts/Novecentosanswide-UltraLight-webfont.woff2 deleted file mode 100644 index 7e65954..0000000 Binary files a/fonts/Novecentosanswide-UltraLight-webfont.woff2 and /dev/null differ diff --git a/fonts/Work_Sans_200.eot b/fonts/Work_Sans_200.eot deleted file mode 100644 index 4052e4f..0000000 Binary files a/fonts/Work_Sans_200.eot and /dev/null differ diff --git a/fonts/Work_Sans_200.svg b/fonts/Work_Sans_200.svg deleted file mode 100644 index 0ffbd3a..0000000 --- a/fonts/Work_Sans_200.svg +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/fonts/Work_Sans_200.ttf b/fonts/Work_Sans_200.ttf deleted file mode 100644 index 68019e1..0000000 Binary files a/fonts/Work_Sans_200.ttf and /dev/null differ diff --git a/fonts/Work_Sans_200.woff b/fonts/Work_Sans_200.woff deleted file mode 100644 index a1bd9e4..0000000 Binary files a/fonts/Work_Sans_200.woff and /dev/null differ diff --git a/fonts/Work_Sans_200.woff2 b/fonts/Work_Sans_200.woff2 deleted file mode 100644 index 20c68a7..0000000 Binary files a/fonts/Work_Sans_200.woff2 and /dev/null differ diff --git a/fonts/Work_Sans_300.eot b/fonts/Work_Sans_300.eot deleted file mode 100644 index ace7993..0000000 Binary files a/fonts/Work_Sans_300.eot and /dev/null differ diff --git a/fonts/Work_Sans_300.svg b/fonts/Work_Sans_300.svg deleted file mode 100644 index 7d29367..0000000 --- a/fonts/Work_Sans_300.svg +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/fonts/Work_Sans_300.ttf b/fonts/Work_Sans_300.ttf deleted file mode 100644 index 35387c2..0000000 Binary files a/fonts/Work_Sans_300.ttf and /dev/null differ diff --git a/fonts/Work_Sans_300.woff b/fonts/Work_Sans_300.woff deleted file mode 100644 index 8d789ea..0000000 Binary files a/fonts/Work_Sans_300.woff and /dev/null differ diff --git a/fonts/Work_Sans_300.woff2 b/fonts/Work_Sans_300.woff2 deleted file mode 100644 index f6e216d..0000000 Binary files a/fonts/Work_Sans_300.woff2 and /dev/null differ diff --git a/fonts/Work_Sans_500.eot b/fonts/Work_Sans_500.eot deleted file mode 100644 index 9df6929..0000000 Binary files a/fonts/Work_Sans_500.eot and /dev/null differ diff --git a/fonts/Work_Sans_500.svg b/fonts/Work_Sans_500.svg deleted file mode 100644 index 90a91c1..0000000 --- a/fonts/Work_Sans_500.svg +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/fonts/Work_Sans_500.ttf b/fonts/Work_Sans_500.ttf deleted file mode 100644 index 5b8cc53..0000000 Binary files a/fonts/Work_Sans_500.ttf and /dev/null differ diff --git a/fonts/Work_Sans_500.woff b/fonts/Work_Sans_500.woff deleted file mode 100644 index df05851..0000000 Binary files a/fonts/Work_Sans_500.woff and /dev/null differ diff --git a/fonts/Work_Sans_500.woff2 b/fonts/Work_Sans_500.woff2 deleted file mode 100644 index b06c54d..0000000 Binary files a/fonts/Work_Sans_500.woff2 and /dev/null differ diff --git a/images/acm-application1.png b/images/acm-application1.png deleted file mode 100644 index e1f5ad0..0000000 Binary files a/images/acm-application1.png and /dev/null differ diff --git a/images/acm-application2.png b/images/acm-application2.png deleted file mode 100644 index c9829de..0000000 Binary files a/images/acm-application2.png and /dev/null differ diff --git a/images/acm-application3.png b/images/acm-application3.png deleted file mode 100644 index 33a2a93..0000000 Binary files a/images/acm-application3.png and /dev/null differ diff --git a/images/acm-clusters.png b/images/acm-clusters.png deleted file mode 100644 index 40279eb..0000000 Binary files a/images/acm-clusters.png and /dev/null differ diff --git a/images/acm-dashboard.png b/images/acm-dashboard.png deleted file mode 100644 index 74aec2f..0000000 Binary files a/images/acm-dashboard.png and /dev/null differ diff --git a/images/acm-install1.png b/images/acm-install1.png deleted file mode 100644 index 7fc84fc..0000000 Binary files a/images/acm-install1.png and /dev/null differ diff --git a/images/acm_placement.png b/images/acm_placement.png deleted file mode 100644 index fd6160e..0000000 Binary files a/images/acm_placement.png and /dev/null differ diff --git a/images/acs-dashboard.png b/images/acs-dashboard.png deleted file mode 100644 index fe6879b..0000000 Binary files a/images/acs-dashboard.png and /dev/null differ diff --git a/images/acs-enforce-policy.png b/images/acs-enforce-policy.png deleted file mode 100644 index beaeeec..0000000 Binary files a/images/acs-enforce-policy.png and /dev/null differ diff --git a/images/acs-logo.png b/images/acs-logo.png deleted file mode 100644 index 561baec..0000000 Binary files a/images/acs-logo.png and /dev/null differ diff --git a/images/argo.png b/images/argo.png deleted file mode 100644 index e839ba9..0000000 Binary files a/images/argo.png and /dev/null differ diff --git a/images/argo2.png b/images/argo2.png deleted file mode 100644 index a4008c7..0000000 Binary files a/images/argo2.png and /dev/null differ diff --git a/images/clippy.svg b/images/clippy.svg deleted file mode 100644 index f455173..0000000 --- a/images/clippy.svg +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/images/crw.png b/images/crw.png deleted file mode 100644 index 22d6225..0000000 Binary files a/images/crw.png and /dev/null differ diff --git a/images/crw2.png b/images/crw2.png deleted file mode 100644 index a9b4e32..0000000 Binary files a/images/crw2.png and /dev/null differ diff --git a/images/custom-policy.png b/images/custom-policy.png deleted file mode 100644 index b576ed5..0000000 Binary files a/images/custom-policy.png and /dev/null differ diff --git a/images/delete-limit-range.png b/images/delete-limit-range.png deleted file mode 100644 index e9d9477..0000000 Binary files a/images/delete-limit-range.png and /dev/null differ diff --git a/images/devspaces_popup.png b/images/devspaces_popup.png deleted file mode 100644 index c5a46a9..0000000 Binary files a/images/devspaces_popup.png and /dev/null differ diff --git a/images/favicon.png b/images/favicon.png deleted file mode 100644 index df06e35..0000000 Binary files a/images/favicon.png and /dev/null differ diff --git a/images/gitea-lang1.png b/images/gitea-lang1.png deleted file mode 100644 index 4b558ef..0000000 Binary files a/images/gitea-lang1.png and /dev/null differ diff --git a/images/gitea-lang2.png b/images/gitea-lang2.png deleted file mode 100644 index bff4b2f..0000000 Binary files a/images/gitea-lang2.png and /dev/null differ diff --git a/images/gitea.png b/images/gitea.png deleted file mode 100644 index 49d4f76..0000000 Binary files a/images/gitea.png and /dev/null differ diff --git a/images/gitea_clone_icon.png b/images/gitea_clone_icon.png deleted file mode 100644 index 7d2d36c..0000000 Binary files a/images/gitea_clone_icon.png and /dev/null differ diff --git a/images/gopher-404.jpg b/images/gopher-404.jpg deleted file mode 100644 index 2a50543..0000000 Binary files a/images/gopher-404.jpg and /dev/null differ diff --git a/images/loop.png b/images/loop.png deleted file mode 100644 index b27ed54..0000000 Binary files a/images/loop.png and /dev/null differ diff --git a/images/odf-operator.png b/images/odf-operator.png deleted file mode 100644 index 2779fa2..0000000 Binary files a/images/odf-operator.png and /dev/null differ diff --git a/images/odf-systems.png b/images/odf-systems.png deleted file mode 100644 index 7c226c0..0000000 Binary files a/images/odf-systems.png and /dev/null differ diff --git a/images/pipeline-adv.png b/images/pipeline-adv.png deleted file mode 100644 index 03fd652..0000000 Binary files a/images/pipeline-adv.png and /dev/null differ diff --git a/images/pipeline-edit-roxctl-task.png b/images/pipeline-edit-roxctl-task.png deleted file mode 100644 index 1a70387..0000000 Binary files a/images/pipeline-edit-roxctl-task.png and /dev/null differ diff --git a/images/pipeline-patch.png b/images/pipeline-patch.png deleted file mode 100644 index 0bd3120..0000000 Binary files a/images/pipeline-patch.png and /dev/null differ diff --git a/images/pipeline-select-roxctl-task.png b/images/pipeline-select-roxctl-task.png deleted file mode 100644 index 8cd7c44..0000000 Binary files a/images/pipeline-select-roxctl-task.png and /dev/null differ diff --git a/images/pipeline-update-deployment.png b/images/pipeline-update-deployment.png deleted file mode 100644 index cd4179b..0000000 Binary files a/images/pipeline-update-deployment.png and /dev/null differ diff --git a/images/pipeline-with-roxctl.png b/images/pipeline-with-roxctl.png deleted file mode 100644 index ba94e63..0000000 Binary files a/images/pipeline-with-roxctl.png and /dev/null differ diff --git a/images/pipeline.png b/images/pipeline.png deleted file mode 100644 index 7be1a45..0000000 Binary files a/images/pipeline.png and /dev/null differ diff --git a/images/pipeline1.png b/images/pipeline1.png deleted file mode 100644 index b0d0709..0000000 Binary files a/images/pipeline1.png and /dev/null differ diff --git a/images/pipeline_initial.png b/images/pipeline_initial.png deleted file mode 100644 index 94890c9..0000000 Binary files a/images/pipeline_initial.png and /dev/null differ diff --git a/images/quay-access-token.png b/images/quay-access-token.png deleted file mode 100644 index a87852b..0000000 Binary files a/images/quay-access-token.png and /dev/null differ diff --git a/images/quay-available.png b/images/quay-available.png deleted file mode 100644 index 124dd49..0000000 Binary files a/images/quay-available.png and /dev/null differ diff --git a/images/quay-create-repo.png b/images/quay-create-repo.png deleted file mode 100644 index a10b487..0000000 Binary files a/images/quay-create-repo.png and /dev/null differ diff --git a/images/quay-create-repo2.png b/images/quay-create-repo2.png deleted file mode 100644 index 9d6c355..0000000 Binary files a/images/quay-create-repo2.png and /dev/null differ diff --git a/images/quay-superuser.png b/images/quay-superuser.png deleted file mode 100644 index 595e2ae..0000000 Binary files a/images/quay-superuser.png and /dev/null differ diff --git a/images/quay_empty_repo.png b/images/quay_empty_repo.png deleted file mode 100644 index 80643ac..0000000 Binary files a/images/quay_empty_repo.png and /dev/null differ diff --git a/images/quay_robot_account.png b/images/quay_robot_account.png deleted file mode 100644 index 2f8a108..0000000 Binary files a/images/quay_robot_account.png and /dev/null differ diff --git a/images/storage-system1.png b/images/storage-system1.png deleted file mode 100644 index 28f4188..0000000 Binary files a/images/storage-system1.png and /dev/null differ diff --git a/images/storage-system2.png b/images/storage-system2.png deleted file mode 100644 index e6f7a9f..0000000 Binary files a/images/storage-system2.png and /dev/null differ diff --git a/images/tekton.png b/images/tekton.png deleted file mode 100644 index 15d64e9..0000000 Binary files a/images/tekton.png and /dev/null differ diff --git a/images/trust.png b/images/trust.png deleted file mode 100644 index 9852670..0000000 Binary files a/images/trust.png and /dev/null differ diff --git a/images/vscode_clone.png b/images/vscode_clone.png deleted file mode 100644 index b0ca2e9..0000000 Binary files a/images/vscode_clone.png and /dev/null differ diff --git a/images/vscode_git_folder.png b/images/vscode_git_folder.png deleted file mode 100644 index 249f38a..0000000 Binary files a/images/vscode_git_folder.png and /dev/null differ diff --git a/images/vscode_open_folder.png b/images/vscode_open_folder.png deleted file mode 100644 index a4e061b..0000000 Binary files a/images/vscode_open_folder.png and /dev/null differ diff --git a/images/vscode_trust.png b/images/vscode_trust.png deleted file mode 100644 index af1ecd2..0000000 Binary files a/images/vscode_trust.png and /dev/null differ diff --git a/images/web-terminal.png b/images/web-terminal.png deleted file mode 100644 index 2cf792b..0000000 Binary files a/images/web-terminal.png and /dev/null differ diff --git a/images/web-terminal2.png b/images/web-terminal2.png deleted file mode 100644 index 139581a..0000000 Binary files a/images/web-terminal2.png and /dev/null differ diff --git a/images/workshop_architecture_full.png b/images/workshop_architecture_full.png deleted file mode 100644 index c4d5683..0000000 Binary files a/images/workshop_architecture_full.png and /dev/null differ diff --git a/images/workshop_architecture_gitops.png b/images/workshop_architecture_gitops.png deleted file mode 100644 index c012074..0000000 Binary files a/images/workshop_architecture_gitops.png and /dev/null differ diff --git a/images/workshop_architecture_inner_loop.png b/images/workshop_architecture_inner_loop.png deleted file mode 100644 index d0aaa89..0000000 Binary files a/images/workshop_architecture_inner_loop.png and /dev/null differ diff --git a/images/workshop_architecture_outer_loop.png b/images/workshop_architecture_outer_loop.png deleted file mode 100644 index 1810117..0000000 Binary files a/images/workshop_architecture_outer_loop.png and /dev/null differ diff --git a/images/workshop_architecture_prepare.png b/images/workshop_architecture_prepare.png deleted file mode 100644 index 94045e8..0000000 Binary files a/images/workshop_architecture_prepare.png and /dev/null differ diff --git a/images/workshop_architecture_stackrox.png b/images/workshop_architecture_stackrox.png deleted file mode 100644 index 2fec905..0000000 Binary files a/images/workshop_architecture_stackrox.png and /dev/null differ diff --git a/index.html b/index.html deleted file mode 100644 index 29db0d6..0000000 --- a/index.html +++ /dev/null @@ -1,753 +0,0 @@ - - - - - - - - - - - - :: DRAFT : DevSecOps Workshop - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
-
-
- -
- -
- -
- - - - - - navigation - - - -

DevSecOps Workshop

-

What is it about

-

This workshop will introduce you to the application development cycle leveraging OpenShift’s tooling & features with a special focus on securing your environment using Advanced Cluster Security for Kubernetes (ACS). -You will get a brief introduction in several OpenShift features like OpenShift Pipelines, OpenShift GitOps, OpenShift DevSpaces. -And all in a fun way.

-

Architecture overview

-
-
-

Click image to enlarge

-
-
- -

Credits & Contribution

-

This workshop was created by

- -

with contributions from

- -

Feel free to open an issue or create a pull request in GitHub

- - - -
- - -
- - - -
- -
-
-
- - - - - - - - - - - - - - - - - - - - - diff --git a/index.json b/index.json deleted file mode 100644 index ffaa90a..0000000 --- a/index.json +++ /dev/null @@ -1,113 +0,0 @@ -[ -{ - "uri": "https://devsecops-workshop.github.io/devsecops-workshop.github.io-dev/1-intro/", - "title": "The DevSecOps Workshop", - "tags": [], - "description": "", - "content": "Intro This is the storyline you are going to follow:\n Create an application using the browser based development environment Red Hat OpenShift Dev Spaces Setting up the Inner Development Loop for the individual developer Use the cli tool odo to create, push, change apps on the fly Setting up the Outer Development Loop for the CI/CD team Learn to work with OpenShift Pipelines based on Tekton Use OpenShift GitOps based on ArgoCD Secure your app and OpenShift cluster with ACS Introduction to ACS Example use cases Add ACS scanning to a Tekton Pipeline What to Expect This workshop is for intermediate OpenShift users. A good understanding of how OpenShift works along with hands-on experience is expected. For example we will not tell you how to log in with oc to your cluster or tell you what it is\u0026hellip; ;)\n We try to balance guided workshop steps and challenge you to use your knowledge to learn new skills. This means you\u0026rsquo;ll get detailed step-by-step instructions for every new chapter/task, later on the guide will become less verbose and we\u0026rsquo;ll weave in some challenges.\nWorkshop Environment As Part of a Red Hat Workshop For Attendees As part of the workshop you will be provided with freshly installed OpenShift 4.14 clusters. Depending on attendee numbers we might ask you to gather in teams. Some workshop tasks must be done only once for the cluster (e.g. installing Operators), others like deploying and securing the application can be done by every team member separately in their own Project. This will be mentioned in the guide.\nYou\u0026rsquo;ll get all access details for your lab cluster from the facilitators. This includes the URL to the OpenShift console and information about how to SSH into your bastion host to run oc if asked to.\nFor Facilitators The easiest way to provide this environment is through the Red Hat Demo System. Provision catalog item AWS with OpenShift Open Environment for the the attendees. Make sure to provision 3 controlplane nodes (similar to m6a.2xlarge) and 3 worker nodes (similar to m6a.4xlarge).\nSelf Hosted While the workshop is designed to be run on Red Hat Demo System (RHDS) and the environment AWS with OpenShift Open Environment, you should be able to run the workshop on a 4.14 cluster of your own.\nJust make sure :\n You have cluster admin privileges Sizing 3 Controlplane Nodes (Similar to AWS m5.2x.large) 3 Worker (Similar to AWS m5.4x.large) Authentication htpasswd enabled For the ACM chapter you will need AWS credentials to automatically deploy a SingleNode OpenShift Some names in the workshop may need to be customized for your environment (e.g. storage naming) This workshop was tested with these versions :\n Red Hat OpenShift : 4.14.18 Red Hat Advanced Cluster Security for Kubernetes: 4.4.0 Red Hat OpenShift Dev Spaces : 3.12.0 Red Hat OpenShift Pipelines: 1.14.3 Red Hat OpenShift GitOps: 1.12.0 Red Hat Quay: 3.8.15 Red Hat Quay Bridge Operator: 3.7.11 Red Hat Data Foundation : 4.14.06 Gitea Operator: 1.3.0 Web Terminal: 1.9.0 Workshop Flow We\u0026rsquo;ll tackle the topics at hand step by step with an introduction covering the things worked on before each section.\nAnd finally a sprinkle of JavaScript magic You\u0026rsquo;ll notice placeholders for cluster access details, mainly the part of the domain that is specific to your cluster. There are two options:\n Whenever you see the placeholder \u0026lt;DOMAIN\u0026gt; replace it with the value for your environment This is the part to the right of apps. e.g. for console-openshift-console.apps.cluster-t50z9.t50z9.sandbox4711.opentlc.com replace with cluster-t50z9.t50z9.sandbox4711.opentlc.com Use a query parameter in the URL of this lab guide to have all occurences replaced automagically, e.g.: http://devsecops-workshop.github.io/?domain=cluster-t50z9.t50z9.sandbox4711.opentlc.com You can use the Link Generator in the next chapter to create the URL for you URL Generator for Custom Lab Guide Enter your OpenShift url after the apps part (e.g. cluster-t50z9.t50z9.sandbox4711.opentlc.com ) and click the button to generate a link that will customize your lab guide.\nClick the generated link once to apply it the the current guide.\n function replaceURLParameter(url, parameter) { //prefer to use l.search if you have a location/link object console.log(\"ReplaceURLParameter in - \" + url + \" \" + parameter); var urlparts = url.split('?'); if (urlparts.length = 2) { var prefix = encodeURIComponent(\"domain\") + '='; var pars = urlparts[1].split(/[\u0026;]/g); //reverse iteration as may be destructive for (var i = pars.length; i-- 0;) { //idiom for string.startsWith if (pars[i].lastIndexOf(prefix, 0) !== -1) { pars.splice(i, 1); } } pars.push(\"domain=\" + parameter) return urlparts[0] + (pars.length 0 ? '?' + pars.join('\u0026') : ''); } else { url = url + \"?domain=\" + parameter; } console.log(\"Returning - \" + url) return url; } function get_domain() { var domainVal = document.getElementById(\"domain\").value; var url = replaceURLParameter(window.location.href, domainVal) var a = document.createElement('a'); var linkText = document.createTextNode(url); a.appendChild(linkText); a.title = \"Custom Lab Guide\"; a.href = url; a.id = \"dynamicUrl\" var parentElem = document.getElementById(\"dynamicLink\"); var elem = parentElem.childNodes.item(\"dynamicUrl\"); if (elem != null) { console.log(\"Replacing in - \" + parentElem + \" \" + elem); parentElem.replaceChild(a, elem); } else { parentElem.appendChild(a); } } Generate URL Current Domain replacement Check to see if replacement is active -\u0026gt; \u0026lt;DOMAIN\u0026gt;\n" -}, -{ - "uri": "https://devsecops-workshop.github.io/devsecops-workshop.github.io-dev/2-install-prerequisites/", - "title": "Install Prerequisites", - "tags": [], - "description": "", - "content": "Install Prerequisites During this workshop you\u0026rsquo;ll install and use a good number of software components. The first one is OpenShift Data Foundation for providing storage. We\u0026rsquo;ll start with it because the install takes a fair amount of time. Number two is Gitea for providing Git services in your cluster with more to follow in subsequent chapters.\nBut fear not, all are managed by Kubernetes Operators on OpenShift.\nInstall OpenShift Data Foundation Let\u0026rsquo;s install OpenShift Data Foundation which you might know under the old name OpenShift Container Storage. It is engineered as the data and storage services platform for OpenShift and provides software-defined storage for containers.\n Login to the OpenShift Webconsole with your cluster admin credentials In the Web Console, go to Operators \u0026gt; OperatorHub and search for the OpenShift Data Foundation operator Click image to enlarge Install the operator with default settings After the operator has been installed it will inform you to install a StorageSystem and to refresh the web console view. From the operator overview page click Create StorageSystem with the following settings:\n Backing storage: Leave Deployment Type Full deployment and for Backing storage type make sure gp2-csi is selected. Click Next Capacity and nodes: Leave the Requested capacity as is (2 TiB) and select all nodes. Click Next Security and network: Leave set to Default (OVN). Click Next Data protection: Leave default (unselected). Click Next You\u0026rsquo;ll see a review of your settings, hit Create StorageSystem. Don\u0026rsquo;t worry if you see a temporary 404 Page. Just releod the browser page once and you will see the System Overview\n Click image to enlarge As mentioned already this takes some time, so go ahead and install the other prerequisites. We\u0026rsquo;ll come back later.\nPrepare to run oc commands You will be asked to run oc (the OpenShift commandline tool) commands a couple of times. We will do this by using the OpenShift Web Terminal. This is the easiest way because you don\u0026rsquo;t have to install oc or an SSH client.\nInstall OpenShift Web Terminal To extend OpenShift with the Web Terminal option, install the Web Terminal operator:\n Login to the OpenShift Webconsole with your cluster admin credentials In the Web Console, go to Operators \u0026gt; OperatorHub and search for the Web Terminal operator Install the operator with the default settings This will take some time and installs another operator as a dependency.\nAfter the operator has installed, reload the OCP Web Console browser window. You will now have a new button (\u0026gt;_) in the upper right. Click it to start a new web terminal. From here you can run the oc commands when the lab guide requests it (copy/paste might depend on your laptop OS and browser settings, e.g. try Ctrl-Shift-V for pasting).\n Click image to enlarge The terminal is not persistent, so if it was closed for any reason anything you did in the terminal is gone after re-opening.\n If for any reason you can\u0026rsquo;t use the webterminal, your options are:\n Install and run oc on your laptop SSH into the bastion host, if running on a Red Hat RHDP lab environment. From here you can just run oc without login. TODO: Change yaml applies to direct git download\nInstall and Prepare Gitea We\u0026rsquo;ll need Git repository services to keep our app and infrastructure source code, so let\u0026rsquo;s just install trusted Gitea using an operator:\nGitea is an OpenSource Git Server similar to GitHub. A team at Red Hat was so nice to create an Operator for it. This is a good example of how you can integrate an operator into your catalog that is not part of the default OperatorHub already.\n To integrate the Gitea operator into your Operator catalog you need to access your cluster with the oc client. You can do this in two ways:\n If you don\u0026rsquo;t already have the oc client installed, you can download the matching version for your operating system here Login to the OpenShift Web Console with you cluster admin credentials On the top right click on your username and then Copy login command to copy your login token On you local machine open a terminal and login with the oc command you copied above, you may need to add \u0026ndash;insecure-skip-tls-verify at the end of the line Or, if working on a Red Hat RHPDS environment:\n Use the information provided to login to your bastion host via SSH When logged in as lab-user you will be able to run oc commands without additional login. Now using oc add the Gitea Operator to your OpenShift OperatorHub catalog:\noc apply -f https://raw.githubusercontent.com/rhpds/gitea-operator/ded5474ee40515c07211a192f35fb32974a2adf9/catalog_source.yaml In the Web Console, go to Operators \u0026gt; OperatorHub and search for Gitea (You may need to disable search filters) Install the Gitea Operator with default settings Go to Installed Operators \u0026gt; Gitea Operator Create a new OpenShift project called git with the Project selection menu at the top TODO : Screenshot Make sure you are in the git project via the top Project selection menu ! Click on Create new instance ( while in project git) Click image to enlarge TODO : Replace Screenshot\n On the Create Gitea page switch to the YAML view and add the following spec values : spec: giteaAdminUser: gitea giteaAdminPassword: \u0026quot;gitea\u0026quot; giteaAdminEmail: opentlc-mgr@redhat.com Click Create After creation has finished:\n Access the route URL (you\u0026rsquo;ll find it e.g. in Networking \u0026gt; Routes \u0026gt; repository \u0026gt; Location). If the Route is not yet there just wait a couple of minutes. This will take you to the Gitea web UI Sign-In to Gitea with user gitea and password gitea If your Gitea UI appears in a language other then English (depending on your locale settings), switch it to English. Change the language in your Gitea UI, the example below shows a German example: Click image to enlarge Click image to enlarge Import the Required Repositories Now we will clone a git repository of a sample application into our Gitea, so we have some code to works with\n Clone the example repo: Click the + dropdown and choose New Migration As type choose Git URL: https://github.com/devsecops-workshop/quarkus-build-options.git Click Migrate Repository In the cloned repository you\u0026rsquo;ll find a devspaces_devfile.yml. We will need the URL to the file soon, so keep the tab open.\nIn later chapters we will need a second repository to hold your GitOps yaml resources. Let\u0026rsquo;s create this now as well\n In Gitea create a New Migration and clone the Config GitOps Repo which will be the repository that contains our GitOps infrastructure components and state The URL is https://github.com/devsecops-workshop/openshift-gitops-getting-started.git Check OpenShift Data Foundation (ODF) Storage Deployment Now it\u0026rsquo;s time to check if the StorageSystem deployment from ODF completed succesfully. In the openShift web console:\n Open Storage-\u0026gt;DataFoundation On the overview page go to the Storage Systems tab Click ocs-storagecluster-storagesystem On the next page make sure the status indicators on the Block and File and Object tabs are green! Click image to enlarge Click image to enlarge Your container storage is ready to go, explore the information on the overview pages if you\u0026rsquo;d like.\nInstall Red Hat Quay Container Registry The image that we have just deployed was pushed to the internal OpenShift Registry which is a great starting point for your cloud native journey. But if you require more control over you image repos, a graphical GUI, scalability, internal security scanning and the like you may want to upgrade to Red Hat Quay. So as a next step we want to replace the internal registry with Quay.\nQuay installation is done through an operator, too:\n In Operators-\u0026gt;OperatorHub filter for Quay Install the Red Hat Quay Operator with the default settings Create a new project called quay at the top Project selection menu While in the project quay go to Administration-\u0026gt;LimitRanges and delete the quay-core-resource-limits Click image to enlarge In the operator overview of the Quay Operator on the Quay Registry tile click Create instance If the YAML view is shown switch to Form view Make sure you are in the quay project Change the name to quay Click Create Click the new Quayregistry, scroll down to Conditions and wait until the Available type changes to True Click image to enlarge Now that the Registry is installed you have to configure a superuser:\n Make sure you are in the quay Project Go to Networking-\u0026gt;Routes, access the Quay portal using the URL of the first route (quay-quay) Click Create Account As username put in quayadmin, a (fake) email address and and quayadmin as password. Click Create Account again In the OpenShift Web Console open Workloads-\u0026gt;Secrets Search for quay-config-editor-credentials-..., open the secret and copy the values, you\u0026rsquo;ll need them in a second. Go back to the Routes and open the quay-quay-config-editor route Login with the values of the secret from above Click Sign in Scroll down to Access Settings As Super User put in quayadmin click Validate Configuration Changes and after the validation click Reconfigure Quay Reconfiguring Quay takes some time. The easiest way to determine if it\u0026rsquo;s been finished is to open the Quay portal (using the quay-quay Route). At the upper right you\u0026rsquo;ll see the username (quayadmin), if you click the username the drop-down should show a link Super User Admin Panel. When it shows up you can proceed.\n Click image to enlarge Integrate Quay as Registry into OpenShift To synchronize the internal default OpenShift Registry with the Quay Registry, Quay Bridge is used.\n In the OperatorHub of your cluster, search for the Quay Bridge Operator Install it with default settings Now we finally create an Quay Bridge instance. :\n Go to the Red Hat Quay Bridge Operator overview (make sure you are in the quay namespace) On the Quay Integration tile click Create Instance Open Credentials secret Namespace containing the secret: quay Key within the secret: token Copy the Quay Portal hostname (including https://) and paste it into the Quay Hostname field Set Insecure registry to true Click Create Architecture recap Click image to enlarge " -}, -{ - "uri": "https://devsecops-workshop.github.io/devsecops-workshop.github.io-dev/2.1-prepare-cluster/", - "title": "Prepare Cluster", - "tags": [], - "description": "", - "content": "Prepare Cluster Integrate Quay as Registry into OpenShift To synchronize the internal default OpenShift Registry with the Quay Registry, the Quay Bridge is used. Now we need to create a new Organization in Quay:\n To access the Quay Portal make sure you are in the quay Project Go to Networking-\u0026gt;Routes, access the Quay portal using the URL of the first route (quay-quay) Login with User: quayadmin Password: quayadmin In the top + menu click Create New Organization Name it openshift_integration Click Create Organization We need an OAuth Application in Quay for the integration:\n Again In the Quay Portal, click the Applications icon in the menubar to the left Click Create New Application at the upper right Name it openshift, press Enter and click on the new openshift item by clicking it In the menubar to the left click the Generate Token icon Check all boxes and click Generate Access token Click image to enlarge In the next view click Authorize Application and confirm In the next view copy the Access Token and save it somewhere, we\u0026rsquo;ll need it again Now create a new secret for the Quay Bridge to access Quay. In the OpenShift web console make sure you are in the quay Project. Then:\n Go to Workloads-\u0026gt;Secrets and click Create-\u0026gt;Key/value secret Secret name: quay-credentials Key: token Value: paste the Access Token you generated in the Quay Portal in the text field below the grey Value field Click Create And you are done with the installation and integration of Quay as your registry!\nTest if the integration works:\n In the Quay Portal you should see your OpenShift Projects are synced and represented as Quay Organizations, prefixed with openshift_ (you might have to reload the browser). E.g. there should be a openshift_git Quay Organization. In the OpenShift web console create a new test Project, make sure it\u0026rsquo;s synced to Quay as an Organization and delete it again. Architecture recap Click image to enlarge " -}, -{ - "uri": "https://devsecops-workshop.github.io/devsecops-workshop.github.io-dev/3-inner-loop/", - "title": "Inner Loop", - "tags": [], - "description": "", - "content": "In this part of the workshop you\u0026rsquo;ll experience how modern software development using the OpenShift tooling can be done in a fast, iterative way. Inner loop here means this is the way, sorry, process, for developers to try out new things and quickly change and test their code on OpenShift without having to build new images all the time or being a Kubernetes expert. Install and Prepare Red Hat OpenShift Dev Spaces OpenShift Dev Spaces is a browser-based IDE for Cloud Native Development. All the heavy lifting is done through a container running your workspace on OpenShift. All you really need is a laptop. You can easily switch and setup a customized environment, plugin, build tools and runtimes. So switching from one project context to another is as easy a switching a website. No more endless installation and configuration marathons on your dev laptop. It is already part of your OpenShift subscription. If you want to find out more have a look here\n Install the Red Hat OpenShift Dev Spaces Operator from OperatorHub with default settings Go to Installed Operators -\u0026gt; Red Hat OpenShift Dev Spaces and create a new instance (Red Hat OpenShift Dev Spaces instance Specification) using the default settings in the project openshift-operators Wait until deployment has finished. This may take a couple of minutes as several components will be deployed. Once the instance status is ready (You can check the YAML of the instance: status \u0026gt; chePhase: Active), look up the devspaces Route in the openshift-workspaces project (If you can see the openshift-workspaces, you may need to toggle the Show default project button). Open the link in a new browser tab, click on Log in with OpenShift and log in with your OpenShift credentials Allow selected permissions We could create a workspace from one of the templates that come with Dev Spaces, but we want to use a customized workspace with some additionally defined plugins in a v2 devfile in our git repo. With devfiles you can share a complete workspace setup and with the click of a link and you will end up in a fully configured project in your browser.\n You will now need to access the Gitea repository where your Quarkus app resides and specifically get the path to the devfile.\n Find the Gitea URL by selecting the git project in openshift and then Networking \u0026gt; Routes Click on the URL and login to Gitea with username : gitea password : gitea On the right side click on the repository gitea/quarkus-build-options Then click on the devfile devspaces_devfile.yml Now click on button Raw (or Originalformat in German) and copy this URL It is important that you have the URL to the Raw version, otherwise DevSpace will recieve a website that it cannot parse.\nNow back in your DevSpaces Workspace :\n In the left menu click on Create Workspace Paste the full URL of the devfile that you just copied into the Git Repo URL field and click Create \u0026amp; Open Click image to enlarge You\u0026rsquo;ll get into the Creating a workspace \u0026hellip; view, give the workspace containers some time to spin up. If a popup appears asking you to \u0026ldquo;trust the authors of the files\u0026rdquo; click Yes, I trust the authors Click image to enlarge When your workspace has finally started, have a good look around in the UI. It should look familiar if you have ever worked with VSCode or similar IDEs.\nWhile working with Dev Spaces make sure you have AdBlockers disabled, you are not on a VPN and a have good internet connection to ensure a stable setup. If you are facing any issues try to reload the Browser window. If that doesn\u0026rsquo;t help restart the workspace in the main DevSpaces Web Console under Workspaces and then menu Restart Workspace\n Clone the Quarkus Application Code As an example you\u0026rsquo;ll create a new Java application. You don\u0026rsquo;t need to have prior experience programming in Java as this will be kept really simple.\nWe will use a Java application based on the Quarkus stack. Quarkus enables you to create much smaller and faster containerized Java applications than ever before. You can even transcompile these apps to native Linux binaries that start blazingly fast. The app that we will use is just a basic example created with the Quarkus Generator with a simple RESTful API that answers to http requests. But at the end of the day this setup will work with any Java application.\nFun fact: Every OpenShift Subscription already provides a Quarkus Subscription.\n Let\u0026rsquo;s clone our project into our workspace :\n Bring up your OpenShift DevSpaces in your browser Click on the the \u0026ldquo;Hamburger\u0026rdquo; menu in the top left, then View \u0026gt; Command Palette In the Command Palette prompt that appears on the top, start typing git clone until you can select the Git: Clone item Click image to enlarge Enter the Git URL to your Gitea Repository (You can copy the URL by clicking on the clipboard icon in Gitea) and press enter Click image to enlarge In the following dialog Choose a folder to clone \u0026hellip;, move up the dirs and select the /projects dir, then click the button OK In the following dialog when asked how to open the code, click on Open Click image to enlarge The windows will briefly reload and then you will be in the cloned project folder You may have to check \u0026ldquo;Trust the authors \u0026hellip;\u0026rdquo; and click Yes, I trust the authors again. Last time, promise :) Click image to enlarge Access OpenShift and Create the Development Stage Project Now we want to create a new OpenShift project for our app:\n Open a terminal in your DevSpaces IDE In the top left \u0026lsquo;hamburger\u0026rsquo; menu click on Terminal \u0026gt; New Terminal) The oc OpenShift cli client is already installed and you are already logged into the cluster So go ahead and create a new project workshop-dev oc new-project workshop-dev Use odo to Deploy and Update our Application odo or \u0026lsquo;OpenShift do\u0026rsquo; is a cli that enables developers to quickly get started with cloud native app development without being a Kubernetes expert. It offers support for multiple runtimes and you can easily setup microservice components, push code changes into running containers and debug remotely with just a few simple commands. To find out more, have look here\nFirst we need to make sure we are in the folder of the cloned project.\nEnter the following command in the terminal:\npwd if you are not in the /projects/quarkus-build-options folder, change into with the cd command\nodo is smart enough to figure out what programming language and frameworks you are using. So let\u0026rsquo;s let initialize our project\nodo init You can then opt-into telemetry (Y/n) A matching Quarkus DevFile is found in the odo repository. Choose Y to download You can select a container in which odo will be started. Hit Enter (None) As component name keep the suggestion. Hit Enter odo is now intialized for your app. Let\u0026rsquo;s deploy the app to openshift in odo dev mode\nodo dev This will compile the app, start a pod in the OpenShift project and inject the app.\nThere will be a couple of popups in the bottom right corner (Click on all of them as explained below)\n \u0026ldquo;A new process is listening \u0026hellip;\u0026rdquo; -\u0026gt; Choose Yes \u0026ldquo;Redirect is not enabled \u0026hellip;\u0026rdquo; \u0026ndash;\u0026gt; Click on Open in New Tab \u0026ldquo;Do you want VS Code - Open Source to open an external website\u0026rdquo; \u0026ndash;\u0026gt; Choose Open New tabs will open. One with the DevFile Editor and one showing the Quarkus webpage of your app. You may have to wait a reload in a few seconds.\nTo test the app in the Quarkus App tab:\nYour app should be displayed as a simple web page. In the RESTEasy JAX-RS section click the @Path endpoint /hello to see the result.\nNow for the fun part:\nUsing odo you can dynamically change your code and push it again without the need to build a new container image! No dev magic involved:\n In your DevWorkspace on the left, expand the file tree to open file src/main/java/org/acme/GreetingRessource.java and change the string \u0026ldquo;Hello RESTEasy\u0026rdquo; to \u0026ldquo;Hello Workshop\u0026rdquo; (DevSpaces auto saves every edit directly. No need to save the file manually.)\n And reload the app webpage.\n Bam! The change should be there in a matter of seconds\n Architecture recap Click image to enlarge " -}, -{ - "uri": "https://devsecops-workshop.github.io/devsecops-workshop.github.io-dev/4-outer-loop/", - "title": "Outer Loop", - "tags": [], - "description": "", - "content": "Now that you have seen how a developer can quickly start to code using modern cloud native tooling, it\u0026rsquo;s time to learn how to push the application towards a production environment. The first step is to implement a CI/CD pipeline to automate new builds. Let\u0026rsquo;s call this stage int for integration.\nInstall OpenShift Pipelines To create and run the build pipeline you\u0026rsquo;ll use OpenShift Pipelines based on project Tekton. The first step is to install it:\n Install the Red Hat OpenShift Pipelines Operator In the OpenShift Web Console select Operators \u0026gt; OperatorHub Find the Red Hat OpenShift Pipelines Operator and install it with the default settings Since the Piplines assets are installed asynchronously it is possible that the Pipeline Templates are not yet setup when proceeding immedately to the next step. So now is good time to grab a coffee.\n Create App Deployment and Build Pipeline After installing the Operator, create a new deployment of your game-changing application:\n Create a new OpenShift project called workshop-int (e.g. using the Projects menu item at the top) In the left menu at the top switch to the OpenShift Developer Console by clicking on Administrator \u0026gt; Developer Close the welcome pop up Make sure you are still in the workshop-int project by verifying in the top Project menu Click the +Add menu entry to the left and choose the Import from Git card As Git Repo URL enter the clone URL for the quarkus-build-options repo in your Gitea instance Click image to enlarge There might be a warning about the repo url that you can ignore Leave Git type set to other Click Show advanced Git options and for Git reference enter master As Import Strategy select Builder Image As Builder Image select Java and openjdk-11-el7 / Red Hat OpenJDK 11 (RHEL 7) We are choosing this image as we have prepared some CVEs in a later chapter based on this image As Application Name enter workshop-app As Name enter workshop Check Add pipeline If you don\u0026rsquo;t have the checkbox Add pipeline and get the message There are no pipeline templates available for Java and Deployment combination in the next step then just give it few more minutes and reload the page.\n Click Create In the main menu left, click on Pipelines and then the instance in column Last run and observe how the Pipeline is executed Click image to enlarge Adjust the Pipeline to Deploy to Quay The current Pipeline deploys to the Internal Registry by default. The image that was just created by the first run was pushed there.\nTo leverage our brand new Quay registry we need to modify the Pipeline in order to push the images to the Quay registry. In addition the OpenShift ImageStream must be modified to point to the Quay registry, too.\nCreate a new s2i-java ClusterTask The first thing is to create a new Source-To-Image Pipeline Task to automatically update the ImageStream to point to Quay. You could of course copy and modify the default s2i-java task using the built-in YAML editor of the OpenShift Web Console. But to make this as painless as possible we have prepared the needed YAML object definition for you already.\n Open a Web Terminal by clicking the \u0026gt;_ in the upper right of the web console, Click Start and wait for the terminal to initialize From here you can run oc commands The YAML object definitions for this lab are in the repo https://github.com/devsecops-workshop/yaml.git, go there and review the YAML definition. Apply the YAML for the new ClusterTask: oc create -f https://raw.githubusercontent.com/devsecops-workshop/yaml/main/s2i-java-workshop.yml Click image to enlarge To make this lab pretty much self-contained, we run oc commands from the OCP Web Terminal. But of course you can do the above steps from any Linux system where you set up the oc command.\n You should now have a new ClusterTask named s2i-java-workshop, go to the OpenShift Web Console and check:\n Switch to the Administrator view Switch to the workshop-int Project Go to Pipelines-\u0026gt;Tasks-\u0026gt;ClusterTasks Search for the s2i-java-workshop ClusterTask and open it Switch to the YAML view Please take the time to review the additions to the default s2i-java task:\nIn the params section there are two new parameters, that will tell the pipeline which ImageStream and tag to update.\n- default: \u0026#39;\u0026#39; description: The name of the ImageStream which should be updated name: IMAGESTREAM type: string - default: \u0026#39;\u0026#39; description: The Tag of the ImageStream which should be updated name: IMAGESTREAMTAG type: string At the end of the steps section is a new step that takes care of actaully creating the ImageStream tag that points to the image in Quay\n- env: - name: HOME value: /tekton/home image: \u0026#39;image-registry.openshift-image-registry.svc:5000/openshift/cli:latest\u0026#39; name: update-image-stream resources: {} script: \u0026gt; #!/usr/bin/env bash oc tag --source=docker $(params.IMAGE) $(params.IMAGESTREAM):$(params.IMAGESTREAMTAG) --insecure securityContext: runAsNonRoot: true runAsUser: 65532 Modify the Pipeline Now that we have our new build tasks we need to modify the pipeline to:\n Introduce the new parameters into the Pipeline configuration Use the new s2i-java-workshop task To make this easier we again provide you with a full YAML definition for the Pipeline.\nDo the following:\n Go to your Web Terminal (if it timed out just start it again) If you use this lab guide with your domain as query parameter (see here), you are good to go with the command below because your domain was already inserted into the command. If not, you have to replace \u0026lt;DOMAIN\u0026gt; manually.\n First get the YAML file: curl https://raw.githubusercontent.com/devsecops-workshop/yaml/main/workshop-pipeline-without-git-update.yml -o workshop-pipeline-without-git-update.yml Now we have to replace the REPLACEME placeholders in the YAML file with your lab domain. Run (Insert your domain if not done automatically): sed -i \u0026#39;s/REPLACEME/\u0026lt;DOMAIN\u0026gt;/g\u0026#39; workshop-pipeline-without-git-update.yml Apply the new definition: oc replace -f workshop-pipeline-without-git-update.yml Again take the time to review the changes in the web console:\n In the OpenShift Web Console menu go to Pipelines-\u0026gt;Pipelines Click the workshop Pipeline and switch to YAML These are the new parameters that have been added to the pipeline: - default: workshop name: IMAGESTREAM type: string - default: latest name: IMAGESTREAMTAG type: string The preexisting parameter IMAGE_NAME now points to your local Quay registry:\n- default: \u0026gt;- quay-quay-quay.apps.\u0026lt;DOMAIN\u0026gt;/openshift_workshop-int/workshop name: IMAGE_NAME type: string And finally the build task was modified to work with the two new parameters:\ntasks: - name: build params: [...] - name: IMAGESTREAM value: $(params.IMAGESTREAM) - name: IMAGESTREAMTAG value: $(params.IMAGESTREAMTAG) The name of the taskRef was changed to s2i-java-workshop, in order to use our custom Pipeline Task: taskRef: kind: ClusterTask name: s2i-java-workshop You are done with adapting the Pipeline to use the Quay registry!\nWe are ready to give it a try, but first let\u0026rsquo;s have quick look at our target Quay repository\n Go to the Quay portal and there to the openshift_workshop-int organization. In the openshift_workshop-int / workshop repository access the Tags in the menu to the left. There should be no container image (yet) Click image to enlarge Now it\u0026rsquo;s time to configure and start the Pipeline.\n In OpenShift Web Console open the Pipelines view Open the workshop Pipeline Go to the top right menu and choose Actions -\u0026gt; Start In the Start Pipeline window that opens, but before (!) starting the actual pipeline, we need to add a Secret so the pipeline can authenticate and push to the Quay repository:\n Switch to the Quay Web Portal and click on the openshift_workshop-int / workshop repository On the left click on Settings Click on the openshift_workshop-int+builder Robot Account and copy the token Click image to enlarge Back in the Start Pipeline form At the buttom, click on Show credential options and then Add secret Set these values Secret name : quay-workshop-int-token Access to : Image Registry Authentication type : Basic Authentication Server URL : quay-quay-quay.apps.\u0026lt;DOMAIN\u0026gt;/openshift_workshop-int (replace your cluster domain if necessary) Username : openshift_workshop-int+builder Password or token : the token you copied from the Quay Robot Account before \u0026hellip; Then click on the checkmark below to add the secret The secret has just been added and will be mounted automatically everytime the pipeline runs Hit Start If the pipeline fails you may have to recheck the Secret quay-workshop-int-token directly if the username and password are set correctly.\nOnce the Pipeline run has finished, go to the Quay Portal and check the Repository openshift_workshop-int/workshop again. Under Tags you should now see a new workshop Image version that was just pushed by the pipeline.\nCongratulations: Quay is now a first level citizen of your pipeline build strategy.\nCreate an ImageStream Tag with an Old Image Version Now that your build pipeline has been set up and is ready. There is one more step in preparation of the security part of this workshop. We need a way to build and deploy from an older image with some security issues in it. For this we will add another ImageStream Tag in the default Java ImageStream that points to an older version with a known CVE issue in it.\n Using the OpenShift Administrator view, switch to the project openshift and under Builds click on ImageStreams Search and open the ImageStream java Switch to YAML view and add the following snippet to the spec \u0026gt; tags: section. Be careful to keep the needed indentation! - name: java-old-image annotations: description: Build and run Java applications using Maven and OpenJDK 8. iconClass: icon-rh-openjdk openshift.io/display-name: Red Hat OpenJDK 8 (UBI 8) sampleContextDir: undertow-servlet sampleRepo: \u0026#34;https://github.com/jboss-openshift/openshift-quickstarts\u0026#34; supports: \u0026#34;java:8,java\u0026#34; tags: \u0026#34;builder,java,openjdk\u0026#34; version: \u0026#34;8\u0026#34; from: kind: DockerImage name: \u0026#34;registry.redhat.io/openjdk/openjdk-11-rhel7:1.10-1\u0026#34; generation: 4 importPolicy: {} referencePolicy: type: Local This will add a tag java-old-image that points to an older version of the RHEL Java image. The image and security vulnerabilities can be inspected in the Red Hat Software Catalog here\n Have a look at version 1.10-1 We will use this tag to test our security setup in a later chapter.\nCreate a new Project For the subsequent exercises we need a new project:\n Create a new OpenShift Project workshop-prod Architecture recap Click image to enlarge " -}, -{ - "uri": "https://devsecops-workshop.github.io/devsecops-workshop.github.io-dev/5-gitops/", - "title": "Configure GitOps", - "tags": [], - "description": "", - "content": "Now that our CI/CD build and integration stage is ready we could promote the app version directly to a production stage. But with the help of the GitOps approach, we can leverage our Git system to handle promotion that is tracked through commits and can deploy and configure the whole production environment. This stage is just too critical to configure manually and without an audit.\nInstall OpenShift GitOps So let\u0026rsquo;s start be installing the OpenShift GitOps Operator based on the project ArgoCD.\n Install the Red Hat OpenShift GitOps Operator from OperatorHub with the default settings The installation of the GitOps Operator will give you a clusterwide ArgoCD instance available at the link in the top right menu, but since we want to have an instance to manage just our prod project we will create another ArgoCD instance in that specific project.\n You should already have created an OpenShift Project workshop-prod With the project workshop-prod selected in the top menu click on Installed Operators and then Red Hat OpenShift GitOps. On the ArgoCD \u0026ldquo;tile\u0026rdquo; click on Create instance to create an ArgoCD instance in the workshop-prod project. Click image to enlarge Keep the settings as they are and click Create Check the GitOps Config Repository We already have a second repository, called openshift-gitops-getting-started in Gitea that holds the required Gitops yaml resources. We will use this repo to push changes to our workshop-prod enivronment.\nHave a quick look at the structure of this git project:\napp - contains yaml files for the deployment, service and route resources needed by our application. These will be applied to the cluster. There is also a kustomization.yaml defining that kustomize layers will be applied to all yamls\nenvironments/dev - contains the kustomization.yaml which will be modified by our builds with new Image versions. ArgoCD will pick up these changes and trigger new deployments.\nSetup the GitOps Project in ArgoCD Let\u0026rsquo;s setup the project that tells ArgoCD to watch our configuration repository and update resources in the workshop-prod project accordingly.\n Find the local ArgoCD URL (not the global instance) by going to Networking \u0026gt; Routes in namespace workshop-prod Open the ArgoCD website, ignoring the certificate warning Don\u0026rsquo;t login with OpenShift but with username and password User is admin and password will be in Secret argocd-cluster in the Project workspace-prod ArgoCD works with the concept of Applications. We will create an Application and point it to the configuration Git repository. ArgoCD will look for Kubernetes yaml files in the repository and path and deploy them to the defined project. Additionally, ArgoCD will also react to changes to the repository and reflect these to the project. You can also enable self-healing to prevent configuration drift. If you want find out more about OpenShift GitOps have look here.\n Create Application Click the Applications icon on the left Click Create Application Application Name: workshop Project: default SYNC POLICY: Automatic Repository URL: Copy the URL of your config repo openshift-gitops-getting-started from Gitea Path: environments/dev Cluster URL: https://kubernetes.default.svc Namespace: workshop-prod Click Create Click on Sync and then Synchronize to manually trigger the first sync Watch the resources (Deployment, Service, Route) get rolled out to the project workshop-prod. Notice, we also scaling our app to 2 pods in the production stage as we want some high availability. But the actual deployment will not succeed as shown by the \u0026lsquo;broken heart\u0026rsquo; icons!\nSince we have not published our image to the Quay workshop-prod repository the initial Deployment will try to roll out non existant image from Quay. Once the first pipeline run is complete, our newly built image will be replaced in the Deployment and rolled out.\n Our complete production stage is now configured and controlled through GitOps. But how do we tell ArgoCD that there is a new version of our app to deploy? Well, we will add a step to our build pipeline updating the configuration repository.\nAs we do not want to modify our original repository file we will use a tool called Kustomize that can add incremental change layers to YAML files. Since ArgoCD permanently watches this repository, it will pick up these Kustomize changes.\nIt is also possible to update the repository with a Pull request. Then you have an approval process for your production deployment.\n Initialize the workshop-prod/workshop Repository in Quay We will need to initialize the workshop-prod/workshop in Quay so the robo user will be able to push images there later on.\n In Quay select the organization openshift_workshop-prod on the right Click on + Create New Repository on the top left Click image to enlarge Make sure to select openshift_workshop-prod as Organization Enter workshop as repo name Set the repo to Public Click Create Public Repository Click image to enlarge Add Kustomize and Git Push Tekton Task Let\u0026rsquo;s add a new custom Tekton task to the workshop-int project that can update the Image tag via Kustomize after the build process completed and then push the change to our git configuration repository.\nWe could add this through the OpenShift Web Console as well but to save time we will apply the file directly via the oc command.\n Go to your Web Terminal or open a new one. Apply the task via YAML: oc create -f https://raw.githubusercontent.com/devsecops-workshop/yaml/main/tekton-kustomize.yml In the OpenShift Web Console switch back to project workshop-int and then go to Pipelines \u0026gt; Tasks \u0026gt; Tasks and have a look at the just imported task git-update-deployment. You should see the git commands how the configuration repository will be cloned, patched by Kustomize and then pushed again. Add Tekton Tasks to your Pipeline to Promote your Image to workshop-prod So now we have a new Tekton Task in our task catalog to update a GitOps Git repository, but we still need to promote the actual image from our workshop-int to workshop-prod project. Otherwise the image will not be available for our deployment.\n In the workshop_int project, go to Pipelines \u0026gt; Pipelines \u0026gt; workshop and then YAML You can edit pipelines either directly in YAML or in the visual Pipeline Builder. We will see how to use the Builder later on, so let\u0026rsquo;s edit the YAML for now.\n Add the new Task to your Pipeline by adding it to the YAML like this:\n First we will add a new Pipeline Parameter \u0026lsquo;GIT_CONFIG_REPO\u0026rsquo; at the beginning of the pipeline and set it by default to our GitOps configuration repository (This will be updated by the Pipeline and then trigger ArgoCD to deploy to Production) So in the YAML view at the end of the spec \u0026gt; params section add the following (if the \u0026lt;DOMAIN\u0026gt; placeholder hasn\u0026rsquo;t been replaced automatically, do it manually): - default: \u0026gt;- https://repository-git.apps.\u0026lt;DOMAIN\u0026gt;/gitea/openshift-gitops-getting-started.git name: GIT_CONFIG_REPO type: string Next insert the new tasks at the tasks level right after the deploy task We will map the Pipeline parameter GIT_CONFIG_REPO to the Task parameter GIT_REPOSITORY Make sure to fix indentation after pasting into the YAML! In the OpenShift YAML viewer/editor you can mark multiple lines and use tab to indent this lines for one step.\n - name: skopeo-copy params: - name: srcImageURL value: \u0026#34;docker://$(params.QUAY_URL)/openshift_workshop-int/workshop:latest\u0026#34; - name: destImageURL value: \u0026#34;docker://$(params.QUAY_URL)/openshift_workshop-prod/workshop:latest\u0026#34; - name: srcTLSverify value: \u0026#34;false\u0026#34; - name: destTLSverify value: \u0026#34;false\u0026#34; runAfter: - build taskRef: kind: ClusterTask name: skopeo-copy workspaces: - name: images-url workspace: workspace - name: git-update-deployment params: - name: GIT_REPOSITORY value: $(params.GIT_CONFIG_REPO) - name: CURRENT_IMAGE value: \u0026#34;quay.io/nexus6/hello-microshift:1.0.0-SNAPSHOT\u0026#34; - name: NEW_IMAGE value: $(params.QUAY_URL)/openshift_workshop-prod/workshop - name: NEW_DIGEST value: $(tasks.build.results.IMAGE_DIGEST) - name: KUSTOMIZATION_PATH value: environments/dev runAfter: - skopeo-copy taskRef: kind: Task name: git-update-deployment workspaces: - name: workspace workspace: workspace The Pipeline should now look like this. Notice that the new tasks runs in parallel to the deploy task\n Click image to enlarge Now, the pipeline is set. The last thing we need is authentication against the Gitea repository and the workshop-prod Quay org. We will add those from the start pipeline form next. Make sure to replace the placeholder if required.\nUpdate our Prod Stage via Pipeline and GitOps Click on Pipeline Start\n In the form go down and expand Show credential options Click Add Secret, then enter Secret name : quay-workshop-prod-token Access to: Image Registry Authentication type: Basic Authentication Server URL: quay-quay-quay.apps.\u0026lt;DOMAIN\u0026gt;/openshift_workshop-prod Username: openshift_workshop-prod+builder Password : (Retrieve this from the Quay organization openshift_workshop-prod robo account openshift_workshop-prod+builder as before) Click the checkmark Then click Add Secret again Secret name : gitea-secret Access to: Git Server Authentication type: Basic Authentication Server URL: https://repository-git.apps.\u0026lt;DOMAIN\u0026gt;/gitea/openshift-gitops-getting-started.git (replace url if necassary) Username: gitea Password : gitea Click the checkmark Run the pipeline by clicking Start and see that in your Gitea configuration repository the file /environment/dev/kustomize.yaml is updated with the new image version Notice that the deploy and the git-update steps now run in parallel. This is one of the strength of Tekton. It can scale natively with pods on OpenShift.\n This will tell ArgoCD to update the Deployment with this new image version\n Check that the new image is rolled out sucessfully now (you may need to sync manually in ArgoCD to speed things up)\n Architecture recap Click image to enlarge " -}, -{ - "uri": "https://devsecops-workshop.github.io/devsecops-workshop.github.io-dev/10-rhacs-setup/", - "title": "Install and Configure ACS", - "tags": [], - "description": "", - "content": "During the workshop you went through the OpenShift developer experience starting from software development using Quarkus and odo, moving on to automating build and deployment using Tekton pipelines and finally using GitOps for production deployments.\nNow it\u0026rsquo;s time to add another extremely important piece to the setup: enhancing application security in a containerized world. Using Red Hat Advanced Cluster Security for Kubernetes, of course!\nInstall RHACS RHCAS Operator Install the Advanced Cluster Security for Kubernetes operator from the OperatorHub:\n Switch Update approval to Manual Apart from this use the default settings Approve the installation when asked Red Hat recommends installing the Red Hat Advanced Cluster Security for Kubernetes Operator in the rhacs-operator namespace. This will happen by default..\n Installing the main component Central You must install the ACS Central instance in its own project and not in the rhacs-operator and openshift-operator projects, or in any project in which you have installed the ACS Operator!\n Navigate to Operators → Installed Operators Select the ACS operator You should now be in the rhacs-operator project the Operator created, create a new OpenShift Project for the Central instance: Create a new project called stackrox (Red Hat recommends using stackrox as the project name.) by selecting Projects: Create project In the Operator view under Provided APIs on the tile Central click Create Instance Switch to the YAML View. Replace the YAML content with the following: apiVersion: platform.stackrox.io/v1alpha1 kind: Central metadata: name: stackrox-central-services namespace: stackrox spec: monitoring: openshift: enabled: true central: notifierSecretsEncryption: enabled: false exposure: loadBalancer: enabled: false port: 443 nodePort: enabled: false route: enabled: true telemetry: enabled: true db: isEnabled: Default persistence: persistentVolumeClaim: claimName: central-db resources: limits: cpu: 2 memory: 6Gi requests: cpu: 500m memory: 1Gi persistence: persistentVolumeClaim: claimName: stackrox-db egress: connectivityPolicy: Online scannerV4: db: persistence: persistentVolumeClaim: claimName: scanner-v4-db indexer: scaling: autoScaling: Disabled maxReplicas: 2 minReplicas: 1 replicas: 1 matcher: scaling: autoScaling: Disabled maxReplicas: 2 minReplicas: 1 replicas: 1 scannerComponent: Default scanner: analyzer: scaling: autoScaling: Disabled maxReplicas: 2 minReplicas: 1 replicas: 1 Click Create After the deployment has finished (Status Conditions: Deployed, Initialized in the Operator view on the Central tab), it can take some time until the application is completely up and running. One easy way to check the state, is to switch to the Developer console view on the upper left. Then make sure you are in the stackrox project and open the Topology map. You\u0026rsquo;ll see the three deployments of the Central instance:\n scanner scanner-db central central-db Wait until all Pods have been scaled up properly.\nVerify the Installation\nSwitch to the Administrator console view again. Now to check the installation of your Central instance, access the ACS Portal:\n Look up the central-htpasswd secret that was created to get the password If you access the details of your Central instance in the Operator page you\u0026rsquo;ll find the complete commandline using oc to retrieve the password from the secret under Admin Credentials Info. Just sayin\u0026hellip; ;)\n Look up and access the route central which was also generated automatically. This will get you to the ACS Portal, accept the self-signed certificate and login as user admin with the password from the secret.\nNow you have a Central instance that provides the following services in an RHACS setup:\n The application management interface and services. It handles data persistence, API interactions, and user interface access. You can use the same Central instance to secure multiple OpenShift or Kubernetes clusters.\n Scanner, which is a vulnerability scanner for scanning container images. It analyzes all image layers for known vulnerabilities from the Common Vulnerabilities and Exposures (CVEs) list. Scanner also identifies vulnerabilities in packages installed by package managers and in dependencies for multiple programming languages.\n To actually do and see anything you need to add a SecuredCluster (be it the same or another OpenShift cluster). For effect go to the ACS Portal, the Dashboard should by pretty empty, click on either of the Compliance link in the menu to the left, lots of zero\u0026rsquo;s and empty panels, too.\nThis is because you don\u0026rsquo;t have a monitored and secured OpenShift cluster yet.\nPrepare to add Secured Clusters Now we\u0026rsquo;ll add your OpenShift cluster as Secured Cluster to ACS.\nFirst, you have to generate an init bundle which contains certificates and is used to authenticate a SecuredCluster to the Central instance, regardless if it\u0026rsquo;s the same cluster as the Central instance or a remote/other cluster.\nWe are using the API to create the init bundle in this workshop, because if we use the Web Terminal we can\u0026rsquo;t upload and downloaded file to it. For the steps to create the init bundle in the ACS Portal see the appendix.\nLet\u0026rsquo;s create the init bundle using the ACS API on the commandline:\nGo to your Web Terminal (if it timed out just start it again), then paste, edit and execute the following lines:\n Set the ACS API endpoint, replace \u0026lt;central_url\u0026gt; with the base URL of your ACS portal (without \u0026lsquo;https://\u0026rsquo; e.g. central-stackrox.apps.cluster-cqtsh.cqtsh.example.com) export ROX_ENDPOINT=\u0026lt;central_url\u0026gt;:443 Set the admin password (same as for the portal, look up the secrets again) export PASSWORD=\u0026lt;password\u0026gt; Give the init bundle a name export DATA={\\\u0026#34;name\\\u0026#34;:\\\u0026#34;my-init-bundle\\\u0026#34;} Finally run the curl command against the API to create the init bundle using the variables set above curl -k -o bundle.json -X POST -u \u0026#34;admin:$PASSWORD\u0026#34; -H \u0026#34;Content-Type: application/json\u0026#34; --data $DATA https://${ROX_ENDPOINT}/v1/cluster-init/init-bundles Convert it to the needed format cat bundle.json | jq -r \u0026#39;.kubectlBundle\u0026#39; \u0026gt; bundle64 base64 -d bundle64 \u0026gt; kube-secrets.bundle You should now have these two files in your Web Terminal session: bundle.json and kube-secrets.bundle.\nThe init bundle needs to be applied to all OpenShift clusters you want to secure and monitor.\nAs said, you can create an init bundle in the ACS Portal, download it and apply it from any terminal where you can run oc against your cluster. We used the API method to show you how to use it and to enable you to use the Web Terminal.\n Prepare the Secured Cluster For this workshop we run Central and SecuredCluster on one OpenShift cluster. E.g. we monitor and secure the same cluster the central services live on.\nApply the init bundle\nAgain in the web terminal:\n Run oc create -f kube-secrets.bundle -n stackrox pointing to the init bundle you downloaded from the Central instance or created via the API as above. This will create a number of secrets, the output should be: secret/collector-tls created secret/sensor-tls created secret/admission-control-tls created Add the Cluster as SecuredCluster to ACS Central You are ready to install the SecuredClusters instance, this will deploy the secured cluster services:\n In the OpenShift Web Console go to the ACS Operator in Operators-\u0026gt;Installed Operators Using the Operator create an instance of the Secured Cluster type in the Project you created (should be stackrox) If you are in the YAML view switch to the Form view Change the Cluster Name for the cluster if you want, it\u0026rsquo;ll appear under this name in the ACS Portal And most importantly for Central Endpoint enter the address and port number of your Central instance, this is the same as the ACS Portal. If your ACS Portal is available at https://central-stackrox.apps.\u0026lt;DOMAIN\u0026gt; the endpoint is central-stackrox.apps.\u0026lt;DOMAIN\u0026gt;:443. Under Admission Control Settings make sure listenOnCreates, listenOnUpdates and ListenOnEvents is enabled Set Contact Image Scanners to ScanIfMissing **Collector Settings** change the value for **Collection** form `EBPF` to `KernelModule`. This is a workaround for a known issue. -- Click Create Now go to your ACS Portal again, after a couple of minutes you should see your secured cluster under Platform Configuration-\u0026gt;Clusters. Wait until all Cluster Status indicators become green.\nConfigure Quay Integrations in ACS Create an integration to scan the Quay registry To enable scanning of images in your Quay registry, you\u0026rsquo;ll have to configure an Integration with valid credentials, so this is what you\u0026rsquo;ll do.\nNow, create a new Integration:\n Access the RHACS Portal and configure the already existing integrations of type Generic Docker Registry. Go to Platform Configuration -\u0026gt; Integrations -\u0026gt; Generic Docker Registry. Click the New integration button Integration name: Quay local Endpoint: https://quay-quay-quay.apps.\u0026lt;DOMAIN\u0026gt; (replace domain if required) Username: quayadmin Password: quayadmin Press the Test button to validate the connection and press Save when the test is successful. Architecture recap Click image to enlarge " -}, -{ - "uri": "https://devsecops-workshop.github.io/devsecops-workshop.github.io-dev/11-rhacs-warmup/", - "title": "Getting to know ACS", - "tags": [], - "description": "", - "content": "Before we start to integrate Red Hat Advanced Cluster Security in our setup, you should become familiar with the basic concepts.\nACS Features ACS delivers on these security use cases:\n Vulnerability Management: Protect the software supply chain and prevent known vulnerabilities from being used as an entry point in your applications. Configuration Management: Leverage the OpenShift platform for declarative security to prevent or limit attacks, even in the presence of exploitable vulnerabilities. Network Segmentation: Using Kubernetes network policies in OpenShift, restrict open network paths for isolation and prevent lateral movement by attackers. Risk Profiling: Prioritize applications and security risks automatically to focus investigation and mitigation efforts. Threat detection and incident response: Continuous observation and response in order to take action on attack-related activities, and to use observed behavior to inform mitigation efforts to harden security. Compliance: Making sure that industry and regulatory standards are being met in your OpenShift environments. UI Overview Click image to enlarge Dashboard: The dashboard serves as the security overview - helping the security team understand what the sources of risk are, categories of violations, and gaps in compliance. All of the elements are clickable for more information and categories are customizable.\n Top bar: Near the top, we see a condensed overview of the status. It provides insight into the status of clusters, nodes, violations and so on. The top bar provides links to Search, Command-line tools, Cluster Health, Documentation, API Reference, and the logged-in user account.\n Left menus: The left hands side menus provide navigation into each of the security use-cases, as well as product configuration to integrate with your existing tooling.\n Global Search: On every page throughout the UI, the global search allows you to search for any data that ACS tracks.\n Exploring the Security Use Cases Now start to explore the Security Use Cases ACS targets as provided in the left side menu.\n Network Graph:\n The Network Graph is a flow diagram, firewall diagram, and firewall rule builder in one. The default view Active shows the actual traffic for the past hour between the deployments in all namespaces. Violations:\n Violations record all times where a policy criteria was triggered by any of the objects in your cluster - images, components, deployments, runtime activity. Compliance:\n The compliance reports gather information for configuration, industry standards, and best practices for container-based workloads running in OpenShift. Vulnerability Management:\n Vulnerability Management provides several important reports - where the vulnerabilities are, which are the most widespread or the most recent, where my images are coming from. In the upper right are buttons to link to all policies, CVEs, and images, and a menu to bring you to reports by cluster, namespace, deployment, and so on. Configuration Management:\n Configuration management provides visibility into a number of infrastructure components: clusters and nodes, namespaces and deployments, and Kubernetes systems like RBAC and secrets. Risk:\n The Risk view goes beyond the basics of vulnerabilities. It helps to understand how deployment configuration and runtime activity impact the likelihood of an exploit to occurr and how successful those exploits might be. This list view shows all deployments, in all clusters and namespaces, ordered by Risk priority. Filters Most UI pages have a filter section at the top that allows you to narrow the view to matching or non-matching criteria. Almost all of the attributes that ACS gathers can be filtered, try it out:\n Go to the Risk view Click in the Filters Bar Start typing Process Name and select the Process Name key Type java and press enter: click away to get the filters dropdown to clear You should see your deployment that has been “seen” running Java since it started Try another one: limit the filter to your Project namespace only Note the Create Policy button. It can be used to create a policy from the search filter to automatically identify this criteria. System Policies As the foundation of ACS are the system policies, have a good look around:\n Navigate to the Policiy Management section from Platform Configuration in the left side menu. You will get an overview of the built-in policies All of the policies that ship with the product are designed with the goal to provide targeted remediation strategies that improve security hardening. You’ll see this list contains many Build and Deploy time policies to catch misconfigurations early in the pipeline, but also Runtime policies. These policies come from us at Red Hat - our expertise, our interpretation of industry best practice, and our interpretation of common compliance standards, but you can modify them or create your own. By default only some policies are enforced. If you want to get an overview which ones, you can use the filter view introduced above. Use Enforcement as filter key and FAIL_BUILD_ENFORCEMENT as value.\n Architecture recap Click image to enlarge " -}, -{ - "uri": "https://devsecops-workshop.github.io/devsecops-workshop.github.io-dev/12-create-policy/", - "title": "Create a Custom Security Policy", - "tags": [], - "description": "", - "content": "Objective You should have one or more pipelines to build your application from the first workshop part, now we want to secure the build and deployment of it. For the sake of this workshop we\u0026rsquo;ll take a somewhat simplified use case:\nWe want to scan our application image for the Red Hat Security Advisory RHSA-2021:4904 concerning openssl-lib.\nIf this RHSA is found in an image we don\u0026rsquo;t want to deploy the application.\nThese are the steps you will go through:\n Create a custom Security Policy to check for the advisory Test if the policy is triggered in non-enforcing mode with an older image version that contains the issue and then with a newer version with the issue fixed The final goal is to integrate the policy into the build pipeline Create a Custom System Policy First create a new policy category and the system policy. In the ACS Portal do the following:\n Platform Configuration-\u0026gt;Policy Management-\u0026gt;Policy categories tab-\u0026gt;Create category Enter Workshop as Category name Click Create Platform Configuration-\u0026gt;Policy Management-\u0026gt;Policies tab-\u0026gt;Create policy Policy Details Name: Workshop RHSA-2021:4904 Severity: Critical Categories: Workshop Click Next Policy Behaviour Lifecycle Stages: Build, Deploy Response method: Inform Click Next Policy Criteria Find the CVE policy criteria under Drag out policy fields in Image contents Drag \u0026amp; drop it on the drop zone of Policy Section 1 Put RHSA-2021:4904 into the CVE identifier field Click Next Policy Scope You could limit the scope the policy is applied in, do nothing for now Click Next Review Policy Have a quick look around, if the policy would create a violation you get a preview here Click Save Click image to enlarge Currently there is an issue with persisting the group change to the central instance. As a workaround run this in your Web Terminal zu restart the central instance:\noc delete pod -n stackrox -l app=central Test the Policy Start the pipeline with the affected image version:\n In the OpenShift Web Console go to the Pipeline in your workshop-int project, start it and set Version to java-old-image (Remember how we set up this ImageStream tag to point to an old and vulnerable version of the image?) In the ACS Portal follow the Violations view To make it easier spotting the violations for this deployment you can filter the list by entering namespace and then workshop-int in the filter bar.\n Expected result: You\u0026rsquo;ll see the build deployments (Quarkus-Build-Options-Git-Gsklhg-Build-...) come and go when they are finished. When the final build is deployed you\u0026rsquo;ll see a violation in ACS Portal for policy Workshop RHSA-2021:4904 (Check the Time of the violation) There will be other policy violations listed, triggered by default policies, have a look around. Note that none of the policies are enforced (so that the pipeline build would be stopped) yet!\n Now start the pipeline with the fixed image version that doesn\u0026rsquo;t contain the CVE anymore:\n Start the pipeline again but this time leave the Java Version as is (openjdk-11-el7). Follow the Violations in the ACS Portal Expected result: You\u0026rsquo;ll see the build deployments come up and go When the final build is deployed you\u0026rsquo;ll see the policy violation for Workshop RHSA-2021:4904 for your deployment is gone because the image no longer contains it This shows how ACS is automatically scanning images when they become active against all enabled policies. But we don\u0026rsquo;t want to just admire a violation after the image has been deployed, we want to disable the deployment during build time! So the next step is to integrate the check into the build pipeline and enforce it (don\u0026rsquo;t deploy the application).\nArchitecture recap Click image to enlarge " -}, -{ - "uri": "https://devsecops-workshop.github.io/devsecops-workshop.github.io-dev/13-rhacs-pipeline/", - "title": "Integrating ACS into the Pipeline", - "tags": [], - "description": "", - "content": "Finally: Putting the Sec in DevSecOps! There are basically two ways to interface with ACS. The UI, which focuses on the needs of the security team, and a separate \u0026ldquo;interface\u0026rdquo; for developers to integrate into their existing toolset (CI/CD pipeline, consoles, ticketing systems etc): The roxctl commandline tool. This way ACS provides a familiar interface to understand and address issues that the security team considers important.\n ACS policies can act during the CI/CD pipeline to identify security risk in container images before they are started.\nIntegrate Image Scan into the Pipeline You should have created and build a custom policy in ACS and tested it to trigger violations. Now you will integrate it into the build pipeline.\nOur task will use the roxctl cli Build-time policies require the use of the roxctl command-line tool which is available for download from the ACS Central UI, in the upper right corner of the dashboard. You don\u0026rsquo;t need to to download this now as our Tekton task will do this automatically.\nroxctl needs to authenticate to ACS Central to do anything. You can use either username and password or API tokens to authenticate against ACS Central. It\u0026rsquo;s good practice to use a token so that\u0026rsquo;s what we\u0026rsquo;ll do.\nLet\u0026rsquo;s Go : Create the roxctl token In the ACS portal:\n Navigate to Platform Configuration \u0026gt; Integrations. Scroll down to the Authentication Tokens category, and select API Token. Click Generate Token. Enter the name pipeline for the token and select the role Admin. Select Generate Save the contents of the token somewhere! Create OCP secret with token Change to the OpenShift Web Console and create a secret with the API token in the project your pipeline lives in:\n In the UI switch to your workshop-int Project Create a new key/value Secret named roxsecrets Introduce these key/values into the secret: rox_central_endpoint: \u0026lt;the URL to your ACS Portal\u0026gt; (without https:// but adding the port, e.g. entral-stackrox.apps.cluster-cqtsh.cqtsh.example.com:443) If the DOMAIN placeholder was automatically replaced it should be: central-stackrox.apps.\u0026lt;DOMAIN\u0026gt;:443 If not, replace it manually with your DOMAIN rox_api_token: \u0026lt;the API token you generated\u0026gt; Even if the form says Drag and drop file with your value here\u0026hellip; you can just paste the text.\n Remove ImageStream Change Trigger There is one more thing you have to do before integrating the image scanning into your build pipeline:\nWhen you created your deployment, a trigger was automatically added that deploys a new version when the image referenced by the ImageStream changes.\nThis is not what we want! Because this way a newly build image would be deployed immediately even if the roxctl scan detects a policy violation and terminates the pipeline.\nHave a look for yourself:\n In the OCP console go to Workloads-\u0026gt;Deployments and open the workshop Deployment Switch to the YAML view Near the top under annotations (around lines 11-12) you\u0026rsquo;ll find an annotation image.openshift.io/triggers. Remove exactly this lines and click Save:\nimage.openshift.io/triggers: \u0026gt;- [{\u0026#34;from\u0026#34;:{\u0026#34;kind\u0026#34;:\u0026#34;ImageStreamTag\u0026#34;,\u0026#34;name\u0026#34;:\u0026#34;workshop2:latest\u0026#34;,\u0026#34;namespace\u0026#34;:\u0026#34;workshop-int\u0026#34;},\u0026#34;fieldPath\u0026#34;:\u0026#34;spec.template.spec.containers[?(@.name==\\\u0026#34;workshop2\\\u0026#34;)].image\u0026#34;,\u0026#34;pause\u0026#34;:\u0026#34;false\u0026#34; This way we make sure that a new image won\u0026rsquo;t be deployed automatically right after the build task which also updates the ImageStream.\nCreate a Scan Task You are now ready to create a new pipeline task that will use roxctl to scan the image build in your pipeline before the deploy step:\n In the OpenShift UI, make sure you are still in the project with your pipeline and the secret roxsecrets Go to Pipelines-\u0026gt;Tasks Click Create-\u0026gt; ClusterTask Replace the YAML displayed with this: apiVersion: tekton.dev/v1beta1 kind: ClusterTask metadata: name: rox-image-check spec: params: - description: \u0026gt;- Secret containing the address:port tuple for StackRox Central (example - rox.stackrox.io:443) name: rox_central_endpoint type: string - description: Secret containing the StackRox API token with CI permissions name: rox_api_token type: string - description: \u0026#34;Full name of image to scan (example -- gcr.io/rox/sample:5.0-rc1)\u0026#34; name: image type: string - description: Use image digest result from s2i-java build task name: image_digest type: string results: - description: Output of `roxctl image check` name: check_output steps: - env: - name: ROX_API_TOKEN valueFrom: secretKeyRef: key: rox_api_token name: $(params.rox_api_token) - name: ROX_CENTRAL_ENDPOINT valueFrom: secretKeyRef: key: rox_central_endpoint name: $(params.rox_central_endpoint) image: registry.access.redhat.com/ubi8/ubi-minimal:latest name: rox-image-check resources: {} script: \u0026gt; #!/usr/bin/env bash set +x curl -k -L -H \u0026#34;Authorization: Bearer $ROX_API_TOKEN\u0026#34; https://$ROX_CENTRAL_ENDPOINT/api/cli/download/roxctl-linux --output ./roxctl \u0026gt; /dev/null; echo \u0026#34;Getting roxctl\u0026#34; chmod +x ./roxctl \u0026gt; /dev/null ./roxctl image check -c Workshop --insecure-skip-tls-verify -e $ROX_CENTRAL_ENDPOINT --image $(params.image)@$(params.image_digest) Take your time to understand the Tekton task definition:\n First, some parameters are defined, it\u0026rsquo;s important to understand some of these are taken or depend on the build task that run before. The script action pulls the roxctl binary into the pipeline workspace so you\u0026rsquo;ll always have a version compatible with your ACS version. The most important bit is the roxctl execution, of course: it executes the image check command only checks against policies from category Workshop that was created above. This way you can check against a subset of policies! defines the image to check and it\u0026rsquo;s digest Add the Scan Task to the Pipeline Now add the rox-image-check task to your pipeline between the build and deploy steps.\n In the Pipelines view of your project click the three dots to the right and the Edit Pipeline Remember how we edited the pipeline directly in yaml before? OpenShift comes with a graphical Pipeline editor that we will use this time.\n Hover your mouse over build task and click the + at the right side of it, to add a task Click on Add task Then enter rox-image-check in the search box Click image to enlarge Click the Add button to add to the pipeline To add the required parameters from the pipeline for the task so the ACS client can connect to central, click the rox-image-check task. Click image to enlarge A form with the parameters will open, fill it in: rox_central_endpoint: roxsecrets rox_api_token: roxsecrets image: quay-quay-quay.apps.\u0026lt;DOMAIN\u0026gt;/openshift_workshop-int/workshop (if the DOMAIN placeholder hasn\u0026rsquo;t been replaced automatically, do it manually) Adapt the Project name if you changed it image_digest: $(tasks.build.results.IMAGE_DIGEST) This variable takes the result of the build task and uses it in the scan task. Click image to enlarge Don\u0026rsquo;t save yet Add the oc patch Task to the Pipeline As you remember we removed the trigger that updates the Deployment on ImageStream changes. Now the Deployment will never be updated and our new Image version will never be deployed to workshop-int.\nTo fix this we will add a new oc client Task that updates the Deployment, only after the Scan Task has run.\n While still in the visual pipeline editor Click on the + button to the left of the deploy Task Click on Add Task In the search window enter openshiftand select the openshift-client from Red Hat Click on Add Click on the new openshift-client Task In Task form on the right enter Display name : update-deploy SCRIPT : oc patch deploy/workshop -p '{\u0026quot;spec\u0026quot;:{\u0026quot;template\u0026quot;:{\u0026quot;spec\u0026quot;:{\u0026quot;containers\u0026quot;:[{\u0026quot;name\u0026quot;:\u0026quot;workshop\u0026quot;,\u0026quot;image\u0026quot;:\u0026quot;$(params.QUAY_URL)/openshift_workshop-int/workshop@$(tasks.build.results.IMAGE_DIGEST)\u0026quot;}]}}}}' Click image to enlarge Now save the pipeline Test the Scan Task With our custom System Policy still not set to enforce we first are going to test the pipeline integration. Go to Pipelines and next to your pipeline click on the three dots and then Start. Now in the pipeline startform enter java-old-image in the Version field.\n Expected Result: The rox-image-check task should succeed, but if you have a look at the output (click the task in the visual representation) you should see that the build violated our policy! Enforce the Policy The last step is to enforce the System Policy. If the policy is violated the pipeline should be stopped and the application should not be deployed.\n Edit your custom System Policy Workshop RHSA-2021:4904 in ACS Portal and set Response Method to Inform and enforce and then switch on Build and Deploy below. Run the pipeline again, first with Version java-old-image and then with Version openjdk-11-el7 (default) Expected results: We are sure you know by now what to expect! The pipeline should fail with the old image version and succeed with the latest image version! Make sure you run the pipeline once, otherwise your application will not have a valid image tag when you kill the running pod in the next chapter Click image to enlarge Architecture recap Click image to enlarge " -}, -{ - "uri": "https://devsecops-workshop.github.io/devsecops-workshop.github.io-dev/15-runtime-security/", - "title": "Securing Runtime Events", - "tags": [], - "description": "", - "content": "So far you\u0026rsquo;ve seen how ACS can handle security issues concerning Build and Deploy stages. But ACS is also able to detect and secure container runtime behaviour. Let\u0026rsquo;s have a look\u0026hellip;\nHandling Security Issues at Runtime As a scenario let\u0026rsquo;s assume you want to protect container workloads against attackers who are trying to install software. ACS comes with pre-configured policies for Ubuntu and Red Hat-based containers to detect if a package management tool is installed, this can be used in the Build and Deploy stages:\n Red Hat Package Manager in Image And, more important for this section about runtime security, a policy to detect the execution of a package manager as a runtime violation, using Kernel instrumentation:\n Red Hat Package Manager Execution In the ACS Portal, go to Platform Configuration-\u0026gt;Policy Management, search for the policies by e.g. typing policy and then red hat into the filter. Open the policy detail view by clicking it and have a look at what they do.\nYou can use the included policies as they are but you can always e.g. clone and adapt them to your needs or write completely new ones.\n As you can see the Red Hat Package Manager Execution policy will alert as soon as a process rpm or dnf or yum is executed.\nLike with most included policies it is not set to enforce!\n Test the Runtime Policy To see how the alert would look like, we have to trigger the condition:\n You should have a namespace with your Quarkus application runnning In the OpenShift Web Console navigate to the pod and open a terminal into the container Run yum search test Go to the Violations view in the ACS Portal. You should see a violation of the policy, if you click it, you\u0026rsquo;ll get the details. Run several yum commands in the terminal and check back with the Violations view: As long as you stay in the same deployment, there won\u0026rsquo;t be a new violation but you will see the details for every new violation of the same type in the details. Enforce Runtime Protection But the real fun starts when you enforce the policy. Using the included policy, it\u0026rsquo;s easy to just \u0026ldquo;switch it on\u0026rdquo;:\n In the ACS Portal bring up the Red Hat Package Manager Execution Policy again. Click the Edit Policy button in the Actions drop-down to the upper right. Click Next until you arrive at the Policy behaviour page. Under Response Method select Inform and enforce Set Configure enforcement behaviour for Runtime to Enforce on Runtime Click Next until you arrive at the last page and click Save Now trigger the policy again by opening a terminal into the pod in the OpenShift Web Console and executing yum. See what happens:\n Runtime enforcement will kill the pod immediately (via k8s). OpenShift will scale it up again automatically This is expected and allows to contain a potential compromise while not causing a production outage. Architecture recap Click image to enlarge " -}, -{ - "uri": "https://devsecops-workshop.github.io/devsecops-workshop.github.io-dev/16-acm/", - "title": "Advanced Cluster Management", - "tags": [], - "description": "", - "content": "Advanced Cluster Management Overview Red Hat Advanced Cluster Management for Kubernetes (ACM) provides management, visibility and control for your OpenShift and Kubernetes environments. It provides management capabilities for:\n cluster creation application lifecycle security and compliance All across hybrid cloud environments.\nClusters and applications are visible and managed from a single console, with built-in security policies. Run your operations from anywhere that Red Hat OpenShift runs, and manage any Kubernetes cluster in your fleet.\nInstall Advanced Cluster Managagement Before you can start using ACM, you have to install it using an Operator on your OpenShift cluster.\n Login to the OpenShift Web Console with you cluster admin credentials In the Web Console, go to Operators \u0026gt; OperatorHub and search for the Advanced Cluster Management for Kubernetes operator. Install the operator with the default settings It will install into a new Project open-cluster-management by default. After the operator has been installed it will inform you to create a MultiClusterHub, the central component of ACM.\n Click image to enlarge Click the Create MultiClusterHub button and have a look at the available installation parameters, but don\u0026rsquo;t change anything.\nClick Create.\nAt some point you will be asked to refresh the web console. Do this, you\u0026rsquo;ll notice a new drop-down menu at the top of the left menu bar. If left set to local-cluster you get the standard console view, switching to All Clusters takes you to a view provided by ACM covering all your clusters.\nOkay, right now you\u0026rsquo;ll only see one, your local-cluster listed here.\nA first look at Advanced Cluster Management Now let\u0026rsquo;s change to the full ACM console:\n Switch back to the local-clusters view Go to Operators-\u0026gt;Installed operators and click the Advanced Cluster Management for Kubernetes operator In the operator overview page choose the MultiClusterHub tab. The multiclusterhub instance you deployed should be in Status Running by now. Switch back to the All Clusters You are now in your ACM dashboard!\n Click image to enlarge Have a look around:\n Go to Infrastructure-\u0026gt;Clusters You\u0026rsquo;ll see your lab OpenShift cluster here, the infrastructure it\u0026rsquo;s running on and the version. There might be a version update available, don\u0026rsquo;t run it please\u0026hellip; ;) If you click the cluster name, you\u0026rsquo;ll get even more information, explore! Manage Cluster Lifecycle One of the main features of Advanced Cluster Management is cluster lifecycle management. ACM can help to:\n manage credentials deploy clusters to various cloud providers and on-premises import existing clusters use labels on clusters for management purposes Let\u0026rsquo;s give this a try!\nDeploy an OpenShift Cluster Okay, do not overstress our cloud ressources and for the fun of it we\u0026rsquo;ll deploy a Single Node OpenShift (SNO) cluster to the same AWS account your lab cluster is running in.\nCreate Cloud Credentials The first step is to create credentials in ACM to deploy to the Amazon Web Services account.\nYou\u0026rsquo;ll get the AWS_ACCESS_KEY_ID and AWS_SECRET_ACCESS_KEY needed to deploy to AWS from your facilitators.\n On your OpenShift cluster, create a new namespace sno In the ACM web console, navigate to Credentials and click Add credential: As Credential type select AWS Credential name: sno Namespace: Choose the sno namespace Base DNS domain: sandbox\u0026lt;NNNN\u0026gt;.opentlc.com, replace \u0026lt;NNNN\u0026gt; with your id, you can find it e.g. in the URL Click Next Now you need to enter the AWS credentials, enter the Access key ID and Secret access key as provided. Click Next Click Next again for proxy settings Now you need to enter an OpenShift Pull Secret, copy it from your OpenShift cluster: Switch to the project openshift-config and copy the content of the secret pull-secret To connect to the managed SNO you need to enter a SSH private key ($HOME/.ssh/\u0026lt;LABID\u0026gt;key.pem) and public key ($HOME/.ssh/\u0026lt;LABID\u0026gt;key.pub). Use the respective keys from your lab environments bastion host, the access details will be provided. The \u0026lt;LABID\u0026gt; can be found in the URL, e.g. multicloud-console.apps.cluster-z48z9.z48z9.sandbox910.opentlc.com Click Next Click Add You have created a new set of credentials to deploy to the AWS account you are using.\nDeploy Single Node OpenShift Now you\u0026rsquo;ll deploy a new OpenShift instance:\n In the ACM console, navigate to Infrastructure -\u0026gt; Clusters and click Create cluster. As provider choose Amazon Web Services Infrastructure provider credential: Select the sno credential you created. Control plane type - AWS: Standalone Cluster name: aws-sno Cluster set: Leave empty \u0026hellip; Base DNS Domain: Set automatically from the credentials Release name: Use the latest 4.14.19 release available Additional Label: sno=true Click Next On the Node pools view leave the Region set to us-east-1 Architecture: amd64 Expand Control plane pool read the information for Zones (and leave the setting empty) change Instance Type to m5.2xlarge. Expand Worker pool 1: Set Node count to 0 (we want a single node OCP\u0026hellip;). Click Next Have a look at the network screen but don\u0026rsquo;t change anything Now click Next until you arrive at the Review. Do the following:\n Set YAML: On In the cluster YAML editor select the install-config tab In the controlPlane section change the replicas field to 1. It\u0026rsquo;s time to deploy your cluster, click Create!\nACM monitors the installation of the new cluster and finally imports it. Click View logs under Cluster install to follow the installation log.\nInstallation of a SNO takes around 30 minutes in our lab environment.\n After the installation has finished, access the Clusters section in the ACM portal again.\n Click image to enlarge Explore the information ACM is providing, including the Console URL and the access credentials of your shiny new SNO instance. Use them to login to the SNO Web Console.\nApplication Lifecycle Management In the previous lab, you explored the Cluster Lifecycle functionality of RHACM by deploying a new OpenShift single-node instance to AWS. Now let\u0026rsquo;s have a look at another capability, Application Lifecycle management.\nApplication Lifecycle management is used to manage applications on your clusters. This allows you to define a single or multi-cluster application using Kubernetes specifications, but with additional automation of the deployment and lifecycle management of resources to individual clusters. An application designed to run on a single cluster is straightforward and something you ought to be familiar with from working with OpenShift fundamentals. A multi-cluster application allows you to orchestrate the deployment of these same resources to multiple clusters, based on a set of rules you define for which clusters run the application components.\nThe naming convention of the different components of the Application Lifecycle model in RHACM is as follows:\n Channel: Defines a place where deployable resources are stored, such as an object store, Kubernetes namespace, Helm repository, or GitHub repository. Subscription: Definitions that identify deployable resources available in a Channel resource that are to be deployed to a target cluster. PlacementRule: Defines the target clusters where subscriptions deploy and maintain the application. It is composed of Kubernetes resources identified by the Subscription resource and pulled from the location defined in the Channel resource. Application: A way to group the components here into a more easily viewable single resource. An Application resource typically references a Subscription resource. Creating a Simple Application with ACM Start with adding labels to your two OpenShift clusters in your ACM console:\n On the local cluster add a label: environment=prod On the new SNO deployment add label: environment=dev Click image to enlarge Now it\u0026rsquo;s time to actually deploy the application. But first have a look at the manifest definitions ACM will use as deployables at https://github.com/devsecops-workshop/book-import/tree/master/book-import.\nThen in the ACM console navigate to Applications:\n Click Create application, select Subscription Make sure the view is set to YAML Name: book-import Namespace: book-import Under Repository location for resources -\u0026gt; Repository types, select GIT URL: https://github.com/devsecops-workshop/book-import.git Branch: master Path: book-import Select Deploy application resources only on clusters with all specified labels Cluster sets: default Label: environment Value: dev Click image to enlarge Click Create and then the topology tab to view the application being deployed:\n Click image to enlarge Select Cluster, the application should have been deployed to the SNO cluster because of the label environment=dev Select the Route and click on the URL, this should take you to the Book Import application Explore the other objects Now edit the application in the ACM console and change the label to environment=prod. What happens?\nIn this simple example you have seen how to deploy an application to an OpenShift cluster using ACM. All manifests defining the application where kept in a Git repo, ACM then used the manifests to deploy the required objects into the target cluster.\nBonus Chapter : Pre/Post Tasks with Ansible Automation Platform 2 You can integrate Ansible Automation Platform and the Automation Controller (formerly known as Ansible Tower) with ACM to perform pre / post tasks within the application lifecycle engine. The prehook and posthook task allows you to trigger an Ansible playbook before and after the application is deployed, respectively.\nNotice that you will need a Red Hat Account with a valid Ansible subscription for this part.\nInstall Automation Controller To give this a try you need an Automation Controller instance. So let\u0026rsquo;s deploy one on your cluster using the AAP Operator:\n In OperatorHub search for the Ansible Automation Platform operator and install it using the default settings. After installation has finished create an Automation Controller instance using the Operator, name it automationcontroller When the instance is ready, look up automationcontroller-admin-password secret Then look up the automationcontroller route, access it and login as user admin using the password from the secret Apply a manifest or use the username/password login to the Red Hat Customer Portal and add a subscription You are now set with a shiny new Ansible Automation Platform Controller!\nAdd Auth Token In the Automation Controller web UI, generate a token for the admin user:\n Go to Users Click admin and select Tokens Click the Add button As description add Token for use by ACM Update the Scope to Write Click Save Save the token value to a text file, you will need this token later!\nConfigure Template in Automation Controller For Automation Controller to run something we must configure a Project and a Template first.\nCreate an Ansible Project:\n Select Projects in the left menu Click Add Name: ACM Test Organization: Default SCM Type: Git SCM URL: https://github.com/devsecops-workshop/ansible-acm.git Click Save Create an Ansible Job Template:\n Select Templates in the left menu. Click Add then Add Job Template Name: acm-test Inventory: Demo Inventory Project: ACM Test Playbook: message.yml Check Prompt on launch for Variables Click Save Click Launch Verify that the Job run by going to Jobs and looking for an acm-test job showing a successful Playbook run.\nCreate AAP credentials in ACM Set up the credential which is going to allow ACM to interact with your AAP instance in your ACM Portal:\n Click on Credentials on the left menu and select Add Credential button. Credential type: Red Hat Ansible Automation Platform Credential name: appaccess Namespace: open-cluster-management Click Next Ansible Tower Host: Ansible Tower token: Click Next and Add Use the ACM - Ansible integration And now let\u0026rsquo;s configure the ACM integration with Ansible Automation Platform to kick off a job in Automation Controller. In this case the Ansible job will just run our simple playbook that will only output a message.\nIn the ACM Portal:\n Go to the Applications menu on the left and click Create application → Subscription Enter the following information: Name: book-import2 Namespace: book-import2 Under repository types, select GIT repository URL: https://github.com/devsecops-workshop/book-import.git Branch: prehook Path: book-import Expand the Configure automation for prehook and posthook dropdown menu Ansible Automation Platform credential: appaccess Select Deploy application resources only on clusters matching specified labels Label: environment Value: dev Click Create Give this a few minutes. The application will complete and in the application topology view you will see the Ansible prehook. In Automation Controller go to Jobs and verify the Automation Job run.\n" -}, -{ - "uri": "https://devsecops-workshop.github.io/devsecops-workshop.github.io-dev/20-appendix/", - "title": "Appendix", - "tags": [], - "description": "", - "content": "Create ACS init bundle in ACS Portal Create the init bundle using the ACS Portal:\n Navigate to Platform Configuration → Integrations. Under the Authentication Tokens section, click on Cluster Init Bundle. Click Generate bundle Enter a name for the cluster init bundle and click Generate. Click Download Kubernetes Secret File to download the generated bundle. If you are running oc on your laptop, you are set. If you are SSH-ing to another host (like the bastion host) to run oc, you have to scp the init bundle file over there. If you are using the OpenShift Web Terminal you have to use the API method.\n Create a serviceaccount to scan the internal OpenShift registry The integrations to the internal registry were created automatically. But to enable scanning of images in the internal registry, you\u0026rsquo;ll have to configure valid credentials, so this is what you\u0026rsquo;ll do:\n add a serviceaccount assign it the needed privileges configure the Integrations in ACS with the new credentials But the first step is to disable the auto-generate mechanism, otherwise your updated credentials would be set back automatically:\n In the OpenShift Web Console, switch to the project stackrox, go to Installed Operators-\u0026gt;Advanced Cluster Security for Kubernetes Open your Central instance stackrox-central-services Switch to the YAML view, under spec: add the following YAML snippet (one indent): customize: envVars: - name: ROX_DISABLE_AUTOGENERATED_REGISTRIES value: 'true' Click Save Create ServiceAccount to read images from Registry\n In the OpenShift Web Console make sure you are still in the stackrox Project User Management -\u0026gt; ServiceAccounts -\u0026gt; Create ServiceAccount Replace the example name in the YAML with acs-registry-reader and click Create In the new ServiceAccount, under Secrets click one of the acs-registry-reader-token-... secrets Under Data copy the Token Using oc give the ServiceAccount the right to read images from all projects: oc adm policy add-cluster-role-to-user 'system:image-puller' system:serviceaccount:stackrox:acs-registry-reader -n stackrox Configure Registry Integrations in ACS\nAccess the ACS Portal and configure the already existing integrations of type Generic Docker Registry. Go to Platform Configuration -\u0026gt; Integrations -\u0026gt; Generic Docker Registry. You should see a number of autogenerated (from existing pull-secrets) entries.\nYou have to change four entries pointing to the internal registry, you can easily recognize them by the placeholder Username serviceaccount.\nFor each of the four local registry integrations click Edit integration using the three dots at the right:\n Put in acs-registry-reader as Username Paste the token you copied from the secret into the Password field Select Disable TLS certificate validation Press the Test button to validate the connection and press Save when the test is successful. ACS is now able to scan images in the internal registry!\n" -}, -{ - "uri": "https://devsecops-workshop.github.io/devsecops-workshop.github.io-dev/", - "title": "", - "tags": [], - "description": "", - "content": "DevSecOps Workshop What is it about This workshop will introduce you to the application development cycle leveraging OpenShift\u0026rsquo;s tooling \u0026amp; features with a special focus on securing your environment using Advanced Cluster Security for Kubernetes (ACS). You will get a brief introduction in several OpenShift features like OpenShift Pipelines, OpenShift GitOps, OpenShift DevSpaces. And all in a fun way.\nArchitecture overview Click image to enlarge Credits \u0026amp; Contribution This workshop was created by\n Daniel Brintzinger Goetz Rieger Sebastian Dehn with contributions from\n Tobias Michelis Feel free to open an issue or create a pull request in GitHub\n" -}, -{ - "uri": "https://devsecops-workshop.github.io/devsecops-workshop.github.io-dev/categories/", - "title": "Categories", - "tags": [], - "description": "", - "content": "" -}, -{ - "uri": "https://devsecops-workshop.github.io/devsecops-workshop.github.io-dev/tags/", - "title": "Tags", - "tags": [], - "description": "", - "content": "" -}] \ No newline at end of file diff --git a/index.xml b/index.xml deleted file mode 100644 index 5e40d22..0000000 --- a/index.xml +++ /dev/null @@ -1,13 +0,0 @@ - - - - DRAFT : DevSecOps Workshop - https://devsecops-workshop.github.io/devsecops-workshop.github.io-dev/ - Recent content on DRAFT : DevSecOps Workshop - Hugo -- gohugo.io - - - - - - \ No newline at end of file diff --git a/js/auto-complete.js b/js/auto-complete.js deleted file mode 100644 index 0b46054..0000000 --- a/js/auto-complete.js +++ /dev/null @@ -1,3 +0,0 @@ -// JavaScript autoComplete v1.0.4 -// https://github.com/Pixabay/JavaScript-autoComplete -var autoComplete=function(){function e(e){function t(e,t){return e.classList?e.classList.contains(t):new RegExp("\\b"+t+"\\b").test(e.className)}function o(e,t,o){e.attachEvent?e.attachEvent("on"+t,o):e.addEventListener(t,o)}function s(e,t,o){e.detachEvent?e.detachEvent("on"+t,o):e.removeEventListener(t,o)}function n(e,s,n,l){o(l||document,s,function(o){for(var s,l=o.target||o.srcElement;l&&!(s=t(l,e));)l=l.parentElement;s&&n.call(l,o)})}if(document.querySelector){var l={selector:0,source:0,minChars:3,delay:150,offsetLeft:0,offsetTop:1,cache:1,menuClass:"",renderItem:function(e,t){t=t.replace(/[-\/\\^$*+?.()|[\]{}]/g,"\\$&");var o=new RegExp("("+t.split(" ").join("|")+")","gi");return'
'+e.replace(o,"$1")+"
"},onSelect:function(){}};for(var c in e)e.hasOwnProperty(c)&&(l[c]=e[c]);for(var a="object"==typeof l.selector?[l.selector]:document.querySelectorAll(l.selector),u=0;u0?i.sc.scrollTop=n+i.sc.suggestionHeight+s-i.sc.maxHeight:0>n&&(i.sc.scrollTop=n+s)}else i.sc.scrollTop=0},o(window,"resize",i.updateSC),document.body.appendChild(i.sc),n("autocomplete-suggestion","mouseleave",function(){var e=i.sc.querySelector(".autocomplete-suggestion.selected");e&&setTimeout(function(){e.className=e.className.replace("selected","")},20)},i.sc),n("autocomplete-suggestion","mouseover",function(){var e=i.sc.querySelector(".autocomplete-suggestion.selected");e&&(e.className=e.className.replace("selected","")),this.className+=" selected"},i.sc),n("autocomplete-suggestion","mousedown",function(e){if(t(this,"autocomplete-suggestion")){var o=this.getAttribute("data-val");i.value=o,l.onSelect(e,o,this),i.sc.style.display="none"}},i.sc),i.blurHandler=function(){try{var e=document.querySelector(".autocomplete-suggestions:hover")}catch(t){var e=0}e?i!==document.activeElement&&setTimeout(function(){i.focus()},20):(i.last_val=i.value,i.sc.style.display="none",setTimeout(function(){i.sc.style.display="none"},350))},o(i,"blur",i.blurHandler);var r=function(e){var t=i.value;if(i.cache[t]=e,e.length&&t.length>=l.minChars){for(var o="",s=0;st||t>40)&&13!=t&&27!=t){var o=i.value;if(o.length>=l.minChars){if(o!=i.last_val){if(i.last_val=o,clearTimeout(i.timer),l.cache){if(o in i.cache)return void r(i.cache[o]);for(var s=1;s " + !window.location.search); - if (!window.location.search) { - return; - } - - const urlParams = new URLSearchParams(window.location.search); - const params = new Proxy(urlParams, { - get: (searchParams, prop) => searchParams.get(prop), - }); - - // Replace Domain Placeholder with dynamic parameter 'domain' - const domain = params.domain; - if (domain != null) { - console.log("Replacing domain domain -> " + domain); - var html = document.querySelector("html"); - var walker = document.createTreeWalker(html, NodeFilter.SHOW_TEXT); - var node; - while ((node = walker.nextNode())) { - node.nodeValue = node.nodeValue.replace(//, domain); - } - } - - // Hide Chapters by parameter 'hidechapters' - const chapters = params.hidechapters; - if (chapters != null) { - console.log("Hiding chapters -> " + chapters); - const chaptersArray = chapters.split(":"); - var ul = document.querySelector('[class="topics"]'); - var items = ul.getElementsByTagName("li"); - - for (var i = 0, item; (item = items[i]); ++i) { - if (chaptersArray.includes(i.toString())) { - item.remove(); - } - } - } - // Add Current Query Params to all links - console.log("Adding urlParams -> " + urlParams); - var links = document.getElementsByTagName("a"); - for (var i = 0, link; (link = links[i]); ++i) { - console.log("URL -> " + link.id + " " + link.href); - if (link.id == "skip") continue; - const url = new URL(link.href); - const newUrl = new URL(`${url.origin}${url.pathname}?${urlParams}`); - link.href = newUrl; - } -}; diff --git a/js/featherlight.min.js b/js/featherlight.min.js deleted file mode 100644 index 062e823..0000000 --- a/js/featherlight.min.js +++ /dev/null @@ -1,9 +0,0 @@ -/** - * Featherlight - ultra slim jQuery lightbox - * Version 1.7.13 - http://noelboss.github.io/featherlight/ - * - * Copyright 2018, Noël Raoul Bossart (http://www.noelboss.com) - * MIT Licensed. -**/ -// Modified by OZ -> https://github.com/noelboss/featherlight/issues/317 -!function(u){"use strict";if(void 0!==u)if(u.fn.jquery.match(/-ajax/))"console"in window&&window.console.info("Featherlight needs regular jQuery, not the slim version.");else{var r=[],i=function(t){return r=u.grep(r,function(e){return e!==t&&0','
','",'
'+n.loading+"
","
",""].join("")),o="."+n.namespace+"-close"+(n.otherClose?","+n.otherClose:"");return n.$instance=i.clone().addClass(n.variant),n.$instance.on(n.closeTrigger+"."+n.namespace,function(e){if(!e.isDefaultPrevented()){var t=u(e.target);("background"===n.closeOnClick&&t.is("."+n.namespace)||"anywhere"===n.closeOnClick||t.closest(o).length)&&(n.close(e),e.preventDefault())}}),this},getContent:function(){if(!1!==this.persist&&this.$content)return this.$content;var t=this,e=this.constructor.contentFilters,n=function(e){return t.$currentTarget&&t.$currentTarget.attr(e)},r=n(t.targetAttr),i=t.target||r||"",o=e[t.type];if(!o&&i in e&&(o=e[i],i=t.target&&r),i=i||n("href")||"",!o)for(var a in e)t[a]&&(o=e[a],i=t[a]);if(!o){var s=i;if(i=null,u.each(t.contentFilters,function(){return(o=e[this]).test&&(i=o.test(s)),!i&&o.regex&&s.match&&s.match(o.regex)&&(i=s),!i}),!i)return"console"in window&&window.console.error("Featherlight: no content filter found "+(s?' for "'+s+'"':" (no target specified)")),!1}return o.process.call(t,i)},setContent:function(e){return this.$instance.removeClass(this.namespace+"-loading"),this.$instance.toggleClass(this.namespace+"-iframe",e.is("iframe")),this.$instance.find("."+this.namespace+"-inner").not(e).slice(1).remove().end().replaceWith(u.contains(this.$instance[0],e[0])?"":e),this.$content=e.addClass(this.namespace+"-inner"),this},open:function(t){var n=this;if(n.$instance.hide().appendTo(n.root),!(t&&t.isDefaultPrevented()||!1===n.beforeOpen(t))){t&&t.preventDefault();var e=n.getContent();if(e)return r.push(n),s(!0),n.$instance.fadeIn(n.openSpeed),n.beforeContent(t),u.when(e).always(function(e){n.setContent(e),n.afterContent(t)}).then(n.$instance.promise()).done(function(){n.afterOpen(t)})}return n.$instance.detach(),u.Deferred().reject().promise()},close:function(e){var t=this,n=u.Deferred();return!1===t.beforeClose(e)?n.reject():(0===i(t).length&&s(!1),t.$instance.fadeOut(t.closeSpeed,function(){t.$instance.detach(),t.afterClose(e),n.resolve()})),n.promise()},resize:function(e,t){if(e&&t&&(this.$content.css("width","").css("height",""),this.$content.parent().width()');return n.onload=function(){r.naturalWidth=n.width,r.naturalHeight=n.height,t.resolve(r)},n.onerror=function(){t.reject(r)},n.src=e,t.promise()}},html:{regex:/^\s*<[\w!][^<]*>/,process:function(e){return u(e)}},ajax:{regex:/./,process:function(e){var n=u.Deferred(),r=u("
").load(e,function(e,t){"error"!==t&&n.resolve(r.contents()),n.fail()});return n.promise()}},iframe:{process:function(e){var t=new u.Deferred,n=u("