diff --git a/docs/kcl/index.md b/docs/kcl/index.md index da2243646..765b2eb06 100644 --- a/docs/kcl/index.md +++ b/docs/kcl/index.md @@ -61,7 +61,6 @@ layout: manual * [`log10`](kcl/log10) * [`log2`](kcl/log2) * [`m`](kcl/m) -* [`map`](kcl/map) * [`max`](kcl/max) * [`min`](kcl/min) * [`mirror2d`](kcl/mirror2d) diff --git a/docs/kcl/map.md b/docs/kcl/map.md deleted file mode 100644 index 019aa041b..000000000 --- a/docs/kcl/map.md +++ /dev/null @@ -1,56 +0,0 @@ ---- -title: "map" -excerpt: "Apply a function to every element of a list." -layout: manual ---- - -Apply a function to every element of a list. - -Given a list like `[a, b, c]`, and a function like `f`, returns `[f(a), f(b), f(c)]` - -```js -map(array: [KclValue], map_fn: FunctionParam) -> [KclValue] -``` - - -### Arguments - -| Name | Type | Description | Required | -|----------|------|-------------|----------| -| `array` | [`[KclValue]`](/docs/kcl/types/KclValue) | | Yes | -| `map_fn` | `FunctionParam` | | Yes | - -### Returns - -[`[KclValue]`](/docs/kcl/types/KclValue) - - -### Examples - -```js -const r = 10 // radius -fn drawCircle = (id) => { - return startSketchOn("XY") - |> circle({ center: [id * 2 * r, 0], radius: r }, %) -} - -// Call `drawCircle`, passing in each element of the array. -// The outputs from each `drawCircle` form a new array, -// which is the return value from `map`. -const circles = map([1, 2, 3], drawCircle) -``` - -![Rendered example of map 0](data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAABQAAAALQCAYAAADPfd1WAACGl0lEQVR4Ae3gAZAkSZIkSRKLqpm7R0REZmZmVlVVVVV3d3d3d/fMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMdHd3d3dXV1VVVVVmZkZGRIS7m5kKz0xmV3d1d3dPz8zMzMxMYn3Qgx7EVVddddVVV1111VVXXXXVVVddddVVV131fxKVq6666qqrrrrqqquuuuqqq6666qqrrrrq/yoqV1111VVXXXXVVVddddVVV1111VVXXXXV/1VUrrrqqquuuuqqq6666qqrrrrqqquuuuqq/6uoXHXVVVddddVVV1111VVXXXXVVVddddVV/1dRueqqq6666qqrrrrqqquuuuqqq6666qqr/q+ictVVV1111VVXXXXVVVddddVVV1111VVX/V9F5aqrrrrqqquuuuqqq6666qqrrrrqqquu+r+KylVXXXXVVVddddVVV1111VVXXXXVVVdd9X8Vlauuuuqqq6666qqrrrrqqquuuuqqq6666v8qKlddddVVV1111VVXXXXVVVddddVVV1111f9VVK666qqrrrrqqquuuuqqq6666qqrrrrqqv+rqFx11VVXXXXVVVddddVVV1111VVXXXXVVf9XUbnqqquuuuqqq6666qqrrrrqqquuuuqqq/6vonLVVVddddVVV1111VVXXXXVVVddddVVV/1fReWqq6666qqrrrrqqquuuuqqq6666qqrrvq/ispVV1111VVXXXXVVVddddVVV1111VVXXfV/FZWrrrrqqquuuuqqq6666qqrrrrqqquuuur/KipXXXXVVVddddVVV1111VVXXXXVVVddddX/VVSuuuqqq6666qqrrrrqqquuuuqqq6666qr/q6hcddVVV1111VVXXXXVVVddddVVV1111VX/V1G56qqrrrrqqquuuuqqq6666qqrrrrqqqv+r6Jy1VVXXXXVVVddddVVV1111VVXXXXVVVf9X0Xlqquuuuqqq6666qqrrrrqqquuuuqqq676v4rKVVddddVVV1111VVXXXXVVVddddVVV131fxWVq6666qqrrrrqqquuuuqqq6666qqrrrrq/yoqV1111VVXXXXVVVddddVVV1111VVXXXXV/1VUrrrqqquuuuqqq6666qqrrrrqqquuuuqq/6uoXHXVVVddddVVV1111VVXXXXVVVddddVV/1dRueqqq6666qqrrrrqqquuuuqqq6666qqr/q+ictVVV1111VVXXXXVVVddddVVV1111VVX/V9F5aqrrrrqqquuuuqqq6666qqrrrrqqquu+r+KylVXXXXVVVddddVVV1111VVXXXXVVVdd9X8Vlauuuuqqq6666qqrrrrqqquuuuqqq6666v8qKlddddVVV1111VVXXXXVVVddddVVV1111f9VVK666qqrrrrqqquuuuqqq6666qqrrrrqqv+rqFx11VVXXXXVVVddddVVV1111VVXXXXVVf9XUbnqqquuuuqqq6666qqrrrrqqquuuuqqq/6vonLVVVddddVVV1111VVXXXXVVVddddVVV/1fReWqq6666qqrrrrqqquuuuqqq6666qqrrvq/ispVV1111VVXXXXVVVddddVVV1111VVXXfV/FZWrrrrqqquuuuqqq6666qqrrrrqqquuuur/KipXXXXVVVddddVVV1111VVXXXXVVVddddX/VVSuuuqqq6666qqrrrrqqquuuuqqq6666qr/q6hcddVVV1111VVXXXXVVVddddVVV1111VX/V1G56qqrrrrqqquuuuqqq6666qqrrrrqqqv+r6Jy1VVXXXXVVVddddVVV1111VVXXXXVVVf9X0Xlqquuuuqqq6666qqrrrrqqquuuuqqq676v4rKVVddddVVV1111VVXXXXVVVddddVVV131fxWVq6666qqrrrrqqquuuuqqq6666qqrrrrq/yoqV1111VVXXXXVVVddddVVV1111VVXXXXV/1VUrrrqqquuuuqqq6666qqrrrrqqquuuuqq/6uoXHXVVVddddVVV1111VVXXXXVVVddddVV/1dRueqqq6666qqrrrrqqquuuuqqq6666qqr/q+ictVVV1111VVXXXXVVVddddVVV1111VVX/V9F5aqrrrrqqquuuuqqq6666qqrrrrqqquu+r+KylVXXXXVVVddddVVV1111VVXXXXVVVdd9X8Vlauuuuqqq6666qqrrrrqqquuuuqqq6666v8qKlddddVVV1111VVXXXXVVVddddVVV1111f9VVK666qqrrrrqqquuuuqqq6666qqrrrrqqv+rqFx11VVXXXXVVVddddVVV1111VVXXXXVVf9XUbnqqquuuuqqq6666qqrrrrqqquuuuqqq/6vonLVVVddddVVV1111VVXXXXVVVddddVVV/1fReWqq6666qqrrrrqqquuuuqqq6666qqrrvq/ispVV1111VVXXXXVVVddddVVV1111VVXXfV/FZWrrrrqqquuuuqqq6666qqrrrrqqquuuur/KipXXXXVVVddddVVV1111VVXXXXVVVddddX/VVSuuuqqq6666qqrrrrqqquuuuqqq6666qr/q6hcddVVV1111VVXXXXVVVddddVVV1111VX/V1G56qqrrrrqqquuuuqqq6666qqrrrrqqqv+r6Jy1VVXXXXVVVddddVVV1111VVXXXXVVVf9X0Xlqquuuuqqq6666qqrrrrqqquuuuqqq676v4rKVVddddVVV1111VVXXXXVVVddddVVV131fxWVq6666qqrrrrqqquuuuqqq6666qqrrrrq/yoqV1111VVXXXXVVVddddVVV1111VVXXXXV/1VUrrrqqquuuuqqq6666qqrrrrqqquuuuqq/6uoXHXVVVddddVVV1111VVXXXXVVVddddVV/1dRueqqq6666qqrrrrqqquuuuqqq6666qqr/q+ictVVV1111VVXXXXVVVddddVVV1111VVX/V9F5aqrrrrqqquuuuqqq6666qqrrrrqqquu+r+KylVXXXXVVVddddVVV1111VVXXXXVVVdd9X8Vlauuuuqqq6666qqrrrrqqquuuuqqq6666v8qKlddddVVV1111VVXXXXVVVddddVVV1111f9VVK666qqrrrrqqquuuuqqq6666qqrrrrqqv+rqFx11VVXXXXVVVddddVVV1111VVXXXXVVf9XUbnqqquuuuqqq6666qqrrrrqqquuuuqqq/6vonLVVVddddVVV1111VVXXXXVVVddddVVV/1fReWqq6666qqrrrrqqquuuuqqq6666qqrrvq/ispVV1111VVXXXXVVVddddVVV1111VVXXfV/FZWrrrrqqquuuuqqq6666qqrrrrqqquuuur/KipXXXXVVVddddVVV1111VVXXXXVVVddddX/VVSuuuqqq6666qqrrrrqqquuuuqqq6666qr/q6hcddVVV1111VVXXXXVVVddddVVV1111VX/V1G56qqrrrrqqquuuuqqq6666qqrrrrqqqv+r6Jy1VVXXXXVVVddddVVV1111VVXXXXVVVf9X0Xlqquuuuqqq6666qqrrrrqqquuuuqqq676v4rKVVddddVVV1111VVXXXXVVVddddVVV131fxWVq6666qqrrrrqqquuuuqqq6666qqrrrrq/yoqV1111VVXXXXVVVddddVVV1111VVXXXXV/1VUrrrqqquuuuqqq6666qqrrrrqqquuuuqq/6uoXHXVVVddddVVV1111VVXXXXVVVddddVV/1dRueqqq6666qqrrrrqqquuuuqqq6666qqr/q+ictVVV1111VVXXXXVVVddddVVV1111VVX/V9F5aqrrrrqqquuuuqqq6666qqrrrrqqquu+r+KylVXXXXVVVddddVVV1111VVXXXXVVVdd9X8Vlauuuuqqq6666qqrrrrqqquuuuqqq6666v8qKlddddVVV1111VVXXXXVVVddddVVV1111f9VVK666qqrrrrqqquuuuqqq6666qqrrrrqqv+rqFx11VVXXXXVVVddddVVV1111VVXXXXVVf9XUbnqqquuuuqqq6666qqrrrrqqquuuuqqq/6vonLVVVddddVVV1111VVXXXXVVVddddVVV/1fReWqq6666qqrrrrqqquuuuqqq6666qqrrvq/ispVV1111VVXXXXVVVddddVVV1111VVXXfV/FZWrrrrqqquuuuqqq6666qqrrrrqqquuuur/KipXXXXVVVddddVVV1111VVXXXXVVVddddX/VVSuuuqqq6666qqrrrrqqquuuuqqq6666qr/q6hcddVVV1111VVXXXXVVVddddVVV1111VX/V1G56qqrrrrqqquuuuqqq6666qqrrrrqqqv+r6Jy1VVXXXXVVVddddVVV1111VVXXXXVVVf9X0Xlqquuuuqqq6666qqrrrrqqquuuuqqq676v4rKVVddddVVV1111VVXXXXVVVddddVVV131fxWVq6666qqrrrrqqquuuuqqq6666qqrrrrq/yoqV1111VVXXXXVVVddddVVV1111VVXXXXV/1VUrrrqqquuuuqqq6666qqrrrrqqquuuuqq/6uoXHXVVVddddVVV1111VVXXXXVVVddddVV/1dRueqqq6666qqrrrrqqquuuuqqq6666qqr/q+ictVVV1111VVXXXXVVVddddVVV1111VVX/V9F5aqrrrrqqquuuuqqq6666qqrrrrqqquu+r+KylVXXXXVVVddddVVV1111VVXXXXVVVdd9X8Vlauuuuqqq6666qqrrrrqqquuuuqqq6666v8qKlddddVVV1111VVXXXXVVVddddVVV1111f9VVK666qqrrrrqqquuuuqqq6666qqrrrrqqv+rqFx11VVXXXXVVVddddVVV1111VVXXXXVVf9XUbnqqquuuuqqq6666qqrrrrqqquuuuqqq/6vonLVVVddddVVV1111VVXXXXVVVddddVVV/1fReWqq6666qqrrrrqqquuuuqqq6666qqrrvq/ispVV1111VVXXXXVVVddddVVV1111VVXXfV/FZWrrrrqqquuuuqqq6666qqrrrrqqquuuur/KipXXXXVVVddddVVV1111VVXXXXVVVddddX/VVSuuuqqq6666qqrrrrqqquuuuqqq6666qr/q6hcddVVV1111VVXXXXVVVddddVVV1111VX/V1G56qqrrrrqqquuuuqqq6666qqrrrrqqqv+r6Jy1VVXXXXVVVddddVVV1111VVXXXXVVVf9X0Xlqquuuuqqq6666qqrrrrqqquuuuqqq676v4rKVVddddVVV1111VVXXXXVVVddddVVV131fxWVq6666qqrrrrqqquuuuqqq6666qqrrrrq/yoqV1111VVXXXXVVVddddVVV1111VVXXXXV/1VUrrrqqquuuuqqq6666qqrrrrqqquuuuqq/6uoXHXVVVddddVVV1111VVXXXXVVVddddVV/1dRueqqq6666qqrrrrqqquuuuqqq6666qqr/q+ictVVV1111VVXXXXVVVddddVVV1111VVX/V9F5aqrrrrqqquuuuqqq6666qqrrrrqqquu+r+KylVXXXXVVVddddVVV1111VVXXXXVVVdd9X8Vlauuuuqqq6666qqrrrrqqquuuuqqq6666v8qKlddddVVV1111VVXXXXVVVddddVVV1111f9VVK666qqrrrrqqquuuuqqq6666qqrrrrqqv+rqFx11VVXXXXVVVddddVVV1111VVXXXXVVf9XUbnqqquuuuqqq6666qqrrrrqqquuuuqqq/6vonLVVVddddVVV1111VVXXXXVVVddddVVV/1fReWqq6666qqrrrrqqquuuuqqq6666qqrrvq/ispVV1111VVXXXXVVVddddVVV1111VVXXfV/FZWrrrrqqquuuuqqq6666qqrrrrqqquuuur/KipXXXXVVVddddVVV1111VVXXXXVVVddddX/VVSuuuqqq6666qqrrrrqqquuuuqqq6666qr/q6hcddVVV1111VVXXXXVVVddddVVV1111VX/V1G56qqrrrrqqquuuuqqq6666qqrrrrqqqv+r6Jy1VVXXXXVVVddddVVV1111VVXXXXVVVf9X0Xlqquuuuqqq6666qqrrrrqqquuuuqqq676v4rKVVddddVVV1111VVXXXXVVVddddVVV131fxWVq6666qqrrrrqqquuuuqqq6666qqrrrrq/yoqV1111VVXXXXVVVddddVVV1111VVXXXXV/1VUrrrqqquuuuqqq6666qqrrrrqqquuuuqq/6uoXHXVVVddddVVV1111VVXXXXVVVddddVV/1dRueqqq6666qqrrrrqqquuuuqqq6666qqr/q+ictVVV1111VVXXXXVVVddddVVV1111VVX/V9F5aqrrrrqqquuuuqqq6666qqrrrrqqquu+r+KylVXXXXVVVddddVVV1111VVXXXXVVVdd9X8Vlauuuuqqq6666qqrrrrqqquuuuqqq6666v8qKlddddVVV1111VVXXXXVVVddddVVV1111f9VVK666qqrrrrqqquuuuqqq6666qqrrrrqqv+rqFx11VVXXXXVVVddddVVV1111VVXXXXVVf9XUbnqqquuuuqqq6666qqrrrrqqquuuuqqq/6vonLVVVddddVVV1111VVXXXXVVVddddVVV/1fReWqq6666qqrrrrqqquuuuqqq6666qqrrvq/ispVV1111VVXXXXVVVddddVVV1111VVXXfV/FZWrrrrqqquuuuqqq6666qqrrrrqqquuuur/KipXXXXVVVddddVVV1111VVXXXXVVVddddX/VVSuuuqqq6666qqrrrrqqquuuuqqq6666qr/q6hcddVVV1111VVXXXXVVVddddVVV1111VX/V1G56qqrrrrqqquuuuqqq6666qqrrrrqqqv+r6Jy1VVXXXXVVVddddVVV1111VVXXXXVVVf9X0Xlqquuuuqqq6666qqrrrrqqquuuuqqq676v4rKVVddddVVV1111VVXXXXVVVddddVVV131fxWVq6666qqrrrrqqquuuuqqq6666qqrrrrq/yoqV1111VVXXXXVVVddddVVV1111VVXXXXV/1VUrrrqqquuuuqqq6666qqrrrrqqquuuuqq/6uoXHXVVVddddVVV1111VVXXXXVVVddddVV/1dRueqqq6666qqrrrrqqquuuuqqq6666qqr/q+ictVVV1111VVXXXXVVVddddVVV1111VVX/V9F5aqrrrrqqquuuuqqq6666qqrrrrqqquu+r+KylVXXXXVVVddddVVV1111VVXXXXVVVdd9X8Vlauuuuqqq6666qqrrrrqqquuuuqqq6666v8qKlddddVVV1111VVXXXXVVVddddVVV1111f9VVK666qqrrrrqqquuuuqqq6666qqrrrrqqv+rqFx11VVXXXXVVVddddVVV1111VVXXXXVVf9XUbnqqquuuuqqq6666qqrrrrqqquuuuqqq/6vonLVVVddddVVV1111VVXXXXVVVddddVVV/1fReWqq6666qqrrrrqqquuuuqqq6666qqrrvq/ispVV1111VVXXXXVVVddddVVV1111VVXXfV/FZWrrrrqqquuuuqqq6666qqrrrrqqquuuur/KipXXXXVVVddddVVV1111VVXXXXVVVddddX/VVSuuuqqq6666qqrrrrqqquuuuqqq6666qr/q6hcddVVV1111VVXXXXVVVddddVVV1111VX/V1G56qqrrrrqqquuuuqqq6666qqrrrrqqqv+r6Jy1VVXXXXVVVddddVVV1111VVXXXXVVVf9X0Xlqquuuuqqq6666qqrrrrqqquuuuqqq676v4rKVVddddVVV1111VVXXXXVVVddddVVV131fxWVq6666qqrrrrqqquuuuqqq6666qqrrrrq/yoqV1111VVXXXXVVVddddVVV1111VVXXXXV/1VUrrrqqquuuuqqq6666qqrrrrqqquuuuqq/6uoXHXVVVddddVVV1111VVXXXXVVVddddVV/1dRueqqq6666qqrrrrqqquuuuqqq6666qqr/q+ictVVV1111VVXXXXVVVddddVVV1111VVX/V9F5aqrrrrqqquuuuqqq6666qqrrrrqqquu+r+KylVXXXXVVVddddVVV1111VVXXXXVVVdd9X8Vlauuuuqqq6666qqrrrrqqquuuuqqq6666v8qKlddddVVV1111VVXXXXVVVddddVVV1111f9VVK666qqrrrrqqquuuuqqq6666qqrrrrqqv+rqFx11VVXXXXVVVddddVVV1111VVXXXXVVf9XUbnqqquuuuqqq6666qqrrrrqqquuuuqqq/6vonLVVVddddVVV1111VVXXXXVVVddddVVV/1fReWqq6666qqrrrrqqquuuuqqq6666qqrrvq/ispVV1111VVXXXXVVVddddVVV1111VVXXfV/FZWrrrrqqquuuuqqq6666qqrrrrqqquuuur/KipXXXXVVVddddVVV1111VVXXXXVVVddddX/VVSuuuqqq6666qqrrrrqqquuuuqqq6666qr/q6hcddVVV1111VVXXXXVVVddddVVV1111VX/V1G56qqrrrrqqquuuuqqq6666qqrrrrqqqv+r6Jy1VVXXXXVVVddddVVV1111VVXXXXVVVf9X0Xlqquuuuqqq6666qqrrrrqqquuuuqqq676v4rKVVddddVVV1111VVXXXXVVVddddVVV131fxWVq6666qqrrrrqqquuuuqqq6666qqrrrrq/yoqV1111VVXXXXVVVddddVVV1111VVXXXXV/1VUrrrqqquuuuqqq6666qqrrrrqqquuuuqq/6uoXHXVVVddddVVV1111VVXXXXVVVddddVV/1dRueqqq6666qqrrrrqqquuuuqqq6666qqr/q+ictVVV1111VVXXXXVVVddddVVV1111VVX/V9F5aqrrrrqqquuuuqqq6666qqrrrrqqquu+r+KylVXXXXVVVddddVVV1111VVXXXXVVVdd9X8Vlauuuuqqq6666qqrrrrqqquuuuqqq6666v8qKlddddVVV1111VVXXXXVVVddddVVV1111f9VVK666qqrrrrqqquuuuqqq6666qqrrrrqqv+rqFx11VVXXXXVVVddddVVV1111VVXXXXVVf9XUbnqqquuuuqqq6666qqrrrrqqquuuuqqq/6vonLVVVddddVVV1111VVXXXXVVVddddVVV/1fReWqq6666qqrrrrqqquuuuqqq6666qqrrvq/ispVV1111VVXXXXVVVddddVVV1111VVXXfV/FZWrrrrqqquuuuqqq6666qqrrrrqqquuuur/KipXXXXVVVddddVVV1111VVXXXXVVVddddX/VVSuuuqqq6666qqrrrrqqquuuuqqq6666qr/q6hcddVVV1111VVXXXXVVVddddVVV1111VX/V1G56qqrrrrqqquuuuqqq6666qqrrrrqqqv+r6Jy1VVXXXXVVVddddVVV1111VVXXXXVVVf9X0Xlqquuuuqqq6666qqrrrrqqquuuuqqq676v4rKVVddddVVV1111VVXXXXVVVddddVVV131fxWVq6666qqrrrrqqquuuuqqq6666qqrrrrq/yoqV1111VVXXXXVVVddddVVV1111VVXXXXV/1VUrrrqqquuuuqqq6666qqrrrrqqquuuuqq/6uoXHXVVVddddVVV1111VVXXXXVVVddddVV/1dRueqqq6666qqrrrrqqquuuuqqq6666qqr/q+ictVVV1111VVXXXXVVVddddVVV1111VVX/V9F5aqrrrrqqquuuuqqq6666qqrrrrqqquu+r+KylVXXXXVVVddddVVV1111VVXXXXVVVdd9X8Vlauuuuqqq6666qqrrrrqqquuuuqqq6666v8qKlddddVVV1111VVXXXXVVVddddVVV1111f9VVK666qqrrrrqqquuuuqqq6666qqrrrrqqv+rqFx11VVXXXXVVVddddVVV1111VVXXXXVVf9XUbnqqquuuuqqq6666qqrrrrqqquuuuqqq/6vonLVVVddddVVV1111VVXXXXVVVddddVVV/1fReWqq6666qqrrrrqqquuuuqqq6666qqrrvq/ispVV1111VVXXXXVVVddddVVV1111VVXXfV/FZWrrrrqqquuuuqqq6666qqrrrrqqquuuur/KipXXXXVVVddddVVV1111VVXXXXVVVddddX/VVSuuuqqq6666qqrrrrqqquuuuqqq6666qr/q6hcddVVV1111VVXXXXVVVddddVVV1111VX/V1G56qqrrrrqqquuuuqqq6666qqrrrrqqqv+r6Jy1VVXXXXVVVddddVVV1111VVXXXXVVVf9X0Xlqquuuuqqq6666qqrrrrqqquuuuqqq676v4rKVVddddVVV1111VVXXXXVVVddddVVV131fxWVq6666qqrrrrqqquuuuqqq6666qqrrrrq/yoqV1111VVXXXXVVVddddVVV1111VVXXXXV/1VUrrrqqquuuuqqq6666qqrrrrqqquuuuqq/6uoXHXVVVddddVVV1111VVXXXXVVVddddVV/1dRueqqq6666qqrrrrqqquuuuqqq6666qqr/q+ictVVV1111VVXXXXVVVddddVVV1111VVX/V9F5aqrrrrqqquuuuqqq6666qqrrrrqqquu+r+KylVXXXXVVVddddVVV1111VVXXXXVVVdd9X8Vlauuuuqqq6666qqrrrrqqquuuuqqq6666v8qKlddddVVV1111VVXXXXVVVddddVVV1111f9VVK666qqrrrrqqquuuuqqq6666qqrrrrqqv+rqFx11VVXXXXVVVddddVVV1111VVXXXXVVf9XUbnqqquuuuqqq6666qqrrrrqqquuuuqqq/6vonLVVVddddVVV1111VVXXXXVVVddddVVV/1fReWqq6666qqrrrrqqquuuuqqq6666qqrrvq/ispVV1111VVXXXXVVVddddVVV1111VVXXfV/FZWrrrrqqquuuuqqq6666qqrrrrqqquuuur/KipXXXXVVVddddVVV1111VVXXXXVVVddddX/VVSuuuqqq6666qqrrrrqqquuuuqqq6666qr/q6hcddVVV1111VVXXXXVVVddddVVV1111VX/V1G56qqrrrrqqquuuuqqq6666qqrrrrqqqv+r6Jy1VVXXXXVVVddddVVV1111VVXXXXVVVf9X0Xlqquuuuqqq6666qqrrrrqqquuuuqqq676v4rKVVddddVVV1111VVXXXXVVVddddVVV131fxWVq6666qqrrrrqqquuuuqqq6666qqrrrrq/yoqV1111VVXXXXVVVddddVVV1111VVXXXXV/1VUrrrqqquuuuqqq6666qqrrrrqqquuuuqq/6uoXHXVVVddddVVV1111VVXXXXVVVddddVV/1dRueqqq6666qqrrrrqqquuuuqqq6666qqr/q+ictVVV1111VVXXXXVVVddddVVV1111VVX/V9F5aqrrrrqqqv+D7vmmmsezAOcOXPmwfwbnT179lae6b777ruVq676H+Saa655MA9w5syZB/NvdPbs2Vt5pvvuu+9Wrrrqf5BrrrnmwTzAmTNnHsy/0dmzZ2/lme67775bueqqq6666qr/m6hcddVVV1111f8C11xzzYMBzpw58+BrrrnmwWfOnHkQwDXXXPPga6655sE805kzZx58zTXXPJj/Ivfdd9+tPNPZs2dvve+++24FuO+++249e/bsMwDuu+++W8+ePXvrfffddytXXfUvuOaaax4McObMmQdfc801Dz5z5syDAK655poHA1xzzTUPBjhz5syDr7nmmgfzX+S+++67lWc6e/bsrffdd9+tAPfdd9+tZ8+efQbAfffddyvAP/zDP/w2V131IrjmmmsefObMmQdfc801Dz5z5syDAK655poHA1xzzTUPBrjmmmsecubMmQfxX+S+++67FUCS7rvvvqcD3HfffbcC3HfffbeePXv2Gf/wD//w22fOnHnw2bNnb73vvvtu5aqrrrrqqqv+Z0MPetCDuOqqq6666qr/Ttdcc82Dz5w58+BrrrnmwWfOnHkQwIu/+Iu/NsCLvdiLvTYvwO/+7u9+F/+DveZrvub78Fzuu+++WwH+4R/+4bcB/uEf/uF37rvvvlvPnj1763333XcrV/2fd8011zz4zJkzD77mmmsefObMmQddc801D77mmmsefObMmQdfc801D+b5+N3f/d3v4n+w13zN13wfnst99913K8DZs2dvve+++2697777bj179uwz7rvvvlvPnj1763333XcrV/2fd8011zz4zJkzD36xF3ux1wK45pprHnzNNdc8+MVe7MVem+fjd3/3d7+L/8Fe8zVf8314Pu67775bAc6ePXvrfffdd+t999136z/8wz/8DsDZs2dvve+++27lqquuuuqqq/77oAc96EFcddVVV1111X+2a6655sFnzpx58DXXXPPgM2fOPOjFX/zFXxvgxV7sxV6b5/K7v/u738X/E6/5mq/5PjzTfffddyvAP/zDP/z2P/zDP/zOfffdd+vZs2dvve+++27lqv91rrnmmge/2Iu92GufOXPmQddcc82Dr7nmmge/2Iu92GvzXH73d3/3u/h/4jVf8zXfh2e67777bgX4h3/4h98G+Id/+Iffue+++279h3/4h9/mqv91rrnmmgefOXPmwS/2Yi/2Wtdcc81Drrnmmge92Iu92GvzAL/7u7/7Xfw/8Zqv+ZrvwwPcd999t0rSfffd9/T77rvv1n/4h3/4nfvuu+/Ws2fP3nrffffdylVXXXXVVVf950IPetCDuOqqq6666qr/KNdcc82Dz5w58+AXe7EXey2AF3/xF3/tF3uxF3ttHuB3f/d3v4urXqjXfM3XfB+e6b777rv17Nmzt9533323/sM//MPv/MM//MNv33fffbdy1f8I11xzzYPPnDnz4Bd7sRd7rWuuuebBL/ZiL/ba11xzzYN5pt/93d/9Lq76F73ma77m+/BM9913363/8A//8Nv/8A//8Dv33Xffrf/wD//w21z1P8Y111zz4DNnzjz4xV7sxV7rxV/8xV/nxV7sxV6LB/jd3/3d7+KqF+o1X/M134dnuu+++249e/bsrffdd9+t//AP//A79913363/8A//8NtcddVVV1111X8c9KAHPYirrrrqqquu+re45pprHvxiL/Zir33mzJkHvfiLv/hrv9iLvdhr8wC/+7u/+11c9R/qNV/zNd8H4L777rv1H/7hH377H/7hH37nvvvuu/Uf/uEffpur/tNdc801DwZ47dd+7fd68Rd/8dd+sRd7sdfmAX73d3/3u7jqP8xrvuZrvg/PdN999936D//wD79933333foP//APv/MP//APv81V/yWuueaaB7/2a7/2ewG80zu902fzTL/7u7/7XVz1H+o1X/M134dnuu+++249e/bsrffdd9+t//AP//A79913363/8A//8NtcddVVV1111b8eetCDHsRVV1111VVX/UuuueaaB585c+bBL/ZiL/ZaL/7iL/7aL/ZiL/baPNPv/u7vfhdX/bd4zdd8zfcBuO+++279h3/4h9/+h3/4h9/5rd/6re/mqv8Q11xzzYPPnDnz4Bd7sRd7rRd/8Rd/7Rd7sRd7bZ7pd3/3d7+Lq/7LveZrvub73HfffbfyTP/wD//w2//wD//wO7/1W7/13Vz1H+Kaa6558Gu/9mu/F8A7vdM7fTbP9Lu/+7vfxVX/LV7zNV/zfQDuu+++W8+ePXvrfffdd+tv/dZvfc8//MM//DZXXXXVVVdd9S9DD3rQg7jqqquuuuqq53bNNdc8+LVf+7XfC+DFX/zFX/vFXuzFXptn+t3f/d3v4qr/kV7zNV/zfQDuu+++W3/rt37ru//hH/7hd/7hH/7ht7nqRfZiL/Zir/1iL/Zir/XiL/7ir/1iL/Zirw3wu7/7u9/FVf9jveZrvub7ANx33323/sM//MNv/9Zv/db3/MM//MNvc9WL7Jprrnnwa7/2a7/Xi7/4i7/2i73Yi702wO/+7u9+F1f9j/Sar/ma78Mz3Xfffbf+wz/8w2//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X/N97rvvvlt/67d+67t/9Ed/9HO46qqrrrrqXws96EEP4qqrrrrqqn+ba6655sGv/dqv/V7v9E7v9Nm/+7u/+11cddV/oNd8zdd8H4D77rvv1t/6rd/67h/90R/9HK56Dq/zOq/z3q/zOq/zXi/2Yi/22r/7u7/7XVx11X+w13zN13yf++6779Yf/dEf/ezf+q3f+h6uepZrrrnmwS/2Yi/2Wq/zOq/z3i/2Yi/22gC/+7u/+11cddV/oNd8zdd8n3/4h3/47c/8zM98Ha666qqrrvq3Qg960IO46qqrrrrq3+eaa6558Id/+Id/14u92Iu99u/+7u9+F1dd9W/0mq/5mu8DcN999936W7/1W9/927/9299z33333cpVL9Q111zz4Nd+7dd+r3d6p3f6bIDf/d3f/S6uuurf6DVf8zXfB+BHfuRHPvu3f/u3v+e+++67lateqGuuuebBr/3ar/1eL/7iL/7aL/ZiL/baAL/7u7/7XVx11b/Ra77ma77Pfffdd+vXf/3Xv88//MM//DZXXXXVVVf9e6AHPehBXHXVVVdd9R/jdV7ndd77dV7ndd7rxV7sxV77d3/3d7+Lq656Ebzma77m+wDcd999t/7Wb/3Wd//2b//299x33323ctW/2jXXXPPg137t136vF3/xF3/tF3uxF3vt3/3d3/0urrrqRfSar/ma73Pffffd+lu/9Vvf/aM/+qOfw1X/JmfOnHnQ67zO67z3i7/4i7/2i73Yi702wO/+7u9+F1dd9SJ4zdd8zfe57777bv3RH/3Rz/mt3/qt7+aqq6666qr/COhBD3oQV1111VVX/cd6ndd5nfd+ndd5nfd6sRd7sdf+3d/93e/iqquey6Mf/ejXueaaax5833333fpbv/Vb3/0P//APv/MP//APv81V/2GuueaaB7/jO77jZ73O67zOewP87u/+7ndx1VXP5TVf8zXf57777rv1t37rt777H/7hH37nH/7hH36bq/7DXHPNNQ9+7dd+7fd68Rd/8dd+sRd7sdcG+N3f/d3v4qqrnstrvuZrvs99991364/+6I9+zm/91m99N1ddddVVV/1HQg960IO46qqrrrrqP8c111zz4Hd8x3f8rNd5ndd5b4Df/d3f/S6u+n/rNV/zNd8H4L777rv1t37rt777t3/7t7/nvvvuu5Wr/lNdc801D36xF3ux13qd13md936xF3ux1wb43d/93e/iqv+3XvM1X/N9AO67775bf+u3fuu7f/RHf/RzuOo/3TXXXPPgF3uxF3vt13md13mvF3uxF3ttgN/93d/9Lq76f+s1X/M13wfgt37rt777t37rt77nH/7hH36bq6666qqr/jOgBz3oQVx11VVXXfWf65prrnnwa7/2a7/X67zO67z3Nddc8+Df/d3f/S6u+j/vNV/zNd8H4B/+4R9+++///u9/++zZs8/4rd/6re/mqv8211xzzYNf7MVe7LVf53Ve571e7MVe7LUBfvd3f/e7uOr/vNd8zdd8n/vuu+9WgN/6rd/67h/90R/9HK76b3PNNdc8+MVe7MVe68Ve7MVe+5prrnnwi73Yi702wO/+7u9+F1f9n/ear/ma73Pffffd+lu/9Vvf/aM/+qOfw1VXXXXVVf/Z0IMe9CCuuuqqq676r3PNNdc8+B3f8R0/63Ve53XeG+B3f/d3v4ur/k94zdd8zfcBuO+++249e/bsrX//93//27/927/9Pffdd9+tXPU/zpkzZx704i/+4q/zYi/2Yq/1Oq/zOu/NM/3u7/7ud3HV/3qv+Zqv+T4A9913362/9Vu/9d0AP/qjP/o5XPU/0jXXXPPgF3uxF3vtF3uxF3ut13md13lvnul3f/d3v4ur/k94zdd8zfe57777bv2t3/qt7/6Hf/iH3/mHf/iH3+aqq6666qr/KuhBD3oQV1111VVX/de75pprHvxiL/Zir/1iL/Zir/U6r/M67w3wu7/7u9/FVf9rvOZrvub7ANx33323nj179ta///u//+1/+Id/+J1/+Id/+G2u+l/lmmuueTDAa7/2a7/Xi7/4i7/2i73Yi702wO/+7u9+F1f9r/Gar/ma7wNw33333fpbv/Vb3/0P//APv/MP//APv81V/+tcc801D36xF3ux136xF3ux13qd13md9+aZfvd3f/e7uOp/hdd8zdd8H4D77rvv1t/6rd/67rNnzz7jt37rt76bq6666qqr/jugBz3oQVx11VVXXfXf65prrnnwmTNnHvxiL/Zir/XiL/7ir/1iL/Zirw3wu7/7u9/FVf8jvOZrvub78Ez33XffrT/6oz/6OWfOnHnQb//2b3/PfffddytX/Z9yzTXXPPjFXuzFXvvFXuzFXuuaa6558Iu92Iu9NsDv/u7vfhdX/Y/xmq/5mu8DcN999936W7/1W98N8KM/+qOfw1X/51xzzTUPfrEXe7HXfrEXe7HXuuaaax78Yi/2Yq/NM/3u7/7ud3HV/wiv+Zqv+T4A9913362/9Vu/9d3/8A//8Dv/8A//8NtcddVVV1313w096EEP4qqrrrrqqv9Zrrnmmge/2Iu92Gu/2Iu92Gtdc801D36xF3ux1wb43d/93e/iqv90r/mar/k+PNN9991369mzZ2/9+7//+9/+h3/4h9/5h3/4h9/mqv93rrnmmge/2Iu92Gu/2Iu92Gtdc801D36xF3ux1+aZfvd3f/e7uOo/3Wu+5mu+D89033333fpbv/Vb3/0P//APv/MP//APv81V/++cOXPmQddcc81Drrnmmge/2Iu92Gtdc801D36xF3ux1+aZfvd3f/e7uOo/3Wu+5mu+D8A//MM//Pbf//3f/zbAj/7oj34OV1111VVX/U+DHvSgB3HVVVddddX/bNdcc82DX+zFXuy1X+zFXuy1rrnmmge/2Iu92GvzTL/7u7/7XVz1b/Kar/ma78MD3Hfffbf+wz/8w2/fd999t/7DP/zD7/zDP/zDb3PVVc/HmTNnHiRJL/ZiL/baL/ZiL/Za11xzzYNf7MVe7LV5pt/93d/9Lq76N3vN13zN9+GZ7rvvvlt/67d+67sB/uEf/uF3/uEf/uG3ueqq5+PMmTMPuuaaax5yzTXXPPjFXuzFXuuaa6558Iu92Iu9Ng/wu7/7u9/FVf8mr/mar/k+PNN9991362/91m99N8CP/uiPfg5XXXXVVVf9T4ce9KAHcdVVV1111f8u11xzzYPPnDnz4GuuuebBL/ZiL/Za11xzzYNf7MVe7LV5gN/93d/9Lq7iNV/zNd+HB7jvvvtuBfiHf/iH377vvvtu/Yd/+IffOXv27K333XffrVx11b/DmTNnHiRJL/ZiL/baL/ZiL/Za11xzzYPPnDnz4GuuuebBPMDv/u7vfhdX8Zqv+ZrvwwPcd999t549e/bWv//7v/9tgH/4h3/4nX/4h3/4ba666t/pmmuuefCLvdiLvTbAi73Yi73WNddc8+AXe7EXe20e4Hd/93e/i6sue83XfM334QH+4R/+4bf//u///rcB/uEf/uF3/uEf/uG3ueqqq6666n8b9KAHPYirrrrqqqv+b7jmmmse/GIv9mKvDfBiL/Zir3XNNdc8+MyZMw++5pprHswD/O7v/u538X/Ea77ma74Pz+W+++679ezZs7f+/d///W8DnD179hn33Xffrf/wD//w21x11X+xa6655sEAL/ZiL/baAC/2Yi/2Wtdcc82Dz5w58+BrrrnmwTyX3/3d3/0u/g94zdd8zffhudx33323nj179tb77rvv1vvuu+/Ws2fPPuO+++679R/+4R9+m6uu+i92zTXXPPjMmTMPvuaaax585syZB11zzTUPvuaaax585syZB19zzTUP5rn87u/+7nfxf8RrvuZrvg8PcN9999169uzZW++7775b77vvvlv/4R/+4XfOnj1763333XcrV1111VVX/V+AHvSgB3HVVVddddX/bddcc82DAc6cOfPga6655sEv9mIv9loA11xzzYMBXuzFXuy1eSH+9E//9Mf4L/CKr/iK78ALcd99990KcPbs2Vvvu+++W++7775bAc6ePfuM++6779azZ8/eet99993KVVf9L3HNNdc8GODMmTMPuuaaax4C8GIv9mKvdc011zwY4MyZMw++5pprHswL8ad/+qc/xn+BV3zFV3wHXoh/+Id/+O0zZ848+OzZs7f+/d///W8DnD179hn33Xff08+ePfuM++6771auuup/iWuuuebBtn3NNdc85JprrnkwwIu92Iu9FsA111zzYIAzZ848+JprrnkwL8Sf/umf/hj/yV7xFV/xHXgh7rvvvlsBzp49e+t9991363333XcrwG//9m9/z5kzZx78D//wD7/NVVddddVV/9ehBz3oQVx11VVXXXUVwDXXXPNggDNnzjz4mmuueTDPdObMmQddc801D+a5XHPNNQ/muZw5c+bBPMDZs2dv5fm47777buWZ7rvvvlt5prNnzz4D4L777rsV4OzZs7fed999t3LVVf+PXXPNNQ8GsO1rrrnmIddcc82DeTa/2Iu92GvzXK655poH83ycOXPmwTzT2bNnbwW47777br3mmmsezDPdd999twLcd999t/IAZ8+efQbAfffddyvgs2fPPuO+++67lauu+n/szJkzD5KkM2fOPBjgmmuueTDgM2fOPBjgmmuueTDP5Zprrnkwz+XMmTMP5gHOnj17K8/HfffddyvPdN99993KM509e/YZgO+7775nAPzDP/zDb3PVVVddddVVV6AHPehBXHXVVVddddVVV1111VVXXXXVVVddddVV/ydRueqqq6666qqrrrrqqquuuuqqq6666qqr/q+ictVVV1111VVXXXXVVVddddVVV1111VVX/V9F5aqrrrrqqquuuuqqq6666qqrrrrqqquu+r+KylVXXXXVVVddddVVV1111VVXXXXVVVdd9X8Vlauuuuqqq6666qqrrrrqqquuuuqqq6666v8qKlddddVVV1111VVXXXXVVVddddVVV1111f9VVK666qqrrrrqqquuuuqqq6666qqrrrrqqv+rqFx11VVXXXXVVVddddVVV1111VVXXXXVVf9XUbnqqquuuuqqq6666qqrrrrqqquuuuqqq/6vonLVVVddddVVV1111VVXXXXVVVddddVVV/1fReWqq6666qqrrrrqqquuuuqqq6666qqrrvq/ispVV1111VVXXXXVVVddddVVV1111VVXXfV/FZWrrrrqqquuuuqqq6666qqrrrrqqquuuur/KipXXXXVVVddddVVV1111VVXXXXVVVddddX/VVSuuuqqq6666qqrrrrqqquuuuqqq6666qr/q6hcddVVV1111VVXXXXVVVddddVVV1111VX/V1G56qqrrrrqqquuuuqqq6666qqrrrrqqqv+r6Jy1VVXXXXVVVddddVVV1111VVXXXXVVVf9X0Xlqquuuuqqq6666qqrrrrqqquuuuqqq676v4rKVVddddVVV1111VVXXXXVVVddddVVV131fxWVq6666qqrrrrqqquuuuqqq6666qqrrrrq/yoqV1111VVXXXXVVVddddVVV1111VVXXXXV/1VUrrrqqquuuuqqq6666qqrrrrqqquuuuqq/6uoXHXVVVddddVVV1111VVXXXXVVVddddVV/1dRueqqq6666qqrrrrqqquuuuqqq6666qqr/q+ictVVV1111VVXXXXVVVddddVVV1111VVX/V9F5aqrrrrqqquuuuqqq6666qqrrrrqqquu+r+KylVXXXXVVVddddVVV1111VVXXXXVVVdd9X8Vlauuuuqqq6666qqrrrrqqquuuuqqq6666v8qKlddddVVV1111VVXXXXVVVddddVVV1111f9VVK666qqrrrrqqquuuuqqq6666qqrrrrqqv+rqFx11VVXXXXVVVddddVVV1111VVXXXXVVf9XUbnqqquuuuqqq6666qqrrrrqqquuuuqqq/6vonLVVVddddVVV1111VVXXXXVVVddddVVV/1fReWqq6666qqrrrrqqquuuuqqq6666qqrrvq/ispVV1111VVXXXXVVVddddVVV1111VVXXfV/FZWrrrrqqquuuuqqq6666qqrrrrqqquuuur/KipXXXXVVVddddVVV1111VVXXXXVVVddddX/VVSuuuqqq6666qqrrrrqqquuuuqqq6666qr/q6hcddVVV1111VVXXXXVVVddddVVV1111VX/V1G56qqrrrrqqquuuuqqq6666qqrrrrqqqv+r6Jy1VVXXXXVVVddddVVV1111VVXXXXVVVf9X0Xlqquuuuqqq6666qqrrrrqqquuuuqqq676v4rKVVddddVVV1111VVXXXXVVVddddVVV131fxWVq6666qqrrrrqqquuuuqqq6666qqrrrrq/yoqV1111VVXXXXVVVddddVVV1111VVXXXXV/1VUrrrqqquuuuqqq6666qqrrrrqqquuuuqq/6uoXHXVVVddddVVV1111VVXXXXVVVddddVV/1dRueqqq6666qqrrrrqqquuuuqqq6666qqr/q+ictVVV1111VVXXXXVVVddddVVV1111VVX/V9F5aqrrrrqqquuuuqqq6666qqrrrrqqquu+r+KylVXXXXVVVddddVVV1111VVXXXXVVVdd9X8Vlauuuuqqq6666qqrrrrqqquuuuqqq6666v8qKlddddVVV1111VVXXXXVVVddddVVV1111f9VVK666qqrrrrqqquuuuqqq6666qqrrrrqqv+rqFx11VVXXXXVVVddddVVV1111VVXXXXVVf9XUbnqqquuuuqqq6666qqrrrrqqquuuuqqq/6vonLVVVddddVVV1111VVXXXXVVVddddVVV/1fReWqq6666qqrrrrqqquuuuqqq6666qqrrvq/ispVV1111VVXXXXVVVddddVVV1111VVXXfV/FZWrrrrqqquuuuqqq6666qqrrrrqqquuuur/KipXXXXVVVddddVVV1111VVXXXXVVVddddX/VVSuuuqqq6666qqrrrrqqquuuuqqq6666qr/q6hcddVVV1111VVXXXXVVVddddVVV1111VX/V1G56qqrrrrqqquuuuqqq6666qqrrrrqqqv+r6Jy1VVXXXXVVVddddVVV1111VVXXXXVVVf9X0Xlqquuuuqqq6666qqrrrrqqquuuuqqq676v4rKVVddddVVV1111VVXXXXVVVddddVVV131fxWVq6666qqrrrrqqquuuuqqq6666qqrrrrq/yoqV1111VVXXXXVVVddddVVV1111VVXXXXV/1VUrrrqqquuuuqqq6666qqrrrrqqquuuuqq/6uoXHXVVVddddVVV1111VVXXXXVVVddddVV/1dRueqqq6666qqrrrrqqquuuuqqq6666qqr/q+ictVVV1111VVXXXXVVVddddVVV1111VVX/V9F5aqrrrrqqquuuuqqq6666qqrrrrqqquu+r+KylVXXXXVVVddddVVV1111VVXXXXVVVdd9X8Vlauuuuqqq6666qqrrrrqqquuuuqqq6666v8qKlddddVVV1111VVXXXXVVVddddVVV1111f9VVK666qqrrrrqqquuuuqqq6666qqrrrrqqv+rqFx11VVXXXXVVVddddVVV1111VVXXXXVVf9XUbnqqquuuuqqq6666qqrrrrqqquuuuqqq/6vonLVVVddddVVV1111VVXXXXVVVddddVVV/1fReWqq6666qqrrrrqqquuuuqqq6666qqrrvq/ispVV1111VVXXXXVVVddddVVV1111VVXXfV/FZWrrrrqqquuuuqqq6666qqrrrrqqquuuur/KipXXXXVVVddddVVV1111VVXXXXVVVddddX/VVSuuuqqq6666qqrrrrqqquuuuqqq6666qr/q6hcddVVV1111VVXXXXVVVddddVVV1111VX/V1G56qqrrrrqqquuuuqqq6666qqrrrrqqqv+r6Jy1VVXXXXVVVddddVVV1111VVXXXXVVVf9X0Xlqquuuuqqq6666qqrrrrqqquuuuqqq676v4rKVVddddVVV1111VVXXXXVVVddddVVV131fxWVq6666qqrrrrqqquuuuqqq6666qqrrrrq/yoqV1111VVXXXXVVVddddVVV1111VVXXXXV/1VUrrrqqquuuuqqq6666qqrrrrqqquuuuqq/6uoXHXVVVddddVVV1111VVXXXXVVVddddVV/1dRueqqq6666qqrrrrqqquuuuqqq6666qqr/q+ictVVV1111VVXXXXVVVddddVVV1111VVX/V9F5aqrrrrqqquuuuqqq6666qqrrrrqqquu+r+KylVXXXXVVVddddVVV1111VVXXXXVVVdd9X8Vlauuuuqqq6666qqrrrrqqquuuuqqq6666v8qKlddddVVV1111VVXXXXVVVddddVVV1111f9VVK666qqrrrrqqquuuuqqq6666qqrrrrqqv+rqFx11VVXXXXVVVddddVVV1111VVXXXXVVf9XUbnqqquuuuqqq6666qqrrrrqqquuuuqqq/6vonLVVVddddVVV1111VVXXXXVVVddddVVV/1fReWqq6666qqrrrrqqquuuuqqq6666qqrrvq/ispVV1111VVXXXXVVVddddVVV1111VVXXfV/FZWrrrrqqquuuuqqq6666qqrrrrqqquuuur/KipXXXXVVVddddVVV1111VVXXXXVVVddddX/VVSuuuqqq6666qqrrrrqqquuuuqqq6666qr/q6hcddVVV1111VVXXXXVVVddddVVV1111VX/V1G56qqrrrrqqquuuuqqq6666qqrrrrqqqv+r6Jy1VVXXXXVVVddddVVV1111VVXXXXVVVf9X0Xlqquuuuqqq6666qqrrrrqqquuuuqqq676v4rKVVddddVVV1111VVXXXXVVVddddVVV131fxWVq6666qqrrrrqqquuuuqqq6666qqrrrrq/yoqV1111VVXXXXVVVddddVVV1111VVXXXXV/1VUrrrqqquuuuqqq6666qqrrrrqqquuuuqq/6uoXHXVVVddddVVV1111VVXXXXVVVddddVV/1dRueqqq6666qqrrrrqqquuuuqqq6666qqr/q+ictVVV1111VVXXXXVVVddddVVV1111VVX/V9F5aqrrrrqqquuuuqqq6666qqrrrrqqquu+r+KylVXXXXVVVddddVVV1111VVXXXXVVVdd9X8Vlauuuuqqq6666qqrrrrqqquuuuqqq6666v8qKlddddVVV1111VVXXXXVVVddddVVV1111f9VVK666qqrrrrqqquuuuqqq6666qqrrrrqqv+rqFx11VVXXXXVVVddddVVV1111VVXXXXVVf9XUbnqqquuuuqqq6666qqrrrrqqquuuuqqq/6vonLVVVddddVVV1111VVXXXXVVVddddVVV/1fReWqq6666qqrrrrqqquuuuqqq6666qqrrvq/ispVV1111VVXXXXVVVddddVVV1111VVXXfV/FZWrrrrqqquuuuqqq6666qqrrrrqqquuuur/KipXXXXVVVddddVVV1111VVXXXXVVVddddX/VVSuuuqqq6666qqrrrrqqquuuuqqq6666qr/q6hcddVVV1111VVXXXXVVVddddVVV1111VX/V1G56qqrrrrqqquuuuqqq6666qqrrrrqqqv+r6Jy1VVXXXXVVVddddVVV1111VVXXXXVVVf9X0Xlqquuuuqqq6666qqrrrrqqquuuuqqq676v4rKVVddddVVV1111VVXXXXVVVddddVVV131fxWVq6666qqrrrrqqquuuuqqq6666qqrrrrq/yoqV1111VVXXXXVVVddddVVV1111VVXXXXV/1VUrrrqqquuuuqqq6666qqrrrrqqquuuuqq/6uoXHXVVVddddVVV1111VVXXXXVVVddddVV/1dRueqqq6666qqrrrrqqquuuuqqq6666qqr/q+ictVVV1111VVXXXXVVVddddVVV1111VVX/V9F5aqrrrrqqquuuuqqq6666qqrrrrqqquu+r+KylVXXXXVVVddddVVV1111VVXXXXVVVdd9X8Vlauuuuqqq6666qqrrrrqqquuuuqqq6666v8qKlddddVVV1111VVXXXXVVVddddVVV1111f9VVK666qqrrrrqqquuuuqqq6666qqrrrrqqv+rqFx11VVXXXXVVVddddVVV1111VVXXXXVVf9XUbnqqquuuuqqq6666qqrrrrqqquuuuqqq/6vonLVVVddddVVV1111VVXXXXVVVddddVVV/1fReWqq6666qqrrrrqqquuuuqqq6666qqrrvq/ispVV1111VVXXXXVVVddddVVV1111VVXXfV/FZWrrrrqqquuuuqqq6666qqrrrrqqquuuur/KipXXXXVVVddddVVV1111VVXXXXVVVddddX/VVSuuuqqq6666qqrrrrqqquuuuqqq6666qr/q6hcddVVV1111VVXXXXVVVddddVVV1111VX/V1G56qqrrrrqqquuuuqqq6666qqrrrrqqqv+r6Jy1VVXXXXVVVddddVVV1111VVXXXXVVVf9X0Xlqquuuuqqq6666qqrrrrqqquuuuqqq676v4rKVVddddVVV1111VVXXXXVVVddddVVV131fxWVq6666qqrrrrqqquuuuqqq6666qqrrrrq/yoqV1111VVXXXXVVVddddVVV1111VVXXXXV/1VUrrrqqquuuuqqq6666qqrrrrqqquuuuqq/6uoXHXVVVddddVVV1111VVXXXXVVVddddVV/1dRueqqq6666qqrrrrqqquuuuqqq6666qqr/q+ictVVV1111VVXXXXVVVddddVVV1111VVX/V9F5aqrrrrqqquuuuqqq6666qqrrrrqqquu+r+KylVXXXXVVVddddVVV1111VVXXXXVVVdd9X8Vlauuuuqqq6666qqrrrrqqquuuuqqq6666v8qKlddddVVV1111VVXXXXVVVddddVVV1111f9VVK666qqrrrrqqquuuuqqq6666qqrrrrqqv+rqFx11VVXXXXVVVddddVVV1111VVXXXXVVf9XUbnqqquuuuqqq6666qqrrrrqqquuuuqqq/6vonLVVVddddVVV1111VVXXXXVVVddddVVV/1fReWqq6666qqrrrrqqquuuuqqq6666qqrrvq/ispVV1111VVXXXXVVVddddVVV1111VVXXfV/FZWrrrrqqquuuuqqq6666qqrrrrqqquuuur/KipXXXXVVVddddVVV1111VVXXXXVVVddddX/VVSuuuqqq6666qqrrrrqqquuuuqqq6666qr/q6hcddVVV1111VVXXXXVVVddddVVV1111VX/V1G56qqrrrrqqquuuuqqq6666qqrrrrqqqv+r6Jy1VVXXXXVVVddddVVV1111VVXXXXVVVf9X0Xlqquuuuqqq6666qqrrrrqqquuuuqqq676v4rKVVddddVVV1111VVXXXXVVVddddVVV131fxWVq6666qqrrrrqqquuuuqqq6666qqrrrrq/yoqV1111VVXXXXVVVddddVVV1111VVXXXXV/1VUrrrqqquuuuqqq6666qqrrrrqqquuuuqq/6uoXHXVVVddddVVV1111VVXXXXVVVddddVV/1dRueqqq6666qqrrrrqqquuuuqqq6666qqr/q+ictVVV1111VVXXXXVVVddddVVV1111VVX/V9F5aqrrrrqqquuuuqqq6666qqrrrrqqquu+r+KylVXXXXVVVddddVVV1111VVXXXXVVVdd9X8Vlauuuuqqq6666qqrrrrqqquuuuqqq6666v8qKlddddVVV1111VVXXXXVVVddddVVV1111f9VVK666qqrrrrqqquuuuqqq6666qqrrrrqqv+rqFx11VVXXXXVVVddddVVV1111VVXXXXVVf9XUbnqqquuuuqqq6666qqrrrrqqquuuuqqq/6vonLVVVddddVVV1111VVXXXXVVVddddVVV/1fReWqq6666qqrrrrqqquuuuqqq6666qqrrvq/ispVV1111VVXXXXVVVddddVVV1111VVXXfV/FZWrrrrqqquuuuqqq6666qqrrrrqqquuuur/KipXXXXVVVddddVVV1111VVXXXXVVVddddX/VVSuuuqqq6666qqrrrrqqquuuuqqq6666qr/q6hcddVVV1111VVXXXXVVVddddVVV1111VX/V1G56qqrrrrqqquuuuqqq6666qqrrrrqqqv+r6Jy1VVXXXXVVVddddVVV1111VVXXXXVVVf9X0Xlqquuuuqqq6666qqrrrrqqquuuuqqq676v4rKVVddddVVV1111VVXXXXVVVddddVVV131fxWVq6666qqrrrrqqquuuuqqq6666qqrrrrq/yoqV1111VVXXXXVVVddddVVV1111VVXXXXV/1VUrrrqqquuuuqqq6666qqrrrrqqquuuuqq/6uoXHXVVVddddVVV1111VVXXXXVVVddddVV/1dRueqqq6666qqrrrrqqquuuuqqq6666qqr/q+ictVVV1111VVXXXXVVVddddVVV1111VVX/V9F5aqrrrrqqquuuuqqq6666qqrrrrqqquu+r+KylVXXXXVVVddddVVV1111VVXXXXVVVdd9X8Vlauuuuqqq6666qqrrrrqqquuuuqqq6666v8qKlddddVVV1111VVXXXXVVVddddVVV1111f9VVK666qqrrrrqqquuuuqqq6666qqrrrrqqv+rqFx11VVXXXXVVVddddVVV1111VVXXXXVVf9XUbnqqquuuuqqq6666qqrrrrqqquuuuqqq/6vonLVVVddddVVV1111VVXXXXVVVddddVVV/1fReWqq6666qqrrrrqqquuuuqqq6666qqrrvq/ispVV1111VVXXXXVVVddddVVV1111VVXXfV/FZWrrrrqqquuuuqqq6666qqrrrrqqquuuur/KipXXXXVVVddddVVV1111VVXXXXVVVddddX/VVSuuuqqq6666qqrrrrqqquuuuqqq6666qr/q6hcddVVV1111VVXXXXVVVddddVVV1111VX/V1G56qqrrrrqqquuuuqqq6666qqrrrrqqqv+r6Jy1VVXXXXVVVddddVVV1111VVXXXXVVVf9X0Xlqquuuuqqq6666qqrrrrqqquuuuqqq676v4rKVVddddVVV1111VVXXXXVVVddddVVV131fxWVq6666qqrrrrqqquuuuqqq6666qqrrrrq/yoqV1111VVXXXXVVVddddVVV1111VVXXXXV/1VUrrrqqquuuuqqq6666qqrrrrqqquuuuqq/6uoXHXVVVddddVVV1111VVXXXXVVVddddVV/1dRueqqq6666qqrrrrqqquuuuqqq6666qqr/q+ictVVV1111VVXXXXVVVddddVVV1111VVX/V9F5aqrrrrqqquuuuqqq6666qqrrrrqqquu+r+KylVXXXXVVVddddVVV1111VVXXXXVVVdd9X8Vlauuuuqqq6666qqrrrrqqquuuuqqq6666v8qKlddddVVV1111VVXXXXVVVddddVVV1111f9VVK666qqrrrrqqquuuuqqq6666qqrrrrqqv+rqFx11VVXXXXVVVddddVVV1111VVXXXXVVf9XUbnqqquuuuqqq6666qqrrrrqqquuuuqqq/6vonLVVVddddVVV1111VVXXXXVVVddddVVV/1fReWqq6666qqrrrrqqquuuuqqq6666qqrrvq/ispVV1111VVXXXXVVVddddVVV1111VVXXfV/FZWrrrrqqquuuuqqq6666qqrrrrqqquuuur/KipXXXXVVVddddVVV1111VVXXXXVVVddddX/VVSuuuqqq6666qqrrrrqqquuuuqqq6666qr/q6hcddVVV1111VVXXXXVVVddddVVV1111VX/V1G56qqrrrrqqquuuuqqq6666qqrrrrqqqv+r6Jy1VVXXXXVVVddddVVV1111VVXXXXVVVf9X0Xlqquuuuqqq6666qqrrrrqqquuuuqqq676v4rKVVddddVVV1111VVXXXXVVVddddVVV131fxWVq6666qqrrrrqqquuuuqqq6666qqrrrrq/yoqV1111VVXXXXVVVddddVVV1111VVXXXXV/1VUrrrqqquuuuqqq6666qqrrrrqqquuuuqq/6uoXHXVVVddddVVV1111VVXXXXVVVddddVV/1dRueqqq6666qqrrrrqqquuuuqqq6666qqr/q+ictVVV1111VVXXXXVVVddddVVV1111VVX/V9F5aqrrrrqqquuuuqqq6666qqrrrrqqquu+r+KylVXXXXVVVddddVVV1111VVXXXXVVVdd9X8Vlauuuuqqq6666qqrrrrqqquuuuqqq6666v8qKlddddVVV1111VVXXXXVVVddddVVV1111f9VVK666qqrrrrqqquuuuqqq6666qqrrrrqqv+rqFx11VVXXXXVVVddddVVV1111VVXXXXVVf9XUbnqqquuuuqqq6666qqrrrrqqquuuuqqq/6vonLVVVddddVVV1111VVXXXXVVVddddVVV/1fReWqq6666qqrrrrqqquuuuqqq6666qqrrvq/ispVV1111VVXXXXVVVddddVVV1111VVXXfV/FZWrrrrqqquuuuqqq6666qqrrrrqqquuuur/KipXXXXVVVddddVVV1111VVXXXXVVVddddX/VVSuuuqqq6666qqrrrrqqquuuuqqq6666qr/q6hcddVVV1111VVXXXXVVVddddVVV1111VX/V1G56qqrrrrqqquuuuqqq6666qqrrrrqqqv+r6Jy1VVXXXXVVVddddVVV1111VVXXXXVVVf9X0Xlqquuuuqqq6666qqrrrrqqquuuuqqq676v4rKVVddddVVV1111VVXXXXVVVddddVVV131fxWVq6666qqrrrrqqquuuuqqq6666qqrrrrq/yoqV1111VVXXXXVVVddddVVV1111VVXXXXV/1VUrrrqqquuuuqqq6666qqrrrrqqquuuuqq/6uoXHXVVVddddVVV1111VVXXXXVVVddddVV/1dRueqqq6666qqrrrrqqquuuuqqq6666qqr/q+ictVVV1111VVXXXXVVVddddVVV1111VVX/V9F5aqrrrrqqquuuuqqq6666qqrrrrqqquu+r+KylVXXXXVVVddddVVV1111VVXXXXVVVdd9X8Vlauuuuqqq6666qqrrrrqqquuuuqqq6666v8qKlddddVVV1111VVXXXXVVVddddVVV1111f9VVK666qqrrrrqqquuuuqqq6666qqrrrrqqv+rqFx11VVXXXXVVVddddVVV1111VVXXXXVVf9XUbnqqquuuuqqq6666qqrrrrqqquuuuqqq/6vonLVVVddddVVV1111VVXXXXVVVddddVVV/1fReWqq6666qqrrrrqqquuuuqqq6666qqrrvq/ispVV1111VVXXXXVVVddddVVV1111VVXXfV/FZWrrrrqqquuuuqqq6666qqrrrrqqquuuur/KipXXXXVVVddddVVV1111VVXXXXVVVddddX/VVSuuuqqq6666qqrrrrqqquuuuqqq6666qr/q6hcddVVV1111VVXXXXVVVddddVVV1111VX/V1G56qqrrrrqqquuuuqqq6666qqrrrrqqqv+r6Jy1VVXXXXVVVddddVVV1111VVXXXXVVVf9X0Xlqquuuuqqq6666qqrrrrqqquuuuqqq676v4rKVVddddVVV1111VVXXXXVVVddddVVV131fxWVq6666qqrrrrqqquuuuqqq6666qqrrrrq/yr+EYliN0PTFQVBAAAAAElFTkSuQmCC) - -```js -const r = 10 // radius -// Call `map`, using an anonymous function instead of a named one. -const circles = map([1, 2, 3], (id) => { - return startSketchOn("XY") - |> circle({ center: [id * 2 * r, 0], radius: r }, %) -}) -``` - -![Rendered example of map 1](data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAABQAAAALQCAYAAADPfd1WAACGl0lEQVR4Ae3gAZAkSZIkSRKLqpm7R0REZmZmVlVVVVV3d3d3d/fMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMdHd3d3dXV1VVVVVmZkZGRIS7m5kKz0xmV3d1d3dPz8zMzMxMYn3Qgx7EVVddddVVV1111VVXXXXVVVddddVVV131fxKVq6666qqrrrrqqquuuuqqq6666qqrrrrq/yoqV1111VVXXXXVVVddddVVV1111VVXXXXV/1VUrrrqqquuuuqqq6666qqrrrrqqquuuuqq/6uoXHXVVVddddVVV1111VVXXXXVVVddddVV/1dRueqqq6666qqrrrrqqquuuuqqq6666qqr/q+ictVVV1111VVXXXXVVVddddVVV1111VVX/V9F5aqrrrrqqquuuuqqq6666qqrrrrqqquu+r+KylVXXXXVVVddddVVV1111VVXXXXVVVdd9X8Vlauuuuqqq6666qqrrrrqqquuuuqqq6666v8qKlddddVVV1111VVXXXXVVVddddVVV1111f9VVK666qqrrrrqqquuuuqqq6666qqrrrrqqv+rqFx11VVXXXXVVVddddVVV1111VVXXXXVVf9XUbnqqquuuuqqq6666qqrrrrqqquuuuqqq/6vonLVVVddddVVV1111VVXXXXVVVddddVVV/1fReWqq6666qqrrrrqqquuuuqqq6666qqrrvq/ispVV1111VVXXXXVVVddddVVV1111VVXXfV/FZWrrrrqqquuuuqqq6666qqrrrrqqquuuur/KipXXXXVVVddddVVV1111VVXXXXVVVddddX/VVSuuuqqq6666qqrrrrqqquuuuqqq6666qr/q6hcddVVV1111VVXXXXVVVddddVVV1111VX/V1G56qqrrrrqqquuuuqqq6666qqrrrrqqqv+r6Jy1VVXXXXVVVddddVVV1111VVXXXXVVVf9X0Xlqquuuuqqq6666qqrrrrqqquuuuqqq676v4rKVVddddVVV1111VVXXXXVVVddddVVV131fxWVq6666qqrrrrqqquuuuqqq6666qqrrrrq/yoqV1111VVXXXXVVVddddVVV1111VVXXXXV/1VUrrrqqquuuuqqq6666qqrrrrqqquuuuqq/6uoXHXVVVddddVVV1111VVXXXXVVVddddVV/1dRueqqq6666qqrrrrqqquuuuqqq6666qqr/q+ictVVV1111VVXXXXVVVddddVVV1111VVX/V9F5aqrrrrqqquuuuqqq6666qqrrrrqqquu+r+KylVXXXXVVVddddVVV1111VVXXXXVVVdd9X8Vlauuuuqqq6666qqrrrrqqquuuuqqq6666v8qKlddddVVV1111VVXXXXVVVddddVVV1111f9VVK666qqrrrrqqquuuuqqq6666qqrrrrqqv+rqFx11VVXXXXVVVddddVVV1111VVXXXXVVf9XUbnqqquuuuqqq6666qqrrrrqqquuuuqqq/6vonLVVVddddVVV1111VVXXXXVVVddddVVV/1fReWqq6666qqrrrrqqquuuuqqq6666qqrrvq/ispVV1111VVXXXXVVVddddVVV1111VVXXfV/FZWrrrrqqquuuuqqq6666qqrrrrqqquuuur/KipXXXXVVVddddVVV1111VVXXXXVVVddddX/VVSuuuqqq6666qqrrrrqqquuuuqqq6666qr/q6hcddVVV1111VVXXXXVVVddddVVV1111VX/V1G56qqrrrrqqquuuuqqq6666qqrrrrqqqv+r6Jy1VVXXXXVVVddddVVV1111VVXXXXVVVf9X0Xlqquuuuqqq6666qqrrrrqqquuuuqqq676v4rKVVddddVVV1111VVXXXXVVVddddVVV131fxWVq6666qqrrrrqqquuuuqqq6666qqrrrrq/yoqV1111VVXXXXVVVddddVVV1111VVXXXXV/1VUrrrqqquuuuqqq6666qqrrrrqqquuuuqq/6uoXHXVVVddddVVV1111VVXXXXVVVddddVV/1dRueqqq6666qqrrrrqqquuuuqqq6666qqr/q+ictVVV1111VVXXXXVVVddddVVV1111VVX/V9F5aqrrrrqqquuuuqqq6666qqrrrrqqquu+r+KylVXXXXVVVddddVVV1111VVXXXXVVVdd9X8Vlauuuuqqq6666qqrrrrqqquuuuqqq6666v8qKlddddVVV1111VVXXXXVVVddddVVV1111f9VVK666qqrrrrqqquuuuqqq6666qqrrrrqqv+rqFx11VVXXXXVVVddddVVV1111VVXXXXVVf9XUbnqqquuuuqqq6666qqrrrrqqquuuuqqq/6vonLVVVddddVVV1111VVXXXXVVVddddVVV/1fReWqq6666qqrrrrqqquuuuqqq6666qqrrvq/ispVV1111VVXXXXVVVddddVVV1111VVXXfV/FZWrrrrqqquuuuqqq6666qqrrrrqqquuuur/KipXXXXVVVddddVVV1111VVXXXXVVVddddX/VVSuuuqqq6666qqrrrrqqquuuuqqq6666qr/q6hcddVVV1111VVXXXXVVVddddVVV1111VX/V1G56qqrrrrqqquuuuqqq6666qqrrrrqqqv+r6Jy1VVXXXXVVVddddVVV1111VVXXXXVVVf9X0Xlqquuuuqqq6666qqrrrrqqquuuuqqq676v4rKVVddddVVV1111VVXXXXVVVddddVVV131fxWVq6666qqrrrrqqquuuuqqq6666qqrrrrq/yoqV1111VVXXXXVVVddddVVV1111VVXXXXV/1VUrrrqqquuuuqqq6666qqrrrrqqquuuuqq/6uoXHXVVVddddVVV1111VVXXXXVVVddddVV/1dRueqqq6666qqrrrrqqquuuuqqq6666qqr/q+ictVVV1111VVXXXXVVVddddVVV1111VVX/V9F5aqrrrrqqquuuuqqq6666qqrrrrqqquu+r+KylVXXXXVVVddddVVV1111VVXXXXVVVdd9X8Vlauuuuqqq6666qqrrrrqqquuuuqqq6666v8qKlddddVVV1111VVXXXXVVVddddVVV1111f9VVK666qqrrrrqqquuuuqqq6666qqrrrrqqv+rqFx11VVXXXXVVVddddVVV1111VVXXXXVVf9XUbnqqquuuuqqq6666qqrrrrqqquuuuqqq/6vonLVVVddddVVV1111VVXXXXVVVddddVVV/1fReWqq6666qqrrrrqqquuuuqqq6666qqrrvq/ispVV1111VVXXXXVVVddddVVV1111VVXXfV/FZWrrrrqqquuuuqqq6666qqrrrrqqquuuur/KipXXXXVVVddddVVV1111VVXXXXVVVddddX/VVSuuuqqq6666qqrrrrqqquuuuqqq6666qr/q6hcddVVV1111VVXXXXVVVddddVVV1111VX/V1G56qqrrrrqqquuuuqqq6666qqrrrrqqqv+r6Jy1VVXXXXVVVddddVVV1111VVXXXXVVVf9X0Xlqquuuuqqq6666qqrrrrqqquuuuqqq676v4rKVVddddVVV1111VVXXXXVVVddddVVV131fxWVq6666qqrrrrqqquuuuqqq6666qqrrrrq/yoqV1111VVXXXXVVVddddVVV1111VVXXXXV/1VUrrrqqquuuuqqq6666qqrrrrqqquuuuqq/6uoXHXVVVddddVVV1111VVXXXXVVVddddVV/1dRueqqq6666qqrrrrqqquuuuqqq6666qqr/q+ictVVV1111VVXXXXVVVddddVVV1111VVX/V9F5aqrrrrqqquuuuqqq6666qqrrrrqqquu+r+KylVXXXXVVVddddVVV1111VVXXXXVVVdd9X8Vlauuuuqqq6666qqrrrrqqquuuuqqq6666v8qKlddddVVV1111VVXXXXVVVddddVVV1111f9VVK666qqrrrrqqquuuuqqq6666qqrrrrqqv+rqFx11VVXXXXVVVddddVVV1111VVXXXXVVf9XUbnqqquuuuqqq6666qqrrrrqqquuuuqqq/6vonLVVVddddVVV1111VVXXXXVVVddddVVV/1fReWqq6666qqrrrrqqquuuuqqq6666qqrrvq/ispVV1111VVXXXXVVVddddVVV1111VVXXfV/FZWrrrrqqquuuuqqq6666qqrrrrqqquuuur/KipXXXXVVVddddVVV1111VVXXXXVVVddddX/VVSuuuqqq6666qqrrrrqqquuuuqqq6666qr/q6hcddVVV1111VVXXXXVVVddddVVV1111VX/V1G56qqrrrrqqquuuuqqq6666qqrrrrqqqv+r6Jy1VVXXXXVVVddddVVV1111VVXXXXVVVf9X0Xlqquuuuqqq6666qqrrrrqqquuuuqqq676v4rKVVddddVVV1111VVXXXXVVVddddVVV131fxWVq6666qqrrrrqqquuuuqqq6666qqrrrrq/yoqV1111VVXXXXVVVddddVVV1111VVXXXXV/1VUrrrqqquuuuqqq6666qqrrrrqqquuuuqq/6uoXHXVVVddddVVV1111VVXXXXVVVddddVV/1dRueqqq6666qqrrrrqqquuuuqqq6666qqr/q+ictVVV1111VVXXXXVVVddddVVV1111VVX/V9F5aqrrrrqqquuuuqqq6666qqrrrrqqquu+r+KylVXXXXVVVddddVVV1111VVXXXXVVVdd9X8Vlauuuuqqq6666qqrrrrqqquuuuqqq6666v8qKlddddVVV1111VVXXXXVVVddddVVV1111f9VVK666qqrrrrqqquuuuqqq6666qqrrrrqqv+rqFx11VVXXXXVVVddddVVV1111VVXXXXVVf9XUbnqqquuuuqqq6666qqrrrrqqquuuuqqq/6vonLVVVddddVVV1111VVXXXXVVVddddVVV/1fReWqq6666qqrrrrqqquuuuqqq6666qqrrvq/ispVV1111VVXXXXVVVddddVVV1111VVXXfV/FZWrrrrqqquuuuqqq6666qqrrrrqqquuuur/KipXXXXVVVddddVVV1111VVXXXXVVVddddX/VVSuuuqqq6666qqrrrrqqquuuuqqq6666qr/q6hcddVVV1111VVXXXXVVVddddVVV1111VX/V1G56qqrrrrqqquuuuqqq6666qqrrrrqqqv+r6Jy1VVXXXXVVVddddVVV1111VVXXXXVVVf9X0Xlqquuuuqqq6666qqrrrrqqquuuuqqq676v4rKVVddddVVV1111VVXXXXVVVddddVVV131fxWVq6666qqrrrrqqquuuuqqq6666qqrrrrq/yoqV1111VVXXXXVVVddddVVV1111VVXXXXV/1VUrrrqqquuuuqqq6666qqrrrrqqquuuuqq/6uoXHXVVVddddVVV1111VVXXXXVVVddddVV/1dRueqqq6666qqrrrrqqquuuuqqq6666qqr/q+ictVVV1111VVXXXXVVVddddVVV1111VVX/V9F5aqrrrrqqquuuuqqq6666qqrrrrqqquu+r+KylVXXXXVVVddddVVV1111VVXXXXVVVdd9X8Vlauuuuqqq6666qqrrrrqqquuuuqqq6666v8qKlddddVVV1111VVXXXXVVVddddVVV1111f9VVK666qqrrrrqqquuuuqqq6666qqrrrrqqv+rqFx11VVXXXXVVVddddVVV1111VVXXXXVVf9XUbnqqquuuuqqq6666qqrrrrqqquuuuqqq/6vonLVVVddddVVV1111VVXXXXVVVddddVVV/1fReWqq6666qqrrrrqqquuuuqqq6666qqrrvq/ispVV1111VVXXXXVVVddddVVV1111VVXXfV/FZWrrrrqqquuuuqqq6666qqrrrrqqquuuur/KipXXXXVVVddddVVV1111VVXXXXVVVddddX/VVSuuuqqq6666qqrrrrqqquuuuqqq6666qr/q6hcddVVV1111VVXXXXVVVddddVVV1111VX/V1G56qqrrrrqqquuuuqqq6666qqrrrrqqqv+r6Jy1VVXXXXVVVddddVVV1111VVXXXXVVVf9X0Xlqquuuuqqq6666qqrrrrqqquuuuqqq676v4rKVVddddVVV1111VVXXXXVVVddddVVV131fxWVq6666qqrrrrqqquuuuqqq6666qqrrrrq/yoqV1111VVXXXXVVVddddVVV1111VVXXXXV/1VUrrrqqquuuuqqq6666qqrrrrqqquuuuqq/6uoXHXVVVddddVVV1111VVXXXXVVVddddVV/1dRueqqq6666qqrrrrqqquuuuqqq6666qqr/q+ictVVV1111VVXXXXVVVddddVVV1111VVX/V9F5aqrrrrqqquuuuqqq6666qqrrrrqqquu+r+KylVXXXXVVVddddVVV1111VVXXXXVVVdd9X8Vlauuuuqqq6666qqrrrrqqquuuuqqq6666v8qKlddddVVV1111VVXXXXVVVddddVVV1111f9VVK666qqrrrrqqquuuuqqq6666qqrrrrqqv+rqFx11VVXXXXVVVddddVVV1111VVXXXXVVf9XUbnqqquuuuqqq6666qqrrrrqqquuuuqqq/6vonLVVVddddVVV1111VVXXXXVVVddddVVV/1fReWqq6666qqrrrrqqquuuuqqq6666qqrrvq/ispVV1111VVXXXXVVVddddVVV1111VVXXfV/FZWrrrrqqquuuuqqq6666qqrrrrqqquuuur/KipXXXXVVVddddVVV1111VVXXXXVVVddddX/VVSuuuqqq6666qqrrrrqqquuuuqqq6666qr/q6hcddVVV1111VVXXXXVVVddddVVV1111VX/V1G56qqrrrrqqquuuuqqq6666qqrrrrqqqv+r6Jy1VVXXXXVVVddddVVV1111VVXXXXVVVf9X0Xlqquuuuqqq6666qqrrrrqqquuuuqqq676v4rKVVddddVVV1111VVXXXXVVVddddVVV131fxWVq6666qqrrrrqqquuuuqqq6666qqrrrrq/yoqV1111VVXXXXVVVddddVVV1111VVXXXXV/1VUrrrqqquuuuqqq6666qqrrrrqqquuuuqq/6uoXHXVVVddddVVV1111VVXXXXVVVddddVV/1dRueqqq6666qqrrrrqqquuuuqqq6666qqr/q+ictVVV1111VVXXXXVVVddddVVV1111VVX/V9F5aqrrrrqqquuuuqqq6666qqrrrrqqquu+r+KylVXXXXVVVddddVVV1111VVXXXXVVVdd9X8Vlauuuuqqq6666qqrrrrqqquuuuqqq6666v8qKlddddVVV1111VVXXXXVVVddddVVV1111f9VVK666qqrrrrqqquuuuqqq6666qqrrrrqqv+rqFx11VVXXXXVVVddddVVV1111VVXXXXVVf9XUbnqqquuuuqqq6666qqrrrrqqquuuuqqq/6vonLVVVddddVVV1111VVXXXXVVVddddVVV/1fReWqq6666qqrrrrqqquuuuqqq6666qqrrvq/ispVV1111VVXXXXVVVddddVVV1111VVXXfV/FZWrrrrqqquuuuqqq6666qqrrrrqqquuuur/KipXXXXVVVddddVVV1111VVXXXXVVVddddX/VVSuuuqqq6666qqrrrrqqquuuuqqq6666qr/q6hcddVVV1111VVXXXXVVVddddVVV1111VX/V1G56qqrrrrqqquuuuqqq6666qqrrrrqqqv+r6Jy1VVXXXXVVVddddVVV1111VVXXXXVVVf9X0Xlqquuuuqqq6666qqrrrrqqquuuuqqq676v4rKVVddddVVV1111VVXXXXVVVddddVVV131fxWVq6666qqrrrrqqquuuuqqq6666qqrrrrq/yoqV1111VVXXXXVVVddddVVV1111VVXXXXV/1VUrrrqqquuuuqqq6666qqrrrrqqquuuuqq/6uoXHXVVVddddVVV1111VVXXXXVVVddddVV/1dRueqqq6666qqrrrrqqquuuuqqq6666qqr/q+ictVVV1111VVXXXXVVVddddVVV1111VVX/V9F5aqrrrrqqquuuuqqq6666qqrrrrqqquu+r+KylVXXXXVVVddddVVV1111VVXXXXVVVdd9X8Vlauuuuqqq6666qqrrrrqqquuuuqqq6666v8qKlddddVVV1111VVXXXXVVVddddVVV1111f9VVK666qqrrrrqqquuuuqqq6666qqrrrrqqv+rqFx11VVXXXXVVVddddVVV1111VVXXXXVVf9XUbnqqquuuuqqq6666qqrrrrqqquuuuqqq/6vonLVVVddddVVV1111VVXXXXVVVddddVVV/1fReWqq6666qqrrrrqqquuuuqqq6666qqrrvq/ispVV1111VVXXXXVVVddddVVV1111VVXXfV/FZWrrrrqqquuuuqqq6666qqrrrrqqquuuur/KipXXXXVVVddddVVV1111VVXXXXVVVddddX/VVSuuuqqq6666qqrrrrqqquuuuqqq6666qr/q6hcddVVV1111VVXXXXVVVddddVVV1111VX/V1G56qqrrrrqqquuuuqqq6666qqrrrrqqqv+r6Jy1VVXXXXVVVddddVVV1111VVXXXXVVVf9X0Xlqquuuuqqq6666qqrrrrqqquuuuqqq676v4rKVVddddVVV1111VVXXXXVVVddddVVV131fxWVq6666qqrrrrqqquuuuqqq6666qqrrrrq/yoqV1111VVXXXXVVVddddVVV1111VVXXXXV/1VUrrrqqquuuuqqq6666qqrrrrqqquuuuqq/6uoXHXVVVddddVVV1111VVXXXXVVVddddVV/1dRueqqq6666qqrrrrqqquuuuqqq6666qqr/q+ictVVV1111VVXXXXVVVddddVVV1111VVX/V9F5aqrrrrqqquuuuqqq6666qqrrrrqqquu+r+KylVXXXXVVVddddVVV1111VVXXXXVVVdd9X8Vlauuuuqqq6666qqrrrrqqquuuuqqq6666v8qKlddddVVV1111VVXXXXVVVddddVVV1111f9VVK666qqrrrrqqquuuuqqq6666qqrrrrqqv+rqFx11VVXXXXVVVddddVVV1111VVXXXXVVf9XUbnqqquuuuqqq6666qqrrrrqqquuuuqqq/6vonLVVVddddVVV1111VVXXXXVVVddddVVV/1fReWqq6666qqrrrrqqquuuuqqq6666qqrrvq/ispVV1111VVXXXXVVVddddVVV1111VVXXfV/FZWrrrrqqquuuuqqq6666qqrrrrqqquuuur/KipXXXXVVVddddVVV1111VVXXXXVVVddddX/VVSuuuqqq6666qqrrrrqqquuuuqqq6666qr/q6hcddVVV1111VVXXXXVVVddddVVV1111VX/V1G56qqrrrrqqquuuuqqq6666qqrrrrqqqv+r6Jy1VVXXXXVVVddddVVV1111VVXXXXVVVf9X0Xlqquuuuqqq6666qqrrrrqqquuuuqqq676v4rKVVddddVVV1111VVXXXXVVVddddVVV131fxWVq6666qqrrrrqqquuuuqqq6666qqrrrrq/yoqV1111VVXXXXVVVddddVVV1111VVXXXXV/1VUrrrqqquuuuqqq6666qqrrrrqqquuuuqq/6uoXHXVVVddddVVV1111VVXXXXVVVddddVV/1dRueqqq6666qqrrrrqqquuuuqqq6666qqr/q+ictVVV1111VVXXXXVVVddddVVV1111VVX/V9F5aqrrrrqqquuuuqqq6666qqrrrrqqquu+r+KylVXXXXVVVddddVVV1111VVXXXXVVVdd9X8Vlauuuuqqq6666qqrrrrqqquuuuqqq6666v8qKlddddVVV1111VVXXXXVVVddddVVV1111f9VVK666qqrrrrqqquuuuqqq6666qqrrrrqqv+rqFx11VVXXXXVVVddddVVV1111VVXXXXVVf9XUbnqqquuuuqqq6666qqrrrrqqquuuuqqq/6vonLVVVddddVVV1111VVXXXXVVVddddVVV/1fReWqq6666qqrrrrqqquuuuqqq6666qqrrvq/ispVV1111VVXXXXVVVddddVVV1111VVXXfV/FZWrrrrqqquuuuqqq6666qqrrrrqqquuuur/KipXXXXVVVddddVVV1111VVXXXXVVVddddX/VVSuuuqqq6666qqrrrrqqquuuuqqq6666qr/q6hcddVVV1111VVXXXXVVVddddVVV1111VX/V1G56qqrrrrqqquuuuqqq6666qqrrrrqqqv+r6Jy1VVXXXXVVVddddVVV1111VVXXXXVVVf9X0Xlqquuuuqqq6666qqrrrrqqquuuuqqq676v4rKVVddddVVV1111VVXXXXVVVddddVVV131fxWVq6666qqrrrrqqquuuuqqq6666qqrrrrq/yoqV1111VVXXXXVVVddddVVV1111VVXXXXV/1VUrrrqqquuuuqqq6666qqrrrrqqquuuuqq/6uoXHXVVVddddVVV1111VVXXXXVVVddddVV/1dRueqqq6666qqrrrrqqquuuuqqq6666qqr/q+ictVVV1111VVXXXXVVVddddVVV1111VVX/V9F5aqrrrrqqquuuuqqq6666qqrrrrqqquu+r+KylVXXXXVVVddddVVV1111VVXXXXVVVdd9X8Vlauuuuqqq6666qqrrrrqqquuuuqqq6666v8qKlddddVVV1111VVXXXXVVVddddVVV1111f9VVK666qqrrrrqqquuuuqqq6666qqrrrrqqv+rqFx11VVXXXXVVVddddVVV1111VVXXXXVVf9XUbnqqquuuuqqq6666qqrrrrqqquuuuqqq/6vonLVVVddddVVV1111VVXXXXVVVddddVVV/1fReWqq6666qqrrrrqqquuuuqqq6666qqrrvq/ispVV1111VVXXXXVVVddddVVV1111VVXXfV/FZWrrrrqqquuuuqqq6666qqrrrrqqquuuur/KipXXXXVVVddddVVV1111VVXXXXVVVddddX/VVSuuuqqq6666qqrrrrqqquuuuqqq6666qr/q6hcddVVV1111VVXXXXVVVddddVVV1111VX/V1G56qqrrrrqqquuuuqqq6666qqrrrrqqqv+r6Jy1VVXXXXVVVddddVVV1111VVXXXXVVVf9X0Xlqquuuuqqq6666qqrrrrqqquuuuqqq676v4rKVVddddVVV1111VVXXXXVVVddddVVV131fxWVq6666qqrrrrqqquuuuqqq6666qqrrrrq/yoqV1111VVXXXXVVVddddVVV1111VVXXXXV/1VUrrrqqquuuuqqq6666qqrrrrqqquuuuqq/6uoXHXVVVddddVVV1111VVXXXXVVVddddVV/1dRueqqq6666qqrrrrqqquuuuqqq6666qqr/q+ictVVV1111VVXXXXVVVddddVVV1111VVX/V9F5aqrrrrqqqv+D7vmmmsezAOcOXPmwfwbnT179lae6b777ruVq676H+Saa655MA9w5syZB/NvdPbs2Vt5pvvuu+9Wrrrqf5BrrrnmwTzAmTNnHsy/0dmzZ2/lme67775bueqqq6666qr/m6hcddVVV1111f8C11xzzYMBzpw58+BrrrnmwWfOnHkQwDXXXPPga6655sE805kzZx58zTXXPJj/Ivfdd9+tPNPZs2dvve+++24FuO+++249e/bsMwDuu+++W8+ePXvrfffddytXXfUvuOaaax4McObMmQdfc801Dz5z5syDAK655poHA1xzzTUPBjhz5syDr7nmmgfzX+S+++67lWc6e/bsrffdd9+tAPfdd9+tZ8+efQbAfffddyvAP/zDP/w2V131IrjmmmsefObMmQdfc801Dz5z5syDAK655poHA1xzzTUPBrjmmmsecubMmQfxX+S+++67FUCS7rvvvqcD3HfffbcC3HfffbeePXv2Gf/wD//w22fOnHnw2bNnb73vvvtu5aqrrrrqqqv+Z0MPetCDuOqqq6666qr/Ttdcc82Dz5w58+BrrrnmwWfOnHkQwIu/+Iu/NsCLvdiLvTYvwO/+7u9+F/+DveZrvub78Fzuu+++WwH+4R/+4bcB/uEf/uF37rvvvlvPnj1763333XcrV/2fd8011zz4zJkzD77mmmsefObMmQddc801D77mmmsefObMmQdfc801D+b5+N3f/d3v4n+w13zN13wfnst99913K8DZs2dvve+++2697777bj179uwz7rvvvlvPnj1763333XcrV/2fd8011zz4zJkzD36xF3ux1wK45pprHnzNNdc8+MVe7MVem+fjd3/3d7+L/8Fe8zVf8314Pu67775bAc6ePXvrfffdd+t999136z/8wz/8DsDZs2dvve+++27lqquuuuqqq/77oAc96EFcddVVV1111X+2a6655sFnzpx58DXXXPPgM2fOPOjFX/zFXxvgxV7sxV6b5/K7v/u738X/E6/5mq/5PjzTfffddyvAP/zDP/z2P/zDP/zOfffdd+vZs2dvve+++27lqv91rrnmmge/2Iu92GufOXPmQddcc82Dr7nmmge/2Iu92GvzXH73d3/3u/h/4jVf8zXfh2e67777bgX4h3/4h98G+Id/+Iffue+++279h3/4h9/mqv91rrnmmgefOXPmwS/2Yi/2Wtdcc81Drrnmmge92Iu92GvzAL/7u7/7Xfw/8Zqv+ZrvwwPcd999t0rSfffd9/T77rvv1n/4h3/4nfvuu+/Ws2fP3nrffffdylVXXXXVVVf950IPetCDuOqqq6666qr/KNdcc82Dz5w58+AXe7EXey2AF3/xF3/tF3uxF3ttHuB3f/d3v4urXqjXfM3XfB+e6b777rv17Nmzt9533323/sM//MPv/MM//MNv33fffbdy1f8I11xzzYPPnDnz4Bd7sRd7rWuuuebBL/ZiL/ba11xzzYN5pt/93d/9Lq76F73ma77m+/BM9913363/8A//8Nv/8A//8Dv33Xffrf/wD//w21z1P8Y111zz4DNnzjz4xV7sxV7rxV/8xV/nxV7sxV6LB/jd3/3d7+KqF+o1X/M134dnuu+++249e/bsrffdd9+t//AP//A79913363/8A//8NtcddVVV1111X8c9KAHPYirrrrqqquu+re45pprHvxiL/Zir33mzJkHvfiLv/hrv9iLvdhr8wC/+7u/+11c9R/qNV/zNd8H4L777rv1H/7hH377H/7hH37nvvvuu/Uf/uEffpur/tNdc801DwZ47dd+7fd68Rd/8dd+sRd7sdfmAX73d3/3u7jqP8xrvuZrvg/PdN999936D//wD79933333foP//APv/MP//APv81V/yWuueaaB7/2a7/2ewG80zu902fzTL/7u7/7XVz1H+o1X/M134dnuu+++249e/bsrffdd9+t//AP//A79913363/8A//8NtcddVVV1111b8eetCDHsRVV1111VVX/UuuueaaB585c+bBL/ZiL/ZaL/7iL/7aL/ZiL/baPNPv/u7vfhdX/bd4zdd8zfcBuO+++279h3/4h9/+h3/4h9/5rd/6re/mqv8Q11xzzYPPnDnz4Bd7sRd7rRd/8Rd/7Rd7sRd7bZ7pd3/3d7+Lq/7LveZrvub73HfffbfyTP/wD//w2//wD//wO7/1W7/13Vz1H+Kaa6558Gu/9mu/F8A7vdM7fTbP9Lu/+7vfxVX/LV7zNV/zfQDuu+++W8+ePXvrfffdd+tv/dZvfc8//MM//DZXXXXVVVdd9S9DD3rQg7jqqquuuuqq53bNNdc8+LVf+7XfC+DFX/zFX/vFXuzFXptn+t3f/d3v4qr/kV7zNV/zfQDuu+++W3/rt37ru//hH/7hd/7hH/7ht7nqRfZiL/Zir/1iL/Zir/XiL/7ir/1iL/Zirw3wu7/7u9/FVf9jveZrvub7ANx33323/sM//MNv/9Zv/db3/MM//MNvc9WL7Jprrnnwa7/2a7/Xi7/4i7/2i73Yi702wO/+7u9+F1f9j/Sar/ma78Mz3Xfffbf+wz/8w2//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X/N97rvvvlt/67d+67t/9Ed/9HO46qqrrrrqXws96EEP4qqrrrrqqn+ba6655sGv/dqv/V7v9E7v9Nm/+7u/+11cddV/oNd8zdd8H4D77rvv1t/6rd/67h/90R/9HK56Dq/zOq/z3q/zOq/zXi/2Yi/22r/7u7/7XVx11X+w13zN13yf++6779Yf/dEf/ezf+q3f+h6uepZrrrnmwS/2Yi/2Wq/zOq/z3i/2Yi/22gC/+7u/+11cddV/oNd8zdd8n3/4h3/47c/8zM98Ha666qqrrvq3Qg960IO46qqrrrrq3+eaa6558Id/+Id/14u92Iu99u/+7u9+F1dd9W/0mq/5mu8DcN999936W7/1W9/927/9299z33333cpVL9Q111zz4Nd+7dd+r3d6p3f6bIDf/d3f/S6uuurf6DVf8zXfB+BHfuRHPvu3f/u3v+e+++67lateqGuuuebBr/3ar/1eL/7iL/7aL/ZiL/baAL/7u7/7XVx11b/Ra77ma77Pfffdd+vXf/3Xv88//MM//DZXXXXVVVf9e6AHPehBXHXVVVdd9R/jdV7ndd77dV7ndd7rxV7sxV77d3/3d7+Lq656Ebzma77m+wDcd999t/7Wb/3Wd//2b//299x33323ctW/2jXXXPPg137t136vF3/xF3/tF3uxF3vt3/3d3/0urrrqRfSar/ma73Pffffd+lu/9Vvf/aM/+qOfw1X/JmfOnHnQ67zO67z3i7/4i7/2i73Yi702wO/+7u9+F1dd9SJ4zdd8zfe57777bv3RH/3Rz/mt3/qt7+aqq6666qr/COhBD3oQV1111VVX/cd6ndd5nfd+ndd5nfd6sRd7sdf+3d/93e/iqquey6Mf/ejXueaaax5833333fpbv/Vb3/0P//APv/MP//APv81V/2GuueaaB7/jO77jZ73O67zOewP87u/+7ndx1VXP5TVf8zXf57777rv1t37rt777H/7hH37nH/7hH36bq/7DXHPNNQ9+7dd+7fd68Rd/8dd+sRd7sdcG+N3f/d3v4qqrnstrvuZrvs99991364/+6I9+zm/91m99N1ddddVVV/1HQg960IO46qqrrrrqP8c111zz4Hd8x3f8rNd5ndd5b4Df/d3f/S6u+n/rNV/zNd8H4L777rv1t37rt777t3/7t7/nvvvuu5Wr/lNdc801D36xF3ux13qd13md936xF3ux1wb43d/93e/iqv+3XvM1X/N9AO67775bf+u3fuu7f/RHf/RzuOo/3TXXXPPgF3uxF3vt13md13mvF3uxF3ttgN/93d/9Lq76f+s1X/M13wfgt37rt777t37rt77nH/7hH36bq6666qqr/jOgBz3oQVx11VVXXfWf65prrnnwa7/2a7/X67zO67z3Nddc8+Df/d3f/S6u+j/vNV/zNd8H4B/+4R9+++///u9/++zZs8/4rd/6re/mqv8211xzzYNf7MVe7LVf53Ve571e7MVe7LUBfvd3f/e7uOr/vNd8zdd8n/vuu+9WgN/6rd/67h/90R/9HK76b3PNNdc8+MVe7MVe68Ve7MVe+5prrnnwi73Yi702wO/+7u9+F1f9n/ear/ma73Pffffd+lu/9Vvf/aM/+qOfw1VXXXXVVf/Z0IMe9CCuuuqqq676r3PNNdc8+B3f8R0/63Ve53XeG+B3f/d3v4ur/k94zdd8zfcBuO+++249e/bsrX//93//27/927/9Pffdd9+tXPU/zpkzZx704i/+4q/zYi/2Yq/1Oq/zOu/NM/3u7/7ud3HV/3qv+Zqv+T4A9913362/9Vu/9d0AP/qjP/o5XPU/0jXXXPPgF3uxF3vtF3uxF3ut13md13lvnul3f/d3v4ur/k94zdd8zfe57777bv2t3/qt7/6Hf/iH3/mHf/iH3+aqq6666qr/KuhBD3oQV1111VVX/de75pprHvxiL/Zir/1iL/Zir/U6r/M67w3wu7/7u9/FVf9rvOZrvub7ANx33323nj179ta///u//+1/+Id/+J1/+Id/+G2u+l/lmmuueTDAa7/2a7/Xi7/4i7/2i73Yi702wO/+7u9+F1f9r/Gar/ma7wNw33333fpbv/Vb3/0P//APv/MP//APv81V/+tcc801D36xF3ux136xF3ux13qd13md9+aZfvd3f/e7uOp/hdd8zdd8H4D77rvv1t/6rd/67rNnzz7jt37rt76bq6666qqr/jugBz3oQVx11VVXXfXf65prrnnwmTNnHvxiL/Zir/XiL/7ir/1iL/Zirw3wu7/7u9/FVf8jvOZrvub78Ez33XffrT/6oz/6OWfOnHnQb//2b3/PfffddytX/Z9yzTXXPPjFXuzFXvvFXuzFXuuaa6558Iu92Iu9NsDv/u7vfhdX/Y/xmq/5mu8DcN999936W7/1W98N8KM/+qOfw1X/51xzzTUPfrEXe7HXfrEXe7HXuuaaax78Yi/2Yq/NM/3u7/7ud3HV/wiv+Zqv+T4A9913362/9Vu/9d3/8A//8Dv/8A//8NtcddVVV1313w096EEP4qqrrrrqqv9Zrrnmmge/2Iu92Gu/2Iu92Gtdc801D36xF3ux1wb43d/93e/iqv90r/mar/k+PNN9991369mzZ2/9+7//+9/+h3/4h9/5h3/4h9/mqv93rrnmmge/2Iu92Gu/2Iu92Gtdc801D36xF3ux1+aZfvd3f/e7uOo/3Wu+5mu+D89033333fpbv/Vb3/0P//APv/MP//APv81V/++cOXPmQddcc81Drrnmmge/2Iu92Gtdc801D36xF3ux1+aZfvd3f/e7uOo/3Wu+5mu+D8A//MM//Pbf//3f/zbAj/7oj34OV1111VVX/U+DHvSgB3HVVVddddX/bNdcc82DX+zFXuy1X+zFXuy1rrnmmge/2Iu92GvzTL/7u7/7XVz1b/Kar/ma78MD3Hfffbf+wz/8w2/fd999t/7DP/zD7/zDP/zDb3PVVc/HmTNnHiRJL/ZiL/baL/ZiL/Za11xzzYNf7MVe7LV5pt/93d/9Lq76N3vN13zN9+GZ7rvvvlt/67d+67sB/uEf/uF3/uEf/uG3ueqq5+PMmTMPuuaaax5yzTXXPPjFXuzFXuuaa6558Iu92Iu9Ng/wu7/7u9/FVf8mr/mar/k+PNN9991362/91m99N8CP/uiPfg5XXXXVVVf9T4ce9KAHcdVVV1111f8u11xzzYPPnDnz4GuuuebBL/ZiL/Za11xzzYNf7MVe7LV5gN/93d/9Lq7iNV/zNd+HB7jvvvtuBfiHf/iH377vvvtu/Yd/+IffOXv27K333XffrVx11b/DmTNnHiRJL/ZiL/baL/ZiL/Za11xzzYPPnDnz4GuuuebBPMDv/u7vfhdX8Zqv+ZrvwwPcd999t549e/bWv//7v/9tgH/4h3/4nX/4h3/4ba666t/pmmuuefCLvdiLvTbAi73Yi73WNddc8+AXe7EXe20e4Hd/93e/i6sue83XfM334QH+4R/+4bf//u///rcB/uEf/uF3/uEf/uG3ueqqq6666n8b9KAHPYirrrrqqqv+b7jmmmse/GIv9mKvDfBiL/Zir3XNNdc8+MyZMw++5pprHswD/O7v/u538X/Ea77ma74Pz+W+++679ezZs7f+/d///W8DnD179hn33Xffrf/wD//w21x11X+xa6655sEAL/ZiL/baAC/2Yi/2Wtdcc82Dz5w58+BrrrnmwTyX3/3d3/0u/g94zdd8zffhudx33323nj179tb77rvv1vvuu+/Ws2fPPuO+++679R/+4R9+m6uu+i92zTXXPPjMmTMPvuaaax585syZB11zzTUPvuaaax585syZB19zzTUP5rn87u/+7nfxf8RrvuZrvg8PcN9999169uzZW++7775b77vvvlv/4R/+4XfOnj1763333XcrV1111VVX/V+AHvSgB3HVVVddddX/bddcc82DAc6cOfPga6655sEv9mIv9loA11xzzYMBXuzFXuy1eSH+9E//9Mf4L/CKr/iK78ALcd99990KcPbs2Vvvu+++W++7775bAc6ePfuM++6779azZ8/eet99993KVVf9L3HNNdc8GODMmTMPuuaaax4C8GIv9mKvdc011zwY4MyZMw++5pprHswL8ad/+qc/xn+BV3zFV3wHXoh/+Id/+O0zZ848+OzZs7f+/d///W8DnD179hn33Xff08+ePfuM++6771auuup/iWuuuebBtn3NNdc85JprrnkwwIu92Iu9FsA111zzYIAzZ848+JprrnkwL8Sf/umf/hj/yV7xFV/xHXgh7rvvvlsBzp49e+t9991363333XcrwG//9m9/z5kzZx78D//wD7/NVVddddVV/9ehBz3oQVx11VVXXXUVwDXXXPNggDNnzjz4mmuueTDPdObMmQddc801D+a5XHPNNQ/muZw5c+bBPMDZs2dv5fm47777buWZ7rvvvlt5prNnzz4D4L777rsV4OzZs7fed999t3LVVf+PXXPNNQ8GsO1rrrnmIddcc82DeTa/2Iu92GvzXK655poH83ycOXPmwTzT2bNnbwW47777br3mmmsezDPdd999twLcd999t/IAZ8+efQbAfffddyvgs2fPPuO+++67lauu+n/szJkzD5KkM2fOPBjgmmuueTDgM2fOPBjgmmuueTDP5Zprrnkwz+XMmTMP5gHOnj17K8/HfffddyvPdN99993KM509e/YZgO+7775nAPzDP/zDb3PVVVddddVVV6AHPehBXHXVVVddddVVV1111VVXXXXVVVddddVV/ydRueqqq6666qqrrrrqqquuuuqqq6666qqr/q+ictVVV1111VVXXXXVVVddddVVV1111VVX/V9F5aqrrrrqqquuuuqqq6666qqrrrrqqquu+r+KylVXXXXVVVddddVVV1111VVXXXXVVVdd9X8Vlauuuuqqq6666qqrrrrqqquuuuqqq6666v8qKlddddVVV1111VVXXXXVVVddddVVV1111f9VVK666qqrrrrqqquuuuqqq6666qqrrrrqqv+rqFx11VVXXXXVVVddddVVV1111VVXXXXVVf9XUbnqqquuuuqqq6666qqrrrrqqquuuuqqq/6vonLVVVddddVVV1111VVXXXXVVVddddVVV/1fReWqq6666qqrrrrqqquuuuqqq6666qqrrvq/ispVV1111VVXXXXVVVddddVVV1111VVXXfV/FZWrrrrqqquuuuqqq6666qqrrrrqqquuuur/KipXXXXVVVddddVVV1111VVXXXXVVVddddX/VVSuuuqqq6666qqrrrrqqquuuuqqq6666qr/q6hcddVVV1111VVXXXXVVVddddVVV1111VX/V1G56qqrrrrqqquuuuqqq6666qqrrrrqqqv+r6Jy1VVXXXXVVVddddVVV1111VVXXXXVVVf9X0Xlqquuuuqqq6666qqrrrrqqquuuuqqq676v4rKVVddddVVV1111VVXXXXVVVddddVVV131fxWVq6666qqrrrrqqquuuuqqq6666qqrrrrq/yoqV1111VVXXXXVVVddddVVV1111VVXXXXV/1VUrrrqqquuuuqqq6666qqrrrrqqquuuuqq/6uoXHXVVVddddVVV1111VVXXXXVVVddddVV/1dRueqqq6666qqrrrrqqquuuuqqq6666qqr/q+ictVVV1111VVXXXXVVVddddVVV1111VVX/V9F5aqrrrrqqquuuuqqq6666qqrrrrqqquu+r+KylVXXXXVVVddddVVV1111VVXXXXVVVdd9X8Vlauuuuqqq6666qqrrrrqqquuuuqqq6666v8qKlddddVVV1111VVXXXXVVVddddVVV1111f9VVK666qqrrrrqqquuuuqqq6666qqrrrrqqv+rqFx11VVXXXXVVVddddVVV1111VVXXXXVVf9XUbnqqquuuuqqq6666qqrrrrqqquuuuqqq/6vonLVVVddddVVV1111VVXXXXVVVddddVVV/1fReWqq6666qqrrrrqqquuuuqqq6666qqrrvq/ispVV1111VVXXXXVVVddddVVV1111VVXXfV/FZWrrrrqqquuuuqqq6666qqrrrrqqquuuur/KipXXXXVVVddddVVV1111VVXXXXVVVddddX/VVSuuuqqq6666qqrrrrqqquuuuqqq6666qr/q6hcddVVV1111VVXXXXVVVddddVVV1111VX/V1G56qqrrrrqqquuuuqqq6666qqrrrrqqqv+r6Jy1VVXXXXVVVddddVVV1111VVXXXXVVVf9X0Xlqquuuuqqq6666qqrrrrqqquuuuqqq676v4rKVVddddVVV1111VVXXXXVVVddddVVV131fxWVq6666qqrrrrqqquuuuqqq6666qqrrrrq/yoqV1111VVXXXXVVVddddVVV1111VVXXXXV/1VUrrrqqquuuuqqq6666qqrrrrqqquuuuqq/6uoXHXVVVddddVVV1111VVXXXXVVVddddVV/1dRueqqq6666qqrrrrqqquuuuqqq6666qqr/q+ictVVV1111VVXXXXVVVddddVVV1111VVX/V9F5aqrrrrqqquuuuqqq6666qqrrrrqqquu+r+KylVXXXXVVVddddVVV1111VVXXXXVVVdd9X8Vlauuuuqqq6666qqrrrrqqquuuuqqq6666v8qKlddddVVV1111VVXXXXVVVddddVVV1111f9VVK666qqrrrrqqquuuuqqq6666qqrrrrqqv+rqFx11VVXXXXVVVddddVVV1111VVXXXXVVf9XUbnqqquuuuqqq6666qqrrrrqqquuuuqqq/6vonLVVVddddVVV1111VVXXXXVVVddddVVV/1fReWqq6666qqrrrrqqquuuuqqq6666qqrrvq/ispVV1111VVXXXXVVVddddVVV1111VVXXfV/FZWrrrrqqquuuuqqq6666qqrrrrqqquuuur/KipXXXXVVVddddVVV1111VVXXXXVVVddddX/VVSuuuqqq6666qqrrrrqqquuuuqqq6666qr/q6hcddVVV1111VVXXXXVVVddddVVV1111VX/V1G56qqrrrrqqquuuuqqq6666qqrrrrqqqv+r6Jy1VVXXXXVVVddddVVV1111VVXXXXVVVf9X0Xlqquuuuqqq6666qqrrrrqqquuuuqqq676v4rKVVddddVVV1111VVXXXXVVVddddVVV131fxWVq6666qqrrrrqqquuuuqqq6666qqrrrrq/yoqV1111VVXXXXVVVddddVVV1111VVXXXXV/1VUrrrqqquuuuqqq6666qqrrrrqqquuuuqq/6uoXHXVVVddddVVV1111VVXXXXVVVddddVV/1dRueqqq6666qqrrrrqqquuuuqqq6666qqr/q+ictVVV1111VVXXXXVVVddddVVV1111VVX/V9F5aqrrrrqqquuuuqqq6666qqrrrrqqquu+r+KylVXXXXVVVddddVVV1111VVXXXXVVVdd9X8Vlauuuuqqq6666qqrrrrqqquuuuqqq6666v8qKlddddVVV1111VVXXXXVVVddddVVV1111f9VVK666qqrrrrqqquuuuqqq6666qqrrrrqqv+rqFx11VVXXXXVVVddddVVV1111VVXXXXVVf9XUbnqqquuuuqqq6666qqrrrrqqquuuuqqq/6vonLVVVddddVVV1111VVXXXXVVVddddVVV/1fReWqq6666qqrrrrqqquuuuqqq6666qqrrvq/ispVV1111VVXXXXVVVddddVVV1111VVXXfV/FZWrrrrqqquuuuqqq6666qqrrrrqqquuuur/KipXXXXVVVddddVVV1111VVXXXXVVVddddX/VVSuuuqqq6666qqrrrrqqquuuuqqq6666qr/q6hcddVVV1111VVXXXXVVVddddVVV1111VX/V1G56qqrrrrqqquuuuqqq6666qqrrrrqqqv+r6Jy1VVXXXXVVVddddVVV1111VVXXXXVVVf9X0Xlqquuuuqqq6666qqrrrrqqquuuuqqq676v4rKVVddddVVV1111VVXXXXVVVddddVVV131fxWVq6666qqrrrrqqquuuuqqq6666qqrrrrq/yoqV1111VVXXXXVVVddddVVV1111VVXXXXV/1VUrrrqqquuuuqqq6666qqrrrrqqquuuuqq/6uoXHXVVVddddVVV1111VVXXXXVVVddddVV/1dRueqqq6666qqrrrrqqquuuuqqq6666qqr/q+ictVVV1111VVXXXXVVVddddVVV1111VVX/V9F5aqrrrrqqquuuuqqq6666qqrrrrqqquu+r+KylVXXXXVVVddddVVV1111VVXXXXVVVdd9X8Vlauuuuqqq6666qqrrrrqqquuuuqqq6666v8qKlddddVVV1111VVXXXXVVVddddVVV1111f9VVK666qqrrrrqqquuuuqqq6666qqrrrrqqv+rqFx11VVXXXXVVVddddVVV1111VVXXXXVVf9XUbnqqquuuuqqq6666qqrrrrqqquuuuqqq/6vonLVVVddddVVV1111VVXXXXVVVddddVVV/1fReWqq6666qqrrrrqqquuuuqqq6666qqrrvq/ispVV1111VVXXXXVVVddddVVV1111VVXXfV/FZWrrrrqqquuuuqqq6666qqrrrrqqquuuur/KipXXXXVVVddddVVV1111VVXXXXVVVddddX/VVSuuuqqq6666qqrrrrqqquuuuqqq6666qr/q6hcddVVV1111VVXXXXVVVddddVVV1111VX/V1G56qqrrrrqqquuuuqqq6666qqrrrrqqqv+r6Jy1VVXXXXVVVddddVVV1111VVXXXXVVVf9X0Xlqquuuuqqq6666qqrrrrqqquuuuqqq676v4rKVVddddVVV1111VVXXXXVVVddddVVV131fxWVq6666qqrrrrqqquuuuqqq6666qqrrrrq/yoqV1111VVXXXXVVVddddVVV1111VVXXXXV/1VUrrrqqquuuuqqq6666qqrrrrqqquuuuqq/6uoXHXVVVddddVVV1111VVXXXXVVVddddVV/1dRueqqq6666qqrrrrqqquuuuqqq6666qqr/q+ictVVV1111VVXXXXVVVddddVVV1111VVX/V9F5aqrrrrqqquuuuqqq6666qqrrrrqqquu+r+KylVXXXXVVVddddVVV1111VVXXXXVVVdd9X8Vlauuuuqqq6666qqrrrrqqquuuuqqq6666v8qKlddddVVV1111VVXXXXVVVddddVVV1111f9VVK666qqrrrrqqquuuuqqq6666qqrrrrqqv+rqFx11VVXXXXVVVddddVVV1111VVXXXXVVf9XUbnqqquuuuqqq6666qqrrrrqqquuuuqqq/6vonLVVVddddVVV1111VVXXXXVVVddddVVV/1fReWqq6666qqrrrrqqquuuuqqq6666qqrrvq/ispVV1111VVXXXXVVVddddVVV1111VVXXfV/FZWrrrrqqquuuuqqq6666qqrrrrqqquuuur/KipXXXXVVVddddVVV1111VVXXXXVVVddddX/VVSuuuqqq6666qqrrrrqqquuuuqqq6666qr/q6hcddVVV1111VVXXXXVVVddddVVV1111VX/V1G56qqrrrrqqquuuuqqq6666qqrrrrqqqv+r6Jy1VVXXXXVVVddddVVV1111VVXXXXVVVf9X0Xlqquuuuqqq6666qqrrrrqqquuuuqqq676v4rKVVddddVVV1111VVXXXXVVVddddVVV131fxWVq6666qqrrrrqqquuuuqqq6666qqrrrrq/yoqV1111VVXXXXVVVddddVVV1111VVXXXXV/1VUrrrqqquuuuqqq6666qqrrrrqqquuuuqq/6uoXHXVVVddddVVV1111VVXXXXVVVddddVV/1dRueqqq6666qqrrrrqqquuuuqqq6666qqr/q+ictVVV1111VVXXXXVVVddddVVV1111VVX/V9F5aqrrrrqqquuuuqqq6666qqrrrrqqquu+r+KylVXXXXVVVddddVVV1111VVXXXXVVVdd9X8Vlauuuuqqq6666qqrrrrqqquuuuqqq6666v8qKlddddVVV1111VVXXXXVVVddddVVV1111f9VVK666qqrrrrqqquuuuqqq6666qqrrrrqqv+rqFx11VVXXXXVVVddddVVV1111VVXXXXVVf9XUbnqqquuuuqqq6666qqrrrrqqquuuuqqq/6vonLVVVddddVVV1111VVXXXXVVVddddVVV/1fReWqq6666qqrrrrqqquuuuqqq6666qqrrvq/ispVV1111VVXXXXVVVddddVVV1111VVXXfV/FZWrrrrqqquuuuqqq6666qqrrrrqqquuuur/KipXXXXVVVddddVVV1111VVXXXXVVVddddX/VVSuuuqqq6666qqrrrrqqquuuuqqq6666qr/q6hcddVVV1111VVXXXXVVVddddVVV1111VX/V1G56qqrrrrqqquuuuqqq6666qqrrrrqqqv+r6Jy1VVXXXXVVVddddVVV1111VVXXXXVVVf9X0Xlqquuuuqqq6666qqrrrrqqquuuuqqq676v4rKVVddddVVV1111VVXXXXVVVddddVVV131fxWVq6666qqrrrrqqquuuuqqq6666qqrrrrq/yoqV1111VVXXXXVVVddddVVV1111VVXXXXV/1VUrrrqqquuuuqqq6666qqrrrrqqquuuuqq/6uoXHXVVVddddVVV1111VVXXXXVVVddddVV/1dRueqqq6666qqrrrrqqquuuuqqq6666qqr/q+ictVVV1111VVXXXXVVVddddVVV1111VVX/V9F5aqrrrrqqquuuuqqq6666qqrrrrqqquu+r+KylVXXXXVVVddddVVV1111VVXXXXVVVdd9X8Vlauuuuqqq6666qqrrrrqqquuuuqqq6666v8qKlddddVVV1111VVXXXXVVVddddVVV1111f9VVK666qqrrrrqqquuuuqqq6666qqrrrrqqv+rqFx11VVXXXXVVVddddVVV1111VVXXXXVVf9XUbnqqquuuuqqq6666qqrrrrqqquuuuqqq/6vonLVVVddddVVV1111VVXXXXVVVddddVVV/1fReWqq6666qqrrrrqqquuuuqqq6666qqrrvq/ispVV1111VVXXXXVVVddddVVV1111VVXXfV/FZWrrrrqqquuuuqqq6666qqrrrrqqquuuur/KipXXXXVVVddddVVV1111VVXXXXVVVddddX/VVSuuuqqq6666qqrrrrqqquuuuqqq6666qr/q6hcddVVV1111VVXXXXVVVddddVVV1111VX/V1G56qqrrrrqqquuuuqqq6666qqrrrrqqqv+r6Jy1VVXXXXVVVddddVVV1111VVXXXXVVVf9X0Xlqquuuuqqq6666qqrrrrqqquuuuqqq676v4rKVVddddVVV1111VVXXXXVVVddddVVV131fxWVq6666qqrrrrqqquuuuqqq6666qqrrrrq/yoqV1111VVXXXXVVVddddVVV1111VVXXXXV/1VUrrrqqquuuuqqq6666qqrrrrqqquuuuqq/6uoXHXVVVddddVVV1111VVXXXXVVVddddVV/1dRueqqq6666qqrrrrqqquuuuqqq6666qqr/q+ictVVV1111VVXXXXVVVddddVVV1111VVX/V9F5aqrrrrqqquuuuqqq6666qqrrrrqqquu+r+KylVXXXXVVVddddVVV1111VVXXXXVVVdd9X8Vlauuuuqqq6666qqrrrrqqquuuuqqq6666v8qKlddddVVV1111VVXXXXVVVddddVVV1111f9VVK666qqrrrrqqquuuuqqq6666qqrrrrqqv+rqFx11VVXXXXVVVddddVVV1111VVXXXXVVf9XUbnqqquuuuqqq6666qqrrrrqqquuuuqqq/6vonLVVVddddVVV1111VVXXXXVVVddddVVV/1fReWqq6666qqrrrrqqquuuuqqq6666qqrrvq/ispVV1111VVXXXXVVVddddVVV1111VVXXfV/FZWrrrrqqquuuuqqq6666qqrrrrqqquuuur/KipXXXXVVVddddVVV1111VVXXXXVVVddddX/VVSuuuqqq6666qqrrrrqqquuuuqqq6666qr/q6hcddVVV1111VVXXXXVVVddddVVV1111VX/V1G56qqrrrrqqquuuuqqq6666qqrrrrqqqv+r6Jy1VVXXXXVVVddddVVV1111VVXXXXVVVf9X0Xlqquuuuqqq6666qqrrrrqqquuuuqqq676v4rKVVddddVVV1111VVXXXXVVVddddVVV131fxWVq6666qqrrrrqqquuuuqqq6666qqrrrrq/yoqV1111VVXXXXVVVddddVVV1111VVXXXXV/1VUrrrqqquuuuqqq6666qqrrrrqqquuuuqq/6uoXHXVVVddddVVV1111VVXXXXVVVddddVV/1dRueqqq6666qqrrrrqqquuuuqqq6666qqr/q+ictVVV1111VVXXXXVVVddddVVV1111VVX/V9F5aqrrrrqqquuuuqqq6666qqrrrrqqquu+r+KylVXXXXVVVddddVVV1111VVXXXXVVVdd9X8Vlauuuuqqq6666qqrrrrqqquuuuqqq6666v8qKlddddVVV1111VVXXXXVVVddddVVV1111f9VVK666qqrrrrqqquuuuqqq6666qqrrrrqqv+rqFx11VVXXXXVVVddddVVV1111VVXXXXVVf9XUbnqqquuuuqqq6666qqrrrrqqquuuuqqq/6vonLVVVddddVVV1111VVXXXXVVVddddVVV/1fReWqq6666qqrrrrqqquuuuqqq6666qqrrvq/ispVV1111VVXXXXVVVddddVVV1111VVXXfV/FZWrrrrqqquuuuqqq6666qqrrrrqqquuuur/KipXXXXVVVddddVVV1111VVXXXXVVVddddX/VVSuuuqqq6666qqrrrrqqquuuuqqq6666qr/q6hcddVVV1111VVXXXXVVVddddVVV1111VX/V1G56qqrrrrqqquuuuqqq6666qqrrrrqqqv+r6Jy1VVXXXXVVVddddVVV1111VVXXXXVVVf9X0Xlqquuuuqqq6666qqrrrrqqquuuuqqq676v4rKVVddddVVV1111VVXXXXVVVddddVVV131fxWVq6666qqrrrrqqquuuuqqq6666qqrrrrq/yoqV1111VVXXXXVVVddddVVV1111VVXXXXV/1VUrrrqqquuuuqqq6666qqrrrrqqquuuuqq/6uoXHXVVVddddVVV1111VVXXXXVVVddddVV/1dRueqqq6666qqrrrrqqquuuuqqq6666qqr/q+ictVVV1111VVXXXXVVVddddVVV1111VVX/V9F5aqrrrrqqquuuuqqq6666qqrrrrqqquu+r+KylVXXXXVVVddddVVV1111VVXXXXVVVdd9X8Vlauuuuqqq6666qqrrrrqqquuuuqqq6666v8qKlddddVVV1111VVXXXXVVVddddVVV1111f9VVK666qqrrrrqqquuuuqqq6666qqrrrrqqv+rqFx11VVXXXXVVVddddVVV1111VVXXXXVVf9XUbnqqquuuuqqq6666qqrrrrqqquuuuqqq/6vonLVVVddddVVV1111VVXXXXVVVddddVVV/1fReWqq6666qqrrrrqqquuuuqqq6666qqrrvq/ispVV1111VVXXXXVVVddddVVV1111VVXXfV/FZWrrrrqqquuuuqqq6666qqrrrrqqquuuur/KipXXXXVVVddddVVV1111VVXXXXVVVddddX/VVSuuuqqq6666qqrrrrqqquuuuqqq6666qr/q6hcddVVV1111VVXXXXVVVddddVVV1111VX/V1G56qqrrrrqqquuuuqqq6666qqrrrrqqqv+r6Jy1VVXXXXVVVddddVVV1111VVXXXXVVVf9X0Xlqquuuuqqq6666qqrrrrqqquuuuqqq676v4rKVVddddVVV1111VVXXXXVVVddddVVV131fxWVq6666qqrrrrqqquuuuqqq6666qqrrrrq/yoqV1111VVXXXXVVVddddVVV1111VVXXXXV/1VUrrrqqquuuuqqq6666qqrrrrqqquuuuqq/6uoXHXVVVddddVVV1111VVXXXXVVVddddVV/1dRueqqq6666qqrrrrqqquuuuqqq6666qqr/q+ictVVV1111VVXXXXVVVddddVVV1111VVX/V9F5aqrrrrqqquuuuqqq6666qqrrrrqqquu+r+KylVXXXXVVVddddVVV1111VVXXXXVVVdd9X8Vlauuuuqqq6666qqrrrrqqquuuuqqq6666v8qKlddddVVV1111VVXXXXVVVddddVVV1111f9VVK666qqrrrrqqquuuuqqq6666qqrrrrqqv+rqFx11VVXXXXVVVddddVVV1111VVXXXXVVf9XUbnqqquuuuqqq6666qqrrrrqqquuuuqqq/6vonLVVVddddVVV1111VVXXXXVVVddddVVV/1fReWqq6666qqrrrrqqquuuuqqq6666qqrrvq/ispVV1111VVXXXXVVVddddVVV1111VVXXfV/FZWrrrrqqquuuuqqq6666qqrrrrqqquuuur/KipXXXXVVVddddVVV1111VVXXXXVVVddddX/VVSuuuqqq6666qqrrrrqqquuuuqqq6666qr/q6hcddVVV1111VVXXXXVVVddddVVV1111VX/V1G56qqrrrrqqquuuuqqq6666qqrrrrqqqv+r6Jy1VVXXXXVVVddddVVV1111VVXXXXVVVf9X0Xlqquuuuqqq6666qqrrrrqqquuuuqqq676v4rKVVddddVVV1111VVXXXXVVVddddVVV131fxWVq6666qqrrrrqqquuuuqqq6666qqrrrrq/yoqV1111VVXXXXVVVddddVVV1111VVXXXXV/1VUrrrqqquuuuqqq6666qqrrrrqqquuuuqq/6uoXHXVVVddddVVV1111VVXXXXVVVddddVV/1dRueqqq6666qqrrrrqqquuuuqqq6666qqr/q+ictVVV1111VVXXXXVVVddddVVV1111VVX/V9F5aqrrrrqqquuuuqqq6666qqrrrrqqquu+r+KylVXXXXVVVddddVVV1111VVXXXXVVVdd9X8Vlauuuuqqq6666qqrrrrqqquuuuqqq6666v8qKlddddVVV1111VVXXXXVVVddddVVV1111f9VVK666qqrrrrqqquuuuqqq6666qqrrrrqqv+rqFx11VVXXXXVVVddddVVV1111VVXXXXVVf9XUbnqqquuuuqqq6666qqrrrrqqquuuuqqq/6vonLVVVddddVVV1111VVXXXXVVVddddVVV/1fReWqq6666qqrrrrqqquuuuqqq6666qqrrvq/ispVV1111VVXXXXVVVddddVVV1111VVXXfV/FZWrrrrqqquuuuqqq6666qqrrrrqqquuuur/KipXXXXVVVddddVVV1111VVXXXXVVVddddX/VVSuuuqqq6666qqrrrrqqquuuuqqq6666qr/q6hcddVVV1111VVXXXXVVVddddVVV1111VX/V1G56qqrrrrqqquuuuqqq6666qqrrrrqqqv+r6Jy1VVXXXXVVVddddVVV1111VVXXXXVVVf9X0Xlqquuuuqqq6666qqrrrrqqquuuuqqq676v4rKVVddddVVV1111VVXXXXVVVddddVVV131fxWVq6666qqrrrrqqquuuuqqq6666qqrrrrq/yr+EYliN0PTFQVBAAAAAElFTkSuQmCC) - - diff --git a/docs/kcl/std.json b/docs/kcl/std.json index 216e1dd16..9282eed3a 100644 --- a/docs/kcl/std.json +++ b/docs/kcl/std.json @@ -80894,10736 +80894,6 @@ "const totalWidth = 10 * m()" ] }, - { - "name": "map", - "summary": "Apply a function to every element of a list.", - "description": "Given a list like `[a, b, c]`, and a function like `f`, returns `[f(a), f(b), f(c)]`", - "tags": [], - "args": [ - { - "name": "array", - "type": "[KclValue]", - "schema": { - "$schema": "https://spec.openapis.org/oas/3.0/schema/2019-04-02#/definitions/Schema", - "title": "Array_of_KclValue", - "type": "array", - "items": { - "$ref": "#/components/schemas/KclValue" - }, - "definitions": { - "KclValue": { - "description": "A memory item.", - "oneOf": [ - { - "type": "object", - "required": [ - "__meta", - "type", - "value" - ], - "properties": { - "type": { - "type": "string", - "enum": [ - "UserVal" - ] - }, - "value": {}, - "__meta": { - "type": "array", - "items": { - "$ref": "#/components/schemas/Metadata" - } - } - } - }, - { - "type": "object", - "required": [ - "__meta", - "type", - "value" - ], - "properties": { - "type": { - "type": "string", - "enum": [ - "TagIdentifier" - ] - }, - "value": { - "type": "string" - }, - "info": { - "allOf": [ - { - "$ref": "#/components/schemas/TagEngineInfo" - } - ], - "nullable": true - }, - "__meta": { - "type": "array", - "items": { - "$ref": "#/components/schemas/Metadata" - } - } - } - }, - { - "type": "object", - "required": [ - "end", - "start", - "type", - "value" - ], - "properties": { - "type": { - "type": "string", - "enum": [ - "TagDeclarator" - ] - }, - "start": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "end": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "value": { - "type": "string" - }, - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - } - } - }, - { - "description": "A plane.", - "type": "object", - "required": [ - "__meta", - "id", - "origin", - "type", - "value", - "xAxis", - "yAxis", - "zAxis" - ], - "properties": { - "type": { - "type": "string", - "enum": [ - "Plane" - ] - }, - "id": { - "description": "The id of the plane.", - "type": "string", - "format": "uuid" - }, - "value": { - "$ref": "#/components/schemas/PlaneType" - }, - "origin": { - "description": "Origin of the plane.", - "allOf": [ - { - "$ref": "#/components/schemas/Point3d" - } - ] - }, - "xAxis": { - "description": "What should the plane’s X axis be?", - "allOf": [ - { - "$ref": "#/components/schemas/Point3d" - } - ] - }, - "yAxis": { - "description": "What should the plane’s Y axis be?", - "allOf": [ - { - "$ref": "#/components/schemas/Point3d" - } - ] - }, - "zAxis": { - "description": "The z-axis (normal).", - "allOf": [ - { - "$ref": "#/components/schemas/Point3d" - } - ] - }, - "__meta": { - "type": "array", - "items": { - "$ref": "#/components/schemas/Metadata" - } - } - } - }, - { - "description": "A face.", - "type": "object", - "required": [ - "__meta", - "id", - "solid", - "type", - "value", - "xAxis", - "yAxis", - "zAxis" - ], - "properties": { - "type": { - "type": "string", - "enum": [ - "Face" - ] - }, - "id": { - "description": "The id of the face.", - "type": "string", - "format": "uuid" - }, - "value": { - "description": "The tag of the face.", - "type": "string" - }, - "xAxis": { - "description": "What should the face’s X axis be?", - "allOf": [ - { - "$ref": "#/components/schemas/Point3d" - } - ] - }, - "yAxis": { - "description": "What should the face’s Y axis be?", - "allOf": [ - { - "$ref": "#/components/schemas/Point3d" - } - ] - }, - "zAxis": { - "description": "The z-axis (normal).", - "allOf": [ - { - "$ref": "#/components/schemas/Point3d" - } - ] - }, - "solid": { - "description": "The solid the face is on.", - "allOf": [ - { - "$ref": "#/components/schemas/Solid" - } - ] - }, - "__meta": { - "type": "array", - "items": { - "$ref": "#/components/schemas/Metadata" - } - } - } - }, - { - "description": "An solid is a collection of extrude surfaces.", - "type": "object", - "required": [ - "__meta", - "height", - "id", - "sketch", - "type", - "value" - ], - "properties": { - "type": { - "type": "string", - "enum": [ - "Solid" - ] - }, - "id": { - "description": "The id of the solid.", - "type": "string", - "format": "uuid" - }, - "value": { - "description": "The extrude surfaces.", - "type": "array", - "items": { - "$ref": "#/components/schemas/ExtrudeSurface" - } - }, - "sketch": { - "description": "The sketch.", - "allOf": [ - { - "$ref": "#/components/schemas/Sketch" - } - ] - }, - "height": { - "description": "The height of the solid.", - "type": "number", - "format": "double" - }, - "startCapId": { - "description": "The id of the extrusion start cap", - "type": "string", - "format": "uuid", - "nullable": true - }, - "endCapId": { - "description": "The id of the extrusion end cap", - "type": "string", - "format": "uuid", - "nullable": true - }, - "edgeCuts": { - "description": "Chamfers or fillets on this solid.", - "type": "array", - "items": { - "$ref": "#/components/schemas/EdgeCut" - } - }, - "__meta": { - "description": "Metadata.", - "type": "array", - "items": { - "$ref": "#/components/schemas/Metadata" - } - } - } - }, - { - "type": "object", - "required": [ - "type", - "value" - ], - "properties": { - "type": { - "type": "string", - "enum": [ - "Solids" - ] - }, - "value": { - "type": "array", - "items": { - "$ref": "#/components/schemas/Solid" - } - } - } - }, - { - "description": "Data for an imported geometry.", - "type": "object", - "required": [ - "__meta", - "id", - "type", - "value" - ], - "properties": { - "type": { - "type": "string", - "enum": [ - "ImportedGeometry" - ] - }, - "id": { - "description": "The ID of the imported geometry.", - "type": "string", - "format": "uuid" - }, - "value": { - "description": "The original file paths.", - "type": "array", - "items": { - "type": "string" - } - }, - "__meta": { - "type": "array", - "items": { - "$ref": "#/components/schemas/Metadata" - } - } - } - }, - { - "type": "object", - "required": [ - "__meta", - "expression", - "memory", - "type" - ], - "properties": { - "type": { - "type": "string", - "enum": [ - "Function" - ] - }, - "expression": { - "$ref": "#/components/schemas/FunctionExpression" - }, - "memory": { - "$ref": "#/components/schemas/ProgramMemory" - }, - "__meta": { - "type": "array", - "items": { - "$ref": "#/components/schemas/Metadata" - } - } - } - } - ] - }, - "Metadata": { - "description": "Metadata.", - "type": "object", - "required": [ - "sourceRange" - ], - "properties": { - "sourceRange": { - "description": "The source range.", - "allOf": [ - { - "$ref": "#/components/schemas/SourceRange" - } - ] - } - } - }, - "SourceRange": { - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 - }, - "TagEngineInfo": { - "description": "Engine information for a tag.", - "type": "object", - "required": [ - "id", - "sketch" - ], - "properties": { - "id": { - "description": "The id of the tagged object.", - "type": "string", - "format": "uuid" - }, - "sketch": { - "description": "The sketch the tag is on.", - "type": "string", - "format": "uuid" - }, - "path": { - "description": "The path the tag is on.", - "allOf": [ - { - "$ref": "#/components/schemas/BasePath" - } - ], - "nullable": true - }, - "surface": { - "description": "The surface information for the tag.", - "allOf": [ - { - "$ref": "#/components/schemas/ExtrudeSurface" - } - ], - "nullable": true - } - } - }, - "BasePath": { - "description": "A base path.", - "type": "object", - "required": [ - "__geoMeta", - "from", - "to" - ], - "properties": { - "from": { - "description": "The from point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "to": { - "description": "The to point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "tag": { - "description": "The tag of the path.", - "allOf": [ - { - "$ref": "#/components/schemas/TagDeclarator" - } - ], - "nullable": true - }, - "__geoMeta": { - "description": "Metadata.", - "allOf": [ - { - "$ref": "#/components/schemas/GeoMeta" - } - ] - } - } - }, - "TagDeclarator": { - "type": "object", - "required": [ - "end", - "start", - "value" - ], - "properties": { - "start": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "end": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "value": { - "type": "string" - }, - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - } - } - }, - "GeoMeta": { - "description": "Geometry metadata.", - "type": "object", - "required": [ - "id", - "sourceRange" - ], - "properties": { - "id": { - "description": "The id of the geometry.", - "type": "string", - "format": "uuid" - }, - "sourceRange": { - "description": "The source range.", - "allOf": [ - { - "$ref": "#/components/schemas/SourceRange" - } - ] - } - } - }, - "ExtrudeSurface": { - "description": "An extrude surface.", - "oneOf": [ - { - "description": "An extrude plane.", - "type": "object", - "required": [ - "faceId", - "id", - "sourceRange", - "type" - ], - "properties": { - "type": { - "type": "string", - "enum": [ - "extrudePlane" - ] - }, - "faceId": { - "description": "The face id for the extrude plane.", - "type": "string", - "format": "uuid" - }, - "tag": { - "description": "The tag.", - "allOf": [ - { - "$ref": "#/components/schemas/TagDeclarator" - } - ], - "nullable": true - }, - "id": { - "description": "The id of the geometry.", - "type": "string", - "format": "uuid" - }, - "sourceRange": { - "description": "The source range.", - "allOf": [ - { - "$ref": "#/components/schemas/SourceRange" - } - ] - } - } - }, - { - "description": "An extruded arc.", - "type": "object", - "required": [ - "faceId", - "id", - "sourceRange", - "type" - ], - "properties": { - "type": { - "type": "string", - "enum": [ - "extrudeArc" - ] - }, - "faceId": { - "description": "The face id for the extrude plane.", - "type": "string", - "format": "uuid" - }, - "tag": { - "description": "The tag.", - "allOf": [ - { - "$ref": "#/components/schemas/TagDeclarator" - } - ], - "nullable": true - }, - "id": { - "description": "The id of the geometry.", - "type": "string", - "format": "uuid" - }, - "sourceRange": { - "description": "The source range.", - "allOf": [ - { - "$ref": "#/components/schemas/SourceRange" - } - ] - } - } - }, - { - "description": "Geometry metadata.", - "type": "object", - "required": [ - "faceId", - "id", - "sourceRange", - "type" - ], - "properties": { - "type": { - "type": "string", - "enum": [ - "chamfer" - ] - }, - "faceId": { - "description": "The id for the chamfer surface.", - "type": "string", - "format": "uuid" - }, - "tag": { - "description": "The tag.", - "allOf": [ - { - "$ref": "#/components/schemas/TagDeclarator" - } - ], - "nullable": true - }, - "id": { - "description": "The id of the geometry.", - "type": "string", - "format": "uuid" - }, - "sourceRange": { - "description": "The source range.", - "allOf": [ - { - "$ref": "#/components/schemas/SourceRange" - } - ] - } - } - }, - { - "description": "Geometry metadata.", - "type": "object", - "required": [ - "faceId", - "id", - "sourceRange", - "type" - ], - "properties": { - "type": { - "type": "string", - "enum": [ - "fillet" - ] - }, - "faceId": { - "description": "The id for the fillet surface.", - "type": "string", - "format": "uuid" - }, - "tag": { - "description": "The tag.", - "allOf": [ - { - "$ref": "#/components/schemas/TagDeclarator" - } - ], - "nullable": true - }, - "id": { - "description": "The id of the geometry.", - "type": "string", - "format": "uuid" - }, - "sourceRange": { - "description": "The source range.", - "allOf": [ - { - "$ref": "#/components/schemas/SourceRange" - } - ] - } - } - } - ] - }, - "PlaneType": { - "description": "Type for a plane.", - "oneOf": [ - { - "type": "string", - "enum": [ - "XY", - "XZ", - "YZ" - ] - }, - { - "description": "A custom plane.", - "type": "string", - "enum": [ - "Custom" - ] - } - ] - }, - "Point3d": { - "type": "object", - "required": [ - "x", - "y", - "z" - ], - "properties": { - "x": { - "type": "number", - "format": "double" - }, - "y": { - "type": "number", - "format": "double" - }, - "z": { - "type": "number", - "format": "double" - } - } - }, - "Solid": { - "description": "An solid is a collection of extrude surfaces.", - "type": "object", - "required": [ - "__meta", - "height", - "id", - "sketch", - "value" - ], - "properties": { - "id": { - "description": "The id of the solid.", - "type": "string", - "format": "uuid" - }, - "value": { - "description": "The extrude surfaces.", - "type": "array", - "items": { - "$ref": "#/components/schemas/ExtrudeSurface" - } - }, - "sketch": { - "description": "The sketch.", - "allOf": [ - { - "$ref": "#/components/schemas/Sketch" - } - ] - }, - "height": { - "description": "The height of the solid.", - "type": "number", - "format": "double" - }, - "startCapId": { - "description": "The id of the extrusion start cap", - "type": "string", - "format": "uuid", - "nullable": true - }, - "endCapId": { - "description": "The id of the extrusion end cap", - "type": "string", - "format": "uuid", - "nullable": true - }, - "edgeCuts": { - "description": "Chamfers or fillets on this solid.", - "type": "array", - "items": { - "$ref": "#/components/schemas/EdgeCut" - } - }, - "__meta": { - "description": "Metadata.", - "type": "array", - "items": { - "$ref": "#/components/schemas/Metadata" - } - } - } - }, - "Sketch": { - "description": "A sketch is a collection of paths.", - "type": "object", - "required": [ - "__meta", - "id", - "on", - "start", - "value" - ], - "properties": { - "id": { - "description": "The id of the sketch (this will change when the engine's reference to it changes.", - "type": "string", - "format": "uuid" - }, - "value": { - "description": "The paths in the sketch.", - "type": "array", - "items": { - "$ref": "#/components/schemas/Path" - } - }, - "on": { - "description": "What the sketch is on (can be a plane or a face).", - "allOf": [ - { - "$ref": "#/components/schemas/SketchSurface" - } - ] - }, - "start": { - "description": "The starting path.", - "allOf": [ - { - "$ref": "#/components/schemas/BasePath" - } - ] - }, - "tags": { - "description": "Tag identifiers that have been declared in this sketch.", - "type": "object", - "additionalProperties": { - "$ref": "#/components/schemas/TagIdentifier" - } - }, - "__meta": { - "description": "Metadata.", - "type": "array", - "items": { - "$ref": "#/components/schemas/Metadata" - } - } - } - }, - "Path": { - "description": "A path.", - "oneOf": [ - { - "description": "A path that goes to a point.", - "type": "object", - "required": [ - "__geoMeta", - "from", - "to", - "type" - ], - "properties": { - "type": { - "type": "string", - "enum": [ - "ToPoint" - ] - }, - "from": { - "description": "The from point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "to": { - "description": "The to point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "tag": { - "description": "The tag of the path.", - "allOf": [ - { - "$ref": "#/components/schemas/TagDeclarator" - } - ], - "nullable": true - }, - "__geoMeta": { - "description": "Metadata.", - "allOf": [ - { - "$ref": "#/components/schemas/GeoMeta" - } - ] - } - } - }, - { - "description": "A arc that is tangential to the last path segment that goes to a point", - "type": "object", - "required": [ - "__geoMeta", - "ccw", - "center", - "from", - "to", - "type" - ], - "properties": { - "type": { - "type": "string", - "enum": [ - "TangentialArcTo" - ] - }, - "center": { - "description": "the arc's center", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "ccw": { - "description": "arc's direction", - "type": "boolean" - }, - "from": { - "description": "The from point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "to": { - "description": "The to point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "tag": { - "description": "The tag of the path.", - "allOf": [ - { - "$ref": "#/components/schemas/TagDeclarator" - } - ], - "nullable": true - }, - "__geoMeta": { - "description": "Metadata.", - "allOf": [ - { - "$ref": "#/components/schemas/GeoMeta" - } - ] - } - } - }, - { - "description": "A arc that is tangential to the last path segment", - "type": "object", - "required": [ - "__geoMeta", - "ccw", - "center", - "from", - "to", - "type" - ], - "properties": { - "type": { - "type": "string", - "enum": [ - "TangentialArc" - ] - }, - "center": { - "description": "the arc's center", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "ccw": { - "description": "arc's direction", - "type": "boolean" - }, - "from": { - "description": "The from point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "to": { - "description": "The to point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "tag": { - "description": "The tag of the path.", - "allOf": [ - { - "$ref": "#/components/schemas/TagDeclarator" - } - ], - "nullable": true - }, - "__geoMeta": { - "description": "Metadata.", - "allOf": [ - { - "$ref": "#/components/schemas/GeoMeta" - } - ] - } - } - }, - { - "description": "a complete arc", - "type": "object", - "required": [ - "__geoMeta", - "ccw", - "center", - "from", - "radius", - "to", - "type" - ], - "properties": { - "type": { - "type": "string", - "enum": [ - "Circle" - ] - }, - "center": { - "description": "the arc's center", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "radius": { - "description": "the arc's radius", - "type": "number", - "format": "double" - }, - "ccw": { - "description": "arc's direction", - "type": "boolean" - }, - "from": { - "description": "The from point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "to": { - "description": "The to point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "tag": { - "description": "The tag of the path.", - "allOf": [ - { - "$ref": "#/components/schemas/TagDeclarator" - } - ], - "nullable": true - }, - "__geoMeta": { - "description": "Metadata.", - "allOf": [ - { - "$ref": "#/components/schemas/GeoMeta" - } - ] - } - } - }, - { - "description": "A path that is horizontal.", - "type": "object", - "required": [ - "__geoMeta", - "from", - "to", - "type", - "x" - ], - "properties": { - "type": { - "type": "string", - "enum": [ - "Horizontal" - ] - }, - "x": { - "description": "The x coordinate.", - "type": "number", - "format": "double" - }, - "from": { - "description": "The from point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "to": { - "description": "The to point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "tag": { - "description": "The tag of the path.", - "allOf": [ - { - "$ref": "#/components/schemas/TagDeclarator" - } - ], - "nullable": true - }, - "__geoMeta": { - "description": "Metadata.", - "allOf": [ - { - "$ref": "#/components/schemas/GeoMeta" - } - ] - } - } - }, - { - "description": "An angled line to.", - "type": "object", - "required": [ - "__geoMeta", - "from", - "to", - "type" - ], - "properties": { - "type": { - "type": "string", - "enum": [ - "AngledLineTo" - ] - }, - "x": { - "description": "The x coordinate.", - "type": "number", - "format": "double", - "nullable": true - }, - "y": { - "description": "The y coordinate.", - "type": "number", - "format": "double", - "nullable": true - }, - "from": { - "description": "The from point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "to": { - "description": "The to point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "tag": { - "description": "The tag of the path.", - "allOf": [ - { - "$ref": "#/components/schemas/TagDeclarator" - } - ], - "nullable": true - }, - "__geoMeta": { - "description": "Metadata.", - "allOf": [ - { - "$ref": "#/components/schemas/GeoMeta" - } - ] - } - } - }, - { - "description": "A base path.", - "type": "object", - "required": [ - "__geoMeta", - "from", - "to", - "type" - ], - "properties": { - "type": { - "type": "string", - "enum": [ - "Base" - ] - }, - "from": { - "description": "The from point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "to": { - "description": "The to point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "tag": { - "description": "The tag of the path.", - "allOf": [ - { - "$ref": "#/components/schemas/TagDeclarator" - } - ], - "nullable": true - }, - "__geoMeta": { - "description": "Metadata.", - "allOf": [ - { - "$ref": "#/components/schemas/GeoMeta" - } - ] - } - } - } - ] - }, - "SketchSurface": { - "description": "A sketch type.", - "oneOf": [ - { - "description": "A plane.", - "type": "object", - "required": [ - "__meta", - "id", - "origin", - "type", - "value", - "xAxis", - "yAxis", - "zAxis" - ], - "properties": { - "type": { - "type": "string", - "enum": [ - "plane" - ] - }, - "id": { - "description": "The id of the plane.", - "type": "string", - "format": "uuid" - }, - "value": { - "$ref": "#/components/schemas/PlaneType" - }, - "origin": { - "description": "Origin of the plane.", - "allOf": [ - { - "$ref": "#/components/schemas/Point3d" - } - ] - }, - "xAxis": { - "description": "What should the plane’s X axis be?", - "allOf": [ - { - "$ref": "#/components/schemas/Point3d" - } - ] - }, - "yAxis": { - "description": "What should the plane’s Y axis be?", - "allOf": [ - { - "$ref": "#/components/schemas/Point3d" - } - ] - }, - "zAxis": { - "description": "The z-axis (normal).", - "allOf": [ - { - "$ref": "#/components/schemas/Point3d" - } - ] - }, - "__meta": { - "type": "array", - "items": { - "$ref": "#/components/schemas/Metadata" - } - } - } - }, - { - "description": "A face.", - "type": "object", - "required": [ - "__meta", - "id", - "solid", - "type", - "value", - "xAxis", - "yAxis", - "zAxis" - ], - "properties": { - "type": { - "type": "string", - "enum": [ - "face" - ] - }, - "id": { - "description": "The id of the face.", - "type": "string", - "format": "uuid" - }, - "value": { - "description": "The tag of the face.", - "type": "string" - }, - "xAxis": { - "description": "What should the face’s X axis be?", - "allOf": [ - { - "$ref": "#/components/schemas/Point3d" - } - ] - }, - "yAxis": { - "description": "What should the face’s Y axis be?", - "allOf": [ - { - "$ref": "#/components/schemas/Point3d" - } - ] - }, - "zAxis": { - "description": "The z-axis (normal).", - "allOf": [ - { - "$ref": "#/components/schemas/Point3d" - } - ] - }, - "solid": { - "description": "The solid the face is on.", - "allOf": [ - { - "$ref": "#/components/schemas/Solid" - } - ] - }, - "__meta": { - "type": "array", - "items": { - "$ref": "#/components/schemas/Metadata" - } - } - } - } - ] - }, - "TagIdentifier": { - "type": "object", - "required": [ - "__meta", - "value" - ], - "properties": { - "value": { - "type": "string" - }, - "info": { - "allOf": [ - { - "$ref": "#/components/schemas/TagEngineInfo" - } - ], - "nullable": true - }, - "__meta": { - "type": "array", - "items": { - "$ref": "#/components/schemas/Metadata" - } - } - } - }, - "EdgeCut": { - "description": "A fillet or a chamfer.", - "oneOf": [ - { - "description": "A fillet.", - "type": "object", - "required": [ - "edgeId", - "id", - "radius", - "type" - ], - "properties": { - "type": { - "type": "string", - "enum": [ - "fillet" - ] - }, - "id": { - "description": "The id of the engine command that called this fillet.", - "type": "string", - "format": "uuid" - }, - "radius": { - "type": "number", - "format": "double" - }, - "edgeId": { - "description": "The engine id of the edge to fillet.", - "type": "string", - "format": "uuid" - }, - "tag": { - "allOf": [ - { - "$ref": "#/components/schemas/TagDeclarator" - } - ], - "nullable": true - } - } - }, - { - "description": "A chamfer.", - "type": "object", - "required": [ - "edgeId", - "id", - "length", - "type" - ], - "properties": { - "type": { - "type": "string", - "enum": [ - "chamfer" - ] - }, - "id": { - "description": "The id of the engine command that called this chamfer.", - "type": "string", - "format": "uuid" - }, - "length": { - "type": "number", - "format": "double" - }, - "edgeId": { - "description": "The engine id of the edge to chamfer.", - "type": "string", - "format": "uuid" - }, - "tag": { - "allOf": [ - { - "$ref": "#/components/schemas/TagDeclarator" - } - ], - "nullable": true - } - } - } - ] - }, - "FunctionExpression": { - "type": "object", - "required": [ - "body", - "end", - "params", - "start" - ], - "properties": { - "start": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "end": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "params": { - "type": "array", - "items": { - "$ref": "#/components/schemas/Parameter" - } - }, - "body": { - "$ref": "#/components/schemas/Program" - }, - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - } - } - }, - "Parameter": { - "description": "Parameter of a KCL function.", - "type": "object", - "required": [ - "identifier", - "optional" - ], - "properties": { - "identifier": { - "description": "The parameter's label or name.", - "allOf": [ - { - "$ref": "#/components/schemas/Identifier" - } - ] - }, - "optional": { - "description": "Is the parameter optional?", - "type": "boolean" - }, - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - } - } - }, - "Identifier": { - "type": "object", - "required": [ - "end", - "name", - "start" - ], - "properties": { - "start": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "end": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "name": { - "type": "string" - }, - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - } - } - }, - "Program": { - "description": "A KCL program top level, or function body.", - "type": "object", - "required": [ - "body", - "end", - "nonCodeMeta", - "start" - ], - "properties": { - "start": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "end": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "body": { - "type": "array", - "items": { - "$ref": "#/components/schemas/BodyItem" - } - }, - "nonCodeMeta": { - "$ref": "#/components/schemas/NonCodeMeta" - }, - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - } - } - }, - "BodyItem": { - "oneOf": [ - { - "type": "object", - "required": [ - "end", - "expression", - "start", - "type" - ], - "properties": { - "type": { - "type": "string", - "enum": [ - "ExpressionStatement" - ] - }, - "start": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "end": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "expression": { - "$ref": "#/components/schemas/Expr" - }, - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - } - } - }, - { - "type": "object", - "required": [ - "declarations", - "end", - "kind", - "start", - "type" - ], - "properties": { - "type": { - "type": "string", - "enum": [ - "VariableDeclaration" - ] - }, - "start": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "end": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "declarations": { - "type": "array", - "items": { - "$ref": "#/components/schemas/VariableDeclarator" - } - }, - "kind": { - "$ref": "#/components/schemas/VariableKind" - }, - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - } - } - }, - { - "type": "object", - "required": [ - "argument", - "end", - "start", - "type" - ], - "properties": { - "type": { - "type": "string", - "enum": [ - "ReturnStatement" - ] - }, - "start": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "end": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "argument": { - "$ref": "#/components/schemas/Expr" - }, - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - } - } - } - ] - }, - "Expr": { - "description": "An expression can be evaluated to yield a single KCL value.", - "oneOf": [ - { - "type": "object", - "required": [ - "end", - "raw", - "start", - "type", - "value" - ], - "properties": { - "type": { - "type": "string", - "enum": [ - "Literal" - ] - }, - "start": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "end": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "value": { - "$ref": "#/components/schemas/LiteralValue" - }, - "raw": { - "type": "string" - }, - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - } - } - }, - { - "type": "object", - "required": [ - "end", - "name", - "start", - "type" - ], - "properties": { - "type": { - "type": "string", - "enum": [ - "Identifier" - ] - }, - "start": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "end": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "name": { - "type": "string" - }, - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - } - } - }, - { - "type": "object", - "required": [ - "end", - "start", - "type", - "value" - ], - "properties": { - "type": { - "type": "string", - "enum": [ - "TagDeclarator" - ] - }, - "start": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "end": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "value": { - "type": "string" - }, - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - } - } - }, - { - "type": "object", - "required": [ - "end", - "left", - "operator", - "right", - "start", - "type" - ], - "properties": { - "type": { - "type": "string", - "enum": [ - "BinaryExpression" - ] - }, - "start": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "end": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "operator": { - "$ref": "#/components/schemas/BinaryOperator" - }, - "left": { - "$ref": "#/components/schemas/BinaryPart" - }, - "right": { - "$ref": "#/components/schemas/BinaryPart" - }, - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - } - } - }, - { - "type": "object", - "required": [ - "body", - "end", - "params", - "start", - "type" - ], - "properties": { - "type": { - "type": "string", - "enum": [ - "FunctionExpression" - ] - }, - "start": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "end": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "params": { - "type": "array", - "items": { - "$ref": "#/components/schemas/Parameter" - } - }, - "body": { - "$ref": "#/components/schemas/Program" - }, - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - } - } - }, - { - "type": "object", - "required": [ - "arguments", - "callee", - "end", - "optional", - "start", - "type" - ], - "properties": { - "type": { - "type": "string", - "enum": [ - "CallExpression" - ] - }, - "start": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "end": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "callee": { - "$ref": "#/components/schemas/Identifier" - }, - "arguments": { - "type": "array", - "items": { - "$ref": "#/components/schemas/Expr" - } - }, - "optional": { - "type": "boolean" - }, - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - } - } - }, - { - "type": "object", - "required": [ - "body", - "end", - "nonCodeMeta", - "start", - "type" - ], - "properties": { - "type": { - "type": "string", - "enum": [ - "PipeExpression" - ] - }, - "start": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "end": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "body": { - "type": "array", - "items": { - "$ref": "#/components/schemas/Expr" - } - }, - "nonCodeMeta": { - "$ref": "#/components/schemas/NonCodeMeta" - }, - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - } - } - }, - { - "type": "object", - "required": [ - "end", - "start", - "type" - ], - "properties": { - "type": { - "type": "string", - "enum": [ - "PipeSubstitution" - ] - }, - "start": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "end": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - } - } - }, - { - "type": "object", - "required": [ - "elements", - "end", - "start", - "type" - ], - "properties": { - "type": { - "type": "string", - "enum": [ - "ArrayExpression" - ] - }, - "start": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "end": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "elements": { - "type": "array", - "items": { - "$ref": "#/components/schemas/Expr" - } - }, - "nonCodeMeta": { - "$ref": "#/components/schemas/NonCodeMeta" - }, - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - } - } - }, - { - "type": "object", - "required": [ - "end", - "properties", - "start", - "type" - ], - "properties": { - "type": { - "type": "string", - "enum": [ - "ObjectExpression" - ] - }, - "start": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "end": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "properties": { - "type": "array", - "items": { - "$ref": "#/components/schemas/ObjectProperty" - } - }, - "nonCodeMeta": { - "$ref": "#/components/schemas/NonCodeMeta" - }, - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - } - } - }, - { - "type": "object", - "required": [ - "computed", - "end", - "object", - "property", - "start", - "type" - ], - "properties": { - "type": { - "type": "string", - "enum": [ - "MemberExpression" - ] - }, - "start": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "end": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "object": { - "$ref": "#/components/schemas/MemberObject" - }, - "property": { - "$ref": "#/components/schemas/LiteralIdentifier" - }, - "computed": { - "type": "boolean" - }, - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - } - } - }, - { - "type": "object", - "required": [ - "argument", - "end", - "operator", - "start", - "type" - ], - "properties": { - "type": { - "type": "string", - "enum": [ - "UnaryExpression" - ] - }, - "start": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "end": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "operator": { - "$ref": "#/components/schemas/UnaryOperator" - }, - "argument": { - "$ref": "#/components/schemas/BinaryPart" - }, - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - } - } - }, - { - "type": "object", - "required": [ - "cond", - "else_ifs", - "end", - "final_else", - "start", - "then_val", - "type" - ], - "properties": { - "type": { - "type": "string", - "enum": [ - "IfExpression" - ] - }, - "start": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "end": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "cond": { - "$ref": "#/components/schemas/Expr" - }, - "then_val": { - "$ref": "#/components/schemas/Program" - }, - "else_ifs": { - "type": "array", - "items": { - "$ref": "#/components/schemas/ElseIf" - } - }, - "final_else": { - "$ref": "#/components/schemas/Program" - }, - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - } - } - }, - { - "description": "KCL value for an optional parameter which was not given an argument. (remember, parameters are in the function declaration, arguments are in the function call/application).", - "type": "object", - "required": [ - "end", - "start", - "type" - ], - "properties": { - "type": { - "type": "string", - "enum": [ - "None" - ] - }, - "start": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "end": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - } - } - } - ] - }, - "LiteralValue": { - "anyOf": [ - { - "type": "integer", - "format": "int64" - }, - { - "type": "number", - "format": "double" - }, - { - "type": "string" - }, - { - "type": "boolean" - } - ] - }, - "BinaryOperator": { - "oneOf": [ - { - "description": "Add two numbers.", - "type": "string", - "enum": [ - "+" - ] - }, - { - "description": "Subtract two numbers.", - "type": "string", - "enum": [ - "-" - ] - }, - { - "description": "Multiply two numbers.", - "type": "string", - "enum": [ - "*" - ] - }, - { - "description": "Divide two numbers.", - "type": "string", - "enum": [ - "/" - ] - }, - { - "description": "Modulo two numbers.", - "type": "string", - "enum": [ - "%" - ] - }, - { - "description": "Raise a number to a power.", - "type": "string", - "enum": [ - "^" - ] - } - ] - }, - "BinaryPart": { - "oneOf": [ - { - "type": "object", - "required": [ - "end", - "raw", - "start", - "type", - "value" - ], - "properties": { - "type": { - "type": "string", - "enum": [ - "Literal" - ] - }, - "start": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "end": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "value": { - "$ref": "#/components/schemas/LiteralValue" - }, - "raw": { - "type": "string" - }, - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - } - } - }, - { - "type": "object", - "required": [ - "end", - "name", - "start", - "type" - ], - "properties": { - "type": { - "type": "string", - "enum": [ - "Identifier" - ] - }, - "start": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "end": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "name": { - "type": "string" - }, - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - } - } - }, - { - "type": "object", - "required": [ - "end", - "left", - "operator", - "right", - "start", - "type" - ], - "properties": { - "type": { - "type": "string", - "enum": [ - "BinaryExpression" - ] - }, - "start": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "end": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "operator": { - "$ref": "#/components/schemas/BinaryOperator" - }, - "left": { - "$ref": "#/components/schemas/BinaryPart" - }, - "right": { - "$ref": "#/components/schemas/BinaryPart" - }, - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - } - } - }, - { - "type": "object", - "required": [ - "arguments", - "callee", - "end", - "optional", - "start", - "type" - ], - "properties": { - "type": { - "type": "string", - "enum": [ - "CallExpression" - ] - }, - "start": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "end": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "callee": { - "$ref": "#/components/schemas/Identifier" - }, - "arguments": { - "type": "array", - "items": { - "$ref": "#/components/schemas/Expr" - } - }, - "optional": { - "type": "boolean" - }, - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - } - } - }, - { - "type": "object", - "required": [ - "argument", - "end", - "operator", - "start", - "type" - ], - "properties": { - "type": { - "type": "string", - "enum": [ - "UnaryExpression" - ] - }, - "start": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "end": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "operator": { - "$ref": "#/components/schemas/UnaryOperator" - }, - "argument": { - "$ref": "#/components/schemas/BinaryPart" - }, - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - } - } - }, - { - "type": "object", - "required": [ - "computed", - "end", - "object", - "property", - "start", - "type" - ], - "properties": { - "type": { - "type": "string", - "enum": [ - "MemberExpression" - ] - }, - "start": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "end": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "object": { - "$ref": "#/components/schemas/MemberObject" - }, - "property": { - "$ref": "#/components/schemas/LiteralIdentifier" - }, - "computed": { - "type": "boolean" - }, - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - } - } - }, - { - "type": "object", - "required": [ - "cond", - "else_ifs", - "end", - "final_else", - "start", - "then_val", - "type" - ], - "properties": { - "type": { - "type": "string", - "enum": [ - "IfExpression" - ] - }, - "start": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "end": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "cond": { - "$ref": "#/components/schemas/Expr" - }, - "then_val": { - "$ref": "#/components/schemas/Program" - }, - "else_ifs": { - "type": "array", - "items": { - "$ref": "#/components/schemas/ElseIf" - } - }, - "final_else": { - "$ref": "#/components/schemas/Program" - }, - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - } - } - } - ] - }, - "UnaryOperator": { - "oneOf": [ - { - "description": "Negate a number.", - "type": "string", - "enum": [ - "-" - ] - }, - { - "description": "Negate a boolean.", - "type": "string", - "enum": [ - "!" - ] - } - ] - }, - "MemberObject": { - "oneOf": [ - { - "type": "object", - "required": [ - "computed", - "end", - "object", - "property", - "start", - "type" - ], - "properties": { - "type": { - "type": "string", - "enum": [ - "MemberExpression" - ] - }, - "start": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "end": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "object": { - "$ref": "#/components/schemas/MemberObject" - }, - "property": { - "$ref": "#/components/schemas/LiteralIdentifier" - }, - "computed": { - "type": "boolean" - }, - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - } - } - }, - { - "type": "object", - "required": [ - "end", - "name", - "start", - "type" - ], - "properties": { - "type": { - "type": "string", - "enum": [ - "Identifier" - ] - }, - "start": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "end": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "name": { - "type": "string" - }, - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - } - } - } - ] - }, - "LiteralIdentifier": { - "oneOf": [ - { - "type": "object", - "required": [ - "end", - "name", - "start", - "type" - ], - "properties": { - "type": { - "type": "string", - "enum": [ - "Identifier" - ] - }, - "start": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "end": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "name": { - "type": "string" - }, - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - } - } - }, - { - "type": "object", - "required": [ - "end", - "raw", - "start", - "type", - "value" - ], - "properties": { - "type": { - "type": "string", - "enum": [ - "Literal" - ] - }, - "start": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "end": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "value": { - "$ref": "#/components/schemas/LiteralValue" - }, - "raw": { - "type": "string" - }, - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - } - } - } - ] - }, - "ElseIf": { - "type": "object", - "required": [ - "cond", - "end", - "start", - "then_val" - ], - "properties": { - "start": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "end": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "cond": { - "$ref": "#/components/schemas/Expr" - }, - "then_val": { - "$ref": "#/components/schemas/Program" - }, - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - } - } - }, - "NonCodeMeta": { - "type": "object", - "required": [ - "nonCodeNodes", - "start" - ], - "properties": { - "nonCodeNodes": { - "type": "object", - "additionalProperties": { - "type": "array", - "items": { - "$ref": "#/components/schemas/NonCodeNode" - } - } - }, - "start": { - "type": "array", - "items": { - "$ref": "#/components/schemas/NonCodeNode" - } - }, - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - } - } - }, - "NonCodeNode": { - "type": "object", - "required": [ - "end", - "start", - "value" - ], - "properties": { - "start": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "end": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "value": { - "$ref": "#/components/schemas/NonCodeValue" - }, - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - } - } - }, - "NonCodeValue": { - "oneOf": [ - { - "description": "A shebang. This is a special type of comment that is at the top of the file. It looks like this: ```python,no_run #!/usr/bin/env python ```", - "type": "object", - "required": [ - "type", - "value" - ], - "properties": { - "type": { - "type": "string", - "enum": [ - "shebang" - ] - }, - "value": { - "type": "string" - } - } - }, - { - "description": "An inline comment. Here are examples: `1 + 1 // This is an inline comment`. `1 + 1 /* Here's another */`.", - "type": "object", - "required": [ - "style", - "type", - "value" - ], - "properties": { - "type": { - "type": "string", - "enum": [ - "inlineComment" - ] - }, - "value": { - "type": "string" - }, - "style": { - "$ref": "#/components/schemas/CommentStyle" - } - } - }, - { - "description": "A block comment. An example of this is the following: ```python,no_run /* This is a block comment */ 1 + 1 ``` Now this is important. The block comment is attached to the next line. This is always the case. Also the block comment doesn't have a new line above it. If it did it would be a `NewLineBlockComment`.", - "type": "object", - "required": [ - "style", - "type", - "value" - ], - "properties": { - "type": { - "type": "string", - "enum": [ - "blockComment" - ] - }, - "value": { - "type": "string" - }, - "style": { - "$ref": "#/components/schemas/CommentStyle" - } - } - }, - { - "description": "A block comment that has a new line above it. The user explicitly added a new line above the block comment.", - "type": "object", - "required": [ - "style", - "type", - "value" - ], - "properties": { - "type": { - "type": "string", - "enum": [ - "newLineBlockComment" - ] - }, - "value": { - "type": "string" - }, - "style": { - "$ref": "#/components/schemas/CommentStyle" - } - } - }, - { - "type": "object", - "required": [ - "type" - ], - "properties": { - "type": { - "type": "string", - "enum": [ - "newLine" - ] - } - } - } - ] - }, - "CommentStyle": { - "oneOf": [ - { - "description": "Like // foo", - "type": "string", - "enum": [ - "line" - ] - }, - { - "description": "Like /* foo */", - "type": "string", - "enum": [ - "block" - ] - } - ] - }, - "ObjectProperty": { - "type": "object", - "required": [ - "end", - "key", - "start", - "value" - ], - "properties": { - "start": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "end": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "key": { - "$ref": "#/components/schemas/Identifier" - }, - "value": { - "$ref": "#/components/schemas/Expr" - }, - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - } - } - }, - "VariableDeclarator": { - "type": "object", - "required": [ - "end", - "id", - "init", - "start" - ], - "properties": { - "start": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "end": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "id": { - "description": "The identifier of the variable.", - "allOf": [ - { - "$ref": "#/components/schemas/Identifier" - } - ] - }, - "init": { - "description": "The value of the variable.", - "allOf": [ - { - "$ref": "#/components/schemas/Expr" - } - ] - }, - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - } - } - }, - "VariableKind": { - "oneOf": [ - { - "description": "Declare a variable.", - "type": "string", - "enum": [ - "let" - ] - }, - { - "description": "Declare a variable that is read-only.", - "type": "string", - "enum": [ - "const" - ] - }, - { - "description": "Declare a function.", - "type": "string", - "enum": [ - "fn" - ] - }, - { - "description": "Declare a variable.", - "type": "string", - "enum": [ - "var" - ] - } - ] - }, - "ProgramMemory": { - "type": "object", - "required": [ - "currentEnv", - "environments" - ], - "properties": { - "environments": { - "type": "array", - "items": { - "$ref": "#/components/schemas/Environment" - } - }, - "currentEnv": { - "$ref": "#/components/schemas/EnvironmentRef" - }, - "return": { - "allOf": [ - { - "$ref": "#/components/schemas/KclValue" - } - ], - "nullable": true - } - } - }, - "Environment": { - "type": "object", - "required": [ - "bindings" - ], - "properties": { - "bindings": { - "type": "object", - "additionalProperties": { - "$ref": "#/components/schemas/KclValue" - } - }, - "parent": { - "allOf": [ - { - "$ref": "#/components/schemas/EnvironmentRef" - } - ], - "nullable": true - } - } - }, - "EnvironmentRef": { - "description": "An index pointing to an environment.", - "type": "integer", - "format": "uint", - "minimum": 0.0 - } - } - }, - "required": true - }, - { - "name": "map_fn", - "type": "FunctionParam", - "schema": { - "$schema": "https://spec.openapis.org/oas/3.0/schema/2019-04-02#/definitions/Schema", - "title": "FunctionParam", - "type": "null", - "definitions": { - "KclValue": { - "description": "A memory item.", - "oneOf": [ - { - "type": "object", - "required": [ - "__meta", - "type", - "value" - ], - "properties": { - "type": { - "type": "string", - "enum": [ - "UserVal" - ] - }, - "value": {}, - "__meta": { - "type": "array", - "items": { - "$ref": "#/components/schemas/Metadata" - } - } - } - }, - { - "type": "object", - "required": [ - "__meta", - "type", - "value" - ], - "properties": { - "type": { - "type": "string", - "enum": [ - "TagIdentifier" - ] - }, - "value": { - "type": "string" - }, - "info": { - "allOf": [ - { - "$ref": "#/components/schemas/TagEngineInfo" - } - ], - "nullable": true - }, - "__meta": { - "type": "array", - "items": { - "$ref": "#/components/schemas/Metadata" - } - } - } - }, - { - "type": "object", - "required": [ - "end", - "start", - "type", - "value" - ], - "properties": { - "type": { - "type": "string", - "enum": [ - "TagDeclarator" - ] - }, - "start": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "end": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "value": { - "type": "string" - }, - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - } - } - }, - { - "description": "A plane.", - "type": "object", - "required": [ - "__meta", - "id", - "origin", - "type", - "value", - "xAxis", - "yAxis", - "zAxis" - ], - "properties": { - "type": { - "type": "string", - "enum": [ - "Plane" - ] - }, - "id": { - "description": "The id of the plane.", - "type": "string", - "format": "uuid" - }, - "value": { - "$ref": "#/components/schemas/PlaneType" - }, - "origin": { - "description": "Origin of the plane.", - "allOf": [ - { - "$ref": "#/components/schemas/Point3d" - } - ] - }, - "xAxis": { - "description": "What should the plane’s X axis be?", - "allOf": [ - { - "$ref": "#/components/schemas/Point3d" - } - ] - }, - "yAxis": { - "description": "What should the plane’s Y axis be?", - "allOf": [ - { - "$ref": "#/components/schemas/Point3d" - } - ] - }, - "zAxis": { - "description": "The z-axis (normal).", - "allOf": [ - { - "$ref": "#/components/schemas/Point3d" - } - ] - }, - "__meta": { - "type": "array", - "items": { - "$ref": "#/components/schemas/Metadata" - } - } - } - }, - { - "description": "A face.", - "type": "object", - "required": [ - "__meta", - "id", - "solid", - "type", - "value", - "xAxis", - "yAxis", - "zAxis" - ], - "properties": { - "type": { - "type": "string", - "enum": [ - "Face" - ] - }, - "id": { - "description": "The id of the face.", - "type": "string", - "format": "uuid" - }, - "value": { - "description": "The tag of the face.", - "type": "string" - }, - "xAxis": { - "description": "What should the face’s X axis be?", - "allOf": [ - { - "$ref": "#/components/schemas/Point3d" - } - ] - }, - "yAxis": { - "description": "What should the face’s Y axis be?", - "allOf": [ - { - "$ref": "#/components/schemas/Point3d" - } - ] - }, - "zAxis": { - "description": "The z-axis (normal).", - "allOf": [ - { - "$ref": "#/components/schemas/Point3d" - } - ] - }, - "solid": { - "description": "The solid the face is on.", - "allOf": [ - { - "$ref": "#/components/schemas/Solid" - } - ] - }, - "__meta": { - "type": "array", - "items": { - "$ref": "#/components/schemas/Metadata" - } - } - } - }, - { - "description": "An solid is a collection of extrude surfaces.", - "type": "object", - "required": [ - "__meta", - "height", - "id", - "sketch", - "type", - "value" - ], - "properties": { - "type": { - "type": "string", - "enum": [ - "Solid" - ] - }, - "id": { - "description": "The id of the solid.", - "type": "string", - "format": "uuid" - }, - "value": { - "description": "The extrude surfaces.", - "type": "array", - "items": { - "$ref": "#/components/schemas/ExtrudeSurface" - } - }, - "sketch": { - "description": "The sketch.", - "allOf": [ - { - "$ref": "#/components/schemas/Sketch" - } - ] - }, - "height": { - "description": "The height of the solid.", - "type": "number", - "format": "double" - }, - "startCapId": { - "description": "The id of the extrusion start cap", - "type": "string", - "format": "uuid", - "nullable": true - }, - "endCapId": { - "description": "The id of the extrusion end cap", - "type": "string", - "format": "uuid", - "nullable": true - }, - "edgeCuts": { - "description": "Chamfers or fillets on this solid.", - "type": "array", - "items": { - "$ref": "#/components/schemas/EdgeCut" - } - }, - "__meta": { - "description": "Metadata.", - "type": "array", - "items": { - "$ref": "#/components/schemas/Metadata" - } - } - } - }, - { - "type": "object", - "required": [ - "type", - "value" - ], - "properties": { - "type": { - "type": "string", - "enum": [ - "Solids" - ] - }, - "value": { - "type": "array", - "items": { - "$ref": "#/components/schemas/Solid" - } - } - } - }, - { - "description": "Data for an imported geometry.", - "type": "object", - "required": [ - "__meta", - "id", - "type", - "value" - ], - "properties": { - "type": { - "type": "string", - "enum": [ - "ImportedGeometry" - ] - }, - "id": { - "description": "The ID of the imported geometry.", - "type": "string", - "format": "uuid" - }, - "value": { - "description": "The original file paths.", - "type": "array", - "items": { - "type": "string" - } - }, - "__meta": { - "type": "array", - "items": { - "$ref": "#/components/schemas/Metadata" - } - } - } - }, - { - "type": "object", - "required": [ - "__meta", - "expression", - "memory", - "type" - ], - "properties": { - "type": { - "type": "string", - "enum": [ - "Function" - ] - }, - "expression": { - "$ref": "#/components/schemas/FunctionExpression" - }, - "memory": { - "$ref": "#/components/schemas/ProgramMemory" - }, - "__meta": { - "type": "array", - "items": { - "$ref": "#/components/schemas/Metadata" - } - } - } - } - ] - }, - "Metadata": { - "description": "Metadata.", - "type": "object", - "required": [ - "sourceRange" - ], - "properties": { - "sourceRange": { - "description": "The source range.", - "allOf": [ - { - "$ref": "#/components/schemas/SourceRange" - } - ] - } - } - }, - "SourceRange": { - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 - }, - "TagEngineInfo": { - "description": "Engine information for a tag.", - "type": "object", - "required": [ - "id", - "sketch" - ], - "properties": { - "id": { - "description": "The id of the tagged object.", - "type": "string", - "format": "uuid" - }, - "sketch": { - "description": "The sketch the tag is on.", - "type": "string", - "format": "uuid" - }, - "path": { - "description": "The path the tag is on.", - "allOf": [ - { - "$ref": "#/components/schemas/BasePath" - } - ], - "nullable": true - }, - "surface": { - "description": "The surface information for the tag.", - "allOf": [ - { - "$ref": "#/components/schemas/ExtrudeSurface" - } - ], - "nullable": true - } - } - }, - "BasePath": { - "description": "A base path.", - "type": "object", - "required": [ - "__geoMeta", - "from", - "to" - ], - "properties": { - "from": { - "description": "The from point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "to": { - "description": "The to point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "tag": { - "description": "The tag of the path.", - "allOf": [ - { - "$ref": "#/components/schemas/TagDeclarator" - } - ], - "nullable": true - }, - "__geoMeta": { - "description": "Metadata.", - "allOf": [ - { - "$ref": "#/components/schemas/GeoMeta" - } - ] - } - } - }, - "TagDeclarator": { - "type": "object", - "required": [ - "end", - "start", - "value" - ], - "properties": { - "start": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "end": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "value": { - "type": "string" - }, - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - } - } - }, - "GeoMeta": { - "description": "Geometry metadata.", - "type": "object", - "required": [ - "id", - "sourceRange" - ], - "properties": { - "id": { - "description": "The id of the geometry.", - "type": "string", - "format": "uuid" - }, - "sourceRange": { - "description": "The source range.", - "allOf": [ - { - "$ref": "#/components/schemas/SourceRange" - } - ] - } - } - }, - "ExtrudeSurface": { - "description": "An extrude surface.", - "oneOf": [ - { - "description": "An extrude plane.", - "type": "object", - "required": [ - "faceId", - "id", - "sourceRange", - "type" - ], - "properties": { - "type": { - "type": "string", - "enum": [ - "extrudePlane" - ] - }, - "faceId": { - "description": "The face id for the extrude plane.", - "type": "string", - "format": "uuid" - }, - "tag": { - "description": "The tag.", - "allOf": [ - { - "$ref": "#/components/schemas/TagDeclarator" - } - ], - "nullable": true - }, - "id": { - "description": "The id of the geometry.", - "type": "string", - "format": "uuid" - }, - "sourceRange": { - "description": "The source range.", - "allOf": [ - { - "$ref": "#/components/schemas/SourceRange" - } - ] - } - } - }, - { - "description": "An extruded arc.", - "type": "object", - "required": [ - "faceId", - "id", - "sourceRange", - "type" - ], - "properties": { - "type": { - "type": "string", - "enum": [ - "extrudeArc" - ] - }, - "faceId": { - "description": "The face id for the extrude plane.", - "type": "string", - "format": "uuid" - }, - "tag": { - "description": "The tag.", - "allOf": [ - { - "$ref": "#/components/schemas/TagDeclarator" - } - ], - "nullable": true - }, - "id": { - "description": "The id of the geometry.", - "type": "string", - "format": "uuid" - }, - "sourceRange": { - "description": "The source range.", - "allOf": [ - { - "$ref": "#/components/schemas/SourceRange" - } - ] - } - } - }, - { - "description": "Geometry metadata.", - "type": "object", - "required": [ - "faceId", - "id", - "sourceRange", - "type" - ], - "properties": { - "type": { - "type": "string", - "enum": [ - "chamfer" - ] - }, - "faceId": { - "description": "The id for the chamfer surface.", - "type": "string", - "format": "uuid" - }, - "tag": { - "description": "The tag.", - "allOf": [ - { - "$ref": "#/components/schemas/TagDeclarator" - } - ], - "nullable": true - }, - "id": { - "description": "The id of the geometry.", - "type": "string", - "format": "uuid" - }, - "sourceRange": { - "description": "The source range.", - "allOf": [ - { - "$ref": "#/components/schemas/SourceRange" - } - ] - } - } - }, - { - "description": "Geometry metadata.", - "type": "object", - "required": [ - "faceId", - "id", - "sourceRange", - "type" - ], - "properties": { - "type": { - "type": "string", - "enum": [ - "fillet" - ] - }, - "faceId": { - "description": "The id for the fillet surface.", - "type": "string", - "format": "uuid" - }, - "tag": { - "description": "The tag.", - "allOf": [ - { - "$ref": "#/components/schemas/TagDeclarator" - } - ], - "nullable": true - }, - "id": { - "description": "The id of the geometry.", - "type": "string", - "format": "uuid" - }, - "sourceRange": { - "description": "The source range.", - "allOf": [ - { - "$ref": "#/components/schemas/SourceRange" - } - ] - } - } - } - ] - }, - "PlaneType": { - "description": "Type for a plane.", - "oneOf": [ - { - "type": "string", - "enum": [ - "XY", - "XZ", - "YZ" - ] - }, - { - "description": "A custom plane.", - "type": "string", - "enum": [ - "Custom" - ] - } - ] - }, - "Point3d": { - "type": "object", - "required": [ - "x", - "y", - "z" - ], - "properties": { - "x": { - "type": "number", - "format": "double" - }, - "y": { - "type": "number", - "format": "double" - }, - "z": { - "type": "number", - "format": "double" - } - } - }, - "Solid": { - "description": "An solid is a collection of extrude surfaces.", - "type": "object", - "required": [ - "__meta", - "height", - "id", - "sketch", - "value" - ], - "properties": { - "id": { - "description": "The id of the solid.", - "type": "string", - "format": "uuid" - }, - "value": { - "description": "The extrude surfaces.", - "type": "array", - "items": { - "$ref": "#/components/schemas/ExtrudeSurface" - } - }, - "sketch": { - "description": "The sketch.", - "allOf": [ - { - "$ref": "#/components/schemas/Sketch" - } - ] - }, - "height": { - "description": "The height of the solid.", - "type": "number", - "format": "double" - }, - "startCapId": { - "description": "The id of the extrusion start cap", - "type": "string", - "format": "uuid", - "nullable": true - }, - "endCapId": { - "description": "The id of the extrusion end cap", - "type": "string", - "format": "uuid", - "nullable": true - }, - "edgeCuts": { - "description": "Chamfers or fillets on this solid.", - "type": "array", - "items": { - "$ref": "#/components/schemas/EdgeCut" - } - }, - "__meta": { - "description": "Metadata.", - "type": "array", - "items": { - "$ref": "#/components/schemas/Metadata" - } - } - } - }, - "Sketch": { - "description": "A sketch is a collection of paths.", - "type": "object", - "required": [ - "__meta", - "id", - "on", - "start", - "value" - ], - "properties": { - "id": { - "description": "The id of the sketch (this will change when the engine's reference to it changes.", - "type": "string", - "format": "uuid" - }, - "value": { - "description": "The paths in the sketch.", - "type": "array", - "items": { - "$ref": "#/components/schemas/Path" - } - }, - "on": { - "description": "What the sketch is on (can be a plane or a face).", - "allOf": [ - { - "$ref": "#/components/schemas/SketchSurface" - } - ] - }, - "start": { - "description": "The starting path.", - "allOf": [ - { - "$ref": "#/components/schemas/BasePath" - } - ] - }, - "tags": { - "description": "Tag identifiers that have been declared in this sketch.", - "type": "object", - "additionalProperties": { - "$ref": "#/components/schemas/TagIdentifier" - } - }, - "__meta": { - "description": "Metadata.", - "type": "array", - "items": { - "$ref": "#/components/schemas/Metadata" - } - } - } - }, - "Path": { - "description": "A path.", - "oneOf": [ - { - "description": "A path that goes to a point.", - "type": "object", - "required": [ - "__geoMeta", - "from", - "to", - "type" - ], - "properties": { - "type": { - "type": "string", - "enum": [ - "ToPoint" - ] - }, - "from": { - "description": "The from point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "to": { - "description": "The to point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "tag": { - "description": "The tag of the path.", - "allOf": [ - { - "$ref": "#/components/schemas/TagDeclarator" - } - ], - "nullable": true - }, - "__geoMeta": { - "description": "Metadata.", - "allOf": [ - { - "$ref": "#/components/schemas/GeoMeta" - } - ] - } - } - }, - { - "description": "A arc that is tangential to the last path segment that goes to a point", - "type": "object", - "required": [ - "__geoMeta", - "ccw", - "center", - "from", - "to", - "type" - ], - "properties": { - "type": { - "type": "string", - "enum": [ - "TangentialArcTo" - ] - }, - "center": { - "description": "the arc's center", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "ccw": { - "description": "arc's direction", - "type": "boolean" - }, - "from": { - "description": "The from point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "to": { - "description": "The to point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "tag": { - "description": "The tag of the path.", - "allOf": [ - { - "$ref": "#/components/schemas/TagDeclarator" - } - ], - "nullable": true - }, - "__geoMeta": { - "description": "Metadata.", - "allOf": [ - { - "$ref": "#/components/schemas/GeoMeta" - } - ] - } - } - }, - { - "description": "A arc that is tangential to the last path segment", - "type": "object", - "required": [ - "__geoMeta", - "ccw", - "center", - "from", - "to", - "type" - ], - "properties": { - "type": { - "type": "string", - "enum": [ - "TangentialArc" - ] - }, - "center": { - "description": "the arc's center", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "ccw": { - "description": "arc's direction", - "type": "boolean" - }, - "from": { - "description": "The from point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "to": { - "description": "The to point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "tag": { - "description": "The tag of the path.", - "allOf": [ - { - "$ref": "#/components/schemas/TagDeclarator" - } - ], - "nullable": true - }, - "__geoMeta": { - "description": "Metadata.", - "allOf": [ - { - "$ref": "#/components/schemas/GeoMeta" - } - ] - } - } - }, - { - "description": "a complete arc", - "type": "object", - "required": [ - "__geoMeta", - "ccw", - "center", - "from", - "radius", - "to", - "type" - ], - "properties": { - "type": { - "type": "string", - "enum": [ - "Circle" - ] - }, - "center": { - "description": "the arc's center", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "radius": { - "description": "the arc's radius", - "type": "number", - "format": "double" - }, - "ccw": { - "description": "arc's direction", - "type": "boolean" - }, - "from": { - "description": "The from point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "to": { - "description": "The to point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "tag": { - "description": "The tag of the path.", - "allOf": [ - { - "$ref": "#/components/schemas/TagDeclarator" - } - ], - "nullable": true - }, - "__geoMeta": { - "description": "Metadata.", - "allOf": [ - { - "$ref": "#/components/schemas/GeoMeta" - } - ] - } - } - }, - { - "description": "A path that is horizontal.", - "type": "object", - "required": [ - "__geoMeta", - "from", - "to", - "type", - "x" - ], - "properties": { - "type": { - "type": "string", - "enum": [ - "Horizontal" - ] - }, - "x": { - "description": "The x coordinate.", - "type": "number", - "format": "double" - }, - "from": { - "description": "The from point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "to": { - "description": "The to point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "tag": { - "description": "The tag of the path.", - "allOf": [ - { - "$ref": "#/components/schemas/TagDeclarator" - } - ], - "nullable": true - }, - "__geoMeta": { - "description": "Metadata.", - "allOf": [ - { - "$ref": "#/components/schemas/GeoMeta" - } - ] - } - } - }, - { - "description": "An angled line to.", - "type": "object", - "required": [ - "__geoMeta", - "from", - "to", - "type" - ], - "properties": { - "type": { - "type": "string", - "enum": [ - "AngledLineTo" - ] - }, - "x": { - "description": "The x coordinate.", - "type": "number", - "format": "double", - "nullable": true - }, - "y": { - "description": "The y coordinate.", - "type": "number", - "format": "double", - "nullable": true - }, - "from": { - "description": "The from point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "to": { - "description": "The to point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "tag": { - "description": "The tag of the path.", - "allOf": [ - { - "$ref": "#/components/schemas/TagDeclarator" - } - ], - "nullable": true - }, - "__geoMeta": { - "description": "Metadata.", - "allOf": [ - { - "$ref": "#/components/schemas/GeoMeta" - } - ] - } - } - }, - { - "description": "A base path.", - "type": "object", - "required": [ - "__geoMeta", - "from", - "to", - "type" - ], - "properties": { - "type": { - "type": "string", - "enum": [ - "Base" - ] - }, - "from": { - "description": "The from point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "to": { - "description": "The to point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "tag": { - "description": "The tag of the path.", - "allOf": [ - { - "$ref": "#/components/schemas/TagDeclarator" - } - ], - "nullable": true - }, - "__geoMeta": { - "description": "Metadata.", - "allOf": [ - { - "$ref": "#/components/schemas/GeoMeta" - } - ] - } - } - } - ] - }, - "SketchSurface": { - "description": "A sketch type.", - "oneOf": [ - { - "description": "A plane.", - "type": "object", - "required": [ - "__meta", - "id", - "origin", - "type", - "value", - "xAxis", - "yAxis", - "zAxis" - ], - "properties": { - "type": { - "type": "string", - "enum": [ - "plane" - ] - }, - "id": { - "description": "The id of the plane.", - "type": "string", - "format": "uuid" - }, - "value": { - "$ref": "#/components/schemas/PlaneType" - }, - "origin": { - "description": "Origin of the plane.", - "allOf": [ - { - "$ref": "#/components/schemas/Point3d" - } - ] - }, - "xAxis": { - "description": "What should the plane’s X axis be?", - "allOf": [ - { - "$ref": "#/components/schemas/Point3d" - } - ] - }, - "yAxis": { - "description": "What should the plane’s Y axis be?", - "allOf": [ - { - "$ref": "#/components/schemas/Point3d" - } - ] - }, - "zAxis": { - "description": "The z-axis (normal).", - "allOf": [ - { - "$ref": "#/components/schemas/Point3d" - } - ] - }, - "__meta": { - "type": "array", - "items": { - "$ref": "#/components/schemas/Metadata" - } - } - } - }, - { - "description": "A face.", - "type": "object", - "required": [ - "__meta", - "id", - "solid", - "type", - "value", - "xAxis", - "yAxis", - "zAxis" - ], - "properties": { - "type": { - "type": "string", - "enum": [ - "face" - ] - }, - "id": { - "description": "The id of the face.", - "type": "string", - "format": "uuid" - }, - "value": { - "description": "The tag of the face.", - "type": "string" - }, - "xAxis": { - "description": "What should the face’s X axis be?", - "allOf": [ - { - "$ref": "#/components/schemas/Point3d" - } - ] - }, - "yAxis": { - "description": "What should the face’s Y axis be?", - "allOf": [ - { - "$ref": "#/components/schemas/Point3d" - } - ] - }, - "zAxis": { - "description": "The z-axis (normal).", - "allOf": [ - { - "$ref": "#/components/schemas/Point3d" - } - ] - }, - "solid": { - "description": "The solid the face is on.", - "allOf": [ - { - "$ref": "#/components/schemas/Solid" - } - ] - }, - "__meta": { - "type": "array", - "items": { - "$ref": "#/components/schemas/Metadata" - } - } - } - } - ] - }, - "TagIdentifier": { - "type": "object", - "required": [ - "__meta", - "value" - ], - "properties": { - "value": { - "type": "string" - }, - "info": { - "allOf": [ - { - "$ref": "#/components/schemas/TagEngineInfo" - } - ], - "nullable": true - }, - "__meta": { - "type": "array", - "items": { - "$ref": "#/components/schemas/Metadata" - } - } - } - }, - "EdgeCut": { - "description": "A fillet or a chamfer.", - "oneOf": [ - { - "description": "A fillet.", - "type": "object", - "required": [ - "edgeId", - "id", - "radius", - "type" - ], - "properties": { - "type": { - "type": "string", - "enum": [ - "fillet" - ] - }, - "id": { - "description": "The id of the engine command that called this fillet.", - "type": "string", - "format": "uuid" - }, - "radius": { - "type": "number", - "format": "double" - }, - "edgeId": { - "description": "The engine id of the edge to fillet.", - "type": "string", - "format": "uuid" - }, - "tag": { - "allOf": [ - { - "$ref": "#/components/schemas/TagDeclarator" - } - ], - "nullable": true - } - } - }, - { - "description": "A chamfer.", - "type": "object", - "required": [ - "edgeId", - "id", - "length", - "type" - ], - "properties": { - "type": { - "type": "string", - "enum": [ - "chamfer" - ] - }, - "id": { - "description": "The id of the engine command that called this chamfer.", - "type": "string", - "format": "uuid" - }, - "length": { - "type": "number", - "format": "double" - }, - "edgeId": { - "description": "The engine id of the edge to chamfer.", - "type": "string", - "format": "uuid" - }, - "tag": { - "allOf": [ - { - "$ref": "#/components/schemas/TagDeclarator" - } - ], - "nullable": true - } - } - } - ] - }, - "FunctionExpression": { - "type": "object", - "required": [ - "body", - "end", - "params", - "start" - ], - "properties": { - "start": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "end": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "params": { - "type": "array", - "items": { - "$ref": "#/components/schemas/Parameter" - } - }, - "body": { - "$ref": "#/components/schemas/Program" - }, - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - } - } - }, - "Parameter": { - "description": "Parameter of a KCL function.", - "type": "object", - "required": [ - "identifier", - "optional" - ], - "properties": { - "identifier": { - "description": "The parameter's label or name.", - "allOf": [ - { - "$ref": "#/components/schemas/Identifier" - } - ] - }, - "optional": { - "description": "Is the parameter optional?", - "type": "boolean" - }, - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - } - } - }, - "Identifier": { - "type": "object", - "required": [ - "end", - "name", - "start" - ], - "properties": { - "start": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "end": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "name": { - "type": "string" - }, - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - } - } - }, - "Program": { - "description": "A KCL program top level, or function body.", - "type": "object", - "required": [ - "body", - "end", - "nonCodeMeta", - "start" - ], - "properties": { - "start": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "end": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "body": { - "type": "array", - "items": { - "$ref": "#/components/schemas/BodyItem" - } - }, - "nonCodeMeta": { - "$ref": "#/components/schemas/NonCodeMeta" - }, - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - } - } - }, - "BodyItem": { - "oneOf": [ - { - "type": "object", - "required": [ - "end", - "expression", - "start", - "type" - ], - "properties": { - "type": { - "type": "string", - "enum": [ - "ExpressionStatement" - ] - }, - "start": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "end": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "expression": { - "$ref": "#/components/schemas/Expr" - }, - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - } - } - }, - { - "type": "object", - "required": [ - "declarations", - "end", - "kind", - "start", - "type" - ], - "properties": { - "type": { - "type": "string", - "enum": [ - "VariableDeclaration" - ] - }, - "start": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "end": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "declarations": { - "type": "array", - "items": { - "$ref": "#/components/schemas/VariableDeclarator" - } - }, - "kind": { - "$ref": "#/components/schemas/VariableKind" - }, - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - } - } - }, - { - "type": "object", - "required": [ - "argument", - "end", - "start", - "type" - ], - "properties": { - "type": { - "type": "string", - "enum": [ - "ReturnStatement" - ] - }, - "start": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "end": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "argument": { - "$ref": "#/components/schemas/Expr" - }, - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - } - } - } - ] - }, - "Expr": { - "description": "An expression can be evaluated to yield a single KCL value.", - "oneOf": [ - { - "type": "object", - "required": [ - "end", - "raw", - "start", - "type", - "value" - ], - "properties": { - "type": { - "type": "string", - "enum": [ - "Literal" - ] - }, - "start": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "end": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "value": { - "$ref": "#/components/schemas/LiteralValue" - }, - "raw": { - "type": "string" - }, - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - } - } - }, - { - "type": "object", - "required": [ - "end", - "name", - "start", - "type" - ], - "properties": { - "type": { - "type": "string", - "enum": [ - "Identifier" - ] - }, - "start": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "end": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "name": { - "type": "string" - }, - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - } - } - }, - { - "type": "object", - "required": [ - "end", - "start", - "type", - "value" - ], - "properties": { - "type": { - "type": "string", - "enum": [ - "TagDeclarator" - ] - }, - "start": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "end": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "value": { - "type": "string" - }, - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - } - } - }, - { - "type": "object", - "required": [ - "end", - "left", - "operator", - "right", - "start", - "type" - ], - "properties": { - "type": { - "type": "string", - "enum": [ - "BinaryExpression" - ] - }, - "start": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "end": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "operator": { - "$ref": "#/components/schemas/BinaryOperator" - }, - "left": { - "$ref": "#/components/schemas/BinaryPart" - }, - "right": { - "$ref": "#/components/schemas/BinaryPart" - }, - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - } - } - }, - { - "type": "object", - "required": [ - "body", - "end", - "params", - "start", - "type" - ], - "properties": { - "type": { - "type": "string", - "enum": [ - "FunctionExpression" - ] - }, - "start": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "end": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "params": { - "type": "array", - "items": { - "$ref": "#/components/schemas/Parameter" - } - }, - "body": { - "$ref": "#/components/schemas/Program" - }, - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - } - } - }, - { - "type": "object", - "required": [ - "arguments", - "callee", - "end", - "optional", - "start", - "type" - ], - "properties": { - "type": { - "type": "string", - "enum": [ - "CallExpression" - ] - }, - "start": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "end": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "callee": { - "$ref": "#/components/schemas/Identifier" - }, - "arguments": { - "type": "array", - "items": { - "$ref": "#/components/schemas/Expr" - } - }, - "optional": { - "type": "boolean" - }, - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - } - } - }, - { - "type": "object", - "required": [ - "body", - "end", - "nonCodeMeta", - "start", - "type" - ], - "properties": { - "type": { - "type": "string", - "enum": [ - "PipeExpression" - ] - }, - "start": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "end": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "body": { - "type": "array", - "items": { - "$ref": "#/components/schemas/Expr" - } - }, - "nonCodeMeta": { - "$ref": "#/components/schemas/NonCodeMeta" - }, - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - } - } - }, - { - "type": "object", - "required": [ - "end", - "start", - "type" - ], - "properties": { - "type": { - "type": "string", - "enum": [ - "PipeSubstitution" - ] - }, - "start": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "end": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - } - } - }, - { - "type": "object", - "required": [ - "elements", - "end", - "start", - "type" - ], - "properties": { - "type": { - "type": "string", - "enum": [ - "ArrayExpression" - ] - }, - "start": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "end": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "elements": { - "type": "array", - "items": { - "$ref": "#/components/schemas/Expr" - } - }, - "nonCodeMeta": { - "$ref": "#/components/schemas/NonCodeMeta" - }, - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - } - } - }, - { - "type": "object", - "required": [ - "end", - "properties", - "start", - "type" - ], - "properties": { - "type": { - "type": "string", - "enum": [ - "ObjectExpression" - ] - }, - "start": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "end": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "properties": { - "type": "array", - "items": { - "$ref": "#/components/schemas/ObjectProperty" - } - }, - "nonCodeMeta": { - "$ref": "#/components/schemas/NonCodeMeta" - }, - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - } - } - }, - { - "type": "object", - "required": [ - "computed", - "end", - "object", - "property", - "start", - "type" - ], - "properties": { - "type": { - "type": "string", - "enum": [ - "MemberExpression" - ] - }, - "start": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "end": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "object": { - "$ref": "#/components/schemas/MemberObject" - }, - "property": { - "$ref": "#/components/schemas/LiteralIdentifier" - }, - "computed": { - "type": "boolean" - }, - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - } - } - }, - { - "type": "object", - "required": [ - "argument", - "end", - "operator", - "start", - "type" - ], - "properties": { - "type": { - "type": "string", - "enum": [ - "UnaryExpression" - ] - }, - "start": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "end": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "operator": { - "$ref": "#/components/schemas/UnaryOperator" - }, - "argument": { - "$ref": "#/components/schemas/BinaryPart" - }, - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - } - } - }, - { - "type": "object", - "required": [ - "cond", - "else_ifs", - "end", - "final_else", - "start", - "then_val", - "type" - ], - "properties": { - "type": { - "type": "string", - "enum": [ - "IfExpression" - ] - }, - "start": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "end": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "cond": { - "$ref": "#/components/schemas/Expr" - }, - "then_val": { - "$ref": "#/components/schemas/Program" - }, - "else_ifs": { - "type": "array", - "items": { - "$ref": "#/components/schemas/ElseIf" - } - }, - "final_else": { - "$ref": "#/components/schemas/Program" - }, - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - } - } - }, - { - "description": "KCL value for an optional parameter which was not given an argument. (remember, parameters are in the function declaration, arguments are in the function call/application).", - "type": "object", - "required": [ - "end", - "start", - "type" - ], - "properties": { - "type": { - "type": "string", - "enum": [ - "None" - ] - }, - "start": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "end": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - } - } - } - ] - }, - "LiteralValue": { - "anyOf": [ - { - "type": "integer", - "format": "int64" - }, - { - "type": "number", - "format": "double" - }, - { - "type": "string" - }, - { - "type": "boolean" - } - ] - }, - "BinaryOperator": { - "oneOf": [ - { - "description": "Add two numbers.", - "type": "string", - "enum": [ - "+" - ] - }, - { - "description": "Subtract two numbers.", - "type": "string", - "enum": [ - "-" - ] - }, - { - "description": "Multiply two numbers.", - "type": "string", - "enum": [ - "*" - ] - }, - { - "description": "Divide two numbers.", - "type": "string", - "enum": [ - "/" - ] - }, - { - "description": "Modulo two numbers.", - "type": "string", - "enum": [ - "%" - ] - }, - { - "description": "Raise a number to a power.", - "type": "string", - "enum": [ - "^" - ] - } - ] - }, - "BinaryPart": { - "oneOf": [ - { - "type": "object", - "required": [ - "end", - "raw", - "start", - "type", - "value" - ], - "properties": { - "type": { - "type": "string", - "enum": [ - "Literal" - ] - }, - "start": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "end": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "value": { - "$ref": "#/components/schemas/LiteralValue" - }, - "raw": { - "type": "string" - }, - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - } - } - }, - { - "type": "object", - "required": [ - "end", - "name", - "start", - "type" - ], - "properties": { - "type": { - "type": "string", - "enum": [ - "Identifier" - ] - }, - "start": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "end": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "name": { - "type": "string" - }, - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - } - } - }, - { - "type": "object", - "required": [ - "end", - "left", - "operator", - "right", - "start", - "type" - ], - "properties": { - "type": { - "type": "string", - "enum": [ - "BinaryExpression" - ] - }, - "start": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "end": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "operator": { - "$ref": "#/components/schemas/BinaryOperator" - }, - "left": { - "$ref": "#/components/schemas/BinaryPart" - }, - "right": { - "$ref": "#/components/schemas/BinaryPart" - }, - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - } - } - }, - { - "type": "object", - "required": [ - "arguments", - "callee", - "end", - "optional", - "start", - "type" - ], - "properties": { - "type": { - "type": "string", - "enum": [ - "CallExpression" - ] - }, - "start": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "end": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "callee": { - "$ref": "#/components/schemas/Identifier" - }, - "arguments": { - "type": "array", - "items": { - "$ref": "#/components/schemas/Expr" - } - }, - "optional": { - "type": "boolean" - }, - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - } - } - }, - { - "type": "object", - "required": [ - "argument", - "end", - "operator", - "start", - "type" - ], - "properties": { - "type": { - "type": "string", - "enum": [ - "UnaryExpression" - ] - }, - "start": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "end": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "operator": { - "$ref": "#/components/schemas/UnaryOperator" - }, - "argument": { - "$ref": "#/components/schemas/BinaryPart" - }, - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - } - } - }, - { - "type": "object", - "required": [ - "computed", - "end", - "object", - "property", - "start", - "type" - ], - "properties": { - "type": { - "type": "string", - "enum": [ - "MemberExpression" - ] - }, - "start": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "end": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "object": { - "$ref": "#/components/schemas/MemberObject" - }, - "property": { - "$ref": "#/components/schemas/LiteralIdentifier" - }, - "computed": { - "type": "boolean" - }, - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - } - } - }, - { - "type": "object", - "required": [ - "cond", - "else_ifs", - "end", - "final_else", - "start", - "then_val", - "type" - ], - "properties": { - "type": { - "type": "string", - "enum": [ - "IfExpression" - ] - }, - "start": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "end": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "cond": { - "$ref": "#/components/schemas/Expr" - }, - "then_val": { - "$ref": "#/components/schemas/Program" - }, - "else_ifs": { - "type": "array", - "items": { - "$ref": "#/components/schemas/ElseIf" - } - }, - "final_else": { - "$ref": "#/components/schemas/Program" - }, - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - } - } - } - ] - }, - "UnaryOperator": { - "oneOf": [ - { - "description": "Negate a number.", - "type": "string", - "enum": [ - "-" - ] - }, - { - "description": "Negate a boolean.", - "type": "string", - "enum": [ - "!" - ] - } - ] - }, - "MemberObject": { - "oneOf": [ - { - "type": "object", - "required": [ - "computed", - "end", - "object", - "property", - "start", - "type" - ], - "properties": { - "type": { - "type": "string", - "enum": [ - "MemberExpression" - ] - }, - "start": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "end": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "object": { - "$ref": "#/components/schemas/MemberObject" - }, - "property": { - "$ref": "#/components/schemas/LiteralIdentifier" - }, - "computed": { - "type": "boolean" - }, - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - } - } - }, - { - "type": "object", - "required": [ - "end", - "name", - "start", - "type" - ], - "properties": { - "type": { - "type": "string", - "enum": [ - "Identifier" - ] - }, - "start": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "end": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "name": { - "type": "string" - }, - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - } - } - } - ] - }, - "LiteralIdentifier": { - "oneOf": [ - { - "type": "object", - "required": [ - "end", - "name", - "start", - "type" - ], - "properties": { - "type": { - "type": "string", - "enum": [ - "Identifier" - ] - }, - "start": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "end": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "name": { - "type": "string" - }, - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - } - } - }, - { - "type": "object", - "required": [ - "end", - "raw", - "start", - "type", - "value" - ], - "properties": { - "type": { - "type": "string", - "enum": [ - "Literal" - ] - }, - "start": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "end": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "value": { - "$ref": "#/components/schemas/LiteralValue" - }, - "raw": { - "type": "string" - }, - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - } - } - } - ] - }, - "ElseIf": { - "type": "object", - "required": [ - "cond", - "end", - "start", - "then_val" - ], - "properties": { - "start": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "end": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "cond": { - "$ref": "#/components/schemas/Expr" - }, - "then_val": { - "$ref": "#/components/schemas/Program" - }, - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - } - } - }, - "NonCodeMeta": { - "type": "object", - "required": [ - "nonCodeNodes", - "start" - ], - "properties": { - "nonCodeNodes": { - "type": "object", - "additionalProperties": { - "type": "array", - "items": { - "$ref": "#/components/schemas/NonCodeNode" - } - } - }, - "start": { - "type": "array", - "items": { - "$ref": "#/components/schemas/NonCodeNode" - } - }, - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - } - } - }, - "NonCodeNode": { - "type": "object", - "required": [ - "end", - "start", - "value" - ], - "properties": { - "start": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "end": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "value": { - "$ref": "#/components/schemas/NonCodeValue" - }, - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - } - } - }, - "NonCodeValue": { - "oneOf": [ - { - "description": "A shebang. This is a special type of comment that is at the top of the file. It looks like this: ```python,no_run #!/usr/bin/env python ```", - "type": "object", - "required": [ - "type", - "value" - ], - "properties": { - "type": { - "type": "string", - "enum": [ - "shebang" - ] - }, - "value": { - "type": "string" - } - } - }, - { - "description": "An inline comment. Here are examples: `1 + 1 // This is an inline comment`. `1 + 1 /* Here's another */`.", - "type": "object", - "required": [ - "style", - "type", - "value" - ], - "properties": { - "type": { - "type": "string", - "enum": [ - "inlineComment" - ] - }, - "value": { - "type": "string" - }, - "style": { - "$ref": "#/components/schemas/CommentStyle" - } - } - }, - { - "description": "A block comment. An example of this is the following: ```python,no_run /* This is a block comment */ 1 + 1 ``` Now this is important. The block comment is attached to the next line. This is always the case. Also the block comment doesn't have a new line above it. If it did it would be a `NewLineBlockComment`.", - "type": "object", - "required": [ - "style", - "type", - "value" - ], - "properties": { - "type": { - "type": "string", - "enum": [ - "blockComment" - ] - }, - "value": { - "type": "string" - }, - "style": { - "$ref": "#/components/schemas/CommentStyle" - } - } - }, - { - "description": "A block comment that has a new line above it. The user explicitly added a new line above the block comment.", - "type": "object", - "required": [ - "style", - "type", - "value" - ], - "properties": { - "type": { - "type": "string", - "enum": [ - "newLineBlockComment" - ] - }, - "value": { - "type": "string" - }, - "style": { - "$ref": "#/components/schemas/CommentStyle" - } - } - }, - { - "type": "object", - "required": [ - "type" - ], - "properties": { - "type": { - "type": "string", - "enum": [ - "newLine" - ] - } - } - } - ] - }, - "CommentStyle": { - "oneOf": [ - { - "description": "Like // foo", - "type": "string", - "enum": [ - "line" - ] - }, - { - "description": "Like /* foo */", - "type": "string", - "enum": [ - "block" - ] - } - ] - }, - "ObjectProperty": { - "type": "object", - "required": [ - "end", - "key", - "start", - "value" - ], - "properties": { - "start": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "end": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "key": { - "$ref": "#/components/schemas/Identifier" - }, - "value": { - "$ref": "#/components/schemas/Expr" - }, - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - } - } - }, - "VariableDeclarator": { - "type": "object", - "required": [ - "end", - "id", - "init", - "start" - ], - "properties": { - "start": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "end": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "id": { - "description": "The identifier of the variable.", - "allOf": [ - { - "$ref": "#/components/schemas/Identifier" - } - ] - }, - "init": { - "description": "The value of the variable.", - "allOf": [ - { - "$ref": "#/components/schemas/Expr" - } - ] - }, - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - } - } - }, - "VariableKind": { - "oneOf": [ - { - "description": "Declare a variable.", - "type": "string", - "enum": [ - "let" - ] - }, - { - "description": "Declare a variable that is read-only.", - "type": "string", - "enum": [ - "const" - ] - }, - { - "description": "Declare a function.", - "type": "string", - "enum": [ - "fn" - ] - }, - { - "description": "Declare a variable.", - "type": "string", - "enum": [ - "var" - ] - } - ] - }, - "ProgramMemory": { - "type": "object", - "required": [ - "currentEnv", - "environments" - ], - "properties": { - "environments": { - "type": "array", - "items": { - "$ref": "#/components/schemas/Environment" - } - }, - "currentEnv": { - "$ref": "#/components/schemas/EnvironmentRef" - }, - "return": { - "allOf": [ - { - "$ref": "#/components/schemas/KclValue" - } - ], - "nullable": true - } - } - }, - "Environment": { - "type": "object", - "required": [ - "bindings" - ], - "properties": { - "bindings": { - "type": "object", - "additionalProperties": { - "$ref": "#/components/schemas/KclValue" - } - }, - "parent": { - "allOf": [ - { - "$ref": "#/components/schemas/EnvironmentRef" - } - ], - "nullable": true - } - } - }, - "EnvironmentRef": { - "description": "An index pointing to an environment.", - "type": "integer", - "format": "uint", - "minimum": 0.0 - } - } - }, - "required": true - } - ], - "returnValue": { - "name": "", - "type": "[KclValue]", - "schema": { - "$schema": "https://spec.openapis.org/oas/3.0/schema/2019-04-02#/definitions/Schema", - "title": "Array_of_KclValue", - "type": "array", - "items": { - "$ref": "#/components/schemas/KclValue" - }, - "definitions": { - "KclValue": { - "description": "A memory item.", - "oneOf": [ - { - "type": "object", - "required": [ - "__meta", - "type", - "value" - ], - "properties": { - "type": { - "type": "string", - "enum": [ - "UserVal" - ] - }, - "value": {}, - "__meta": { - "type": "array", - "items": { - "$ref": "#/components/schemas/Metadata" - } - } - } - }, - { - "type": "object", - "required": [ - "__meta", - "type", - "value" - ], - "properties": { - "type": { - "type": "string", - "enum": [ - "TagIdentifier" - ] - }, - "value": { - "type": "string" - }, - "info": { - "allOf": [ - { - "$ref": "#/components/schemas/TagEngineInfo" - } - ], - "nullable": true - }, - "__meta": { - "type": "array", - "items": { - "$ref": "#/components/schemas/Metadata" - } - } - } - }, - { - "type": "object", - "required": [ - "end", - "start", - "type", - "value" - ], - "properties": { - "type": { - "type": "string", - "enum": [ - "TagDeclarator" - ] - }, - "start": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "end": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "value": { - "type": "string" - }, - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - } - } - }, - { - "description": "A plane.", - "type": "object", - "required": [ - "__meta", - "id", - "origin", - "type", - "value", - "xAxis", - "yAxis", - "zAxis" - ], - "properties": { - "type": { - "type": "string", - "enum": [ - "Plane" - ] - }, - "id": { - "description": "The id of the plane.", - "type": "string", - "format": "uuid" - }, - "value": { - "$ref": "#/components/schemas/PlaneType" - }, - "origin": { - "description": "Origin of the plane.", - "allOf": [ - { - "$ref": "#/components/schemas/Point3d" - } - ] - }, - "xAxis": { - "description": "What should the plane’s X axis be?", - "allOf": [ - { - "$ref": "#/components/schemas/Point3d" - } - ] - }, - "yAxis": { - "description": "What should the plane’s Y axis be?", - "allOf": [ - { - "$ref": "#/components/schemas/Point3d" - } - ] - }, - "zAxis": { - "description": "The z-axis (normal).", - "allOf": [ - { - "$ref": "#/components/schemas/Point3d" - } - ] - }, - "__meta": { - "type": "array", - "items": { - "$ref": "#/components/schemas/Metadata" - } - } - } - }, - { - "description": "A face.", - "type": "object", - "required": [ - "__meta", - "id", - "solid", - "type", - "value", - "xAxis", - "yAxis", - "zAxis" - ], - "properties": { - "type": { - "type": "string", - "enum": [ - "Face" - ] - }, - "id": { - "description": "The id of the face.", - "type": "string", - "format": "uuid" - }, - "value": { - "description": "The tag of the face.", - "type": "string" - }, - "xAxis": { - "description": "What should the face’s X axis be?", - "allOf": [ - { - "$ref": "#/components/schemas/Point3d" - } - ] - }, - "yAxis": { - "description": "What should the face’s Y axis be?", - "allOf": [ - { - "$ref": "#/components/schemas/Point3d" - } - ] - }, - "zAxis": { - "description": "The z-axis (normal).", - "allOf": [ - { - "$ref": "#/components/schemas/Point3d" - } - ] - }, - "solid": { - "description": "The solid the face is on.", - "allOf": [ - { - "$ref": "#/components/schemas/Solid" - } - ] - }, - "__meta": { - "type": "array", - "items": { - "$ref": "#/components/schemas/Metadata" - } - } - } - }, - { - "description": "An solid is a collection of extrude surfaces.", - "type": "object", - "required": [ - "__meta", - "height", - "id", - "sketch", - "type", - "value" - ], - "properties": { - "type": { - "type": "string", - "enum": [ - "Solid" - ] - }, - "id": { - "description": "The id of the solid.", - "type": "string", - "format": "uuid" - }, - "value": { - "description": "The extrude surfaces.", - "type": "array", - "items": { - "$ref": "#/components/schemas/ExtrudeSurface" - } - }, - "sketch": { - "description": "The sketch.", - "allOf": [ - { - "$ref": "#/components/schemas/Sketch" - } - ] - }, - "height": { - "description": "The height of the solid.", - "type": "number", - "format": "double" - }, - "startCapId": { - "description": "The id of the extrusion start cap", - "type": "string", - "format": "uuid", - "nullable": true - }, - "endCapId": { - "description": "The id of the extrusion end cap", - "type": "string", - "format": "uuid", - "nullable": true - }, - "edgeCuts": { - "description": "Chamfers or fillets on this solid.", - "type": "array", - "items": { - "$ref": "#/components/schemas/EdgeCut" - } - }, - "__meta": { - "description": "Metadata.", - "type": "array", - "items": { - "$ref": "#/components/schemas/Metadata" - } - } - } - }, - { - "type": "object", - "required": [ - "type", - "value" - ], - "properties": { - "type": { - "type": "string", - "enum": [ - "Solids" - ] - }, - "value": { - "type": "array", - "items": { - "$ref": "#/components/schemas/Solid" - } - } - } - }, - { - "description": "Data for an imported geometry.", - "type": "object", - "required": [ - "__meta", - "id", - "type", - "value" - ], - "properties": { - "type": { - "type": "string", - "enum": [ - "ImportedGeometry" - ] - }, - "id": { - "description": "The ID of the imported geometry.", - "type": "string", - "format": "uuid" - }, - "value": { - "description": "The original file paths.", - "type": "array", - "items": { - "type": "string" - } - }, - "__meta": { - "type": "array", - "items": { - "$ref": "#/components/schemas/Metadata" - } - } - } - }, - { - "type": "object", - "required": [ - "__meta", - "expression", - "memory", - "type" - ], - "properties": { - "type": { - "type": "string", - "enum": [ - "Function" - ] - }, - "expression": { - "$ref": "#/components/schemas/FunctionExpression" - }, - "memory": { - "$ref": "#/components/schemas/ProgramMemory" - }, - "__meta": { - "type": "array", - "items": { - "$ref": "#/components/schemas/Metadata" - } - } - } - } - ] - }, - "Metadata": { - "description": "Metadata.", - "type": "object", - "required": [ - "sourceRange" - ], - "properties": { - "sourceRange": { - "description": "The source range.", - "allOf": [ - { - "$ref": "#/components/schemas/SourceRange" - } - ] - } - } - }, - "SourceRange": { - "type": "array", - "items": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "maxItems": 2, - "minItems": 2 - }, - "TagEngineInfo": { - "description": "Engine information for a tag.", - "type": "object", - "required": [ - "id", - "sketch" - ], - "properties": { - "id": { - "description": "The id of the tagged object.", - "type": "string", - "format": "uuid" - }, - "sketch": { - "description": "The sketch the tag is on.", - "type": "string", - "format": "uuid" - }, - "path": { - "description": "The path the tag is on.", - "allOf": [ - { - "$ref": "#/components/schemas/BasePath" - } - ], - "nullable": true - }, - "surface": { - "description": "The surface information for the tag.", - "allOf": [ - { - "$ref": "#/components/schemas/ExtrudeSurface" - } - ], - "nullable": true - } - } - }, - "BasePath": { - "description": "A base path.", - "type": "object", - "required": [ - "__geoMeta", - "from", - "to" - ], - "properties": { - "from": { - "description": "The from point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "to": { - "description": "The to point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "tag": { - "description": "The tag of the path.", - "allOf": [ - { - "$ref": "#/components/schemas/TagDeclarator" - } - ], - "nullable": true - }, - "__geoMeta": { - "description": "Metadata.", - "allOf": [ - { - "$ref": "#/components/schemas/GeoMeta" - } - ] - } - } - }, - "TagDeclarator": { - "type": "object", - "required": [ - "end", - "start", - "value" - ], - "properties": { - "start": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "end": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "value": { - "type": "string" - }, - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - } - } - }, - "GeoMeta": { - "description": "Geometry metadata.", - "type": "object", - "required": [ - "id", - "sourceRange" - ], - "properties": { - "id": { - "description": "The id of the geometry.", - "type": "string", - "format": "uuid" - }, - "sourceRange": { - "description": "The source range.", - "allOf": [ - { - "$ref": "#/components/schemas/SourceRange" - } - ] - } - } - }, - "ExtrudeSurface": { - "description": "An extrude surface.", - "oneOf": [ - { - "description": "An extrude plane.", - "type": "object", - "required": [ - "faceId", - "id", - "sourceRange", - "type" - ], - "properties": { - "type": { - "type": "string", - "enum": [ - "extrudePlane" - ] - }, - "faceId": { - "description": "The face id for the extrude plane.", - "type": "string", - "format": "uuid" - }, - "tag": { - "description": "The tag.", - "allOf": [ - { - "$ref": "#/components/schemas/TagDeclarator" - } - ], - "nullable": true - }, - "id": { - "description": "The id of the geometry.", - "type": "string", - "format": "uuid" - }, - "sourceRange": { - "description": "The source range.", - "allOf": [ - { - "$ref": "#/components/schemas/SourceRange" - } - ] - } - } - }, - { - "description": "An extruded arc.", - "type": "object", - "required": [ - "faceId", - "id", - "sourceRange", - "type" - ], - "properties": { - "type": { - "type": "string", - "enum": [ - "extrudeArc" - ] - }, - "faceId": { - "description": "The face id for the extrude plane.", - "type": "string", - "format": "uuid" - }, - "tag": { - "description": "The tag.", - "allOf": [ - { - "$ref": "#/components/schemas/TagDeclarator" - } - ], - "nullable": true - }, - "id": { - "description": "The id of the geometry.", - "type": "string", - "format": "uuid" - }, - "sourceRange": { - "description": "The source range.", - "allOf": [ - { - "$ref": "#/components/schemas/SourceRange" - } - ] - } - } - }, - { - "description": "Geometry metadata.", - "type": "object", - "required": [ - "faceId", - "id", - "sourceRange", - "type" - ], - "properties": { - "type": { - "type": "string", - "enum": [ - "chamfer" - ] - }, - "faceId": { - "description": "The id for the chamfer surface.", - "type": "string", - "format": "uuid" - }, - "tag": { - "description": "The tag.", - "allOf": [ - { - "$ref": "#/components/schemas/TagDeclarator" - } - ], - "nullable": true - }, - "id": { - "description": "The id of the geometry.", - "type": "string", - "format": "uuid" - }, - "sourceRange": { - "description": "The source range.", - "allOf": [ - { - "$ref": "#/components/schemas/SourceRange" - } - ] - } - } - }, - { - "description": "Geometry metadata.", - "type": "object", - "required": [ - "faceId", - "id", - "sourceRange", - "type" - ], - "properties": { - "type": { - "type": "string", - "enum": [ - "fillet" - ] - }, - "faceId": { - "description": "The id for the fillet surface.", - "type": "string", - "format": "uuid" - }, - "tag": { - "description": "The tag.", - "allOf": [ - { - "$ref": "#/components/schemas/TagDeclarator" - } - ], - "nullable": true - }, - "id": { - "description": "The id of the geometry.", - "type": "string", - "format": "uuid" - }, - "sourceRange": { - "description": "The source range.", - "allOf": [ - { - "$ref": "#/components/schemas/SourceRange" - } - ] - } - } - } - ] - }, - "PlaneType": { - "description": "Type for a plane.", - "oneOf": [ - { - "type": "string", - "enum": [ - "XY", - "XZ", - "YZ" - ] - }, - { - "description": "A custom plane.", - "type": "string", - "enum": [ - "Custom" - ] - } - ] - }, - "Point3d": { - "type": "object", - "required": [ - "x", - "y", - "z" - ], - "properties": { - "x": { - "type": "number", - "format": "double" - }, - "y": { - "type": "number", - "format": "double" - }, - "z": { - "type": "number", - "format": "double" - } - } - }, - "Solid": { - "description": "An solid is a collection of extrude surfaces.", - "type": "object", - "required": [ - "__meta", - "height", - "id", - "sketch", - "value" - ], - "properties": { - "id": { - "description": "The id of the solid.", - "type": "string", - "format": "uuid" - }, - "value": { - "description": "The extrude surfaces.", - "type": "array", - "items": { - "$ref": "#/components/schemas/ExtrudeSurface" - } - }, - "sketch": { - "description": "The sketch.", - "allOf": [ - { - "$ref": "#/components/schemas/Sketch" - } - ] - }, - "height": { - "description": "The height of the solid.", - "type": "number", - "format": "double" - }, - "startCapId": { - "description": "The id of the extrusion start cap", - "type": "string", - "format": "uuid", - "nullable": true - }, - "endCapId": { - "description": "The id of the extrusion end cap", - "type": "string", - "format": "uuid", - "nullable": true - }, - "edgeCuts": { - "description": "Chamfers or fillets on this solid.", - "type": "array", - "items": { - "$ref": "#/components/schemas/EdgeCut" - } - }, - "__meta": { - "description": "Metadata.", - "type": "array", - "items": { - "$ref": "#/components/schemas/Metadata" - } - } - } - }, - "Sketch": { - "description": "A sketch is a collection of paths.", - "type": "object", - "required": [ - "__meta", - "id", - "on", - "start", - "value" - ], - "properties": { - "id": { - "description": "The id of the sketch (this will change when the engine's reference to it changes.", - "type": "string", - "format": "uuid" - }, - "value": { - "description": "The paths in the sketch.", - "type": "array", - "items": { - "$ref": "#/components/schemas/Path" - } - }, - "on": { - "description": "What the sketch is on (can be a plane or a face).", - "allOf": [ - { - "$ref": "#/components/schemas/SketchSurface" - } - ] - }, - "start": { - "description": "The starting path.", - "allOf": [ - { - "$ref": "#/components/schemas/BasePath" - } - ] - }, - "tags": { - "description": "Tag identifiers that have been declared in this sketch.", - "type": "object", - "additionalProperties": { - "$ref": "#/components/schemas/TagIdentifier" - } - }, - "__meta": { - "description": "Metadata.", - "type": "array", - "items": { - "$ref": "#/components/schemas/Metadata" - } - } - } - }, - "Path": { - "description": "A path.", - "oneOf": [ - { - "description": "A path that goes to a point.", - "type": "object", - "required": [ - "__geoMeta", - "from", - "to", - "type" - ], - "properties": { - "type": { - "type": "string", - "enum": [ - "ToPoint" - ] - }, - "from": { - "description": "The from point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "to": { - "description": "The to point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "tag": { - "description": "The tag of the path.", - "allOf": [ - { - "$ref": "#/components/schemas/TagDeclarator" - } - ], - "nullable": true - }, - "__geoMeta": { - "description": "Metadata.", - "allOf": [ - { - "$ref": "#/components/schemas/GeoMeta" - } - ] - } - } - }, - { - "description": "A arc that is tangential to the last path segment that goes to a point", - "type": "object", - "required": [ - "__geoMeta", - "ccw", - "center", - "from", - "to", - "type" - ], - "properties": { - "type": { - "type": "string", - "enum": [ - "TangentialArcTo" - ] - }, - "center": { - "description": "the arc's center", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "ccw": { - "description": "arc's direction", - "type": "boolean" - }, - "from": { - "description": "The from point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "to": { - "description": "The to point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "tag": { - "description": "The tag of the path.", - "allOf": [ - { - "$ref": "#/components/schemas/TagDeclarator" - } - ], - "nullable": true - }, - "__geoMeta": { - "description": "Metadata.", - "allOf": [ - { - "$ref": "#/components/schemas/GeoMeta" - } - ] - } - } - }, - { - "description": "A arc that is tangential to the last path segment", - "type": "object", - "required": [ - "__geoMeta", - "ccw", - "center", - "from", - "to", - "type" - ], - "properties": { - "type": { - "type": "string", - "enum": [ - "TangentialArc" - ] - }, - "center": { - "description": "the arc's center", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "ccw": { - "description": "arc's direction", - "type": "boolean" - }, - "from": { - "description": "The from point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "to": { - "description": "The to point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "tag": { - "description": "The tag of the path.", - "allOf": [ - { - "$ref": "#/components/schemas/TagDeclarator" - } - ], - "nullable": true - }, - "__geoMeta": { - "description": "Metadata.", - "allOf": [ - { - "$ref": "#/components/schemas/GeoMeta" - } - ] - } - } - }, - { - "description": "a complete arc", - "type": "object", - "required": [ - "__geoMeta", - "ccw", - "center", - "from", - "radius", - "to", - "type" - ], - "properties": { - "type": { - "type": "string", - "enum": [ - "Circle" - ] - }, - "center": { - "description": "the arc's center", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "radius": { - "description": "the arc's radius", - "type": "number", - "format": "double" - }, - "ccw": { - "description": "arc's direction", - "type": "boolean" - }, - "from": { - "description": "The from point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "to": { - "description": "The to point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "tag": { - "description": "The tag of the path.", - "allOf": [ - { - "$ref": "#/components/schemas/TagDeclarator" - } - ], - "nullable": true - }, - "__geoMeta": { - "description": "Metadata.", - "allOf": [ - { - "$ref": "#/components/schemas/GeoMeta" - } - ] - } - } - }, - { - "description": "A path that is horizontal.", - "type": "object", - "required": [ - "__geoMeta", - "from", - "to", - "type", - "x" - ], - "properties": { - "type": { - "type": "string", - "enum": [ - "Horizontal" - ] - }, - "x": { - "description": "The x coordinate.", - "type": "number", - "format": "double" - }, - "from": { - "description": "The from point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "to": { - "description": "The to point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "tag": { - "description": "The tag of the path.", - "allOf": [ - { - "$ref": "#/components/schemas/TagDeclarator" - } - ], - "nullable": true - }, - "__geoMeta": { - "description": "Metadata.", - "allOf": [ - { - "$ref": "#/components/schemas/GeoMeta" - } - ] - } - } - }, - { - "description": "An angled line to.", - "type": "object", - "required": [ - "__geoMeta", - "from", - "to", - "type" - ], - "properties": { - "type": { - "type": "string", - "enum": [ - "AngledLineTo" - ] - }, - "x": { - "description": "The x coordinate.", - "type": "number", - "format": "double", - "nullable": true - }, - "y": { - "description": "The y coordinate.", - "type": "number", - "format": "double", - "nullable": true - }, - "from": { - "description": "The from point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "to": { - "description": "The to point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "tag": { - "description": "The tag of the path.", - "allOf": [ - { - "$ref": "#/components/schemas/TagDeclarator" - } - ], - "nullable": true - }, - "__geoMeta": { - "description": "Metadata.", - "allOf": [ - { - "$ref": "#/components/schemas/GeoMeta" - } - ] - } - } - }, - { - "description": "A base path.", - "type": "object", - "required": [ - "__geoMeta", - "from", - "to", - "type" - ], - "properties": { - "type": { - "type": "string", - "enum": [ - "Base" - ] - }, - "from": { - "description": "The from point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "to": { - "description": "The to point.", - "type": "array", - "items": { - "type": "number", - "format": "double" - }, - "maxItems": 2, - "minItems": 2 - }, - "tag": { - "description": "The tag of the path.", - "allOf": [ - { - "$ref": "#/components/schemas/TagDeclarator" - } - ], - "nullable": true - }, - "__geoMeta": { - "description": "Metadata.", - "allOf": [ - { - "$ref": "#/components/schemas/GeoMeta" - } - ] - } - } - } - ] - }, - "SketchSurface": { - "description": "A sketch type.", - "oneOf": [ - { - "description": "A plane.", - "type": "object", - "required": [ - "__meta", - "id", - "origin", - "type", - "value", - "xAxis", - "yAxis", - "zAxis" - ], - "properties": { - "type": { - "type": "string", - "enum": [ - "plane" - ] - }, - "id": { - "description": "The id of the plane.", - "type": "string", - "format": "uuid" - }, - "value": { - "$ref": "#/components/schemas/PlaneType" - }, - "origin": { - "description": "Origin of the plane.", - "allOf": [ - { - "$ref": "#/components/schemas/Point3d" - } - ] - }, - "xAxis": { - "description": "What should the plane’s X axis be?", - "allOf": [ - { - "$ref": "#/components/schemas/Point3d" - } - ] - }, - "yAxis": { - "description": "What should the plane’s Y axis be?", - "allOf": [ - { - "$ref": "#/components/schemas/Point3d" - } - ] - }, - "zAxis": { - "description": "The z-axis (normal).", - "allOf": [ - { - "$ref": "#/components/schemas/Point3d" - } - ] - }, - "__meta": { - "type": "array", - "items": { - "$ref": "#/components/schemas/Metadata" - } - } - } - }, - { - "description": "A face.", - "type": "object", - "required": [ - "__meta", - "id", - "solid", - "type", - "value", - "xAxis", - "yAxis", - "zAxis" - ], - "properties": { - "type": { - "type": "string", - "enum": [ - "face" - ] - }, - "id": { - "description": "The id of the face.", - "type": "string", - "format": "uuid" - }, - "value": { - "description": "The tag of the face.", - "type": "string" - }, - "xAxis": { - "description": "What should the face’s X axis be?", - "allOf": [ - { - "$ref": "#/components/schemas/Point3d" - } - ] - }, - "yAxis": { - "description": "What should the face’s Y axis be?", - "allOf": [ - { - "$ref": "#/components/schemas/Point3d" - } - ] - }, - "zAxis": { - "description": "The z-axis (normal).", - "allOf": [ - { - "$ref": "#/components/schemas/Point3d" - } - ] - }, - "solid": { - "description": "The solid the face is on.", - "allOf": [ - { - "$ref": "#/components/schemas/Solid" - } - ] - }, - "__meta": { - "type": "array", - "items": { - "$ref": "#/components/schemas/Metadata" - } - } - } - } - ] - }, - "TagIdentifier": { - "type": "object", - "required": [ - "__meta", - "value" - ], - "properties": { - "value": { - "type": "string" - }, - "info": { - "allOf": [ - { - "$ref": "#/components/schemas/TagEngineInfo" - } - ], - "nullable": true - }, - "__meta": { - "type": "array", - "items": { - "$ref": "#/components/schemas/Metadata" - } - } - } - }, - "EdgeCut": { - "description": "A fillet or a chamfer.", - "oneOf": [ - { - "description": "A fillet.", - "type": "object", - "required": [ - "edgeId", - "id", - "radius", - "type" - ], - "properties": { - "type": { - "type": "string", - "enum": [ - "fillet" - ] - }, - "id": { - "description": "The id of the engine command that called this fillet.", - "type": "string", - "format": "uuid" - }, - "radius": { - "type": "number", - "format": "double" - }, - "edgeId": { - "description": "The engine id of the edge to fillet.", - "type": "string", - "format": "uuid" - }, - "tag": { - "allOf": [ - { - "$ref": "#/components/schemas/TagDeclarator" - } - ], - "nullable": true - } - } - }, - { - "description": "A chamfer.", - "type": "object", - "required": [ - "edgeId", - "id", - "length", - "type" - ], - "properties": { - "type": { - "type": "string", - "enum": [ - "chamfer" - ] - }, - "id": { - "description": "The id of the engine command that called this chamfer.", - "type": "string", - "format": "uuid" - }, - "length": { - "type": "number", - "format": "double" - }, - "edgeId": { - "description": "The engine id of the edge to chamfer.", - "type": "string", - "format": "uuid" - }, - "tag": { - "allOf": [ - { - "$ref": "#/components/schemas/TagDeclarator" - } - ], - "nullable": true - } - } - } - ] - }, - "FunctionExpression": { - "type": "object", - "required": [ - "body", - "end", - "params", - "start" - ], - "properties": { - "start": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "end": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "params": { - "type": "array", - "items": { - "$ref": "#/components/schemas/Parameter" - } - }, - "body": { - "$ref": "#/components/schemas/Program" - }, - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - } - } - }, - "Parameter": { - "description": "Parameter of a KCL function.", - "type": "object", - "required": [ - "identifier", - "optional" - ], - "properties": { - "identifier": { - "description": "The parameter's label or name.", - "allOf": [ - { - "$ref": "#/components/schemas/Identifier" - } - ] - }, - "optional": { - "description": "Is the parameter optional?", - "type": "boolean" - }, - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - } - } - }, - "Identifier": { - "type": "object", - "required": [ - "end", - "name", - "start" - ], - "properties": { - "start": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "end": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "name": { - "type": "string" - }, - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - } - } - }, - "Program": { - "description": "A KCL program top level, or function body.", - "type": "object", - "required": [ - "body", - "end", - "nonCodeMeta", - "start" - ], - "properties": { - "start": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "end": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "body": { - "type": "array", - "items": { - "$ref": "#/components/schemas/BodyItem" - } - }, - "nonCodeMeta": { - "$ref": "#/components/schemas/NonCodeMeta" - }, - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - } - } - }, - "BodyItem": { - "oneOf": [ - { - "type": "object", - "required": [ - "end", - "expression", - "start", - "type" - ], - "properties": { - "type": { - "type": "string", - "enum": [ - "ExpressionStatement" - ] - }, - "start": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "end": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "expression": { - "$ref": "#/components/schemas/Expr" - }, - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - } - } - }, - { - "type": "object", - "required": [ - "declarations", - "end", - "kind", - "start", - "type" - ], - "properties": { - "type": { - "type": "string", - "enum": [ - "VariableDeclaration" - ] - }, - "start": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "end": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "declarations": { - "type": "array", - "items": { - "$ref": "#/components/schemas/VariableDeclarator" - } - }, - "kind": { - "$ref": "#/components/schemas/VariableKind" - }, - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - } - } - }, - { - "type": "object", - "required": [ - "argument", - "end", - "start", - "type" - ], - "properties": { - "type": { - "type": "string", - "enum": [ - "ReturnStatement" - ] - }, - "start": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "end": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "argument": { - "$ref": "#/components/schemas/Expr" - }, - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - } - } - } - ] - }, - "Expr": { - "description": "An expression can be evaluated to yield a single KCL value.", - "oneOf": [ - { - "type": "object", - "required": [ - "end", - "raw", - "start", - "type", - "value" - ], - "properties": { - "type": { - "type": "string", - "enum": [ - "Literal" - ] - }, - "start": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "end": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "value": { - "$ref": "#/components/schemas/LiteralValue" - }, - "raw": { - "type": "string" - }, - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - } - } - }, - { - "type": "object", - "required": [ - "end", - "name", - "start", - "type" - ], - "properties": { - "type": { - "type": "string", - "enum": [ - "Identifier" - ] - }, - "start": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "end": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "name": { - "type": "string" - }, - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - } - } - }, - { - "type": "object", - "required": [ - "end", - "start", - "type", - "value" - ], - "properties": { - "type": { - "type": "string", - "enum": [ - "TagDeclarator" - ] - }, - "start": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "end": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "value": { - "type": "string" - }, - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - } - } - }, - { - "type": "object", - "required": [ - "end", - "left", - "operator", - "right", - "start", - "type" - ], - "properties": { - "type": { - "type": "string", - "enum": [ - "BinaryExpression" - ] - }, - "start": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "end": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "operator": { - "$ref": "#/components/schemas/BinaryOperator" - }, - "left": { - "$ref": "#/components/schemas/BinaryPart" - }, - "right": { - "$ref": "#/components/schemas/BinaryPart" - }, - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - } - } - }, - { - "type": "object", - "required": [ - "body", - "end", - "params", - "start", - "type" - ], - "properties": { - "type": { - "type": "string", - "enum": [ - "FunctionExpression" - ] - }, - "start": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "end": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "params": { - "type": "array", - "items": { - "$ref": "#/components/schemas/Parameter" - } - }, - "body": { - "$ref": "#/components/schemas/Program" - }, - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - } - } - }, - { - "type": "object", - "required": [ - "arguments", - "callee", - "end", - "optional", - "start", - "type" - ], - "properties": { - "type": { - "type": "string", - "enum": [ - "CallExpression" - ] - }, - "start": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "end": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "callee": { - "$ref": "#/components/schemas/Identifier" - }, - "arguments": { - "type": "array", - "items": { - "$ref": "#/components/schemas/Expr" - } - }, - "optional": { - "type": "boolean" - }, - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - } - } - }, - { - "type": "object", - "required": [ - "body", - "end", - "nonCodeMeta", - "start", - "type" - ], - "properties": { - "type": { - "type": "string", - "enum": [ - "PipeExpression" - ] - }, - "start": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "end": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "body": { - "type": "array", - "items": { - "$ref": "#/components/schemas/Expr" - } - }, - "nonCodeMeta": { - "$ref": "#/components/schemas/NonCodeMeta" - }, - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - } - } - }, - { - "type": "object", - "required": [ - "end", - "start", - "type" - ], - "properties": { - "type": { - "type": "string", - "enum": [ - "PipeSubstitution" - ] - }, - "start": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "end": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - } - } - }, - { - "type": "object", - "required": [ - "elements", - "end", - "start", - "type" - ], - "properties": { - "type": { - "type": "string", - "enum": [ - "ArrayExpression" - ] - }, - "start": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "end": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "elements": { - "type": "array", - "items": { - "$ref": "#/components/schemas/Expr" - } - }, - "nonCodeMeta": { - "$ref": "#/components/schemas/NonCodeMeta" - }, - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - } - } - }, - { - "type": "object", - "required": [ - "end", - "properties", - "start", - "type" - ], - "properties": { - "type": { - "type": "string", - "enum": [ - "ObjectExpression" - ] - }, - "start": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "end": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "properties": { - "type": "array", - "items": { - "$ref": "#/components/schemas/ObjectProperty" - } - }, - "nonCodeMeta": { - "$ref": "#/components/schemas/NonCodeMeta" - }, - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - } - } - }, - { - "type": "object", - "required": [ - "computed", - "end", - "object", - "property", - "start", - "type" - ], - "properties": { - "type": { - "type": "string", - "enum": [ - "MemberExpression" - ] - }, - "start": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "end": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "object": { - "$ref": "#/components/schemas/MemberObject" - }, - "property": { - "$ref": "#/components/schemas/LiteralIdentifier" - }, - "computed": { - "type": "boolean" - }, - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - } - } - }, - { - "type": "object", - "required": [ - "argument", - "end", - "operator", - "start", - "type" - ], - "properties": { - "type": { - "type": "string", - "enum": [ - "UnaryExpression" - ] - }, - "start": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "end": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "operator": { - "$ref": "#/components/schemas/UnaryOperator" - }, - "argument": { - "$ref": "#/components/schemas/BinaryPart" - }, - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - } - } - }, - { - "type": "object", - "required": [ - "cond", - "else_ifs", - "end", - "final_else", - "start", - "then_val", - "type" - ], - "properties": { - "type": { - "type": "string", - "enum": [ - "IfExpression" - ] - }, - "start": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "end": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "cond": { - "$ref": "#/components/schemas/Expr" - }, - "then_val": { - "$ref": "#/components/schemas/Program" - }, - "else_ifs": { - "type": "array", - "items": { - "$ref": "#/components/schemas/ElseIf" - } - }, - "final_else": { - "$ref": "#/components/schemas/Program" - }, - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - } - } - }, - { - "description": "KCL value for an optional parameter which was not given an argument. (remember, parameters are in the function declaration, arguments are in the function call/application).", - "type": "object", - "required": [ - "end", - "start", - "type" - ], - "properties": { - "type": { - "type": "string", - "enum": [ - "None" - ] - }, - "start": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "end": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - } - } - } - ] - }, - "LiteralValue": { - "anyOf": [ - { - "type": "integer", - "format": "int64" - }, - { - "type": "number", - "format": "double" - }, - { - "type": "string" - }, - { - "type": "boolean" - } - ] - }, - "BinaryOperator": { - "oneOf": [ - { - "description": "Add two numbers.", - "type": "string", - "enum": [ - "+" - ] - }, - { - "description": "Subtract two numbers.", - "type": "string", - "enum": [ - "-" - ] - }, - { - "description": "Multiply two numbers.", - "type": "string", - "enum": [ - "*" - ] - }, - { - "description": "Divide two numbers.", - "type": "string", - "enum": [ - "/" - ] - }, - { - "description": "Modulo two numbers.", - "type": "string", - "enum": [ - "%" - ] - }, - { - "description": "Raise a number to a power.", - "type": "string", - "enum": [ - "^" - ] - } - ] - }, - "BinaryPart": { - "oneOf": [ - { - "type": "object", - "required": [ - "end", - "raw", - "start", - "type", - "value" - ], - "properties": { - "type": { - "type": "string", - "enum": [ - "Literal" - ] - }, - "start": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "end": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "value": { - "$ref": "#/components/schemas/LiteralValue" - }, - "raw": { - "type": "string" - }, - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - } - } - }, - { - "type": "object", - "required": [ - "end", - "name", - "start", - "type" - ], - "properties": { - "type": { - "type": "string", - "enum": [ - "Identifier" - ] - }, - "start": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "end": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "name": { - "type": "string" - }, - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - } - } - }, - { - "type": "object", - "required": [ - "end", - "left", - "operator", - "right", - "start", - "type" - ], - "properties": { - "type": { - "type": "string", - "enum": [ - "BinaryExpression" - ] - }, - "start": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "end": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "operator": { - "$ref": "#/components/schemas/BinaryOperator" - }, - "left": { - "$ref": "#/components/schemas/BinaryPart" - }, - "right": { - "$ref": "#/components/schemas/BinaryPart" - }, - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - } - } - }, - { - "type": "object", - "required": [ - "arguments", - "callee", - "end", - "optional", - "start", - "type" - ], - "properties": { - "type": { - "type": "string", - "enum": [ - "CallExpression" - ] - }, - "start": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "end": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "callee": { - "$ref": "#/components/schemas/Identifier" - }, - "arguments": { - "type": "array", - "items": { - "$ref": "#/components/schemas/Expr" - } - }, - "optional": { - "type": "boolean" - }, - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - } - } - }, - { - "type": "object", - "required": [ - "argument", - "end", - "operator", - "start", - "type" - ], - "properties": { - "type": { - "type": "string", - "enum": [ - "UnaryExpression" - ] - }, - "start": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "end": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "operator": { - "$ref": "#/components/schemas/UnaryOperator" - }, - "argument": { - "$ref": "#/components/schemas/BinaryPart" - }, - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - } - } - }, - { - "type": "object", - "required": [ - "computed", - "end", - "object", - "property", - "start", - "type" - ], - "properties": { - "type": { - "type": "string", - "enum": [ - "MemberExpression" - ] - }, - "start": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "end": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "object": { - "$ref": "#/components/schemas/MemberObject" - }, - "property": { - "$ref": "#/components/schemas/LiteralIdentifier" - }, - "computed": { - "type": "boolean" - }, - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - } - } - }, - { - "type": "object", - "required": [ - "cond", - "else_ifs", - "end", - "final_else", - "start", - "then_val", - "type" - ], - "properties": { - "type": { - "type": "string", - "enum": [ - "IfExpression" - ] - }, - "start": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "end": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "cond": { - "$ref": "#/components/schemas/Expr" - }, - "then_val": { - "$ref": "#/components/schemas/Program" - }, - "else_ifs": { - "type": "array", - "items": { - "$ref": "#/components/schemas/ElseIf" - } - }, - "final_else": { - "$ref": "#/components/schemas/Program" - }, - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - } - } - } - ] - }, - "UnaryOperator": { - "oneOf": [ - { - "description": "Negate a number.", - "type": "string", - "enum": [ - "-" - ] - }, - { - "description": "Negate a boolean.", - "type": "string", - "enum": [ - "!" - ] - } - ] - }, - "MemberObject": { - "oneOf": [ - { - "type": "object", - "required": [ - "computed", - "end", - "object", - "property", - "start", - "type" - ], - "properties": { - "type": { - "type": "string", - "enum": [ - "MemberExpression" - ] - }, - "start": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "end": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "object": { - "$ref": "#/components/schemas/MemberObject" - }, - "property": { - "$ref": "#/components/schemas/LiteralIdentifier" - }, - "computed": { - "type": "boolean" - }, - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - } - } - }, - { - "type": "object", - "required": [ - "end", - "name", - "start", - "type" - ], - "properties": { - "type": { - "type": "string", - "enum": [ - "Identifier" - ] - }, - "start": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "end": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "name": { - "type": "string" - }, - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - } - } - } - ] - }, - "LiteralIdentifier": { - "oneOf": [ - { - "type": "object", - "required": [ - "end", - "name", - "start", - "type" - ], - "properties": { - "type": { - "type": "string", - "enum": [ - "Identifier" - ] - }, - "start": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "end": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "name": { - "type": "string" - }, - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - } - } - }, - { - "type": "object", - "required": [ - "end", - "raw", - "start", - "type", - "value" - ], - "properties": { - "type": { - "type": "string", - "enum": [ - "Literal" - ] - }, - "start": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "end": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "value": { - "$ref": "#/components/schemas/LiteralValue" - }, - "raw": { - "type": "string" - }, - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - } - } - } - ] - }, - "ElseIf": { - "type": "object", - "required": [ - "cond", - "end", - "start", - "then_val" - ], - "properties": { - "start": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "end": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "cond": { - "$ref": "#/components/schemas/Expr" - }, - "then_val": { - "$ref": "#/components/schemas/Program" - }, - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - } - } - }, - "NonCodeMeta": { - "type": "object", - "required": [ - "nonCodeNodes", - "start" - ], - "properties": { - "nonCodeNodes": { - "type": "object", - "additionalProperties": { - "type": "array", - "items": { - "$ref": "#/components/schemas/NonCodeNode" - } - } - }, - "start": { - "type": "array", - "items": { - "$ref": "#/components/schemas/NonCodeNode" - } - }, - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - } - } - }, - "NonCodeNode": { - "type": "object", - "required": [ - "end", - "start", - "value" - ], - "properties": { - "start": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "end": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "value": { - "$ref": "#/components/schemas/NonCodeValue" - }, - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - } - } - }, - "NonCodeValue": { - "oneOf": [ - { - "description": "A shebang. This is a special type of comment that is at the top of the file. It looks like this: ```python,no_run #!/usr/bin/env python ```", - "type": "object", - "required": [ - "type", - "value" - ], - "properties": { - "type": { - "type": "string", - "enum": [ - "shebang" - ] - }, - "value": { - "type": "string" - } - } - }, - { - "description": "An inline comment. Here are examples: `1 + 1 // This is an inline comment`. `1 + 1 /* Here's another */`.", - "type": "object", - "required": [ - "style", - "type", - "value" - ], - "properties": { - "type": { - "type": "string", - "enum": [ - "inlineComment" - ] - }, - "value": { - "type": "string" - }, - "style": { - "$ref": "#/components/schemas/CommentStyle" - } - } - }, - { - "description": "A block comment. An example of this is the following: ```python,no_run /* This is a block comment */ 1 + 1 ``` Now this is important. The block comment is attached to the next line. This is always the case. Also the block comment doesn't have a new line above it. If it did it would be a `NewLineBlockComment`.", - "type": "object", - "required": [ - "style", - "type", - "value" - ], - "properties": { - "type": { - "type": "string", - "enum": [ - "blockComment" - ] - }, - "value": { - "type": "string" - }, - "style": { - "$ref": "#/components/schemas/CommentStyle" - } - } - }, - { - "description": "A block comment that has a new line above it. The user explicitly added a new line above the block comment.", - "type": "object", - "required": [ - "style", - "type", - "value" - ], - "properties": { - "type": { - "type": "string", - "enum": [ - "newLineBlockComment" - ] - }, - "value": { - "type": "string" - }, - "style": { - "$ref": "#/components/schemas/CommentStyle" - } - } - }, - { - "type": "object", - "required": [ - "type" - ], - "properties": { - "type": { - "type": "string", - "enum": [ - "newLine" - ] - } - } - } - ] - }, - "CommentStyle": { - "oneOf": [ - { - "description": "Like // foo", - "type": "string", - "enum": [ - "line" - ] - }, - { - "description": "Like /* foo */", - "type": "string", - "enum": [ - "block" - ] - } - ] - }, - "ObjectProperty": { - "type": "object", - "required": [ - "end", - "key", - "start", - "value" - ], - "properties": { - "start": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "end": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "key": { - "$ref": "#/components/schemas/Identifier" - }, - "value": { - "$ref": "#/components/schemas/Expr" - }, - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - } - } - }, - "VariableDeclarator": { - "type": "object", - "required": [ - "end", - "id", - "init", - "start" - ], - "properties": { - "start": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "end": { - "type": "integer", - "format": "uint", - "minimum": 0.0 - }, - "id": { - "description": "The identifier of the variable.", - "allOf": [ - { - "$ref": "#/components/schemas/Identifier" - } - ] - }, - "init": { - "description": "The value of the variable.", - "allOf": [ - { - "$ref": "#/components/schemas/Expr" - } - ] - }, - "digest": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8", - "minimum": 0.0 - }, - "maxItems": 32, - "minItems": 32, - "nullable": true - } - } - }, - "VariableKind": { - "oneOf": [ - { - "description": "Declare a variable.", - "type": "string", - "enum": [ - "let" - ] - }, - { - "description": "Declare a variable that is read-only.", - "type": "string", - "enum": [ - "const" - ] - }, - { - "description": "Declare a function.", - "type": "string", - "enum": [ - "fn" - ] - }, - { - "description": "Declare a variable.", - "type": "string", - "enum": [ - "var" - ] - } - ] - }, - "ProgramMemory": { - "type": "object", - "required": [ - "currentEnv", - "environments" - ], - "properties": { - "environments": { - "type": "array", - "items": { - "$ref": "#/components/schemas/Environment" - } - }, - "currentEnv": { - "$ref": "#/components/schemas/EnvironmentRef" - }, - "return": { - "allOf": [ - { - "$ref": "#/components/schemas/KclValue" - } - ], - "nullable": true - } - } - }, - "Environment": { - "type": "object", - "required": [ - "bindings" - ], - "properties": { - "bindings": { - "type": "object", - "additionalProperties": { - "$ref": "#/components/schemas/KclValue" - } - }, - "parent": { - "allOf": [ - { - "$ref": "#/components/schemas/EnvironmentRef" - } - ], - "nullable": true - } - } - }, - "EnvironmentRef": { - "description": "An index pointing to an environment.", - "type": "integer", - "format": "uint", - "minimum": 0.0 - } - } - }, - "required": true - }, - "unpublished": false, - "deprecated": false, - "examples": [ - "const r = 10 // radius\nfn drawCircle = (id) => {\n return startSketchOn(\"XY\")\n |> circle({ center: [id * 2 * r, 0], radius: r }, %)\n}\n\n// Call `drawCircle`, passing in each element of the array.\n// The outputs from each `drawCircle` form a new array,\n// which is the return value from `map`.\nconst circles = map([1, 2, 3], drawCircle)", - "const r = 10 // radius\n// Call `map`, using an anonymous function instead of a named one.\nconst circles = map([1, 2, 3], (id) => {\n return startSketchOn(\"XY\")\n |> circle({ center: [id * 2 * r, 0], radius: r }, %)\n})" - ] - }, { "name": "max", "summary": "Compute the maximum of the given arguments.", diff --git a/docs/kcl/types/BinaryOperator.md b/docs/kcl/types/BinaryOperator.md deleted file mode 100644 index 4ef890ea8..000000000 --- a/docs/kcl/types/BinaryOperator.md +++ /dev/null @@ -1,89 +0,0 @@ ---- -title: "BinaryOperator" -excerpt: "" -layout: manual ---- - - - - - - -**This schema accepts exactly one of the following:** - -Add two numbers. - -**enum:** `+` - - - - - - - - ----- -Subtract two numbers. - -**enum:** `-` - - - - - - - - ----- -Multiply two numbers. - -**enum:** `*` - - - - - - - - ----- -Divide two numbers. - -**enum:** `/` - - - - - - - - ----- -Modulo two numbers. - -**enum:** `%` - - - - - - - - ----- -Raise a number to a power. - -**enum:** `^` - - - - - - - - ----- - - - - diff --git a/docs/kcl/types/BinaryPart.md b/docs/kcl/types/BinaryPart.md deleted file mode 100644 index 87b0b7722..000000000 --- a/docs/kcl/types/BinaryPart.md +++ /dev/null @@ -1,161 +0,0 @@ ---- -title: "BinaryPart" -excerpt: "" -layout: manual ---- - - - - - - -**This schema accepts exactly one of the following:** - - -**Type:** `object` - - - - - -## Properties - -| Property | Type | Description | Required | -|----------|------|-------------|----------| -| `type` |enum: `Literal`| | No | -| `start` |[`EnvironmentRef`](/docs/kcl/types/EnvironmentRef)| | No | -| `end` |[`EnvironmentRef`](/docs/kcl/types/EnvironmentRef)| | No | -| `value` |[`LiteralValue`](/docs/kcl/types/LiteralValue)| | No | -| `raw` |`string`| | No | -| `digest` |`[, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`]`| | No | - - ----- - -**Type:** `object` - - - - - -## Properties - -| Property | Type | Description | Required | -|----------|------|-------------|----------| -| `type` |enum: [`Identifier`](/docs/kcl/types/Identifier)| | No | -| `start` |[`EnvironmentRef`](/docs/kcl/types/EnvironmentRef)| | No | -| `end` |[`EnvironmentRef`](/docs/kcl/types/EnvironmentRef)| | No | -| `name` |`string`| | No | -| `digest` |`[, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`]`| | No | - - ----- - -**Type:** `object` - - - - - -## Properties - -| Property | Type | Description | Required | -|----------|------|-------------|----------| -| `type` |enum: `BinaryExpression`| | No | -| `start` |[`EnvironmentRef`](/docs/kcl/types/EnvironmentRef)| | No | -| `end` |[`EnvironmentRef`](/docs/kcl/types/EnvironmentRef)| | No | -| `operator` |[`BinaryOperator`](/docs/kcl/types/BinaryOperator)| | No | -| `left` |[`BinaryPart`](/docs/kcl/types/BinaryPart)| | No | -| `right` |[`BinaryPart`](/docs/kcl/types/BinaryPart)| | No | -| `digest` |`[, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`]`| | No | - - ----- - -**Type:** `object` - - - - - -## Properties - -| Property | Type | Description | Required | -|----------|------|-------------|----------| -| `type` |enum: `CallExpression`| | No | -| `start` |[`EnvironmentRef`](/docs/kcl/types/EnvironmentRef)| | No | -| `end` |[`EnvironmentRef`](/docs/kcl/types/EnvironmentRef)| | No | -| `callee` |[`Identifier`](/docs/kcl/types/Identifier)| | No | -| `arguments` |`[` [`Expr`](/docs/kcl/types/Expr) `]`| | No | -| `optional` |`boolean`| | No | -| `digest` |`[, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`]`| | No | - - ----- - -**Type:** `object` - - - - - -## Properties - -| Property | Type | Description | Required | -|----------|------|-------------|----------| -| `type` |enum: `UnaryExpression`| | No | -| `start` |[`EnvironmentRef`](/docs/kcl/types/EnvironmentRef)| | No | -| `end` |[`EnvironmentRef`](/docs/kcl/types/EnvironmentRef)| | No | -| `operator` |[`UnaryOperator`](/docs/kcl/types/UnaryOperator)| | No | -| `argument` |[`BinaryPart`](/docs/kcl/types/BinaryPart)| | No | -| `digest` |`[, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`]`| | No | - - ----- - -**Type:** `object` - - - - - -## Properties - -| Property | Type | Description | Required | -|----------|------|-------------|----------| -| `type` |enum: `MemberExpression`| | No | -| `start` |[`EnvironmentRef`](/docs/kcl/types/EnvironmentRef)| | No | -| `end` |[`EnvironmentRef`](/docs/kcl/types/EnvironmentRef)| | No | -| `object` |[`MemberObject`](/docs/kcl/types/MemberObject)| | No | -| `property` |[`LiteralIdentifier`](/docs/kcl/types/LiteralIdentifier)| | No | -| `computed` |`boolean`| | No | -| `digest` |`[, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`]`| | No | - - ----- - -**Type:** `object` - - - - - -## Properties - -| Property | Type | Description | Required | -|----------|------|-------------|----------| -| `type` |enum: `IfExpression`| | No | -| `start` |[`EnvironmentRef`](/docs/kcl/types/EnvironmentRef)| | No | -| `end` |[`EnvironmentRef`](/docs/kcl/types/EnvironmentRef)| | No | -| `cond` |[`Expr`](/docs/kcl/types/Expr)| | No | -| `then_val` |[`Program`](/docs/kcl/types/Program)| | No | -| `else_ifs` |`[` [`ElseIf`](/docs/kcl/types/ElseIf) `]`| | No | -| `final_else` |[`Program`](/docs/kcl/types/Program)| | No | -| `digest` |`[, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`]`| | No | - - ----- - - - - diff --git a/docs/kcl/types/BodyItem.md b/docs/kcl/types/BodyItem.md deleted file mode 100644 index 5fab05509..000000000 --- a/docs/kcl/types/BodyItem.md +++ /dev/null @@ -1,75 +0,0 @@ ---- -title: "BodyItem" -excerpt: "" -layout: manual ---- - - - - - - -**This schema accepts exactly one of the following:** - - -**Type:** `object` - - - - - -## Properties - -| Property | Type | Description | Required | -|----------|------|-------------|----------| -| `type` |enum: `ExpressionStatement`| | No | -| `start` |[`EnvironmentRef`](/docs/kcl/types/EnvironmentRef)| | No | -| `end` |[`EnvironmentRef`](/docs/kcl/types/EnvironmentRef)| | No | -| `expression` |[`Expr`](/docs/kcl/types/Expr)| | No | -| `digest` |`[, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`]`| | No | - - ----- - -**Type:** `object` - - - - - -## Properties - -| Property | Type | Description | Required | -|----------|------|-------------|----------| -| `type` |enum: `VariableDeclaration`| | No | -| `start` |[`EnvironmentRef`](/docs/kcl/types/EnvironmentRef)| | No | -| `end` |[`EnvironmentRef`](/docs/kcl/types/EnvironmentRef)| | No | -| `declarations` |`[` [`VariableDeclarator`](/docs/kcl/types/VariableDeclarator) `]`| | No | -| `kind` |[`VariableKind`](/docs/kcl/types/VariableKind)| | No | -| `digest` |`[, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`]`| | No | - - ----- - -**Type:** `object` - - - - - -## Properties - -| Property | Type | Description | Required | -|----------|------|-------------|----------| -| `type` |enum: `ReturnStatement`| | No | -| `start` |[`EnvironmentRef`](/docs/kcl/types/EnvironmentRef)| | No | -| `end` |[`EnvironmentRef`](/docs/kcl/types/EnvironmentRef)| | No | -| `argument` |[`Expr`](/docs/kcl/types/Expr)| | No | -| `digest` |`[, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`]`| | No | - - ----- - - - - diff --git a/docs/kcl/types/CommentStyle.md b/docs/kcl/types/CommentStyle.md deleted file mode 100644 index 368811a88..000000000 --- a/docs/kcl/types/CommentStyle.md +++ /dev/null @@ -1,41 +0,0 @@ ---- -title: "CommentStyle" -excerpt: "" -layout: manual ---- - - - - - - -**This schema accepts exactly one of the following:** - -Like // foo - -**enum:** `line` - - - - - - - - ----- -Like /* foo */ - -**enum:** `block` - - - - - - - - ----- - - - - diff --git a/docs/kcl/types/ElseIf.md b/docs/kcl/types/ElseIf.md deleted file mode 100644 index 20f3f6bbe..000000000 --- a/docs/kcl/types/ElseIf.md +++ /dev/null @@ -1,24 +0,0 @@ ---- -title: "ElseIf" -excerpt: "" -layout: manual ---- - - -**Type:** `object` - - - - - -## Properties - -| Property | Type | Description | Required | -|----------|------|-------------|----------| -| `start` |[`EnvironmentRef`](/docs/kcl/types/EnvironmentRef)| | No | -| `end` |[`EnvironmentRef`](/docs/kcl/types/EnvironmentRef)| | No | -| `cond` |[`Expr`](/docs/kcl/types/Expr)| | No | -| `then_val` |[`Program`](/docs/kcl/types/Program)| | No | -| `digest` |`[, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`]`| | No | - - diff --git a/docs/kcl/types/Environment.md b/docs/kcl/types/Environment.md deleted file mode 100644 index d2ed592d9..000000000 --- a/docs/kcl/types/Environment.md +++ /dev/null @@ -1,21 +0,0 @@ ---- -title: "Environment" -excerpt: "" -layout: manual ---- - - -**Type:** `object` - - - - - -## Properties - -| Property | Type | Description | Required | -|----------|------|-------------|----------| -| `bindings` |`object`| | No | -| `parent` |[`EnvironmentRef`](/docs/kcl/types/EnvironmentRef)| | No | - - diff --git a/docs/kcl/types/EnvironmentRef.md b/docs/kcl/types/EnvironmentRef.md deleted file mode 100644 index 229306509..000000000 --- a/docs/kcl/types/EnvironmentRef.md +++ /dev/null @@ -1,16 +0,0 @@ ---- -title: "EnvironmentRef" -excerpt: "An index pointing to an environment." -layout: manual ---- - -An index pointing to an environment. - -**Type:** `integer` (`uint`) - - - - - - - diff --git a/docs/kcl/types/Expr.md b/docs/kcl/types/Expr.md deleted file mode 100644 index b3e70b63b..000000000 --- a/docs/kcl/types/Expr.md +++ /dev/null @@ -1,297 +0,0 @@ ---- -title: "Expr" -excerpt: "An expression can be evaluated to yield a single KCL value." -layout: manual ---- - -An expression can be evaluated to yield a single KCL value. - - - - - -**This schema accepts exactly one of the following:** - - -**Type:** `object` - - - - - -## Properties - -| Property | Type | Description | Required | -|----------|------|-------------|----------| -| `type` |enum: `Literal`| | No | -| `start` |[`EnvironmentRef`](/docs/kcl/types/EnvironmentRef)| | No | -| `end` |[`EnvironmentRef`](/docs/kcl/types/EnvironmentRef)| | No | -| `value` |[`LiteralValue`](/docs/kcl/types/LiteralValue)| An expression can be evaluated to yield a single KCL value. | No | -| `raw` |`string`| | No | -| `digest` |`[, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`]`| | No | - - ----- - -**Type:** `object` - - - - - -## Properties - -| Property | Type | Description | Required | -|----------|------|-------------|----------| -| `type` |enum: [`Identifier`](/docs/kcl/types/Identifier)| | No | -| `start` |[`EnvironmentRef`](/docs/kcl/types/EnvironmentRef)| | No | -| `end` |[`EnvironmentRef`](/docs/kcl/types/EnvironmentRef)| | No | -| `name` |`string`| | No | -| `digest` |`[, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`]`| | No | - - ----- - -**Type:** `object` - - - - - -## Properties - -| Property | Type | Description | Required | -|----------|------|-------------|----------| -| `type` |enum: [`TagDeclarator`](/docs/kcl/types#tag-declaration)| | No | -| `start` |[`EnvironmentRef`](/docs/kcl/types/EnvironmentRef)| | No | -| `end` |[`EnvironmentRef`](/docs/kcl/types/EnvironmentRef)| | No | -| `value` |`string`| | No | -| `digest` |`[, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`]`| | No | - - ----- - -**Type:** `object` - - - - - -## Properties - -| Property | Type | Description | Required | -|----------|------|-------------|----------| -| `type` |enum: `BinaryExpression`| | No | -| `start` |[`EnvironmentRef`](/docs/kcl/types/EnvironmentRef)| | No | -| `end` |[`EnvironmentRef`](/docs/kcl/types/EnvironmentRef)| | No | -| `operator` |[`BinaryOperator`](/docs/kcl/types/BinaryOperator)| An expression can be evaluated to yield a single KCL value. | No | -| `left` |[`BinaryPart`](/docs/kcl/types/BinaryPart)| An expression can be evaluated to yield a single KCL value. | No | -| `right` |[`BinaryPart`](/docs/kcl/types/BinaryPart)| An expression can be evaluated to yield a single KCL value. | No | -| `digest` |`[, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`]`| | No | - - ----- - -**Type:** `object` - - - - - -## Properties - -| Property | Type | Description | Required | -|----------|------|-------------|----------| -| `type` |enum: [`FunctionExpression`](/docs/kcl/types/FunctionExpression)| | No | -| `start` |[`EnvironmentRef`](/docs/kcl/types/EnvironmentRef)| | No | -| `end` |[`EnvironmentRef`](/docs/kcl/types/EnvironmentRef)| | No | -| `params` |`[` [`Parameter`](/docs/kcl/types/Parameter) `]`| | No | -| `body` |[`Program`](/docs/kcl/types/Program)| An expression can be evaluated to yield a single KCL value. | No | -| `digest` |`[, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`]`| | No | - - ----- - -**Type:** `object` - - - - - -## Properties - -| Property | Type | Description | Required | -|----------|------|-------------|----------| -| `type` |enum: `CallExpression`| | No | -| `start` |[`EnvironmentRef`](/docs/kcl/types/EnvironmentRef)| | No | -| `end` |[`EnvironmentRef`](/docs/kcl/types/EnvironmentRef)| | No | -| `callee` |[`Identifier`](/docs/kcl/types/Identifier)| An expression can be evaluated to yield a single KCL value. | No | -| `arguments` |`[` [`Expr`](/docs/kcl/types/Expr) `]`| | No | -| `optional` |`boolean`| | No | -| `digest` |`[, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`]`| | No | - - ----- - -**Type:** `object` - - - - - -## Properties - -| Property | Type | Description | Required | -|----------|------|-------------|----------| -| `type` |enum: `PipeExpression`| | No | -| `start` |[`EnvironmentRef`](/docs/kcl/types/EnvironmentRef)| | No | -| `end` |[`EnvironmentRef`](/docs/kcl/types/EnvironmentRef)| | No | -| `body` |`[` [`Expr`](/docs/kcl/types/Expr) `]`| | No | -| `nonCodeMeta` |[`NonCodeMeta`](/docs/kcl/types/NonCodeMeta)| An expression can be evaluated to yield a single KCL value. | No | -| `digest` |`[, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`]`| | No | - - ----- - -**Type:** `object` - - - - - -## Properties - -| Property | Type | Description | Required | -|----------|------|-------------|----------| -| `type` |enum: `PipeSubstitution`| | No | -| `start` |[`EnvironmentRef`](/docs/kcl/types/EnvironmentRef)| | No | -| `end` |[`EnvironmentRef`](/docs/kcl/types/EnvironmentRef)| | No | -| `digest` |`[, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`]`| | No | - - ----- - -**Type:** `object` - - - - - -## Properties - -| Property | Type | Description | Required | -|----------|------|-------------|----------| -| `type` |enum: `ArrayExpression`| | No | -| `start` |[`EnvironmentRef`](/docs/kcl/types/EnvironmentRef)| | No | -| `end` |[`EnvironmentRef`](/docs/kcl/types/EnvironmentRef)| | No | -| `elements` |`[` [`Expr`](/docs/kcl/types/Expr) `]`| | No | -| `nonCodeMeta` |[`NonCodeMeta`](/docs/kcl/types/NonCodeMeta)| An expression can be evaluated to yield a single KCL value. | No | -| `digest` |`[, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`]`| | No | - - ----- - -**Type:** `object` - - - - - -## Properties - -| Property | Type | Description | Required | -|----------|------|-------------|----------| -| `type` |enum: `ObjectExpression`| | No | -| `start` |[`EnvironmentRef`](/docs/kcl/types/EnvironmentRef)| | No | -| `end` |[`EnvironmentRef`](/docs/kcl/types/EnvironmentRef)| | No | -| `properties` |`[` [`ObjectProperty`](/docs/kcl/types/ObjectProperty) `]`| | No | -| `nonCodeMeta` |[`NonCodeMeta`](/docs/kcl/types/NonCodeMeta)| An expression can be evaluated to yield a single KCL value. | No | -| `digest` |`[, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`]`| | No | - - ----- - -**Type:** `object` - - - - - -## Properties - -| Property | Type | Description | Required | -|----------|------|-------------|----------| -| `type` |enum: `MemberExpression`| | No | -| `start` |[`EnvironmentRef`](/docs/kcl/types/EnvironmentRef)| | No | -| `end` |[`EnvironmentRef`](/docs/kcl/types/EnvironmentRef)| | No | -| `object` |[`MemberObject`](/docs/kcl/types/MemberObject)| An expression can be evaluated to yield a single KCL value. | No | -| `property` |[`LiteralIdentifier`](/docs/kcl/types/LiteralIdentifier)| An expression can be evaluated to yield a single KCL value. | No | -| `computed` |`boolean`| | No | -| `digest` |`[, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`]`| | No | - - ----- - -**Type:** `object` - - - - - -## Properties - -| Property | Type | Description | Required | -|----------|------|-------------|----------| -| `type` |enum: `UnaryExpression`| | No | -| `start` |[`EnvironmentRef`](/docs/kcl/types/EnvironmentRef)| | No | -| `end` |[`EnvironmentRef`](/docs/kcl/types/EnvironmentRef)| | No | -| `operator` |[`UnaryOperator`](/docs/kcl/types/UnaryOperator)| An expression can be evaluated to yield a single KCL value. | No | -| `argument` |[`BinaryPart`](/docs/kcl/types/BinaryPart)| An expression can be evaluated to yield a single KCL value. | No | -| `digest` |`[, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`]`| | No | - - ----- - -**Type:** `object` - - - - - -## Properties - -| Property | Type | Description | Required | -|----------|------|-------------|----------| -| `type` |enum: `IfExpression`| | No | -| `start` |[`EnvironmentRef`](/docs/kcl/types/EnvironmentRef)| | No | -| `end` |[`EnvironmentRef`](/docs/kcl/types/EnvironmentRef)| | No | -| `cond` |[`Expr`](/docs/kcl/types/Expr)| An expression can be evaluated to yield a single KCL value. | No | -| `then_val` |[`Program`](/docs/kcl/types/Program)| An expression can be evaluated to yield a single KCL value. | No | -| `else_ifs` |`[` [`ElseIf`](/docs/kcl/types/ElseIf) `]`| | No | -| `final_else` |[`Program`](/docs/kcl/types/Program)| An expression can be evaluated to yield a single KCL value. | No | -| `digest` |`[, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`]`| | No | - - ----- -KCL value for an optional parameter which was not given an argument. (remember, parameters are in the function declaration, arguments are in the function call/application). - -**Type:** `object` - - - - - -## Properties - -| Property | Type | Description | Required | -|----------|------|-------------|----------| -| `type` |enum: `None`| | No | -| `start` |[`EnvironmentRef`](/docs/kcl/types/EnvironmentRef)| | No | -| `end` |[`EnvironmentRef`](/docs/kcl/types/EnvironmentRef)| | No | - - ----- - - - - diff --git a/docs/kcl/types/FunctionExpression.md b/docs/kcl/types/FunctionExpression.md deleted file mode 100644 index 5ad84fc1d..000000000 --- a/docs/kcl/types/FunctionExpression.md +++ /dev/null @@ -1,24 +0,0 @@ ---- -title: "FunctionExpression" -excerpt: "" -layout: manual ---- - - -**Type:** `object` - - - - - -## Properties - -| Property | Type | Description | Required | -|----------|------|-------------|----------| -| `start` |[`EnvironmentRef`](/docs/kcl/types/EnvironmentRef)| | No | -| `end` |[`EnvironmentRef`](/docs/kcl/types/EnvironmentRef)| | No | -| `params` |`[` [`Parameter`](/docs/kcl/types/Parameter) `]`| | No | -| `body` |[`Program`](/docs/kcl/types/Program)| | No | -| `digest` |`[, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`]`| | No | - - diff --git a/docs/kcl/types/Identifier.md b/docs/kcl/types/Identifier.md deleted file mode 100644 index a07e5a9ae..000000000 --- a/docs/kcl/types/Identifier.md +++ /dev/null @@ -1,23 +0,0 @@ ---- -title: "Identifier" -excerpt: "" -layout: manual ---- - - -**Type:** `object` - - - - - -## Properties - -| Property | Type | Description | Required | -|----------|------|-------------|----------| -| `start` |[`EnvironmentRef`](/docs/kcl/types/EnvironmentRef)| | No | -| `end` |[`EnvironmentRef`](/docs/kcl/types/EnvironmentRef)| | No | -| `name` |`string`| | No | -| `digest` |`[, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`]`| | No | - - diff --git a/docs/kcl/types/KclValue.md b/docs/kcl/types/KclValue.md deleted file mode 100644 index 6c0bf166a..000000000 --- a/docs/kcl/types/KclValue.md +++ /dev/null @@ -1,195 +0,0 @@ ---- -title: "KclValue" -excerpt: "A memory item." -layout: manual ---- - -A memory item. - - - - - -**This schema accepts exactly one of the following:** - - -**Type:** `object` - - - - - -## Properties - -| Property | Type | Description | Required | -|----------|------|-------------|----------| -| `type` |enum: `UserVal`| | No | -| `value` |``| | No | -| `__meta` |`[` [`Metadata`](/docs/kcl/types/Metadata) `]`| | No | - - ----- - -**Type:** `object` - - - - - -## Properties - -| Property | Type | Description | Required | -|----------|------|-------------|----------| -| `type` |enum: [`TagIdentifier`](/docs/kcl/types#tag-identifier)| | No | -| `value` |`string`| | No | -| `info` |[`TagEngineInfo`](/docs/kcl/types/TagEngineInfo)| | No | -| `__meta` |`[` [`Metadata`](/docs/kcl/types/Metadata) `]`| | No | - - ----- - -**Type:** `object` - - - - - -## Properties - -| Property | Type | Description | Required | -|----------|------|-------------|----------| -| `type` |enum: [`TagDeclarator`](/docs/kcl/types#tag-declaration)| | No | -| `start` |[`EnvironmentRef`](/docs/kcl/types/EnvironmentRef)| | No | -| `end` |[`EnvironmentRef`](/docs/kcl/types/EnvironmentRef)| | No | -| `value` |`string`| | No | -| `digest` |`[, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`]`| | No | - - ----- -A plane. - -**Type:** `object` - - - - - -## Properties - -| Property | Type | Description | Required | -|----------|------|-------------|----------| -| `type` |enum: `Plane`| | No | -| `id` |`string`| The id of the plane. | No | -| `value` |[`PlaneType`](/docs/kcl/types/PlaneType)| A memory item. | No | -| `origin` |[`Point3d`](/docs/kcl/types/Point3d)| Origin of the plane. | No | -| `xAxis` |[`Point3d`](/docs/kcl/types/Point3d)| What should the plane’s X axis be? | No | -| `yAxis` |[`Point3d`](/docs/kcl/types/Point3d)| What should the plane’s Y axis be? | No | -| `zAxis` |[`Point3d`](/docs/kcl/types/Point3d)| The z-axis (normal). | No | -| `__meta` |`[` [`Metadata`](/docs/kcl/types/Metadata) `]`| | No | - - ----- -A face. - -**Type:** `object` - - - - - -## Properties - -| Property | Type | Description | Required | -|----------|------|-------------|----------| -| `type` |enum: `Face`| | No | -| `id` |`string`| The id of the face. | No | -| `value` |`string`| The tag of the face. | No | -| `xAxis` |[`Point3d`](/docs/kcl/types/Point3d)| What should the face’s X axis be? | No | -| `yAxis` |[`Point3d`](/docs/kcl/types/Point3d)| What should the face’s Y axis be? | No | -| `zAxis` |[`Point3d`](/docs/kcl/types/Point3d)| The z-axis (normal). | No | -| `solid` |[`Solid`](/docs/kcl/types/Solid)| The solid the face is on. | No | -| `__meta` |`[` [`Metadata`](/docs/kcl/types/Metadata) `]`| | No | - - ----- -An solid is a collection of extrude surfaces. - -**Type:** `object` - - - - - -## Properties - -| Property | Type | Description | Required | -|----------|------|-------------|----------| -| `type` |enum: [`Solid`](/docs/kcl/types/Solid)| | No | -| `id` |`string`| The id of the solid. | No | -| `value` |`[` [`ExtrudeSurface`](/docs/kcl/types/ExtrudeSurface) `]`| The extrude surfaces. | No | -| `sketch` |[`Sketch`](/docs/kcl/types/Sketch)| The sketch. | No | -| `height` |`number`| The height of the solid. | No | -| `startCapId` |`string`| The id of the extrusion start cap | No | -| `endCapId` |`string`| The id of the extrusion end cap | No | -| `edgeCuts` |`[` [`EdgeCut`](/docs/kcl/types/EdgeCut) `]`| Chamfers or fillets on this solid. | No | -| `__meta` |`[` [`Metadata`](/docs/kcl/types/Metadata) `]`| Metadata. | No | - - ----- - -**Type:** `object` - - - - - -## Properties - -| Property | Type | Description | Required | -|----------|------|-------------|----------| -| `type` |enum: `Solids`| | No | -| `value` |`[` [`Solid`](/docs/kcl/types/Solid) `]`| | No | - - ----- -Data for an imported geometry. - -**Type:** `object` - - - - - -## Properties - -| Property | Type | Description | Required | -|----------|------|-------------|----------| -| `type` |enum: [`ImportedGeometry`](/docs/kcl/types/ImportedGeometry)| | No | -| `id` |`string`| The ID of the imported geometry. | No | -| `value` |`[` `string` `]`| The original file paths. | No | -| `__meta` |`[` [`Metadata`](/docs/kcl/types/Metadata) `]`| | No | - - ----- - -**Type:** `object` - - - - - -## Properties - -| Property | Type | Description | Required | -|----------|------|-------------|----------| -| `type` |enum: `Function`| | No | -| `expression` |[`FunctionExpression`](/docs/kcl/types/FunctionExpression)| A memory item. | No | -| `memory` |[`ProgramMemory`](/docs/kcl/types/ProgramMemory)| A memory item. | No | -| `__meta` |`[` [`Metadata`](/docs/kcl/types/Metadata) `]`| | No | - - ----- - - - - diff --git a/docs/kcl/types/LiteralIdentifier.md b/docs/kcl/types/LiteralIdentifier.md deleted file mode 100644 index 654d7e501..000000000 --- a/docs/kcl/types/LiteralIdentifier.md +++ /dev/null @@ -1,56 +0,0 @@ ---- -title: "LiteralIdentifier" -excerpt: "" -layout: manual ---- - - - - - - -**This schema accepts exactly one of the following:** - - -**Type:** `object` - - - - - -## Properties - -| Property | Type | Description | Required | -|----------|------|-------------|----------| -| `type` |enum: [`Identifier`](/docs/kcl/types/Identifier)| | No | -| `start` |[`EnvironmentRef`](/docs/kcl/types/EnvironmentRef)| | No | -| `end` |[`EnvironmentRef`](/docs/kcl/types/EnvironmentRef)| | No | -| `name` |`string`| | No | -| `digest` |`[, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`]`| | No | - - ----- - -**Type:** `object` - - - - - -## Properties - -| Property | Type | Description | Required | -|----------|------|-------------|----------| -| `type` |enum: `Literal`| | No | -| `start` |[`EnvironmentRef`](/docs/kcl/types/EnvironmentRef)| | No | -| `end` |[`EnvironmentRef`](/docs/kcl/types/EnvironmentRef)| | No | -| `value` |[`LiteralValue`](/docs/kcl/types/LiteralValue)| | No | -| `raw` |`string`| | No | -| `digest` |`[, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`]`| | No | - - ----- - - - - diff --git a/docs/kcl/types/LiteralValue.md b/docs/kcl/types/LiteralValue.md deleted file mode 100644 index 1535d501c..000000000 --- a/docs/kcl/types/LiteralValue.md +++ /dev/null @@ -1,57 +0,0 @@ ---- -title: "LiteralValue" -excerpt: "" -layout: manual ---- - - - - - -**This schema accepts any of the following:** - - -**Type:** `integer` (`int64`) - - - - - - - ----- - -**Type:** `number` (`double`) - - - - - - - ----- - -**Type:** `string` - - - - - - - ----- - -**Type:** `boolean` - - - - - - - ----- - - - - - diff --git a/docs/kcl/types/MemberObject.md b/docs/kcl/types/MemberObject.md deleted file mode 100644 index 568ab0bc2..000000000 --- a/docs/kcl/types/MemberObject.md +++ /dev/null @@ -1,57 +0,0 @@ ---- -title: "MemberObject" -excerpt: "" -layout: manual ---- - - - - - - -**This schema accepts exactly one of the following:** - - -**Type:** `object` - - - - - -## Properties - -| Property | Type | Description | Required | -|----------|------|-------------|----------| -| `type` |enum: `MemberExpression`| | No | -| `start` |[`EnvironmentRef`](/docs/kcl/types/EnvironmentRef)| | No | -| `end` |[`EnvironmentRef`](/docs/kcl/types/EnvironmentRef)| | No | -| `object` |[`MemberObject`](/docs/kcl/types/MemberObject)| | No | -| `property` |[`LiteralIdentifier`](/docs/kcl/types/LiteralIdentifier)| | No | -| `computed` |`boolean`| | No | -| `digest` |`[, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`]`| | No | - - ----- - -**Type:** `object` - - - - - -## Properties - -| Property | Type | Description | Required | -|----------|------|-------------|----------| -| `type` |enum: [`Identifier`](/docs/kcl/types/Identifier)| | No | -| `start` |[`EnvironmentRef`](/docs/kcl/types/EnvironmentRef)| | No | -| `end` |[`EnvironmentRef`](/docs/kcl/types/EnvironmentRef)| | No | -| `name` |`string`| | No | -| `digest` |`[, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`]`| | No | - - ----- - - - - diff --git a/docs/kcl/types/NonCodeMeta.md b/docs/kcl/types/NonCodeMeta.md deleted file mode 100644 index 14b14d4c8..000000000 --- a/docs/kcl/types/NonCodeMeta.md +++ /dev/null @@ -1,22 +0,0 @@ ---- -title: "NonCodeMeta" -excerpt: "" -layout: manual ---- - - -**Type:** `object` - - - - - -## Properties - -| Property | Type | Description | Required | -|----------|------|-------------|----------| -| `nonCodeNodes` |`object`| | No | -| `start` |`[` [`NonCodeNode`](/docs/kcl/types/NonCodeNode) `]`| | No | -| `digest` |`[, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`]`| | No | - - diff --git a/docs/kcl/types/NonCodeNode.md b/docs/kcl/types/NonCodeNode.md deleted file mode 100644 index 2209de97a..000000000 --- a/docs/kcl/types/NonCodeNode.md +++ /dev/null @@ -1,23 +0,0 @@ ---- -title: "NonCodeNode" -excerpt: "" -layout: manual ---- - - -**Type:** `object` - - - - - -## Properties - -| Property | Type | Description | Required | -|----------|------|-------------|----------| -| `start` |[`EnvironmentRef`](/docs/kcl/types/EnvironmentRef)| | No | -| `end` |[`EnvironmentRef`](/docs/kcl/types/EnvironmentRef)| | No | -| `value` |[`NonCodeValue`](/docs/kcl/types/NonCodeValue)| | No | -| `digest` |`[, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`]`| | No | - - diff --git a/docs/kcl/types/NonCodeValue.md b/docs/kcl/types/NonCodeValue.md deleted file mode 100644 index 87a7c5611..000000000 --- a/docs/kcl/types/NonCodeValue.md +++ /dev/null @@ -1,103 +0,0 @@ ---- -title: "NonCodeValue" -excerpt: "" -layout: manual ---- - - - - - - -**This schema accepts exactly one of the following:** - -A shebang. This is a special type of comment that is at the top of the file. It looks like this: ```python,no_run #!/usr/bin/env python ``` - -**Type:** `object` - - - - - -## Properties - -| Property | Type | Description | Required | -|----------|------|-------------|----------| -| `type` |enum: `shebang`| | No | -| `value` |`string`| | No | - - ----- -An inline comment. Here are examples: `1 + 1 // This is an inline comment`. `1 + 1 /* Here's another */`. - -**Type:** `object` - - - - - -## Properties - -| Property | Type | Description | Required | -|----------|------|-------------|----------| -| `type` |enum: `inlineComment`| | No | -| `value` |`string`| | No | -| `style` |[`CommentStyle`](/docs/kcl/types/CommentStyle)| | No | - - ----- -A block comment. An example of this is the following: ```python,no_run /* This is a block comment */ 1 + 1 ``` Now this is important. The block comment is attached to the next line. This is always the case. Also the block comment doesn't have a new line above it. If it did it would be a `NewLineBlockComment`. - -**Type:** `object` - - - - - -## Properties - -| Property | Type | Description | Required | -|----------|------|-------------|----------| -| `type` |enum: `blockComment`| | No | -| `value` |`string`| | No | -| `style` |[`CommentStyle`](/docs/kcl/types/CommentStyle)| | No | - - ----- -A block comment that has a new line above it. The user explicitly added a new line above the block comment. - -**Type:** `object` - - - - - -## Properties - -| Property | Type | Description | Required | -|----------|------|-------------|----------| -| `type` |enum: `newLineBlockComment`| | No | -| `value` |`string`| | No | -| `style` |[`CommentStyle`](/docs/kcl/types/CommentStyle)| | No | - - ----- - -**Type:** `object` - - - - - -## Properties - -| Property | Type | Description | Required | -|----------|------|-------------|----------| -| `type` |enum: `newLine`| | No | - - ----- - - - - diff --git a/docs/kcl/types/ObjectProperty.md b/docs/kcl/types/ObjectProperty.md deleted file mode 100644 index 57b1ea331..000000000 --- a/docs/kcl/types/ObjectProperty.md +++ /dev/null @@ -1,24 +0,0 @@ ---- -title: "ObjectProperty" -excerpt: "" -layout: manual ---- - - -**Type:** `object` - - - - - -## Properties - -| Property | Type | Description | Required | -|----------|------|-------------|----------| -| `start` |[`EnvironmentRef`](/docs/kcl/types/EnvironmentRef)| | No | -| `end` |[`EnvironmentRef`](/docs/kcl/types/EnvironmentRef)| | No | -| `key` |[`Identifier`](/docs/kcl/types/Identifier)| | No | -| `value` |[`Expr`](/docs/kcl/types/Expr)| | No | -| `digest` |`[, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`]`| | No | - - diff --git a/docs/kcl/types/Parameter.md b/docs/kcl/types/Parameter.md deleted file mode 100644 index 770060138..000000000 --- a/docs/kcl/types/Parameter.md +++ /dev/null @@ -1,23 +0,0 @@ ---- -title: "Parameter" -excerpt: "Parameter of a KCL function." -layout: manual ---- - -Parameter of a KCL function. - -**Type:** `object` - - - - - -## Properties - -| Property | Type | Description | Required | -|----------|------|-------------|----------| -| `identifier` |[`Identifier`](/docs/kcl/types/Identifier)| The parameter's label or name. | No | -| `optional` |`boolean`| Is the parameter optional? | No | -| `digest` |`[, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`]`| | No | - - diff --git a/docs/kcl/types/Program.md b/docs/kcl/types/Program.md deleted file mode 100644 index b33b63e9b..000000000 --- a/docs/kcl/types/Program.md +++ /dev/null @@ -1,25 +0,0 @@ ---- -title: "Program" -excerpt: "A KCL program top level, or function body." -layout: manual ---- - -A KCL program top level, or function body. - -**Type:** `object` - - - - - -## Properties - -| Property | Type | Description | Required | -|----------|------|-------------|----------| -| `start` |[`EnvironmentRef`](/docs/kcl/types/EnvironmentRef)| | No | -| `end` |[`EnvironmentRef`](/docs/kcl/types/EnvironmentRef)| | No | -| `body` |`[` [`BodyItem`](/docs/kcl/types/BodyItem) `]`| | No | -| `nonCodeMeta` |[`NonCodeMeta`](/docs/kcl/types/NonCodeMeta)| A KCL program top level, or function body. | No | -| `digest` |`[, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`]`| | No | - - diff --git a/docs/kcl/types/ProgramMemory.md b/docs/kcl/types/ProgramMemory.md deleted file mode 100644 index b6bd5c095..000000000 --- a/docs/kcl/types/ProgramMemory.md +++ /dev/null @@ -1,22 +0,0 @@ ---- -title: "ProgramMemory" -excerpt: "" -layout: manual ---- - - -**Type:** `object` - - - - - -## Properties - -| Property | Type | Description | Required | -|----------|------|-------------|----------| -| `environments` |`[` [`Environment`](/docs/kcl/types/Environment) `]`| | No | -| `currentEnv` |[`EnvironmentRef`](/docs/kcl/types/EnvironmentRef)| | No | -| `return` |[`KclValue`](/docs/kcl/types/KclValue)| | No | - - diff --git a/docs/kcl/types/UnaryOperator.md b/docs/kcl/types/UnaryOperator.md deleted file mode 100644 index 6a2e8fbd4..000000000 --- a/docs/kcl/types/UnaryOperator.md +++ /dev/null @@ -1,41 +0,0 @@ ---- -title: "UnaryOperator" -excerpt: "" -layout: manual ---- - - - - - - -**This schema accepts exactly one of the following:** - -Negate a number. - -**enum:** `-` - - - - - - - - ----- -Negate a boolean. - -**enum:** `!` - - - - - - - - ----- - - - - diff --git a/docs/kcl/types/VariableDeclarator.md b/docs/kcl/types/VariableDeclarator.md deleted file mode 100644 index 5af68d91a..000000000 --- a/docs/kcl/types/VariableDeclarator.md +++ /dev/null @@ -1,24 +0,0 @@ ---- -title: "VariableDeclarator" -excerpt: "" -layout: manual ---- - - -**Type:** `object` - - - - - -## Properties - -| Property | Type | Description | Required | -|----------|------|-------------|----------| -| `start` |[`EnvironmentRef`](/docs/kcl/types/EnvironmentRef)| | No | -| `end` |[`EnvironmentRef`](/docs/kcl/types/EnvironmentRef)| | No | -| `id` |[`Identifier`](/docs/kcl/types/Identifier)| The identifier of the variable. | No | -| `init` |[`Expr`](/docs/kcl/types/Expr)| The value of the variable. | No | -| `digest` |`[, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`, `integer`]`| | No | - - diff --git a/docs/kcl/types/VariableKind.md b/docs/kcl/types/VariableKind.md deleted file mode 100644 index 5ae17e3b2..000000000 --- a/docs/kcl/types/VariableKind.md +++ /dev/null @@ -1,65 +0,0 @@ ---- -title: "VariableKind" -excerpt: "" -layout: manual ---- - - - - - - -**This schema accepts exactly one of the following:** - -Declare a variable. - -**enum:** `let` - - - - - - - - ----- -Declare a variable that is read-only. - -**enum:** `const` - - - - - - - - ----- -Declare a function. - -**enum:** `fn` - - - - - - - - ----- -Declare a variable. - -**enum:** `var` - - - - - - - - ----- - - - - diff --git a/src/wasm-lib/kcl/src/std/args.rs b/src/wasm-lib/kcl/src/std/args.rs index bed601892..a93010ba9 100644 --- a/src/wasm-lib/kcl/src/std/args.rs +++ b/src/wasm-lib/kcl/src/std/args.rs @@ -4,14 +4,13 @@ use anyhow::Result; use kcmc::{websocket::OkWebSocketResponseData, ModelingCmd}; use kittycad_modeling_cmds as kcmc; use serde::de::DeserializeOwned; -use serde_json::Value as JValue; use crate::{ ast::types::{parse_json_number_as_f64, TagDeclarator}, errors::{KclError, KclErrorDetails}, executor::{ ExecState, ExecutorContext, ExtrudeSurface, KclValue, Metadata, Sketch, SketchSet, SketchSurface, Solid, - SolidSet, SourceRange, TagIdentifier, UserVal, + SolidSet, SourceRange, TagIdentifier, }, std::{shapes::SketchOrSurface, sketch::FaceTag, FnAsArg}, }; @@ -498,6 +497,18 @@ where } } +impl<'a> FromArgs<'a> for KclValue { + fn from_args(args: &'a Args, i: usize) -> Result { + let Some(v) = args.args.get(i) else { + return Err(KclError::Semantic(KclErrorDetails { + message: format!("Argument at index {i} was missing",), + source_ranges: vec![args.source_range], + })); + }; + Ok(v.to_owned()) + } +} + impl<'a, T> FromArgs<'a> for Option where T: FromKclValue<'a> + Sized, @@ -576,20 +587,6 @@ impl<'a> FromKclValue<'a> for i64 { } } -impl<'a> FromKclValue<'a> for UserVal { - fn from_mem_item(arg: &'a KclValue) -> Option { - arg.as_user_val().map(|x| x.to_owned()) - } -} - -impl<'a> FromKclValue<'a> for Vec { - fn from_mem_item(arg: &'a KclValue) -> Option { - arg.as_user_val() - .and_then(|uv| uv.value.as_array()) - .map(ToOwned::to_owned) - } -} - impl<'a> FromKclValue<'a> for TagDeclarator { fn from_mem_item(arg: &'a KclValue) -> Option { arg.get_tag_declarator().ok() @@ -602,12 +599,6 @@ impl<'a> FromKclValue<'a> for TagIdentifier { } } -impl<'a> FromKclValue<'a> for KclValue { - fn from_mem_item(arg: &'a KclValue) -> Option { - Some(arg.clone()) - } -} - macro_rules! impl_from_arg_via_json { ($typ:path) => { impl<'a> FromKclValue<'a> for $typ { @@ -618,15 +609,6 @@ macro_rules! impl_from_arg_via_json { }; } -impl<'a, T> FromKclValue<'a> for Vec -where - T: serde::de::DeserializeOwned + FromKclValue<'a>, -{ - fn from_mem_item(arg: &'a KclValue) -> Option { - from_user_val(arg) - } -} - macro_rules! impl_from_arg_for_array { ($n:literal) => { impl<'a, T> FromKclValue<'a> for [T; $n] @@ -740,3 +722,23 @@ impl<'a> FromKclValue<'a> for SketchSurface { } } } + +impl<'a> FromKclValue<'a> for Vec { + fn from_mem_item(arg: &'a KclValue) -> Option { + let KclValue::UserVal(uv) = arg else { + return None; + }; + + uv.get::>().map(|x| x.0) + } +} + +impl<'a> FromKclValue<'a> for Vec { + fn from_mem_item(arg: &'a KclValue) -> Option { + let KclValue::UserVal(uv) = arg else { + return None; + }; + + uv.get::>().map(|x| x.0) + } +} diff --git a/src/wasm-lib/kcl/src/std/array.rs b/src/wasm-lib/kcl/src/std/array.rs index 22c287f50..81b3216df 100644 --- a/src/wasm-lib/kcl/src/std/array.rs +++ b/src/wasm-lib/kcl/src/std/array.rs @@ -1,5 +1,4 @@ use derive_docs::stdlib; -use serde_json::Value as JValue; use super::{args::FromArgs, Args, FnAsArg}; use crate::{ @@ -8,94 +7,6 @@ use crate::{ function_param::FunctionParam, }; -/// Apply a function to each element of an array. -pub async fn map(exec_state: &mut ExecState, args: Args) -> Result { - let (array, f): (Vec, FnAsArg<'_>) = FromArgs::from_args(&args, 0)?; - let array: Vec = array - .into_iter() - .map(|jval| { - KclValue::UserVal(UserVal { - value: jval, - meta: vec![args.source_range.into()], - }) - }) - .collect(); - let map_fn = FunctionParam { - inner: f.func, - fn_expr: f.expr, - meta: vec![args.source_range.into()], - ctx: args.ctx.clone(), - memory: *f.memory, - }; - let new_array = inner_map(array, map_fn, exec_state, &args).await?; - let uv = UserVal::new(vec![args.source_range.into()], new_array); - Ok(KclValue::UserVal(uv)) -} - -/// Apply a function to every element of a list. -/// -/// Given a list like `[a, b, c]`, and a function like `f`, returns -/// `[f(a), f(b), f(c)]` -/// ```no_run -/// const r = 10 // radius -/// fn drawCircle = (id) => { -/// return startSketchOn("XY") -/// |> circle({ center: [id * 2 * r, 0], radius: r}, %) -/// } -/// -/// // Call `drawCircle`, passing in each element of the array. -/// // The outputs from each `drawCircle` form a new array, -/// // which is the return value from `map`. -/// const circles = map( -/// [1..3], -/// drawCircle -/// ) -/// ``` -/// ```no_run -/// const r = 10 // radius -/// // Call `map`, using an anonymous function instead of a named one. -/// const circles = map( -/// [1..3], -/// (id) => { -/// return startSketchOn("XY") -/// |> circle({ center: [id * 2 * r, 0], radius: r}, %) -/// } -/// ) -/// ``` -#[stdlib { - name = "map", -}] -async fn inner_map<'a>( - array: Vec, - map_fn: FunctionParam<'a>, - exec_state: &mut ExecState, - args: &'a Args, -) -> Result, KclError> { - let mut new_array = Vec::with_capacity(array.len()); - for elem in array { - let new_elem = call_map_closure(elem, &map_fn, args.source_range, exec_state).await?; - new_array.push(new_elem); - } - Ok(new_array) -} - -async fn call_map_closure<'a>( - input: KclValue, - map_fn: &FunctionParam<'a>, - source_range: SourceRange, - exec_state: &mut ExecState, -) -> Result { - let output = map_fn.call(exec_state, vec![input]).await?; - let source_ranges = vec![source_range]; - let output = output.ok_or_else(|| { - KclError::Semantic(KclErrorDetails { - message: "Map function must return a value".to_string(), - source_ranges, - }) - })?; - Ok(output) -} - /// For each item in an array, update a value. pub async fn reduce(exec_state: &mut ExecState, args: Args) -> Result { let (array, start, f): (Vec, Sketch, FnAsArg<'_>) = FromArgs::from_args(&args, 0)?; diff --git a/src/wasm-lib/kcl/src/std/mod.rs b/src/wasm-lib/kcl/src/std/mod.rs index a8681457f..13929d987 100644 --- a/src/wasm-lib/kcl/src/std/mod.rs +++ b/src/wasm-lib/kcl/src/std/mod.rs @@ -98,7 +98,6 @@ lazy_static! { Box::new(crate::std::patterns::PatternCircular3D), Box::new(crate::std::patterns::PatternTransform), Box::new(crate::std::array::Reduce), - Box::new(crate::std::array::Map), Box::new(crate::std::chamfer::Chamfer), Box::new(crate::std::fillet::Fillet), Box::new(crate::std::fillet::GetOppositeEdge), diff --git a/src/wasm-lib/kcl/tests/outputs/serial_test_example_map0.png b/src/wasm-lib/kcl/tests/outputs/serial_test_example_map0.png deleted file mode 100644 index dbe80dfce..000000000 Binary files a/src/wasm-lib/kcl/tests/outputs/serial_test_example_map0.png and /dev/null differ diff --git a/src/wasm-lib/kcl/tests/outputs/serial_test_example_map1.png b/src/wasm-lib/kcl/tests/outputs/serial_test_example_map1.png deleted file mode 100644 index dbe80dfce..000000000 Binary files a/src/wasm-lib/kcl/tests/outputs/serial_test_example_map1.png and /dev/null differ