diff --git a/README.md b/README.md
index 0003858e..ddc1aebd 100644
--- a/README.md
+++ b/README.md
@@ -1,41 +1,57 @@
`drassi`
=======
-The drassi `/δράση/` (Greek for `action`) aim to bring [GitHub Actions](https://github.com/features/actions) to
+Drassi `/δράση/` (Greek for `action`) aims to bring [GitHub Actions](https://github.com/features/actions) to
everyone and everywhere.
-## 1. Use-cases
+> This project is created by human, and for human.
+> Using GenAI tools is allowed but MUST be under human control.
-### 1.1 Alternative to [`actions/runner`](https://github.com/actions/runner) for self-hosted runners
+## Target users
-`actions/runner` executes all jobs within the host environment, making it unsuitable for projects requiring strong
-isolation and security. Additionally, `actions/runner` can only process one job at a time, which means implementing
-autoscaling with self-hosted runners requires additional tools like `actions-runner-controller` (ARC).
+### 1. GitHub users who want faster jobs
-Drassi's `gha-runner` offers a drop-in replacement for `actions/runner`, with enhanced security and isolation. It
-executes each job within a sandboxed environment, providing flexibility by supporting various sandboxing implementations
-such as Docker containers, Incus, or microVMs. These isolated environments enables multiple jobs can be able to run in
-parallel, optimizing both resource utilization and time efficiency.
+GitHub-hosted Actions runners
+are [slow](https://medium.com/@akhilesh-mishra/your-github-actions-runners-are-slow-and-you-are-paying-too-much-for-them-5406577314fe).
+Self-hosted runners can be faster, but each runner is limited to **one job at a time**.
-With Drassi's `gha-runner`, you gain improved job isolation, security, and parallel job execution, significantly
-enhancing your CI/CD pipeline's performance and scalability.
+### 2. Self-hosted runner users who need dynamic scaling
-### 1.2 Run your GitHub Actions locally
+To run multiple jobs in parallel, users often need solutions
+like [Actions Runner Controller (ARC)](https://github.com/actions/actions-runner-controller).
+Many jobs also need Docker access, for example:
-Rather than having to commit/push every time you want to test out the changes you are making to your
-`.github/workflows/` files (or for any changes to embedded GitHub actions), you can use `drassi` CLI to run the actions
-locally.
+* [building images in CI jobs](https://github.com/marketplace/actions/build-and-push-docker-images)
+* [using Docker container actions](https://docs.github.com/en/actions/tutorials/use-containerized-services/create-a-docker-container-action)
+* [running jobs inside containers](https://docs.github.com/en/actions/reference/workflows-and-actions/workflow-syntax#jobsjob_idcontainer)
-### 1.3 Bring GitHub Actions to other git-hosting like `gitea`, `gitlab`,...
+In these use cases, you usually need Docker-in-Docker (`--privileged`) or a mounted Docker socket.
+Both options raise **security concerns** when a runner is shared across multiple teams or tenants.
-If you’re using a self-hosted Git server, such as Gitea or GitLab, but prefer the flexibility, power, and extensive
-ecosystem of GitHub Actions, Drassi provides solutions like `gitea-runner` and `gitlab-runner` to integrate seamlessly
-with your Git server. Drassi is also a customizable framework, allowing you to tailor or bring your own runner to suit
-your specific needs.
+### 3. GitLab, Gitea, and other users who want GitHub Actions
-## 2. Architecture
+Many teams want the GitHub Actions model because it provides:
+
+* composable steps
+* multiple workflows
+* reusable jobs
+* a large actions ecosystem
+
+However, `actions/runner` is designed to work with GitHub servers. `act`-based runners can support GitHub-like servers,
+such as Gitea, but they are not fully compatible with the GitHub runner and miss features like problem matchers and
+issue reporting.
+
+### 4. Users who want to run jobs locally
+
+Running jobs locally reduces the feedback loop before pushing to a Git server or debugging CI failures.
+
+## Architecture

+Drassi supports multiple runners, including GitHub, Gitea, and GitLab, from a shared core.
+Each job runs in a sandboxed environment, with multiple sandboxers available to match different isolation, security, and
+performance needs.
+
## 3. Usage
### 3.1 `drassi` CLI
diff --git a/docs/architecture.excalidraw b/docs/architecture.excalidraw
index 8a331094..b43206a7 100644
--- a/docs/architecture.excalidraw
+++ b/docs/architecture.excalidraw
@@ -22,13 +22,13 @@
"mx-5Q64x-IoiQZwWxykVa"
],
"frameId": null,
- "index": "aF",
+ "index": "aX2",
"roundness": {
"type": 3
},
"seed": 1801127985,
- "version": 446,
- "versionNonce": 1335344386,
+ "version": 447,
+ "versionNonce": 1153303954,
"isDeleted": false,
"boundElements": [
{
@@ -68,7 +68,7 @@
"type": "arrow"
}
],
- "updated": 1733369097574,
+ "updated": 1782292022771,
"link": null,
"locked": false
},
@@ -91,14 +91,14 @@
"mx-5Q64x-IoiQZwWxykVa"
],
"frameId": null,
- "index": "aG",
+ "index": "aX4",
"roundness": null,
"seed": 473319889,
- "version": 314,
- "versionNonce": 189895298,
+ "version": 315,
+ "versionNonce": 1916556430,
"isDeleted": false,
"boundElements": [],
- "updated": 1733368397254,
+ "updated": 1782292022771,
"link": null,
"locked": false,
"text": " Drassi core",
@@ -113,8 +113,8 @@
},
{
"type": "ellipse",
- "version": 450,
- "versionNonce": 1787488834,
+ "version": 451,
+ "versionNonce": 499876690,
"isDeleted": false,
"id": "AQJhnyBiu7C0b_cKRH3qa",
"fillStyle": "cross-hatch",
@@ -134,19 +134,18 @@
"tsJCGdHQgWcZcdIkMucAQ",
"mx-5Q64x-IoiQZwWxykVa"
],
- "strokeSharpness": "sharp",
"boundElements": [],
- "updated": 1733367849675,
+ "updated": 1782292022771,
"link": null,
- "index": "aH",
+ "index": "aX8",
"frameId": null,
"roundness": null,
"locked": false
},
{
"type": "ellipse",
- "version": 521,
- "versionNonce": 128013022,
+ "version": 522,
+ "versionNonce": 421434062,
"isDeleted": false,
"id": "UpjKv5ZgyxTFONCpZ4HE8",
"fillStyle": "solid",
@@ -166,19 +165,18 @@
"tsJCGdHQgWcZcdIkMucAQ",
"mx-5Q64x-IoiQZwWxykVa"
],
- "strokeSharpness": "sharp",
"boundElements": [],
- "updated": 1733367849675,
+ "updated": 1782292022771,
"link": null,
- "index": "aI",
+ "index": "aXC",
"frameId": null,
"roundness": null,
"locked": false
},
{
"type": "ellipse",
- "version": 403,
- "versionNonce": 1006129666,
+ "version": 404,
+ "versionNonce": 2078492946,
"isDeleted": false,
"id": "cjfKIVfp-kLoQMUFu4cSA",
"fillStyle": "cross-hatch",
@@ -198,19 +196,18 @@
"tsJCGdHQgWcZcdIkMucAQ",
"mx-5Q64x-IoiQZwWxykVa"
],
- "strokeSharpness": "sharp",
"boundElements": [],
- "updated": 1733367849675,
+ "updated": 1782292022771,
"link": null,
- "index": "aJ",
+ "index": "aXG",
"frameId": null,
"roundness": null,
"locked": false
},
{
"type": "ellipse",
- "version": 439,
- "versionNonce": 1542407966,
+ "version": 440,
+ "versionNonce": 496961806,
"isDeleted": false,
"id": "bCt2dOWFPO3BMJPDn2rDD",
"fillStyle": "solid",
@@ -230,19 +227,18 @@
"tsJCGdHQgWcZcdIkMucAQ",
"mx-5Q64x-IoiQZwWxykVa"
],
- "strokeSharpness": "sharp",
"boundElements": [],
- "updated": 1733367849675,
+ "updated": 1782292022771,
"link": null,
- "index": "aK",
+ "index": "aXI",
"frameId": null,
"roundness": null,
"locked": false
},
{
"type": "ellipse",
- "version": 441,
- "versionNonce": 316850626,
+ "version": 442,
+ "versionNonce": 1450989266,
"isDeleted": false,
"id": "6FVHC5qdlAk7R_kZQuYbH",
"fillStyle": "cross-hatch",
@@ -262,19 +258,18 @@
"tsJCGdHQgWcZcdIkMucAQ",
"mx-5Q64x-IoiQZwWxykVa"
],
- "strokeSharpness": "sharp",
"boundElements": [],
- "updated": 1733367849675,
+ "updated": 1782292022771,
"link": null,
- "index": "aL",
+ "index": "aXK",
"frameId": null,
"roundness": null,
"locked": false
},
{
"type": "ellipse",
- "version": 471,
- "versionNonce": 318026590,
+ "version": 472,
+ "versionNonce": 523679566,
"isDeleted": false,
"id": "0wI1fDtpKvdD8Xtem_lXa",
"fillStyle": "solid",
@@ -294,19 +289,18 @@
"tsJCGdHQgWcZcdIkMucAQ",
"mx-5Q64x-IoiQZwWxykVa"
],
- "strokeSharpness": "sharp",
"boundElements": [],
- "updated": 1733367849675,
+ "updated": 1782292022771,
"link": null,
- "index": "aM",
+ "index": "aXO",
"frameId": null,
"roundness": null,
"locked": false
},
{
"type": "line",
- "version": 711,
- "versionNonce": 1248409986,
+ "version": 712,
+ "versionNonce": 506309778,
"isDeleted": false,
"id": "CyRmWX8QERwYNS1j-cmMc",
"fillStyle": "cross-hatch",
@@ -326,9 +320,8 @@
"tsJCGdHQgWcZcdIkMucAQ",
"mx-5Q64x-IoiQZwWxykVa"
],
- "strokeSharpness": "round",
"boundElements": [],
- "updated": 1733367849675,
+ "updated": 1782292022771,
"link": null,
"startBinding": null,
"endBinding": null,
@@ -353,17 +346,18 @@
0
]
],
- "index": "aN",
+ "index": "aXS",
"frameId": null,
"roundness": {
"type": 2
},
- "locked": false
+ "locked": false,
+ "polygon": false
},
{
"type": "line",
- "version": 757,
- "versionNonce": 1459787678,
+ "version": 758,
+ "versionNonce": 1715379598,
"isDeleted": false,
"id": "QsvQiUfd3cHZBRal_o5mU",
"fillStyle": "solid",
@@ -383,9 +377,8 @@
"tsJCGdHQgWcZcdIkMucAQ",
"mx-5Q64x-IoiQZwWxykVa"
],
- "strokeSharpness": "round",
"boundElements": [],
- "updated": 1733367849675,
+ "updated": 1782292022771,
"link": null,
"startBinding": null,
"endBinding": null,
@@ -410,17 +403,18 @@
0
]
],
- "index": "aO",
+ "index": "aXV",
"frameId": null,
"roundness": {
"type": 2
},
- "locked": false
+ "locked": false,
+ "polygon": false
},
{
"type": "line",
- "version": 501,
- "versionNonce": 30062914,
+ "version": 502,
+ "versionNonce": 414075474,
"isDeleted": false,
"id": "XKx0XlmpbEYNX_OchHcSb",
"fillStyle": "solid",
@@ -440,9 +434,8 @@
"tsJCGdHQgWcZcdIkMucAQ",
"mx-5Q64x-IoiQZwWxykVa"
],
- "strokeSharpness": "round",
"boundElements": [],
- "updated": 1733367849675,
+ "updated": 1782292022771,
"link": null,
"startBinding": null,
"endBinding": null,
@@ -463,17 +456,18 @@
29.52634490770754
]
],
- "index": "aP",
+ "index": "aXX",
"frameId": null,
"roundness": {
"type": 2
},
- "locked": false
+ "locked": false,
+ "polygon": false
},
{
"type": "line",
- "version": 633,
- "versionNonce": 1615459294,
+ "version": 634,
+ "versionNonce": 1206893518,
"isDeleted": false,
"id": "50qj9AwnSIbT4X6ymIc4K",
"fillStyle": "cross-hatch",
@@ -493,9 +487,8 @@
"tsJCGdHQgWcZcdIkMucAQ",
"mx-5Q64x-IoiQZwWxykVa"
],
- "strokeSharpness": "round",
"boundElements": [],
- "updated": 1733367849675,
+ "updated": 1782292022771,
"link": null,
"startBinding": null,
"endBinding": null,
@@ -524,17 +517,18 @@
4.011930767938009
]
],
- "index": "aQ",
+ "index": "aXZ",
"frameId": null,
"roundness": {
"type": 2
},
- "locked": false
+ "locked": false,
+ "polygon": false
},
{
"type": "ellipse",
- "version": 403,
- "versionNonce": 409354498,
+ "version": 404,
+ "versionNonce": 1020604434,
"isDeleted": false,
"id": "d8YFIxxfuV520e1HlpdCa",
"fillStyle": "cross-hatch",
@@ -554,19 +548,18 @@
"tsJCGdHQgWcZcdIkMucAQ",
"mx-5Q64x-IoiQZwWxykVa"
],
- "strokeSharpness": "sharp",
"boundElements": [],
- "updated": 1733367849675,
+ "updated": 1782292022771,
"link": null,
- "index": "aR",
+ "index": "aXd",
"frameId": null,
"roundness": null,
"locked": false
},
{
"type": "ellipse",
- "version": 440,
- "versionNonce": 953927710,
+ "version": 441,
+ "versionNonce": 174264846,
"isDeleted": false,
"id": "1GSw4w2HuREfgVHvhwgBf",
"fillStyle": "solid",
@@ -586,19 +579,18 @@
"tsJCGdHQgWcZcdIkMucAQ",
"mx-5Q64x-IoiQZwWxykVa"
],
- "strokeSharpness": "sharp",
"boundElements": [],
- "updated": 1733367849675,
+ "updated": 1782292022771,
"link": null,
- "index": "aS",
+ "index": "aXh",
"frameId": null,
"roundness": null,
"locked": false
},
{
"type": "ellipse",
- "version": 449,
- "versionNonce": 700108994,
+ "version": 450,
+ "versionNonce": 244932050,
"isDeleted": false,
"id": "y8jY03Vw4I8yqBE6Z86b_",
"fillStyle": "cross-hatch",
@@ -618,19 +610,18 @@
"tsJCGdHQgWcZcdIkMucAQ",
"mx-5Q64x-IoiQZwWxykVa"
],
- "strokeSharpness": "sharp",
"boundElements": [],
- "updated": 1733367849675,
+ "updated": 1782292022771,
"link": null,
- "index": "aT",
+ "index": "aXl",
"frameId": null,
"roundness": null,
"locked": false
},
{
"type": "ellipse",
- "version": 486,
- "versionNonce": 11080798,
+ "version": 487,
+ "versionNonce": 1217503310,
"isDeleted": false,
"id": "I07-STAHdxCamkIP2Y2Yz",
"fillStyle": "solid",
@@ -650,19 +641,18 @@
"tsJCGdHQgWcZcdIkMucAQ",
"mx-5Q64x-IoiQZwWxykVa"
],
- "strokeSharpness": "sharp",
"boundElements": [],
- "updated": 1733367849675,
+ "updated": 1782292022771,
"link": null,
- "index": "aU",
+ "index": "aXn",
"frameId": null,
"roundness": null,
"locked": false
},
{
"type": "line",
- "version": 432,
- "versionNonce": 157771906,
+ "version": 433,
+ "versionNonce": 2064765842,
"isDeleted": false,
"id": "Rr6fprH5t9dCE6TZFyCa6",
"fillStyle": "solid",
@@ -682,9 +672,8 @@
"tsJCGdHQgWcZcdIkMucAQ",
"mx-5Q64x-IoiQZwWxykVa"
],
- "strokeSharpness": "round",
"boundElements": [],
- "updated": 1733367849675,
+ "updated": 1782292022771,
"link": null,
"startBinding": null,
"endBinding": null,
@@ -701,17 +690,18 @@
0.2468541974995875
]
],
- "index": "aV",
+ "index": "aXp",
"frameId": null,
"roundness": {
"type": 2
},
- "locked": false
+ "locked": false,
+ "polygon": false
},
{
"type": "line",
- "version": 445,
- "versionNonce": 830658718,
+ "version": 446,
+ "versionNonce": 1448371854,
"isDeleted": false,
"id": "CZYS4Gf16Grj0b6spAg43",
"fillStyle": "cross-hatch",
@@ -731,9 +721,8 @@
"tsJCGdHQgWcZcdIkMucAQ",
"mx-5Q64x-IoiQZwWxykVa"
],
- "strokeSharpness": "sharp",
"boundElements": [],
- "updated": 1733367849675,
+ "updated": 1782292022771,
"link": null,
"lastCommittedPoint": null,
"startArrowhead": null,
@@ -936,17 +925,18 @@
0
]
],
- "index": "aW",
+ "index": "aXt",
"frameId": null,
"roundness": null,
"locked": false,
"startBinding": null,
- "endBinding": null
+ "endBinding": null,
+ "polygon": false
},
{
"type": "line",
- "version": 481,
- "versionNonce": 1059784770,
+ "version": 482,
+ "versionNonce": 880120146,
"isDeleted": false,
"id": "7GaKTymKQawEh6Q3pIYz4",
"fillStyle": "cross-hatch",
@@ -966,9 +956,8 @@
"tsJCGdHQgWcZcdIkMucAQ",
"mx-5Q64x-IoiQZwWxykVa"
],
- "strokeSharpness": "sharp",
"boundElements": [],
- "updated": 1733367849675,
+ "updated": 1782292022771,
"link": null,
"lastCommittedPoint": null,
"startArrowhead": null,
@@ -1171,12 +1160,13 @@
0
]
],
- "index": "aX",
+ "index": "aXx",
"frameId": null,
"roundness": null,
"locked": false,
"startBinding": null,
- "endBinding": null
+ "endBinding": null,
+ "polygon": false
},
{
"type": "line",
@@ -1201,7 +1191,6 @@
"tsJCGdHQgWcZcdIkMucAQ",
"mx-5Q64x-IoiQZwWxykVa"
],
- "strokeSharpness": "round",
"boundElements": [],
"updated": 1733367849675,
"link": null,
@@ -1225,7 +1214,8 @@
"roundness": {
"type": 2
},
- "locked": false
+ "locked": false,
+ "polygon": false
},
{
"type": "ellipse",
@@ -1251,7 +1241,6 @@
"tsJCGdHQgWcZcdIkMucAQ",
"mx-5Q64x-IoiQZwWxykVa"
],
- "strokeSharpness": "sharp",
"boundElements": [],
"updated": 1733367849675,
"link": null,
@@ -1284,7 +1273,6 @@
"tsJCGdHQgWcZcdIkMucAQ",
"mx-5Q64x-IoiQZwWxykVa"
],
- "strokeSharpness": "sharp",
"boundElements": [],
"updated": 1733367849675,
"link": null,
@@ -1396,7 +1384,6 @@
"N5BP9VkFF41U1Ld-eWAAQ",
"CEUiw9xtO5dPh07xJHlHo"
],
- "strokeSharpness": "sharp",
"boundElements": [],
"updated": 1733368343473,
"link": null,
@@ -1790,7 +1777,8 @@
"roundness": null,
"locked": false,
"startBinding": null,
- "endBinding": null
+ "endBinding": null,
+ "polygon": false
},
{
"type": "line",
@@ -1815,7 +1803,6 @@
"N5BP9VkFF41U1Ld-eWAAQ",
"CEUiw9xtO5dPh07xJHlHo"
],
- "strokeSharpness": "sharp",
"boundElements": [],
"updated": 1733368343473,
"link": null,
@@ -1965,7 +1952,8 @@
"roundness": null,
"locked": false,
"startBinding": null,
- "endBinding": null
+ "endBinding": null,
+ "polygon": false
},
{
"type": "rectangle",
@@ -1990,7 +1978,6 @@
"N5BP9VkFF41U1Ld-eWAAQ",
"CEUiw9xtO5dPh07xJHlHo"
],
- "strokeSharpness": "round",
"boundElements": [],
"updated": 1733368343473,
"link": null,
@@ -2025,7 +2012,6 @@
"N5BP9VkFF41U1Ld-eWAAQ",
"CEUiw9xtO5dPh07xJHlHo"
],
- "strokeSharpness": "sharp",
"boundElements": [],
"updated": 1733368343473,
"link": null,
@@ -2059,7 +2045,8 @@
"roundness": null,
"locked": false,
"startBinding": null,
- "endBinding": null
+ "endBinding": null,
+ "polygon": false
},
{
"type": "line",
@@ -2085,7 +2072,6 @@
"N5BP9VkFF41U1Ld-eWAAQ",
"CEUiw9xtO5dPh07xJHlHo"
],
- "strokeSharpness": "sharp",
"boundElements": [],
"updated": 1733368343473,
"link": null,
@@ -2171,7 +2157,8 @@
"roundness": null,
"locked": false,
"startBinding": null,
- "endBinding": null
+ "endBinding": null,
+ "polygon": false
},
{
"type": "line",
@@ -2197,7 +2184,6 @@
"N5BP9VkFF41U1Ld-eWAAQ",
"CEUiw9xtO5dPh07xJHlHo"
],
- "strokeSharpness": "sharp",
"boundElements": [],
"updated": 1733368343473,
"link": null,
@@ -2231,7 +2217,8 @@
"roundness": null,
"locked": false,
"startBinding": null,
- "endBinding": null
+ "endBinding": null,
+ "polygon": false
},
{
"type": "ellipse",
@@ -2257,7 +2244,6 @@
"N5BP9VkFF41U1Ld-eWAAQ",
"CEUiw9xtO5dPh07xJHlHo"
],
- "strokeSharpness": "sharp",
"boundElements": [],
"updated": 1733368343473,
"link": null,
@@ -2290,7 +2276,6 @@
"N5BP9VkFF41U1Ld-eWAAQ",
"CEUiw9xtO5dPh07xJHlHo"
],
- "strokeSharpness": "sharp",
"boundElements": [],
"updated": 1733368343474,
"link": null,
@@ -2323,7 +2308,6 @@
"N5BP9VkFF41U1Ld-eWAAQ",
"CEUiw9xtO5dPh07xJHlHo"
],
- "strokeSharpness": "sharp",
"boundElements": [],
"updated": 1733368343474,
"link": null,
@@ -2437,7 +2421,6 @@
"PpU5JBbu3LHRSikKHOo-O",
"URtXVuQKruCwOpqeU_9p9"
],
- "strokeSharpness": "sharp",
"boundElements": [],
"updated": 1733369058350,
"link": null,
@@ -3015,7 +2998,8 @@
"roundness": null,
"locked": false,
"startBinding": null,
- "endBinding": null
+ "endBinding": null,
+ "polygon": false
},
{
"type": "line",
@@ -3041,7 +3025,6 @@
"PpU5JBbu3LHRSikKHOo-O",
"URtXVuQKruCwOpqeU_9p9"
],
- "strokeSharpness": "sharp",
"boundElements": [],
"updated": 1733369058350,
"link": null,
@@ -3079,7 +3062,8 @@
"roundness": null,
"locked": false,
"startBinding": null,
- "endBinding": null
+ "endBinding": null,
+ "polygon": false
},
{
"type": "line",
@@ -3105,7 +3089,6 @@
"PpU5JBbu3LHRSikKHOo-O",
"URtXVuQKruCwOpqeU_9p9"
],
- "strokeSharpness": "sharp",
"boundElements": [],
"updated": 1733369058350,
"link": null,
@@ -3143,7 +3126,8 @@
"roundness": null,
"locked": false,
"startBinding": null,
- "endBinding": null
+ "endBinding": null,
+ "polygon": false
},
{
"type": "line",
@@ -3169,7 +3153,6 @@
"PpU5JBbu3LHRSikKHOo-O",
"URtXVuQKruCwOpqeU_9p9"
],
- "strokeSharpness": "sharp",
"boundElements": [],
"updated": 1733369058350,
"link": null,
@@ -3207,7 +3190,8 @@
"roundness": null,
"locked": false,
"startBinding": null,
- "endBinding": null
+ "endBinding": null,
+ "polygon": false
},
{
"type": "line",
@@ -3233,7 +3217,6 @@
"PpU5JBbu3LHRSikKHOo-O",
"URtXVuQKruCwOpqeU_9p9"
],
- "strokeSharpness": "sharp",
"boundElements": [],
"updated": 1733369058350,
"link": null,
@@ -3271,7 +3254,8 @@
"roundness": null,
"locked": false,
"startBinding": null,
- "endBinding": null
+ "endBinding": null,
+ "polygon": false
},
{
"type": "line",
@@ -3297,7 +3281,6 @@
"PpU5JBbu3LHRSikKHOo-O",
"URtXVuQKruCwOpqeU_9p9"
],
- "strokeSharpness": "sharp",
"boundElements": [],
"updated": 1733369058350,
"link": null,
@@ -3335,7 +3318,8 @@
"roundness": null,
"locked": false,
"startBinding": null,
- "endBinding": null
+ "endBinding": null,
+ "polygon": false
},
{
"type": "line",
@@ -3361,7 +3345,6 @@
"PpU5JBbu3LHRSikKHOo-O",
"URtXVuQKruCwOpqeU_9p9"
],
- "strokeSharpness": "sharp",
"boundElements": [],
"updated": 1733369058350,
"link": null,
@@ -3399,7 +3382,8 @@
"roundness": null,
"locked": false,
"startBinding": null,
- "endBinding": null
+ "endBinding": null,
+ "polygon": false
},
{
"type": "line",
@@ -3425,7 +3409,6 @@
"PpU5JBbu3LHRSikKHOo-O",
"URtXVuQKruCwOpqeU_9p9"
],
- "strokeSharpness": "sharp",
"boundElements": [],
"updated": 1733369058350,
"link": null,
@@ -3463,7 +3446,8 @@
"roundness": null,
"locked": false,
"startBinding": null,
- "endBinding": null
+ "endBinding": null,
+ "polygon": false
},
{
"type": "line",
@@ -3489,7 +3473,6 @@
"PpU5JBbu3LHRSikKHOo-O",
"URtXVuQKruCwOpqeU_9p9"
],
- "strokeSharpness": "sharp",
"boundElements": [],
"updated": 1733369058350,
"link": null,
@@ -3527,7 +3510,8 @@
"roundness": null,
"locked": false,
"startBinding": null,
- "endBinding": null
+ "endBinding": null,
+ "polygon": false
},
{
"type": "line",
@@ -3554,7 +3538,6 @@
"PpU5JBbu3LHRSikKHOo-O",
"URtXVuQKruCwOpqeU_9p9"
],
- "strokeSharpness": "sharp",
"boundElements": [],
"updated": 1733369058350,
"link": null,
@@ -3672,7 +3655,8 @@
"roundness": null,
"locked": false,
"startBinding": null,
- "endBinding": null
+ "endBinding": null,
+ "polygon": false
},
{
"type": "line",
@@ -3697,7 +3681,6 @@
"PpU5JBbu3LHRSikKHOo-O",
"URtXVuQKruCwOpqeU_9p9"
],
- "strokeSharpness": "sharp",
"boundElements": [],
"updated": 1733369058350,
"link": null,
@@ -4147,7 +4130,8 @@
"roundness": null,
"locked": false,
"startBinding": null,
- "endBinding": null
+ "endBinding": null,
+ "polygon": false
},
{
"id": "OYz_Dn3DJiRHN1psntrFb",
@@ -4249,7 +4233,6 @@
"GFjFvRBVqgFajgeGcFjPO",
"VqN-gIVjXYaqoeoaRKjbl"
],
- "strokeSharpness": "sharp",
"boundElements": [],
"updated": 1733368350306,
"link": null,
@@ -4283,7 +4266,8 @@
"roundness": null,
"locked": false,
"startBinding": null,
- "endBinding": null
+ "endBinding": null,
+ "polygon": false
},
{
"type": "line",
@@ -4309,7 +4293,6 @@
"GFjFvRBVqgFajgeGcFjPO",
"VqN-gIVjXYaqoeoaRKjbl"
],
- "strokeSharpness": "sharp",
"boundElements": [],
"updated": 1733368350306,
"link": null,
@@ -4343,7 +4326,8 @@
"roundness": null,
"locked": false,
"startBinding": null,
- "endBinding": null
+ "endBinding": null,
+ "polygon": false
},
{
"type": "line",
@@ -4369,7 +4353,6 @@
"GFjFvRBVqgFajgeGcFjPO",
"VqN-gIVjXYaqoeoaRKjbl"
],
- "strokeSharpness": "sharp",
"boundElements": [],
"updated": 1733368350306,
"link": null,
@@ -4439,7 +4422,8 @@
"roundness": null,
"locked": false,
"startBinding": null,
- "endBinding": null
+ "endBinding": null,
+ "polygon": false
},
{
"type": "line",
@@ -4465,7 +4449,6 @@
"GFjFvRBVqgFajgeGcFjPO",
"VqN-gIVjXYaqoeoaRKjbl"
],
- "strokeSharpness": "sharp",
"boundElements": [],
"updated": 1733368350306,
"link": null,
@@ -4535,7 +4518,8 @@
"roundness": null,
"locked": false,
"startBinding": null,
- "endBinding": null
+ "endBinding": null,
+ "polygon": false
},
{
"type": "line",
@@ -4561,7 +4545,6 @@
"GFjFvRBVqgFajgeGcFjPO",
"VqN-gIVjXYaqoeoaRKjbl"
],
- "strokeSharpness": "sharp",
"boundElements": [],
"updated": 1733368350306,
"link": null,
@@ -4595,7 +4578,8 @@
"roundness": null,
"locked": false,
"startBinding": null,
- "endBinding": null
+ "endBinding": null,
+ "polygon": false
},
{
"type": "line",
@@ -4621,7 +4605,6 @@
"GFjFvRBVqgFajgeGcFjPO",
"VqN-gIVjXYaqoeoaRKjbl"
],
- "strokeSharpness": "sharp",
"boundElements": [],
"updated": 1733368350306,
"link": null,
@@ -4691,7 +4674,8 @@
"roundness": null,
"locked": false,
"startBinding": null,
- "endBinding": null
+ "endBinding": null,
+ "polygon": false
},
{
"type": "line",
@@ -4717,7 +4701,6 @@
"GFjFvRBVqgFajgeGcFjPO",
"VqN-gIVjXYaqoeoaRKjbl"
],
- "strokeSharpness": "sharp",
"boundElements": [],
"updated": 1733368350306,
"link": null,
@@ -4787,7 +4770,8 @@
"roundness": null,
"locked": false,
"startBinding": null,
- "endBinding": null
+ "endBinding": null,
+ "polygon": false
},
{
"id": "IeKgneW--Val4qwToblBi",
@@ -5284,7 +5268,8 @@
0,
0
]
- ]
+ ],
+ "polygon": false
},
{
"id": "ejrz2KaguoHEkjHVNpDmO",
@@ -5384,16 +5369,16 @@
"type": 3
},
"seed": 978869026,
- "version": 458,
- "versionNonce": 1811986078,
- "isDeleted": false,
+ "version": 459,
+ "versionNonce": 1701748306,
+ "isDeleted": true,
"boundElements": [
{
"type": "text",
"id": "jG9WPmC56a5XPeJKCucH6"
}
],
- "updated": 1733368967952,
+ "updated": 1782292028780,
"link": null,
"locked": false
},
@@ -5417,11 +5402,11 @@
"index": "b0v",
"roundness": null,
"seed": 379889378,
- "version": 444,
- "versionNonce": 1945545346,
- "isDeleted": false,
+ "version": 445,
+ "versionNonce": 1695459278,
+ "isDeleted": true,
"boundElements": [],
- "updated": 1733368967952,
+ "updated": 1782292028780,
"link": null,
"locked": false,
"text": "WIP",
@@ -5475,16 +5460,20 @@
],
"lastCommittedPoint": null,
"startBinding": {
+ "mode": "orbit",
"elementId": "5f5J-9mOw1MprjZ6-ZHvY",
- "focus": -0.4870933810014231,
- "gap": 5.5000025431314725,
- "fixedPoint": null
+ "fixedPoint": [
+ 1.0000000000000002,
+ 0.5001
+ ]
},
"endBinding": {
+ "mode": "orbit",
"elementId": "J6K94XitOqfMM-oi2Gu2L",
- "focus": -0.4642875920934128,
- "gap": 7.349998474121264,
- "fixedPoint": null
+ "fixedPoint": [
+ 0.40702968332344597,
+ 0.5929703166765533
+ ]
},
"startArrowhead": null,
"endArrowhead": "arrow",
@@ -5535,16 +5524,20 @@
],
"lastCommittedPoint": null,
"startBinding": {
+ "mode": "orbit",
"elementId": "J6K94XitOqfMM-oi2Gu2L",
- "focus": -0.5052026971309512,
- "gap": 5.937350069573256,
- "fixedPoint": null
+ "fixedPoint": [
+ 0.8504494479872807,
+ 0.8504494479872806
+ ]
},
"endBinding": {
+ "mode": "orbit",
"elementId": "ldQhm07d_-k9cp06z8Gr0",
- "focus": -0.7973349081973792,
- "gap": 5.6171589174177825,
- "fixedPoint": null
+ "fixedPoint": [
+ 0,
+ 0.5001
+ ]
},
"startArrowhead": null,
"endArrowhead": "arrow",
@@ -5801,7 +5794,7 @@
"version": 51,
"versionNonce": 1311784990,
"isDeleted": false,
- "boundElements": null,
+ "boundElements": [],
"updated": 1733368397256,
"link": null,
"locked": false,
@@ -5817,16 +5810,20 @@
],
"lastCommittedPoint": null,
"startBinding": {
+ "mode": "orbit",
"elementId": "6WWz3Ij3u-_5Mfci8bIf5",
- "focus": 0.7631313097152825,
- "gap": 6.929684087650003,
- "fixedPoint": null
+ "fixedPoint": [
+ 1.0000000000000002,
+ 0.5001
+ ]
},
"endBinding": {
+ "mode": "orbit",
"elementId": "J6K94XitOqfMM-oi2Gu2L",
- "focus": 0.6457148590031835,
- "gap": 5.338775617425711,
- "fixedPoint": null
+ "fixedPoint": [
+ 0.32396664530021896,
+ 0.32396664530021924
+ ]
},
"startArrowhead": null,
"endArrowhead": "arrow",
@@ -5857,7 +5854,7 @@
"version": 79,
"versionNonce": 975260958,
"isDeleted": false,
- "boundElements": null,
+ "boundElements": [],
"updated": 1733368409813,
"link": null,
"locked": false,
@@ -5877,16 +5874,20 @@
],
"lastCommittedPoint": null,
"startBinding": {
+ "mode": "orbit",
"elementId": "IeKgneW--Val4qwToblBi",
- "focus": 0.813496973878991,
- "gap": 5.298596870154256,
- "fixedPoint": null
+ "fixedPoint": [
+ 1,
+ 0.5001
+ ]
},
"endBinding": {
+ "mode": "orbit",
"elementId": "J6K94XitOqfMM-oi2Gu2L",
- "focus": 0.5657476576120634,
- "gap": 3.364270123541189,
- "fixedPoint": null
+ "fixedPoint": [
+ 0.11360733222315209,
+ 0.8863926677768478
+ ]
},
"startArrowhead": null,
"endArrowhead": "arrow",
@@ -5917,7 +5918,7 @@
"version": 57,
"versionNonce": 1489393694,
"isDeleted": false,
- "boundElements": null,
+ "boundElements": [],
"updated": 1733368895781,
"link": null,
"locked": false,
@@ -5937,16 +5938,20 @@
],
"lastCommittedPoint": null,
"startBinding": {
+ "mode": "orbit",
"elementId": "IALsU3nQ6m_828PiOyfWD",
- "focus": -0.7879009083635357,
- "gap": 5.79859687015437,
- "fixedPoint": null
+ "fixedPoint": [
+ 1.0000000000000002,
+ 0.5001
+ ]
},
"endBinding": {
+ "mode": "orbit",
"elementId": "J6K94XitOqfMM-oi2Gu2L",
- "focus": -0.5803456327594292,
- "gap": 5.601065335980053,
- "fixedPoint": null
+ "fixedPoint": [
+ 0.1037749263259829,
+ 0.10377492632598322
+ ]
},
"startArrowhead": null,
"endArrowhead": "arrow",
@@ -5977,7 +5982,7 @@
"version": 64,
"versionNonce": 680907166,
"isDeleted": false,
- "boundElements": null,
+ "boundElements": [],
"updated": 1733369088022,
"link": null,
"locked": false,
@@ -5997,16 +6002,20 @@
],
"lastCommittedPoint": null,
"startBinding": {
+ "mode": "orbit",
"elementId": "J6K94XitOqfMM-oi2Gu2L",
- "focus": 0.521980584333917,
- "gap": 6.019464937724479,
- "fixedPoint": null
+ "fixedPoint": [
+ 0.8598284002876371,
+ 0.14017159971236245
+ ]
},
"endBinding": {
+ "mode": "orbit",
"elementId": "OYz_Dn3DJiRHN1psntrFb",
- "focus": 0.8049039490459903,
- "gap": 5.363538798274476,
- "fixedPoint": null
+ "fixedPoint": [
+ 0,
+ 0.5001
+ ]
},
"startArrowhead": null,
"endArrowhead": "arrow",
@@ -6037,7 +6046,7 @@
"version": 49,
"versionNonce": 1123869378,
"isDeleted": false,
- "boundElements": null,
+ "boundElements": [],
"updated": 1733369107344,
"link": null,
"locked": false,
@@ -6053,16 +6062,20 @@
],
"lastCommittedPoint": null,
"startBinding": {
+ "mode": "orbit",
"elementId": "J6K94XitOqfMM-oi2Gu2L",
- "focus": 0.5161280695331992,
- "gap": 8.370123866504684,
- "fixedPoint": null
+ "fixedPoint": [
+ 0.5351704943992864,
+ 0.5351704943992869
+ ]
},
"endBinding": {
+ "mode": "orbit",
"elementId": "BafIO1yB00AzGUMEtTFki",
- "focus": 0.734934665387965,
- "gap": 1,
- "fixedPoint": null
+ "fixedPoint": [
+ 0,
+ 0.5001
+ ]
},
"startArrowhead": null,
"endArrowhead": "arrow",
@@ -6093,7 +6106,7 @@
"version": 58,
"versionNonce": 1419189982,
"isDeleted": false,
- "boundElements": null,
+ "boundElements": [],
"updated": 1733369102409,
"link": null,
"locked": false,
@@ -6109,16 +6122,20 @@
],
"lastCommittedPoint": null,
"startBinding": {
+ "mode": "orbit",
"elementId": "J6K94XitOqfMM-oi2Gu2L",
- "focus": -0.4655765192906133,
- "gap": 7.152961388702636,
- "fixedPoint": null
+ "fixedPoint": [
+ 0.5512023036740659,
+ 0.44879769632593386
+ ]
},
"endBinding": {
+ "mode": "orbit",
"elementId": "ejrz2KaguoHEkjHVNpDmO",
- "focus": -0.6334389167431277,
- "gap": 3.429213842670606,
- "fixedPoint": null
+ "fixedPoint": [
+ 0,
+ 0.5001
+ ]
},
"startArrowhead": null,
"endArrowhead": "arrow",
@@ -6273,7 +6290,8 @@
"gridSize": 20,
"gridStep": 5,
"gridModeEnabled": false,
- "viewBackgroundColor": "#ffffff"
+ "viewBackgroundColor": "#ffffff",
+ "lockedMultiSelections": {}
},
"files": {}
}
\ No newline at end of file
diff --git a/docs/architecture.svg b/docs/architecture.svg
index a7a585b4..7f22f63e 100644
--- a/docs/architecture.svg
+++ b/docs/architecture.svg
@@ -1,11 +1,5 @@
-
\ No newline at end of file
+
+
+
\ No newline at end of file
diff --git a/docs/executor.excalidraw b/docs/executor.excalidraw
new file mode 100644
index 00000000..dfb301b0
--- /dev/null
+++ b/docs/executor.excalidraw
@@ -0,0 +1,2353 @@
+{
+ "type": "excalidraw",
+ "version": 2,
+ "source": "https://excalidraw.com",
+ "elements": [
+ {
+ "id": "LBYf82p6ktgQddPKUjfGt",
+ "type": "rectangle",
+ "x": 404.2451171875,
+ "y": 289.1455078125,
+ "width": 227.5,
+ "height": 96.67578125,
+ "angle": 0,
+ "strokeColor": "#2f9e44",
+ "backgroundColor": "#b2f2bb",
+ "fillStyle": "solid",
+ "strokeWidth": 2,
+ "strokeStyle": "solid",
+ "roughness": 1,
+ "opacity": 100,
+ "groupIds": [],
+ "frameId": null,
+ "index": "b2p",
+ "roundness": {
+ "type": 3
+ },
+ "seed": 1564936492,
+ "version": 45,
+ "versionNonce": 1384192786,
+ "isDeleted": false,
+ "boundElements": [
+ {
+ "type": "text",
+ "id": "-7jqqS0puG8toEPZ-PHS6"
+ },
+ {
+ "id": "LR-hHVypJe3VOtKri0U_C",
+ "type": "arrow"
+ },
+ {
+ "id": "dHSOZQ6fSqspsVYWJGcXW",
+ "type": "arrow"
+ },
+ {
+ "id": "pTj6Daa-DHBxm12nPHlIN",
+ "type": "arrow"
+ }
+ ],
+ "updated": 1782291462665,
+ "link": null,
+ "locked": false
+ },
+ {
+ "id": "-7jqqS0puG8toEPZ-PHS6",
+ "type": "text",
+ "x": 478.7551574707031,
+ "y": 324.9833984375,
+ "width": 78.47991943359375,
+ "height": 25,
+ "angle": 0,
+ "strokeColor": "#2f9e44",
+ "backgroundColor": "transparent",
+ "fillStyle": "solid",
+ "strokeWidth": 2,
+ "strokeStyle": "solid",
+ "roughness": 1,
+ "opacity": 100,
+ "groupIds": [],
+ "frameId": null,
+ "index": "b2q",
+ "roundness": null,
+ "seed": 991075220,
+ "version": 33,
+ "versionNonce": 1711232782,
+ "isDeleted": false,
+ "boundElements": [],
+ "updated": 1782291462665,
+ "link": null,
+ "locked": false,
+ "text": "JobSpec",
+ "fontSize": 20,
+ "fontFamily": 5,
+ "textAlign": "center",
+ "verticalAlign": "middle",
+ "containerId": "LBYf82p6ktgQddPKUjfGt",
+ "originalText": "JobSpec",
+ "autoResize": true,
+ "lineHeight": 1.25
+ },
+ {
+ "id": "3ty8ezTsKFHvMANFoDwur",
+ "type": "rectangle",
+ "x": 821.8955078125,
+ "y": 289.1455078125,
+ "width": 227.5,
+ "height": 96.67578125,
+ "angle": 0,
+ "strokeColor": "#2f9e44",
+ "backgroundColor": "#b2f2bb",
+ "fillStyle": "solid",
+ "strokeWidth": 2,
+ "strokeStyle": "solid",
+ "roughness": 1,
+ "opacity": 100,
+ "groupIds": [],
+ "frameId": null,
+ "index": "b2r",
+ "roundness": {
+ "type": 3
+ },
+ "seed": 1668363948,
+ "version": 155,
+ "versionNonce": 2106583250,
+ "isDeleted": false,
+ "boundElements": [
+ {
+ "type": "text",
+ "id": "u4vXxgvV970UhRxl-m9Jr"
+ },
+ {
+ "id": "LR-hHVypJe3VOtKri0U_C",
+ "type": "arrow"
+ },
+ {
+ "id": "oWjaRGIL-Qs4l_t7gLSu8",
+ "type": "arrow"
+ }
+ ],
+ "updated": 1782291462665,
+ "link": null,
+ "locked": false
+ },
+ {
+ "id": "u4vXxgvV970UhRxl-m9Jr",
+ "type": "text",
+ "x": 891.1555557250977,
+ "y": 324.9833984375,
+ "width": 88.97990417480469,
+ "height": 25,
+ "angle": 0,
+ "strokeColor": "#2f9e44",
+ "backgroundColor": "transparent",
+ "fillStyle": "solid",
+ "strokeWidth": 2,
+ "strokeStyle": "solid",
+ "roughness": 1,
+ "opacity": 100,
+ "groupIds": [],
+ "frameId": null,
+ "index": "b2s",
+ "roundness": null,
+ "seed": 1542291756,
+ "version": 154,
+ "versionNonce": 1381844302,
+ "isDeleted": false,
+ "boundElements": [],
+ "updated": 1782291462665,
+ "link": null,
+ "locked": false,
+ "text": "StepSpec",
+ "fontSize": 20,
+ "fontFamily": 5,
+ "textAlign": "center",
+ "verticalAlign": "middle",
+ "containerId": "3ty8ezTsKFHvMANFoDwur",
+ "originalText": "StepSpec",
+ "autoResize": true,
+ "lineHeight": 1.25
+ },
+ {
+ "id": "NB4-9LQXQtzlLkjqwLAVR",
+ "type": "rectangle",
+ "x": 1239.5458984375,
+ "y": 289.1455078125,
+ "width": 227.5,
+ "height": 96.67578125,
+ "angle": 0,
+ "strokeColor": "#2f9e44",
+ "backgroundColor": "#b2f2bb",
+ "fillStyle": "solid",
+ "strokeWidth": 2,
+ "strokeStyle": "solid",
+ "roughness": 1,
+ "opacity": 100,
+ "groupIds": [],
+ "frameId": null,
+ "index": "b2t",
+ "roundness": {
+ "type": 3
+ },
+ "seed": 1058674964,
+ "version": 107,
+ "versionNonce": 16711314,
+ "isDeleted": false,
+ "boundElements": [
+ {
+ "type": "text",
+ "id": "2DUt9T-zLVKOGC9u7K7WK"
+ },
+ {
+ "id": "QTNlTTXnJsouybVGqumAd",
+ "type": "arrow"
+ },
+ {
+ "id": "FpKSeNBSqHSA_YMLBXE_b",
+ "type": "arrow"
+ },
+ {
+ "id": "oWjaRGIL-Qs4l_t7gLSu8",
+ "type": "arrow"
+ }
+ ],
+ "updated": 1782291462665,
+ "link": null,
+ "locked": false
+ },
+ {
+ "id": "2DUt9T-zLVKOGC9u7K7WK",
+ "type": "text",
+ "x": 1300.2659606933594,
+ "y": 324.9833984375,
+ "width": 106.05987548828125,
+ "height": 25,
+ "angle": 0,
+ "strokeColor": "#2f9e44",
+ "backgroundColor": "transparent",
+ "fillStyle": "solid",
+ "strokeWidth": 2,
+ "strokeStyle": "solid",
+ "roughness": 1,
+ "opacity": 100,
+ "groupIds": [],
+ "frameId": null,
+ "index": "b2u",
+ "roundness": null,
+ "seed": 1075697300,
+ "version": 109,
+ "versionNonce": 1365470094,
+ "isDeleted": false,
+ "boundElements": [],
+ "updated": 1782291462665,
+ "link": null,
+ "locked": false,
+ "text": "ActionSpec",
+ "fontSize": 20,
+ "fontFamily": 5,
+ "textAlign": "center",
+ "verticalAlign": "middle",
+ "containerId": "NB4-9LQXQtzlLkjqwLAVR",
+ "originalText": "ActionSpec",
+ "autoResize": true,
+ "lineHeight": 1.25
+ },
+ {
+ "id": "LR-hHVypJe3VOtKri0U_C",
+ "type": "arrow",
+ "x": 637.7451171875,
+ "y": 337.49306601562495,
+ "width": 178.150390625,
+ "height": 0,
+ "angle": 0,
+ "strokeColor": "#1e1e1e",
+ "backgroundColor": "transparent",
+ "fillStyle": "solid",
+ "strokeWidth": 2,
+ "strokeStyle": "solid",
+ "roughness": 1,
+ "opacity": 100,
+ "groupIds": [],
+ "frameId": null,
+ "index": "b2v",
+ "roundness": {
+ "type": 2
+ },
+ "seed": 851103892,
+ "version": 186,
+ "versionNonce": 2038783058,
+ "isDeleted": false,
+ "boundElements": [
+ {
+ "type": "text",
+ "id": "Qz7tj4bVDjc49La7eCK6A"
+ }
+ ],
+ "updated": 1782291462665,
+ "link": null,
+ "locked": false,
+ "points": [
+ [
+ 0,
+ 0
+ ],
+ [
+ 151.4736328125,
+ 0
+ ],
+ [
+ 178.150390625,
+ 0
+ ]
+ ],
+ "startBinding": {
+ "elementId": "LBYf82p6ktgQddPKUjfGt",
+ "mode": "orbit",
+ "fixedPoint": [
+ 1,
+ 0.5001
+ ]
+ },
+ "endBinding": {
+ "elementId": "3ty8ezTsKFHvMANFoDwur",
+ "mode": "orbit",
+ "fixedPoint": [
+ 0,
+ 0.5001
+ ]
+ },
+ "startArrowhead": null,
+ "endArrowhead": "arrow",
+ "elbowed": false,
+ "moveMidPointsWithElement": false
+ },
+ {
+ "id": "Qz7tj4bVDjc49La7eCK6A",
+ "type": "text",
+ "x": 783.9587554931641,
+ "y": 324.99306601562495,
+ "width": 10.519989013671875,
+ "height": 25,
+ "angle": 0,
+ "strokeColor": "#1e1e1e",
+ "backgroundColor": "transparent",
+ "fillStyle": "solid",
+ "strokeWidth": 2,
+ "strokeStyle": "dashed",
+ "roughness": 1,
+ "opacity": 100,
+ "groupIds": [],
+ "frameId": null,
+ "index": "b2w",
+ "roundness": null,
+ "seed": 1633153172,
+ "version": 5,
+ "versionNonce": 1363855822,
+ "isDeleted": false,
+ "boundElements": [],
+ "updated": 1782291462665,
+ "link": null,
+ "locked": false,
+ "text": "n",
+ "fontSize": 20,
+ "fontFamily": 5,
+ "textAlign": "center",
+ "verticalAlign": "middle",
+ "containerId": "LR-hHVypJe3VOtKri0U_C",
+ "originalText": "n",
+ "autoResize": true,
+ "lineHeight": 1.25
+ },
+ {
+ "id": "oWjaRGIL-Qs4l_t7gLSu8",
+ "type": "arrow",
+ "x": 1055.3955078125,
+ "y": 337.5531221774718,
+ "width": 178.150390625,
+ "height": 1.5156126970672403,
+ "angle": 0,
+ "strokeColor": "#1e1e1e",
+ "backgroundColor": "transparent",
+ "fillStyle": "solid",
+ "strokeWidth": 2,
+ "strokeStyle": "solid",
+ "roughness": 1,
+ "opacity": 100,
+ "groupIds": [],
+ "frameId": null,
+ "index": "b2x",
+ "roundness": {
+ "type": 2
+ },
+ "seed": 1291153300,
+ "version": 126,
+ "versionNonce": 1425670674,
+ "isDeleted": false,
+ "boundElements": [
+ {
+ "type": "text",
+ "id": "u75H3hI9GgetBpqLptuAr"
+ }
+ ],
+ "updated": 1782291462665,
+ "link": null,
+ "locked": false,
+ "points": [
+ [
+ 0,
+ 0
+ ],
+ [
+ 151.41953636004018,
+ 1.5156126970672403
+ ],
+ [
+ 178.150390625,
+ 0.22878485271871796
+ ]
+ ],
+ "startBinding": {
+ "elementId": "3ty8ezTsKFHvMANFoDwur",
+ "mode": "orbit",
+ "fixedPoint": [
+ 1,
+ 0.5001
+ ]
+ },
+ "endBinding": {
+ "elementId": "NB4-9LQXQtzlLkjqwLAVR",
+ "mode": "orbit",
+ "fixedPoint": [
+ 0,
+ 0.5001
+ ]
+ },
+ "startArrowhead": null,
+ "endArrowhead": "arrow",
+ "elbowed": false,
+ "moveMidPointsWithElement": false
+ },
+ {
+ "id": "u75H3hI9GgetBpqLptuAr",
+ "type": "text",
+ "x": 1143.2085189819336,
+ "y": 325.4388421861425,
+ "width": 8.539993286132812,
+ "height": 25,
+ "angle": 0,
+ "strokeColor": "#1e1e1e",
+ "backgroundColor": "transparent",
+ "fillStyle": "solid",
+ "strokeWidth": 2,
+ "strokeStyle": "dashed",
+ "roughness": 1,
+ "opacity": 100,
+ "groupIds": [],
+ "frameId": null,
+ "index": "b2y",
+ "roundness": null,
+ "seed": 867876012,
+ "version": 4,
+ "versionNonce": 288120846,
+ "isDeleted": false,
+ "boundElements": [],
+ "updated": 1782291462665,
+ "link": null,
+ "locked": false,
+ "text": "1",
+ "fontSize": 20,
+ "fontFamily": 5,
+ "textAlign": "center",
+ "verticalAlign": "middle",
+ "containerId": "oWjaRGIL-Qs4l_t7gLSu8",
+ "originalText": "1",
+ "autoResize": true,
+ "lineHeight": 1.25
+ },
+ {
+ "id": "ZNOEST4A86tz_-0z_CrJr",
+ "type": "rectangle",
+ "x": 404.2451171875,
+ "y": 509.423828125,
+ "width": 227.5,
+ "height": 96.67578125,
+ "angle": 0,
+ "strokeColor": "#1971c2",
+ "backgroundColor": "#a5d8ff",
+ "fillStyle": "solid",
+ "strokeWidth": 2,
+ "strokeStyle": "solid",
+ "roughness": 1,
+ "opacity": 100,
+ "groupIds": [],
+ "frameId": null,
+ "index": "b2z",
+ "roundness": {
+ "type": 3
+ },
+ "seed": 123062700,
+ "version": 108,
+ "versionNonce": 1419233810,
+ "isDeleted": false,
+ "boundElements": [
+ {
+ "type": "text",
+ "id": "7jtiSw29TPxh01xHjmz4p"
+ },
+ {
+ "id": "dHSOZQ6fSqspsVYWJGcXW",
+ "type": "arrow"
+ },
+ {
+ "id": "pTj6Daa-DHBxm12nPHlIN",
+ "type": "arrow"
+ },
+ {
+ "id": "9QPFIhiXqAVHruo8I5_wx",
+ "type": "arrow"
+ },
+ {
+ "id": "wd-I86jKJy27LX1Acjjfi",
+ "type": "arrow"
+ }
+ ],
+ "updated": 1782291729109,
+ "link": null,
+ "locked": false
+ },
+ {
+ "id": "7jtiSw29TPxh01xHjmz4p",
+ "type": "text",
+ "x": 456.2351837158203,
+ "y": 545.26171875,
+ "width": 123.51986694335938,
+ "height": 25,
+ "angle": 0,
+ "strokeColor": "#1971c2",
+ "backgroundColor": "transparent",
+ "fillStyle": "solid",
+ "strokeWidth": 2,
+ "strokeStyle": "solid",
+ "roughness": 1,
+ "opacity": 100,
+ "groupIds": [],
+ "frameId": null,
+ "index": "b30",
+ "roundness": null,
+ "seed": 1539814444,
+ "version": 95,
+ "versionNonce": 83963470,
+ "isDeleted": false,
+ "boundElements": [],
+ "updated": 1782291462665,
+ "link": null,
+ "locked": false,
+ "text": "JobExecutor",
+ "fontSize": 20,
+ "fontFamily": 5,
+ "textAlign": "center",
+ "verticalAlign": "middle",
+ "containerId": "ZNOEST4A86tz_-0z_CrJr",
+ "originalText": "JobExecutor",
+ "autoResize": true,
+ "lineHeight": 1.25
+ },
+ {
+ "id": "mMqx_LMek6b4-fXGG744D",
+ "type": "rectangle",
+ "x": 821.8955078125,
+ "y": 509.423828125,
+ "width": 227.5,
+ "height": 96.67578125,
+ "angle": 0,
+ "strokeColor": "#1971c2",
+ "backgroundColor": "#a5d8ff",
+ "fillStyle": "solid",
+ "strokeWidth": 2,
+ "strokeStyle": "solid",
+ "roughness": 1,
+ "opacity": 100,
+ "groupIds": [],
+ "frameId": null,
+ "index": "b31",
+ "roundness": {
+ "type": 3
+ },
+ "seed": 1335381676,
+ "version": 233,
+ "versionNonce": 116518990,
+ "isDeleted": false,
+ "boundElements": [
+ {
+ "type": "text",
+ "id": "FbJ5AyCxbwxWqG7KTa75u"
+ },
+ {
+ "id": "kpjC4L5vRlQJFZ5sz4yWQ",
+ "type": "arrow"
+ },
+ {
+ "id": "CVOqXqcjTYRHSTnHRo4QK",
+ "type": "arrow"
+ },
+ {
+ "id": "9QPFIhiXqAVHruo8I5_wx",
+ "type": "arrow"
+ },
+ {
+ "id": "SSPHkNCM4tDloFoyFIr-e",
+ "type": "arrow"
+ }
+ ],
+ "updated": 1782291693985,
+ "link": null,
+ "locked": false
+ },
+ {
+ "id": "FbJ5AyCxbwxWqG7KTa75u",
+ "type": "text",
+ "x": 868.6355819702148,
+ "y": 545.26171875,
+ "width": 134.0198516845703,
+ "height": 25,
+ "angle": 0,
+ "strokeColor": "#1971c2",
+ "backgroundColor": "transparent",
+ "fillStyle": "solid",
+ "strokeWidth": 2,
+ "strokeStyle": "solid",
+ "roughness": 1,
+ "opacity": 100,
+ "groupIds": [],
+ "frameId": null,
+ "index": "b32",
+ "roundness": null,
+ "seed": 1668389164,
+ "version": 228,
+ "versionNonce": 966931598,
+ "isDeleted": false,
+ "boundElements": [],
+ "updated": 1782291462665,
+ "link": null,
+ "locked": false,
+ "text": "StepExecutor",
+ "fontSize": 20,
+ "fontFamily": 5,
+ "textAlign": "center",
+ "verticalAlign": "middle",
+ "containerId": "mMqx_LMek6b4-fXGG744D",
+ "originalText": "StepExecutor",
+ "autoResize": true,
+ "lineHeight": 1.25
+ },
+ {
+ "id": "6vmGht6PGtIly_Y3Dtpoz",
+ "type": "rectangle",
+ "x": 1239.5458984375,
+ "y": 509.423828125,
+ "width": 227.5,
+ "height": 96.67578125,
+ "angle": 0,
+ "strokeColor": "#1971c2",
+ "backgroundColor": "#a5d8ff",
+ "fillStyle": "solid",
+ "strokeWidth": 2,
+ "strokeStyle": "solid",
+ "roughness": 1,
+ "opacity": 100,
+ "groupIds": [],
+ "frameId": null,
+ "index": "b33",
+ "roundness": {
+ "type": 3
+ },
+ "seed": 1925026732,
+ "version": 169,
+ "versionNonce": 1345561426,
+ "isDeleted": false,
+ "boundElements": [
+ {
+ "type": "text",
+ "id": "2Baeq-3JDTeR_QdcHRfmC"
+ },
+ {
+ "id": "QTNlTTXnJsouybVGqumAd",
+ "type": "arrow"
+ },
+ {
+ "id": "FpKSeNBSqHSA_YMLBXE_b",
+ "type": "arrow"
+ },
+ {
+ "id": "CVOqXqcjTYRHSTnHRo4QK",
+ "type": "arrow"
+ }
+ ],
+ "updated": 1782291462665,
+ "link": null,
+ "locked": false
+ },
+ {
+ "id": "2Baeq-3JDTeR_QdcHRfmC",
+ "type": "text",
+ "x": 1277.7459869384766,
+ "y": 545.26171875,
+ "width": 151.09982299804688,
+ "height": 25,
+ "angle": 0,
+ "strokeColor": "#1971c2",
+ "backgroundColor": "transparent",
+ "fillStyle": "solid",
+ "strokeWidth": 2,
+ "strokeStyle": "solid",
+ "roughness": 1,
+ "opacity": 100,
+ "groupIds": [],
+ "frameId": null,
+ "index": "b34",
+ "roundness": null,
+ "seed": 1537621548,
+ "version": 172,
+ "versionNonce": 952660686,
+ "isDeleted": false,
+ "boundElements": [],
+ "updated": 1782291462665,
+ "link": null,
+ "locked": false,
+ "text": "ActionExecutor",
+ "fontSize": 20,
+ "fontFamily": 5,
+ "textAlign": "center",
+ "verticalAlign": "middle",
+ "containerId": "6vmGht6PGtIly_Y3Dtpoz",
+ "originalText": "ActionExecutor",
+ "autoResize": true,
+ "lineHeight": 1.25
+ },
+ {
+ "id": "MpIhq1pZBcUdwRJSzA4U6",
+ "type": "arrow",
+ "x": 640.2060546875,
+ "y": 543.919823828125,
+ "width": 182.953125,
+ "height": 0,
+ "angle": 0,
+ "strokeColor": "#1e1e1e",
+ "backgroundColor": "transparent",
+ "fillStyle": "solid",
+ "strokeWidth": 2,
+ "strokeStyle": "solid",
+ "roughness": 1,
+ "opacity": 100,
+ "groupIds": [],
+ "frameId": null,
+ "index": "b35",
+ "roundness": {
+ "type": 2
+ },
+ "seed": 655726764,
+ "version": 221,
+ "versionNonce": 1816619282,
+ "isDeleted": false,
+ "boundElements": [],
+ "updated": 1782291462665,
+ "link": null,
+ "locked": false,
+ "points": [
+ [
+ 0,
+ 0
+ ],
+ [
+ 182.953125,
+ 0
+ ]
+ ],
+ "startBinding": null,
+ "endBinding": null,
+ "startArrowhead": null,
+ "endArrowhead": "arrow",
+ "elbowed": false,
+ "moveMidPointsWithElement": false
+ },
+ {
+ "id": "evakkAv0JQjMSCde38bnb",
+ "type": "arrow",
+ "x": 1063.3388671875,
+ "y": 542.650292578125,
+ "width": 173.34765625,
+ "height": 0,
+ "angle": 0,
+ "strokeColor": "#1e1e1e",
+ "backgroundColor": "transparent",
+ "fillStyle": "solid",
+ "strokeWidth": 2,
+ "strokeStyle": "solid",
+ "roughness": 1,
+ "opacity": 100,
+ "groupIds": [],
+ "frameId": null,
+ "index": "b36",
+ "roundness": {
+ "type": 2
+ },
+ "seed": 817210156,
+ "version": 158,
+ "versionNonce": 1829562638,
+ "isDeleted": false,
+ "boundElements": [],
+ "updated": 1782291462665,
+ "link": null,
+ "locked": false,
+ "points": [
+ [
+ 0,
+ 0
+ ],
+ [
+ 173.34765625,
+ 0
+ ]
+ ],
+ "startBinding": null,
+ "endBinding": null,
+ "startArrowhead": null,
+ "endArrowhead": "arrow",
+ "elbowed": false,
+ "moveMidPointsWithElement": false
+ },
+ {
+ "id": "dHSOZQ6fSqspsVYWJGcXW",
+ "type": "arrow",
+ "x": 473.6588564161063,
+ "y": 391.8212890625,
+ "width": 1.4761511101813767,
+ "height": 111.60253906249994,
+ "angle": 0,
+ "strokeColor": "#1e1e1e",
+ "backgroundColor": "transparent",
+ "fillStyle": "solid",
+ "strokeWidth": 2,
+ "strokeStyle": "solid",
+ "roughness": 1,
+ "opacity": 100,
+ "groupIds": [],
+ "frameId": null,
+ "index": "b37",
+ "roundness": {
+ "type": 2
+ },
+ "seed": 92861972,
+ "version": 83,
+ "versionNonce": 1700558546,
+ "isDeleted": false,
+ "boundElements": [
+ {
+ "type": "text",
+ "id": "sE4KVTWiowITm4tZH2cp-"
+ }
+ ],
+ "updated": 1782291462665,
+ "link": null,
+ "locked": false,
+ "points": [
+ [
+ 0,
+ 0
+ ],
+ [
+ 1.4761511101813767,
+ 111.60253906249994
+ ]
+ ],
+ "startBinding": {
+ "elementId": "LBYf82p6ktgQddPKUjfGt",
+ "mode": "orbit",
+ "fixedPoint": [
+ 0.30306306017547574,
+ 0.6969369398245246
+ ]
+ },
+ "endBinding": {
+ "elementId": "ZNOEST4A86tz_-0z_CrJr",
+ "mode": "orbit",
+ "fixedPoint": [
+ 0.3137160683955289,
+ 0.31371606839552857
+ ]
+ },
+ "startArrowhead": null,
+ "endArrowhead": "arrow",
+ "elbowed": false,
+ "moveMidPointsWithElement": false
+ },
+ {
+ "id": "sE4KVTWiowITm4tZH2cp-",
+ "type": "text",
+ "x": 487.0086078560172,
+ "y": 433.67236328125,
+ "width": 61.97993469238281,
+ "height": 25,
+ "angle": 0,
+ "strokeColor": "#1e1e1e",
+ "backgroundColor": "transparent",
+ "fillStyle": "solid",
+ "strokeWidth": 2,
+ "strokeStyle": "solid",
+ "roughness": 1,
+ "opacity": 100,
+ "groupIds": [],
+ "frameId": null,
+ "index": "b38",
+ "roundness": null,
+ "seed": 1972864404,
+ "version": 10,
+ "versionNonce": 99129166,
+ "isDeleted": false,
+ "boundElements": [],
+ "updated": 1782291462665,
+ "link": null,
+ "locked": false,
+ "text": "create",
+ "fontSize": 20,
+ "fontFamily": 5,
+ "textAlign": "center",
+ "verticalAlign": "middle",
+ "containerId": "dHSOZQ6fSqspsVYWJGcXW",
+ "originalText": "create",
+ "autoResize": true,
+ "lineHeight": 1.25
+ },
+ {
+ "id": "pTj6Daa-DHBxm12nPHlIN",
+ "type": "arrow",
+ "x": 561.2012561076791,
+ "y": 503.42382812500006,
+ "width": 1.1122869249365976,
+ "height": 111.6025390625,
+ "angle": 0,
+ "strokeColor": "#1e1e1e",
+ "backgroundColor": "transparent",
+ "fillStyle": "solid",
+ "strokeWidth": 2,
+ "strokeStyle": "dashed",
+ "roughness": 1,
+ "opacity": 100,
+ "groupIds": [],
+ "frameId": null,
+ "index": "b39",
+ "roundness": {
+ "type": 2
+ },
+ "seed": 1419815444,
+ "version": 118,
+ "versionNonce": 470404242,
+ "isDeleted": false,
+ "boundElements": [
+ {
+ "type": "text",
+ "id": "_W4aLt-fd1VHV0JbrbnTO"
+ }
+ ],
+ "updated": 1782291462665,
+ "link": null,
+ "locked": false,
+ "points": [
+ [
+ 0,
+ 0
+ ],
+ [
+ -1.1122869249365976,
+ -111.6025390625
+ ]
+ ],
+ "startBinding": {
+ "elementId": "ZNOEST4A86tz_-0z_CrJr",
+ "mode": "orbit",
+ "fixedPoint": [
+ 0.6914865784074169,
+ 0.30851342159258244
+ ]
+ },
+ "endBinding": {
+ "elementId": "LBYf82p6ktgQddPKUjfGt",
+ "mode": "orbit",
+ "fixedPoint": [
+ 0.6834242908022403,
+ 0.6834242908022402
+ ]
+ },
+ "startArrowhead": null,
+ "endArrowhead": "arrow",
+ "elbowed": false,
+ "moveMidPointsWithElement": false
+ },
+ {
+ "id": "_W4aLt-fd1VHV0JbrbnTO",
+ "type": "text",
+ "x": 508.7359424131515,
+ "y": 433.67236328125,
+ "width": 28.519973754882812,
+ "height": 25,
+ "angle": 0,
+ "strokeColor": "#1e1e1e",
+ "backgroundColor": "transparent",
+ "fillStyle": "solid",
+ "strokeWidth": 2,
+ "strokeStyle": "solid",
+ "roughness": 1,
+ "opacity": 100,
+ "groupIds": [],
+ "frameId": null,
+ "index": "b3A",
+ "roundness": null,
+ "seed": 1064721196,
+ "version": 12,
+ "versionNonce": 1538555278,
+ "isDeleted": false,
+ "boundElements": [],
+ "updated": 1782291462665,
+ "link": null,
+ "locked": false,
+ "text": "ref",
+ "fontSize": 20,
+ "fontFamily": 5,
+ "textAlign": "center",
+ "verticalAlign": "middle",
+ "containerId": "pTj6Daa-DHBxm12nPHlIN",
+ "originalText": "ref",
+ "autoResize": true,
+ "lineHeight": 1.25
+ },
+ {
+ "id": "KoRxSno9t_39JkEEp9E3t",
+ "type": "arrow",
+ "x": 892.8422714578152,
+ "y": 391.283203125,
+ "width": 1.7667588260335378,
+ "height": 111.6025390625,
+ "angle": 0,
+ "strokeColor": "#1e1e1e",
+ "backgroundColor": "transparent",
+ "fillStyle": "solid",
+ "strokeWidth": 2,
+ "strokeStyle": "solid",
+ "roughness": 1,
+ "opacity": 100,
+ "groupIds": [],
+ "frameId": null,
+ "index": "b3B",
+ "roundness": {
+ "type": 2
+ },
+ "seed": 1719695532,
+ "version": 101,
+ "versionNonce": 1174825554,
+ "isDeleted": false,
+ "boundElements": [
+ {
+ "type": "text",
+ "id": "l1KjUU8bv76eHAtNBxnXM"
+ }
+ ],
+ "updated": 1782291462665,
+ "link": null,
+ "locked": false,
+ "points": [
+ [
+ 0,
+ 0
+ ],
+ [
+ 1.7667588260335378,
+ 111.6025390625
+ ]
+ ],
+ "startBinding": null,
+ "endBinding": null,
+ "startArrowhead": null,
+ "endArrowhead": "arrow",
+ "elbowed": false
+ },
+ {
+ "id": "l1KjUU8bv76eHAtNBxnXM",
+ "type": "text",
+ "x": 655.3225326538086,
+ "y": 506.3849218652863,
+ "width": 61.97993469238281,
+ "height": 25,
+ "angle": 0,
+ "strokeColor": "#1e1e1e",
+ "backgroundColor": "transparent",
+ "fillStyle": "solid",
+ "strokeWidth": 2,
+ "strokeStyle": "solid",
+ "roughness": 1,
+ "opacity": 100,
+ "groupIds": [],
+ "frameId": null,
+ "index": "b3C",
+ "roundness": null,
+ "seed": 2143585068,
+ "version": 12,
+ "versionNonce": 1403624398,
+ "isDeleted": false,
+ "boundElements": [],
+ "updated": 1782291462665,
+ "link": null,
+ "locked": false,
+ "text": "create",
+ "fontSize": 20,
+ "fontFamily": 5,
+ "textAlign": "center",
+ "verticalAlign": "middle",
+ "containerId": "KoRxSno9t_39JkEEp9E3t",
+ "originalText": "create",
+ "autoResize": true,
+ "lineHeight": 1.25
+ },
+ {
+ "id": "kpjC4L5vRlQJFZ5sz4yWQ",
+ "type": "arrow",
+ "x": 970.5494830803973,
+ "y": 503.423828125,
+ "width": 4.2131219348653985,
+ "height": 112.22268023341894,
+ "angle": 0,
+ "strokeColor": "#1e1e1e",
+ "backgroundColor": "transparent",
+ "fillStyle": "solid",
+ "strokeWidth": 2,
+ "strokeStyle": "dashed",
+ "roughness": 1,
+ "opacity": 100,
+ "groupIds": [],
+ "frameId": null,
+ "index": "b3D",
+ "roundness": {
+ "type": 2
+ },
+ "seed": 1133014548,
+ "version": 133,
+ "versionNonce": 1244221458,
+ "isDeleted": false,
+ "boundElements": [
+ {
+ "type": "text",
+ "id": "amWNCFGSnNuLjARDmEGbZ"
+ }
+ ],
+ "updated": 1782291462665,
+ "link": null,
+ "locked": false,
+ "points": [
+ [
+ 0,
+ 0
+ ],
+ [
+ 4.2131219348653985,
+ -112.22268023341894
+ ]
+ ],
+ "startBinding": {
+ "elementId": "mMqx_LMek6b4-fXGG744D",
+ "mode": "orbit",
+ "fixedPoint": [
+ 0.6467990960987933,
+ 0.35320090390120634
+ ]
+ },
+ "endBinding": null,
+ "startArrowhead": null,
+ "endArrowhead": "arrow",
+ "elbowed": false,
+ "moveMidPointsWithElement": false
+ },
+ {
+ "id": "amWNCFGSnNuLjARDmEGbZ",
+ "type": "text",
+ "x": 959.9413842263043,
+ "y": 434.81248800829053,
+ "width": 28.519973754882812,
+ "height": 25,
+ "angle": 0,
+ "strokeColor": "#1e1e1e",
+ "backgroundColor": "transparent",
+ "fillStyle": "solid",
+ "strokeWidth": 2,
+ "strokeStyle": "solid",
+ "roughness": 1,
+ "opacity": 100,
+ "groupIds": [],
+ "frameId": null,
+ "index": "b3E",
+ "roundness": null,
+ "seed": 771328916,
+ "version": 11,
+ "versionNonce": 1138815502,
+ "isDeleted": false,
+ "boundElements": [],
+ "updated": 1782291462665,
+ "link": null,
+ "locked": false,
+ "text": "ref",
+ "fontSize": 20,
+ "fontFamily": 5,
+ "textAlign": "center",
+ "verticalAlign": "middle",
+ "containerId": "kpjC4L5vRlQJFZ5sz4yWQ",
+ "originalText": "ref",
+ "autoResize": true,
+ "lineHeight": 1.25
+ },
+ {
+ "id": "QTNlTTXnJsouybVGqumAd",
+ "type": "arrow",
+ "x": 1299.6019727146243,
+ "y": 391.8212890625,
+ "width": 4.41948432518393,
+ "height": 111.6025390625,
+ "angle": 0,
+ "strokeColor": "#1e1e1e",
+ "backgroundColor": "transparent",
+ "fillStyle": "solid",
+ "strokeWidth": 2,
+ "strokeStyle": "solid",
+ "roughness": 1,
+ "opacity": 100,
+ "groupIds": [],
+ "frameId": null,
+ "index": "b3F",
+ "roundness": {
+ "type": 2
+ },
+ "seed": 1229652116,
+ "version": 154,
+ "versionNonce": 476675538,
+ "isDeleted": false,
+ "boundElements": [
+ {
+ "type": "text",
+ "id": "BOftvHWN9RlcYE-6KdWC2"
+ }
+ ],
+ "updated": 1782291462665,
+ "link": null,
+ "locked": false,
+ "points": [
+ [
+ 0,
+ 0
+ ],
+ [
+ 4.41948432518393,
+ 111.6025390625
+ ]
+ ],
+ "startBinding": {
+ "elementId": "NB4-9LQXQtzlLkjqwLAVR",
+ "mode": "orbit",
+ "fixedPoint": [
+ 0.2585868305553139,
+ 0.7414131694446865
+ ]
+ },
+ "endBinding": {
+ "elementId": "6vmGht6PGtIly_Y3Dtpoz",
+ "mode": "orbit",
+ "fixedPoint": [
+ 0.2893221783118071,
+ 0.2893221783118069
+ ]
+ },
+ "startArrowhead": null,
+ "endArrowhead": "arrow",
+ "elbowed": false,
+ "moveMidPointsWithElement": false
+ },
+ {
+ "id": "BOftvHWN9RlcYE-6KdWC2",
+ "type": "text",
+ "x": 949.7405014038086,
+ "y": 487.07788676241876,
+ "width": 61.97993469238281,
+ "height": 25,
+ "angle": 0,
+ "strokeColor": "#1e1e1e",
+ "backgroundColor": "transparent",
+ "fillStyle": "solid",
+ "strokeWidth": 2,
+ "strokeStyle": "solid",
+ "roughness": 1,
+ "opacity": 100,
+ "groupIds": [],
+ "frameId": null,
+ "index": "b3G",
+ "roundness": null,
+ "seed": 851824148,
+ "version": 16,
+ "versionNonce": 1465090126,
+ "isDeleted": false,
+ "boundElements": [],
+ "updated": 1782291462665,
+ "link": null,
+ "locked": false,
+ "text": "create",
+ "fontSize": 20,
+ "fontFamily": 5,
+ "textAlign": "center",
+ "verticalAlign": "middle",
+ "containerId": "QTNlTTXnJsouybVGqumAd",
+ "originalText": "create",
+ "autoResize": true,
+ "lineHeight": 1.25
+ },
+ {
+ "id": "FpKSeNBSqHSA_YMLBXE_b",
+ "type": "arrow",
+ "x": 1388.9463008656596,
+ "y": 503.42382812500006,
+ "width": 0.04987238572471142,
+ "height": 111.60253906250006,
+ "angle": 0,
+ "strokeColor": "#1e1e1e",
+ "backgroundColor": "transparent",
+ "fillStyle": "solid",
+ "strokeWidth": 2,
+ "strokeStyle": "dashed",
+ "roughness": 1,
+ "opacity": 100,
+ "groupIds": [],
+ "frameId": null,
+ "index": "b3H",
+ "roundness": {
+ "type": 2
+ },
+ "seed": 1642613396,
+ "version": 177,
+ "versionNonce": 433976210,
+ "isDeleted": false,
+ "boundElements": [
+ {
+ "type": "text",
+ "id": "WCuMr26TvrVS7dGbaWVxK"
+ }
+ ],
+ "updated": 1782291462665,
+ "link": null,
+ "locked": false,
+ "points": [
+ [
+ 0,
+ 0
+ ],
+ [
+ -0.04987238572471142,
+ -111.60253906250006
+ ]
+ ],
+ "startBinding": {
+ "elementId": "6vmGht6PGtIly_Y3Dtpoz",
+ "mode": "orbit",
+ "fixedPoint": [
+ 0.6567820280344826,
+ 0.3432179719655188
+ ]
+ },
+ "endBinding": {
+ "elementId": "NB4-9LQXQtzlLkjqwLAVR",
+ "mode": "orbit",
+ "fixedPoint": [
+ 0.6564088130510755,
+ 0.6564088130510756
+ ]
+ },
+ "startArrowhead": null,
+ "endArrowhead": "arrow",
+ "elbowed": false,
+ "moveMidPointsWithElement": false
+ },
+ {
+ "id": "WCuMr26TvrVS7dGbaWVxK",
+ "type": "text",
+ "x": 1050.7634506225586,
+ "y": 496.59305348545314,
+ "width": 28.519973754882812,
+ "height": 25,
+ "angle": 0,
+ "strokeColor": "#1e1e1e",
+ "backgroundColor": "transparent",
+ "fillStyle": "solid",
+ "strokeWidth": 2,
+ "strokeStyle": "solid",
+ "roughness": 1,
+ "opacity": 100,
+ "groupIds": [],
+ "frameId": null,
+ "index": "b3I",
+ "roundness": null,
+ "seed": 489281556,
+ "version": 14,
+ "versionNonce": 1910130318,
+ "isDeleted": false,
+ "boundElements": [],
+ "updated": 1782291462665,
+ "link": null,
+ "locked": false,
+ "text": "ref",
+ "fontSize": 20,
+ "fontFamily": 5,
+ "textAlign": "center",
+ "verticalAlign": "middle",
+ "containerId": "FpKSeNBSqHSA_YMLBXE_b",
+ "originalText": "ref",
+ "autoResize": true,
+ "lineHeight": 1.25
+ },
+ {
+ "id": "kvec_ibGwgrOVRUYKrCOK",
+ "type": "rectangle",
+ "x": 1239.5458984375,
+ "y": 725.79296875,
+ "width": 227.5,
+ "height": 96.67578125,
+ "angle": 0,
+ "strokeColor": "#e03131",
+ "backgroundColor": "#ffc9c9",
+ "fillStyle": "solid",
+ "strokeWidth": 2,
+ "strokeStyle": "solid",
+ "roughness": 1,
+ "opacity": 100,
+ "groupIds": [],
+ "frameId": null,
+ "index": "b3J",
+ "roundness": {
+ "type": 3
+ },
+ "seed": 1658380588,
+ "version": 199,
+ "versionNonce": 82575246,
+ "isDeleted": false,
+ "boundElements": [
+ {
+ "type": "text",
+ "id": "lGibeuUtqmgxvHadHnDUb"
+ }
+ ],
+ "updated": 1782291708138,
+ "link": null,
+ "locked": false
+ },
+ {
+ "id": "lGibeuUtqmgxvHadHnDUb",
+ "type": "text",
+ "x": 1298.1759643554688,
+ "y": 749.130859375,
+ "width": 110.2398681640625,
+ "height": 50,
+ "angle": 0,
+ "strokeColor": "#e03131",
+ "backgroundColor": "transparent",
+ "fillStyle": "solid",
+ "strokeWidth": 2,
+ "strokeStyle": "solid",
+ "roughness": 1,
+ "opacity": 100,
+ "groupIds": [],
+ "frameId": null,
+ "index": "b3K",
+ "roundness": null,
+ "seed": 368827308,
+ "version": 237,
+ "versionNonce": 1349015886,
+ "isDeleted": false,
+ "boundElements": [],
+ "updated": 1782291708138,
+ "link": null,
+ "locked": false,
+ "text": "ActionTask\n",
+ "fontSize": 20,
+ "fontFamily": 5,
+ "textAlign": "center",
+ "verticalAlign": "middle",
+ "containerId": "kvec_ibGwgrOVRUYKrCOK",
+ "originalText": "ActionTask\n",
+ "autoResize": true,
+ "lineHeight": 1.25
+ },
+ {
+ "id": "eTlRkYmk946Zp0yaFWHYw",
+ "type": "arrow",
+ "x": 1352.2399684031318,
+ "y": 610.1215760388832,
+ "width": 3.6528756937366325,
+ "height": 111.6025390625,
+ "angle": 0,
+ "strokeColor": "#1e1e1e",
+ "backgroundColor": "transparent",
+ "fillStyle": "solid",
+ "strokeWidth": 2,
+ "strokeStyle": "solid",
+ "roughness": 1,
+ "opacity": 100,
+ "groupIds": [],
+ "frameId": null,
+ "index": "b3L",
+ "roundness": {
+ "type": 2
+ },
+ "seed": 1018943020,
+ "version": 221,
+ "versionNonce": 1080014610,
+ "isDeleted": false,
+ "boundElements": [
+ {
+ "type": "text",
+ "id": "aiNG8Xt8YJxYTSmwuoNHf"
+ }
+ ],
+ "updated": 1782291462665,
+ "link": null,
+ "locked": false,
+ "points": [
+ [
+ 0,
+ 0
+ ],
+ [
+ 3.6528756937366325,
+ 111.6025390625
+ ]
+ ],
+ "startBinding": null,
+ "endBinding": null,
+ "startArrowhead": null,
+ "endArrowhead": "arrow",
+ "elbowed": false,
+ "moveMidPointsWithElement": false
+ },
+ {
+ "id": "aiNG8Xt8YJxYTSmwuoNHf",
+ "type": "text",
+ "x": 1309.5334701538088,
+ "y": 591.8056580701332,
+ "width": 61.97993469238281,
+ "height": 25,
+ "angle": 0,
+ "strokeColor": "#1e1e1e",
+ "backgroundColor": "transparent",
+ "fillStyle": "solid",
+ "strokeWidth": 2,
+ "strokeStyle": "solid",
+ "roughness": 1,
+ "opacity": 100,
+ "groupIds": [],
+ "frameId": null,
+ "index": "b3M",
+ "roundness": null,
+ "seed": 28848300,
+ "version": 20,
+ "versionNonce": 1072200462,
+ "isDeleted": false,
+ "boundElements": [],
+ "updated": 1782291462665,
+ "link": null,
+ "locked": false,
+ "text": "create",
+ "fontSize": 20,
+ "fontFamily": 5,
+ "textAlign": "center",
+ "verticalAlign": "middle",
+ "containerId": "eTlRkYmk946Zp0yaFWHYw",
+ "originalText": "create",
+ "autoResize": true,
+ "lineHeight": 1.25
+ },
+ {
+ "id": "qFoX5cX4jvQr7Mgtitj3j",
+ "type": "rectangle",
+ "x": 828.58984375,
+ "y": 725.79296875,
+ "width": 227.5,
+ "height": 96.67578125,
+ "angle": 0,
+ "strokeColor": "#e03131",
+ "backgroundColor": "#ffc9c9",
+ "fillStyle": "solid",
+ "strokeWidth": 1,
+ "strokeStyle": "solid",
+ "roughness": 1,
+ "opacity": 100,
+ "groupIds": [],
+ "frameId": null,
+ "index": "b3N",
+ "roundness": {
+ "type": 3
+ },
+ "seed": 1958880556,
+ "version": 321,
+ "versionNonce": 44037134,
+ "isDeleted": false,
+ "boundElements": [
+ {
+ "type": "text",
+ "id": "w7dRZZf5VN7UHgD6XmJd6"
+ },
+ {
+ "id": "SSPHkNCM4tDloFoyFIr-e",
+ "type": "arrow"
+ }
+ ],
+ "updated": 1782291708138,
+ "link": null,
+ "locked": false
+ },
+ {
+ "id": "w7dRZZf5VN7UHgD6XmJd6",
+ "type": "text",
+ "x": 896.5598983764648,
+ "y": 749.130859375,
+ "width": 91.55989074707031,
+ "height": 50,
+ "angle": 0,
+ "strokeColor": "#e03131",
+ "backgroundColor": "transparent",
+ "fillStyle": "solid",
+ "strokeWidth": 2,
+ "strokeStyle": "solid",
+ "roughness": 1,
+ "opacity": 100,
+ "groupIds": [],
+ "frameId": null,
+ "index": "b3O",
+ "roundness": null,
+ "seed": 572301228,
+ "version": 337,
+ "versionNonce": 782294478,
+ "isDeleted": false,
+ "boundElements": [],
+ "updated": 1782291708138,
+ "link": null,
+ "locked": false,
+ "text": "StepTask\n",
+ "fontSize": 20,
+ "fontFamily": 5,
+ "textAlign": "center",
+ "verticalAlign": "middle",
+ "containerId": "qFoX5cX4jvQr7Mgtitj3j",
+ "originalText": "StepTask\n",
+ "autoResize": true,
+ "lineHeight": 1.25
+ },
+ {
+ "id": "CVOqXqcjTYRHSTnHRo4QK",
+ "type": "arrow",
+ "x": 1233.5458984375,
+ "y": 572.6539138456633,
+ "width": 178.150390625,
+ "height": 1.6287716764924198,
+ "angle": 0,
+ "strokeColor": "#1e1e1e",
+ "backgroundColor": "#ffc9c9",
+ "fillStyle": "solid",
+ "strokeWidth": 2,
+ "strokeStyle": "dashed",
+ "roughness": 1,
+ "opacity": 100,
+ "groupIds": [],
+ "frameId": null,
+ "index": "b3P",
+ "roundness": {
+ "type": 2
+ },
+ "seed": 1253993577,
+ "version": 176,
+ "versionNonce": 82221714,
+ "isDeleted": false,
+ "boundElements": [
+ {
+ "type": "text",
+ "id": "4vTOtxTm5M0euSziCiuP5"
+ }
+ ],
+ "updated": 1782291462665,
+ "link": null,
+ "locked": false,
+ "points": [
+ [
+ 0,
+ 0
+ ],
+ [
+ -178.150390625,
+ 1.6287716764924198
+ ]
+ ],
+ "startBinding": {
+ "elementId": "6vmGht6PGtIly_Y3Dtpoz",
+ "mode": "orbit",
+ "fixedPoint": [
+ 0.5038895319225878,
+ 0.6426341648945548
+ ]
+ },
+ "endBinding": {
+ "elementId": "mMqx_LMek6b4-fXGG744D",
+ "mode": "orbit",
+ "fixedPoint": [
+ 0.5208650431564885,
+ 0.6817663514955079
+ ]
+ },
+ "startArrowhead": null,
+ "endArrowhead": "arrow",
+ "elbowed": false,
+ "moveMidPointsWithElement": false
+ },
+ {
+ "id": "4vTOtxTm5M0euSziCiuP5",
+ "type": "text",
+ "x": 1132.6120834350586,
+ "y": 560.9686019996265,
+ "width": 28.519973754882812,
+ "height": 25,
+ "angle": 0,
+ "strokeColor": "#1e1e1e",
+ "backgroundColor": "#ffc9c9",
+ "fillStyle": "solid",
+ "strokeWidth": 2,
+ "strokeStyle": "dashed",
+ "roughness": 1,
+ "opacity": 100,
+ "groupIds": [],
+ "frameId": null,
+ "index": "b3Q",
+ "roundness": null,
+ "seed": 1972780745,
+ "version": 6,
+ "versionNonce": 374574990,
+ "isDeleted": false,
+ "boundElements": [],
+ "updated": 1782291462665,
+ "link": null,
+ "locked": false,
+ "text": "ref",
+ "fontSize": 20,
+ "fontFamily": 5,
+ "textAlign": "center",
+ "verticalAlign": "middle",
+ "containerId": "CVOqXqcjTYRHSTnHRo4QK",
+ "originalText": "ref",
+ "autoResize": true,
+ "lineHeight": 1.25
+ },
+ {
+ "id": "9QPFIhiXqAVHruo8I5_wx",
+ "type": "arrow",
+ "x": 815.8955078125,
+ "y": 575.3097241494834,
+ "width": 178.150390625,
+ "height": 0.2368459794897717,
+ "angle": 0,
+ "strokeColor": "#1e1e1e",
+ "backgroundColor": "#ffc9c9",
+ "fillStyle": "solid",
+ "strokeWidth": 2,
+ "strokeStyle": "dashed",
+ "roughness": 1,
+ "opacity": 100,
+ "groupIds": [],
+ "frameId": null,
+ "index": "b3R",
+ "roundness": {
+ "type": 2
+ },
+ "seed": 1680047623,
+ "version": 329,
+ "versionNonce": 1444509778,
+ "isDeleted": false,
+ "boundElements": [
+ {
+ "type": "text",
+ "id": "fzhj8vTST9JPUwO3GpY5V"
+ }
+ ],
+ "updated": 1782291462665,
+ "link": null,
+ "locked": false,
+ "points": [
+ [
+ 0,
+ 0
+ ],
+ [
+ -178.150390625,
+ -0.2368459794897717
+ ]
+ ],
+ "startBinding": {
+ "elementId": "mMqx_LMek6b4-fXGG744D",
+ "mode": "orbit",
+ "fixedPoint": [
+ 0.3668612622537089,
+ 0.6827442301871012
+ ]
+ },
+ "endBinding": {
+ "elementId": "ZNOEST4A86tz_-0z_CrJr",
+ "mode": "orbit",
+ "fixedPoint": [
+ 0.5638986381903434,
+ 0.6776172001624325
+ ]
+ },
+ "startArrowhead": null,
+ "endArrowhead": "arrow",
+ "elbowed": false,
+ "moveMidPointsWithElement": false
+ },
+ {
+ "id": "fzhj8vTST9JPUwO3GpY5V",
+ "type": "text",
+ "x": 714.9616928100586,
+ "y": 562.6911679874951,
+ "width": 28.519973754882812,
+ "height": 25,
+ "angle": 0,
+ "strokeColor": "#1e1e1e",
+ "backgroundColor": "#ffc9c9",
+ "fillStyle": "solid",
+ "strokeWidth": 2,
+ "strokeStyle": "dashed",
+ "roughness": 1,
+ "opacity": 100,
+ "groupIds": [],
+ "frameId": null,
+ "index": "b3S",
+ "roundness": null,
+ "seed": 44991657,
+ "version": 6,
+ "versionNonce": 1284926926,
+ "isDeleted": false,
+ "boundElements": [],
+ "updated": 1782291462665,
+ "link": null,
+ "locked": false,
+ "text": "ref",
+ "fontSize": 20,
+ "fontFamily": 5,
+ "textAlign": "center",
+ "verticalAlign": "middle",
+ "containerId": "9QPFIhiXqAVHruo8I5_wx",
+ "originalText": "ref",
+ "autoResize": true,
+ "lineHeight": 1.25
+ },
+ {
+ "id": "SSPHkNCM4tDloFoyFIr-e",
+ "type": "arrow",
+ "x": 936.0038321153245,
+ "y": 612.099609375,
+ "width": 6.051151857086211,
+ "height": 108.193359375,
+ "angle": 0,
+ "strokeColor": "#1e1e1e",
+ "backgroundColor": "#ffc9c9",
+ "fillStyle": "solid",
+ "strokeWidth": 2,
+ "strokeStyle": "solid",
+ "roughness": 1,
+ "opacity": 100,
+ "groupIds": [],
+ "frameId": null,
+ "index": "b3T",
+ "roundness": {
+ "type": 2
+ },
+ "seed": 1795021253,
+ "version": 77,
+ "versionNonce": 437283918,
+ "isDeleted": false,
+ "boundElements": [
+ {
+ "type": "text",
+ "id": "3LKiuS4_Hr1_HnZOUmKRC"
+ }
+ ],
+ "updated": 1782291805491,
+ "link": null,
+ "locked": false,
+ "points": [
+ [
+ 0,
+ 0
+ ],
+ [
+ 6.051151857086211,
+ 108.193359375
+ ]
+ ],
+ "startBinding": {
+ "elementId": "mMqx_LMek6b4-fXGG744D",
+ "mode": "orbit",
+ "fixedPoint": [
+ 0.5001,
+ 1
+ ]
+ },
+ "endBinding": {
+ "elementId": "qFoX5cX4jvQr7Mgtitj3j",
+ "mode": "orbit",
+ "fixedPoint": [
+ 0.5001,
+ 0
+ ]
+ },
+ "startArrowhead": null,
+ "endArrowhead": "arrow",
+ "elbowed": false,
+ "moveMidPointsWithElement": false
+ },
+ {
+ "id": "3LKiuS4_Hr1_HnZOUmKRC",
+ "type": "text",
+ "x": 914.2373700800005,
+ "y": 656.1962890625,
+ "width": 49.584075927734375,
+ "height": 20,
+ "angle": 0,
+ "strokeColor": "#1e1e1e",
+ "backgroundColor": "transparent",
+ "fillStyle": "solid",
+ "strokeWidth": 2,
+ "strokeStyle": "solid",
+ "roughness": 1,
+ "opacity": 100,
+ "groupIds": [],
+ "frameId": null,
+ "index": "b3TV",
+ "roundness": null,
+ "seed": 957011474,
+ "version": 8,
+ "versionNonce": 824583186,
+ "isDeleted": false,
+ "boundElements": null,
+ "updated": 1782291804609,
+ "link": null,
+ "locked": false,
+ "text": "create",
+ "fontSize": 16,
+ "fontFamily": 5,
+ "textAlign": "center",
+ "verticalAlign": "middle",
+ "containerId": "SSPHkNCM4tDloFoyFIr-e",
+ "originalText": "create",
+ "autoResize": true,
+ "lineHeight": 1.25
+ },
+ {
+ "id": "clDK8PIkWB-ZLy5cDFkYH",
+ "type": "rectangle",
+ "x": 1369.9931640625,
+ "y": 786.10693359375,
+ "width": 94.72656249999996,
+ "height": 32.96484375,
+ "angle": 0,
+ "strokeColor": "#1e1e1e",
+ "backgroundColor": "transparent",
+ "fillStyle": "solid",
+ "strokeWidth": 2,
+ "strokeStyle": "solid",
+ "roughness": 1,
+ "opacity": 100,
+ "groupIds": [],
+ "frameId": null,
+ "index": "b3U",
+ "roundness": {
+ "type": 3
+ },
+ "seed": 1388263950,
+ "version": 217,
+ "versionNonce": 426858766,
+ "isDeleted": false,
+ "boundElements": [
+ {
+ "type": "text",
+ "id": "R7wY61ROQE04sw7CJTP4d"
+ }
+ ],
+ "updated": 1782291693984,
+ "link": null,
+ "locked": false
+ },
+ {
+ "id": "R7wY61ROQE04sw7CJTP4d",
+ "type": "text",
+ "x": 1378.052360534668,
+ "y": 792.58935546875,
+ "width": 78.60816955566406,
+ "height": 20,
+ "angle": 0,
+ "strokeColor": "#1e1e1e",
+ "backgroundColor": "transparent",
+ "fillStyle": "solid",
+ "strokeWidth": 2,
+ "strokeStyle": "solid",
+ "roughness": 1,
+ "opacity": 100,
+ "groupIds": [],
+ "frameId": null,
+ "index": "b3V",
+ "roundness": null,
+ "seed": 1823764302,
+ "version": 173,
+ "versionNonce": 1941374674,
+ "isDeleted": false,
+ "boundElements": null,
+ "updated": 1782291693984,
+ "link": null,
+ "locked": false,
+ "text": "ActionRun",
+ "fontSize": 16,
+ "fontFamily": 5,
+ "textAlign": "center",
+ "verticalAlign": "middle",
+ "containerId": "clDK8PIkWB-ZLy5cDFkYH",
+ "originalText": "ActionRun",
+ "autoResize": true,
+ "lineHeight": 1.25
+ },
+ {
+ "id": "DxZ1EPhPFNTbdE5phZ2t1",
+ "type": "rectangle",
+ "x": 959.1572265625,
+ "y": 787.90576171875,
+ "width": 94.72656249999996,
+ "height": 32.96484375,
+ "angle": 0,
+ "strokeColor": "#1e1e1e",
+ "backgroundColor": "transparent",
+ "fillStyle": "solid",
+ "strokeWidth": 2,
+ "strokeStyle": "solid",
+ "roughness": 1,
+ "opacity": 100,
+ "groupIds": [],
+ "frameId": null,
+ "index": "b3W",
+ "roundness": {
+ "type": 3
+ },
+ "seed": 258508690,
+ "version": 281,
+ "versionNonce": 205457230,
+ "isDeleted": false,
+ "boundElements": [
+ {
+ "type": "text",
+ "id": "Qm0EFA9ygDRKO3MJLhyjr"
+ }
+ ],
+ "updated": 1782291693984,
+ "link": null,
+ "locked": false
+ },
+ {
+ "id": "Qm0EFA9ygDRKO3MJLhyjr",
+ "type": "text",
+ "x": 974.0484390258789,
+ "y": 794.38818359375,
+ "width": 64.94413757324219,
+ "height": 20,
+ "angle": 0,
+ "strokeColor": "#1e1e1e",
+ "backgroundColor": "transparent",
+ "fillStyle": "solid",
+ "strokeWidth": 2,
+ "strokeStyle": "solid",
+ "roughness": 1,
+ "opacity": 100,
+ "groupIds": [],
+ "frameId": null,
+ "index": "b3X",
+ "roundness": null,
+ "seed": 1943389522,
+ "version": 242,
+ "versionNonce": 546462866,
+ "isDeleted": false,
+ "boundElements": [],
+ "updated": 1782291693984,
+ "link": null,
+ "locked": false,
+ "text": "StepRun",
+ "fontSize": 16,
+ "fontFamily": 5,
+ "textAlign": "center",
+ "verticalAlign": "middle",
+ "containerId": "DxZ1EPhPFNTbdE5phZ2t1",
+ "originalText": "StepRun",
+ "autoResize": true,
+ "lineHeight": 1.25
+ },
+ {
+ "id": "5FcG3DrSxIuvw7RfCNgs4",
+ "type": "rectangle",
+ "x": 404.2451171875,
+ "y": 725.79296875,
+ "width": 227.5,
+ "height": 96.67578125,
+ "angle": 0,
+ "strokeColor": "#e03131",
+ "backgroundColor": "#ffc9c9",
+ "fillStyle": "solid",
+ "strokeWidth": 1,
+ "strokeStyle": "solid",
+ "roughness": 1,
+ "opacity": 100,
+ "groupIds": [],
+ "frameId": null,
+ "index": "b3Y",
+ "roundness": {
+ "type": 3
+ },
+ "seed": 747521550,
+ "version": 375,
+ "versionNonce": 1806362958,
+ "isDeleted": false,
+ "boundElements": [
+ {
+ "type": "text",
+ "id": "cB5uSftui6wFQBgFfdvW_"
+ },
+ {
+ "id": "wd-I86jKJy27LX1Acjjfi",
+ "type": "arrow"
+ }
+ ],
+ "updated": 1782291769239,
+ "link": null,
+ "locked": false
+ },
+ {
+ "id": "cB5uSftui6wFQBgFfdvW_",
+ "type": "text",
+ "x": 477.4651641845703,
+ "y": 749.130859375,
+ "width": 81.05990600585938,
+ "height": 50,
+ "angle": 0,
+ "strokeColor": "#e03131",
+ "backgroundColor": "transparent",
+ "fillStyle": "solid",
+ "strokeWidth": 2,
+ "strokeStyle": "solid",
+ "roughness": 1,
+ "opacity": 100,
+ "groupIds": [],
+ "frameId": null,
+ "index": "b3Z",
+ "roundness": null,
+ "seed": 1731613774,
+ "version": 394,
+ "versionNonce": 1630632718,
+ "isDeleted": false,
+ "boundElements": [],
+ "updated": 1782291769239,
+ "link": null,
+ "locked": false,
+ "text": "JobTask\n",
+ "fontSize": 20,
+ "fontFamily": 5,
+ "textAlign": "center",
+ "verticalAlign": "middle",
+ "containerId": "5FcG3DrSxIuvw7RfCNgs4",
+ "originalText": "JobTask\n",
+ "autoResize": true,
+ "lineHeight": 1.25
+ },
+ {
+ "id": "xzL1TP5BqEJKSBqkQdoX9",
+ "type": "rectangle",
+ "x": 536.142578125,
+ "y": 785.4150390625,
+ "width": 94.72656249999996,
+ "height": 32.96484375,
+ "angle": 0,
+ "strokeColor": "#1e1e1e",
+ "backgroundColor": "transparent",
+ "fillStyle": "solid",
+ "strokeWidth": 2,
+ "strokeStyle": "solid",
+ "roughness": 1,
+ "opacity": 100,
+ "groupIds": [],
+ "frameId": null,
+ "index": "b3a",
+ "roundness": {
+ "type": 3
+ },
+ "seed": 641899150,
+ "version": 347,
+ "versionNonce": 1330613902,
+ "isDeleted": false,
+ "boundElements": [
+ {
+ "type": "text",
+ "id": "wvQrEp-OzZ3jSJ9_S4JXO"
+ }
+ ],
+ "updated": 1782291781321,
+ "link": null,
+ "locked": false
+ },
+ {
+ "id": "wvQrEp-OzZ3jSJ9_S4JXO",
+ "type": "text",
+ "x": 555.2337951660156,
+ "y": 791.8974609375,
+ "width": 56.54412841796875,
+ "height": 20,
+ "angle": 0,
+ "strokeColor": "#1e1e1e",
+ "backgroundColor": "transparent",
+ "fillStyle": "solid",
+ "strokeWidth": 2,
+ "strokeStyle": "solid",
+ "roughness": 1,
+ "opacity": 100,
+ "groupIds": [],
+ "frameId": null,
+ "index": "b3b",
+ "roundness": null,
+ "seed": 1080826062,
+ "version": 312,
+ "versionNonce": 599428302,
+ "isDeleted": false,
+ "boundElements": [],
+ "updated": 1782291781321,
+ "link": null,
+ "locked": false,
+ "text": "JobRun",
+ "fontSize": 16,
+ "fontFamily": 5,
+ "textAlign": "center",
+ "verticalAlign": "middle",
+ "containerId": "xzL1TP5BqEJKSBqkQdoX9",
+ "originalText": "JobRun",
+ "autoResize": true,
+ "lineHeight": 1.25
+ },
+ {
+ "id": "wd-I86jKJy27LX1Acjjfi",
+ "type": "arrow",
+ "x": 518.0178671875,
+ "y": 612.099609375,
+ "width": 0,
+ "height": 108.193359375,
+ "angle": 0,
+ "strokeColor": "#1e1e1e",
+ "backgroundColor": "transparent",
+ "fillStyle": "solid",
+ "strokeWidth": 2,
+ "strokeStyle": "solid",
+ "roughness": 1,
+ "opacity": 100,
+ "groupIds": [],
+ "frameId": null,
+ "index": "b3c",
+ "roundness": {
+ "type": 2
+ },
+ "seed": 81309906,
+ "version": 39,
+ "versionNonce": 356388238,
+ "isDeleted": false,
+ "boundElements": [
+ {
+ "type": "text",
+ "id": "SD16J9-4VMrgAQqu73iO7"
+ }
+ ],
+ "updated": 1782291809641,
+ "link": null,
+ "locked": false,
+ "points": [
+ [
+ 0,
+ 0
+ ],
+ [
+ 0,
+ 108.193359375
+ ]
+ ],
+ "startBinding": {
+ "elementId": "ZNOEST4A86tz_-0z_CrJr",
+ "mode": "orbit",
+ "fixedPoint": [
+ 0.5001,
+ 1
+ ]
+ },
+ "endBinding": {
+ "elementId": "5FcG3DrSxIuvw7RfCNgs4",
+ "mode": "orbit",
+ "fixedPoint": [
+ 0.5001,
+ 0
+ ]
+ },
+ "startArrowhead": null,
+ "endArrowhead": "arrow",
+ "elbowed": false,
+ "moveMidPointsWithElement": false
+ },
+ {
+ "id": "SD16J9-4VMrgAQqu73iO7",
+ "type": "text",
+ "x": 493.2258292236328,
+ "y": 656.1962890625,
+ "width": 49.584075927734375,
+ "height": 20,
+ "angle": 0,
+ "strokeColor": "#1e1e1e",
+ "backgroundColor": "transparent",
+ "fillStyle": "solid",
+ "strokeWidth": 2,
+ "strokeStyle": "solid",
+ "roughness": 1,
+ "opacity": 100,
+ "groupIds": [],
+ "frameId": null,
+ "index": "b3d",
+ "roundness": null,
+ "seed": 934500562,
+ "version": 8,
+ "versionNonce": 823125714,
+ "isDeleted": false,
+ "boundElements": null,
+ "updated": 1782291809170,
+ "link": null,
+ "locked": false,
+ "text": "create",
+ "fontSize": 16,
+ "fontFamily": 5,
+ "textAlign": "center",
+ "verticalAlign": "middle",
+ "containerId": "wd-I86jKJy27LX1Acjjfi",
+ "originalText": "create",
+ "autoResize": true,
+ "lineHeight": 1.25
+ }
+ ],
+ "appState": {
+ "gridSize": 20,
+ "gridStep": 5,
+ "gridModeEnabled": false,
+ "viewBackgroundColor": "#ffffff",
+ "lockedMultiSelections": {}
+ },
+ "files": {}
+}
\ No newline at end of file
diff --git a/runner-gha/pkg/log/log.excalidraw b/docs/gha-log.excalidraw
similarity index 100%
rename from runner-gha/pkg/log/log.excalidraw
rename to docs/gha-log.excalidraw
diff --git a/docs/server.excalidraw b/docs/server.excalidraw
new file mode 100644
index 00000000..e962407f
--- /dev/null
+++ b/docs/server.excalidraw
@@ -0,0 +1,1269 @@
+{
+ "type": "excalidraw",
+ "version": 2,
+ "source": "https://excalidraw.com",
+ "elements": [
+ {
+ "id": "4Ve7oiS6WH_WGcozFdE7H",
+ "type": "rectangle",
+ "x": 1004.0155024688158,
+ "y": 595.122375604246,
+ "width": 326.23046875,
+ "height": 229.11328125,
+ "angle": 0,
+ "strokeColor": "#2f9e44",
+ "backgroundColor": "#b2f2bb",
+ "fillStyle": "solid",
+ "strokeWidth": 1,
+ "strokeStyle": "solid",
+ "roughness": 1,
+ "opacity": 100,
+ "groupIds": [],
+ "frameId": null,
+ "index": "a0",
+ "roundness": {
+ "type": 3
+ },
+ "seed": 836396436,
+ "version": 60,
+ "versionNonce": 283684156,
+ "isDeleted": false,
+ "boundElements": [
+ {
+ "type": "text",
+ "id": "N-72wjodOWpRax-71rGqe"
+ },
+ {
+ "id": "ZTkfQnP52r0cmPiJKiyo4",
+ "type": "arrow"
+ }
+ ],
+ "updated": 1769767248039,
+ "link": null,
+ "locked": false
+ },
+ {
+ "id": "N-72wjodOWpRax-71rGqe",
+ "type": "text",
+ "x": 1097.9284663360033,
+ "y": 600.122375604246,
+ "width": 138.404541015625,
+ "height": 35,
+ "angle": 0,
+ "strokeColor": "#2f9e44",
+ "backgroundColor": "#ffc9c9",
+ "fillStyle": "solid",
+ "strokeWidth": 1,
+ "strokeStyle": "solid",
+ "roughness": 1,
+ "opacity": 100,
+ "groupIds": [],
+ "frameId": null,
+ "index": "a1",
+ "roundness": null,
+ "seed": 932363668,
+ "version": 40,
+ "versionNonce": 911713724,
+ "isDeleted": false,
+ "boundElements": [],
+ "updated": 1769767248039,
+ "link": null,
+ "locked": false,
+ "text": "Git server",
+ "fontSize": 28,
+ "fontFamily": 5,
+ "textAlign": "center",
+ "verticalAlign": "top",
+ "containerId": "4Ve7oiS6WH_WGcozFdE7H",
+ "originalText": "Git server",
+ "autoResize": true,
+ "lineHeight": 1.25
+ },
+ {
+ "id": "iEhsMZRgyV9dcMvPgYsfN",
+ "type": "rectangle",
+ "x": 1512.40283203125,
+ "y": 596.076171875,
+ "width": 372.0234375,
+ "height": 205.55078125,
+ "angle": 0,
+ "strokeColor": "#2f9e44",
+ "backgroundColor": "#b2f2bb",
+ "fillStyle": "solid",
+ "strokeWidth": 1,
+ "strokeStyle": "solid",
+ "roughness": 1,
+ "opacity": 100,
+ "groupIds": [],
+ "frameId": null,
+ "index": "a2",
+ "roundness": {
+ "type": 3
+ },
+ "seed": 1162315692,
+ "version": 75,
+ "versionNonce": 1361725116,
+ "isDeleted": false,
+ "boundElements": [
+ {
+ "type": "text",
+ "id": "foQsyn52rpc12JzseApXY"
+ },
+ {
+ "id": "D8TjjKkQOMsGkhualPQMW",
+ "type": "arrow"
+ },
+ {
+ "id": "-B3PlOZpgVVzJBsShUxRn",
+ "type": "arrow"
+ },
+ {
+ "id": "-5rpEU-nh4gLWEABCwU89",
+ "type": "arrow"
+ },
+ {
+ "id": "cx-LZJzS1J4oZYp_TfK8-",
+ "type": "arrow"
+ }
+ ],
+ "updated": 1769767237421,
+ "link": null,
+ "locked": false
+ },
+ {
+ "id": "foQsyn52rpc12JzseApXY",
+ "type": "text",
+ "x": 1616.6945266723633,
+ "y": 676.3515625,
+ "width": 163.44004821777344,
+ "height": 45,
+ "angle": 0,
+ "strokeColor": "#2f9e44",
+ "backgroundColor": "#ffc9c9",
+ "fillStyle": "solid",
+ "strokeWidth": 1,
+ "strokeStyle": "solid",
+ "roughness": 1,
+ "opacity": 100,
+ "groupIds": [],
+ "frameId": null,
+ "index": "a3",
+ "roundness": null,
+ "seed": 2114060844,
+ "version": 42,
+ "versionNonce": 883829396,
+ "isDeleted": false,
+ "boundElements": [],
+ "updated": 1769766836673,
+ "link": null,
+ "locked": false,
+ "text": "CI server",
+ "fontSize": 36,
+ "fontFamily": 5,
+ "textAlign": "center",
+ "verticalAlign": "middle",
+ "containerId": "iEhsMZRgyV9dcMvPgYsfN",
+ "originalText": "CI server",
+ "autoResize": true,
+ "lineHeight": 1.25
+ },
+ {
+ "id": "YeGrrpVzA5hvV-x8IgU5d",
+ "type": "rectangle",
+ "x": 2060.77978515625,
+ "y": 636.52734375,
+ "width": 372.0234374999998,
+ "height": 129.9404296875,
+ "angle": 0,
+ "strokeColor": "#2f9e44",
+ "backgroundColor": "#b2f2bb",
+ "fillStyle": "solid",
+ "strokeWidth": 1,
+ "strokeStyle": "solid",
+ "roughness": 1,
+ "opacity": 100,
+ "groupIds": [],
+ "frameId": null,
+ "index": "a4",
+ "roundness": {
+ "type": 3
+ },
+ "seed": 548709524,
+ "version": 214,
+ "versionNonce": 1845815572,
+ "isDeleted": false,
+ "boundElements": [
+ {
+ "type": "text",
+ "id": "PxC-k_56B2xwag3s9TjTC"
+ },
+ {
+ "id": "D8TjjKkQOMsGkhualPQMW",
+ "type": "arrow"
+ }
+ ],
+ "updated": 1769766833861,
+ "link": null,
+ "locked": false
+ },
+ {
+ "id": "PxC-k_56B2xwag3s9TjTC",
+ "type": "text",
+ "x": 2165.161476135254,
+ "y": 678.99755859375,
+ "width": 163.2600555419922,
+ "height": 45,
+ "angle": 0,
+ "strokeColor": "#2f9e44",
+ "backgroundColor": "#ffc9c9",
+ "fillStyle": "solid",
+ "strokeWidth": 1,
+ "strokeStyle": "solid",
+ "roughness": 1,
+ "opacity": 100,
+ "groupIds": [],
+ "frameId": null,
+ "index": "a5",
+ "roundness": null,
+ "seed": 895152660,
+ "version": 215,
+ "versionNonce": 1764664980,
+ "isDeleted": false,
+ "boundElements": [],
+ "updated": 1769766833861,
+ "link": null,
+ "locked": false,
+ "text": "CI runner",
+ "fontSize": 36,
+ "fontFamily": 5,
+ "textAlign": "center",
+ "verticalAlign": "middle",
+ "containerId": "YeGrrpVzA5hvV-x8IgU5d",
+ "originalText": "CI runner",
+ "autoResize": true,
+ "lineHeight": 1.25
+ },
+ {
+ "id": "D8TjjKkQOMsGkhualPQMW",
+ "type": "arrow",
+ "x": 2050.27978515625,
+ "y": 702.828699781541,
+ "width": 155.353515625,
+ "height": 1.6551885655923115,
+ "angle": 0,
+ "strokeColor": "#2f9e44",
+ "backgroundColor": "#b2f2bb",
+ "fillStyle": "solid",
+ "strokeWidth": 1,
+ "strokeStyle": "solid",
+ "roughness": 1,
+ "opacity": 100,
+ "groupIds": [],
+ "frameId": null,
+ "index": "a6",
+ "roundness": {
+ "type": 2
+ },
+ "seed": 1522485524,
+ "version": 159,
+ "versionNonce": 1546893332,
+ "isDeleted": false,
+ "boundElements": [],
+ "updated": 1769766836673,
+ "link": null,
+ "locked": false,
+ "points": [
+ [
+ 0,
+ 0
+ ],
+ [
+ -155.353515625,
+ -1.6551885655923115
+ ]
+ ],
+ "startBinding": {
+ "elementId": "YeGrrpVzA5hvV-x8IgU5d",
+ "mode": "orbit",
+ "fixedPoint": [
+ 0.47492167161091653,
+ 0.5250783283890836
+ ]
+ },
+ "endBinding": {
+ "elementId": "iEhsMZRgyV9dcMvPgYsfN",
+ "mode": "orbit",
+ "fixedPoint": [
+ 0.5001,
+ 0.5001
+ ]
+ },
+ "startArrowhead": null,
+ "endArrowhead": "arrow",
+ "elbowed": false,
+ "moveMidPointsWithElement": false
+ },
+ {
+ "id": "oUM1IyaB-VZoEMQKxISY8",
+ "type": "rectangle",
+ "x": 1514.76513671875,
+ "y": 340.80712890625,
+ "width": 372.0234374999998,
+ "height": 129.9404296875,
+ "angle": 0,
+ "strokeColor": "#2f9e44",
+ "backgroundColor": "#b2f2bb",
+ "fillStyle": "solid",
+ "strokeWidth": 1,
+ "strokeStyle": "solid",
+ "roughness": 1,
+ "opacity": 100,
+ "groupIds": [],
+ "frameId": null,
+ "index": "a9",
+ "roundness": {
+ "type": 3
+ },
+ "seed": 782980756,
+ "version": 262,
+ "versionNonce": 1076483220,
+ "isDeleted": false,
+ "boundElements": [
+ {
+ "type": "text",
+ "id": "b9AtBz6Prn2KYlCNEi6HL"
+ },
+ {
+ "id": "-B3PlOZpgVVzJBsShUxRn",
+ "type": "arrow"
+ }
+ ],
+ "updated": 1769766853910,
+ "link": null,
+ "locked": false
+ },
+ {
+ "id": "b9AtBz6Prn2KYlCNEi6HL",
+ "type": "text",
+ "x": 1617.292823791504,
+ "y": 383.27734375,
+ "width": 166.9680633544922,
+ "height": 45,
+ "angle": 0,
+ "strokeColor": "#2f9e44",
+ "backgroundColor": "#ffc9c9",
+ "fillStyle": "solid",
+ "strokeWidth": 1,
+ "strokeStyle": "solid",
+ "roughness": 1,
+ "opacity": 100,
+ "groupIds": [],
+ "frameId": null,
+ "index": "aA",
+ "roundness": null,
+ "seed": 1974166548,
+ "version": 278,
+ "versionNonce": 1144201132,
+ "isDeleted": false,
+ "boundElements": [],
+ "updated": 1769766850744,
+ "link": null,
+ "locked": false,
+ "text": "CI Portal",
+ "fontSize": 36,
+ "fontFamily": 5,
+ "textAlign": "center",
+ "verticalAlign": "middle",
+ "containerId": "oUM1IyaB-VZoEMQKxISY8",
+ "originalText": "CI Portal",
+ "autoResize": true,
+ "lineHeight": 1.25
+ },
+ {
+ "id": "-B3PlOZpgVVzJBsShUxRn",
+ "type": "arrow",
+ "x": 1694.0058814769673,
+ "y": 481.24755859374994,
+ "width": 0.7199820946757427,
+ "height": 104.32861328125006,
+ "angle": 0,
+ "strokeColor": "#2f9e44",
+ "backgroundColor": "#b2f2bb",
+ "fillStyle": "solid",
+ "strokeWidth": 1,
+ "strokeStyle": "solid",
+ "roughness": 1,
+ "opacity": 100,
+ "groupIds": [],
+ "frameId": null,
+ "index": "aB",
+ "roundness": {
+ "type": 2
+ },
+ "seed": 921357332,
+ "version": 39,
+ "versionNonce": 1565366932,
+ "isDeleted": false,
+ "boundElements": [],
+ "updated": 1769766855613,
+ "link": null,
+ "locked": false,
+ "points": [
+ [
+ 0,
+ 0
+ ],
+ [
+ -0.7199820946757427,
+ 104.32861328125006
+ ]
+ ],
+ "startBinding": {
+ "elementId": "oUM1IyaB-VZoEMQKxISY8",
+ "mode": "orbit",
+ "fixedPoint": [
+ 0.4831737331737341,
+ 0.5168262668262675
+ ]
+ },
+ "endBinding": {
+ "elementId": "iEhsMZRgyV9dcMvPgYsfN",
+ "mode": "orbit",
+ "fixedPoint": [
+ 0.4841732406552877,
+ 0.48417324065528866
+ ]
+ },
+ "startArrowhead": null,
+ "endArrowhead": "arrow",
+ "elbowed": false
+ },
+ {
+ "id": "_VKENIIePloLDy4uy_1sl",
+ "type": "line",
+ "x": 1793.9113132990817,
+ "y": 1016.2964350303951,
+ "width": 88.21658171083376,
+ "height": 113.8575037534261,
+ "angle": 0,
+ "strokeColor": "#2f9e44",
+ "backgroundColor": "#b2f2bb",
+ "fillStyle": "solid",
+ "strokeWidth": 1,
+ "strokeStyle": "solid",
+ "roughness": 1,
+ "opacity": 100,
+ "groupIds": [
+ "UaE3XhfwpxqgdnfCWFgna"
+ ],
+ "seed": 213851564,
+ "version": 3949,
+ "versionNonce": 442945324,
+ "isDeleted": false,
+ "points": [
+ [
+ 0,
+ 0
+ ],
+ [
+ 0.29089298333313673,
+ 86.05288422061678
+ ],
+ [
+ 0.013613108737802165,
+ 95.84963140781468
+ ],
+ [
+ 4.543349062013738,
+ 100.08268472409586
+ ],
+ [
+ 20.317928500125443,
+ 103.66521849306073
+ ],
+ [
+ 46.98143617553956,
+ 104.78076599153316
+ ],
+ [
+ 72.45665455006592,
+ 102.9996310009587
+ ],
+ [
+ 85.99182564238487,
+ 98.74007888522631
+ ],
+ [
+ 87.90077837148979,
+ 95.14923176741362
+ ],
+ [
+ 88.16888387182134,
+ 87.26194204835767
+ ],
+ [
+ 87.95845222911922,
+ 7.219356674957439
+ ],
+ [
+ 87.48407176050935,
+ -0.3431928547433216
+ ],
+ [
+ 81.81967725989045,
+ -4.569951534960701
+ ],
+ [
+ 69.89167127292335,
+ -7.017866506201685
+ ],
+ [
+ 42.70935725136615,
+ -9.076737761892943
+ ],
+ [
+ 20.91603533578692,
+ -7.849028196182914
+ ],
+ [
+ 3.775735655469765,
+ -3.684787148572539
+ ],
+ [
+ -0.047697839012426885,
+ -0.0517060607782156
+ ],
+ [
+ 0,
+ 0
+ ]
+ ],
+ "lastCommittedPoint": [
+ 1.0602678571428896,
+ 551.8638392857142
+ ],
+ "startBinding": null,
+ "endBinding": null,
+ "startArrowhead": null,
+ "endArrowhead": null,
+ "index": "aC",
+ "frameId": null,
+ "roundness": {
+ "type": 2
+ },
+ "boundElements": [],
+ "updated": 1769766948637,
+ "link": null,
+ "locked": false,
+ "polygon": false
+ },
+ {
+ "id": "lLZbD3b2MDrNxGZ3nUoPh",
+ "type": "line",
+ "x": 1794.5986748885791,
+ "y": 1081.5865630611827,
+ "width": 88.30808627974527,
+ "height": 9.797916664247975,
+ "angle": 0,
+ "strokeColor": "#2f9e44",
+ "backgroundColor": "#b2f2bb",
+ "fillStyle": "solid",
+ "strokeWidth": 1,
+ "strokeStyle": "solid",
+ "roughness": 1,
+ "opacity": 100,
+ "groupIds": [
+ "UaE3XhfwpxqgdnfCWFgna"
+ ],
+ "seed": 283543596,
+ "version": 1683,
+ "versionNonce": 1066535316,
+ "isDeleted": false,
+ "points": [
+ [
+ 0,
+ 0
+ ],
+ [
+ 2.326538897826852,
+ 3.9056133261361587
+ ],
+ [
+ 12.359939318521995,
+ 7.182387014695761
+ ],
+ [
+ 25.710950037209347,
+ 9.166781347006062
+ ],
+ [
+ 46.6269757640547,
+ 9.347610268342288
+ ],
+ [
+ 71.03526003420632,
+ 8.084235941711592
+ ],
+ [
+ 85.2899738827162,
+ 3.4881086608341767
+ ],
+ [
+ 88.30808627974527,
+ -0.45030639590568633
+ ]
+ ],
+ "lastCommittedPoint": [
+ 510.69444444444457,
+ -2.6041666666666288
+ ],
+ "startBinding": null,
+ "endBinding": null,
+ "startArrowhead": null,
+ "endArrowhead": null,
+ "index": "aD",
+ "frameId": null,
+ "roundness": {
+ "type": 2
+ },
+ "boundElements": [],
+ "updated": 1769766948637,
+ "link": null,
+ "locked": false,
+ "polygon": false
+ },
+ {
+ "id": "tbN28MRu7s1nw3VsmB5hC",
+ "type": "line",
+ "x": 1793.5049333765176,
+ "y": 1048.512408499111,
+ "width": 88.30808627974527,
+ "height": 9.797916664247975,
+ "angle": 0,
+ "strokeColor": "#2f9e44",
+ "backgroundColor": "#b2f2bb",
+ "fillStyle": "solid",
+ "strokeWidth": 1,
+ "strokeStyle": "solid",
+ "roughness": 1,
+ "opacity": 100,
+ "groupIds": [
+ "UaE3XhfwpxqgdnfCWFgna"
+ ],
+ "seed": 566010540,
+ "version": 1770,
+ "versionNonce": 1100745132,
+ "isDeleted": false,
+ "points": [
+ [
+ 0,
+ 0
+ ],
+ [
+ 2.326538897826852,
+ 3.9056133261361587
+ ],
+ [
+ 12.359939318521995,
+ 7.182387014695761
+ ],
+ [
+ 25.710950037209347,
+ 9.166781347006062
+ ],
+ [
+ 46.6269757640547,
+ 9.347610268342288
+ ],
+ [
+ 71.03526003420632,
+ 8.084235941711592
+ ],
+ [
+ 85.2899738827162,
+ 3.4881086608341767
+ ],
+ [
+ 88.30808627974527,
+ -0.45030639590568633
+ ]
+ ],
+ "lastCommittedPoint": [
+ 510.69444444444457,
+ -2.6041666666666288
+ ],
+ "startBinding": null,
+ "endBinding": null,
+ "startArrowhead": null,
+ "endArrowhead": null,
+ "index": "aE",
+ "frameId": null,
+ "roundness": {
+ "type": 2
+ },
+ "boundElements": [],
+ "updated": 1769766948637,
+ "link": null,
+ "locked": false,
+ "polygon": false
+ },
+ {
+ "type": "ellipse",
+ "version": 4787,
+ "versionNonce": 2061089556,
+ "isDeleted": false,
+ "id": "ZqkwjoItOVTFYFr2prUS8",
+ "fillStyle": "solid",
+ "strokeWidth": 1,
+ "strokeStyle": "solid",
+ "roughness": 1,
+ "opacity": 100,
+ "angle": 0,
+ "x": 1792.3841106903558,
+ "y": 1008.2717388032984,
+ "strokeColor": "#2f9e44",
+ "backgroundColor": "#b2f2bb",
+ "width": 87.65074610854188,
+ "height": 17.72670397681366,
+ "seed": 367750444,
+ "groupIds": [
+ "UaE3XhfwpxqgdnfCWFgna"
+ ],
+ "index": "aF",
+ "frameId": null,
+ "roundness": null,
+ "boundElements": [
+ {
+ "id": "-5rpEU-nh4gLWEABCwU89",
+ "type": "arrow"
+ }
+ ],
+ "updated": 1769766952709,
+ "link": null,
+ "locked": false
+ },
+ {
+ "id": "H9HlgS1-TFsCucVUmzRbS",
+ "type": "ellipse",
+ "x": 1863.8938429909365,
+ "y": 1032.847541680432,
+ "width": 12.846057046979809,
+ "height": 13.941904362416096,
+ "angle": 0,
+ "strokeColor": "#2f9e44",
+ "backgroundColor": "#b2f2bb",
+ "fillStyle": "solid",
+ "strokeWidth": 1,
+ "strokeStyle": "solid",
+ "roughness": 1,
+ "opacity": 100,
+ "groupIds": [
+ "UaE3XhfwpxqgdnfCWFgna"
+ ],
+ "seed": 1591535532,
+ "version": 157,
+ "versionNonce": 1933964332,
+ "isDeleted": false,
+ "index": "aG",
+ "frameId": null,
+ "roundness": null,
+ "boundElements": [],
+ "updated": 1769766948637,
+ "link": null,
+ "locked": false
+ },
+ {
+ "id": "RmR7i7C-WUQmhrVwr_Lol",
+ "type": "ellipse",
+ "x": 1863.8938429909365,
+ "y": 1063.4499955394924,
+ "width": 12.846057046979809,
+ "height": 13.941904362416096,
+ "angle": 0,
+ "strokeColor": "#2f9e44",
+ "backgroundColor": "#b2f2bb",
+ "fillStyle": "solid",
+ "strokeWidth": 1,
+ "strokeStyle": "solid",
+ "roughness": 1,
+ "opacity": 100,
+ "groupIds": [
+ "UaE3XhfwpxqgdnfCWFgna"
+ ],
+ "seed": 817566252,
+ "version": 206,
+ "versionNonce": 1130607764,
+ "isDeleted": false,
+ "index": "aH",
+ "frameId": null,
+ "roundness": null,
+ "boundElements": [],
+ "updated": 1769766948637,
+ "link": null,
+ "locked": false
+ },
+ {
+ "id": "vZ4nJv0srLZDX6kzPyCSj",
+ "type": "ellipse",
+ "x": 1863.8938429909365,
+ "y": 1096.710796713989,
+ "width": 12.846057046979809,
+ "height": 13.941904362416096,
+ "angle": 0,
+ "strokeColor": "#2f9e44",
+ "backgroundColor": "#b2f2bb",
+ "fillStyle": "solid",
+ "strokeWidth": 1,
+ "strokeStyle": "solid",
+ "roughness": 1,
+ "opacity": 100,
+ "groupIds": [
+ "UaE3XhfwpxqgdnfCWFgna"
+ ],
+ "seed": 711978156,
+ "version": 260,
+ "versionNonce": 1565429420,
+ "isDeleted": false,
+ "index": "aI",
+ "frameId": null,
+ "roundness": null,
+ "boundElements": [],
+ "updated": 1769766948637,
+ "link": null,
+ "locked": false
+ },
+ {
+ "id": "IbMkrKFu4XEYA7ZjH3xZP",
+ "type": "rectangle",
+ "x": 1473.29638671875,
+ "y": 671.6025390625,
+ "width": 129.70703124999991,
+ "height": 48.7451171875,
+ "angle": 4.71238898038469,
+ "strokeColor": "#e03131",
+ "backgroundColor": "#ffc9c9",
+ "fillStyle": "solid",
+ "strokeWidth": 1,
+ "strokeStyle": "solid",
+ "roughness": 1,
+ "opacity": 100,
+ "groupIds": [],
+ "frameId": null,
+ "index": "aJ",
+ "roundness": {
+ "type": 3
+ },
+ "seed": 514233620,
+ "version": 230,
+ "versionNonce": 1442405524,
+ "isDeleted": false,
+ "boundElements": [
+ {
+ "type": "text",
+ "id": "9XHipyZNXQMOK0_YRGqS_"
+ },
+ {
+ "id": "ZTkfQnP52r0cmPiJKiyo4",
+ "type": "arrow"
+ }
+ ],
+ "updated": 1769766943939,
+ "link": null,
+ "locked": false
+ },
+ {
+ "id": "9XHipyZNXQMOK0_YRGqS_",
+ "type": "text",
+ "x": 1499.559944152832,
+ "y": 683.47509765625,
+ "width": 77.17991638183594,
+ "height": 25,
+ "angle": 4.71238898038469,
+ "strokeColor": "#e03131",
+ "backgroundColor": "#ffc9c9",
+ "fillStyle": "solid",
+ "strokeWidth": 1,
+ "strokeStyle": "solid",
+ "roughness": 1,
+ "opacity": 100,
+ "groupIds": [],
+ "frameId": null,
+ "index": "aK",
+ "roundness": null,
+ "seed": 1130547220,
+ "version": 109,
+ "versionNonce": 518194348,
+ "isDeleted": false,
+ "boundElements": [],
+ "updated": 1769766912156,
+ "link": null,
+ "locked": false,
+ "text": "adaptor",
+ "fontSize": 20,
+ "fontFamily": 5,
+ "textAlign": "center",
+ "verticalAlign": "middle",
+ "containerId": "IbMkrKFu4XEYA7ZjH3xZP",
+ "originalText": "adaptor",
+ "autoResize": true,
+ "lineHeight": 1.25
+ },
+ {
+ "id": "Ue4zezEdIhQ1xt5_RgViQ",
+ "type": "arrow",
+ "x": 1503.27734375,
+ "y": 684.0572826436296,
+ "width": 171.19091796875,
+ "height": 4.814581932754436,
+ "angle": 0,
+ "strokeColor": "#2f9e44",
+ "backgroundColor": "#ffc9c9",
+ "fillStyle": "solid",
+ "strokeWidth": 1,
+ "strokeStyle": "solid",
+ "roughness": 1,
+ "opacity": 100,
+ "groupIds": [],
+ "frameId": null,
+ "index": "aL",
+ "roundness": {
+ "type": 2
+ },
+ "seed": 2136536852,
+ "version": 66,
+ "versionNonce": 1653541652,
+ "isDeleted": false,
+ "boundElements": [],
+ "updated": 1769766944089,
+ "link": null,
+ "locked": false,
+ "points": [
+ [
+ 0,
+ 0
+ ],
+ [
+ -171.19091796875,
+ 4.814581932754436
+ ]
+ ],
+ "startBinding": null,
+ "endBinding": null,
+ "startArrowhead": null,
+ "endArrowhead": "arrow",
+ "elbowed": false,
+ "moveMidPointsWithElement": false
+ },
+ {
+ "id": "ZTkfQnP52r0cmPiJKiyo4",
+ "type": "arrow",
+ "x": 1340.7459712188158,
+ "y": 741.9375561011324,
+ "width": 173.12170456243416,
+ "height": 2.1660717261323725,
+ "angle": 0,
+ "strokeColor": "#2f9e44",
+ "backgroundColor": "#ffc9c9",
+ "fillStyle": "solid",
+ "strokeWidth": 1,
+ "strokeStyle": "solid",
+ "roughness": 1,
+ "opacity": 100,
+ "groupIds": [],
+ "frameId": null,
+ "index": "aM",
+ "roundness": {
+ "type": 2
+ },
+ "seed": 1674483348,
+ "version": 44,
+ "versionNonce": 877891132,
+ "isDeleted": false,
+ "boundElements": [],
+ "updated": 1769767248039,
+ "link": null,
+ "locked": false,
+ "points": [
+ [
+ 0,
+ 0
+ ],
+ [
+ 173.12170456243416,
+ -2.1660717261323725
+ ]
+ ],
+ "startBinding": {
+ "elementId": "4Ve7oiS6WH_WGcozFdE7H",
+ "mode": "orbit",
+ "fixedPoint": [
+ 0.6476480316437356,
+ 0.6476480316437356
+ ]
+ },
+ "endBinding": {
+ "elementId": "IbMkrKFu4XEYA7ZjH3xZP",
+ "mode": "inside",
+ "fixedPoint": [
+ 0.16234377352808324,
+ 0.0018531503556045276
+ ]
+ },
+ "startArrowhead": null,
+ "endArrowhead": "arrow",
+ "elbowed": false,
+ "moveMidPointsWithElement": false
+ },
+ {
+ "id": "-5rpEU-nh4gLWEABCwU89",
+ "type": "arrow",
+ "x": 1761.0692006881538,
+ "y": 812.126953125,
+ "width": 77.70358976091734,
+ "height": 185.66635260105863,
+ "angle": 0,
+ "strokeColor": "#2f9e44",
+ "backgroundColor": "#b2f2bb",
+ "fillStyle": "solid",
+ "strokeWidth": 1,
+ "strokeStyle": "solid",
+ "roughness": 1,
+ "opacity": 100,
+ "groupIds": [],
+ "frameId": null,
+ "index": "aN",
+ "roundness": {
+ "type": 2
+ },
+ "seed": 956735380,
+ "version": 22,
+ "versionNonce": 1738094740,
+ "isDeleted": false,
+ "boundElements": [],
+ "updated": 1769766952709,
+ "link": null,
+ "locked": false,
+ "points": [
+ [
+ 0,
+ 0
+ ],
+ [
+ 77.70358976091734,
+ 185.66635260105863
+ ]
+ ],
+ "startBinding": {
+ "elementId": "iEhsMZRgyV9dcMvPgYsfN",
+ "mode": "orbit",
+ "fixedPoint": [
+ 0.5523435967928149,
+ 0.5523435967928159
+ ]
+ },
+ "endBinding": {
+ "elementId": "ZqkwjoItOVTFYFr2prUS8",
+ "mode": "orbit",
+ "fixedPoint": [
+ 0.6216055482076189,
+ 0.5001
+ ]
+ },
+ "startArrowhead": null,
+ "endArrowhead": "arrow",
+ "elbowed": false
+ },
+ {
+ "id": "eL5SIz12CogN0ZinY7p_S",
+ "type": "diamond",
+ "x": 1479.6727305572042,
+ "y": 1040.31811853,
+ "width": 112.64736525303451,
+ "height": 36.77344700318558,
+ "angle": 0,
+ "strokeColor": "#2f9e44",
+ "backgroundColor": "#b2f2bb",
+ "fillStyle": "solid",
+ "strokeWidth": 1,
+ "strokeStyle": "solid",
+ "roughness": 1,
+ "opacity": 100,
+ "groupIds": [
+ "5Stc_ne_JvrDYPVG1dj0c"
+ ],
+ "seed": 133740732,
+ "version": 697,
+ "versionNonce": 350601916,
+ "isDeleted": false,
+ "index": "aT",
+ "frameId": null,
+ "roundness": null,
+ "boundElements": [],
+ "updated": 1769767234006,
+ "link": null,
+ "locked": false
+ },
+ {
+ "id": "s9d6ckVu8WefNzAI1YIJo",
+ "type": "diamond",
+ "x": 1479.6727305572042,
+ "y": 1031.4463386017414,
+ "width": 112.64736525303451,
+ "height": 36.77344700318558,
+ "angle": 0,
+ "strokeColor": "#2f9e44",
+ "backgroundColor": "#b2f2bb",
+ "fillStyle": "solid",
+ "strokeWidth": 1,
+ "strokeStyle": "solid",
+ "roughness": 1,
+ "opacity": 100,
+ "groupIds": [
+ "5Stc_ne_JvrDYPVG1dj0c"
+ ],
+ "seed": 1985626428,
+ "version": 738,
+ "versionNonce": 890637116,
+ "isDeleted": false,
+ "index": "aU",
+ "frameId": null,
+ "roundness": null,
+ "boundElements": [],
+ "updated": 1769767234006,
+ "link": null,
+ "locked": false
+ },
+ {
+ "id": "Hl6x8t2YDZh3jnxs6mB-P",
+ "type": "diamond",
+ "x": 1479.6727305572042,
+ "y": 1018.8157790070293,
+ "width": 112.64736525303451,
+ "height": 36.77344700318558,
+ "angle": 0,
+ "strokeColor": "#2f9e44",
+ "backgroundColor": "#b2f2bb",
+ "fillStyle": "solid",
+ "strokeWidth": 1,
+ "strokeStyle": "solid",
+ "roughness": 1,
+ "opacity": 100,
+ "groupIds": [
+ "5Stc_ne_JvrDYPVG1dj0c"
+ ],
+ "seed": 544651708,
+ "version": 818,
+ "versionNonce": 1764311996,
+ "isDeleted": false,
+ "index": "aV",
+ "frameId": null,
+ "roundness": null,
+ "boundElements": [],
+ "updated": 1769767234006,
+ "link": null,
+ "locked": false
+ },
+ {
+ "id": "TdKuO0hrMszcQqLnzPwND",
+ "type": "diamond",
+ "x": 1479.6727305572042,
+ "y": 1006.284106709732,
+ "width": 112.64736525303451,
+ "height": 36.77344700318558,
+ "angle": 0,
+ "strokeColor": "#2f9e44",
+ "backgroundColor": "#b2f2bb",
+ "fillStyle": "solid",
+ "strokeWidth": 1,
+ "strokeStyle": "solid",
+ "roughness": 1,
+ "opacity": 100,
+ "groupIds": [
+ "5Stc_ne_JvrDYPVG1dj0c"
+ ],
+ "seed": 829432380,
+ "version": 861,
+ "versionNonce": 1741855036,
+ "isDeleted": false,
+ "index": "aW",
+ "frameId": null,
+ "roundness": null,
+ "boundElements": [
+ {
+ "id": "cx-LZJzS1J4oZYp_TfK8-",
+ "type": "arrow"
+ }
+ ],
+ "updated": 1769767238509,
+ "link": null,
+ "locked": false
+ },
+ {
+ "id": "cx-LZJzS1J4oZYp_TfK8-",
+ "type": "arrow",
+ "x": 1659.6667635362599,
+ "y": 801.3073182923445,
+ "width": 93.82392922891495,
+ "height": 203.84129520647912,
+ "angle": 0,
+ "strokeColor": "#2f9e44",
+ "backgroundColor": "#b2f2bb",
+ "fillStyle": "solid",
+ "strokeWidth": 1,
+ "strokeStyle": "solid",
+ "roughness": 1,
+ "opacity": 100,
+ "groupIds": [],
+ "frameId": null,
+ "index": "aX",
+ "roundness": {
+ "type": 2
+ },
+ "seed": 482905404,
+ "version": 24,
+ "versionNonce": 396103868,
+ "isDeleted": false,
+ "boundElements": [],
+ "updated": 1769767238509,
+ "link": null,
+ "locked": false,
+ "points": [
+ [
+ 0,
+ 0
+ ],
+ [
+ -93.82392922891495,
+ 203.84129520647912
+ ]
+ ],
+ "startBinding": {
+ "elementId": "iEhsMZRgyV9dcMvPgYsfN",
+ "mode": "inside",
+ "fixedPoint": [
+ 0.3958458437313102,
+ 0.9984449836156702
+ ]
+ },
+ "endBinding": {
+ "elementId": "TdKuO0hrMszcQqLnzPwND",
+ "mode": "orbit",
+ "fixedPoint": [
+ 0.68517127475273,
+ 0.5001
+ ]
+ },
+ "startArrowhead": null,
+ "endArrowhead": "arrow",
+ "elbowed": false
+ }
+ ],
+ "appState": {
+ "gridSize": 20,
+ "gridStep": 5,
+ "gridModeEnabled": false,
+ "viewBackgroundColor": "#ffffff",
+ "lockedMultiSelections": {}
+ },
+ "files": {}
+}
\ No newline at end of file